dashdemux: Drain remaining buffer in adapter

Previous patch allows sidx box parsing from incoming buffers.
Since the incoming buffer boundary might be over sidx box,
there can be remaining buffer in isobmff parser adapter.

https://bugzilla.gnome.org/show_bug.cgi?id=776352
This commit is contained in:
Seungha Yang 2016-12-21 23:24:48 +09:00 committed by Sebastian Dröge
parent 243829098c
commit 998c8ce246

View file

@ -2534,6 +2534,20 @@ gst_dash_demux_handle_isobmff_buffer (GstAdaptiveDemux * demux,
GST_BUFFER_OFFSET (buffer) = dash_stream->isobmff_parser.current_offset;
dash_stream->isobmff_parser.current_offset += gst_buffer_get_size (buffer);
GST_BUFFER_OFFSET_END (buffer) = dash_stream->isobmff_parser.current_offset;
} else if (gst_adapter_available (dash_stream->isobmff_adapter) > 0) {
guint64 offset;
/* Drain adapter */
gst_adapter_push (dash_stream->isobmff_adapter, buffer);
buffer =
gst_adapter_take_buffer (dash_stream->isobmff_adapter,
gst_adapter_available (dash_stream->isobmff_adapter));
/* Set buffer offset based on the last parser's offset */
offset = dash_stream->isobmff_parser.current_offset;
GST_BUFFER_OFFSET (buffer) = offset;
GST_BUFFER_OFFSET_END (buffer) = offset + gst_buffer_get_size (buffer);
}
return gst_adaptive_demux_stream_push_buffer (stream, buffer);