Skip to content

matroska-demux: fix accumulated base offset in segment seeks

When doing a segment seek, the base offset in the new segment would be increased by segment.position which is basically the timestamp of the last packet. This does not include the duration of the last packet though, so might be slightly shorter than the actual duration of the clip or the requested segment.

Increase the base offset by the segment duration instead when accumulating segments, which is more correct as it doesn't cut off the last frame and makes the effective loop segment duration consistent with the actual duration returned from a duration query.

In case a segment stop was specified it's also possible that some data was sent beyond the stop that's necessary for decoding so the base offset increment should be based on that then and not on the timestamp of the last buffer pushed out.

Merge request reports