Hello,
I'm currently working with GStreamer and want to build an application which is able to transmit an encoded video captured from a camera and receive a video stream, decode and display it simultaneously. I put all the elements in one pipeline. The input stream has a short delay because of buffering (some seconds). I have seen in the debugging output of gstreamer that a latency query is sent to all sink elements. And the value "MAX(all min_latencies)" is taken to synchronize the streams. Now, the problem is that I don't want to synchronize the incoming and outgoing stream! I want to send the encoded data as fast as possible to the client. I think my problem arose because I have put all my elements in one pipeline, am I right? But how can I fix this?? For most of the elements it wouldn't be a problem to put it into two different pipelines. But the same GstRtpBin element is used by the incoming and outgoing stream. Can I put one element into two different pipelines?? Thanks, Andreas ------------------------------------------------------------------------------ The modern datacenter depends on network connectivity to access resources and provide services. The best practices for maximizing a physical server's connectivity to a physical network are well understood - see how these rules translate into the virtual world? http://p.sf.net/sfu/oracle-sfdevnlfb _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Hi,
On Fri, 2011-02-04 at 12:04 +0100, Andreas Auer wrote: > I put all the elements in one pipeline. The input stream has a short > delay because of buffering (some seconds). I have seen in the debugging > output of gstreamer that a latency query is sent to all sink elements. > And the value "MAX(all min_latencies)" is taken to synchronize the streams. > Now, the problem is that I don't want to synchronize the incoming and > outgoing stream! I want to send the encoded data as fast as possible to > the client. > > I think my problem arose because I have put all my elements in one > pipeline, am I right? But how can I fix this?? For most of the elements > it wouldn't be a problem to put it into two different pipelines. But the > same GstRtpBin element is used by the incoming and outgoing stream. Can > I put one element into two different pipelines?? 1. Just put sync=false async=false on the sending-side sinks. But that means that the sent stuff will not be synchronized to one another. 2. You can also do custom latency processing, by either subclassing GstBin/GstPipeline or just by hooking up to the "do-latency" signal. In this case you can give different latencies to different sinks. I have an example [1] where you can tag different sinks with g_object_set_qdata(obj, g_quark_from_string ("gst-latency-group"), <any pointer>) .. then any sinks that have the same value will have the same latency. That said, Farsight2 still uses the sync=false/async=false tactic instead of multiple latencies. [1] http://git.collabora.co.uk/?p=user/tester/gst-plugins-farsight-tester.git;a=blob;f=gst/multipipeline/fsmultipipeline.c;h=9d94ad6e97c5c210075d83a8f51841cf1a3144bf;hb=9677f33515fe76ca4cee828cc92868c3ed7d258c -- Olivier Crête [hidden email] ------------------------------------------------------------------------------ The modern datacenter depends on network connectivity to access resources and provide services. The best practices for maximizing a physical server's connectivity to a physical network are well understood - see how these rules translate into the virtual world? http://p.sf.net/sfu/oracle-sfdevnlfb _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel signature.asc (205 bytes) Download Attachment |
Free forum by Nabble | Edit this page |