|
Hi,
I have a program using "appsrc ! decodebin ! ... ! appsink" as a pipeline.
The appsrc pushes data within buf and EOS to its source pad. The appsink handles data until EOS has been received.
// appsrc pushes data
gst_app_src_push_buffer (GST_APP_SRC (app->src), buf);
gst_app_src_end_of_stream (GST_APP_SRC (app->src));
// blocking here if could not determine type of stream
while (!gst_app_sink_is_eos(GST_APP_SINK(sink))) {
// appsink handles data
}
The program is blocked if the data feeded by appsrc can't be decoded. The debugging messages are shown as follows.
0:00:00.022883965 25934 0xb5e720 INFO basesrc gstbasesrc.c:2668:gst_base_src_loop:<source> pausing after gst_base_src_get_range() = eos
0:00:00.022933010 25934 0xb5e720 INFO typefind gsttypefindelement.c:639:gst_type_find_element_sink_event:<typefind> Got EOS and no type found yet
0:00:00.023446822 25934 0xb5e720 INFO GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<typefind> posting message: Could not determine type of stream.
0:00:00.023468101 25934 0xb5e720 INFO GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<typefind> posted error message: Could not determine type of stream.
0:00:00.023482702 25934 0xb5e720 INFO task gsttask.c:300:gst_task_func:<source:src> Task going to paused
I have a bus message handler which can get GST_MESSAGE_ERROR on the error. However, I can't stop the program using g_main_loop_quit() in "case GST_MESSAGE_ERROR" because I don't use a GLib event loop.
How can I stop the program on the "Could not determine type of stream"?
Best Regards
|