【问题标题】:Can't get AudioStreamBasicDescription from AudioUnit inside MTAudioProcessingTap无法从 MTAudioProcessingTap 内的 AudioUnit 获取 AudioStreamBasicDescription
【发布时间】:2014-07-23 21:39:24
【问题描述】:

由于关于 MTAudioProcessingTap 的文档很少(实际上几乎没有),我使用的是Apple's demo app from WWDC 2012

我正在尝试在 MTAudioProcessingTap 中有一个音频图,因此我需要为需要特定 .但是每次我尝试使用 AudioUnitGetProperty 来获取 AudioUnit 的 ASBD 时,我都会收到 EXC_BAD_ADDRESS 错误。

这是导致 EXC_BAD_ACCESS 的相关代码。您可以自行下载苹果的应用程序并将其添加到 tap_PrepareCallback

OSStatus 状态 = noErr;

AudioStreamBasicDescription testStream;
        // Set audio unit input/output stream format to processing format.

if (noErr == status)
{
    status = AudioUnitGetProperty(audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &testStream, sizeof(AudioStreamBasicDescription));
}

【问题讨论】:

    标签: ios avfoundation core-audio


    【解决方案1】:

    AudioUnitGetProperty 将一个指向 UInt32 的指针作为其大小参数,在您的示例代码中,您给出了一个值。这是标题:

    AudioUnitGetProperty(               AudioUnit               inUnit,
                                    AudioUnitPropertyID     inID,
                                    AudioUnitScope          inScope,
                                    AudioUnitElement        inElement,
                                    void *                  outData,
                                    UInt32 *                ioDataSize)
    

    你应该这样得到它:

    AudioStreamBasicDescription testStream = {0};
    UInt32 sizeTestStream = sizeof(AudioStreamBasicDescription);
    OSStatus status = AudioUnitGetProperty(audioUnit,kAudioUnitProperty_StreamFormat,kAudioUnitScope_Input,0,&testStream,&sizeTestStream);
    if(status){
        //handle error
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-12
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2018-02-23
      • 2012-05-08
      相关资源
      最近更新 更多