72 lines
2.6 KiB
C
72 lines
2.6 KiB
C
#ifndef FILE_DECODER_H
|
|
#define FILE_DECODER_H
|
|
|
|
|
|
#include "media/includes.h"
|
|
|
|
enum {
|
|
FILE_DEC_STATUS_STOP = 0, // 解码停止
|
|
FILE_DEC_STATUS_PLAY, // 正在解码
|
|
FILE_DEC_STATUS_PAUSE, // 解码暂停
|
|
FILE_DEC_STATUS_WAIT_PAUSE,
|
|
FILE_DEC_STATUS_WAIT_PLAY,
|
|
FILE_DEC_STATUS_PAUSE_SUCCESS,
|
|
};
|
|
|
|
|
|
struct file_decoder {
|
|
u8 ch_num; // 声道数
|
|
u8 output_ch_num; // 输出声道数
|
|
u8 status; // 解码状态
|
|
u8 dec_no_out_sound; // 解码不直接输出声音(用于TWS转发)
|
|
u8 tmp_pause; // 被其他解码打断,临时暂停
|
|
u32 wait_pause;
|
|
u8 remain;
|
|
u16 resume_tmr_id;
|
|
u16 sample_rate;
|
|
u32 coding_type;
|
|
u32 dec_total_time; // 总共能播放多长时间
|
|
u32 dec_cur_time; // 当前播放时间
|
|
u32 once_out_cnt; // 解码一次的输出统计
|
|
enum audio_channel ch_type; // 输出类型
|
|
struct audio_decoder decoder; // 解码句柄
|
|
int (*output_handler)(struct file_decoder *dec, s16 *data, int len);
|
|
void *tws_sync;
|
|
s16 fade_step;
|
|
s16 fade_value;
|
|
};
|
|
|
|
int file_decoder_open(struct file_decoder *dec,
|
|
const struct audio_dec_input *input,
|
|
struct audio_decoder_task *decode_task,
|
|
struct audio_dec_breakpoint *bp,
|
|
u8 pick);
|
|
|
|
int frame_decoder_open(struct file_decoder *dec,
|
|
const struct audio_dec_input *input,
|
|
struct audio_decoder_task *decode_task);
|
|
|
|
void file_decoder_close(struct file_decoder *dec);
|
|
|
|
void file_decoder_set_output_channel(struct file_decoder *dec);
|
|
|
|
void file_decoder_set_event_handler(struct file_decoder *dec,
|
|
void (*handler)(struct audio_decoder *, int, int *), u32 maigc);
|
|
|
|
bool file_decoder_is_stop(struct file_decoder *file_dec);
|
|
bool file_decoder_is_play(struct file_decoder *file_dec);
|
|
bool file_decoder_is_pause(struct file_decoder *file_dec);
|
|
int file_decoder_pp(struct file_decoder *file_dec);
|
|
int file_decoder_FF(struct file_decoder *file_dec, int step);
|
|
int file_decoder_FR(struct file_decoder *file_dec, int step);
|
|
int file_decoder_get_breakpoint(struct file_decoder *file_dec, struct audio_dec_breakpoint *bp);
|
|
int file_decoder_get_total_time(struct file_decoder *file_dec);
|
|
int file_decoder_get_cur_time(struct file_decoder *file_dec);
|
|
int file_decoder_get_decoder_type(struct file_decoder *file_dec);
|
|
void file_decoder_set_tws_sync_enable(struct file_decoder *dec, void *sync);
|
|
void file_decoder_mark_tws_sync_data(struct file_decoder *dec, u16 seqn);
|
|
void file_decoder_tws_sync_restart(struct file_decoder *dec);
|
|
|
|
#endif /*FILE_DECODER_H*/
|
|
|