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

135 lines
3.5 KiB
C

/*================================================================
Copyright (c) 2022, Quectel Wireless Solutions Co., Ltd. All rights reserved.
Quectel Wireless Solutions Proprietary and Confidential.
=================================================================*/
#ifndef _QL_AUDIO_OLD_API_H_
#define _QL_AUDIO_OLD_API_H_
#include "ql_rtos.h"
typedef struct ql_pcm_hadle
{
unsigned int handle;
char record_or_play;
ql_flag_t pcm_stream_flag;
}ql_pcm_hadle_t;
typedef ql_pcm_hadle_t * PCM_HANDLE_T ;
typedef struct {
unsigned int channels;
unsigned int samplerate;
unsigned int periodcnt; // 20ms buffersize/per period, value:2~8
} QL_PCM_CONFIG_T;
typedef struct aud_input_para{
int channels;
int rate;
int format;
int hsize;
int type;
int file_size;
int fmt_size;
}aud_input_para_t;
struct riff_chunk{
unsigned int riff;
unsigned int file_size;
unsigned int wave;
};
struct format_chunk{
unsigned int format;
unsigned int format_size;
unsigned short aud_fmt;
unsigned short channel;
unsigned int sample;
unsigned int bytes;
unsigned short block_align;
unsigned short bits_sample;
unsigned short others;
};
typedef enum{
QUEC_PCM_FORMAT_S8 = 0,
QUEC_PCM_FORMAT_S16_LE,
QUEC_PCM_FORMAT_S24_LE,
QUEC_PCM_FORMAT_S32_LE,
}QUEC_PCM_FMT_T;
typedef enum{
AUD_STREAM_FORMAT_MP3 = 0,
AUD_STREAM_FORMAT_AMR = 1,
AUD_STREAM_FORMAT_PCM = 2,
AUD_STREAM_FORMAT_AMRNB,
AUD_STREAM_FORMAT_AMRWB,
AUD_STREAM_FORMAT_END
}aud_stream_format;
struct data_chunk{
unsigned int data;
unsigned int data_size;
};
typedef enum
{
AUD_PLAYER_ERROR = -1,
AUD_PLAYER_START = 0,
AUD_PLAYER_PAUSE,
AUD_PLAYER_RECOVER,
AUD_PLAYER_PLAYING,
AUD_PLAYER_NODATA,
AUD_PLAYER_LESSDATA,
AUD_PLAYER_MOREDATA,
AUD_PLAYER_FINISHED,
}enum_aud_player_state;
typedef enum
{
MR475 = 0,/* 4.75 kbps */
MR515, /* 5.15 kbps */
MR59, /* 5.90 kbps */
MR67, /* 6.70 kbps */
MR74, /* 7.40 kbps */
MR795, /* 7.95 kbps */
MR102, /* 10.2 kbps */
MR122, /* 12.2 kbps */
MRDTX, /* DTX */
N_MODES /* Not Used */
}QL_AMR_MODE;
typedef enum
{
AMR_TX_WMF = 0,
AMR_TX_IF2,
AMR_TX_ETS,
}QL_AMR_FORMAT;
typedef void(*cb_on_player)(char *p_data, int len, enum_aud_player_state state);
int ql_audio_play_init(cb_on_player aud_cb);
int ql_play_file_start(char *file_name);
int ql_play_file_stop(void);
int ql_wav_file_play(char *file_name);
void ql_wav_file_stop(void);
int ql_mp3_file_play(char *file_name);
void ql_mp3_file_stop(void);
int ql_amr_file_play(char *file_name);
void ql_amr_file_stop(void);
PCM_HANDLE_T ql_pcm_open(QL_PCM_CONFIG_T *config, unsigned int flags);
int ql_pcm_read(PCM_HANDLE_T handle, void *data, unsigned int count);
int ql_pcm_write(PCM_HANDLE_T handle, void *data, unsigned int count);
int ql_pcm_close(PCM_HANDLE_T handle) ;
int ql_pcm_play_init(cb_on_player play_cb);
int ql_pcm_play(int hdl, unsigned char *buffer, int size );
int ql_pcm_play_stop(int hdl);
int ql_pcm_play_deinit(int hdl);
int ql_amr_stream_write(void *data, unsigned int count);
int ql_amr_stream_close(void);
int ql_amrnbenc_do(unsigned char *input_buff, unsigned char *output_buff);
int ql_amrnbenc_init(QL_AMR_MODE mode, QL_AMR_FORMAT format);
int ql_amrnbenc_deinit(void);
#endif