CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
宏定义 | 类型定义 | 函数 | 变量
audio_play_decoder.c 文件参考

播放器音频解码器框架 更多...

#include "audio_play_decoder.h"
#include "ci130x_system.h"
#include "ci_log.h"
#include "audio_play_os_port.h"
#include "audio_play_config.h"
#include "romlib_runtime.h"
#include "ci_flash_data_info.h"
#include "flacdecoder.h"
#include <stdlib.h>
#include "adpcmdec.h"
#include "adpcm.h"
#include "aacdec.h"
#include "parse_m4a_atom_containers.h"

宏定义

#define MP3_IN_SIZE   (576)
 
#define FLAC_MALLOC   malloc
 
#define FLAC_FREE   free
 
#define FLAC_IN_SIZE   (4000)
 
#define MS_WAV_IN_SIZE   (1152)
 
#define ADPCM_IN_SIZE   (576)
 
#define IMAADPCM_IN_SIZE   (1138)
 
#define PROMPT_MP3_IN_SIZE   (324)
 
#define PROMPT_FLAC_IN_SIZE   (2304)
 
#define AAC_IN_SIZE   (2*AAC_MAINBUF_SIZE)
 

类型定义

typedef int32_t(* decode_fun) (uint8_t *, uint32_t, short *, uint32_t *, uint32_t *, audio_format_info_t *)
 

函数

int32_t audio_play_mp3_init (void)
 解码器初始化 更多...
 
int32_t audio_play_mp3_destroy (void)
 mp3解码器销毁 更多...
 
int32_t audio_play_mp3_clear (void)
 mp3解码器复位 更多...
 
