165 lines
4.0 KiB
C
165 lines
4.0 KiB
C
#ifndef _XMEDIA_API_AUDIO_H_
|
|
#define _XMEDIA_API_AUDIO_H_
|
|
|
|
#include "xmedia_type.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#define MAX_AUDIO_FILE_PATH_LEN 256
|
|
#define MAX_AUDIO_FILE_PATH_NAME 256
|
|
#define MIN_AUDIO_FILE_SIZE 1 /* 1K */
|
|
|
|
typedef xmedia_u32 adec_chn;
|
|
typedef xmedia_u32 aenc_chn;
|
|
typedef xmedia_u32 ao_chn;
|
|
typedef xmedia_u32 ai_chn;
|
|
|
|
typedef enum {
|
|
AUDIO_SAMPLE_RATE_UNKNOWN = 0,
|
|
AUDIO_SAMPLE_RATE_8000 = 8000,
|
|
AUDIO_SAMPLE_RATE_12000 = 12000,
|
|
AUDIO_SAMPLE_RATE_11025 = 11025,
|
|
AUDIO_SAMPLE_RATE_16000 = 16000,
|
|
AUDIO_SAMPLE_RATE_22050 = 22050,
|
|
AUDIO_SAMPLE_RATE_24000 = 24000,
|
|
AUDIO_SAMPLE_RATE_32000 = 32000,
|
|
AUDIO_SAMPLE_RATE_44100 = 44100,
|
|
AUDIO_SAMPLE_RATE_48000 = 48000,
|
|
AUDIO_SAMPLE_RATE_64000 = 64000,
|
|
AUDIO_SAMPLE_RATE_96000 = 96000,
|
|
AUDIO_SAMPLE_RATE_MAX,
|
|
} audio_sample_rate;
|
|
|
|
typedef enum {
|
|
AUDIO_BIT_DEPTH_UNKNOWN = 0,
|
|
AUDIO_BIT_DEPTH_8 = 8,
|
|
AUDIO_BIT_DEPTH_16 = 16,
|
|
AUDIO_BIT_DEPTH_24 = 24,
|
|
AUDIO_BIT_DEPTH_32 = 32,
|
|
AUDIO_BIT_DEPTH_MAX,
|
|
} audio_bit_depth;
|
|
|
|
typedef enum {
|
|
AUDIO_CHANNEL_INVALID = -1,
|
|
AUDIO_CHANNEL_1 = 1,
|
|
AUDIO_CHANNEL_2 = 2,
|
|
AUDIO_CHANNEL_4 = 4,
|
|
AUDIO_CHANNEL_8 = 8,
|
|
AUDIO_CHANNEL_16 = 16,
|
|
AUDIO_CHANNEL_32 = 32,
|
|
AUDIO_CHANNEL_MAX,
|
|
} audio_channel;
|
|
|
|
typedef enum {
|
|
INPUT_MODE_SINGLE_ENDED = 1,
|
|
INPUT_MODE_DIFFERENTIAL,
|
|
INPUT_MODE_MAX,
|
|
} analog_input_mode;
|
|
|
|
typedef enum {
|
|
AUDIO_DEV_WORK_MODE_MONO = 0,
|
|
AUDIO_DEV_WORK_MODE_QUEUE = 1,
|
|
} audio_dev_work_mode;
|
|
|
|
typedef enum {
|
|
AUDIO_TRACK_MODE_STEREO = 0,
|
|
AUDIO_TRACK_MODE_DOUBLE_LEFT,
|
|
AUDIO_TRACK_MODE_DOUBLE_RIGHT,
|
|
AUDIO_TRACK_MODE_EXCHANGE,
|
|
AUDIO_TRACK_MODE_DOUBLE_MONO,
|
|
AUDIO_TRACK_MODE_ONLY_RIGHT,
|
|
AUDIO_TRACK_MODE_ONLY_LEFT,
|
|
AUDIO_TRACK_MODE_MUTED,
|
|
|
|
AUDIO_TRACK_MODE_MAX
|
|
} audio_track_mode;
|
|
|
|
typedef enum {
|
|
|
|
AUDIO_I2S_STD_MODE = 0,
|
|
AUDIO_I2S_PCM_MODE,
|
|
AUDIO_I2S_TDM_MODE,
|
|
AUDIO_I2S_TDMPCM_MODE,
|
|
AUDIO_I2S_MODE_MAX
|
|
} audio_i2s_mode;
|
|
|
|
typedef enum {
|
|
AUDIO_I2S_PCM_0_DELAY = 0, /* 0 bclk cycles delay */
|
|
AUDIO_I2S_PCM_1_DELAY = 1, /* 1 bclk cycles delay */
|
|
AUDIO_I2S_PCM_8_DELAY = 8, /* 8 bclk cycles delay */
|
|
AUDIO_I2S_PCM_16_DELAY = 16, /* 16 bclk cycles delay */
|
|
AUDIO_I2S_PCM_17_DELAY = 17, /* 17 bclk cycles delay */
|
|
AUDIO_I2S_PCM_24_DELAY = 24, /* 24 bclk cycles delay */
|
|
AUDIO_I2S_PCM_32_DELAY = 32, /* 32 bclk cycles delay */
|
|
AUDIO_I2S_PCM_DELAY_MAX
|
|
} audio_i2s_pcm_delay;
|
|
|
|
typedef enum {
|
|
AUDIO_I2S_BCLK_1_DIV = 1,
|
|
AUDIO_I2S_BCLK_2_DIV = 2,
|
|
AUDIO_I2S_BCLK_3_DIV = 3,
|
|
AUDIO_I2S_BCLK_4_DIV = 4,
|
|
AUDIO_I2S_BCLK_6_DIV = 6,
|
|
AUDIO_I2S_BCLK_8_DIV = 8,
|
|
AUDIO_I2S_BCLK_12_DIV = 12,
|
|
AUDIO_I2S_BCLK_24_DIV = 24,
|
|
AUDIO_I2S_BCLK_32_DIV = 32,
|
|
AUDIO_I2S_BCLK_48_DIV = 48,
|
|
AUDIO_I2S_BCLK_64_DIV = 64,
|
|
AUDIO_I2S_BCLK_128_DIV = 128,
|
|
AUDIO_I2S_BCLK_MAX
|
|
} audio_i2s_bclk_sel;
|
|
|
|
typedef enum {
|
|
AUDIO_I2S_MCLK_128_FS = 0, /* mclk 128*fs */
|
|
AUDIO_I2S_MCLK_256_FS, /* mclk 256*fs */
|
|
AUDIO_I2S_MCLK_384_FS, /* mclk 384*fs */
|
|
AUDIO_I2S_MCLK_512_FS, /* mclk 512*fs */
|
|
AUDIO_I2S_MCLK_768_FS, /* mclk 768*fs */
|
|
AUDIO_I2S_MCLK_1024_FS, /* mclk 1024*fs */
|
|
AUDIO_I2S_MCLK_MAX
|
|
} audio_i2s_mclk_sel;
|
|
|
|
typedef struct {
|
|
audio_channel channels;
|
|
audio_sample_rate sample_rate;
|
|
audio_bit_depth bit_depth;
|
|
xmedia_bool interleaved;
|
|
xmedia_u64 timestamp;
|
|
xmedia_u32 channel_mask;
|
|
xmedia_u32 index;
|
|
xmedia_u32 size;
|
|
xmedia_void* data;
|
|
} audio_frame;
|
|
|
|
typedef struct {
|
|
audio_frame org_frame;
|
|
audio_frame ec_frame;
|
|
} audio_ext_frame;
|
|
|
|
typedef struct {
|
|
xmedia_u32 len;
|
|
xmedia_u32 index;
|
|
xmedia_u64 timestamp;
|
|
xmedia_void* data;
|
|
} audio_stream;
|
|
|
|
typedef struct {
|
|
xmedia_char file_path[MAX_AUDIO_FILE_PATH_LEN];
|
|
xmedia_char file_name[MAX_AUDIO_FILE_PATH_NAME];
|
|
xmedia_u32 max_file_size;
|
|
} audio_dump;
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#endif
|
|
|