How to gurantee lip sync in the multicasting mode

Nathan zjustc at gmail.com
Wed Oct 3 07:23:22 PDT 2012


Greetings,

I am also little bit confused by the way of a/v syn of RTP/RTCP of
gstreamer.
In our usecase, one tx will send a/v data to multiple clients using the
multicasting mode.
I created the code following the gstreamer's rtpbin example, and  found when
there is only one client, the lip sync is ok.

 However, when there is more than one client, all the clients starting to
lose the lip sync. 
Here is the way I use the gstreamer: 
Tx side:

	g_object_set(G_OBJECT(app->video_rtpsink),  "host",contents.new_mcaddr,
"port", VIDEO_RTPSINK_PORT, "sync",FALSE,"async",FALSE
,"auto-multicast",TRUE,NULL);
	g_object_set(G_OBJECT(app->audio_rtpsink),  "host",contents.new_mcaddr,
"port", AUDIO_RTPSINK_PORT, "sync",FALSE,"async",FALSE
,"auto-multicast",TRUE,NULL);
	
	
	g_object_set(G_OBJECT(app->video_rtcpsink), "host",contents.new_mcaddr,
"port", VIDEO_RTCPSINK_PORT,"sync",FALSE,"async",FALSE
,"auto-multicast",TRUE,NULL);
	g_object_set(G_OBJECT(app->audio_rtcpsink), "host",contents.new_mcaddr,
"port", AUDIO_RTCPSINK_PORT,"sync",FALSE,"async",FALSE
,"auto-multicast",TRUE,NULL);
	
	g_object_set(G_OBJECT(app->video_rtcpsrc), "multicast-group",
contents.new_mcaddr, "port", VIDEO_RTCPSRC_PORT, NULL);
	g_object_set(G_OBJECT(app->audio_rtcpsrc), "multicast-group",
contents.new_mcaddr, "port", AUDIO_RTCPSRC_PORT, NULL);


Rx side:
	g_object_set(G_OBJECT(vsource), "timeout", G_GUINT64_CONSTANT(5000000),
"port", params.vrtp_port, "caps", video_caps, NULL);
	g_object_set(G_OBJECT(vsource), "multicast-group", params.mcaddr,
"auto-multicast", TRUE, NULL);
	g_object_set(G_OBJECT(vrtcpsrc), "port", VIDEO_RTCP_SRC_PORT,
"multicast-group", params.mcaddr, "auto-multicast", TRUE, NULL);
	g_object_set(G_OBJECT(vrtcpsink), "port", VIDEO_RTCP_SINK_PORT, "host",
params.mcaddr, "auto-multicast", TRUE,
			"sync", FALSE, "async", FALSE, NULL);

	g_object_set(G_OBJECT(asource), "port", params.artp_port, "caps",
audio_caps, NULL);
	g_object_set(G_OBJECT(asource), "multicast-group", params.mcaddr,
"auto-multicast", TRUE, NULL);
	g_object_set(G_OBJECT(artcpsrc), "port", AUDIO_RTCP_SRC_PORT,
"multicast-group", params.mcaddr, "auto-multicast", TRUE, NULL);
	g_object_set(G_OBJECT(artcpsink), "port", AUDIO_RTCP_SINK_PORT, "host",
params.mcaddr, "auto-multicast", TRUE,
			"sync", FALSE, "async", FALSE, NULL);
	g_object_set(G_OBJECT(asink), "sync", FALSE, NULL);


Did I do anything wrong here? What is the right way of seting the gstreamer
for the 1 to M mode?

Thanks,

John



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/How-to-gurantee-lip-sync-in-the-multicasting-mode-tp4656447.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list