[MPlayer-dev-eng] [RFC] 6-channel AAC and channel reordering

Corey Hickey bugfood-ml at fatooh.org
Tue Oct 31 01:06:07 CET 2006


Dominik 'Rathann' Mierzejewski wrote:
> Reviving an old, forgotten patch...

Yeah, I have a bad habit of leaving old patches alone...

> I've tested it on my 4.0 setup and I didn't hear the front center and lfe
> channels until I downmixed it to 4ch:
> mplayer -af pan=4:1:0:0:0:0:1:0:0:0:0:1:0:0:0:0:1:0.25:0.25:0:0:0.25:0.25:0:0 \
> return,_the_h720p.mov

That makes sense, since mplayer is outputting 6 channels, and on your 
system the last two aren't hooked up to anything. One thing, though: do 
you have channels=6 in your config file, or did you specify -channels 6 
on your command line? If not, then I'm confused, since as far as I know 
mplayer tells libfaad to downmix to 2 channels be default.

I have one or two ideas of ways to implement reasonably user-friendly 
upmixing and downmixing configurations (that can be specified in the 
config file). When I wrote the original patch, I was thinking it would 
be nice to use pan (instead of channels) to do the remapping and 
remixing at the same time, but now I think it would be better to remix 
as a second step in order to conserve programming sanity.

Like this:
decoder  [1]--->   channel-remap   [2]--->   remixing   [3]--->   output
where:
[1] is arbitrary channel order
[2] is consistent channel order
[3] is remixed the way the user wants

> With that, it seems to be working fine (certainly the trailer sounds better
> than without it). Attached a version updated to current SVN, although the
> old patch still applies.
> 
> OK to apply?

For some reason I have a nagging feeling that somebody else proposed a 
different approach and that it might have been committed, but I can't 
dig up the patch. Maybe I'm imagining things.

In any case, the patch I posted was mostly a proof-of-concept, but I 
guess it works. Looking back, I see two things I might do differently.

(a) The chan_map array could just be a string, with creation of *int 
pointers for af->control happening right before they're needed. This 
would obviate the need for a separate af_set_channel_map() funcion.

(b) If (a) is done, then it would be easy to make sure the length of the 
array is as expected and prevent reading beyond the end.

I'll go ahead and make those changes and see if it works.

-Corey



More information about the MPlayer-dev-eng mailing list