Похожий вопрос был задан вопрос … но я хотел сделать его более конкретным для основного звука … так как некоторые из нас, возможно, заметили, что в базовом аудио очень мало места для ошибок.
Как ответ на указанный вопрос объясняет, __cxa_throw — это C ++ необработанное исключение, который может быть проигнорирован (эта проблема, кажется, является новой с Xcode 4.5.1. Я никогда не видел ее также)
можем ли мы сказать то же самое о ядре аудио? Что меня нервирует, так это то, что это связано с форматированием аудио …, от которого зависит мой код:
Я пытаюсь преобразовать файл AAC в lPCM ..
Выходной формат:
// set up the PCM output format for conversion
streamer->PCMoutputFormat.mSampleRate = 44100.0;
streamer->PCMoutputFormat.mFormatID = kAudioFormatLinearPCM;
streamer->PCMoutputFormat.mFormatFlags = kAudioFormatFlagsCanonical;
streamer->PCMoutputFormat.mBytesPerPacket = 4;
streamer->PCMoutputFormat.mFramesPerPacket = 1;
streamer->PCMoutputFormat.mBytesPerFrame = 4;
streamer->PCMoutputFormat.mChannelsPerFrame = 2;
streamer->PCMoutputFormat.mBitsPerChannel = 16;
Формат ввода:
mSampleRate = 44100
mFormatID = 1633772320 (AAC)
mFormatFlags = 0
mBytesPerPacket = 0
mFramesPerPacket = 1024
mBytesPerFrame = 0
mChannelsPerFrame = 2
mBitsPerChannel = 0
переменные экземпляра:
game.h
@interface Game : NSObject <GKSessionDelegate>
{
AudioStreamer *streamer;
}
@property (nonatomic, assign) AudioStreamBasicDescription mediaItemInputFormat;
audioStreamer.h
@interface AudioStreamer : NSObject
{
@public
AudioStreamBasicDescription PCMoutputFormat;
AudioConverterRef audioConverter;
}
настройка команды конвертера в game.m (именно здесь генерируется необработанное исключение __cxa_throw!)
// set up converter
OSStatus result = AudioConverterNew(&_mediaItemInputFormat,
&streamer->PCMoutputFormat,
&streamer->audioConverter);
Если исключение не завершает работу приложения, то обрабатывается другой фрагмент кода. Если вы доверяете любой части кода, то не о чем беспокоиться.
Других решений пока нет …