100 lines
2.9 KiB
C
100 lines
2.9 KiB
C
|
|
#ifndef _AUDIO_DEC_H_
|
|
#define _AUDIO_DEC_H_
|
|
|
|
#include "asm/includes.h"
|
|
#include "media/includes.h"
|
|
#include "system/includes.h"
|
|
#include "asm/audio_src.h"
|
|
#include "audio_digital_vol.h"
|
|
/*#include "application/audio_eq_drc_apply.h"*/
|
|
|
|
|
|
#ifndef RB16
|
|
#define RB16(b) (u16)(((u8 *)b)[0] << 8 | (((u8 *)b))[1])
|
|
#endif
|
|
|
|
extern struct audio_decoder_task decode_task;
|
|
extern struct audio_mixer mixer;
|
|
extern struct audio_mixer recorder_mixer;
|
|
|
|
u32 audio_output_rate(int input_rate);
|
|
u32 audio_output_channel_num(void);
|
|
int audio_output_set_start_volume(u8 state);
|
|
|
|
int audio_output_start(u32 sample_rate, u8 reset_rate);
|
|
void audio_output_stop(void);
|
|
|
|
struct audio_src_handle *audio_hw_resample_open(void *priv, int (*output_handler)(void *, void *, int),
|
|
u8 channel, u16 input_sample_rate, u16 output_sample_rate);
|
|
void audio_hw_resample_close(struct audio_src_handle *hdl);
|
|
|
|
void audio_resume_all_decoder(void);
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
void audio_sbc_enc_inbuf_resume(void);
|
|
|
|
int audio_dec_init();
|
|
|
|
void set_source_sample_rate(u16 sample_rate);
|
|
u16 get_source_sample_rate();
|
|
#if USER_DIGITAL_VOLUME_ADJUST_ENABLE != 0
|
|
void a2dp_user_digital_volume_set(u8 vol);
|
|
u8 a2dp_user_audio_digital_volume_get();
|
|
void a2dp_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
|
|
void linein_user_digital_volume_set(u8 vol);
|
|
u8 linein_user_audio_digital_volume_get();
|
|
void linein_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
|
|
void fm_user_digital_volume_set(u8 vol);
|
|
u8 fm_user_audio_digital_volume_get();
|
|
void fm_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
|
|
void file_user_digital_volume_set(u8 vol);
|
|
u8 file_user_audio_digital_volume_get();
|
|
void file_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
|
|
void pc_user_digital_volume_set(u8 vol);
|
|
u8 pc_user_audio_digital_volume_get();
|
|
void pc_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
|
|
void spdif_user_digital_volume_set(u8 vol);
|
|
u8 spdif_user_audio_digital_volume_get();
|
|
void spdif_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
|
|
|
|
void reverb_user_digital_volume_set(u8 vol);
|
|
u8 reverb_user_audio_digital_volume_get();
|
|
void reverb_user_digital_volume_tab_set(u16 *user_vol_tab, u8 user_vol_max);
|
|
#endif
|
|
void reverb_set_dodge_threshold(int threshold_in, int threshold_out, u8 fade_tar, u8 dodge_en);
|
|
|
|
|
|
void a2dp_dec_output_set_start_bt_time(u32 bt_tmr);
|
|
/*void mix_out_high_bass(u32 cmd, struct high_bass *hb);
|
|
void mix_out_high_bass_dis(u32 cmd, u8 dis);*/
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
static inline void audio_pcm_mono_to_dual(s16 *dual_pcm, s16 *mono_pcm, int points)
|
|
{
|
|
s16 *mono = mono_pcm;
|
|
int i = 0;
|
|
u8 j = 0;
|
|
|
|
for (i = 0; i < points; i++, mono++) {
|
|
*dual_pcm++ = *mono;
|
|
*dual_pcm++ = *mono;
|
|
}
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
#include "audio_dec_file.h"
|
|
|
|
|
|
#endif
|
|
|