[Bug 700806] New: gstbasesrc: retry pushing STREAM_START event if needed

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue May 21 12:42:10 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=700806
  GStreamer | gstreamer (core) | git

           Summary: gstbasesrc: retry pushing STREAM_START event if needed
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: branko.subasic at axis.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


The gstbasesrc uses gst_base_src_send_stream_start() to send STREAM_START
events if needed. The function checks the src->priv->stream_start_pending
variable to determine if it needs to send the event. If so, the event is pushed
and the variable is un-conditionally set to false, which means that no more
attempt to send the event shall be made. No check is done to see if the event
was successfully pushed or not.

But pushing the event may fail, For example, when a pipeline changes state to
PAUSED the element will be started, and during the start sequence a task for
the gst_base_src_loop() is created. The very first thing done from
gst_base_src_loop() is to call gst_base_src_send_stream_start().

Depending on how threads are scheduled the application may issue a seek before
the START_STREAM event reaches the src'c src pad, and the pad may be flushing,
which means that it will drop the event.

Later, when data is pushed on the src pad, gst_pad_push_data() checks whether a
STREAM_START event has been received, and if it has not received it a g_warning
message is printed. And this make the unit tests for the adder element in
gst-plugins-base fail.

I think that the solution is to modify gst_base_src_send_stream_start() to
check the return value of gst_pad_push_event(), and not to set
src->priv->stream_start_pending to FALSE unless the returnvalue is TRUE. This
is what the attached patch does.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list