[FFmpeg-devel] Decoder-independent multichannel downmixing

Benjamin Larsson banan
Mon May 5 12:38:15 CEST 2008

James Lee wrote:
> 2008/5/4 Justin Ruggles <justinruggles at bellsouth.net>:
>>  Channel ordering is one big issue.  Currently, all decoders send output
>>  in native channel order for that codec.  I agree that requiring decoders
>>  to output in WAVE/SMTPE channel order would be best, but it can be
>>  tricky.  Especially with raw audio, the channel order can depend on the
>>  container, so the PCM decoder will not know if or how to rearrange the
>>  channels without access to that information.
>>  I have tried in the past, but it didn't get anywhere.  I believe
>>  Benjamin has also attempted this, and he may have a good solution.
>>  See:
>>  http://wiki.multimedia.cx/index.php?title=FFmpeg_audio_API
> Has any work taken place regarding the suggestions in that wiki
> article?  It only seems to deal with channel downmixing, not with a
> general solution for channel ordering (other than stating that the
> user should reorder the channels before passing them into the mix
> structure).  Also, it doesn't seem to allow for multiple downmixing
> matrices for the same input channels / output channels combination -
> you could imagine it might be nice to be able to have eg. a Dolby Pro
> Logic, Dolby Pro Logic II, and other downmix matrices for 5.1 -->
> stereo and have the user pass in an additional flag indicating their
> preference.
> And Justin, it looks like you had outlined a proposal for channel
> ordering in some detail last year - any reason you didn't go ahead
> with this (i.e. just lack of time, or a fundamental issue with it?).
> Benjamin: are you working on these?  Is there any discussion going on
> regarding this.

The solutions I came up with got to complex so I got bored and havn't 
done anything more. The problem is combining channel order and 
downmixing without making it a total mess. And regarding multiple 
matrices per downmix configuration, out_dwChannelMask should specify the 
positions of the speakers and depending on the positions a suitable 
mixing table should be returned during the init. I didn't think of using 
other matrices for the same speaker configuration. I guess we could add 
a name to av_codec_mix_struct so we could look up the table by name.

But please do continue working on this, it is needed.

Benjamin Larsson

More information about the ffmpeg-devel mailing list