TuyaOS
tkl_audio.h
浏览该文件的文档.
1
11#ifndef __TKL_AUDIO_H__
12#define __TKL_AUDIO_H__
13
14#include "tuya_cloud_types.h"
15#include "tkl_media.h"
16
17#ifdef __cplusplus
18 extern "C" {
19#endif
20
21typedef enum
22{
23 TKL_AUDIO_DATABITS_8 = 8,
24 TKL_AUDIO_DATABITS_16 = 16,
25 TKL_AUDIO_DATABITS_MAX = 0xFF
26}TKL_AUDIO_DATABITS_E;
27
28typedef enum
29{
30 TKL_AUDIO_CHANNEL_MONO = 1,
31 TKL_AUDIO_CHANNEL_STEREO,
32 TKL_AUDIO_CHANNEL_TDM3CHS,
33 TKL_AUDIO_CHANNEL_TDM4CHS,
34 TKL_AUDIO_CHANNEL_TDM5CHS,
35 TKL_AUDIO_CHANNEL_TDM6CHS,
36 TKL_AUDIO_CHANNEL_TDM7CHS,
37 TKL_AUDIO_CHANNEL_TDM8CHS
38}TKL_AUDIO_CHANNEL_E;
39
40typedef enum
41{
42 TKL_AUDIO_SAMPLE_8K = 8000,
43 TKL_AUDIO_SAMPLE_11K = 11000,
44 TKL_AUDIO_SAMPLE_12K = 12000,
45 TKL_AUDIO_SAMPLE_16K = 16000,
46 TKL_AUDIO_SAMPLE_22K = 22000,
47 TKL_AUDIO_SAMPLE_24K = 24000,
48 TKL_AUDIO_SAMPLE_32K = 32000,
49 TKL_AUDIO_SAMPLE_44K = 44000,
50 TKL_AUDIO_SAMPLE_48K = 48000,
51 TKL_AUDIO_SAMPLE_MAX = 0xFFFFFFFF
52}TKL_AUDIO_SAMPLE_E;
53
54typedef enum
55{
56 TKL_AI_0 = 0,
57 TKL_AI_1,
58 TKL_AI_2,
59 TKL_AI_3,
60 TKL_AI_MAX,
61}TKL_AI_CHN_E; // audio input channel
62
63typedef enum
64{
65 TKL_AO_0 = 0,
66 TKL_AO_1,
67 TKL_AO_2,
68 TKL_AO_3,
69 TKL_AO_MAX,
70}TKL_AO_CHN_E; // audio output channel
71
72typedef struct
73{
74 BYTE_T platform_dai_type; // 0--IIS类型的AUDIO 1--DAC类型的AUDIO
75 BYTE_T platform_dai_port; // 选择哪个DAC ADC 或者 IIS
76 BYTE_T platform_dai_left_subport; // platform_dai_type == 1时,选择哪个DAC,ADC Chanel 作为左声道 0xff无效
77 BYTE_T platform_dai_right_subport; // platform_dai_type == 1时 选择哪个DAC,ADC Chanel 作为右声道 0xff无效
78 BYTE_T codec_i2c; // platform_dai_type == 0时 codec使用哪个I2C 0xff无效
79 BYTE_T codec_i2c_addr; // platform_dai_type == 0时 codec的I2C地址 0xff无效
81
82typedef struct
83{
84 UINT_T enable; // 1,enable,0,disable
85 UINT_T card; // audio card num
86 TKL_AI_CHN_E ai_chn; // audio input channel
87 TKL_AUDIO_SAMPLE_E sample; // sample
88 TKL_AUDIO_DATABITS_E datebits; // datebit
89 TKL_AUDIO_CHANNEL_E channel; // channel num
90 TKL_MEDIA_CODEC_TYPE_E codectype; // codec type
91 INT32_T is_softcodec; // 1, soft encode,0, hardware encode
92 UINT_T fps; // frame per second,suggest 25
93 INT32_T mic_volume; // mic volume,[0,100]
94 INT32_T spk_volume; // spk volume,[0,100]
95 INT32_T spk_volume_offset; // spk volume offset, for adapting different speakers,The default value is 0,[0,100]
96 INT32_T spk_gpio; // spk amplifier pin number, <0, no amplifier
97 INT32_T spk_gpio_polarity; // pin polarity, 0 high enable, 1 low enable
98 void * padta;
99}TKL_AUDIO_CONFIG_T; // audio config
100
101typedef struct
102{
103 TKL_MEDIA_FRAME_TYPE_E type; // frame type
104 CHAR_T *pbuf; // buffer
105 UINT_T buf_size; // buffer size
106 UINT_T used_size; // used buffer
107 UINT64_T pts; // sdk pts
108 UINT64_T timestamp; // system utc time,unit: ms
109 TKL_MEDIA_CODEC_TYPE_E codectype; // codec type
110 TKL_AUDIO_SAMPLE_E sample; // sample
111 TKL_AUDIO_DATABITS_E datebits; // date bit
112 TKL_AUDIO_CHANNEL_E channel; // channel num
113 UINT_T seq; // frame sequence number
114}TKL_AUDIO_FRAME_T; // audio frame
115
116typedef struct
117{
118 INT32_T pcm_db; // DB value
119} TKL_AUDIO_DETECT_DB_RESULT_T; // DB result
120
129OPERATE_RET tkl_ai_init(TKL_AUDIO_CONFIG_T *pconfig, INT32_T count);
130
139OPERATE_RET tkl_ai_start(INT32_T card, TKL_AI_CHN_E chn);
140
150OPERATE_RET tkl_ai_set_vol(INT32_T card, TKL_AI_CHN_E chn, INT32_T vol);
151
161OPERATE_RET tkl_ai_get_frame(INT32_T card, TKL_AI_CHN_E chn, TKL_AUDIO_FRAME_T *pframe);
162
171OPERATE_RET tkl_ai_stop(INT32_T card, TKL_AI_CHN_E chn);
172
178OPERATE_RET tkl_ai_uninit(VOID);
179
188OPERATE_RET tkl_ao_init(TKL_AUDIO_CONFIG_T *pconfig, INT32_T count, VOID **handle);
189
199OPERATE_RET tkl_ao_start(INT32_T card, TKL_AO_CHN_E chn, VOID *handle);
200
210OPERATE_RET tkl_ao_set_vol(INT32_T card, TKL_AO_CHN_E chn, VOID *handle, INT32_T vol);
211
221OPERATE_RET tkl_ao_get_vol(INT32_T card, TKL_AO_CHN_E chn, VOID *handle, INT32_T *vol);
222
233OPERATE_RET tkl_ao_put_frame(INT32_T card, TKL_AO_CHN_E chn, VOID *handle, TKL_AUDIO_FRAME_T *pframe);
234
244OPERATE_RET tkl_ao_stop(INT32_T card, TKL_AO_CHN_E chn, VOID *handle);
245
251OPERATE_RET tkl_ao_uninit(VOID *handle);
252
261OPERATE_RET tkl_ai_detect_db_start(INT32_T card);
262
270OPERATE_RET tkl_ai_detect_db_stop(INT32_T card);
271
281
282#ifdef __cplusplus
283}
284#endif
285
286#endif
Definition: tkl_audio.h:83
Definition: tkl_audio.h:117
audio frame
Definition: tkl_cellular_player.h:65
Definition: tkl_audio.h:73
Definition: pbuf.h:186
OPERATE_RET tkl_ai_set_vol(INT32_T card, TKL_AI_CHN_E chn, INT32_T vol)
ai set mic volume
OPERATE_RET tkl_ai_stop(INT32_T card, TKL_AI_CHN_E chn)
ai stop
OPERATE_RET tkl_ai_detect_db_start(INT32_T card)
audio input detect start
OPERATE_RET tkl_ai_init(TKL_AUDIO_CONFIG_T *pconfig, INT32_T count)
ai init
OPERATE_RET tkl_ao_init(TKL_AUDIO_CONFIG_T *pconfig, INT32_T count, VOID **handle)
ao init
OPERATE_RET tkl_ao_set_vol(INT32_T card, TKL_AO_CHN_E chn, VOID *handle, INT32_T vol)
ao set volume
OPERATE_RET tkl_ao_get_vol(INT32_T card, TKL_AO_CHN_E chn, VOID *handle, INT32_T *vol)
ao get volume
OPERATE_RET tkl_ai_start(INT32_T card, TKL_AI_CHN_E chn)
ai start
OPERATE_RET tkl_ai_detect_db_get_result(INT32_T card, TKL_AUDIO_DETECT_DB_RESULT_T *presult)
audio detect get result
OPERATE_RET tkl_ai_get_frame(INT32_T card, TKL_AI_CHN_E chn, TKL_AUDIO_FRAME_T *pframe)
ai get frame
OPERATE_RET tkl_ai_uninit(VOID)
ai uninit
OPERATE_RET tkl_ao_stop(INT32_T card, TKL_AO_CHN_E chn, VOID *handle)
ao stop
OPERATE_RET tkl_ai_detect_db_stop(INT32_T card)
audio input detect stop
OPERATE_RET tkl_ao_put_frame(INT32_T card, TKL_AO_CHN_E chn, VOID *handle, TKL_AUDIO_FRAME_T *pframe)
ao output frame
OPERATE_RET tkl_ao_uninit(VOID *handle)
ao uninit
OPERATE_RET tkl_ao_start(INT32_T card, TKL_AO_CHN_E chn, VOID *handle)
ao start
Audio and video generic type definition header file