diff --git a/ap/lib/libvoice/voice_api.c b/ap/lib/libvoice/voice_api.c
index 3494e74..e9f5145 100755
--- a/ap/lib/libvoice/voice_api.c
+++ b/ap/lib/libvoice/voice_api.c
@@ -44,8 +44,10 @@
 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);
-
-
+extern int mix_set_voice_vol_gain(struct mixer *mixer, int vol_gain);
+extern int mix_get_voice_vol_gain(struct mixer *mixer, int *vol_gain);
+extern int mix_set_tx_voice_vol_gain(struct mixer *mixer, int vol_gain);
+extern int mix_get_tx_voice_vol_gain(struct mixer *mixer, int *vol_gain);
 
 	
 #define VOCIE_SND_CARD_NUM 0
@@ -224,7 +226,139 @@
 	
 }
 
+int sc_audio_set_rx_voice_vol_gain(int gain)
+{
+	struct mixer *voice_mixer = NULL;
+	printf("%s: start vol=%d!\n",__func__, gain);
 
+	if ((gain < -15 ) ||(gain > 24)){
+		printf("%s: gain not support, gain=%d!\n",__func__, gain);
+		return -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
+	mix_set_voice_vol_gain(voice_mixer, gain);
+
+	//close mixer
+	mixer_close(voice_mixer);
+	voice_mixer = NULL;
+
+
+	return 0;
+
+
+	
+	
+}
+
+int sc_audio_get_rx_voice_vol_gain(int     * p_gain)
+{
+    int ret = 0;
+	struct mixer *voice_mixer = NULL;
+
+	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
+	mix_get_voice_vol_gain(voice_mixer, p_gain);
+	
+
+	if ((*p_gain < -15 ) ||(*p_gain > 24)){
+		printf("%s: gain not support, *p_gain=%d!\n",__func__, *p_gain);
+		ret = -1;
+	}
+	printf("%s:  *p_gain=%d!\n",__func__, *p_gain);
+
+	//close mixer
+	mixer_close(voice_mixer);
+	voice_mixer = NULL;
+
+
+	return ret;
+
+	
+	
+}
+
+int sc_audio_set_tx_voice_vol_gain(int gain)
+{
+	struct mixer *voice_mixer = NULL;
+	printf("%s: start vol=%d!\n",__func__, gain);
+
+	if ((gain < -15 ) ||(gain > 24)){
+		printf("%s: gain not support, gain=%d!\n",__func__, gain);
+		return -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
+	mix_set_tx_voice_vol_gain(voice_mixer, gain);
+
+	//close mixer
+	mixer_close(voice_mixer);
+	voice_mixer = NULL;
+
+
+	return 0;
+
+
+	
+	
+}
+
+int sc_audio_get_tx_voice_vol_gain(int     * p_gain)
+{
+    int ret = 0;
+	struct mixer *voice_mixer = NULL;
+
+	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
+	mix_get_tx_voice_vol_gain(voice_mixer, p_gain);
+	
+
+	if ((*p_gain < -15 ) ||(*p_gain > 24)){
+		printf("%s: gain not support, *p_gain=%d!\n",__func__, *p_gain);
+		ret = -1;
+	}
+	printf("%s:  *p_gain=%d!\n",__func__, *p_gain);
+
+	//close mixer
+	mixer_close(voice_mixer);
+	voice_mixer = NULL;
+
+
+	return ret;
+
+	
+	
+}
 
 int sc_audio_set_tx_voice_vol(int vol)
 {
