From f8887b7ff18e3211418e67310601575ee481d162 Mon Sep 17 00:00:00 2001 From: Piers Date: Wed, 15 May 2013 16:29:24 +0000 Subject: [PATCH 1/2] Add support for HE-AAC The code for handling HE-AAC has been copied from Matt Gallagher's AudioStreamer library. https://github.com/mattgallagher/AudioStreamer/blob/master/Classes/AudioStreamer.m#L1605 --- Audjustable/Classes/AudioPlayer/AudioPlayer.m | 51 ++++++++++++++++--- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/Audjustable/Classes/AudioPlayer/AudioPlayer.m b/Audjustable/Classes/AudioPlayer/AudioPlayer.m index 797f185..8ecdc6f 100644 --- a/Audjustable/Classes/AudioPlayer/AudioPlayer.m +++ b/Audjustable/Classes/AudioPlayer/AudioPlayer.m @@ -605,12 +605,13 @@ static void AudioQueueIsRunningCallbackProc(void* userData, AudioQueueRef audioQ break; case kAudioFileStreamProperty_DataFormat: { - AudioStreamBasicDescription newBasicDescription; - UInt32 size = sizeof(newBasicDescription); - - AudioFileStreamGetProperty(inAudioFileStream, kAudioFileStreamProperty_DataFormat, &size, &newBasicDescription); - - currentlyReadingEntry->audioStreamBasicDescription = newBasicDescription; + if (currentlyReadingEntry->audioStreamBasicDescription.mSampleRate == 0) { + AudioStreamBasicDescription newBasicDescription; + UInt32 size = sizeof(newBasicDescription); + + AudioFileStreamGetProperty(inAudioFileStream, kAudioFileStreamProperty_DataFormat, &size, &newBasicDescription); + currentlyReadingEntry->audioStreamBasicDescription = newBasicDescription; + } currentlyReadingEntry->sampleRate = currentlyReadingEntry->audioStreamBasicDescription.mSampleRate; currentlyReadingEntry->packetDuration = currentlyReadingEntry->audioStreamBasicDescription.mFramesPerPacket / currentlyReadingEntry->sampleRate; @@ -652,6 +653,44 @@ static void AudioQueueIsRunningCallbackProc(void* userData, AudioQueueRef audioQ discontinuous = YES; } break; + case kAudioFileStreamProperty_FormatList: + { + Boolean outWriteable; + UInt32 formatListSize; + OSStatus err = AudioFileStreamGetPropertyInfo(inAudioFileStream, kAudioFileStreamProperty_FormatList, &formatListSize, &outWriteable); + if (err) + { + break; + } + + AudioFormatListItem *formatList = malloc(formatListSize); + err = AudioFileStreamGetProperty(inAudioFileStream, kAudioFileStreamProperty_FormatList, &formatListSize, formatList); + if (err) + { + free(formatList); + break; + } + + for (int i = 0; i * sizeof(AudioFormatListItem) < formatListSize; i += sizeof(AudioFormatListItem)) + { + AudioStreamBasicDescription pasbd = formatList[i].mASBD; + + if (pasbd.mFormatID == kAudioFormatMPEG4AAC_HE || + pasbd.mFormatID == kAudioFormatMPEG4AAC_HE_V2) + { + // + // We've found HE-AAC, remember this to tell the audio queue + // when we construct it. + // +#if !TARGET_IPHONE_SIMULATOR + currentlyReadingEntry->audioStreamBasicDescription = pasbd; +#endif + break; + } + } + free(formatList); + } + break; } } From dd3bd913b5cb3b3f685d6c4c04195f3c4c59849c Mon Sep 17 00:00:00 2001 From: Piers Date: Fri, 17 May 2013 17:22:32 +0000 Subject: [PATCH 2/2] Update podspec to version 0.0.5 --- Audjustable.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Audjustable.podspec b/Audjustable.podspec index 1d5c079..f36d297 100644 --- a/Audjustable.podspec +++ b/Audjustable.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Audjustable" - s.version = "0.0.4" + s.version = "0.0.5" s.summary = "A fast and extensible audio streamer for iOS and OSX with support for gapless playback and custom (non-HTTP) sources." s.homepage = "http://tumtumtum.github.com/audjustable/" s.license = 'MIT'