• 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: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
      • From: Dirk Musfeldt <email@hidden>
References: 
 >Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID (From: Jeff Moore <email@hidden>)

  • Prev by Date: Casey Fleser
  • Next by Date: Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
  • Previous by thread: Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
  • Next by thread: Re: AudioHardwarePlugIn and kAudioDevicePropertyDataSourceNameForID
  • Index(es):
    • Date
    • Thread