Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
- Subject: Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
- From: Dirk Musfeldt <email@hidden>
- Date: Fri, 05 Nov 2004 13:14:49 +0100
Yes, it works for other inputs. But I can't see my error:
OSStatus MyDeviceGetProperty(AudioHardwarePlugInRef inSelf,
AudioDeviceID inDevice,
UInt32 inChannel,
Boolean isInput,
AudioDevicePropertyID inPropertyID,
UInt32* ioPropertyDataSize,
void* outPropertyData)
{
OSStatus err = kAudioHardwareNoError;
switch (inPropertyID) {
case kAudioDevicePropertyDataSourceNameForID:
{
if (*ioPropertyDataSize < sizeof (AudioValueTranslation)){
err = kAudioHardwareBadPropertySizeError;
}else{
AudioValueTranslation* trl =
(AudioValueTranslation*)outPropertyData;
printf("DeviceGetProperty:
kAudioDevicePropertyDataSourceNameForID: \n ioPropertyDataSize %ld \n
mInputData %p \n mInputDataSize %ld \n mOutputData %p \n mOutputDataSize
%ld\n",
*ioPropertyDataSize,
trl->mInputData,
trl->mInputDataSize,
trl->mOutputData,
trl->mOutputDataSize);
if (trl->mInputData
&& *(UInt32*)trl->mInputData == kMyInputID) {
char* data = (char*) trl->mOutputData;
if (data) {
strlcpy(data,m_nameString,trl->mOutputDataSize);
} else {
printf("DeviceGetProperty : no buffer %p\n",data);
err = kAudioHardwareIllegalOperationError;
}
trl->mOutputDataSize =
min(strlen(m_nameString )+1,trl->mOutputDataSize);
} else if (NULL == trl->mInputData ) {
printf("DeviceGetProperty : no input %p\n",
trl->mInputData);
err = kAudioHardwareIllegalOperationError;
} else {
printf("DeviceGetProperty : wrong input %ld\n",
*(UInt32*)trl->mInputData);
err = kAudioHardwareUnspecifiedError;
}
*ioPropertyDataSize = sizeof(AudioValueTranslation);
}
break;
}
}
return err;
}
The fun thing is that quite similar code for
kAudioDevicePropertyDataSourceNameForIDCFString works fine when triggered in
HALLab.
> That certainly doesn't look right. There isn't any translation data.
>
> Does it work correctly for the built-in hardware? If it does, it most
> likely means you are accidently munging the translation data somewhere
> in the
> dispatching code.
>
> If it doesn't, it likely means the bug is on the QuickTime/SoundManager
> side.
>
> On Nov 4, 2004, at 2:39 AM, Dirk Musfeldt wrote:
>
>
>> Is it possible that QuickTime or the SoundManager layer is doing this
>> wrong?
>>
>> If I use HackTV with my plug-in and open the Sounbd settings I get
>> this:
>>
>> DeviceGetProperty: kAudioDevicePropertyDataSourceNameForID:
>> ioPropertyDataSize 16
>> mInputData 0x0
>> mInputDataSize 0
>> mOutputData 0x0
>> mOutputDataSize 0
>>
>> But I could see other input names so there must be a way to signal
>> this.
>> What am I doing wrong?
>>
>>
>>
>>
>>> If the mOutputData field is NULL or the mOutputDataSize field is 0, it
>>> is an error by the caller of AudioDeviceGetProperty() and you should
>>> return kAudioHardwareIllegalOperationError.
>>>
>>> If mOutputData is not NULL but mOutputDataSize is smaller than the
>>> string you want to return, you should truncate the string to fit in
>>> the
>>> provided buffer.
>>>
>>> On Nov 3, 2004, at 5:18 AM, Dirk Musfeldt wrote:
>>>
>>>
>>>
>>>
>>>> Hi all,
>>>>
>>>> I'm doing an AudioHardwarePlugIn and have troubles to get my reaction
>>>> on
>>>> kAudioDevicePropertyDataSourceNameForID right.
>>>>
>>>> I get an AudioValueTranslation record and want to copy my C string
>>>> into the
>>>> buffer provided with the mOutputData field.
>>>>
>>>> strcpy((char*)translation->mOutputData,nameString);
>>>>
>>>> But what if mOutputData and mOutputData Size are null? Do I have to
>>>> malloc a
>>>> buffer myself?
>>>>
>>>>
>>>>
>>>> Regards
>>>>
>>>> Dirk
>>>>
>>>>
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Coreaudio-api mailing list (email@hidden)
>>>> Help/Unsubscribe/Update your Subscription:
>>>> 40apple.com
>>>>
>>>> This email sent to email@hidden
>>>>
>>>>
>>>
>>>
>>>
>>>
>>
>> Regards
>>
>> Dirk
>>
>>
>> _______________________________________________
>> 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
>>
>
>
>
Mit freundlichen Grüßen
Dirk Musfeldt
Meilenstein Mac OS Software
Neue Strasse 5
D-31582 Nienburg
Tel: +49 (0) 5021 91 24 44
Fax: +49 (0) 5021 91 24 45
<http://www.meilenstein.de/>
_______________________________________________
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