2011-02-01 15 views
7

मैं चेतावनी हो रही है: एपीआई AudioQueueFreeBuffer के लिए "AudioQueueObject :: FreeBuffer AQBuffer * 0x6273fd0 1 की गिनती enqueue है" ... इस चेतावनी से बचने के लिए कैसे?AudioQueueFreeBuffer चेतावनी

मैं AudioQueueFreeBuffer एपीआई में इस चेतावनी हो रही है

 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; 
     } 
+0

कुछ त्रुटि कोड जो इस त्रुटि को पुन: उत्पन्न करता है पोस्ट करें। – servermanfail

+0

मुझे जवाब नहीं मिला और 50 अंक भी खो गए :-( –

उत्तर

1

आज़माएं:

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

AudioQueueDispose(playState.queue, true); 
AudioFileClose(playState.audioFile); 
+0

कोशिश की ... लेकिन इस मुद्दे को हल नहीं किया –

2

यह तब होता है जब आप एक बफर है कि एक AudioQueue में कतारबद्ध कर दिया गया है पर AudioQueueFreeBuffer() कॉल करने का प्रयास है कि दौड रहा है। बफर को मुक्त करने का प्रयास करने से पहले आपको संबंधित ऑडियोक्यूयू पर AudioQueueStop() को कॉल करना चाहिए।

The doc's for AudioQueueFreeBuffer() say:

कॉल इस समारोह केवल यदि आप एक विशेष बफर के निपटान के लिए, जबकि एक ऑडियो कतार का उपयोग जारी रखने चाहते हैं। आप केवल बफर का निपटान कर सकते हैं जब ऑडियो कतार का स्वामित्व बंद हो जाता है (यानी ऑडियो डेटा प्रोसेसिंग नहीं करता है)।