用AudioQueue播放原始的未压缩声音,没有声音

我使用三个缓冲区和一个队列,通过networking播放ADPCM数据。 数据从我的应用程序解码,解码后的数据(未压缩的PCM数据)通过Audacity播放被正确validation。 但是,使用AudioQueue从我的应用程序播放时听不到任何声音。 所有的AudioQueue API返回值都是noErr(0)。 我一直在试图通过分配三个缓冲区AudioQueue不输出任何声音 。 这不适合我! 有人知道如何揭示更多的AudioQueue日志,所以我可以捕捉到故障点或从我的代码是否有任何问题? 谢谢!

... aq->mDataFormat.mSampleRate = format->nSamplesPerSec; // 44100 aq->mDataFormat.mChannelsPerFrame = format->nChannels; // 1 aq->mDataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; aq->mDataFormat.mFramesPerPacket = 1; aq->mDataFormat.mBitsPerChannel = 16; aq->mDataFormat.mFormatID = kAudioFormatLinearPCM; ... // Fill data before starting for (i = 0; i bufferByteSize >= size) { aq->mBuffers[i]->mAudioDataByteSize = size - (kNumberBuffers - 1 - i) * chunkSize; memcpy(aq->mBuffers[i]->mAudioData, src + aq->mBuffers[i]->mAudioDataByteSize, aq->mBuffers[i]->mAudioDataByteSize); status = AudioQueueEnqueueBuffer(aq->mQueue, aq->mBuffers[i], 0, NULL); printf("%s: %d/%d bytes to enqueue - %d\n", __func__, aq->mBuffers[i]->mAudioDataByteSize, size, status); size -= aq->mBuffers[i]->mAudioDataByteSize; src += aq->mBuffers[i]->mAudioDataByteSize; } else { aq->mBuffers[i]->mAudioDataByteSize = aq->bufferByteSize; memcpy(aq->mBuffers[i]->mAudioData, src, aq->bufferByteSize); status = AudioQueueEnqueueBuffer(aq->mQueue, aq->mBuffers[i], 0, NULL); printf("%s: enqueue a full buffer[%d]\n - %d\n", __func__, i, status); size -= aq->bufferByteSize; src += aq->bufferByteSize; } } } ... status = AudioQueueSetParameter(aq->mQueue, kAudioQueueParam_Volume, 1.0); printf("%s: set AudioQueue volume %d\n", __func__, status); status = AudioQueueStart(aq->mQueue, NULL); printf("%s: start AudioQueue [%d] %d\n", __func__, aq->bufferByteSize, status); 

Interesting Posts