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;
+	
+}
+
+