int32_t audio_play_mp3_decode (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 mp3帧解码 更多...
 
int32_t audio_play_flac_init (void)
 flac解码器初始化 更多...
 
int32_t audio_play_flac_destroy (void)
 flac解码器销毁 更多...
 
int32_t audio_play_flac_decode (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 FLAC帧解码 更多...
 
int32_t audio_play_flac_config (void *mode)
 配置解码器模式 更多...
 
int32_t audio_play_flac_clear (void)
 
int32_t audio_play_ms_wav_decode (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 MS WAV帧解码 更多...
 
int32_t audio_play_ms_wav_clear (void)
 ms_wav解码器复位 更多...
 
int32_t audio_play_adpcm_decode (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 adpcm帧解码(用于CI旧版adpcm) 更多...
 
int32_t audio_play_adpcm_decode2 (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 adpcm帧解码2(用于标准adpcm文件) 更多...
 
int32_t audio_play_prompt_config (void *mode)
 配置解码器模式 更多...
 
int32_t audio_play_prompt_clear (void)
 prompt解码器复位 更多...
 
int32_t audio_play_prompt_init (void)
 解码器初始化 更多...
 
int32_t audio_play_prompt_destroy (void)
 解码器销毁 更多...
 
int32_t audio_play_aac_init (void)
 aac解码器初始化 更多...
 
int32_t audio_play_aac_destroy (void)
 aac解码器销毁 更多...
 
int32_t audio_play_aac_decode (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 aac帧解码,用于adts流解码 更多...
 
int32_t audio_play_aac_decode_2 (uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
 aac帧解码2,用于aac源数据解码 更多...
 
int32_t audio_play_aac_config (void *mode)
 配置解码器模式 更多...
 
int32_t audio_play_aac_save (void)
 aac解码器现场保存 更多...
 
int32_t audio_play_aac_load (void)
 aac解码器现场恢复 更多...
 
int32_t audio_play_aac_clear (void)
 aac解码器复位 更多...
 

变量

static HMP3Decoder mp3_dec_handle
 
static MP3FrameInfo mp3FrameInfo
 
audio_play_decoder_ops_t mp3_decoder
 mp3解码器结构对象 更多...
 
FLACContextfc = NULL
 
audio_play_decoder_ops_t flac_decoder
 flac解码器结构对象 更多...
 
static uint32_t wav_nSamplesPerSec = 16000
 
audio_play_decoder_ops_t ms_wav_decoder
 MS WAV解码器结构对象 更多...
 
static uint32_t adpcmBlockAlign = 0
 
static uint32_t adpcm_head_size = 0
 
static uint32_t adpcm_nSamplesPerSec = 16000
 
audio_play_decoder_ops_t prompt_decoder
 adpcm解码器结构对象 更多...
 
static HAACDecoder aac_dec_handle
 
static AACFrameInfo aacFrameInfo
 
static m4a_file_info_t save_m4a_file_info
 
decode_fun save_aacdecode = NULL
 
audio_play_decoder_ops_t aac_decoder
 aac解码器结构对象 更多...
 

详细描述

播放器音频解码器框架

版本
1.0
日期
2019-04-08

宏定义说明

◆ AAC_IN_SIZE

#define AAC_IN_SIZE   (2*AAC_MAINBUF_SIZE)

◆ ADPCM_IN_SIZE

#define ADPCM_IN_SIZE   (576)

◆ FLAC_FREE

#define FLAC_FREE   free

◆ FLAC_IN_SIZE

#define FLAC_IN_SIZE   (4000)

◆ FLAC_MALLOC

#define FLAC_MALLOC   malloc

◆ IMAADPCM_IN_SIZE

#define IMAADPCM_IN_SIZE   (1138)

◆ MP3_IN_SIZE

#define MP3_IN_SIZE   (576)

◆ MS_WAV_IN_SIZE

#define MS_WAV_IN_SIZE   (1152)

◆ PROMPT_FLAC_IN_SIZE

#define PROMPT_FLAC_IN_SIZE   (2304)

◆ PROMPT_MP3_IN_SIZE

#define PROMPT_MP3_IN_SIZE   (324)

类型定义说明

◆ decode_fun

typedef int32_t(* decode_fun) (uint8_t *, uint32_t, short *, uint32_t *, uint32_t *, audio_format_info_t *)

函数说明

◆ audio_play_aac_clear()

int32_t audio_play_aac_clear ( void  )

aac解码器复位

返回值
RETURN_OK复位成功
RETURN_ERR复位失败

◆ audio_play_aac_config()

int32_t audio_play_aac_config ( void *  mode)

配置解码器模式

参数
mode模式参数
返回值
RETURN_OK配置正确
RETURN_ERR配置异常

◆ audio_play_aac_decode()

int32_t audio_play_aac_decode ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

aac帧解码,用于adts流解码

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_aac_decode_2()

int32_t audio_play_aac_decode_2 ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

aac帧解码2,用于aac源数据解码

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_aac_destroy()

int32_t audio_play_aac_destroy ( void  )

aac解码器销毁

返回值
RETURN_OK解码器销毁成功
RETURN_ERR解码器销毁失败

◆ audio_play_aac_init()

int32_t audio_play_aac_init ( void  )

aac解码器初始化

返回值
RETURN_OK初始化成功
RETURN_ERR初始化失败

◆ audio_play_aac_load()

int32_t audio_play_aac_load ( void  )

aac解码器现场恢复

返回值
RETURN_OK恢复成功
RETURN_ERR恢复失败

◆ audio_play_aac_save()

int32_t audio_play_aac_save ( void  )

aac解码器现场保存

返回值
RETURN_OK保存成功
RETURN_ERR保存失败

◆ audio_play_adpcm_decode()

int32_t audio_play_adpcm_decode ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

adpcm帧解码(用于CI旧版adpcm)

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_adpcm_decode2()

int32_t audio_play_adpcm_decode2 ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

adpcm帧解码2(用于标准adpcm文件)

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_flac_clear()

int32_t audio_play_flac_clear ( void  )

◆ audio_play_flac_config()

int32_t audio_play_flac_config ( void *  mode)

配置解码器模式

参数
mode模式参数
返回值
RETURN_OK配置正确
RETURN_ERR配置异常

◆ audio_play_flac_decode()

int32_t audio_play_flac_decode ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

FLAC帧解码

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_flac_destroy()

int32_t audio_play_flac_destroy ( void  )

flac解码器销毁

返回值
RETURN_OK解码器销毁成功
RETURN_ERR解码器销毁失败

◆ audio_play_flac_init()

int32_t audio_play_flac_init ( void  )

flac解码器初始化

返回值
RETURN_OK初始化成功
RETURN_ERR初始化失败

◆ audio_play_mp3_clear()

int32_t audio_play_mp3_clear ( void  )

mp3解码器复位

返回值
RETURN_OK复位成功
RETURN_ERR复位失败

◆ audio_play_mp3_decode()

int32_t audio_play_mp3_decode ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

mp3帧解码

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_mp3_destroy()

int32_t audio_play_mp3_destroy ( void  )

mp3解码器销毁

返回值
RETURN_OK销毁成功
RETURN_ERR销毁失败

◆ audio_play_mp3_init()

int32_t audio_play_mp3_init ( void  )

解码器初始化

返回值
RETURN_OK初始化成功
RETURN_ERR初始化失败

◆ audio_play_ms_wav_clear()

int32_t audio_play_ms_wav_clear ( void  )

ms_wav解码器复位

返回值
RETURN_OK复位成功
RETURN_ERR复位失败

◆ audio_play_ms_wav_decode()

int32_t audio_play_ms_wav_decode ( uint8_t *  input,
uint32_t  in_size,
short *  output,
uint32_t *  out_size,
uint32_t *  no_use_size,
audio_format_info_t audio_format_info 
)

MS WAV帧解码

参数
input输入帧地址
in_size输入长度
output输出帧地址
out_size输出帧大小
no_use_size未使用的数据大小
audio_format_info音频信息结构
返回值
RETURN_OK帧解码正确
RETURN_ERR帧解码异常

◆ audio_play_prompt_clear()

int32_t audio_play_prompt_clear ( void  )

prompt解码器复位

返回值
RETURN_OK复位成功
RETURN_ERR复位失败

◆ audio_play_prompt_config()

int32_t audio_play_prompt_config ( void *  mode)

配置解码器模式

参数
mode模式参数
返回值
RETURN_OK配置正确
RETURN_ERR配置异常

◆ audio_play_prompt_destroy()

int32_t audio_play_prompt_destroy ( void  )

解码器销毁

返回值
RETURN_OK销毁成功
RETURN_ERR销毁失败

◆ audio_play_prompt_init()

int32_t audio_play_prompt_init ( void  )

解码器初始化

返回值
RETURN_OK初始化成功
RETURN_ERR初始化失败

变量说明

◆ aac_dec_handle

HAACDecoder aac_dec_handle
static

◆ aac_decoder

初始值:
=
{
.decoder_name = "aac",
.data_in_size = (2*AAC_MAINBUF_SIZE) ,
.next_ops = NULL,
}
int32_t audio_play_aac_save(void)
aac解码器现场保存
Definition: audio_play_decoder.c:1115
int32_t audio_play_aac_init(void)
aac解码器初始化
Definition: audio_play_decoder.c:933
int32_t audio_play_aac_load(void)
aac解码器现场恢复
Definition: audio_play_decoder.c:1128
#define NULL
Definition: SEGGER_RTT.c:160
int32_t audio_play_aac_destroy(void)
aac解码器销毁
Definition: audio_play_decoder.c:953
#define AAC_MAINBUF_SIZE
Definition: aacdec.h:72
int32_t audio_play_aac_clear(void)
aac解码器复位
Definition: audio_play_decoder.c:1153
int32_t audio_play_aac_config(void *mode)
配置解码器模式
Definition: audio_play_decoder.c:1091
int32_t audio_play_aac_decode(uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
aac帧解码,用于adts流解码
Definition: audio_play_decoder.c:977

aac解码器结构对象

◆ aacFrameInfo

AACFrameInfo aacFrameInfo
static

◆ adpcm_head_size

uint32_t adpcm_head_size = 0
static

◆ adpcm_nSamplesPerSec

uint32_t adpcm_nSamplesPerSec = 16000
static

◆ adpcmBlockAlign

uint32_t adpcmBlockAlign = 0
static

◆ fc

◆ flac_decoder

初始值:
=
{
.decoder_name = "flac",
.save = NULL,
.load = NULL,
.data_in_size = (4000) ,
.next_ops = NULL,
}
int32_t audio_play_flac_config(void *mode)
配置解码器模式
Definition: audio_play_decoder.c:510
int32_t audio_play_flac_init(void)
flac解码器初始化
Definition: audio_play_decoder.c:406
#define NULL
Definition: SEGGER_RTT.c:160
int32_t audio_play_flac_decode(uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
FLAC帧解码
Definition: audio_play_decoder.c:451
int32_t audio_play_flac_destroy(void)
flac解码器销毁
Definition: audio_play_decoder.c:428
int32_t audio_play_flac_clear(void)
Definition: audio_play_decoder.c:537

flac解码器结构对象

◆ mp3_dec_handle

HMP3Decoder mp3_dec_handle
static

◆ mp3_decoder

初始值:
=
{
.decoder_name = "mp3",
.load = NULL,
.save = NULL,
.config = NULL,
.data_in_size = (576) ,
.next_ops = NULL,
}
int32_t audio_play_mp3_destroy(void)
mp3解码器销毁
Definition: audio_play_decoder.c:170
int32_t audio_play_mp3_clear(void)
mp3解码器复位
Definition: audio_play_decoder.c:219
#define NULL
Definition: SEGGER_RTT.c:160
int32_t audio_play_mp3_decode(uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
mp3帧解码
Definition: audio_play_decoder.c:266
int32_t audio_play_mp3_init(void)
解码器初始化
Definition: audio_play_decoder.c:50

mp3解码器结构对象

◆ mp3FrameInfo

MP3FrameInfo mp3FrameInfo
static

◆ ms_wav_decoder

audio_play_decoder_ops_t ms_wav_decoder
初始值:
=
{
.decoder_name = "ms_wav",
.init = NULL,
.save = NULL,
.load = NULL,
.config = NULL,
.destroy = NULL,
.data_in_size = (1152) ,
.next_ops = NULL,
}
#define NULL
Definition: SEGGER_RTT.c:160
int32_t audio_play_ms_wav_clear(void)
ms_wav解码器复位
Definition: audio_play_decoder.c:624
int32_t audio_play_ms_wav_decode(uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
MS WAV帧解码
Definition: audio_play_decoder.c:589

MS WAV解码器结构对象

◆ prompt_decoder

audio_play_decoder_ops_t prompt_decoder
初始值:
=
{
.decoder_name = "prompt",
.save = NULL,
.load = NULL,
.data_in_size = (576) ,
.next_ops = NULL,
}
#define NULL
Definition: SEGGER_RTT.c:160
int32_t audio_play_prompt_destroy(void)
解码器销毁
Definition: audio_play_decoder.c:871
int32_t audio_play_prompt_clear(void)
prompt解码器复位
Definition: audio_play_decoder.c:832
int32_t audio_play_adpcm_decode(uint8_t *input, uint32_t in_size, short *output, uint32_t *out_size, uint32_t *no_use_size, audio_format_info_t *audio_format_info)
adpcm帧解码(用于CI旧版adpcm)
Definition: audio_play_decoder.c:674
int32_t audio_play_prompt_init(void)
解码器初始化
Definition: audio_play_decoder.c:845
int32_t audio_play_prompt_config(void *mode)
配置解码器模式
Definition: audio_play_decoder.c:778

adpcm解码器结构对象

◆ save_aacdecode

decode_fun save_aacdecode = NULL

◆ save_m4a_file_info

m4a_file_info_t save_m4a_file_info
static

◆ wav_nSamplesPerSec

uint32_t wav_nSamplesPerSec = 16000
static