Missing Error Messages.
Stirling Westrup
swestrup at gmail.com
Wed Dec 19 12:01:30 PST 2012
I'm trying to track down an issue with error messages somehow going
missing or being unreported.
I have a pipeline (called "pipeline") holding a bin (called
"videostream_02") which has an xvimagesink element (called
"xvsink_02").
If I provide a bad output display name to the xvimagesink, it
generates an appropriate error message, but the watch I've added to
the pipeline never sees it.
Running under debug produces these relevant messages:
0:00:00.185429538 8681 0x1c40000 DEBUG bin
gstbin.c:2303:gst_bin_element_set_state:<videostream_02> setting
element xvsink_02 to READY, base_time 211:21:22.757765745
0:00:00.185543968 8681 0x1c40000 WARN xvimagesink
xvimagesink.c:1290:gst_xvimagesink_xcontext_get:<xvsink_02> error:
Could not initialise Xv output
0:00:00.185556642 8681 0x1c40000 WARN xvimagesink
xvimagesink.c:1290:gst_xvimagesink_xcontext_get:<xvsink_02> error:
Could not open display
0:00:00.185577660 8681 0x1c40000 DEBUG bin
gstbin.c:3281:gst_bin_handle_message_func:<videostream_02> [msg
0x7f8618002380] handling child xvsink_02 message of type error
0:00:00.185587474 8681 0x1c40000 DEBUG bin
gstbin.c:3288:gst_bin_handle_message_func:<videostream_02> got ERROR
message, unlocking state change
0:00:00.185596167 8681 0x1c40000 DEBUG bin
gstbin.c:3573:gst_bin_handle_message_func:<videostream_02> posting
message upward
0:00:00.185606381 8681 0x1c40000 DEBUG bin
gstbin.c:3281:gst_bin_handle_message_func:<pipeline> [msg
0x7f8618002380] handling child xvsink_02 message of type error
0:00:00.185615839 8681 0x1c40000 DEBUG bin
gstbin.c:3288:gst_bin_handle_message_func:<pipeline> got ERROR
message, unlocking state change
0:00:00.185626904 8681 0x1c40000 DEBUG bin
gstbin.c:3573:gst_bin_handle_message_func:<pipeline> posting message
upward
The code to add the watch to the pipeline (done just after first
creating the pipeline) is this:
gst_bin_add(GST_BIN(pipeline), reader);
// Install a message handler at the top level.
GstBus *bus = gst_pipeline_get_bus( GST_PIPELINE(pipeline) );
gst_bus_add_watch_full
( bus
, G_PRIORITY_DEFAULT
, bus_message_callback
, data
, bus_message_notify
);
gst_object_unref(bus);
The watch handler seems to work, as it correctly catches EOS messages,
but it doesn't seem to get called for the ERROR message, and there's
no sign that bus_message_notify is ever called.
--
Stirling Westrup
Programmer, Entrepreneur.
https://www.linkedin.com/e/fpf/77228
http://www.linkedin.com/in/swestrup
http://technaut.livejournal.com
http://sourceforge.net/users/stirlingwestrup
More information about the gstreamer-devel
mailing list