Как Cobalt отслеживает пакет Opus?

Когда используется аудиокодек Opus, для интеграции очень важны некоторые дополнительные параметры.

Есть ли способ получить задержку кодека, выполнить предварительный просмотр и приватный кодек?

Когда SB_API_VERSION не меньше SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER, «приватный кодек» для Opus передается на правый борт.

Поскольку я не очень уверен, был ли аудиосэмпл предварительно обработан с помощью «задержки кодека» и «предпросмотра поиска», нет ли необходимости для аудиодекодера использовать их?


person Ceri Ruan    schedule 26.05.2017    source источник


Ответы (1)


Метаданные Opus хранятся в AudioDecoderConfig::extra_data() и передаются в SbPlayerCreate() через SbMediaAudioHeader::audio_specific_config. Вы можете разобрать его, используя код, аналогичный функции ParseOpusHeader, внутри «media/filters/opus_audio_decoder.cc».

К сожалению, |audio_specific_config| представляет собой массив из 8 байтов в COBALT_9, а дополнительные байты метаданных Opus отсутствуют. Для этого есть несколько решений: 1. Убрать поддержку Opus, так как это необязательно в соответствии с требованиями 2017 года. Вместо этого используйте aac. 2. Используйте декодер Opus, которому не нужны метаданные. 3. Подождите, пока COBALT_11 не будет выпущен, в какой версии ограничение размера |audio_specific_config| устранен. Но это может быть невозможно в соответствии с вашим графиком выпуска на 2017 год. 4. Увеличьте размер SbMediaAudioHeader::audio_specific_config до большего числа (скажем, 1024). Это сделает вашу будущую перебазировку немного сложнее.

person xiaoming    schedule 26.05.2017
comment
Спасибо за вашу информацию и совет. Хотелось бы увеличить конфиг и попробовать разобрать. - person Ceri Ruan; 27.05.2017
comment
Стоит отметить, что после внесения такой модификации вам, возможно, придется разрешать конфликты вручную при обновлении до кобальта 11. Но я ожидаю, что работа будет тривиальной. - person xiaoming; 28.05.2017