[Bug 749066] New: gstasfdemux goes to EOS when demux->packet >= demux->num_packets and seeking

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu May 7 04:46:10 PDT 2015


https://bugzilla.gnome.org/show_bug.cgi?id=749066

            Bug ID: 749066
           Summary: gstasfdemux goes to EOS when demux->packet >=
                    demux->num_packets and seeking
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-ugly
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: vov at bang-olufsen.dk
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Playing a WMA audio file over http (something that allows seeking ex. DLNA).
Playback has reached the last seconds of the track so that:
This code path from gst_asf_demux_chain has already been executed:
      if (G_UNLIKELY (demux->num_packets != 0 && demux->packet >= 0
              && demux->packet >= demux->num_packets)) {
        demux->state = GST_ASF_DEMUX_STATE_INDEX;
      }

Issuing a seek on pipeline element.
After seeking you think the playback is going to start from the position you
seeked to, but it also might happen that the gst_asf_demux_chain returns EOS,
because the following code path is executed where result ==
GST_ASF_DEMUX_CHECK_HEADER_NO:
case GST_ASF_DEMUX_STATE_INDEX:{
      gint result = gst_asf_demux_check_header (demux);
      if (result == GST_ASF_DEMUX_CHECK_HEADER_NEED_DATA)       /* need more
data */
        break;

      if (result == GST_ASF_DEMUX_CHECK_HEADER_NO) {
        /* we don't care about this, probably an index */
        /* TODO maybe would be smarter to skip all the indices
         * until we got a new header or EOS to decide */
        GST_LOG_OBJECT (demux, "Received index object, its EOS");
        goto eos;
      } else {
        GST_INFO_OBJECT (demux, "Chained asf starting");
        /* cleanup and get ready for a chained asf */
        gst_asf_demux_reset (demux, TRUE);
        /* fall through */
      }
    }

-- 
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