Возможные причины функции обратного вызова при использовании аудио-очереди не вызывается.редактировать: NVM понял это - PullRequest
0 голосов
/ 21 июля 2011

На самом деле я в растерянности.

У меня все правильно настроено - даже если я испортил некоторые значения, обратный вызов все равно должен быть вызван.

Мой код вызова, если кому-то все равно - вызывается с помощью действия кнопки:

[self audioDataFormatSetup:&anAQData];

NSLog(@"buffer size %lu, packets %lu", anAQData.bufferByteSize, anAQData.mNumPacketsToRead);

anAQData.mIsRunning = true;  

AudioQueueNewOutput (                                
                     &anAQData.mDataFormat,           
                     HandleOutputBuffer,             
                     &anAQData,                        
                     CFRunLoopGetCurrent(), 
                     kCFRunLoopCommonModes,          
                     0,                              
                     &anAQData.mQueue                 
                     );

//buffers here
anAQData.mCurrentPacket = 0;                              

for (int i = 0; i < kNumberBuffers; ++i) {               
    AudioQueueAllocateBuffer (                           
                              anAQData.mQueue,            
                              anAQData.bufferByteSize,    
                              &anAQData.mBuffers[i]       
                              );

    HandleOutputBuffer (                                 
                        &anAQData,                         
                        anAQData.mQueue,                  
                        anAQData.mBuffers[i]              
                        );
}

NSLog(@"buffer size %lu, packets %lu", anAQData.bufferByteSize, anAQData.mNumPacketsToRead);


AudioQueueStart (                                  
                 anAQData.mQueue,                  
                 NULL                              
                 );

NSLog(@"AQ started");
/*
do {                                               
    CFRunLoopRunInMode (                           
                        kCFRunLoopDefaultMode,     
                        0.25,                      
                        false                      
                        );
} while (anAQData.mIsRunning);

CFRunLoopRunInMode (                               
                    kCFRunLoopDefaultMode,
                    1,
                    false
                    );*/

Нет ошибок, ничего. Это смешно.

edit: Не берите в голову, я дебил, который не умеет читать.

Я забыл установить mAudioDataByteSize, чтобы указать, что в буфере есть данные, которые стоит прочитать. / Facepalm

PS: я забыл также увеличить начальный пакет / текущий пакет. / Вздох

PPS: ошибка в обратном вызове. Пропустил несколько шагов туда.

...