Можно ли использовать AVAssetReader для возврата макета стереоканала?

Я бы хотел получить обратно AudioBufferList из AVAssetReader, у которого есть 2 буфера, чтобы я мог обрабатывать левый и правый звук через AudioUnit. Я попытался использовать настройки вывода ниже, но он не будет считываться, пока я укажу стереомакет, установленный kAudioChannelLayoutTag_Stereo.

Может ли AVAssetReader вернуть результат без чередования?

Если нет, как мне преобразовать это в AudioBufferList без чередования? Я пытался использовать Audio Converter Services, но не могу заставить его принимать входные или выходные значения для AudioStreamBasicDescription. (ASBD) Если я не могу получить данные в нужном мне формате от AVAssetReader, я хотел бы, по крайней мере, иметь возможность преобразовать их в нужный мне формат.

Любые советы приветствуются.

- (NSDictionary *) getOutputSettings {
    AudioChannelLayout channelLayout;
    memset(&channelLayout, 0, sizeof(AudioChannelLayout));
    channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
    NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey, 
                                    [NSNumber numberWithFloat:44100.0], AVSampleRateKey,
                                    [NSNumber numberWithInt:2], AVNumberOfChannelsKey,
                                    [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
                                    [NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,
                                    [NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved,
                                    [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
                                    [NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey,
                                    nil];

    return outputSettings;
}
8
задан Brennan 20 May 2011 в 18:19
поделиться