修复cat1电话异常Free导致dsp挂掉问题 1340/2 1340/head
authorhcj <1224667075@qq.com>
Tue, 5 Nov 2024 07:37:18 +0000 (15:37 +0800)
committerhcj <1224667075@qq.com>
Tue, 5 Nov 2024 07:37:18 +0000 (15:37 +0800)
code/sdk/drivers/drivers/driver/audio/source/drv/aoe/drv_ao.c

index 3b8757c..b767e2c 100755 (executable)
@@ -216,12 +216,6 @@ td_s32 sap_ioctl_ao_open(td_u32 cmd, td_void *arg, td_void *file)
     }
 #endif
 
-    ret = drv_ao_load_aef();
-    if (ret != AUDIO_SUCCESS) {
-        sap_err_log_fun(drv_ao_load_aef, ret);
-        return ret;
-    }
-
     audio_unused(cmd);
     audio_unused(file);
     return AUDIO_SUCCESS;
@@ -628,7 +622,7 @@ static td_s32 ao_set_aef_param_by_profile(td_handle drv_ao, ao_attr *attr, ao_ae
     td_s32 ret;
     td_u32 lib_buf_size = AO_AEF_PARAM_SIZE_MMZ_MAX;
     td_u8 *lib_buf = (td_u8 *)malloc(lib_buf_size);
-    if (lib_buf == TD_NULL) {
+        if (lib_buf == TD_NULL) {
         return ERR_AO_NULL_PTR;
     }
 
@@ -664,16 +658,27 @@ td_s32 sap_ioctl_ao_set_aef_profile(td_u32 cmd, td_void *arg, td_void *file)
     td_handle drv_ao;
     ao_attr attr = {0};
     sap_ao_port_aef_profile *profile = TD_NULL;
-
+    
     profile = (sap_ao_port_aef_profile *)arg;
     drv_ao = profile->h_mod;
 
+
+     if (profile->aef_profile > AO_AEF_PROFILE_NONE && profile->aef_profile < AO_AEF_PROFILE_MAX)
+     {
+         ret = drv_ao_load_aef();
+        if (ret != AUDIO_SUCCESS) {
+            sap_err_log_fun(drv_ao_load_aef, ret);
+            return ret;
+        }
+    }
+   
+
     ret = drv_msg_ao_set_aef_profile(drv_ao, profile->aef_profile);
     if (ret != AUDIO_SUCCESS) {
         sap_err_log_fun(drv_msg_ao_set_aef_profile, ret);
         return ret;
     }
-
+    
     if (profile->aef_profile == AO_AEF_PROFILE_NONE || profile->aef_profile == AO_AEF_PROFILE_MAX) {
         return AUDIO_SUCCESS;
     }