Files
banban/ql-kernel/threadx/common/include/ql_audio.h
T

139 lines
5.5 KiB
C

/*================================================================
Copyright (c) 2022, Quectel Wireless Solutions Co., Ltd. All rights reserved.
Quectel Wireless Solutions Proprietary and Confidential.
=================================================================*/
/**
******************************************************************************
* @file ql_audio.h
* @author august.yang
* @version V1.0.0
* @date 2022/04/09
* @brief Audio interface header file creation
******************************************************************************
*/
#ifndef _QL_AUDIO_H_
#define _QL_AUDIO_H_
#include "acm_audio_track.h"
#include "acm_audio_record.h"
#include "quec_audio.h"
typedef enum
{
QL_AUDIOHAL_DTMF_0 = 0,
QL_AUDIOHAL_DTMF_1,
QL_AUDIOHAL_DTMF_2,
QL_AUDIOHAL_DTMF_3,
QL_AUDIOHAL_DTMF_4,
QL_AUDIOHAL_DTMF_5,
QL_AUDIOHAL_DTMF_6,
QL_AUDIOHAL_DTMF_7,
QL_AUDIOHAL_DTMF_8,
QL_AUDIOHAL_DTMF_9,
QL_AUDIOHAL_DTMF_A,
QL_AUDIOHAL_DTMF_B,
QL_AUDIOHAL_DTMF_C,
QL_AUDIOHAL_DTMF_D,
QL_AUDIOHAL_DTMF_S, //* key
QL_AUDIOHAL_DTMF_P, //# key
QL_AUDIOHAL_COMFORT_425,
QL_AUDIOHAL_COMFORT_950,
QL_AUDIOHAL_COMFORT_1400,
QL_AUDIOHAL_COMFORT_1800,
} QL_AUDIOHAL_TONE_TYPE;
typedef enum
{
QL_AUDIOHAL_SPK_MUTE = 0,
QL_AUDIOHAL_SPK_VOL_1,
QL_AUDIOHAL_SPK_VOL_2,
QL_AUDIOHAL_SPK_VOL_3,
QL_AUDIOHAL_SPK_VOL_4,
QL_AUDIOHAL_SPK_VOL_5,
QL_AUDIOHAL_SPK_VOL_6,
QL_AUDIOHAL_SPK_VOL_7,
QL_AUDIOHAL_SPK_VOL_8,
QL_AUDIOHAL_SPK_VOL_9,
QL_AUDIOHAL_SPK_VOL_10,
QL_AUDIOHAL_SPK_VOL_11, // 11
QL_AUDIOHAL_SPK_VOL_QTY // 12
} QL_AUDIOHAL_SPK_LEVEL;
typedef enum
{
PCM_FS_32,
PCM_FS_64,
PCM_FS_128,
PCM_FS_256,
PCM_FS_512,
PCM_FS_1024,
PCM_FS_2048,
PCM_FS_MAX,
}ql_pcm_bclk;
typedef enum
{
PCM_CODEC_SAMPLE_8000 = 8000,
PCM_CODEC_SAMPLE_16000 = 16000,
PCM_CODEC_SAMPLE_32000 = 32000,
PCM_CODEC_SAMPLE_48000 = 48000,
}ql_pcm_codec_sample;
typedef void *QL_PCM_HANDLE ;
typedef struct {
unsigned int channels;
unsigned int samplerate;
unsigned int periodcnt; // 20ms buffersize/per period, value:2~8
audio_track_callback play_cb;
audio_record_callback record_cb;
} QL_PCM_CONFIG;
audio_track_handle ql_audio_track_open(unsigned int rate, unsigned int channels, int64_t option, audio_track_callback event_cb);
int ql_audio_track_write(audio_track_handle handle, uint8_t* data, unsigned int size);
int ql_audio_track_close(audio_track_handle handle,int force);
int ql_audio_track_ctrl(audio_track_handle handle, acm_audio_track_control_t ctrl_type, int ctrl_value);
audio_record_handle ql_audio_record_open(unsigned int rate, unsigned int channels, int64_t option, audio_record_callback event_cb);
int ql_audio_record_read(audio_record_handle handle, uint8_t*data, unsigned int* count);
int ql_audio_record_close(audio_record_handle handle,int force);
int ql_audio_record_ctrl(audio_record_handle handle, acm_audio_record_control_t ctrl_type, int ctrl_value);
int ql_wav_play(const char* file_name, struct audio_track_config* track_config, audio_track_handle* handle);
int ql_wav_play_stop(audio_track_handle handle,char force);
int ql_get_audio_state(void);
void ql_codec_choose(codec_choose_state codec_choose, quec_codecpcm_config* pcm_config);
void ql_set_audio_path_receiver(void);
void ql_set_volume(QL_AUDIOHAL_SPK_LEVEL vol);
int ql_play_mp3(char *file_name,Mp3PlaybackHandle* handle,Mp3PlayConfigInfo* mp3_configInfo);
int ql_play_mp3_stream_buffer(Mp3PlaybackHandle handle,unsigned char *mp3_buff, int mp3_size);
int ql_stop_mp3_play(Mp3PlaybackHandle handle,int drain);
int ql_mp3_get_pcm_handle(Mp3PlaybackHandle handle, unsigned int* pcm_handle);
int ql_get_volume(void);
void ql_bind_speakerpa_cb(cb_on_speakerpa cb);
int ql_set_dtmf_detect(DTMFDetectionHandler_t cb, int onoff);
int ql_aud_dtmf_play(QL_AUDIOHAL_TONE_TYPE dtmf, int onoff);
void ql_set_dtmf_volume(int vo);
int ql_aud_tone_play(int f1, int f2, int onoff);
void ql_set_audio_path_speaker(void);
void ql_set_audio_path_earphone(void);
void ql_set_txdspgain(signed char gain);
signed char ql_get_txdspgain(void);
void ql_set_txcodecgain(short gain);
short ql_get_txcodecgain(void);
int ql_set_dsp_gain_table(unsigned int profile_id, signed short *gain);
int ql_set_txcodec_gain_table(unsigned int profile_id, unsigned int PGA_Stage1, unsigned int PGA_Stage2, unsigned int diggain);
int ql_set_rxcodec_gain_table(unsigned int profile_id, signed int level, unsigned int data1, unsigned int data2, unsigned int data3, unsigned int data4, unsigned int data5);
int ql_set_eqcoeff_table(unsigned int profile_id, signed int tx_rx, unsigned int rate, signed short * data);
int ql_set_mediave_coeff_table(ACMCP_MediaVEarametersT *AudioMediaVETable);
int ql_play_amr(char *file_name,AmrPlaybackHandle* handle,AmrPlaybackConfigInfo* amr_configInfo);
int ql_play_amr_stream_buffer(AmrPlaybackHandle handle,unsigned char *amr_buff, int amr_size);
int ql_stop_amr_play(AmrPlaybackHandle handle,int drain);
int ql_amr_get_pcm_handle(AmrPlaybackHandle handle, unsigned int* track_handle);
int ql_record_amr(char *file_name,AmrEncodeHandle* handle,AmrEncConfigInfo* amr_configInfo);
int ql_record_amr_stop(AmrEncodeHandle handle);
void ql_set_dtmf_volume2(int vo);
void ql_audio_pipeline_config(unsigned int rate, unsigned int channel);
int ql_audio_track_pipeline_read(unsigned char * buf, unsigned int * size);
void ql_set_audio_ouput_type(char mode);
char ql_get_audio_ouput_type(void);
#endif