Dozingfiretruck 2 лет назад
Родитель
Сommit
3c7fa4312c

+ 17 - 0
components/multimedia/luat_lib_multimedia_audio.c

@@ -341,6 +341,22 @@ static int l_audio_vol(lua_State *L) {
     return 1;
 }
 
+/*
+配置一个音频通道的mic音量调节
+@api audio.micVol(id, value)
+@int 音频通道
+@int mic音量,百分比,1%~100%,默认100%,就是不调节
+@return int 当前mic音量
+@usage
+local result = audio.vol(0, 90)	--通道0的音量调节到90%,result存放了调节后的音量水平,有可能仍然是100
+*/
+static int l_audio_mic_vol(lua_State *L) {
+    int id = luaL_checkinteger(L, 1);
+    int mic_vol = luaL_optinteger(L, 2, 100);
+    lua_pushinteger(L, luat_audio_mic_vol(id, mic_vol));
+    return 1;
+}
+
 /*
 配置一个音频通道的硬件输出总线,只有对应soc软硬件平台支持才设置对应类型
 @api audio.setBus(id, bus_type)
@@ -416,6 +432,7 @@ static const rotable_Reg_t reg_audio[] =
 	{ "isEnd",		   ROREG_FUNC(l_audio_play_wait_end)},
 	{ "config",			ROREG_FUNC(l_audio_config)},
 	{ "vol",			ROREG_FUNC(l_audio_vol)},
+    { "micVol",			ROREG_FUNC(l_audio_mic_vol)},
 	{ "getError",			ROREG_FUNC(l_audio_play_get_last_error)},
 	{ "setBus",			ROREG_FUNC(l_audio_set_output_bus)},
 	{ "debug",			ROREG_FUNC(l_audio_set_debug)},

+ 14 - 0
components/multimedia/luat_multimedia_audio.c

@@ -139,6 +139,20 @@ LUAT_WEAK uint16_t luat_audio_vol(uint8_t multimedia_id, uint16_t vol){
     return -1;
 }
 
+LUAT_WEAK uint8_t luat_audio_mic_vol(uint8_t multimedia_id, uint16_t vol){
+    if(vol < 0 || vol > 100){
+		return -1;
+    }
+    luat_audio_conf_t* audio_conf = luat_audio_get_config(multimedia_id);
+    if (audio_conf){
+        if (audio_conf->bus_type == MULTIMEDIA_AUDIO_BUS_I2S){
+            audio_conf->codec_conf.codec_opts->control(&audio_conf->codec_conf,LUAT_CODEC_SET_MIC_VOL,vol);
+            return audio_conf->codec_conf.codec_opts->control(&audio_conf->codec_conf,LUAT_CODEC_GET_MIC_VOL,0);
+        }
+    }
+    return -1;
+}
+
 LUAT_WEAK void luat_audio_set_bus_type(uint8_t multimedia_id,uint8_t bus_type){
     luat_audio_conf_t* audio_conf = luat_audio_get_config(multimedia_id);
     if (audio_conf){

+ 1 - 0
luat/include/luat_audio.h

@@ -141,6 +141,7 @@ int luat_audio_play_tts_set_param(uint32_t multimedia_id, uint32_t param_id, uin
 void luat_audio_config_pa(uint8_t multimedia_id, uint32_t pin, int level, uint32_t dummy_time_len, uint32_t pa_delay_time);
 void luat_audio_config_dac(uint8_t multimedia_id, int pin, int level, uint32_t dac_off_delay_time);
 uint16_t luat_audio_vol(uint8_t multimedia_id, uint16_t vol);
+uint8_t luat_audio_mic_vol(uint8_t multimedia_id, uint16_t vol);
 
 /**
  * @brief 设置音频硬件输出类型