[gst-devel] state change on udpsrc & caps negotiation

Jyoti D jyoti.d at allaboutif.com
Mon Mar 30 06:31:42 CEST 2009


Hi all,

I am writing an application for udp client to receive the rtp payloaded
packets.

The pipeline I use is on client and server is as below:
******************************************************************************************************************************
SERVER:
gst-launch filesrc location=~/Desktop/h264-aac/alien.mp4 ! qtdemux name=d \
d. ! queue ! rtph264pay ! udpsink port=1234 host=224.0.0.1 \
d. ! queue ! rtpmp4apay ! udpsink port=1233 host=224.0.0.1

CLIENT:
gst-launch udpsrc uri=udp://224.0.0.1:1234 caps="application/x-rtp,
media=(string)video, encoding-name=(string)H264, payload=(int)96"  ! queue !
rtph264depay ! ffdec_h264 ! ffmpegcolorspace ! xvimagesink\
udpsrc uri=udp://224.0.0.1:1233 caps="application/x-rtp,
media=(string)audio, clock-rate=(int)44100, encoding-name=(string)MP4A-LATM,
payload=(int)96" ! queue ! rtpmp4adepay ! faad ! audioconvert ! alsasink
******************************************************************************************************************************

In my application I set the state of the pipeline to GST_STATE_PLAYING as
below:

===========================================================================
    sres = gst_element_set_state (GST_ELEMENT (pipeline),
GST_STATE_PLAYING);
    if  (sres == GST_STATE_CHANGE_ASYNC)
    {
      gint timeout = 0;
      while (timeout < 5) {
        sres = gst_element_get_state (pipeline, &new_state, &pending_state,
                                      (1 * GST_SECOND));
        g_print("GET state pipeline : new_state = %s pending_state = %s\n",
                gst_element_state_get_name (new_state),
                gst_element_state_get_name (pending_state));

        timeout++;
      }
    }
    else {
      g_print ("Error changing pipeline state to PLAYING sres = %d\n",
sres);
      return -1;
    }
===========================================================================

But the state changes only to PAUSED and never to PLAYING. Could someone
suggest me what could be done to change the pipeline state to PLAYING.

I had one more query about caps negotiation. How to dynamically set the caps
on udpsrc element used on the CLIENT side?

Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20090330/d9ed5553/attachment.htm>


More information about the gstreamer-devel mailing list