[feature][T8TSK-195][TCAM_T800_SW_0284][rtp] add interface to set call rtp ssrc
Change-Id: Ic4b319e1ab93de4e9c053a779e67aae27f52ccae
(cherry picked from commit 4df0b51fe88b5a322114304ccc36f1b5d6f3df06)
diff --git a/lib/liblynq-call/lynq_call_rtp.cpp b/lib/liblynq-call/lynq_call_rtp.cpp
index e22b016..9e0d546 100755
--- a/lib/liblynq-call/lynq_call_rtp.cpp
+++ b/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;
+}