Change #286413
| Category | ffmpeg |
| Changed by | Dale Curtis <dalecurtis@chromium.org> |
| Changed at | Fri 16 Oct 2026 03:44:34 |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Project | ffmpeg |
| Branch | master |
| Revision | b863390a8dab1c76d5ba07a38348f6330e31591e |
Comments
lavf/oggparsevorbis: restore page-start timestamp calculation after seek Commit 63b7e4cefa91 removed the page duration scan in vorbis_packet() that ran when os->lastpts was unset. While that scan previously ran on every packet of a page and reset parser blocksize state during normal playback, removing it entirely left os->lastpts unset at the start of non-BOS pages after ogg_reset(). As a result, ogg_read_timestamp() could not determine a page's start timestamp until advancing to the following page, and packets read from the start of a page after a seek were stamped with the seek target's cur_dts rather than the page start's timestamp. When os->lastpts is AV_NOPTS_VALUE at os->page_start on a non-BOS, non-EOS page, scan the remaining packets on the page to set os->lastpts to os->granule minus the page duration, and restore the parser blocksize state to the first packet afterwards. Fixes #24768.
Changed files
- libavformat/oggparsevorbis.c
- tests/ref/fate/ogg-vorbis-ts-seek
- tests/ref/fate/ogg-vorbis-ts-seek-1.5s