9.19. lc3编解码(jla)

概述

通过输入16bit/24bit的正弦波数据,测试lc3的编码与解码功能(测试的正弦波都为1KHZ, 采样率为44100), 后续版本改名为jla(SDK中对应的字母改名: lc3->jla, LC3->JLA)

9.19.1. 操作说明

  • app_config.h 文件中, 确保打开

    打开宏#define CONFIG_LC3_ENC_ENABLE

    打开宏#define CONFIG_LC3_DEC_ENABLE

  • audio_config.c 文件中, LC3的参数配置如下

const int  LC3_INT24bit_INOUT = 0;
//如果是1,则认为编码input的时候,读到的数据认为是int的类型,存放着24bit的数据。 解码output的时候也是int类型,存放24bit数据。
//如果为0,则 认为是short的。
const       int  LC3_DMS_VAL = 100;        //配置: 25ms 50ms 75ms 100ms 帧
const       int  LC3_DMS_FSINDEX = 5;    //采样率配置:8000:0, 16000:1 ,24000:2, 32000:3, 48000:4, 可配采样率:5 (0-4固定采样率,5为可变采样率)
const       int  LC3_QUALTIY_CONFIG = 1;            //可选1/2/3/4
const       int  LC3_PLC_EN = 1;   //置1做plc,置0的效果类似补静音包
const       int  LC3_HW_FFT = 0;    //置1使用硬件模块FFT, 置0使用软件模块FFT, AC791芯片有硬件模块, 推荐使用硬件FFT

9.19.2. 应用示例

  • apps/demo/demo_DevKitBoard/include/demo_config.h 打开 #define USE_LC3_TEST 宏使用,例程文件为 apps/common/example/audio/lc3/main.c

  • 该例子中,16bit的采样深度数据,以dac播放, 24bit的采样深度数据,以virtual输出(详情请查看 dec解码virtual输出 章节),写到 1.pcm 文件保存.

Note

  • 编码需要传入比特率bitrate, 否则打开编码器失败

9.19.3. 例子流程

  1. 如为24bit数据, 则先转换成32bit格式

  2. 创建cbuf

  3. 打开编码器, 使用virtual传入pcm数据

  4. 打开解码器, 获取编码后的lc3数据