• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString


  • Subject: Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString
  • From: email@hidden
  • Date: Mon, 08 Jan 2007 13:10:04 -0500

Hello Chris (and Jeff),

Thanks for your very informative reply.

I tried the same experiment that you've documented below, and indeed the channel number names are displayed correctly by the ioreg command. However, I just cannot get to them via the API! I've tried both the CFString and cstring variants on the property.

By the way, the documentation in AudioHardware.h is very misleading when it comes to the property descriptions. For example it says that both kAudioDevicePropertyChannelNumberName and kAudioDevicePropertyChannelNumberNameCFString are CFStrings!

Anyway, the same sequence of calls that correctly returns the Channel Names and Channel Category Names does not correctly return the Channel Number Name.

Code fragment below (I am using CAAudioHardwareDevice.cpp, by the way). Sorry about the poor formatting!

CFString ChannelNumberName;
UInt32 theSize = sizeof(CFStringRef);
char *cstrName = new char[100];
Boolean strBool;

if ( theDevice->HasProperty ( chan, kAudioDeviceSectionOutput, kAudioDevicePropertyChannelNumberNameCFString ) )
{
theDevice->GetPropertyData( chan, kAudioDeviceSectionOutput, kAudioDevicePropertyChannelNumberNameCFString, theSize, &ChannelNumberName );
strBool = CFStringGetCString( ChannelNumberName, cstrName, 99, kCFStringEncodingASCII );
printf( "Channel number name: %s\n", chan, cstrName );
CFRelease( ChannelNumberName );
}


Any suggestions?

Thanks in advance!

          - Rick

Chris Thomas wrote:
These names are statically allocated. For both drivers in question, you should be able to check them in Terminal by invoking ioreg with the IOAudioEngine subclass name:

$ ioreg -n com_m_audio_FWEngine2
[...]
+-o com_m_audio_FWEngine2 [...]
| | "IOAudioEngineChannelCategoryNames" = {"InputChannel2"="Input Analog","OutputChannel1"="Output Analog","OutputChannel4"="Output Analog","InputChannel3"="Input S/P$
| | "IOAudioEngineChannelNames" = {"InputChannel2"="Input Analog 2","OutputChannel1"="Output Analog 1","OutputChannel4"="Output Analog 4","InputChannel3"="Input S/PDI$
| | "IOAudioEngineChannelNumberNames" = {"InputChannel2"="2","OutputChannel1"="1","OutputChannel4"="4","InputChannel3"="1","OutputChannel2"="2", [...]


Chris

On Dec 21, 2006, at 3:37 PM, Jeff Moore wrote:

I suppose it could be any of the three bits of code could have a bug, but my first suspicion would fall on the driver.

On Dec 21, 2006, at 12:29 PM, email@hidden wrote:

Yes, your example shows what I was expecting to see based on the comments in the include file. However, what I am observing with my 2 examples is that the Number name is the same as the category name. So, for example if the Category name is "Analog outputs", each channel's number name is also "Analog outputs" with no difference for each channel. It is possible that there is a bug in my program, the device driver(s) for the (2) devices, or in the CA API.

Jeff Moore wrote:
The number name is used in conjunction with the category name to allow you to label a bank of things. For example, here's a bank of sliders labled with the category and each slider labeled with the number (pardon my ascii art):
----- Category ----
| | |
| | |
+ + +
| | |
| | |
Number Number Number
On Dec 21, 2006, at 7:27 AM, email@hidden wrote:
In my simple host program I've started to query the Name properties for my output devices. I have 2 Firewire devices, Digidesign MBox 2 Pro and M-Audio FireWire Audiophile. On both of these devices, the ChannelName, ChannelNumberName and ChannelCategoryName properties are available in the Output section. However, ChannelNumberName and ChannelCategoryName seem to be always returning identical strings (to each other), for every channel. The properties are not available on the Built-in audio.

I was expecting a string such as "1" or "One" for the ChannelNumberName on Channel 1. What is the expected behavior? HALLab does not seem to display these properties.


--
Jeff Moore
Core Audio
Apple


_______________________________________________ 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

_______________________________________________
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


  • Follow-Ups:
    • Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString
      • From: Jeff Moore <email@hidden>
References: 
 >Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString (From: Chris Thomas <email@hidden>)

  • Prev by Date: Jack and CoreAudio (was Mirroring Audio Output)
  • Next by Date: Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString
  • Previous by thread: Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString
  • Next by thread: Re: Purpose of kAudioDevicePropertyChannelNumberNameCFString
  • Index(es):
    • Date
    • Thread