How to handle "Could not determine type of stream" in GstApp?

classic Classic list List threaded Threaded
1 message Options
jmz
Reply | Threaded
Open this post in threaded view
|

How to handle "Could not determine type of stream" in GstApp?

jmz
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