KT24-1110_65E-HA-651B/include_lib/media/localtws_decoder.h
2024-11-10 18:44:17 +08:00

60 lines
1.8 KiB
C

#ifndef LOCALTWS_DECODER_H
#define LOCALTWS_DECODER_H
#include "media/includes.h"
enum {
LOCALTWS_DEC_STATUS_STOP = 0, // 解码停止
LOCALTWS_DEC_STATUS_PLAY, // 正在解码
};
struct localtws_decoder {
u32 ch_num : 4; // 声道数
u32 output_ch_num : 4; // 输出声道数
u32 output_ch_type : 4; // 输出声道类型
u32 status : 3; // 解码状态
u32 read_en : 1; // 开始解码
u32 tmp_pause : 1; // 被其他解码打断,临时暂停
u32 need_get_fmt : 1; // 需要获取音频信息
u32 sync_step : 3;
u32 preempt_state : 4;
u32 remain_flag : 1; // 输出剩余标记
u32 fade_out : 1; // 淡出
s16 fade_step; // 淡入淡出步进数
s16 fade_value; // 淡入淡出记录值
u32 fade_out_mute_points; // 淡出后静音点数
u32 wait_time;
int begin_delay_time;
void *sync;
u16 resume_timeout;
// u16 drop_samples;
u32 dec_type; // 解码类型
u16 sample_rate; // 采样率
u16 sbc_header_len; // sbc头部长度
u8 *tws_ptr; // tws数据
u32 tws_len; // tws数据长度
u32 tws_ulen; // tws数据使用长度
struct audio_decoder_task *decode_task; // 解码任务
enum audio_channel ch_type; // 输出类型
struct audio_decoder decoder; // 解码句柄
u8(*tws_master)(void);
};
int localtws_decoder_open(struct localtws_decoder *, struct audio_decoder_task *decode_task);
void localtws_decoder_close(struct localtws_decoder *dec);
void localtws_decoder_set_output_channel(struct localtws_decoder *dec);
void localtws_decoder_stream_sync_enable(struct localtws_decoder *dec,
void *sync,
int delay_time,
u8(*master)(void));
void localtws_decoder_resume_pre(void);
#endif /*A2DP_DECODER_H*/