【问题标题】:What does the "Mute" Button Do in Apple's AurioTouch2 sample code?Apple 的 AurioTouch2 示例代码中的“静音”按钮有什么作用?
【发布时间】:2012-12-04 18:56:09
【问题描述】:

我正在修改 Apple 开发人员网站上 AurioTouch2 示例中的代码。目前我正在尝试完全了解该应用程序的功能。我看到应用程序在静音打开时使用静音数据方法将 0 写入缓冲区。但是,在我看来,数据已经被处理过了,在使用应用程序时,我发现静音打开或关闭没有区别。我错过了什么 - 静音的目的是什么?

从 performThu 方法结束(输入回调)

if (THIS->mute == YES) { SilenceData(ioData); }

来自 aurioHelper.ccp

void SilenceData(AudioBufferList *inData)
{
    for (UInt32 i=0; i < inData->mNumberBuffers; i++)
        memset(inData->mBuffers[i].mData, 0, inData->mBuffers[i].mDataByteSize);
}

AurioTouch2 Sample Code

【问题讨论】:

    标签: iphone audio buffer core-audio


    【解决方案1】:

    你是对的,所做的只是将缓冲区归零。它之所以重要,是因为 mData 成员可能未初始化(即随机),如果不理会它会导致可怕的嗡嗡声。可能不会有什么不同,但你不应该把它留给机会。

    如果您遇到过想要产生静音的情况,请确保将缓冲区设为 0(而不是直接离开)。

    【讨论】:

      【解决方案2】:

      首先,我发现静音按钮确实有效。当我将手机举到耳边时,我可以听到麦克风的声音正在通过接收器播放。关闭静音没有声音。以前,我期待扬声器(而不是接收器)发出声音。这部分问题解决了。

      其次,远程 io 单元将麦克风输入数据放入 ioData 缓冲区。在我期待扬声器的输出会有另一个回调之前,但我认为因为没有一个远程 io 单元只是使用相同的 ioData 并将其播放到接收器(扬声器)。因此,将 ioData 清零(在处理麦克风输入数据以供应用程序使用之后)会导致接收器静音(即静音功能)。任何确认或澄清表示赞赏。

      【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多