当音频编解码器是 Opus 时,一些额外的参数对于我们的集成非常重要。
有没有办法让编解码器延迟,寻求预卷和编解码器私有?
当 SB_API_VERSION 不小于 SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER 时,Opus 的“编解码器私有”已被传递到右舷。
由于我不太确定音频样本是否使用“编解码器延迟”和“搜索预卷”进行了预处理,音频解码器是否不需要使用它们?
当音频编解码器是 Opus 时,一些额外的参数对于我们的集成非常重要。
有没有办法让编解码器延迟,寻求预卷和编解码器私有?
当 SB_API_VERSION 不小于 SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER 时,Opus 的“编解码器私有”已被传递到右舷。
由于我不太确定音频样本是否使用“编解码器延迟”和“搜索预卷”进行了预处理,音频解码器是否不需要使用它们?
Opus 元数据存储在 AudioDecoderConfig::extra_data() 并通过 SbMediaAudioHeader::audio_specific_config 传递到 SbPlayerCreate()。您可以使用类似于“media/filters/opus_audio_decoder.cc”中的 ParseOpusHeader 函数的代码来解析它。
不幸的是 |audio_specific_config| 是 COBALT_9 中 8 个字节的数组,缺少 Opus 元数据的额外字节。对此有几个解决方案: 1. 删除对 Opus 的支持,因为根据 2017 年的要求,它是可选的。请改用 aac。2. 使用不需要元数据的 Opus 解码器。3. 等到COBALT_11 发布,|audio_specific_config| 的大小限制在哪个版本 已移除。但根据您的 2017 年发布时间表,这可能不可行。4. 将 SbMediaAudioHeader::audio_specific_config 的大小增加到更大的数字(比如 1024)。这将使您未来的变基变得更加困难。