Re: USB audio class - kIOAudioControlUsagePassThru implementation
Re: USB audio class - kIOAudioControlUsagePassThru implementation
- Subject: Re: USB audio class - kIOAudioControlUsagePassThru implementation
- From: Daniel Mack <email@hidden>
- Date: Fri, 21 May 2010 17:42:59 +0200
On Thu, May 20, 2010 at 10:20:24AM -0700, Alison Hughes wrote:
> Brett is right - this is both a USB and a Core-Audio related question.
>
> Actually, the USB audio class driver *does* indeed support play through using standard USB Audio descriptors. The driver examines the audio topology contained in the Audio Control descriptors to discover a hardware play-through path and attempts to locate a feature unit that logically should control it. This feature unit's mute control maps to the "Thru" toggle you see in AMS. The play though volume controls are also published by AppleUSBAudio but do not appear in AMS or the Sound Preferences pane. However, they can be accessed via other applications, like the developer audio utility HALLab.
>
> Here is the algorithm we use in AppleUSBAudio which is dependent on the presence of a mixer in the play through path:
Thanks a lot, Alison. That was exactly the information I was looking for.
I'll implement the descriptors as described and get back to you in case
of fears, uncertainties and doubts :)
Daniel
> - Hardware play through with mixer unit in path: AUA will publish controls contained in a feature unit between the input terminal and the mixer unit. Searching from the input terminal to the mixer unit, the driver selects the first feature unit that isn't shared with another audio path.
>
> Important note: Play through controls cannot be shared with another audio path because this could result in unwanted side effects. For example, if a play through control is also contained in a record path, muting the play through control would also unintentionally mute the recording input.
>
> Example play through path:
>
> Line Input Terminal ----> Feature Unit* ----> Mixer Unit ----> Feature Unit** ----> Speaker Terminal
>
> * The mute control contained in this feature unit is used to enable the play through path.
> ** The volume/mute controls contained in this feature unit are used to control output volume/mute.
>
> - Hardware play through without mixer unit in path: AUA will publish controls contained in the feature unit closest to the input terminal that isn't shared with another audio path.
>
> Let me know if you need any more information about USB audio controls - I'd be happy to elaborate.
>
> Hope that helps,
> Alison
>
>
> On May 12, 2010, at 1:00 AM, Daniel Mack wrote:
>
> > On Mon, May 10, 2010 at 07:38:58PM +0200, Daniel Mack wrote:
> >> I'm wondering how kIOAudioControlUsagePassThru controls are supposed to
> >> be mapped into USB audio class compliant devices. The USB audio standard
> >> (v2 in my case) does not describe this kind of control selector
> >> specifically, so I would guess the only way is to define an extension
> >> unit or to use mixer elements.
> >>
> >> The AppleUSBAudioDriver seems to do other fancy things though, and I
> >> didn't fully get my head around yet what it really looks for in the
> >> descriptors. Can anyone shed some light maybe?
> >
> > Any idea, anyone?
>
> I would recommend posting this to the USB group.
>
> Brett.
>
>
> _______________________________________________
> 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
_______________________________________________
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