diff --git a/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h b/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
index 0b1b86e..21de03b 100755
--- a/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
+++ b/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
@@ -9,7 +9,8 @@
 #define LYNQ_CALL_MAX 3
 #define LYNQ_CALL_FAIL_VENDOR_CAUSE 64
 #define MAX_IP_LENGTH 128
-#define MAX_VLAN_INFO_LENGTH 128
+#define MAX_VLAN_INFO_LENGTH 32
+#define MAX_SSRC_INFO_LENGTH 10   /*2^32=4294967296, 10 digit*/
 
 typedef enum {
     LYNQ_CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
@@ -148,18 +149,26 @@
     RTP_MODE_MAX
 }LYNQ_Rtp_Mode;
 
+typedef enum{
+    Rtp_Ssrc_random = 0,     
+    RTP_Ssrc_specific =1,   
+}LYNQ_Rtp_Ssrc_Mode;
+
 /*set*/
 int lynq_set_voice_audio_mode(const LYNQ_Audio_Mode audio_mode); 
 int lynq_set_remote_rtp_ip(const char* ip, const int ip_length);
 int lynq_set_vlan_info(const char* vlan_info, const int vlan_info_length);
 int lynq_set_rtp_port(const LYNQ_Rtp_Mode rtp_mode, const int port);
 int lynq_set_rtp_param(const int clock_rate,const int channels,const int latency); //only for client
+int lynq_set_call_rtp_ssrc(const LYNQ_Rtp_Ssrc_Mode ssrc_mode, const unsigned int ssrc);
+
 /*get*/
 LYNQ_Audio_Mode lynq_get_voice_audio_mode();
 int lynq_get_remote_rtp_ip(char* ip, const int ip_length);
 int lynq_get_vlan_info(char* vlan_info, const int vlan_info_length);
 int lynq_get_rtp_port(const LYNQ_Rtp_Mode rtp_mode, int* port);
 int lynq_get_rtp_param(int* clock_rate,int* channels, int* latency);//only for client
+int lynq_get_call_rtp_ssrc(LYNQ_Rtp_Ssrc_Mode* ssrc_mod, unsigned int* ssrc);
 /*Audio Path setting end*/
 
 void lynq_set_test_mode(const int test_mode);
diff --git a/src/lynq/lib/liblynq-call/lynq_call_rtp.cpp b/src/lynq/lib/liblynq-call/lynq_call_rtp.cpp
index e22b016..9e0d546 100755
--- a/src/lynq/lib/liblynq-call/lynq_call_rtp.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call_rtp.cpp
@@ -19,14 +19,18 @@
 #include "lynq_call_common.h"
 
 #define RTP_FROM_CMD "gst-launch-1.0 -v udpsrc port=%d caps=\'application/x-rtp, media=(string)audio, clock-rate=(int)%d, channels=(int)%d\' ! rtpjitterbuffer latency=%d ! rtppcmadepay ! alawdec ! audioresample ! audioconvert ! alsasink device=\'hw:0,2\'"
-#define RTP_TO_CMD   "gst-launch-1.0 -v alsasrc device=\'hw:0,6\' ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! udpsink host=%s %s auto-multicast=true port=%d"
+#define RTP_TO_CMD   "gst-launch-1.0 -v alsasrc device=\'hw:0,6\' ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! %s udpsink host=%s %s auto-multicast=true port=%d"
 #define RTP_VLAN_INFO_FORMAT "multicast-iface=\"%s\""
+#define RTP_SSRC_INFO_FORMAT " rtpmux name=mux ssrc=%u !"
+
 #define USER_LOG_TAG "LYNQ_CALL"
 
 typedef struct
 {   
     char ip[MAX_IP_LENGTH];
     int port;   
+    LYNQ_Rtp_Ssrc_Mode ssrc_mode;
+    unsigned int ssrc;
     char vlan_info[MAX_VLAN_INFO_LENGTH];
 }lynq_rtp_server_info;
 
@@ -105,6 +109,7 @@
     int* rtp_mode= (int*) arg;
     char cmd[384];
     char vlan_para_string[sizeof(RTP_VLAN_INFO_FORMAT)+MAX_VLAN_INFO_LENGTH-2/*sizeof "%s"*/]={0};
+    char ssrc_para_string[sizeof(RTP_SSRC_INFO_FORMAT)+MAX_SSRC_INFO_LENGTH-2/*sizeof "%u"*/]={0};
     LYINFLOG("lynq_start_rtp_cmd: rtp_mode is %d",(*rtp_mode));    
     if ((*rtp_mode) == RTP_CLIENT)
     {
@@ -120,10 +125,15 @@
         {
            sprintf(vlan_para_string,RTP_VLAN_INFO_FORMAT,g_rtp_server_info.vlan_info);
         }
+
+        if(g_rtp_server_info.ssrc_mode == RTP_Ssrc_specific)
+        {
+           sprintf(ssrc_para_string,RTP_SSRC_INFO_FORMAT,g_rtp_server_info.ssrc);
+        }
         sprintf(cmd,RTP_TO_CMD,   \
-        g_rtp_server_info.ip,vlan_para_string,g_rtp_server_info.port);       
+        ssrc_para_string, g_rtp_server_info.ip,vlan_para_string,g_rtp_server_info.port);       
         
-    //  LYINFLOG("start to rtp play: cmd is %s",cmd);
+        LYINFLOG("start to rtp play: cmd is %s",cmd);
         system(cmd);    
     }
     return NULL;
@@ -275,6 +285,17 @@
     LYINFLOG("lynq_set_rtp_param suc: clockrate is %d, channels is %d, latency is %d", clock_rate, channels, latency);
     return RESULT_OK;  
 }
+int lynq_set_call_rtp_ssrc(const LYNQ_Rtp_Ssrc_Mode ssrc_mode,const unsigned int ssrc)
+{
+    if(ssrc_mode < Rtp_Ssrc_random || ssrc_mode > RTP_Ssrc_specific)
+    {
+        return LYNQ_E_PARAMETER_ANONALY;
+    }
+    g_rtp_server_info.ssrc_mode = ssrc_mode;
+    g_rtp_server_info.ssrc = ssrc ;
+    LYINFLOG("%s suc: param is %d %d", __func__, ssrc_mode, ssrc);
+    return RESULT_OK;
+}
 /*get*/
 LYNQ_Audio_Mode lynq_get_voice_audio_mode()
 {
@@ -355,3 +376,16 @@
 
     return RESULT_OK;  
 }
+int lynq_get_call_rtp_ssrc(LYNQ_Rtp_Ssrc_Mode* ssrc_mode, unsigned int* ssrc)
+{
+    if(ssrc_mode == NULL || ssrc ==NULL)
+    {
+        LYERRLOG("input parameter is NULL");
+        return LYNQ_E_PARAMETER_ANONALY;
+    }
+    
+    *ssrc_mode = g_rtp_server_info.ssrc_mode;
+    *ssrc = g_rtp_server_info.ssrc ;   
+    
+    return RESULT_OK;
+}
