Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
- Subject: Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
- From: Dirk Musfeldt <email@hidden>
- Date: Fri, 05 Nov 2004 14:36:19 +0100
Maybe the other devices are answering the private request for property
'scnr' or 'namr' and mine is not? And thus the code executed is different
for my plug-in than for the other inputs?
> 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:
> de
>
> 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