Размер пакета (mBytesPerPacket) или битрейт для файлов AAC в Core Audio

Я хочу настроить AudioStreamBasicDescription с постоянный битрейт Тип AAC.

AudioStreamBasicDescription clientFormat = {0};
clientFormat.mSampleRate         = 44100.0;
clientFormat.mFormatID           = kAudioFormatMPEG4AAC;
clientFormat.mFormatFlags        = kMPEG4Object_AAC_Main;
clientFormat.mChannelsPerFrame   = 2;
clientFormat.mBytesPerPacket     = 0;
clientFormat.mBytesPerFrame      = 0;
clientFormat.mFramesPerPacket    = 1024;
clientFormat.mBitsPerChannel     = 0;
clientFormat.mReserved           = 0;

За mBytesPerPacketдокументация Apple гласит:

Количество байтов в пакете аудиоданных. Для указания переменной
размер пакета, установите это поле равным 0. Для формата, который использует переменную
размер пакета, укажите размер каждого пакета, используя
Структура AudioStreamPacketDescription.

Я хочу, чтобы он был константой, поэтому я должен вставить туда ненулевое значение (желаемый размер), но все, кроме 0, не работает.

Любая помощь в этом?

0

Решение

Оказывается, мы можем установить свойства кодека прямо на AudioConverter.

Так я и сделал:

AudioConverterSetProperty(acRef, kAudioCodecPropertyBitRateControlMode,
sizeof(control_mode), &control_mode);

AudioConverterSetProperty(acRef, kAudioCodecPropertyCurrentTargetBitRate,
sizeof(_bitRate), &_bitRate);
2

Другие решения

Других решений пока нет …