输入与输出不同,所有的输入都需要使用InjectData接口进行数据注入。该数据开发者通过InjectData注入到服务端,并通过VmiCmd枚举中的MIC_SEND_MIC_DATA命令字指定。示例如下:
1 2 3 4 5 6 7 8 9 | VmiDataType module = DATA_MIC; VmiCmd cmd = MIC_SEND_MIC_DATA; uint8_t micData[240]; AudioData audioData; audioData.size = sizeof(micData); uint8_t *data = new uint8_t[sizeof(AudioData) + sizeof(micData)]; memcpy(data, &audioData, sizeof(AudioData)); memcpy(data + sizeof(AudioData), micData, sizeof(micData)) InjectData(module, cmd, data, sizeof(AudioData) + sizeof(micData)); |
麦克风帧需要按照稳定的节奏注入,否则会导致声音听起来不连续。具体约束与default.prop配置文件中vmi.mic.cachefactor的取值有关,该配置项表示麦克风帧队列的缓存大小,有以下4个取值: