title: Play raw uncompressed sound with AudioQueue, no sound
body: <p>I use three buffers with one queue, to play ADPCM data over network. The data is decoded from my app, and the decoded data (uncompressed pcm data) is verified correctly by playing from Audacity. However, I cannot hear any sound when playing from my app using AudioQueue. All AudioQueue API return values are noErr (0). I've been trying to follow <a href="https://stackoverflow.com/questions/3384152/audioqueue-does-not-output-any-sound">AudioQueue does not output any sound</a> by allocating three buffers . It didn't work for me! Somebody knows how to reveal more AudioQueue logs so I could catch the fault point or is there any problem from my code? Thanks!</p>
  
  <pre><code>
  
      ...
      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);
  
  </code></pre>