2

I'm developing an app for transfer audio data between 2 iOS devices.

At the moment I'm using NSInputStream for receive the incoming audio and the data into a queue (AudioQueueNewInput).

The callback of the AudioQueue is

void TDAudioQueueInputCallback(
                           void* inUserData,
                           AudioQueueRef inAudioQueue,
                           AudioQueueBufferRef inBuffer,
                           const AudioTimeStamp* inStartTime,
                           UInt32 inNumPackets,
                           const AudioStreamPacketDescription* inPacketDesc)
{
    NSLog(@"recordCallback %u", (unsigned int)inBuffer->mAudioDataByteSize);


    TDAudioQueue *audioQueue = (__bridge TDAudioQueue *)inUserData;

    AudioBufferList *audioBufferList = [audioQueue getBufferListFromQueueBuffer:inBuffer];

    [audioQueue sendAudioBufferToRecord:audioBufferList];


    [audioQueue didFreeAudioQueueBuffer:inBuffer];

}

getBufferListFromQueueBuffer method

-(AudioBufferList *) getBufferListFromQueueBuffer: (AudioQueueBufferRef ) data
{


    if (data->mAudioDataByteSize > 0)
    {
        NSUInteger len = data->mAudioDataByteSize;
        //I guess you can use Byte*, void* or Float32*. I am not sure if that makes any difference.
        Byte * byteData = (Byte*) malloc (len);
        memcpy (byteData, data->mAudioData, len);
        if (byteData)
        {
            AudioBufferList * theDataBuffer =(AudioBufferList*)malloc(sizeof(AudioBufferList) * 1);
            theDataBuffer->mNumberBuffers = 1;
            theDataBuffer->mBuffers[0].mDataByteSize = len;
            theDataBuffer->mBuffers[0].mNumberChannels = 1;
            theDataBuffer->mBuffers[0].mData = byteData;
            // Read the data into an AudioBufferList
            return theDataBuffer;
        }
    }
    return nil;
}

After this I'm saving the audio into a file.

The problem is I can hear the first 2 or 3 seconds but then I start to get this warning and my audio file gets silence.

The warning is:

[AQConverterThread] >aq> 995: Input ring buffer returning 0x400 frames of silence

Fabio Berger
  • 1,921
  • 2
  • 24
  • 29
Pablo Martinez
  • 1,573
  • 12
  • 31

0 Answers0