Commit 843e83ed2d for ffmpeg

commit 843e83ed2d21fbedac58eeaff44dfb03468740f7
Author: Romain Beauxis <romain.beauxis@gmail.com>
Date:   Sat Oct 17 16:19:00 2026 +0200

    avformat/seek: leave the pre-roll before the target of avformat_seek_file()

    Demuxers and decoders declare the pre-roll an audio stream needs in
    AVCodecParameters.seek_preroll, but nothing used it, so a seek landed on
    the frame that holds the target and the first frame decoded there was not
    reliable.

    Move the target back by the largest pre-roll of the audio streams that
    are not discarded, whichever stream the seek is on, as they all land
    near the target, without leaving the range the caller asked for or going
    before the start of the stream. A finite end of the range moves back as
    much as the target, and an open end stays open. The pre-roll is rounded up so that it is never shorter
    than declared. The caller still discards what it decodes before the
    target, as it already had to for a seek that does not land on it. Seeks
    by byte or by frame number are left alone. When the start of the stream
    is unknown, the earlier target may come before the first packet, so if
    the seek fails, it is done again to the target the caller asked for.

    The seeks of the tests now land one frame earlier for AAC, and about
    80 ms earlier for Opus in Matroska. A forward seek still lands forward,
    one frame earlier. A seek on the video stream just after a keyframe now
    lands on the keyframe before, to leave room for the pre-roll of AAC. A
    seek through concat lands earlier, as concat and the file it reads both
    move the target back. A seek close to the start of ADTS, whose start is
    unknown, lands at the start instead of failing.

diff --git a/doc/APIchanges b/doc/APIchanges
index 54350fc633..eab968f5dd 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,12 @@ The last version increases of all libraries were on 2026-06-23.

 API changes, most recent first:

+2026-10-xx - xxxxxxxxxx - lavf 63.14.101 - avformat.h
+  avformat_seek_file() moves the target back by the largest
+  AVCodecParameters.seek_preroll of the audio streams, within the requested
+  range. This also applies to av_seek_frame() with a demuxer that only
+  implements read_seek2.
+
 2026-10-xx - xxxxxxxxxx - lavc 63.23.102 - avcodec.h
   AVCodecContext.seek_preroll may be raised by a decoder to the pre-roll it
   needs, as the AAC decoder does.
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 664a291ea4..39abd3f70c 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -2564,6 +2564,14 @@ int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
  * keyframes (this may not be supported by all demuxers).
  * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored.
  *
+ * A seek by timestamp moves ts back by the largest
+ * AVCodecParameters.seek_preroll of the audio streams that are not discarded,
+ * whatever stream_index is, so that the decoders get their declared pre-roll
+ * before ts. The target stays within min_ts and after the start of the
+ * stream, so less room may be left. max_ts moves back as much, unless it is
+ * INT64_MAX. If that seek fails, the seek is done to ts. This also applies to
+ * av_seek_frame() with a demuxer that only implements this function.
+ *
  * @param s            media file handle
  * @param stream_index index of the stream which is used as time base reference
  * @param min_ts       smallest acceptable timestamp
diff --git a/libavformat/seek.c b/libavformat/seek.c
index 82875483b5..fea1be916a 100644
--- a/libavformat/seek.c
+++ b/libavformat/seek.c
@@ -664,23 +664,45 @@ int av_seek_frame(AVFormatContext *s, int stream_index,
     return ret;
 }

