2. 各编码格式配置说明

AD16N、AW30N同时支持的编码格式有:标准MP2、UMP2、A格式三种格式;

AW30N还支持OPUS、ADPCM-IMA、SBC/MSBC/USBC、SPEEX编码格式。

下面介绍一下各个格式配置:

文件流解码格式:

2. “A格式编码

数据流解码格式:

同时支持文件流解码和数据流解码格式:
8. “ump2编码

2.1. 标准MP2编码

具体内容可以了解 mp3_encoder.c 和 mp3_encoder.h

(注意文件名是MP3,实际的编码格式是mp2)

标准MP2编码 码率(BR)/ 采样率(SR)对应关系

采样率(sr)

8000

12000

16000

22050

24000

32000

44100

48000

码率(BR)

8kbps

32kbps

16kbps

48kbps

24kbps

56kbps

32kbps

64kbps

40kbps

80kbps

48kbps

96kbps

56kbps

112kbps

64kbps

128kbps

80kbps

160kbps

88kbps

160kbps

96kbps

224kbps

112kbps

256kbps

128kbps

320kbps

160kbps

384kbps


2.2. ump2编码

具体内容可以了解 ump3_encoder.c 和 ump3_encoder.h

ump2编码 采样率(sr)/ 压缩比(cr)对应关系

采样率(SR)

8000

12000

16000

22050

24000

32000

44100

48000

压缩比(CR)

3

4

5

6

7

8

注:br的范围时:sr*16/压缩比(CR),压缩比的范围时3~8;例如SR=24K,那么BR的范围时:(24*16/8) ~ (24*16/3)


2.3. A格式编码

具体内容可以了解 a_encoder.c 和 a_encoder.h

A格式编码 码率(BR)/采样率(SR)对应关系

采样率(SR)

8000

12000

16000

24000

32000

码率(BR)

32kbps

48kbps

64kbps

96kbps

128kbps


2.4. OPUS格式编码

OPUS格式编码目前只包含三种封装格式:分别是百度、酷狗和OGG
具体内容可以了解 opus_encoder.c 和 opus_encoder.h

OPUS格式编码 码率(BR)/采样率(SR)对应关系

采样率(SR)

16000

码率(BR)

16kbps

32kbps

64kbps

"opus 相关参数配置"

opus 相关参数配置


2.5. ADPCM_IMA格式编码

具体内容可以了解 ima_encoder.c 和 ima_encoder.h

  • 压缩比:4:1

  • ADPCM-IMA 采样率

    没有限制。

  • ADPCM-IMA 输出header控制
    ima_enc_stream_header:编码每次输出是否包含header 0:不包含 1:包含
    输出的header占3个byte。前两个byte为prev pred,最后一个byte为index。输出时的长度包含在编码输出的长度中
  • ADPCM-IMA 输入/输出量控制
    ima_enc_stream_max_input:一次算法run input处理最大数据量(单位:样点数)
    ima_enc_stream_max_output:一次算法run output编码出来的最大数据量(单位:byte)
    两者影响算法库内运算buff大小。
"adpcm-ima 输入输出量控制"

adpcm-ima 输入输出量控制


2.6. sbc/msbc/usbc编码格式

sbc / msbc / usbc 编码共用同一个算法库,但是三者编解码不可混用,用户需要注意做好区分。

即sbc的解码格式只能解码sbc的编码数据,msbc的解码格式只能解码msbc的编码数据,usbc的解码格式只能解码usbc的编码数据;

具体内容可以了解 sbc_encoder.c 和 sbc_encoder.h

  • sbc / msbc / usbc 编码选择

"sbc / msbc / usbc 编码选择"

sbc / msbc / usbc 编码选择

  • sbc/msbc/usbc 相关参数配置

用户可以在sbc_stdenc_api.h头文件里查看相应参数配置信息。
注意在选择msbc编码后,相关参数设置无效,具体可以看头文件说明。
"sbc/msbc/usbc 参数配置"

sbc/msbc/usbc 参数配置

  • 采样率和码率之间的关系

SBC / USBC格式编码 码率(BR)/采样率(SR)对应关系

采样率(SR)

16000

32000

44100

48000

码率(BR)

(8*outdata_size*sr)/(subbands*blocks*1000);

MSBC格式编码 码率(BR)/采样率(SR)对应关系

采样率(SR)

16000

码率(BR)

62kbps

备注

用户可以根据这两个信息算出具体压缩比为多少

"sbc/msbc/usbc 获取算法相关信息"

sbc/msbc/usbc 获取算法相关信息

备注

msbc编码时,其余参数配置无效,固定配置为:
sr=16000;
nch=1;
bitpool=26;
subbands=8;
blocks=15;

2.7. speex编码格式

speex编解码共用同一个算法库,主要应用于人声场景。
具体内容可以了解 speex_encoder.c 和 speex_encoder.h
  • SPEEXENC_SPEEDUP_EN:配置speex编码加速

    该值只对编码效果有影响,提高提速越多,效果会变差

  • sr:采样率

    speex支持的采样率为 8k / 16k。

  • quality:音频质量

    quality:0 ~ 9。

  • sr 、 br 、 quality之间的关系

br \ quality

0

1

2

3

4

采样率:8000

2kbps

4kbps

6kbps

8kbps

8kbps

采样率:16000

4kbps

6kbps

8kbps

10kbps

12kbps

br \ quality

5

6

7

8

9

采样率:8000

11kbps

11kbps

15kbps

15kbps

18kbps

采样率:16000

16kbps

20kbps

24kbps

28kbps

34kbps


2.8. JLA_LW编码格式

JLA_LW编解码共用同一个算法库。
该格式目前主要应用在对讲机应用上,用来和蓝牙连接间隔对齐。
具体内容可以了解 jla_lw_encoder.c 和 jla_lw_encoder.h 和 jla_lw_codec_ctrl.h
  • jla_lw_br_level 压缩档位(位于app_config.c)

0档位适用于:

16k采样率,36kbps,每帧编码间隔为20ms;
32k采样率,72kbps,每帧编码格式为10ms;

1档位适用于:

16k采样率,72kbps,每帧编码间隔为10ms;
"JLA格式的jla_lw_br_level配置"

JLA格式的jla_lw_br_level配置

备注

在v1.4.0版本前,JLA格式只支持0档位的配置(该压缩档位没有开放出来)
在v1.4.0版本后,JLA格式才支持 0 和 1 档位的配置;
该配置需要编解码双方一致!!!!!!