AudioQueueFreeBuffer警告

我得到API AudioQueueFreeBuffer的警告“ AudioQueueObject :: FreeBuffer:AQBuffer * 0x6273fd0入队计数为1 ”...如何避免此警告?

我在AudioQueueFreeBuffer API中收到此警告

        for (int i = 0; i < kNumberBuffers; ++i) {

            if(mAudioInfo.mBuffers[i] != NULL)
            {
                AudioQueueFreeBuffer(mAudioInfo.mQueue, mAudioInfo.mBuffers[i]);
                mAudioInfo.mBuffers[i] = NULL;
            }   
            XThrowIfError(AudioQueueAllocateBuffer(mAudioInfo.mQueue, mBufferByteSize, &mAudioInfo.mBuffers[i]), "AudioQueueAllocateBuffer failed");

            AQTestBufferCallback (&mAudioInfo, mAudioInfo.mQueue, mAudioInfo.mBuffers[i]);

            if (mAudioInfo.mDone) break;
        }

当您尝试在正在运行的AudioQueue入队的缓冲区上调用AudioQueueFreeBuffer()时,会发生这种情况。 在尝试释放缓冲区之前,您应该在关联的AudioQueue上调用AudioQueueStop()。

AudioQueueFreeBuffer()的文档说:

仅当您想要在继续​​使用音频队列的同时处理特定缓冲区时调用此函数。 只有当拥有它的音频队列停止时(即不处理音频数据),才能处置缓冲区。


尝试这个:

for(int i = 0; i < NUM_BUFFERS; i++)
{
    AudioQueueFreeBuffer(playState.queue, playState.buffers[i]);
}

AudioQueueDispose(playState.queue, true);
AudioFileClose(playState.audioFile);
链接地址: http://www.djcxy.com/p/4585.html

上一篇: AudioQueueFreeBuffer warning

下一篇: How to add or remove intent filter programmatically in android?