[vorbis-dev] cascading Ogg Vorbis encoded audio

Kenneth C. Arnold kcarnold at arnoldnet.net
Thu Sep 19 19:56:45 PDT 2002

Rob Burke wrote:

>Sorry, I should have been clearer here.
>By 'cascading' I am referring to performing multiple encoding
>generations from the original input source.  In other words, taking
>your original CD-quality audio and putting it through 20 stages of

>Quick question, what do you mean by 'progressive encoding'?  Is that
>variable bit rate?  Sorry, I'm not familiar with Ogg Vorbis; I just
>found the site yesterday and I haven't looked through it thoroughly yet
>so forgive if I'm ignorant with some of the lingo.

I think he means the ordering of data in Vorbis packets; coarse 
frequency-domain data is placed first, and it gets finer the more data 
is added. This is just in one packet though -- you can't at the moment 
have a complete song ordered like that. If you feel like doing some 
computer science, that's something you might want to look into.

>By cascading, I meant the following:
>16 bit/44.1/PCM -> Vorbis 160 kbps -> Vorbis 128 kbps -> (insert codec
>of choice) and so on, perhaps up to 20 different encode stages.  For
>right now, I am considering only the Vorbis spec but of course the end
>goal is to figure out techniques to reduce audible artifacts in audio
>files which have been put through several audio encoding steps,
>especially when different codecs are used.  For now, I just want to
>look at Ogg since it seems an ideal candidate for an audio encoder. 
>But the end goal remains to try and figure out a universal way to make
>audio codecs less prone to aural artifacts due to multiple encoding
>generations without adding any overhead.

Because of the progressive encoding, you shouldn't need to re-encode 
Vorbis->Vorbis -- a smart tool can find the appropriate amount of 
"extra" data at the end of a packet encoded at 160k and trim it down so 
that the bitrate will be 128k, without re-encoding. Segher has a 
prototype of such a tool ("peeler")

>Actually, I am pleased that multiple encoding generations is not part
>of the Vorbis spec.  First, I wouldn't expect it too, and secondly,
>that is what I would like to look into.  There is a definable meta-data
>field in the spec is there not?  Perhaps some information could be
>placed in this field which could help future encoding stages keep as
>much of the original content as possible.  Possibly putting some
>parameters of the psychoacoustic model used in the lossy compression
>scheme or something like that.

Documenting and evaluating the psychoacoustic model, perhaps also 
applying it to some other task, is another thing you might look at for 

>Anyway, well, I hope to hear any ideas from you all - I will be
>actually looking at source code and so forth soon.

Vorbis source code is pretty complicated, since there's a lot involved. 
Several layers of abstraction and coding often make following the code 
flow difficult if you don't already know what it's doing. The specs give 
a pretty detailed description of what those layers are, though.

For a research project, I'd suggest trying to make Vorbis less 
susceptable to bad artifacts from other encoders. If you could find a 
way to modify the psychoacoustic model  (for example) to detect MP3 
artifacts and not waste bits on coding them, that could benefit anyone 
who really needs to transcode between the two formats -- there's an 
inherent data loss from doing that, which is why it is strongly 
discouraged, but there's definately room to improve the quality of the 
result. If successful, you should be able to transcode from, say, 128k 
MP3 to 64k Vorbis without the result sounding too much worse.

Of course if you really wanted to go all-out, invent the Next Big Audio 
Codec. You said something about Music Engineering Technology -- how 
about perfecting fractal audio compression, or compression by common 
feature/instrument extraction, or something like that? I think there are 
still a lot of interesting stones yet unturned.

Whatever you do, good luck, but leave something for me to do when I get 
to grad school! :)


<p>--- >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