15 #ifndef VCT_VOICECHAT_H_
16 #define VCT_VOICECHAT_H_
21 #ifdef NN_VCT_TARGET_CAFE
25 #elif NN_VCT_TARGET_CTR
37 #endif // ifdef __cplusplus
44 #define VCT_ERROR_NONE 0
45 #define VCT_ERROR_BAD_PARAM -1
46 #define VCT_ERROR_BAD_MODE -2
47 #define VCT_ERROR_BAD_REQUEST -3
48 #define VCT_ERROR_SEND_FAIL -4
49 #define VCT_ERROR_EXHAUST_CLIENTS -6
52 #define VCT_MAX_SESSION 16
53 #define VCT_MAX_CONFERENCE_CLIENT 16
54 #define VCT_MAX_CLIENT 16
56 #define VCT_MAX_AUDIO_STREAM (VCT_MAX_CONFERENCE_CLIENT - 1)
59 #define VCT_MAGIC_PACKET_HEADER 0x5f564354
61 #define VCT_CODEC_DEFAULT VCT_CODEC_4BIT_ADPCM
62 #define VCT_SPARE_CODEC_DEFAULT VCT_CODEC_2BIT_ADPCM
64 #define VCT_AUDIO_FRAME_LENGTH_MIN 64
65 #define VCT_AUDIO_FRAME_LENGTH_MAX 192
66 #define VCT_AUDIO_FRAME_LENGTH_DEFAULT 144
68 #define VCT_AUDIO_DATA_SIZE_PER_MILLI_SEC 16
70 #define VCT_AUDIO_DATA_SIZE_MIN (VCT_AUDIO_FRAME_LENGTH_MIN * VCT_AUDIO_DATA_SIZE_PER_MILLI_SEC)
71 #define VCT_AUDIO_DATA_SIZE_MAX (VCT_AUDIO_FRAME_LENGTH_MAX * VCT_AUDIO_DATA_SIZE_PER_MILLI_SEC)
72 #define VCT_AUDIO_DATA_SIZE_DEFAULT (VCT_AUDIO_FRAME_LENGTH_DEFAULT * VCT_AUDIO_DATA_SIZE_PER_MILLI_SEC)
74 #define VCT_AUDIO_FRAME_RATE 8000
77 #define VCT_AUDIO_HEADER_SIZE 12
78 #define VCT_AUDIO_2_BIT_ADPCM_PACKET_SIZE_MAX (VCT_AUDIO_HEADER_SIZE + 2 * VCT_AUDIO_FRAME_LENGTH_MAX + 4)
79 #define VCT_AUDIO_3_BIT_ADPCM_PACKET_SIZE_MAX (VCT_AUDIO_HEADER_SIZE + 3 * VCT_AUDIO_FRAME_LENGTH_MAX + 4)
80 #define VCT_AUDIO_4_BIT_ADPCM_PACKET_SIZE_MAX (VCT_AUDIO_HEADER_SIZE + 4 * VCT_AUDIO_FRAME_LENGTH_MAX + 4)
82 #define VCT_AUDIO_SPARE_PACKET_SIZE_MAX VCT_AUDIO_2_BIT_ADPCM_PACKET_SIZE_MAX
84 #define VCT_AUDIO_PACKET_BUFFER_SIZE (VCT_AUDIO_DATA_SIZE_MAX + VCT_AUDIO_SPARE_PACKET_SIZE_MAX)
86 #ifdef NN_VCT_TARGET_CAFE
87 #define VCT_AUDIO_BUFFER_PACKET_HEADER 64
88 #elif NN_VCT_TARGET_CTR
89 #define VCT_AUDIO_BUFFER_PACKET_HEADER 56
91 #define VCT_AUDIO_BUFFER_SIZE (VCT_AUDIO_PACKET_BUFFER_SIZE + VCT_AUDIO_BUFFER_PACKET_HEADER)
93 #define VCT_DEFAULT_AUDIO_BUFFER_COUNT 8
94 #define VCT_MIN_AUDIO_BUFFER_COUNT 4
95 #define VCT_MAX_AUDIO_BUFFER_COUNT (24 * VCT_MAX_AUDIO_STREAM)
97 #define VCT_DEFAULT_AUDIO_BUFFER_SIZE (VCT_AUDIO_BUFFER_SIZE \
98 * VCT_DEFAULT_AUDIO_BUFFER_COUNT \
99 * VCT_MAX_AUDIO_STREAM)
101 #ifdef NN_VCT_TARGET_CAFE
102 #define VCT_VAD_DETECT_GAIN_UP_DEFAULT 350
103 #define VCT_VAD_LOST_GAIN_UP_DEFAULT 280
104 #elif NN_VCT_TARGET_CTR
105 #define VCT_VAD_DETECT_GAIN_UP_DEFAULT 350
106 #define VCT_VAD_LOST_GAIN_UP_DEFAULT 280
109 #define VCT_VAD_INVALID_SCALE_THRESHOLD_DEFAULT (7 * 7)
110 #define VCT_VAD_CLAMP_GAIN_MAX 0x3FFFFFFF
111 #define VCT_VAD_RELEASE_TIME_DEFAULT 5 // 144 (default frame length) * 5 = 720 ms
114 #define VCT_CONFIG_FLAG_NONE 0x00
115 #define VCT_CONFIG_FLAG_VAD 0x01
116 #define VCT_CONFIG_FLAG_ECHO_CANCEL 0x02
117 #define VCT_CONFIG_FLAG_HPF 0x04
118 #define VCT_CONFIG_FLAG_SPARE_PACKET 0x08
119 #define VCT_CONFIG_FLAG_DROP_RECOVER 0x20
120 #define VCT_CONFIG_FLAG_BPF 0x40
121 #define VCT_CONFIG_FLAG_ALL 0xff
123 #ifdef NN_VCT_TARGET_CAFE
124 #define VCT_CONFIG_FLAG_DEFAULT (VCT_CONFIG_FLAG_VAD | \
125 VCT_CONFIG_FLAG_SPARE_PACKET | \
126 VCT_CONFIG_FLAG_DROP_RECOVER)
127 #elif NN_VCT_TARGET_CTR
128 #define VCT_CONFIG_FLAG_DEFAULT (VCT_CONFIG_FLAG_VAD | \
129 VCT_CONFIG_FLAG_ECHO_CANCEL | \
130 VCT_CONFIG_FLAG_SPARE_PACKET | \
131 VCT_CONFIG_FLAG_DROP_RECOVER)
197 typedef bool (*
VCTSendCallback) ( u16 cid,
const void *buff, u32 size,
bool isReliable );
209 #ifdef NN_VCT_TARGET_CAFE
210 OSTime bufferLatency;
213 #elif NN_VCT_TARGET_CTR
244 typedef struct VCTSession_
262 typedef struct vct_biquad_data
276 typedef struct VCTVADInfo
511 #ifdef NN_VCT_TARGET_CTR
543 #elif NN_VCT_TARGET_CAFE
576 #ifdef NN_VCT_TARGET_CTR
577 bool VCT_SendAudioEx (
const void *audio_data, u32 micScale, u32 micOffset );
579 #ifdef NN_VCT_TARGET_CAFE
741 void VCT_ResetAudioInfo ( u16 cid );
752 void VCT_ResetAudioInfoAll (
void );
909 void VCT_EnableDropRecover (
bool flag );
921 bool VCT_IsEnableDropRecover (
void );
983 u16 VCT_GetVADPower (
void );
1122 void VCT_EnableHPF (
bool flag );
1134 bool VCT_IsEnableHPF (
void );
1164 void VCT_EnableBPF (
bool flag );
1176 bool VCT_IsEnableBPF (
void );
1185 #ifdef NN_VCT_TARGET_CTR
1208 void VCT_EnableEchoCancel (
bool flag );
1219 bool VCT_IsEnableEchoCancel (
void );
1242 #endif // NN_VCT_TARGET_CTR