diff --git a/ap/lib/libvoice/voice_api.c b/ap/lib/libvoice/voice_api.c
index ba07e83..3494e74 100755
--- a/ap/lib/libvoice/voice_api.c
+++ b/ap/lib/libvoice/voice_api.c
@@ -42,6 +42,9 @@
 extern int mix_set_vp_path(struct mixer *mixer, char path);
 extern int mix_get_vp_path(struct mixer *mixer, int *path);
 extern int mix_get_voice_path(struct mixer *mixer, int *path);
+extern int mix_set_vploop(struct mixer *mixer, int path);
+extern int mix_get_vploop(struct mixer *mixer, int *state);
+
 
 
 	
@@ -422,3 +425,112 @@
     return 0;
 }
 
+int ap_audio_set_loopback_enable(int dev_mode,int enable)
+{
+
+	struct mixer *voice_mixer = NULL;
+    int ret = 0;
+    struct pcm_config config_voice = {0};
+
+	
+	printf("%s: start dev_mode=%d,enable=%d!\n",__func__, dev_mode,enable);
+
+	if ((dev_mode < T_OUTPUT_HANDSET ) ||(dev_mode >= T_OUTPUT_MAX)){
+		printf("%s: dev_mode not support, dev_mode=%d!\n",__func__, dev_mode);
+		return -1;
+	}
+	if ((enable != 0 )&&(enable != 1)){
+		printf("%s: enable val not support, enable=%d!\n",__func__, enable);
+		return -1;
+	}
+	if(enable == 1){
+
+		//open mixer dev for  control
+		voice_mixer = mixer_open(VOCIE_SND_CARD_NUM);
+		if (!voice_mixer) {
+			printf("voice_mixer open failed!\n");
+			return -1;
+		}
+
+		//config mixer dev
+		ret = mix_set_voice_path(voice_mixer, dev_mode);
+		printf("mix_set_voice_path ret=%d!\n",ret);
+		
+		ret = mix_set_vploop(voice_mixer, dev_mode);
+		printf("mix_set_vploop ret=%d!\n",ret);
+
+		//close mixer
+		mixer_close(voice_mixer);
+		voice_mixer = NULL;
+
+		
+
+
+
+		
+	}
+	else{
+
+		//open mixer dev for  control
+		voice_mixer = mixer_open(VOCIE_SND_CARD_NUM);
+		if (!voice_mixer) {
+			printf("voice_mixer open failed!\n");
+			return -1;
+		}
+
+
+	    ret = mix_set_vploop(voice_mixer, VP_PATH_OFF);
+		//close mixer
+		mixer_close(voice_mixer);
+		voice_mixer = NULL;
+
+		
+		printf("mix_set_vploop off end ret=%d!\n",ret);
+		
+		
+	
+
+
+	}
+ 
+	//return 0;
+
+	printf("%s: end enable=%d!\n",__func__, enable);
+
+	return ret;
+	
+	
+}
+
+
+
+int ap_audio_get_loopback_enable(int *p_enable)
+{
+	struct mixer *voice_mixer = NULL;
+	int ret = 0;
+	printf("%s: start!\n",__func__);
+
+	//open mixer dev for  control
+	voice_mixer = mixer_open(VOCIE_SND_CARD_NUM);
+	if (!voice_mixer) {
+		printf("voice_mixer open failed!\n");
+		return -1;
+	}
+
+	//config mixer dev
+	ret = mix_get_vploop(voice_mixer, p_enable);
+	if((*p_enable != 0 ) &&(*p_enable != 1)){
+		printf("%s: p_enable not support, *p_enable=%d!\n",__func__, *p_enable);
+		ret = -1;
+	}
+	printf("%s: end *p_enable=%d!\n",__func__, *p_enable);
+
+	//close mixer
+	mixer_close(voice_mixer);
+	voice_mixer = NULL;
+
+	return ret;
+	
+}
+
+
diff --git a/ap/lib/libvoice/voiceipc.c b/ap/lib/libvoice/voiceipc.c
index 998d7a5..de88327 100755
--- a/ap/lib/libvoice/voiceipc.c
+++ b/ap/lib/libvoice/voiceipc.c
@@ -22,8 +22,10 @@
 extern int sc_audio_get_tx_voice_mute_state(int *p_mute);
 extern int sc_audio_set_rx_voice_mute_state(int mute);
 extern int sc_audio_get_rx_voice_mute_state(int *p_mute);
-extern int sc_audio_set_loopback_enable_state(int enable);
-extern int sc_audio_get_loopback_enable_state(int *p_enable);
+//extern int sc_audio_set_loopback_enable_state(int enable);
+//extern int sc_audio_get_loopback_enable_state(int *p_enable);
+int ap_audio_set_loopback_enable(int dev_mode,int enable);
+int ap_audio_get_loopback_enable(int *p_enable);
 
 static int voice_ipc_fd = -1;
 static voice_ipc_control_msg voice_ctrl_recvmsg[IPC_VOICE_FUNC_MAX] = {0};
@@ -400,11 +402,15 @@
 {
     int ret = VOICEIPC_OK;
     int msg_len = 0;
-    int enable = 0;
+	int dev_mode = 0,enable = 0;
 
     //memcpy(&dev_mode, msg.param, msg.param_len);
-    enable = *((int *)msg.param);
-    ret = sc_audio_set_loopback_enable_state(enable);
+    //enable = *((int *)msg.param);
+	memcpy(&dev_mode, msg.param, sizeof(int));
+	memcpy(&enable, msg.param+sizeof(int), sizeof(int));
+	
+    //ret = sc_audio_set_loopback_enable_state(enable);
+	ret = ap_audio_set_loopback_enable(dev_mode,enable);
 
     //msg.func_id不变
     msg.param_len = sizeof(int);
@@ -425,8 +431,8 @@
     int *p_enable = NULL;
 
     p_enable = (int *)msg.param;
-    ret = sc_audio_get_loopback_enable_state(p_enable);
-	
+    //ret = sc_audio_get_loopback_enable_state(p_enable);
+    ret = ap_audio_get_loopback_enable(p_enable);	
     //msg.func_id不变
     msg.param_len = sizeof(int);
     if(0 == ret)
