Speaker positioning

As per the documentation, we can use AudioChannelDescription.mCoordinates to set speaker position. Following is my code snippet:


OSStatus status = noErr;

AudioObjectPropertyAddress propertyAddress;

propertyAddress.mSelector = kAudioDevicePropertyPreferredChannelLayout;

propertyAddress.mScope = kAudioDevicePropertyScopeOutput;

propertyAddress.mElement = kAudioObjectPropertyElementMaster;

if(AudioObjectHasProperty(self.mID, &propertyAddress)){

UInt32 propSize = 0;

AudioObjectGetPropertyDataSize(self.mID, &propertyAddress, 0, NULL, &propSize);

AudioChannelLayout* layout = (AudioChannelLayout*)malloc(propSize);

AudioChannelLabel labels[2] = {kAudioChannelLabel_Right, kAudioChannelLabel_Left};

layout->mNumberChannelDescriptions = 2;

layout->mChannelLayoutTag = kAudioChannelLayoutTag_UseChannelDescriptions;

layout->mChannelBitmap = 0;

for (UInt32 i = 0; i < layout->mNumberChannelDescriptions; i++) {

layout->mChannelDescriptions[i].mChannelLabel = labels[i];

layout->mChannelDescriptions[i].mChannelFlags = kAudioChannelFlags_SphericalCoordinates|kAudioChannelFlags_Meters;

layout->mChannelDescriptions[i].mCoordinates[kAudioChannelCoordinates_Distance] = sender.doubleValue;

layout->mChannelDescriptions[i].mCoordinates[kAudioChannelCoordinates_Azimuth] = (i == 0) ? 90 : -90;

layout->mChannelDescriptions[i].mCoordinates[kAudioChannelCoordinates_Elevation] = 0;

}

status = AudioObjectSetPropertyData(self.mID, &propertyAddress, 0, NULL, propSize, layout);

if(status != noErr){

NSLog(@"setPosition cannot set");

}

}


The API doesn't throw any error. But, there is no change is listening experience. Even if I set right speaker at distance 'x' (far), it doesn't give experience of listening from far speaker.


What might be wrong here? Did I understand speaker positioning concept wrong?


Thanks.

Deepa