Hi,
I'm trying to implement a plug-in with surround support and am struggling to get the channels lined up between the host and my plug-in. I'm using AU Lab, which has the channels ordered like this:
LS L C R RS LFE
Our plug-in wants to handle the channels like this:
L R C LFE LS RS
I've tried overriding AUBase's version of these functions:
virtual UInt32 GetChannelLayoutTags(); virtual UInt32 GetAudioChannelLayout(); virtual OSStatus SetAudioChannelLayout();
My versions tell the caller that I only have one possible channel layout for each number of channels, so if the AU is running as (6, 6), the AU informs the caller that the only available layout is kAudioChannelLayoutTag_MPEG_5_1_A // L R C LFE Ls Rs
Even so, AU Lab still feeds me the channels in its channel order (LS L C R RS LFE).
What am I missing? Do I need to query the host for its channel layout and adapt our implementation to match the host? If so, what's the purpose of the AUBase overrides? What good does it do me to advertise my supported channel layouts if the host is going to ignore them anyway?
Thanks, David
|