AC63_BT_SDK/cpu/br30/audio_dec/audio_dec_file.h
2025-02-18 15:40:42 +08:00

127 lines
3.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _AUDIO_DEC_FILE_H_
#define _AUDIO_DEC_FILE_H_
#include "asm/includes.h"
#include "media/includes.h"
#include "media/file_decoder.h"
#include "system/includes.h"
#include "media/audio_decoder.h"
#include "app_config.h"
#include "music/music_decrypt.h"
#include "music/music_id3.h"
#include "audio_dec_eff.h"
#define FILE_DEC_REPEAT_EN 0 // 无缝循环播放
enum {
FILE_DEC_STREAM_CLOSE = 0,
FILE_DEC_STREAM_OPEN,
};
struct file_dec_hdl {
//struct audio_stream *stream; // 音频流
struct file_decoder file_dec; // file解码句柄
struct audio_res_wait wait; // 资源等待句柄
#if TCFG_USER_TWS_ENABLE
struct file_decoder trans_dec; // 解码句柄
u8 *frame;
u16 frame_len;
u16 frame_remain_len;
u8 trans_dec_end;
u8 wait_tws_confirm;
u16 seqn;
u16 tx_seqn;
u32 wait_tws_timeout;
void *ts_handle;
void *syncts;
u32 pcm_num;
u32 mix_ch_event_params[3];
#endif
struct audio_mixer_ch mix_ch; // 叠加句柄
#if TCFG_EQ_ENABLE&&TCFG_MUSIC_MODE_EQ_ENABLE
struct dec_eq_drc *eq_drc;
#endif//TCFG_MUSIC_MODE_EQ_ENABLE
u8 remain;
struct audio_dec_breakpoint *dec_bp; // 断点
u32 id; // 唯一标识符,随机值
void *file; // 文件句柄
u32 pick_flag : 1; // 挑出数据帧发送如MP3等)。不是输出pcm后级不能接任何音效处理等
u32 pcm_enc_flag : 1; // pcm压缩成数据帧发送如WAV等
u32 read_err : 2; // 读数出错 0:no err 1:fat err, 2:disk err
u32 wait_add : 1; // 是否马上得到执行
#if TCFG_DEC_DECRYPT_ENABLE
CIPHER mply_cipher; // 解密播放
#endif
#if TCFG_DEC_ID3_V1_ENABLE
MP3_ID3_OBJ *p_mp3_id3_v1; // id3_v1信息
#endif
#if TCFG_DEC_ID3_V2_ENABLE
MP3_ID3_OBJ *p_mp3_id3_v2; // id3_v2信息
#endif
#if FILE_DEC_REPEAT_EN
u8 repeat_num; // 无缝循环次数
struct fixphase_repair_obj repair_buf; // 无缝循环句柄
#endif
struct audio_dec_breakpoint *bp; // 断点信息
void *evt_priv; // 事件回调私有参数
void (*evt_cb)(void *, int argc, int *argv); // 事件回调句柄
void (*stream_handler)(void *priv, int event, struct file_dec_hdl *); // 数据流设置回调
void *stream_priv; // 数据流设置回调私有句柄
};
enum {
FILE_FROM_LOCAL,
FILE_FROM_TWS,
};
struct file_decoder *file_dec_get_file_decoder_hdl(void);
#define file_dec_is_stop() file_decoder_is_stop(file_dec_get_file_decoder_hdl())
#define file_dec_is_play() file_decoder_is_play(file_dec_get_file_decoder_hdl())
#define file_dec_is_pause() file_decoder_is_pause(file_dec_get_file_decoder_hdl())
#define file_dec_pp() file_decoder_pp(file_dec_get_file_decoder_hdl())
#define file_dec_FF(x) file_decoder_FF(file_dec_get_file_decoder_hdl(),x)
#define file_dec_FR(x) file_decoder_FR(file_dec_get_file_decoder_hdl(),x)
#define file_dec_get_breakpoint(x) file_decoder_get_breakpoint(file_dec_get_file_decoder_hdl(),x)
#define file_dec_get_total_time() file_decoder_get_total_time(file_dec_get_file_decoder_hdl())
#define file_dec_get_cur_time() file_decoder_get_cur_time(file_dec_get_file_decoder_hdl())
#define file_dec_get_decoder_type() file_decoder_get_decoder_type(file_dec_get_file_decoder_hdl())
int file_dec_create(void *priv, void (*handler)(void *, int argc, int *argv));
int file_dec_open(void *file, struct audio_dec_breakpoint *bp);
void file_dec_close();
int file_dec_restart(int id);
int file_dec_push_restart(void);
int file_dec_get_status(void);
void file_dec_set_stream_set_hdl(struct file_dec_hdl *dec,
void (*stream_handler)(void *priv, int event, struct file_dec_hdl *),
void *stream_priv);
void *get_file_dec_hdl();
int tws_local_media_dec_open(u8 channel, u8 *arg);
void tws_local_media_dec_close();
int tws_local_media_dec_state();
void send_local_media_dec_open_cmd();
int file_dec_get_source();
#endif /*TCFG_APP_MUSIC_EN*/