[vorbis] xml stream formats

Ralph Giles giles at snow.ashlu.bc.ca
Tue Jul 11 11:26:42 PDT 2000



On Tue, 11 Jul 2000, Thomas Marshall Eubanks wrote:

> One problem with sending interleaved text for a browser, etc., is that it does not
> respond well to packet loss. (Think of dear old html - if you hack out some of a
> page, it will NOT display well.) This is different from audio, where drop-outs
> can be corrected or protected or, if all else fails, lead to a drop out of the audio,
> without everything else falling apart.

This is a very good point, and a big weekness of my continuous-xml
proposal over the text-chunk one. Unfortunately, while xml does error
detection fairly well, no one seems to have thought about error recovery.

Again, we can get around this by making the encoder know lots about the
DTD, and making the DTD "chunkable" in some sense. Another idea is to
embed "context" information in comments every so often which the
client parser could use to recover missing start tags. Something like:

<chapter>
 .
 .
 .
<scene>
<title>Scene 24</title>
<line timecode="19654" duration="200">
 <actor>Jones:</actor> Welcome home, everybody!
</line>
 .
 .
 .
<sfx timecode "27598" duration="75">Crash! Bang!</sfx>
<line timecode="27718" duration="120">
 <actor>Margaret:</actor> <voice>whispering</voice> Let's get out of here!
</line>
<?context chapter="1" scene="27" ?>
<line ...

A parser could adjust it's tree based on the <?context ?> tags, realizing
it missed scenes 25-26, for example. If encounters an actual error
(unbalanced tags) it could just seek the next context statement and
restart.

I agree this is pretty complicated. :(

> I would suggest that any text interleaved with a stream be subject to a FEC with a
> redundancy of two or so. There has to be a text sequence counter, and chunks
> of text should only be output if the block can be completely recovered.
> This would leave the "blocking problem" (i.e., what constitutes a usable
> piece of code, text, etc.) to the user/programmer at a higher level.

Ogg already takes care of ordering and checksumming of the pages, so we'll
know if we've lost something. I think error correction is overkill; being
able to just drop the missing bits and continue is reasonable enough.

How often do we expect to have dropouts? As I understand it, all mp3
streaming happens over TCP where this isn't a problem, but that things
like mbone video netcasts usually use UDP. Maybe Jack could comment here?

 -ralph

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis mailing list