[vorbis-dev] Adaptive bitrate streaming

Robert Jessop robertjessop at f2s.com
Wed Oct 22 13:52:30 PDT 2003



I've been reading the vorbis docs and source code hoping to be able to 
contribute. I've found in mapping0.c that in bitrate managed mode each 
packet is  encoded at a range of qualities and then one is chosen and 
written to the file. This explains VBR being so much faster than ABR.

Now what if, instead of choosing a packet, you just write them all to a 
multiplexed ogg stream? Then your streaming server makes the decision of 
which packet to send individually for each client.

It would allow full utilization of modem bitrates without the stream 
cutting out when visiting a big web page. It would be a bit like Real 
SureStream - but hopefully allow more densely packed bitrates and 
smoother bitrate change.

Obviously there's a limit to the range you can get from one encoding 
mode, but a range of 18-42kbps would be good for modem users. You could 
also have multiple modes with slightly overlapping bandwidth ranges and 
send the headers when it needs to switch mode.

A streaming server (e.g. Icecast) will need to know how to demux the 
stream as well.

I think it would be pretty simple to add to the vorbis code, but I'm 
having trouble finding the right place to start hacking (the comments to 
code ratio ain't fantastic). I need to know:

1) Where do I need to change it to write out all possibilities instead 
of choosing one>
2) What is the correct way to add a switch to the API front end to turn 
it on or off?
3) Anyone want to help?
4) Am I crazy?

Robert Jessop

P.S. Before you say bitrate peeling: A) It probably won't sound as good. 
B) It will probably be much more work to implement well.

--- >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-dev-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-dev mailing list