Files
AC707N/SDK/interface/media/audio_src_base.h
T
2025-12-03 11:12:34 +08:00

83 lines
2.6 KiB
C

/*****************************************************************
>file name : audio_src_base.h
>create time : Wed 02 Mar 2022 11:12:07 AM CST
*****************************************************************/
#ifndef _AUDIO_SRC_BASE_H_
#define _AUDIO_SRC_BASE_H_
#include "typedef.h"
#define AUDIO_ONLY_RESAMPLE 1
#define AUDIO_SYNC_RESAMPLE 2
#define AUDIO_LOW_LATENCY_RESAMPLE 3
#define AUDIO_RESAMPLE_SYNC_OUTPUT 4
#define AUDIO_SRC_HIGH_PERFORMANCE 5
#define AUDIO_SAMPLE_FMT_16BIT 0
#define AUDIO_SAMPLE_FMT_24BIT 1
#define BIND_AUDSYNC 0x10
#define SET_RESAMPLE_TYPE(fmt, type) (((fmt) << 4) | (type))
#define RESAMPLE_TYPE_TO_FMT(a) (((a) >> 4) & 0xf)
#define RESAMPLE_TYPE(a) ((a) & 0xf)
#define INPUT_FRAME_BITS 18//20 -- 整数位减少可提高单精度浮点的运算精度
#define RESAMPLE_INPUT_BIT_RANGE ((1 << INPUT_FRAME_BITS) - 1)
#define RESAMPLE_INPUT_BIT_NUM (1 << INPUT_FRAME_BITS)
struct resample_frame {
u8 nch;
int offset;
int len;
int size;
void *data;
};
void *audio_src_base_open(u8 channel, int in_sample_rate, int out_sample_rate, u8 type);
int audio_src_base_set_output_handler(void *resample,
void *priv,
int (*handler)(void *priv, void *data, int len));
int audio_src_base_set_channel(void *resample, u8 channel);
int audio_src_base_set_in_buffer(void *resample, void *buf, int len);
int audio_src_base_set_input_buff(void *resample, void *buf, int len);
int audio_src_base_resample_config(void *resample, int in_rate, int out_rate);
int audio_src_base_write(void *resample, void *data, int len);
int audio_src_base_stop(void *resample);
int audio_src_base_run_scale(void *resample);
int audio_src_base_input_frames(void *resample);
u32 audio_src_base_out_frames(void *resample);
float audio_src_base_position(void *resample);
int audio_src_base_scale_output(void *resample, int in_sample_rate, int out_sample_rate, int frames);
int audio_src_base_bufferd_frames(void *resample);
int audio_src_base_set_silence(void *resample, u8 silence, int fade_time);
int audio_src_base_wait_irq_callback(void *resample, void *priv, void (*callback)(void *));
int audio_src_base_frame_resample(void *resample, struct resample_frame *in_frame, struct resample_frame *out_frame);
int audio_src_base_get_phase(void *resample);
void audio_src_base_close(void *resample);
int audio_src_base_filter_frames(void *resample);
u8 audio_src_base_get_hw_core_id(void *resample);
int audio_src_base_push_data_out(void *resample);
#endif