-int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts,
-                       int64_t ts, int64_t max_ts, int flags)
+/**
+ * The largest pre-roll of the audio streams that are not discarded, in the
+ * units of the seek: the time base of the stream, or AV_TIME_BASE when no
+ * stream is given. Audio decoders need the frames before the target to
+ * produce reliable output at it, and declare how many samples in
+ * AVCodecParameters.seek_preroll.
+ */
+static int64_t seek_preroll(const AVFormatContext *s, int stream_index)
 {
-    int dir;
-    int ret;
+    AVRational unit = stream_index >= 0 ? s->streams[stream_index]->time_base
+                                        : AV_TIME_BASE_Q;
+    int64_t preroll = 0;

-    if (min_ts > ts || max_ts < ts)
-        return -1;
-    if (stream_index < -1 || stream_index >= (int)s->nb_streams)
-        return AVERROR(EINVAL);
+    for (unsigned i = 0; i < s->nb_streams; i++) {
+        const AVStream *st = s->streams[i];
+        const AVCodecParameters *par = st->codecpar;
+        int64_t v;
+
+        if (st->discard >= AVDISCARD_ALL)
+            continue;
+        if (par->codec_type != AVMEDIA_TYPE_AUDIO || par->seek_preroll <= 0 ||
+            par->sample_rate <= 0)
+            continue;
+
+        v = av_rescale_q_rnd(par->seek_preroll, (AVRational){ 1, par->sample_rate },
+                             unit, AV_ROUND_UP);
+        preroll = FFMAX(preroll, v);
+    }

-    if (s->seek2any > 0)
-        flags |= AVSEEK_FLAG_ANY;
-    flags &= ~AVSEEK_FLAG_BACKWARD;
+    return preroll;
+}
+
+static int seek_file(AVFormatContext *s, int stream_index, int64_t min_ts,
+                     int64_t ts, int64_t max_ts, int flags)
+{
+    int dir;
+    int ret;

     if (ffifmt(s->iformat)->read_seek2) {
-        int ret;
         ff_read_frame_flush(s);

         if (stream_index == -1 && s->nb_streams == 1) {
@@ -709,6 +731,45 @@ int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts,
     return ret;
 }

+int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts,
+                       int64_t ts, int64_t max_ts, int flags)
+{
+    int64_t target = ts, target_max = max_ts;
+    int ret;
+
+    if (min_ts > ts || max_ts < ts)
+        return -1;
+    if (stream_index < -1 || stream_index >= (int)s->nb_streams)
+        return AVERROR(EINVAL);
+
+    if (s->seek2any > 0)
+        flags |= AVSEEK_FLAG_ANY;
+    flags &= ~AVSEEK_FLAG_BACKWARD;
+
+    if (!(flags & (AVSEEK_FLAG_BYTE | AVSEEK_FLAG_FRAME))) {
+        int64_t preroll = seek_preroll(s, stream_index);
+        int64_t start = stream_index >= 0 ? s->streams[stream_index]->start_time
+                                          : s->start_time;
+
+        // Land early enough to decode the pre-roll, without leaving the
+        // range the caller asked for or going before the start.
+        target = FFMAX(av_sat_sub64(ts, preroll), min_ts);
+        if (start != AV_NOPTS_VALUE)
+            target = FFMAX(target, FFMIN(start, ts));
+        // Move the finite upper bound back by the same amount as the target.
+        // An open upper bound stays open.
+        if (max_ts != INT64_MAX)
+            target_max = av_sat_sub64(max_ts, av_sat_sub64(ts, target));
+    }
+
+    ret = seek_file(s, stream_index, min_ts, target, target_max, flags);
+    // Without a known start, the earlier target may come before the first
+    // packet.
+    if (ret < 0 && target != ts)
+        ret = seek_file(s, stream_index, min_ts, ts, max_ts, flags);
+    return ret;
+}
+
 /** Flush the frame reader. */
 void ff_read_frame_flush(AVFormatContext *s)
 {
diff --git a/libavformat/version.h b/libavformat/version.h
index 14bf700274..4a475b6630 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
 #include "version_major.h"

 #define LIBAVFORMAT_VERSION_MINOR  14
-#define LIBAVFORMAT_VERSION_MICRO 100
+#define LIBAVFORMAT_VERSION_MICRO 101

 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                LIBAVFORMAT_VERSION_MINOR, \
diff --git a/tests/ref/fate/aac-seek-landing-frame-length-short b/tests/ref/fate/aac-seek-landing-frame-length-short
index fd28ed6ee4..ecb9fe031f 100644
--- a/tests/ref/fate/aac-seek-landing-frame-length-short
+++ b/tests/ref/fate/aac-seek-landing-frame-length-short
@@ -1,3 +1,3 @@
+packet|pts=157440|dts=157440|duration=960
 packet|pts=158400|dts=158400|duration=960
 packet|pts=159360|dts=159360|duration=960
-packet|pts=160320|dts=160320|duration=960
diff --git a/tests/ref/fate/aac-seek-landing-sbr b/tests/ref/fate/aac-seek-landing-sbr
index 7f3e2ebc8d..1e8fc110a4 100644
--- a/tests/ref/fate/aac-seek-landing-sbr
+++ b/tests/ref/fate/aac-seek-landing-sbr
@@ -1,3 +1,3 @@
+packet|pts=244736|dts=244736|duration=1024
+packet|pts=245760|dts=245760|duration=1024
 packet|pts=246784|dts=246784|duration=1024
-packet|pts=247808|dts=247808|duration=1024
-packet|pts=248832|dts=248832|duration=1024
diff --git a/tests/ref/fate/mov-aac-2048-priming-seek-landing b/tests/ref/fate/mov-aac-2048-priming-seek-landing
index 17292a119a..ff6091c327 100644
--- a/tests/ref/fate/mov-aac-2048-priming-seek-landing
+++ b/tests/ref/fate/mov-aac-2048-priming-seek-landing
@@ -1,3 +1,3 @@
+packet|pts=100352|dts=100352|duration=1024
 packet|pts=101376|dts=101376|duration=1024
 packet|pts=102400|dts=102400|duration=1024
-packet|pts=103424|dts=103424|duration=1024
diff --git a/tests/ref/fate/preroll-aac-adts-decode-noaccurate b/tests/ref/fate/preroll-aac-adts-decode-noaccurate
index 975ab4b272..2bbb545ac2 100644
--- a/tests/ref/fate/preroll-aac-adts-decode-noaccurate
+++ b/tests/ref/fate/preroll-aac-adts-decode-noaccurate
@@ -3,11 +3,11 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 48000
 #channel_layout_name 0: mono
+0,      -1888,      -1888,     1024,     2048, 0x00000000
 0,       -864,       -864,     1024,     2048, 0x00000000
 0,        160,        160,     1024,     2048, 0x00000000
 0,       1184,       1184,     1024,     2048, 0x00000000
 0,       2208,       2208,     1024,     2048, 0x00000000
 0,       3232,       3232,     1024,     2048, 0x00000000
 0,       4256,       4256,     1024,     2048, 0x00000000
-0,       5280,       5280,     1024,     2048, 0x00000000
-0,       6304,       6304,       32,       64, 0x00000000
+0,       5280,       5280,       32,       64, 0x00000000
diff --git a/tests/ref/fate/preroll-aac-adts-landing b/tests/ref/fate/preroll-aac-adts-landing
index a5b0c457fb..d9a6ab06a2 100644
--- a/tests/ref/fate/preroll-aac-adts-landing
+++ b/tests/ref/fate/preroll-aac-adts-landing
@@ -1,3 +1,3 @@
+packet|pts=13848576|dts=13848576|duration=602112
 packet|pts=14450688|dts=14450688|duration=602112
 packet|pts=15052800|dts=15052800|duration=602112
-packet|pts=15654912|dts=15654912|duration=602112
diff --git a/tests/ref/fate/preroll-aac-adts-seek-start b/tests/ref/fate/preroll-aac-adts-seek-start
index 589900ee1e..7b4654d80d 100644
--- a/tests/ref/fate/preroll-aac-adts-seek-start
+++ b/tests/ref/fate/preroll-aac-adts-seek-start
@@ -8,14 +8,14 @@ ret: 0         st: 0 flags:0  ts: 0.788334
 ret: 0         st: 0 flags:1 dts: 0.789333 pts: 0.789333 pos:   4807 size:   140
 ret: 0         st: 0 flags:1 dts: 0.810667 pts: 0.810667 pos:   4947 size:   123
 ret: 0         st: 0 flags:1  ts: 1.682501
+ret: 0         st: 0 flags:1 dts: 1.642667 pts: 1.642667 pos:   9944 size:   123
 ret: 0         st: 0 flags:1 dts: 1.664000 pts: 1.664000 pos:  10067 size:   138
-ret: 0         st: 0 flags:1 dts: 1.685333 pts: 1.685333 pos:  10205 size:   119
 ret: 0         st:-1 flags:0  ts:-0.423332
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     73 size:   126
 ret: 0         st: 0 flags:1 dts: 0.021333 pts: 0.021333 pos:    199 size:   135
 ret: 0         st:-1 flags:1  ts: 0.470835
+ret: 0         st: 0 flags:1 dts: 0.448000 pts: 0.448000 pos:   2764 size:   138
 ret: 0         st: 0 flags:1 dts: 0.469333 pts: 0.469333 pos:   2902 size:   119
-ret: 0         st: 0 flags:1 dts: 0.490667 pts: 0.490667 pos:   3021 size:   123
 ret: 0         st: 0 flags:0  ts: 1.365002
 ret: 0         st: 0 flags:1 dts: 1.365333 pts: 1.365333 pos:   8285 size:   129
 ret: 0         st: 0 flags:1 dts: 1.386667 pts: 1.386667 pos:   8414 size:   111
@@ -24,8 +24,8 @@ ret: 0         st:-1 flags:0  ts: 0.153336
 ret: 0         st: 0 flags:1 dts: 0.170667 pts: 0.170667 pos:   1104 size:   111
 ret: 0         st: 0 flags:1 dts: 0.192000 pts: 0.192000 pos:   1215 size:   126
 ret: 0         st:-1 flags:1  ts: 1.047503
+ret: 0         st: 0 flags:1 dts: 1.024000 pts: 1.024000 pos:   6223 size:   126
 ret: 0         st: 0 flags:1 dts: 1.045333 pts: 1.045333 pos:   6349 size:   135
-ret: 0         st: 0 flags:1 dts: 1.066667 pts: 1.066667 pos:   6484 size:   123
 ret: 0         st: 0 flags:0  ts: 1.941670
 ret: 0         st: 0 flags:1 dts: 1.962667 pts: 1.962667 pos:  11873 size:   111
 ret: 0         st: 0 flags:1 dts: 1.984000 pts: 1.984000 pos:  11984 size:   126
@@ -34,14 +34,14 @@ ret: 0         st:-1 flags:0  ts: 0.730004
 ret: 0         st: 0 flags:1 dts: 0.746667 pts: 0.746667 pos:   4570 size:   111
 ret: 0         st: 0 flags:1 dts: 0.768000 pts: 0.768000 pos:   4681 size:   126
 ret: 0         st:-1 flags:1  ts: 1.624171
+ret: 0         st: 0 flags:1 dts: 1.600000 pts: 1.600000 pos:   9678 size:   126
 ret: 0         st: 0 flags:1 dts: 1.621333 pts: 1.621333 pos:   9804 size:   140
-ret: 0         st: 0 flags:1 dts: 1.642667 pts: 1.642667 pos:   9944 size:   123
 ret: 0         st: 0 flags:0  ts:-0.481662
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     73 size:   126
 ret: 0         st: 0 flags:1 dts: 0.021333 pts: 0.021333 pos:    199 size:   135
 ret: 0         st: 0 flags:1  ts: 0.412505
+ret: 0         st: 0 flags:1 dts: 0.384000 pts: 0.384000 pos:   2375 size:   126
 ret: 0         st: 0 flags:1 dts: 0.405333 pts: 0.405333 pos:   2501 size:   140
-ret: 0         st: 0 flags:1 dts: 0.426667 pts: 0.426667 pos:   2641 size:   123
 ret: 0         st:-1 flags:0  ts: 1.306672
 ret: 0         st: 0 flags:1 dts: 1.322667 pts: 1.322667 pos:   8018 size:   123
 ret: 0         st: 0 flags:1 dts: 1.344000 pts: 1.344000 pos:   8141 size:   144
@@ -50,8 +50,8 @@ ret: 0         st: 0 flags:0  ts: 0.095006
 ret: 0         st: 0 flags:1 dts: 0.106667 pts: 0.106667 pos:    718 size:   123
 ret: 0         st: 0 flags:1 dts: 0.128000 pts: 0.128000 pos:    841 size:   144
 ret: 0         st: 0 flags:1  ts: 0.989173
+ret: 0         st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:   5834 size:   126
 ret: 0         st: 0 flags:1 dts: 0.981333 pts: 0.981333 pos:   5960 size:   140
-ret: 0         st: 0 flags:1 dts: 1.002667 pts: 1.002667 pos:   6100 size:   123
 ret: 0         st:-1 flags:0  ts: 1.883340
 ret: 0         st: 0 flags:1 dts: 1.898667 pts: 1.898667 pos:  11477 size:   123
 ret: 0         st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos:  11600 size:   144
@@ -60,11 +60,11 @@ ret: 0         st: 0 flags:0  ts: 0.671674
 ret: 0         st: 0 flags:1 dts: 0.682667 pts: 0.682667 pos:   4174 size:   123
 ret: 0         st: 0 flags:1 dts: 0.704000 pts: 0.704000 pos:   4297 size:   144
 ret: 0         st: 0 flags:1  ts: 1.565841
+ret: 0         st: 0 flags:1 dts: 1.536000 pts: 1.536000 pos:   9294 size:   144
 ret: 0         st: 0 flags:1 dts: 1.557333 pts: 1.557333 pos:   9438 size:   129
-ret: 0         st: 0 flags:1 dts: 1.578667 pts: 1.578667 pos:   9567 size:   111
 ret: 0         st:-1 flags:0  ts:-0.539992
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     73 size:   126
 ret: 0         st: 0 flags:1 dts: 0.021333 pts: 0.021333 pos:    199 size:   135
 ret: 0         st:-1 flags:1  ts: 0.354175
+ret: 0         st: 0 flags:1 dts: 0.320000 pts: 0.320000 pos:   1991 size:   144
 ret: 0         st: 0 flags:1 dts: 0.341333 pts: 0.341333 pos:   2135 size:   129
-ret: 0         st: 0 flags:1 dts: 0.362667 pts: 0.362667 pos:   2264 size:   111
diff --git a/tests/ref/fate/preroll-aac-caf-decode-noaccurate b/tests/ref/fate/preroll-aac-caf-decode-noaccurate
index 840ce39541..f36bd50454 100644
--- a/tests/ref/fate/preroll-aac-caf-decode-noaccurate
+++ b/tests/ref/fate/preroll-aac-caf-decode-noaccurate
@@ -3,11 +3,11 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 48000
 #channel_layout_name 0: stereo
+0,      -1952,      -1952,     1024,     4096, 0x00000000
 0,       -928,       -928,     1024,     4096, 0x00000000
 0,         96,         96,     1024,     4096, 0x00000000
 0,       1120,       1120,     1024,     4096, 0x00000000
 0,       2144,       2144,     1024,     4096, 0x00000000
 0,       3168,       3168,     1024,     4096, 0x00000000
 0,       4192,       4192,     1024,     4096, 0x00000000
-0,       5216,       5216,     1024,     4096, 0x00000000
-0,       6240,       6240,       32,      128, 0x00000000
+0,       5216,       5216,       32,      128, 0x00000000
diff --git a/tests/ref/fate/preroll-aac-caf-landing b/tests/ref/fate/preroll-aac-caf-landing
index 97b1da94e4..bc698585b0 100644
--- a/tests/ref/fate/preroll-aac-caf-landing
+++ b/tests/ref/fate/preroll-aac-caf-landing
@@ -1,3 +1,3 @@
+packet|pts=23488|dts=23488|duration=1024
 packet|pts=24512|dts=24512|duration=1024
 packet|pts=25536|dts=25536|duration=1024
-packet|pts=26560|dts=26560|duration=1024
diff --git a/tests/ref/fate/preroll-aac-concat-seek b/tests/ref/fate/preroll-aac-concat-seek
index 08cadd8280..e81f32e55c 100644
--- a/tests/ref/fate/preroll-aac-concat-seek
+++ b/tests/ref/fate/preroll-aac-concat-seek
@@ -1,6 +1,6 @@
+ret: 0         st: 0 flags:1 dts: 0.462948 pts: 0.462948 pos:   2363 size:    26
+ret: 0         st: 0 flags:1 dts: 0.486168 pts: 0.486168 pos:   2389 size:    27
 ret: 0         st: 0 flags:1 dts: 0.509388 pts: 0.509388 pos:   2416 size:    27
-ret: 0         st: 0 flags:1 dts: 0.532608 pts: 0.532608 pos:   2443 size:    28
-ret: 0         st: 0 flags:1 dts: 0.555828 pts: 0.555828 pos:   2471 size:    27
 ret: 0         st:-1 flags:0  ts:-1.000000
 ret: 0         st: 0 flags:1 dts:-0.047891 pts:-0.047891 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts:-0.024671 pts:-0.024671 pos:   1372 size:   251
@@ -14,17 +14,17 @@ ret: 0         st: 0 flags:1 dts: 0.811247 pts: 0.811247 pos:   2774 size:    27
 ret: 0         st: 0 flags:1 dts: 0.834467 pts: 0.834467 pos:   2801 size:    28
 ret: 0         st: 0 flags:1 dts: 0.857687 pts: 0.857687 pos:   2829 size:    28
 ret: 0         st: 0 flags:1  ts: 1.682494
+ret: 0         st: 0 flags:1 dts: 1.623946 pts: 1.623946 pos:   3903 size:    39
+ret: 0         st: 0 flags:1 dts: 1.647166 pts: 1.647166 pos:   3942 size:    42
 ret: 0         st: 0 flags:1 dts: 1.670385 pts: 1.670385 pos:   3984 size:    41
-ret: 0         st: 0 flags:1 dts: 1.693605 pts: 1.693605 pos:   4025 size:    41
-ret: 0         st: 0 flags:1 dts: 1.716825 pts: 1.716825 pos:   4066 size:    41
 ret: 0         st:-1 flags:0  ts:-0.423332
 ret: 0         st: 0 flags:1 dts:-0.047891 pts:-0.047891 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts:-0.024671 pts:-0.024671 pos:   1372 size:   251
 ret: 0         st: 0 flags:1 dts:-0.001451 pts:-0.001451 pos:   1623 size:   168
 ret: 0         st:-1 flags:1  ts: 0.470835
+ret: 0         st: 0 flags:1 dts: 0.416508 pts: 0.416508 pos:   2309 size:    27
+ret: 0         st: 0 flags:1 dts: 0.439728 pts: 0.439728 pos:   2336 size:    27
 ret: 0         st: 0 flags:1 dts: 0.462948 pts: 0.462948 pos:   2363 size:    26
-ret: 0         st: 0 flags:1 dts: 0.486168 pts: 0.486168 pos:   2389 size:    27
-ret: 0         st: 0 flags:1 dts: 0.509388 pts: 0.509388 pos:   2416 size:    27
 ret: 0         st: 0 flags:0  ts: 1.365011
 ret: 0         st: 0 flags:1 dts: 1.368526 pts: 1.368526 pos:   3465 size:    30
 ret: 0         st: 0 flags:1 dts: 1.391746 pts: 1.391746 pos:   3495 size:    39
@@ -38,9 +38,9 @@ ret: 0         st: 0 flags:1 dts: 0.161088 pts: 0.161088 pos:   2014 size:    27
 ret: 0         st: 0 flags:1 dts: 0.184308 pts: 0.184308 pos:   2041 size:    27
 ret: 0         st: 0 flags:1 dts: 0.207528 pts: 0.207528 pos:   2068 size:    27
 ret: 0         st:-1 flags:1  ts: 1.047503
+ret: 0         st: 0 flags:1 dts: 0.997007 pts: 0.997007 pos:   2996 size:    28
+ret: 0         st: 0 flags:1 dts: 1.020227 pts: 1.020227 pos:   3024 size:    28
 ret: 0         st: 0 flags:1 dts: 1.043447 pts: 1.043447 pos:   3052 size:    27
-ret: 0         st: 0 flags:1 dts: 1.066667 pts: 1.066667 pos:   3079 size:    28
-ret: 0         st: 0 flags:1 dts: 1.089887 pts: 1.089887 pos:   3107 size:    30
 ret: 0         st: 0 flags:0  ts: 1.941678
 ret: 0         st: 0 flags:1 dts: 1.949025 pts: 1.949025 pos:   4474 size:    41
 ret: 0         st: 0 flags:1 dts: 1.972245 pts: 1.972245 pos:   4515 size:    39
@@ -54,17 +54,17 @@ ret: 0         st: 0 flags:1 dts: 0.741587 pts: 0.741587 pos:   2691 size:    28
 ret: 0         st: 0 flags:1 dts: 0.764807 pts: 0.764807 pos:   2719 size:    28
 ret: 0         st: 0 flags:1 dts: 0.788027 pts: 0.788027 pos:   2747 size:    27
 ret: 0         st:-1 flags:1  ts: 1.624171
+ret: 0         st: 0 flags:1 dts: 1.577506 pts: 1.577506 pos:   3821 size:    41
+ret: 0         st: 0 flags:1 dts: 1.600726 pts: 1.600726 pos:   3862 size:    41
 ret: 0         st: 0 flags:1 dts: 1.623946 pts: 1.623946 pos:   3903 size:    39
-ret: 0         st: 0 flags:1 dts: 1.647166 pts: 1.647166 pos:   3942 size:    42
-ret: 0         st: 0 flags:1 dts: 1.670385 pts: 1.670385 pos:   3984 size:    41
 ret: 0         st: 0 flags:0  ts:-0.481655
 ret: 0         st: 0 flags:1 dts:-0.047891 pts:-0.047891 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts:-0.024671 pts:-0.024671 pos:   1372 size:   251
 ret: 0         st: 0 flags:1 dts:-0.001451 pts:-0.001451 pos:   1623 size:   168
 ret: 0         st: 0 flags:1  ts: 0.412494
+ret: 0         st: 0 flags:1 dts: 0.346848 pts: 0.346848 pos:   2229 size:    26
+ret: 0         st: 0 flags:1 dts: 0.370068 pts: 0.370068 pos:   2255 size:    27
 ret: 0         st: 0 flags:1 dts: 0.393288 pts: 0.393288 pos:   2282 size:    27
-ret: 0         st: 0 flags:1 dts: 0.416508 pts: 0.416508 pos:   2309 size:    27
-ret: 0         st: 0 flags:1 dts: 0.439728 pts: 0.439728 pos:   2336 size:    27
 ret: 0         st:-1 flags:0  ts: 1.306672
 ret: 0         st: 0 flags:1 dts: 1.322086 pts: 1.322086 pos:   3405 size:    30
 ret: 0         st: 0 flags:1 dts: 1.345306 pts: 1.345306 pos:   3435 size:    30
@@ -78,9 +78,9 @@ ret: 0         st: 0 flags:1 dts: 0.114649 pts: 0.114649 pos:   1961 size:    26
 ret: 0         st: 0 flags:1 dts: 0.137868 pts: 0.137868 pos:   1987 size:    27
 ret: 0         st: 0 flags:1 dts: 0.161088 pts: 0.161088 pos:   2014 size:    27
 ret: 0         st: 0 flags:1  ts: 0.989184
+ret: 0         st: 0 flags:1 dts: 0.927347 pts: 0.927347 pos:   2913 size:    27
+ret: 0         st: 0 flags:1 dts: 0.950567 pts: 0.950567 pos:   2940 size:    28
 ret: 0         st: 0 flags:1 dts: 0.973787 pts: 0.973787 pos:   2968 size:    28
-ret: 0         st: 0 flags:1 dts: 0.997007 pts: 0.997007 pos:   2996 size:    28
-ret: 0         st: 0 flags:1 dts: 1.020227 pts: 1.020227 pos:   3024 size:    28
 ret: 0         st:-1 flags:0  ts: 1.883340
 ret: 0         st: 0 flags:1 dts: 1.902585 pts: 1.902585 pos:   4392 size:    41
 ret: 0         st: 0 flags:1 dts: 1.925805 pts: 1.925805 pos:   4433 size:    41
@@ -94,14 +94,14 @@ ret: 0         st: 0 flags:1 dts: 0.671927 pts: 0.671927 pos:   2609 size:    27
 ret: 0         st: 0 flags:1 dts: 0.695147 pts: 0.695147 pos:   2636 size:    27
 ret: 0         st: 0 flags:1 dts: 0.718367 pts: 0.718367 pos:   2663 size:    28
 ret: 0         st: 0 flags:1  ts: 1.565850
+ret: 0         st: 0 flags:1 dts: 1.507846 pts: 1.507846 pos:   3699 size:    39
+ret: 0         st: 0 flags:1 dts: 1.531066 pts: 1.531066 pos:   3738 size:    42
 ret: 0         st: 0 flags:1 dts: 1.554286 pts: 1.554286 pos:   3780 size:    41
-ret: 0         st: 0 flags:1 dts: 1.577506 pts: 1.577506 pos:   3821 size:    41
-ret: 0         st: 0 flags:1 dts: 1.600726 pts: 1.600726 pos:   3862 size:    41
 ret: 0         st:-1 flags:0  ts:-0.539992
 ret: 0         st: 0 flags:1 dts:-0.047891 pts:-0.047891 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts:-0.024671 pts:-0.024671 pos:   1372 size:   251
 ret: 0         st: 0 flags:1 dts:-0.001451 pts:-0.001451 pos:   1623 size:   168
 ret: 0         st:-1 flags:1  ts: 0.354175
+ret: 0         st: 0 flags:1 dts: 0.300408 pts: 0.300408 pos:   2175 size:    27
+ret: 0         st: 0 flags:1 dts: 0.323628 pts: 0.323628 pos:   2202 size:    27
 ret: 0         st: 0 flags:1 dts: 0.346848 pts: 0.346848 pos:   2229 size:    26
-ret: 0         st: 0 flags:1 dts: 0.370068 pts: 0.370068 pos:   2255 size:    27
-ret: 0         st: 0 flags:1 dts: 0.393288 pts: 0.393288 pos:   2282 size:    27
diff --git a/tests/ref/fate/preroll-aac-flv-landing b/tests/ref/fate/preroll-aac-flv-landing
index 48a85ca942..1241a4af02 100644
--- a/tests/ref/fate/preroll-aac-flv-landing
+++ b/tests/ref/fate/preroll-aac-flv-landing
@@ -1,3 +1,3 @@
+packet|pts=499|dts=499|duration=21
 packet|pts=520|dts=520|duration=21
 packet|pts=541|dts=541|duration=21
-packet|pts=563|dts=563|duration=21
diff --git a/tests/ref/fate/preroll-aac-he-adts-decode-noaccurate b/tests/ref/fate/preroll-aac-he-adts-decode-noaccurate
index 7499e24eb4..cc8548e813 100644
--- a/tests/ref/fate/preroll-aac-he-adts-decode-noaccurate
+++ b/tests/ref/fate/preroll-aac-he-adts-decode-noaccurate
@@ -3,7 +3,7 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
+0,      -4941,      -4941,     2048,     8192, 0x00000000
+0,      -2893,      -2893,     2048,     8192, 0x00000000
 0,       -845,       -845,     2048,     8192, 0x00000000
-0,       1203,       1203,     2048,     8192, 0x00000000
-0,       3251,       3251,     2048,     8192, 0x00000000
-0,       5299,       5299,      471,     1884, 0x00000000
+0,       1203,       1203,      471,     1884, 0x00000000
diff --git a/tests/ref/fate/preroll-aac-he-adts-landing b/tests/ref/fate/preroll-aac-he-adts-landing
index 1a25edb5ab..926d56bb01 100644
--- a/tests/ref/fate/preroll-aac-he-adts-landing
+++ b/tests/ref/fate/preroll-aac-he-adts-landing
@@ -1,3 +1,3 @@
+packet|pts=11796480|dts=11796480|duration=1310720
+packet|pts=13107200|dts=13107200|duration=1310720
 packet|pts=14417920|dts=14417920|duration=1310720
-packet|pts=15728640|dts=15728640|duration=1310720
-packet|pts=17039360|dts=17039360|duration=1310720
diff --git a/tests/ref/fate/preroll-aac-he-implicit-mov-decode-noaccurate b/tests/ref/fate/preroll-aac-he-implicit-mov-decode-noaccurate
index 35c4c19cf0..ab827b227e 100644
--- a/tests/ref/fate/preroll-aac-he-implicit-mov-decode-noaccurate
+++ b/tests/ref/fate/preroll-aac-he-implicit-mov-decode-noaccurate
@@ -3,7 +3,7 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
+0,      -4942,      -4942,     2048,     8192, 0x00000000
+0,      -2894,      -2894,     2048,     8192, 0x00000000
 0,       -846,       -846,     2048,     8192, 0x00000000
-0,       1202,       1202,     2048,     8192, 0x00000000
-0,       3250,       3250,     2048,     8192, 0x00000000
-0,       5298,       5298,      471,     1884, 0x00000000
+0,       1202,       1202,      471,     1884, 0x00000000
diff --git a/tests/ref/fate/preroll-aac-he-implicit-mov-landing b/tests/ref/fate/preroll-aac-he-implicit-mov-landing
index 2aba1a3532..32a87100f6 100644
--- a/tests/ref/fate/preroll-aac-he-implicit-mov-landing
+++ b/tests/ref/fate/preroll-aac-he-implicit-mov-landing
@@ -1,3 +1,3 @@
+packet|pts=9216|dts=9216|duration=1024
+packet|pts=10240|dts=10240|duration=1024
 packet|pts=11264|dts=11264|duration=1024
-packet|pts=12288|dts=12288|duration=1024
-packet|pts=13312|dts=13312|duration=1024
diff --git a/tests/ref/fate/preroll-aac-mkv-landing b/tests/ref/fate/preroll-aac-mkv-landing
index 5b89b5dcc7..bc2b03b215 100644
--- a/tests/ref/fate/preroll-aac-mkv-landing
+++ b/tests/ref/fate/preroll-aac-mkv-landing
@@ -1,3 +1,3 @@
-packet|pts=520|dts=520|duration=21
-packet|pts=541|dts=541|duration=21
-packet|pts=562|dts=562|duration=22
+packet|pts=350|dts=350|duration=21
+packet|pts=371|dts=371|duration=21
+packet|pts=392|dts=392|duration=22
diff --git a/tests/ref/fate/preroll-aac-mov-decode-noaccurate b/tests/ref/fate/preroll-aac-mov-decode-noaccurate
index 967afc6260..2bb40a1d81 100644
--- a/tests/ref/fate/preroll-aac-mov-decode-noaccurate
+++ b/tests/ref/fate/preroll-aac-mov-decode-noaccurate
@@ -3,10 +3,10 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
+0,      -1933,      -1933,     1024,     4096, 0x00000000
 0,       -909,       -909,     1024,     4096, 0x00000000
 0,        115,        115,     1024,     4096, 0x00000000
 0,       1139,       1139,     1024,     4096, 0x00000000
 0,       2163,       2163,     1024,     4096, 0x00000000
 0,       3187,       3187,     1024,     4096, 0x00000000
-0,       4211,       4211,     1024,     4096, 0x00000000
-0,       5235,       5235,      471,     1884, 0x00000000
+0,       4211,       4211,      471,     1884, 0x00000000
diff --git a/tests/ref/fate/preroll-aac-mov-landing b/tests/ref/fate/preroll-aac-mov-landing
index d4660a6cad..46df3b77bb 100644
--- a/tests/ref/fate/preroll-aac-mov-landing
+++ b/tests/ref/fate/preroll-aac-mov-landing
@@ -1,3 +1,3 @@
+packet|pts=21504|dts=21504|duration=1024
 packet|pts=22528|dts=22528|duration=1024
 packet|pts=23552|dts=23552|duration=1024
-packet|pts=24576|dts=24576|duration=1024
diff --git a/tests/ref/fate/preroll-aac-mov-seek-forward b/tests/ref/fate/preroll-aac-mov-seek-forward
index 9c7a58068e..66e0fc5e83 100644
--- a/tests/ref/fate/preroll-aac-mov-seek-forward
+++ b/tests/ref/fate/preroll-aac-mov-seek-forward
@@ -1,5 +1,5 @@
+ret: 0         st: 0 flags:1 dts: 0.510839 pts: 0.510839 pos:   2363 size:    26
 ret: 0         st: 0 flags:1 dts: 0.534059 pts: 0.534059 pos:   2389 size:    27
-ret: 0         st: 0 flags:1 dts: 0.557279 pts: 0.557279 pos:   2416 size:    27
 ret: 0         st:-1 flags:0  ts:-1.000000
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts: 0.023220 pts: 0.023220 pos:   1372 size:   251
@@ -10,14 +10,14 @@ ret: 0         st: 0 flags:0  ts: 0.788345
 ret: 0         st: 0 flags:1 dts: 0.789478 pts: 0.789478 pos:   2691 size:    28
 ret: 0         st: 0 flags:1 dts: 0.812698 pts: 0.812698 pos:   2719 size:    28
 ret: 0         st: 0 flags:1  ts: 1.682494
+ret: 0         st: 0 flags:1 dts: 1.648617 pts: 1.648617 pos:   3862 size:    41
 ret: 0         st: 0 flags:1 dts: 1.671837 pts: 1.671837 pos:   3903 size:    39
-ret: 0         st: 0 flags:1 dts: 1.695057 pts: 1.695057 pos:   3942 size:    42
 ret: 0         st:-1 flags:0  ts:-0.423332
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts: 0.023220 pts: 0.023220 pos:   1372 size:   251
 ret: 0         st:-1 flags:1  ts: 0.470835
+ret: 0         st: 0 flags:1 dts: 0.441179 pts: 0.441179 pos:   2282 size:    27
 ret: 0         st: 0 flags:1 dts: 0.464399 pts: 0.464399 pos:   2309 size:    27
-ret: 0         st: 0 flags:1 dts: 0.487619 pts: 0.487619 pos:   2336 size:    27
 ret: 0         st: 0 flags:0  ts: 1.365011
 ret: 0         st: 0 flags:1 dts: 1.369977 pts: 1.369977 pos:   3405 size:    30
 ret: 0         st: 0 flags:1 dts: 1.393197 pts: 1.393197 pos:   3435 size:    30
@@ -28,8 +28,8 @@ ret: 0         st:-1 flags:0  ts: 0.153336
 ret: 0         st: 0 flags:1 dts: 0.162540 pts: 0.162540 pos:   1961 size:    26
 ret: 0         st: 0 flags:1 dts: 0.185760 pts: 0.185760 pos:   1987 size:    27
 ret: 0         st:-1 flags:1  ts: 1.047503
+ret: 0         st: 0 flags:1 dts: 1.021678 pts: 1.021678 pos:   2968 size:    28
 ret: 0         st: 0 flags:1 dts: 1.044898 pts: 1.044898 pos:   2996 size:    28
-ret: 0         st: 0 flags:1 dts: 1.068118 pts: 1.068118 pos:   3024 size:    28
 ret: 0         st: 0 flags:0  ts: 1.941678
 ret: 0         st: 0 flags:1 dts: 1.950476 pts: 1.950476 pos:   4392 size:    41
 ret: 0         st: 0 flags:1 dts: 1.973696 pts: 1.973696 pos:   4433 size:    41
@@ -40,14 +40,14 @@ ret: 0         st:-1 flags:0  ts: 0.730004
 ret: 0         st: 0 flags:1 dts: 0.743039 pts: 0.743039 pos:   2636 size:    27
 ret: 0         st: 0 flags:1 dts: 0.766259 pts: 0.766259 pos:   2663 size:    28
 ret: 0         st:-1 flags:1  ts: 1.624171
+ret: 0         st: 0 flags:1 dts: 1.578957 pts: 1.578957 pos:   3738 size:    42
 ret: 0         st: 0 flags:1 dts: 1.602177 pts: 1.602177 pos:   3780 size:    41
-ret: 0         st: 0 flags:1 dts: 1.625397 pts: 1.625397 pos:   3821 size:    41
 ret: 0         st: 0 flags:0  ts:-0.481655
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts: 0.023220 pts: 0.023220 pos:   1372 size:   251
 ret: 0         st: 0 flags:1  ts: 0.412494
+ret: 0         st: 0 flags:1 dts: 0.371519 pts: 0.371519 pos:   2202 size:    27
 ret: 0         st: 0 flags:1 dts: 0.394739 pts: 0.394739 pos:   2229 size:    26
-ret: 0         st: 0 flags:1 dts: 0.417959 pts: 0.417959 pos:   2255 size:    27
 ret: 0         st:-1 flags:0  ts: 1.306672
 ret: 0         st: 0 flags:1 dts: 1.323537 pts: 1.323537 pos:   3346 size:    29
 ret: 0         st: 0 flags:1 dts: 1.346757 pts: 1.346757 pos:   3375 size:    30
@@ -58,8 +58,8 @@ ret: 0         st: 0 flags:0  ts: 0.095011
 ret: 0         st: 0 flags:1 dts: 0.116100 pts: 0.116100 pos:   1907 size:    27
 ret: 0         st: 0 flags:1 dts: 0.139320 pts: 0.139320 pos:   1934 size:    27
 ret: 0         st: 0 flags:1  ts: 0.989184
+ret: 0         st: 0 flags:1 dts: 0.952018 pts: 0.952018 pos:   2885 size:    28
 ret: 0         st: 0 flags:1 dts: 0.975238 pts: 0.975238 pos:   2913 size:    27
-ret: 0         st: 0 flags:1 dts: 0.998458 pts: 0.998458 pos:   2940 size:    28
 ret: 0         st:-1 flags:0  ts: 1.883340
 ret: 0         st: 0 flags:1 dts: 1.904036 pts: 1.904036 pos:   4311 size:    39
 ret: 0         st: 0 flags:1 dts: 1.927256 pts: 1.927256 pos:   4350 size:    42
@@ -70,11 +70,11 @@ ret: 0         st: 0 flags:0  ts: 0.671678
 ret: 0         st: 0 flags:1 dts: 0.673379 pts: 0.673379 pos:   2553 size:    28
 ret: 0         st: 0 flags:1 dts: 0.696599 pts: 0.696599 pos:   2581 size:    28
 ret: 0         st: 0 flags:1  ts: 1.565850
+ret: 0         st: 0 flags:1 dts: 1.532517 pts: 1.532517 pos:   3658 size:    41
 ret: 0         st: 0 flags:1 dts: 1.555737 pts: 1.555737 pos:   3699 size:    39
-ret: 0         st: 0 flags:1 dts: 1.578957 pts: 1.578957 pos:   3738 size:    42
 ret: 0         st:-1 flags:0  ts:-0.539992
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   1366 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:1 dts: 0.023220 pts: 0.023220 pos:   1372 size:   251
 ret: 0         st:-1 flags:1  ts: 0.354175
+ret: 0         st: 0 flags:1 dts: 0.325079 pts: 0.325079 pos:   2148 size:    27
 ret: 0         st: 0 flags:1 dts: 0.348299 pts: 0.348299 pos:   2175 size:    27
-ret: 0         st: 0 flags:1 dts: 0.371519 pts: 0.371519 pos:   2202 size:    27
diff --git a/tests/ref/fate/preroll-aac-mov-seek-staggered b/tests/ref/fate/preroll-aac-mov-seek-staggered
index b2fe3edb2b..6f51788d07 100644
--- a/tests/ref/fate/preroll-aac-mov-seek-staggered
+++ b/tests/ref/fate/preroll-aac-mov-seek-staggered
@@ -18,10 +18,10 @@ ret: 0         st: 0 flags:1 dts: 0.811247 pts: 0.811247 pos:   1444 size:    27
 ret: 0         st: 0 flags:1 dts: 0.834467 pts: 0.834467 pos:   1471 size:    28
 ret: 0         st: 0 flags:1 dts: 0.857687 pts: 0.857687 pos:   1499 size:    28
 ret: 0         st: 0 flags:1  ts: 1.682494
+ret: 0         st: 1 flags:1 dts: 1.602268 pts: 1.602268 pos:   3732 size:    28
+ret: 0         st: 0 flags:1 dts: 1.623946 pts: 1.623946 pos:   3760 size:    39
 ret: 0         st: 1 flags:1 dts: 1.625488 pts: 1.625488 pos:   3799 size:    28
 ret: 0         st: 0 flags:1 dts: 1.647166 pts: 1.647166 pos:   3827 size:    42
-ret: 0         st: 1 flags:1 dts: 1.648707 pts: 1.648707 pos:   3869 size:    28
-ret: 0         st: 0 flags:1 dts: 1.670385 pts: 1.670385 pos:   3897 size:    41
 ret: 0         st: 1 flags:0  ts:-0.423333
 ret: 0         st: 0 flags:1 dts: 0.950567 pts: 0.950567 pos:   1610 size:    28
 ret: 0         st: 1 flags:1 dts: 0.952109 pts: 0.952109 pos:   1638 size:     6
@@ -48,10 +48,10 @@ ret: 0         st: 0 flags:1 dts: 0.161088 pts: 0.161088 pos:    684 size:    27
 ret: 0         st: 0 flags:1 dts: 0.184308 pts: 0.184308 pos:    711 size:    27
 ret: 0         st: 0 flags:1 dts: 0.207528 pts: 0.207528 pos:    738 size:    27
 ret: 0         st: 0 flags:1  ts: 1.047506
+ret: 0         st: 1 flags:1 dts: 0.975329 pts: 0.975329 pos:   1672 size:   251
+ret: 0         st: 0 flags:1 dts: 0.997007 pts: 0.997007 pos:   1923 size:    28
 ret: 0         st: 1 flags:1 dts: 0.998549 pts: 0.998549 pos:   1951 size:   168
 ret: 0         st: 0 flags:1 dts: 1.020227 pts: 1.020227 pos:   2119 size:    28
-ret: 0         st: 1 flags:1 dts: 1.021769 pts: 1.021769 pos:   2147 size:    89
-ret: 0         st: 0 flags:1 dts: 1.043447 pts: 1.043447 pos:   2236 size:    27
 ret: 0         st: 1 flags:0  ts: 1.941678
 ret: 0         st: 0 flags:1 dts: 1.949025 pts: 1.949025 pos:   4718 size:    41
 ret: 0         st: 1 flags:1 dts: 1.950567 pts: 1.950567 pos:   4759 size:    28
@@ -68,20 +68,20 @@ ret: 0         st: 0 flags:1 dts: 0.741587 pts: 0.741587 pos:   1361 size:    28
 ret: 0         st: 0 flags:1 dts: 0.764807 pts: 0.764807 pos:   1389 size:    28
 ret: 0         st: 0 flags:1 dts: 0.788027 pts: 0.788027 pos:   1417 size:    27
 ret: 0         st:-1 flags:1  ts: 1.624171
+ret: 0         st: 1 flags:1 dts: 1.555828 pts: 1.555828 pos:   3596 size:    27
+ret: 0         st: 0 flags:1 dts: 1.577506 pts: 1.577506 pos:   3623 size:    41
 ret: 0         st: 1 flags:1 dts: 1.579048 pts: 1.579048 pos:   3664 size:    27
 ret: 0         st: 0 flags:1 dts: 1.600726 pts: 1.600726 pos:   3691 size:    41
-ret: 0         st: 1 flags:1 dts: 1.602268 pts: 1.602268 pos:   3732 size:    28
-ret: 0         st: 0 flags:1 dts: 1.623946 pts: 1.623946 pos:   3760 size:    39
 ret: 0         st: 0 flags:0  ts:-0.481655
 ret: 0         st: 0 flags:5 dts:-0.047891 pts:-0.047891 pos:     36 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:5 dts:-0.024671 pts:-0.024671 pos:     42 size:   251
 ret: 0         st: 0 flags:1 dts:-0.001451 pts:-0.001451 pos:    293 size:   168
 ret: 0         st: 0 flags:1 dts: 0.021769 pts: 0.021769 pos:    461 size:    89
 ret: 0         st: 0 flags:1  ts: 0.412494
+ret: 0         st: 0 flags:1 dts: 0.346848 pts: 0.346848 pos:    899 size:    26
 ret: 0         st: 0 flags:1 dts: 0.370068 pts: 0.370068 pos:    925 size:    27
 ret: 0         st: 0 flags:1 dts: 0.393288 pts: 0.393288 pos:    952 size:    27
 ret: 0         st: 0 flags:1 dts: 0.416508 pts: 0.416508 pos:    979 size:    27
-ret: 0         st: 0 flags:1 dts: 0.439728 pts: 0.439728 pos:   1006 size:    27
 ret: 0         st: 1 flags:0  ts: 1.306667
 ret: 0         st: 0 flags:1 dts: 1.322086 pts: 1.322086 pos:   2911 size:    30
 ret: 0         st: 1 flags:1 dts: 1.323628 pts: 1.323628 pos:   2941 size:    27
@@ -98,10 +98,10 @@ ret: 0         st: 0 flags:1 dts: 0.114649 pts: 0.114649 pos:    631 size:    26
 ret: 0         st: 0 flags:1 dts: 0.137868 pts: 0.137868 pos:    657 size:    27
 ret: 0         st: 0 flags:1 dts: 0.161088 pts: 0.161088 pos:    684 size:    27
 ret: 0         st:-1 flags:1  ts: 0.989173
+ret: 0         st: 0 flags:1 dts: 0.927347 pts: 0.927347 pos:   1583 size:    27
 ret: 0         st: 0 flags:1 dts: 0.950567 pts: 0.950567 pos:   1610 size:    28
 ret: 0         st: 1 flags:1 dts: 0.952109 pts: 0.952109 pos:   1638 size:     6
 ret: 0         st: 0 flags:1 dts: 0.973787 pts: 0.973787 pos:   1644 size:    28
-ret: 0         st: 1 flags:1 dts: 0.975329 pts: 0.975329 pos:   1672 size:   251
 ret: 0         st: 0 flags:0  ts: 1.883333
 ret: 0         st: 0 flags:1 dts: 1.879365 pts: 1.879365 pos:   4511 size:    42
 ret: 0         st: 1 flags:1 dts: 1.880907 pts: 1.880907 pos:   4553 size:    28
@@ -118,17 +118,17 @@ ret: 0         st: 1 flags:1 dts: 0.952109 pts: 0.952109 pos:   1638 size:     6
 ret: 0         st: 0 flags:1 dts: 0.973787 pts: 0.973787 pos:   1644 size:    28
 ret: 0         st: 1 flags:1 dts: 0.975329 pts: 0.975329 pos:   1672 size:   251
 ret: 0         st: 1 flags:1  ts: 1.565850
+ret: 0         st: 0 flags:1 dts: 1.507846 pts: 1.507846 pos:   3419 size:    39
 ret: 0         st: 0 flags:1 dts: 1.531066 pts: 1.531066 pos:   3485 size:    42
+ret: 0         st: 1 flags:1 dts: 1.532608 pts: 1.532608 pos:   3527 size:    28
 ret: 0         st: 0 flags:1 dts: 1.554286 pts: 1.554286 pos:   3555 size:    41
-ret: 0         st: 1 flags:1 dts: 1.555828 pts: 1.555828 pos:   3596 size:    27
-ret: 0         st: 0 flags:1 dts: 1.577506 pts: 1.577506 pos:   3623 size:    41
 ret: 0         st:-1 flags:0  ts:-0.539992
 ret: 0         st: 0 flags:5 dts:-0.047891 pts:-0.047891 pos:     36 size:     6 skip:2112 discard:0
 ret: 0         st: 0 flags:5 dts:-0.024671 pts:-0.024671 pos:     42 size:   251
 ret: 0         st: 0 flags:1 dts:-0.001451 pts:-0.001451 pos:    293 size:   168
 ret: 0         st: 0 flags:1 dts: 0.021769 pts: 0.021769 pos:    461 size:    89
 ret: 0         st:-1 flags:1  ts: 0.354175
+ret: 0         st: 0 flags:1 dts: 0.300408 pts: 0.300408 pos:    845 size:    27
 ret: 0         st: 0 flags:1 dts: 0.323628 pts: 0.323628 pos:    872 size:    27
 ret: 0         st: 0 flags:1 dts: 0.346848 pts: 0.346848 pos:    899 size:    26
 ret: 0         st: 0 flags:1 dts: 0.370068 pts: 0.370068 pos:    925 size:    27
-ret: 0         st: 0 flags:1 dts: 0.393288 pts: 0.393288 pos:    952 size:    27
diff --git a/tests/ref/fate/preroll-aac-mov-seek-video b/tests/ref/fate/preroll-aac-mov-seek-video
index c1ac11d006..6f4d9a4ae0 100644
--- a/tests/ref/fate/preroll-aac-mov-seek-video
+++ b/tests/ref/fate/preroll-aac-mov-seek-video
@@ -1,7 +1,7 @@
-ret: 0         st: 1 flags:1 dts: 1.962667 pts: 1.962667 pos:2810490 size:   342
-ret: 0         st: 1 flags:1 dts: 1.984000 pts: 1.984000 pos:2829340 size:   341
-ret: 0         st: 0 flags:1 dts: 1.968633 pts: 2.068733 pos:2829681 size:149436
-ret: 0         st: 1 flags:1 dts: 2.005333 pts: 2.005333 pos:2979117 size:   341
+ret: 0         st: 1 flags:1 dts: 0.960000 pts: 0.960000 pos:1364132 size:   341
+ret: 0         st: 1 flags:1 dts: 0.981333 pts: 0.981333 pos:1385069 size:   341
+ret: 0         st: 0 flags:1 dts: 0.967633 pts: 1.067733 pos:1385410 size:225704
+ret: 0         st: 1 flags:1 dts: 1.002667 pts: 1.002667 pos:1611114 size:   342
 ret: 0         st:-1 flags:0  ts:-1.000000
 ret: 0         st: 0 flags:1 dts:-0.033367 pts: 0.066733 pos:  32776 size:198404
 ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 231180 size:   341
diff --git a/tests/ref/fate/preroll-opus-mkv-decode-noaccurate b/tests/ref/fate/preroll-opus-mkv-decode-noaccurate
index 2e46ab5e4b..d2fb804d26 100644
--- a/tests/ref/fate/preroll-opus-mkv-decode-noaccurate
+++ b/tests/ref/fate/preroll-opus-mkv-decode-noaccurate
@@ -3,11 +3,11 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 48000
 #channel_layout_name 0: mono
-0,       -432,       -432,      648,     1296, 0x00000000
+0,      -4272,      -4272,      648,     1296, 0x00000000
+0,      -3624,      -3624,      960,     1920, 0x00000000
+0,      -2664,      -2664,      960,     1920, 0x00000000
+0,      -1704,      -1704,      960,     1920, 0x00000000
+0,       -744,       -744,      960,     1920, 0x00000000
 0,        216,        216,      960,     1920, 0x00000000
 0,       1176,       1176,      960,     1920, 0x00000000
-0,       2136,       2136,      960,     1920, 0x00000000
-0,       3096,       3096,      960,     1920, 0x00000000
-0,       4056,       4056,      960,     1920, 0x00000000
-0,       5016,       5016,      960,     1920, 0x00000000
-0,       5976,       5976,      792,     1584, 0x00000000
+0,       2136,       2136,      792,     1584, 0x00000000
diff --git a/tests/ref/fate/preroll-opus-mkv-landing b/tests/ref/fate/preroll-opus-mkv-landing
index 7104a308cb..6e42f858ea 100644
--- a/tests/ref/fate/preroll-opus-mkv-landing
+++ b/tests/ref/fate/preroll-opus-mkv-landing
@@ -1,3 +1,3 @@
-packet|pts=514|dts=514|duration=20
-packet|pts=534|dts=534|duration=20
-packet|pts=554|dts=554|duration=20
+packet|pts=434|dts=434|duration=20
+packet|pts=454|dts=454|duration=20
+packet|pts=474|dts=474|duration=20
diff --git a/tests/ref/seek/mkv-codec-delay b/tests/ref/seek/mkv-codec-delay
index 2182f7d08e..728bd80809 100644
--- a/tests/ref/seek/mkv-codec-delay
+++ b/tests/ref/seek/mkv-codec-delay
@@ -16,21 +16,21 @@ ret: 0         st: 0 flags:1  ts:-0.741000
 ret: 0         st: 0 flags:1 dts:-0.007000 pts:-0.007000 pos:    748 size:   320
 ret:-1         st:-1 flags:0  ts: 2.153336
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.014000 pts: 1.014000 pos:   9306 size:   268 skip:0 discard:706
+ret: 0         st: 0 flags:1 dts: 0.954000 pts: 0.954000 pos:   8643 size:   154
 ret: 0         st: 0 flags:0  ts:-0.058000
 ret: 0         st: 0 flags:1 dts:-0.007000 pts:-0.007000 pos:    748 size:   320
 ret: 0         st: 0 flags:1  ts: 2.836000
 ret: 0         st: 0 flags:1 dts: 1.014000 pts: 1.014000 pos:   9306 size:   268 skip:0 discard:706
 ret:-1         st:-1 flags:0  ts: 1.730004
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.614000 pts: 0.614000 pos:   5903 size:   159
+ret: 0         st: 0 flags:1 dts: 0.534000 pts: 0.534000 pos:   5251 size:   150
 ret: 0         st: 0 flags:0  ts:-0.482000
 ret: 0         st: 0 flags:1 dts:-0.007000 pts:-0.007000 pos:    748 size:   320
 ret: 0         st: 0 flags:1  ts: 2.413000
 ret: 0         st: 0 flags:1 dts: 1.014000 pts: 1.014000 pos:   9306 size:   268 skip:0 discard:706
 ret:-1         st:-1 flags:0  ts: 1.306672
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.194000 pts: 0.194000 pos:   2512 size:   159
+ret: 0         st: 0 flags:1 dts: 0.114000 pts: 0.114000 pos:   1855 size:   158
 ret: 0         st: 0 flags:0  ts:-0.905000
 ret: 0         st: 0 flags:1 dts:-0.007000 pts:-0.007000 pos:    748 size:   320
 ret: 0         st: 0 flags:1  ts: 1.989000