分析编解码过程:
在目前的主流移动计算平台上,支持的音频记格式主要有:AAC,AMR-NB两种.部分厂商也提供了对元数据PCM的记录支持.
- AAC:支持最多48个全音域声道,最高支持8kHz~96kHz的采样速率.
- AMR-WB:自适应多速率宽带编码 -> 音频带宽50~7000Hz,采样速率16kHz,抗干扰优于AMR-NB.AMR-WB 同时被ITU-T和3GPP采用,也称为G722.2标准.
- AMR-NB:自适应多速率窄带编码 -> 音频带宽300~3400Hz,采样速率8kHz
编解码AMR:
- 编码AMR:
- OpenCore支持的帧结构:AMR-TX_WMF(无线对媒体论坛), AMR_TX_IF2(3GPP制定), AMR_TX_ETS(欧洲电信标准),
AMR_TX_IETF(IETF制定)
- AMREncode()首先调用GSM EFR编码器进行编码,然后输出格式参数output_format的值
- 解码AMR:
- AMR的解码过程和其编码过程相反,首先根据input_format去顶要解码的帧结构.
- 如果是IETF 或者 AMRIF2,则首先将其帧结构转换成ETS帧结构,然后再调用GSMFrameDecode()进行解码
- 如果是ETS帧结构,直接调用GSMFrameDecode()进行解码.
解码MP3:
- MP3解码需要经过:同步-检错-哈夫曼解码-逆量化-立体声解码-反锯齿-IMDCT-子带合成.
其中IMDCT过程的运算量占了解码运算总量19%.
- 在文件:"opencore/codecs_v2/omx/omx_mp3/src/mp3_dec.cpp"实现了对MP3文件的解码.