diff options
Diffstat (limited to 'pjmedia')
-rw-r--r-- | pjmedia/src/pjmedia-audiodev/coreaudio_dev.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/pjmedia/src/pjmedia-audiodev/coreaudio_dev.c b/pjmedia/src/pjmedia-audiodev/coreaudio_dev.c index 43367fe9..65740b7d 100644 --- a/pjmedia/src/pjmedia-audiodev/coreaudio_dev.c +++ b/pjmedia/src/pjmedia-audiodev/coreaudio_dev.c @@ -660,9 +660,10 @@ OSStatus resampleProc(AudioConverterRef inAudioConverter, *ioNumberDataPackets = strm->resample_buf_size; ioData->mNumberBuffers = 1; - ioData->mBuffers[0].mNumberChannels = 1; + ioData->mBuffers[0].mNumberChannels = strm->streamFormat.mChannelsPerFrame; ioData->mBuffers[0].mData = strm->resample_buf_ptr; ioData->mBuffers[0].mDataByteSize = *ioNumberDataPackets * + strm->streamFormat.mChannelsPerFrame * strm->param.bits_per_sample >> 3; return noErr; @@ -725,7 +726,8 @@ static OSStatus resample_callback(void *inRefCon, if (nsamples >= resampleSize) { pjmedia_frame frame; - UInt32 resampleOutput = strm->param.samples_per_frame; + UInt32 resampleOutput = strm->param.samples_per_frame / + strm->streamFormat.mChannelsPerFrame; AudioBufferList ab; frame.type = PJMEDIA_FRAME_TYPE_AUDIO; @@ -735,7 +737,7 @@ static OSStatus resample_callback(void *inRefCon, frame.bit_info = 0; ab.mNumberBuffers = 1; - ab.mBuffers[0].mNumberChannels = 1; + ab.mBuffers[0].mNumberChannels = strm->streamFormat.mChannelsPerFrame; ab.mBuffers[0].mData = strm->rec_buf; ab.mBuffers[0].mDataByteSize = frame.size; @@ -778,7 +780,8 @@ static OSStatus resample_callback(void *inRefCon, /* Do the resample */ strm->resample_buf_ptr = input; ab.mBuffers[0].mDataByteSize = frame.size; - resampleOutput = strm->param.samples_per_frame; + resampleOutput = strm->param.samples_per_frame / + strm->streamFormat.mChannelsPerFrame; ostatus = AudioConverterFillComplexBuffer(strm->resample, resampleProc, strm, |