[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