[gst-devel] dv1394src dropped iso packet C vs gst-launch

Stefan de Konink skinkie at xs4all.nl
Sat Sep 24 17:50:14 CEST 2005


Hi,

After trying to produce some experimental code to get highlevel code into
low level code. I got stuck on a repeating kernel message. Comparing both
debugtraces a DISCONT eventhandler is created for the gst-launch code. I
suspect this behavior prevents the /var/log/messages to be filed with:
ieee1394: dropped iso packet

What is the way to prevent this? From the kino list I got I should
move to libiec61883, but since this isn't in Gstreamer, what is an another
solution?


Greetings,
Stefan de Konink


Debug from gst-launch:

INFO  (0x80508b8 - 313224:40:43.142197000)            dv1394src(29073)
gstdv1394src.c(403):gst_dv1394src_iso_receive:<dv1394src0> incomplete
frame dropped
INFO  (0x80508b8 - 313224:40:43.182694000)            GST_EVENT(29073)
gstevent.c(179):gst_event_new: creating new event type 4: 0x80675b0
WARN  (0x80508b8 - 313224:40:43.182752000)       GST_SCHEDULING(29073)
gstpad.c(3255):_invent_event: needed to invent a DISCONT 0x80675b0 (time
0) for dv1394src0:src => dvdec0:sink
INFO  (0x80508b8 - 313224:40:43.182818000)            GST_EVENT(29073)
gstevent.c(95):_gst_event_free: freeing event 0x80675b0
INFO  (0x80508b8 - 313224:40:43.183222000)            GST_EVENT(29073)
gstevent.c(179):gst_event_new: creating new event type 10: 0x80675b0


I'm trying to make the following launchcode in C:
gst-launch-0.8 dv1394src ! dvdec

Based on the hello.c I end up with:
#include <gst/gst.h>

/*
 * Global objects are usually a bad thing. For the purpose of this
 * example, we will use them, however.
 */

GstElement *pipeline, *source, *decoder, *sink;

int
main (int   argc,
      char *argv[])
{
  GMainLoop *loop;
  GstCaps *caps;

  /* initialize GStreamer */
  gst_init (&argc, &argv);
  loop = g_main_loop_new (NULL, FALSE);

  /* create elements */
  pipeline = gst_pipeline_new ("lineconnection");
  source = gst_element_factory_make ("dv1394src", "dv-source");
  decoder = gst_element_factory_make ("dvdec", "dv-decoder");
  //sink = gst_element_factory_make ("xvimagesink", "video-out");
  if (!pipeline || !source || !decoder) {
    g_print ("One element could not be created\n");
    return -1;
  }

  /* put all elements in a bin */
  gst_bin_add_many (GST_BIN (pipeline), source, decoder, NULL);


  caps = gst_caps_new_full (
      gst_structure_new ("video/x-dv",
                         "format", G_TYPE_STRING, "PAL",
                         "systemstream", G_TYPE_BOOLEAN, 1,
                         NULL),
      gst_structure_new ("video/x-dv",
                         "format", G_TYPE_STRING, "PAL",
                         "systemstream", G_TYPE_BOOLEAN, 1,
                         NULL),
      NULL);


  gst_element_link_pads_filtered(source, "src", decoder, "sink", caps);

  /* Now set to playing and iterate. */
  g_print ("Setting to PLAYING\n");
  gst_element_set_state (pipeline, GST_STATE_PLAYING);
  g_print ("Running\n");
  g_main_loop_run (loop);

  /* clean up nicely */
  g_print ("Returned, stopping playback\n");
  gst_element_set_state (pipeline, GST_STATE_NULL);
  g_print ("Deleting pipeline\n");
  gst_object_unref (GST_OBJECT (pipeline));

  return 0;
}






More information about the gstreamer-devel mailing list