first of all, you should used gst-launch in CMD to try if the pipeline woks or not<div>if so, I guess there &#39;s something problem with decoder</div><div>As I counter this kind of situation like freezing, There must have been wrong with decoder, check it </div>
<div><div><br><div class="gmail_quote">On Mon, Aug 29, 2011 at 8:16 PM, akshat <span dir="ltr">&lt;<a href="mailto:akshatdewan@gmail.com">akshatdewan@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hello,<br>
I am using gstreamerSDK(v0.10.6) on windowsXP. I am trying to play an .avi<br>
file but it stops playing the content within few seconds and does not play<br>
the file completely.<br>
I appreciate   your help.<br>
<br>
Thanks<br>
Akshat<br>
<br>
code<br>
___________________________<br>
#include &quot;stdafx.h&quot;<br>
#include &lt;windows.h&gt;<br>
#include &lt;iostream&gt;<br>
#include &amp;lt;gstreamer-0.10/gst/gst.h&amp;gt;<br>
#include &amp;lt;glib-2.0/glib.h&amp;gt;<br>
#include &quot;EmoStateDLL.h&quot;<br>
#include &quot;edk.h&quot;<br>
#include &quot;edkErrorCode.h&quot;<br>
#include &lt;time.h&gt;<br>
#include &lt;fstream&gt;<br>
#include &lt;map&gt;<br>
<br>
#pragma comment(lib, &quot;edk.lib&quot;)<br>
using namespace std;<br>
<br>
<br>
static gboolean<br>
bus_call (GstBus     *bus,<br>
          GstMessage *msg,<br>
          gpointer    data)<br>
{<br>
  GMainLoop *loop = (GMainLoop *)data;<br>
<br>
  switch (GST_MESSAGE_TYPE (msg)) {<br>
    case GST_MESSAGE_EOS:<br>
      g_print (&quot;End-of-stream\n&quot;);<br>
      g_main_loop_quit (loop);<br>
      break;<br>
    case GST_MESSAGE_ERROR: {<br>
      gchar *debug = NULL;<br>
      GError *err = NULL;<br>
<br>
      gst_message_parse_error (msg, &amp;err, &amp;debug);<br>
<br>
      g_print (&quot;Error: %s\n&quot;, err-&gt;message);<br>
      g_error_free (err);<br>
<br>
      if (debug) {<br>
        g_print (&quot;Debug details: %s\n&quot;, debug);<br>
        g_free (debug);<br>
      }<br>
<br>
      g_main_loop_quit (loop);<br>
      break;<br>
    }<br>
    default:<br>
      break;<br>
  }<br>
<br>
  return TRUE;<br>
}<br>
<br>
static GstElement *pipeline,*filesrc, *avidemux, *hicon, *decodera,<br>
                          *audioconvert, *asink,<br>
                          *queuea, *queuev, *decoderv, *csc, *vscale, *vsink;<br>
<br>
static void on_decpad_added(GstElement *element, GstPad *pad )<br>
{<br>
    g_debug (&quot;Signal: decoder pad-added&quot;);<br>
    GstCaps *caps;<br>
    GstStructure *str;<br>
<br>
    caps = gst_pad_get_caps (pad);<br>
    g_assert (caps != NULL);<br>
    str = gst_caps_get_structure (caps, 0);<br>
    g_assert (str != NULL);<br>
<br>
        g_debug (&quot;Linking video pad to queue_vd&quot;);<br>
        // Link it actually<br>
        GstPad *targetsink = gst_element_get_pad (element == decodera ? queuea :<br>
queuev, &quot;sink&quot;);<br>
        g_assert (targetsink != NULL);<br>
        gst_pad_link (pad, targetsink);<br>
<br>
        gst_object_unref (targetsink);<br>
    gst_caps_unref (caps);<br>
}<br>
<br>
static void on_pad_added (GstElement *element, GstPad *pad)<br>
{<br>
        g_debug (&quot;Signal: demux pad-added&quot;);<br>
        GstCaps *caps;<br>
        GstStructure *str;<br>
<br>
        caps = gst_pad_get_caps (pad);<br>
        g_assert (caps != NULL);<br>
        str = gst_caps_get_structure (caps, 0);<br>
        g_assert (str != NULL);<br>
<br>
        const gchar *c = gst_structure_get_name(str);<br>
        if (g_strrstr (c, &quot;video&quot;) || g_strrstr (c, &quot;image&quot;)) {<br>
                g_debug (&quot;Linking video pad to dec_vd&quot;);<br>
                // Link it actually<br>
                GstPad *targetsink = gst_element_get_pad (decoderv, &quot;sink&quot;);<br>
                g_assert (targetsink != NULL);<br>
                gst_pad_link (pad, targetsink);<br>
                gst_object_unref (targetsink);<br>
        }<br>
<br>
        if (g_strrstr (c, &quot;audio&quot;)) {<br>
                g_debug (&quot;Linking audio pad to dec_ad&quot;);<br>
                // Link it actually<br>
                GstPad *targetsink = gst_element_get_pad (decodera, &quot;sink&quot;);<br>
                g_assert (targetsink != NULL);<br>
                gst_pad_link (pad, targetsink);<br>
                gst_object_unref (targetsink);<br>
        }<br>
<br>
        gst_caps_unref (caps);<br>
}<br>
<br>
void g_ass(gboolean b)<br>
{<br>
/*      if(!b)g_debug(&quot;Error&quot;);<br>
        else g_debug(&quot;OK&quot;);*/<br>
}<br>
<br>
gint<br>
main (gint   argc,<br>
      gchar *argv[])<br>
{<br>
  GstStateChangeReturn ret;<br>
  GMainLoop *loop;<br>
  GstBus *bus;<br>
<br>
  /* initialization */<br>
  gst_init (&amp;argc, &amp;argv);<br>
  loop = g_main_loop_new (NULL, FALSE);<br>
<br>
  /*<br>
   * command line:<br>
   * gst-launch filesrc location=/home/neddens/r0013001.avi ! avidemux<br>
name=demux  demux.audio_00 ! decodebin ! queue ! audioconvert !<br>
audioresample ! autoaudiosink   demux.video_00 ! decodebin ! queue !<br>
ffmpegcolorspace ! videoscale ! autovideosink<br>
   *<br>
*/<br>
<br>
<br>
  /* create elements */<br>
  pipeline = gst_pipeline_new (&quot;pipeline0&quot;);<br>
<br>
  /* watch for messages on the pipeline&#39;s bus (note that this will only<br>
   * work like this when a GLib main loop is running) */<br>
  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));<br>
  gst_bus_add_watch (bus, bus_call, loop);<br>
  gst_object_unref (bus);<br>
<br>
  filesrc  = gst_element_factory_make (&quot;filesrc&quot;, &quot;filesource&quot;);<br>
  avidemux = gst_element_factory_make (&quot;avidemux&quot;, &quot;dmux&quot;);<br>
  decodera = gst_element_factory_make (&quot;decodebin2&quot;, &quot;decoder0&quot;);<br>
  decoderv = gst_element_factory_make (&quot;decodebin2&quot;, &quot;decoder1&quot;);<br>
  vscale = gst_element_factory_make (&quot;videoscale&quot;, &quot;Scaler&quot;);<br>
<br>
  /* putting an audioconvert element here to convert the output of the<br>
   * decoder into a format that my_filter can handle (we are assuming it<br>
   * will handle any sample rate here though) */<br>
  audioconvert = gst_element_factory_make (&quot;audioconvert&quot;, &quot;audioconvert1&quot;);<br>
  queuea = gst_element_factory_make (&quot;queue&quot;, &quot;queue0&quot;);<br>
  queuev = gst_element_factory_make (&quot;queue&quot;, &quot;queue1&quot;);<br>
<br>
  /* there should always be audioconvert and audioresample elements before<br>
   * the audio sink, since the capabilities of the audio sink usually vary<br>
   * depending on the environment (output used, sound card, driver etc.) */<br>
  //audioresample = gst_element_factory_make (&quot;audioresample&quot;,<br>
&quot;audioresample0&quot;);<br>
  csc = gst_element_factory_make (&quot;ffmpegcolorspace&quot;, &quot;ffmpegcsp0&quot;);<br>
  vsink     = gst_element_factory_make (&quot;autovideosink&quot;, &quot;Video Renderer&quot;);<br>
  asink     = gst_element_factory_make (&quot;autoaudiosink&quot;, &quot;AudioSink&quot;);<br>
<br>
<br>
<br>
  g_object_set (G_OBJECT (filesrc), &quot;location&quot;, &quot;3.avi&quot;, NULL);<br>
<br>
  gst_bin_add_many (GST_BIN (pipeline), filesrc, avidemux, decodera,<br>
                  audioconvert, asink,csc,vscale,<br>
                  queuev, queuea, decoderv, vsink, NULL);<br>
<br>
<br>
  g_ass(gst_element_link (filesrc, avidemux));<br>
  g_ass(gst_element_link (queuev, csc));<br>
  g_ass(gst_element_link (csc, vscale));<br>
  g_ass(gst_element_link (vscale, vsink));<br>
<br>
  g_ass(gst_element_link (queuea, audioconvert));<br>
  g_ass(gst_element_link (audioconvert, asink));<br>
 // g_ass(gst_element_link (audioresample, asink));<br>
<br>
  g_signal_connect (avidemux, &quot;pad-added&quot;, G_CALLBACK (on_pad_added), NULL);<br>
  //gst_element_set_state (decodera, GST_STATE_PLAYING);<br>
  //gst_element_set_state (decoderv, GST_STATE_PLAYING);<br>
  g_signal_connect (decodera, &quot;new-decoded-pad&quot;, G_CALLBACK<br>
(on_decpad_added), decodera);<br>
  g_signal_connect (decoderv, &quot;new-decoded-pad&quot;, G_CALLBACK<br>
(on_decpad_added), decoderv);<br>
<br>
  /* run */<br>
  ret = gst_element_set_state (pipeline, GST_STATE_PLAYING);<br>
  if (ret == GST_STATE_CHANGE_FAILURE) {<br>
    GstMessage *msg;<br>
<br>
    g_print (&quot;Failed to start up pipeline!\n&quot;);<br>
<br>
    /* check if there is an error message with details on the bus */<br>
    msg = gst_bus_poll (bus, GST_MESSAGE_ERROR, 0);<br>
    if (msg) {<br>
      GError *err = NULL;<br>
<br>
      gst_message_parse_error (msg, &amp;err, NULL);<br>
      g_print (&quot;ERROR: %s\n&quot;, err-&gt;message);<br>
      g_error_free (err);<br>
      gst_message_unref (msg);<br>
    }<br>
    return -1;<br>
  }<br>
  GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(pipeline),<br>
GST_DEBUG_GRAPH_SHOW_ALL, &quot;hi&quot;);<br>
  g_main_loop_run (loop);<br>
<br>
  /* clean up */<br>
  gst_element_set_state (pipeline, GST_STATE_NULL);<br>
  gst_object_unref (pipeline);<br>
<br>
  return 0;<br>
}<br>
___________code end_________<br>
<font color="#888888"><br>
--<br>
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/gstreamer-stops-playing-the-media-content-tp3776067p3776067.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/gstreamer-stops-playing-the-media-content-tp3776067p3776067.html</a><br>

Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</font></blockquote></div><br></div></div>