Skip to content

multiqueue: Ignore queue fullness for most events

Use gst_data_queue_push_force() for most events so they are immediately enqueued. Only gap events and actual buffer data will now block when the queue is full.

This fixes a problem with non-flushing seek handling where events following a segment-done event would block if they precede the SEGMENT event, since only SEGMENT events would clear the 'eos' state of the multiqueue queue.

  • this makes multiqueue a bit more in-line with queue, which never blocks on 'fullness' for events. I made multiqueue still wait on GAP events here, since that seems more correct to me. There are still some other differences between the 2 queue implementations now though, since queue doesn't handle SEGMENT_DONE at all special.
  • Feedback on this fundamental change to multiqueue is welcome.

Merge request reports