Re: Channels and frames
Re: Channels and frames
- Subject: Re: Channels and frames
- From: William Stewart <email@hidden>
- Date: Fri, 4 Nov 2005 19:32:22 -0800
In thinking of how best to summarise this discussion (and answer some
of the misconceptions, confusions, etc that were raised), I generally
think this is best explained in the docs we already have prepared for
this:
/Developer/Examples/CoreAudio/Documentation/AudioUnits/
IOChannelConfigurations.rtf
Please read this document with some attention, as I doubt I can put
this in better detail than has been explained there.
Just to try to clarify (I hope!) a couple of points:
Think of the stereo mixer we ship. It has multiple inputs and a
single output. Its output is always stereo. Its inputs can be mono or
stereo. We express this AU's channel handling capabilities through
the following:
{ {1, 2} {2, 2} }
These pair of entries describe the relationship that can exist for
*any* input of this mixer, to *any* (in this case one) of its output
(s). There is no expression of any constraints here - there is no
limitation that some buses would only be mono, or others stereo,
etc... but rather any (and every) input bus can be either mono or
stereo.
The mono to stereo case was included in Michael's post about this
question originally - he stated in that post that he wanted to allow
the following configs (and that any other configs would be "strange"
- his quotes, not mine):
(A) In0:1 In1:1 Out0:1
(B) In0:1 In1:1 Out0:2
(C) In0:2 In1:2 Out0:2
This would be expressed as:
{ {1, 1} {1, 2} {2, 2} }
To express these three possibilities, you have two possibilities that
overlap, that is: { 1, 2 } and { 2, 2 }
Once you publish this, we explicitly state that you must accept any
possible configuration and "do your best". So, the two following
configurations are also valid:
(D) In0:1 In1:2 Out0:2
(E) In0:2 In1:1 Out0:2
He wanted to express the constraint I believe, that the input
channels should all be the same (either mono or stereo) on both
buses. As I said previously, this constraint cannot be expressed.
Finally, if you wanted to just deal with mono or stereo, then the
situation is much less complex, because you don't have an overlapping
case. Thus:
{ {1, 1} {2, 2}}
would result in 2 possible channel configurations for an AU
(regardless of how many inputs or outputs it had):
(A) In0:1 In1:1 Out0:1
(C) In0:2 In2:1 Out0:2
We've erred on the side of caution as we have found that trying to
express constrained capabilities (such as all input buses must have
the same number of channels, etc... ) are not easily generalised and
quickly become overly complex. We believe the AU developer can
achieve the affect they want (a flexible feature for the user) with
some good UI or documentation that describes how different features
of an AU are used to best advantage.
Bill
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden