From a52c54a12c5cefdf4c19cda326af34c35788be94 Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Sun, 13 Oct 2013 05:14:57 -0700 Subject: [PATCH] Initialize some pointers properly, and redesign to reallocate the converter buffer instead of freeing it every time --- Audio/Chain/ConverterNode.m | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Audio/Chain/ConverterNode.m b/Audio/Chain/ConverterNode.m index 9e3b3430f..843821293 100644 --- a/Audio/Chain/ConverterNode.m +++ b/Audio/Chain/ConverterNode.m @@ -37,6 +37,11 @@ void PrintStreamDesc (AudioStreamBasicDescription *inDesc) { rgInfo = nil; + converterFloat = NULL; + converter = NULL; + floatBuffer = NULL; + callbackBuffer = NULL; + [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.volumeScaling" options:0 context:nil]; } @@ -119,11 +124,7 @@ static OSStatus ACInputProc(AudioConverterRef inAudioConverter, amountToWrite = (*ioNumberDataPackets)*(converter->inputFormat.mBytesPerPacket); - if (converter->callbackBuffer != NULL) - { - free(converter->callbackBuffer); - } - converter->callbackBuffer = malloc(amountToWrite); + converter->callbackBuffer = realloc(converter->callbackBuffer, amountToWrite); amountRead = [converter readData:converter->callbackBuffer amount:amountToWrite]; if (amountRead == 0 && [converter endOfStream] == NO) @@ -330,6 +331,9 @@ static float db_to_scale(float db) floatFormat.mBytesPerFrame = (32/8)*floatFormat.mChannelsPerFrame; floatFormat.mBytesPerPacket = floatFormat.mBytesPerFrame * floatFormat.mFramesPerPacket; + floatOffset = 0; + floatSize = 0; + stat = AudioConverterNew( &inputFormat, &floatFormat, &converterFloat ); if (stat != noErr) {