I have an application that playback a mpegts file using appsrc.
My pipeline is as follow. apprsc->tsdemux->h264parse->omxh264dec->videoconvert->kmssink It always play the file to the EOS. But playing the second time always froze. Here's a snippet of my 1st run follow by the 2nd run...the video is about 30 seconds long *1st run:* appsrc gstappsrc.c:865:gst_app_src_start:<appsrc0>[00m starting appsrc gstappsrc.c:688:gst_app_src_internal_get_caps:<appsrc1>[00m caps: (NULL) appsrc gstappsrc.c:1863:gst_app_src_push_internal:<appsrc0>[00m queueing buffer 0x7f9001b020 appsrc gstappsrc.c:1863:gst_app_src_push_internal:<appsrc0>[00m queueing buffer 0x7f9001b130 appsrc gstappsrc.c:1819:gst_app_src_push_internal:<appsrc0>[00m queue filled (100000 >= 100000) appsrc gstappsrc.c:1819:gst_app_src_push_internal:<appsrc0>[00m queue filled (100000 >= 100000) *2nd run:* appsrc gstappsrc.c:865:gst_app_src_start:<appsrc1>[00m starting appsrc gstappsrc.c:688:gst_app_src_internal_get_caps:<appsrc1>[00m caps: (NULL) appsrc gstappsrc.c:835:gst_app_src_unlock:<appsrc1>[00m unlock start appsrc gstappsrc.c:1290:gst_app_src_create:<appsrc1>[00m we are flushing appsrc gstappsrc.c:850:gst_app_src_unlock_stop:<appsrc1>[00m unlock stop Here's the full debug log on appsrc debug.log <http://gstreamer-devel.966125.n4.nabble.com/file/t379691/debug.log> In the push_data callback, once it reaches the EOS, I also create a function to flush and return FALSE. Here's a snippet of my code: void send_eos_and_flush(CustomData *data) { GstFlowReturn ret; ret = gst_app_src_end_of_stream(data->appsrc); if(ret != GST_FLOW_OK) printf("GST_FLOW not okay: GstFlowReturn(%i)\n", ret); GstEvent* flush_start = gst_event_new_flush_start(); ret = gst_element_send_event(GST_ELEMENT(data->pipeline), flush_start); if (!ret) printf("failed to send flush-start event: GstFlowReturn(%i)\n", ret); GstEvent* flush_stop = gst_event_new_flush_stop(FALSE); ret = gst_element_send_event(GST_ELEMENT(data->pipeline), flush_stop); if (!ret) printf("failed to send flush-stop event: GstFlowReturn(%i)\n", ret); } *Question*: Should I send_event to data->pipeline or data->appsrc? Last, maybe I could be looking at the wrong place. Could it be the *tsdemux*? Any advice is much appreciated. ~tjirasu -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |