Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/4] fate: never generate auto-generated references
@ 2024-02-26  0:45 Marton Balint
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
                   ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Marton Balint @ 2024-02-26  0:45 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

GEN=1 is used to generate reference files in the source tree, not
auto-generated reference samples.

Without this patch GEN=1 could overwrite the auto generated reference files
in each test where they are used causing failures.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 tests/fate-run.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 4b85fbf464..7a7344e645 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -658,7 +658,7 @@ else
 fi
 echo "${test}:${sig:-$err}:$cmpo:$erro" >$repfile
 
-if test $err != 0 && test $gen != "no" ; then
+if test $err != 0 && test $gen != "no" && test "${ref#tests/data/}" == "$ref" ; then
     echo "GEN     $ref"
     cp -f "$outfile" "$ref"
     err=$?
-- 
2.35.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-26  0:45 [FFmpeg-devel] [PATCH 1/4] fate: never generate auto-generated references Marton Balint
@ 2024-02-26  0:45 ` Marton Balint
  2024-02-26 22:19   ` Michael Niedermayer
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 3/4] fate/libswresample: force number of samples for the input of aresample async tests Marton Balint
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default Marton Balint
  2 siblings, 1 reply; 19+ messages in thread
From: Marton Balint @ 2024-02-26  0:45 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

This also fixes resampling with filter_size=1 and phase_shift=0, depending on
input chunk size noticable corrpution was hearable with this command line:

ffplay -f lavfi -i "sine=440:r=8000:samples_per_frame=32,aresample=24000:filter_size=1:phase_shift=0"

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 libswresample/resample.c          | 29 +++++++----------------------
 libswresample/resample.h          |  4 ++--
 libswresample/resample_template.c | 29 ++++++++++++++++++++++++-----
 tests/fate/libswresample.mak      |  4 ++--
 4 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/libswresample/resample.c b/libswresample/resample.c
index bd54a7002f..89859dec79 100644
--- a/libswresample/resample.c
+++ b/libswresample/resample.c
@@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
 
     *consumed = 0;
 
-    if (c->filter_length == 1 && c->phase_count == 1) {
-        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index;
-        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr;
-        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
-
-        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
-        if (dst_size > 0) {
-            for (i = 0; i < dst->ch_count; i++) {
-                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
-                if (i+1 == dst->ch_count) {
-                    c->index += dst_size * c->dst_incr_div;
-                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
-                    av_assert2(c->index >= 0);
-                    *consumed = c->index;
-                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
-                    c->index = 0;
-                }
-            }
-        }
-    } else {
+    {
         int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
         int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
         int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
@@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
         if (dst_size > 0) {
             /* resample_linear and resample_common should have same behavior
              * when frac and dst_incr_mod are zero */
-            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
-                            c->dsp.resample_linear : c->dsp.resample_common;
+            if (c->filter_length == 1 && c->phase_count == 1)
+                resample_func = c->dsp.resample_one;
+            else if (c->linear && (c->frac || c->dst_incr_mod))
+                resample_func = c->dsp.resample_linear;
+            else
+                resample_func = c->dsp.resample_common;
             for (i = 0; i < dst->ch_count; i++)
                 *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
         }
diff --git a/libswresample/resample.h b/libswresample/resample.h
index 1731dad3cf..8cc29effe8 100644
--- a/libswresample/resample.h
+++ b/libswresample/resample.h
@@ -51,8 +51,8 @@ typedef struct ResampleContext {
     int phase_count_compensation;      /* desired phase_count when compensation is enabled */
 
     struct {
-        void (*resample_one)(void *dst, const void *src,
-                             int n, int64_t index, int64_t incr);
+        int (*resample_one)(struct ResampleContext *c, void *dst,
+                            const void *src, int n, int update_ctx);
         int (*resample_common)(struct ResampleContext *c, void *dst,
                                const void *src, int n, int update_ctx);
         int (*resample_linear)(struct ResampleContext *c, void *dst,
diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
index 4c227b9940..0c6e0ee34d 100644
--- a/libswresample/resample_template.c
+++ b/libswresample/resample_template.c
@@ -72,17 +72,36 @@
 
 #endif
 
-static void RENAME(resample_one)(void *dest, const void *source,
-                                 int dst_size, int64_t index2, int64_t incr)
+static int RENAME(resample_one)(ResampleContext *c,
+                                void *dest, const void *source,
+                                int n, int update_ctx)
 {
     DELEM *dst = dest;
     const DELEM *src = source;
     int dst_index;
+    int frac= c->frac;
+    int sample_index = c->index;
+    int index = 0;
+
+    for (dst_index = 0; dst_index < n; dst_index++) {
+        dst[dst_index] = src[sample_index];
+
+        frac  += c->dst_incr_mod;
+        index += c->dst_incr_div;
+        if (frac >= c->src_incr) {
+            frac -= c->src_incr;
+            index++;
+        }
+        sample_index += index;
+        index = 0;
+    }
 
-    for (dst_index = 0; dst_index < dst_size; dst_index++) {
-        dst[dst_index] = src[index2 >> 32];
-        index2 += incr;
+    if(update_ctx){
+        c->frac= frac;
+        c->index= index;
     }
+
+    return sample_index;
 }
 
 static int RENAME(resample_common)(ResampleContext *c,
diff --git a/tests/fate/libswresample.mak b/tests/fate/libswresample.mak
index 2fc55ea61a..0971a6b3ba 100644
--- a/tests/fate/libswresample.mak
+++ b/tests/fate/libswresample.mak
@@ -347,13 +347,13 @@ endef
 fate-swr-resample_nn-fltp-44100-8000: CMP_TARGET = 591.03
 fate-swr-resample_nn-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20486
 
-fate-swr-resample_nn-fltp-8000-44100: CMP_TARGET = 3163.32
+fate-swr-resample_nn-fltp-8000-44100: CMP_TARGET = 3156.61
 fate-swr-resample_nn-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20480
 
 fate-swr-resample_nn-s16p-44100-8000: CMP_TARGET = 590.98
 fate-swr-resample_nn-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20486
 
-fate-swr-resample_nn-s16p-8000-44100: CMP_TARGET = 3163.39
+fate-swr-resample_nn-s16p-8000-44100: CMP_TARGET = 3156.61
 fate-swr-resample_nn-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20480
 
 define ARESAMPLE_ASYNC
-- 
2.35.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [FFmpeg-devel] [PATCH 3/4] fate/libswresample: force number of samples for the input of aresample async tests
  2024-02-26  0:45 [FFmpeg-devel] [PATCH 1/4] fate: never generate auto-generated references Marton Balint
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
@ 2024-02-26  0:45 ` Marton Balint
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default Marton Balint
  2 siblings, 0 replies; 19+ messages in thread
From: Marton Balint @ 2024-02-26  0:45 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

Since PTS is changed randomly for every audio frame, it matters. Also add some
forgotten filter dependencies.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 tests/fate/libswresample.mak | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tests/fate/libswresample.mak b/tests/fate/libswresample.mak
index 0971a6b3ba..405328797e 100644
--- a/tests/fate/libswresample.mak
+++ b/tests/fate/libswresample.mak
@@ -357,9 +357,9 @@ fate-swr-resample_nn-s16p-8000-44100: CMP_TARGET = 3156.61
 fate-swr-resample_nn-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20480
 
 define ARESAMPLE_ASYNC
-FATE_SWR_RESAMPLE += fate-swr-resample_async-$(3)-$(1)-$(2)
+FATE_SWR_RESAMPLE-$(call FILTERDEMDECENCMUX, ATRIM ASETNSAMPLES ASETPTS ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-swr-resample_async-$(3)-$(1)-$(2)
 fate-swr-resample_async-$(3)-$(1)-$(2): tests/data/asynth-$(1)-1.wav
-fate-swr-resample_async-$(3)-$(1)-$(2): CMD = ffmpeg -i $(TARGET_PATH)/tests/data/asynth-$(1)-1.wav -af atrim=end_sample=10240,asetpts=PTS+random\(0\)*200-100,aresample=$(2):async=50:min_hard_comp=0.100000:first_pts=0:linear_interp=0:exact_rational=0:internal_sample_fmt=$(3),aformat=$(3),aresample=$(1):linear_interp=0:exact_rational=0:internal_sample_fmt=$(3) -f wav -c:a pcm_s16le -
+fate-swr-resample_async-$(3)-$(1)-$(2): CMD = ffmpeg -i $(TARGET_PATH)/tests/data/asynth-$(1)-1.wav -af atrim=end_sample=10240,asetnsamples=2048,asetpts=PTS+random\(0\)*200-100,aresample=$(2):async=50:min_hard_comp=0.100000:first_pts=0:linear_interp=0:exact_rational=0:internal_sample_fmt=$(3),aformat=$(3),aresample=$(1):linear_interp=0:exact_rational=0:internal_sample_fmt=$(3) -f wav -c:a pcm_s16le -
 
 fate-swr-resample_async-$(3)-$(1)-$(2): CMP = stddev
 fate-swr-resample_async-$(3)-$(1)-$(2): CMP_UNIT = $(5)
@@ -631,9 +631,9 @@ fate-swr-resample_exact-s32p-96000-8000: CMP_TARGET = 58.54
 fate-swr-resample_exact-s32p-96000-8000: SIZE_TOLERANCE = 1152000 - 20496
 
 define ARESAMPLE_EXACT_ASYNC
-FATE_SWR_RESAMPLE += fate-swr-resample_exact_async-$(3)-$(1)-$(2)
+FATE_SWR_RESAMPLE-$(call FILTERDEMDECENCMUX, ATRIM ASETNSAMPLES ASETPTS ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-swr-resample_exact_async-$(3)-$(1)-$(2)
 fate-swr-resample_exact_async-$(3)-$(1)-$(2): tests/data/asynth-$(1)-1.wav
-fate-swr-resample_exact_async-$(3)-$(1)-$(2): CMD = ffmpeg -i $(TARGET_PATH)/tests/data/asynth-$(1)-1.wav -af atrim=end_sample=10240,asetpts=PTS+random\(0\)*200-100,aresample=$(2):async=50:min_hard_comp=0.100000:first_pts=0:internal_sample_fmt=$(3):exact_rational=on:linear_interp=0,aformat=$(3),aresample=$(1):internal_sample_fmt=$(3):exact_rational=on:linear_interp=0 -f wav -c:a pcm_s16le -
+fate-swr-resample_exact_async-$(3)-$(1)-$(2): CMD = ffmpeg -i $(TARGET_PATH)/tests/data/asynth-$(1)-1.wav -af atrim=end_sample=10240,asetnsamples=2048,asetpts=PTS+random\(0\)*200-100,aresample=$(2):async=50:min_hard_comp=0.100000:first_pts=0:internal_sample_fmt=$(3):exact_rational=on:linear_interp=0,aformat=$(3),aresample=$(1):internal_sample_fmt=$(3):exact_rational=on:linear_interp=0 -f wav -c:a pcm_s16le -
 
 fate-swr-resample_exact_async-$(3)-$(1)-$(2): CMP = stddev
 fate-swr-resample_exact_async-$(3)-$(1)-$(2): CMP_UNIT = $(5)
@@ -965,9 +965,9 @@ fate-swr-resample_exact_lin-s32p-96000-8000: CMP_TARGET = 58.54
 fate-swr-resample_exact_lin-s32p-96000-8000: SIZE_TOLERANCE = 1152000 - 20496
 
 define ARESAMPLE_EXACT_LIN_ASYNC
-FATE_SWR_RESAMPLE += fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2)
+FATE_SWR_RESAMPLE-$(call FILTERDEMDECENCMUX, ATRIM ASETNSAMPLES ASETPTS ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2)
 fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): tests/data/asynth-$(1)-1.wav
-fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): CMD = ffmpeg -i $(TARGET_PATH)/tests/data/asynth-$(1)-1.wav -af atrim=end_sample=10240,asetpts=PTS+random\(0\)*200-100,aresample=$(2):async=50:min_hard_comp=0.100000:first_pts=0:internal_sample_fmt=$(3):exact_rational=on:linear_interp=on,aformat=$(3),aresample=$(1):internal_sample_fmt=$(3):exact_rational=on:linear_interp=on -f wav -c:a pcm_s16le -
+fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): CMD = ffmpeg -i $(TARGET_PATH)/tests/data/asynth-$(1)-1.wav -af atrim=end_sample=10240,asetnsamples=2048,asetpts=PTS+random\(0\)*200-100,aresample=$(2):async=50:min_hard_comp=0.100000:first_pts=0:internal_sample_fmt=$(3):exact_rational=on:linear_interp=on,aformat=$(3),aresample=$(1):internal_sample_fmt=$(3):exact_rational=on:linear_interp=on -f wav -c:a pcm_s16le -
 
 fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): CMP = stddev
 fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): CMP_UNIT = $(5)
-- 
2.35.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default
  2024-02-26  0:45 [FFmpeg-devel] [PATCH 1/4] fate: never generate auto-generated references Marton Balint
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 3/4] fate/libswresample: force number of samples for the input of aresample async tests Marton Balint
@ 2024-02-26  0:45 ` Marton Balint
  2024-02-28 23:12   ` Andreas Rheinhardt
  2 siblings, 1 reply; 19+ messages in thread
From: Marton Balint @ 2024-02-26  0:45 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

The wav demuxer by default tried to demux 4096-byte packets which caused
packets with very few number of samples for files with high channel count.
This caused a significant overhead especially since the latest ffmpeg.c
threading changes.

So let's use a similar approach for selecting audio frame size which is already
used in the PCM demuxer, which is to read 25 times per second but at most 1024
samples.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 doc/demuxers.texi                          |  23 ++
 libavformat/wavdec.c                       |  19 +-
 tests/ref/fate/dcinema-encode              |  40 +--
 tests/ref/fate/filter-amerge               | 387 ++++++++++++++-------
 tests/ref/fate/filter-chorus               |  20 +-
 tests/ref/fate/filter-pan-downmix1         |  40 +--
 tests/ref/fate/filter-pan-downmix2         |  40 +--
 tests/ref/fate/filter-pan-stereo1          |  40 +--
 tests/ref/fate/filter-pan-stereo2          |  40 +--
 tests/ref/fate/filter-pan-upmix2           |  40 +--
 tests/ref/fate/g722-encode                 |  87 ++++-
 tests/ref/fate/g726-encode-2bit            |  41 ++-
 tests/ref/fate/g726-encode-3bit            |  24 +-
 tests/ref/fate/g726-encode-4bit            |  81 ++++-
 tests/ref/fate/g726-encode-5bit            |  27 +-
 tests/ref/fate/matroska-move-cues-to-front | 100 +++---
 tests/ref/fate/mov-channel-description     |   4 +-
 tests/ref/fate/mov-mp4-pcm                 |   4 +-
 tests/ref/fate/mov-mp4-pcm-float           |   2 +-
 tests/ref/seek/acodec-pcm-alaw             |  54 +--
 tests/ref/seek/acodec-pcm-f32le            |  54 +--
 tests/ref/seek/acodec-pcm-f64le            |  54 +--
 tests/ref/seek/acodec-pcm-mulaw            |  54 +--
 tests/ref/seek/acodec-pcm-s24le            |  54 +--
 tests/ref/seek/acodec-pcm-s32le            |  54 +--
 tests/ref/seek/acodec-pcm-u8               |  54 +--
 tests/ref/seek/lavf-wav                    |  30 +-
 27 files changed, 904 insertions(+), 563 deletions(-)

diff --git a/doc/demuxers.texi b/doc/demuxers.texi
index e4c5b560a6..d194294829 100644
--- a/doc/demuxers.texi
+++ b/doc/demuxers.texi
@@ -943,4 +943,27 @@ which in turn, acts as a ceiling for the size of scripts that can be read.
 Default is 1 MiB.
 @end table
 
+@section w64
+
+Sony Wave64 Audio demuxer.
+
+This demuxer accepts the following options:
+@table @option
+@item max_size
+See the same option for the @ref{wav} demuxer.
+@end table
+
+@anchor{wav}
+@section wav
+
+RIFF Wave Audio demuxer.
+
+This demuxer accepts the following options:
+@table @option
+@item max_size
+Specify the maximum packet size in bytes for the demuxed packets. By default
+this is set to 0, which means that a sensible value is chosen based on the
+input format.
+@end table
+
 @c man end DEMUXERS
diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c
index 0c6629b157..5ceb8bef23 100644
--- a/libavformat/wavdec.c
+++ b/libavformat/wavdec.c
@@ -73,10 +73,25 @@ static const AVOption demux_options[] = {
 #if CONFIG_WAV_DEMUXER
     { "ignore_length", "Ignore length", OFFSET(ignore_length), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, DEC },
 #endif
-    { "max_size",      "max size of single packet", OFFSET(max_size), AV_OPT_TYPE_INT, { .i64 = 4096 }, 1024, 1 << 22, DEC },
+    { "max_size",      "max size of single packet", OFFSET(max_size), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1 << 22, DEC },
     { NULL },
 };
 
+static void set_max_size(AVStream *st, WAVDemuxContext *wav)
+{
+    if (wav->max_size <= 0) {
+        int64_t nb_samples = av_clip(st->codecpar->sample_rate / 25, 1, 1024);
+        if (st->codecpar->block_align > 0 &&
+            st->codecpar->block_align * nb_samples < INT_MAX &&
+            st->codecpar->ch_layout.nb_channels > 0 &&
+            st->codecpar->block_align <= 8LL * st->codecpar->ch_layout.nb_channels) {
+            wav->max_size = st->codecpar->block_align * nb_samples;
+        } else {
+            wav->max_size = 4096;
+        }
+    }
+}
+
 static void set_spdif(AVFormatContext *s, WAVDemuxContext *wav)
 {
     if (CONFIG_SPDIF_DEMUXER && s->streams[0]->codecpar->codec_tag == 1) {
@@ -669,6 +684,7 @@ break_loop:
     ff_metadata_conv_ctx(s, NULL, ff_riff_info_conv);
 
     set_spdif(s, wav);
+    set_max_size(st, wav);
 
     return 0;
 }
@@ -981,6 +997,7 @@ static int w64_read_header(AVFormatContext *s)
     avio_seek(pb, data_ofs, SEEK_SET);
 
     set_spdif(s, wav);
+    set_max_size(st, wav);
 
     return 0;
 }
diff --git a/tests/ref/fate/dcinema-encode b/tests/ref/fate/dcinema-encode
index fabbc034f0..566d8f5091 100644
--- a/tests/ref/fate/dcinema-encode
+++ b/tests/ref/fate/dcinema-encode
@@ -7,23 +7,23 @@
 #sample_rate 0: 96000
 #channel_layout_name 0: 5.1(side)
 #stream#, dts,        pts, duration,     size, hash
-0,          0,          0,      341,     4092, 697cddfcd0e21f24782af0705b7048f3
-0,        341,        341,      341,     4092, a057b18cd493923fed33c18578f61e0b
-0,        682,        682,      341,     4092, f4eacfd888566040067b8e5ce7d276c6
-0,       1023,       1023,      341,     4092, 4de78d332ce2047014880a110c160dc2
-0,       1364,       1364,      341,     4092, 138ee3fc206538feca6de3d6d62d08eb
-0,       1705,       1705,      341,     4092, 187a2f2998aa1c0ba0130c57dd1d6c86
-0,       2046,       2046,      341,     4092, 54e6c3db8a5f8c09b47f025659a36b17
-0,       2387,       2387,      341,     4092, 8abfdf44a24c158429c71e01cee31e20
-0,       2728,       2728,      341,     4092, bd08f5018edc5dc4520739e913ed89a3
-0,       3069,       3069,      341,     4092, 9f60ba4275646344e4a9b3c647efffe9
-0,       3410,       3410,      341,     4092, 00cefc1f27230cdd06ecd43132e16327
-0,       3751,       3751,      341,     4092, d4d13047cd639ed722a4ae1bc1f06991
-0,       4092,       4092,      341,     4092, 16b227e4f968c11cba279506f00d5172
-0,       4433,       4433,      341,     4092, 70f4046f709fdd4d80e2f2ffc862f21a
-0,       4774,       4774,      341,     4092, adbef4b4ef728f0c2a31b4b0baba50a0
-0,       5115,       5115,      341,     4092, fe009b6cc96b9d1098dcc5fba0e6b3fa
-0,       5456,       5456,      341,     4092, 4462b2f1654c9b31fdd7ab04ffb84192
-0,       5797,       5797,      341,     4092, 2e96ba3bd13de03f9cfdc2b8c3ea0620
-0,       6138,       6138,      341,     4092, 395c920f10cce6670029a98095eba027
-0,       6479,       6479,      341,     4092, 28d4c2f6364f31cb61f4aa144badc734
+0,          0,          0,     1024,    12288, 848250bf0a20e324f60151629134ebd5
+0,       1024,       1024,     1024,    12288, cd3c42240d163a7e8835aeda9538f881
+0,       2048,       2048,     1024,    12288, f213a268e7ab62b53a4a4acb9b303dfb
+0,       3072,       3072,     1024,    12288, 14d4f3289b057394abc995bfea58912a
+0,       4096,       4096,     1024,    12288, a69453c3f0c23abfacb49b15aedc432a
+0,       5120,       5120,     1024,    12288, 6578b4a89b1fa4c8897b1376974b685d
+0,       6144,       6144,     1024,    12288, 4893b62addf1bea4c03c173f173aa082
+0,       7168,       7168,     1024,    12288, 992b70ea94c339dfda2d3514ac56c4a9
+0,       8192,       8192,     1024,    12288, 543f85139b77d30f8a46fd22d63e3ec7
+0,       9216,       9216,     1024,    12288, f52f825a2fe71f66786d5cd08487e271
+0,      10240,      10240,     1024,    12288, 50ac352cd73a803f52bfd393e610f83b
+0,      11264,      11264,     1024,    12288, e9475a9a8794b9b0b912b855bc05001f
+0,      12288,      12288,     1024,    12288, bf205474f44a381583b1f077ab8a9d0c
+0,      13312,      13312,     1024,    12288, f5655b1da90d808c7e05b4bda02233ca
+0,      14336,      14336,     1024,    12288, f8493bb74a270b50706cace85549c317
+0,      15360,      15360,     1024,    12288, c299fbbdcae68c97bca63210f6a1f7da
+0,      16384,      16384,     1024,    12288, 2f263932e3d4c419853e3369d70ef8d9
+0,      17408,      17408,     1024,    12288, 09862736b8a1a1ce5c8d23814fb054cd
+0,      18432,      18432,     1024,    12288, a99506638c5a3d84d3fa46ee2ba6c5ad
+0,      19456,      19456,     1024,    12288, ab6f04f68cfbf2c9a89e9641604b3a50
diff --git a/tests/ref/fate/filter-amerge b/tests/ref/fate/filter-amerge
index 89c07029fd..83befc20b6 100644
--- a/tests/ref/fate/filter-amerge
+++ b/tests/ref/fate/filter-amerge
@@ -3,133 +3,262 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
-0,          0,          0,     2048,     8192, 0x120efa65
-0,       2048,       2048,     2048,     8192, 0x7b3cebf7
-0,       4096,       4096,     2048,     8192, 0x0fb8ee01
-0,       6144,       6144,     2048,     8192, 0x47a9f271
-0,       8192,       8192,     2048,     8192, 0x47a8ed5b
-0,      10240,      10240,     2048,     8192, 0xdab6f33f
-0,      12288,      12288,     2048,     8192, 0xda4df7eb
-0,      14336,      14336,     2048,     8192, 0xc83ce449
-0,      16384,      16384,     2048,     8192, 0x4954e765
-0,      18432,      18432,     2048,     8192, 0x0214f5d5
-0,      20480,      20480,     2048,     8192, 0x2302f3c9
-0,      22528,      22528,     2048,     8192, 0x2b57ef5b
-0,      24576,      24576,     2048,     8192, 0xad22f075
-0,      26624,      26624,     2048,     8192, 0x9bd5ee8b
-0,      28672,      28672,     2048,     8192, 0x91a4e9e1
-0,      30720,      30720,     2048,     8192, 0x85a9fd7f
-0,      32768,      32768,     2048,     8192, 0x120efa65
-0,      34816,      34816,     2048,     8192, 0x7b3cebf7
-0,      36864,      36864,     2048,     8192, 0x0fb8ee01
-0,      38912,      38912,     2048,     8192, 0x47a9f271
-0,      40960,      40960,     2048,     8192, 0x47a8ed5b
-0,      43008,      43008,     2048,     8192, 0x76f7c64f
-0,      45056,      45056,     2048,     8192, 0xade0f6f5
-0,      47104,      47104,     2048,     8192, 0xcc1ce131
-0,      49152,      49152,     2048,     8192, 0x11aaf88b
-0,      51200,      51200,     2048,     8192, 0xcd50e409
-0,      53248,      53248,     2048,     8192, 0x7f72ee63
-0,      55296,      55296,     2048,     8192, 0xf7b4ff5d
-0,      57344,      57344,     2048,     8192, 0xd8bc4192
-0,      59392,      59392,     2048,     8192, 0xc8fb0418
-0,      61440,      61440,     2048,     8192, 0x0859cac9
-0,      63488,      63488,     2048,     8192, 0x7529f279
-0,      65536,      65536,     2048,     8192, 0x0ee0df7b
-0,      67584,      67584,     2048,     8192, 0x07edef6d
-0,      69632,      69632,     2048,     8192, 0x7d02ea45
-0,      71680,      71680,     2048,     8192, 0x770104a8
-0,      73728,      73728,     2048,     8192, 0x7124f553
-0,      75776,      75776,     2048,     8192, 0x6df6269a
-0,      77824,      77824,     2048,     8192, 0x4218002c
-0,      79872,      79872,     2048,     8192, 0x274fe03d
-0,      81920,      81920,     2048,     8192, 0xd00f5aae
-0,      83968,      83968,     2048,     8192, 0x907dfe51
-0,      86016,      86016,     2048,     8192, 0xc2c10ed2
-0,      88064,      88064,     2048,     8192, 0x293aa355
-0,      90112,      90112,     2048,     8192, 0xb84a591d
-0,      92160,      92160,     2048,     8192, 0x44f64e87
-0,      94208,      94208,     2048,     8192, 0x0f6869bd
-0,      96256,      96256,     2048,     8192, 0xb3dcc44b
-0,      98304,      98304,     2048,     8192, 0x44f85293
-0,     100352,     100352,     2048,     8192, 0x8545ad0f
-0,     102400,     102400,     2048,     8192, 0xdee2a193
-0,     104448,     104448,     2048,     8192, 0x46a96e2d
-0,     106496,     106496,     2048,     8192, 0xcebc56a1
-0,     108544,     108544,     2048,     8192, 0x5353a35b
-0,     110592,     110592,     2048,     8192, 0x74aceb33
-0,     112640,     112640,     2048,     8192, 0x34fa1488
-0,     114688,     114688,     2048,     8192, 0x711ecd6d
-0,     116736,     116736,     2048,     8192, 0x277ac8ab
-0,     118784,     118784,     2048,     8192, 0xb7b91ba8
-0,     120832,     120832,     2048,     8192, 0xcab704de
-0,     122880,     122880,     2048,     8192, 0x695ae413
-0,     124928,     124928,     2048,     8192, 0xee618d29
-0,     126976,     126976,     2048,     8192, 0xe7caf401
-0,     129024,     129024,     2048,     8192, 0xc12c230e
-0,     131072,     131072,     2048,     8192, 0x9124ec71
-0,     133120,     133120,     2048,     8192, 0xd2bad2f7
-0,     135168,     135168,     2048,     8192, 0x2fc6da33
-0,     137216,     137216,     2048,     8192, 0x66d92c28
-0,     139264,     139264,     2048,     8192, 0x3373ddfd
-0,     141312,     141312,     2048,     8192, 0x419ae325
-0,     143360,     143360,     2048,     8192, 0x6b5ad233
-0,     145408,     145408,     2048,     8192, 0xb62f11a0
-0,     147456,     147456,     2048,     8192, 0x7084c5ef
-0,     149504,     149504,     2048,     8192, 0x42c8f8bd
-0,     151552,     151552,     2048,     8192, 0xd0e2d5a3
-0,     153600,     153600,     2048,     8192, 0xcf8f0826
-0,     155648,     155648,     2048,     8192, 0x164cc963
-0,     157696,     157696,     2048,     8192, 0xb14db49f
-0,     159744,     159744,     2048,     8192, 0x0fe50df4
-0,     161792,     161792,     2048,     8192, 0x7669207a
-0,     163840,     163840,     2048,     8192, 0x2a16f23b
-0,     165888,     165888,     2048,     8192, 0xc629f685
-0,     167936,     167936,     2048,     8192, 0x79ee0298
-0,     169984,     169984,     2048,     8192, 0xf9bdf179
-0,     172032,     172032,     2048,     8192, 0x5220d047
-0,     174080,     174080,     2048,     8192, 0x915ae8b7
-0,     176128,     176128,     2048,     8192, 0x8c26e3af
-0,     178176,     178176,     2048,     8192, 0x72e5c661
-0,     180224,     180224,     2048,     8192, 0xfca2d795
-0,     182272,     182272,     2048,     8192, 0x6367f5a9
-0,     184320,     184320,     2048,     8192, 0x32f8d0d1
-0,     186368,     186368,     2048,     8192, 0x7a08c3c7
-0,     188416,     188416,     2048,     8192, 0xe2f0fb55
-0,     190464,     190464,     2048,     8192, 0x3fd706e8
-0,     192512,     192512,     2048,     8192, 0xf5845786
-0,     194560,     194560,     2048,     8192, 0x2a8fdcbd
-0,     196608,     196608,     2048,     8192, 0xa71f03fc
-0,     198656,     198656,     2048,     8192, 0xc1210dce
-0,     200704,     200704,     2048,     8192, 0x0cd21800
-0,     202752,     202752,     2048,     8192, 0x2e8cfb47
-0,     204800,     204800,     2048,     8192, 0x2ab816ec
-0,     206848,     206848,     2048,     8192, 0xc2b40256
-0,     208896,     208896,     2048,     8192, 0xf72d0018
-0,     210944,     210944,     2048,     8192, 0xc7e01b76
-0,     212992,     212992,     2048,     8192, 0xbcf50a48
-0,     215040,     215040,     2048,     8192, 0x1101ec23
-0,     217088,     217088,     2048,     8192, 0x066a1108
-0,     219136,     219136,     2048,     8192, 0xda831e12
-0,     221184,     221184,     2048,     8192, 0x92f9e677
-0,     223232,     223232,     2048,     8192, 0x3439daf3
-0,     225280,     225280,     2048,     8192, 0xf812694a
-0,     227328,     227328,     2048,     8192, 0x3751051e
-0,     229376,     229376,     2048,     8192, 0x9f4cdddd
-0,     231424,     231424,     2048,     8192, 0xae4ad40b
-0,     233472,     233472,     2048,     8192, 0x569ec9db
-0,     235520,     235520,     2048,     8192, 0x2056e683
-0,     237568,     237568,     2048,     8192, 0x84d8caef
-0,     239616,     239616,     2048,     8192, 0x9eefdf83
-0,     241664,     241664,     2048,     8192, 0x4feee1c1
-0,     243712,     243712,     2048,     8192, 0x72e5c661
-0,     245760,     245760,     2048,     8192, 0xfca2d795
-0,     247808,     247808,     2048,     8192, 0x6367f5a9
-0,     249856,     249856,     2048,     8192, 0x32f8d0d1
-0,     251904,     251904,     2048,     8192, 0x7a08c3c7
-0,     253952,     253952,     2048,     8192, 0xe2f0fb55
-0,     256000,     256000,     2048,     8192, 0x3fd706e8
-0,     258048,     258048,     2048,     8192, 0xf5845786
-0,     260096,     260096,     2048,     8192, 0x2a8fdcbd
-0,     262144,     262144,     2048,     8192, 0xa71f03fc
+0,          0,          0,     1024,     4096, 0x29e3eecf
+0,       1024,       1024,     1024,     4096, 0x18390b96
+0,       2048,       2048,     1024,     4096, 0xc477fa99
+0,       3072,       3072,     1024,     4096, 0x3bc0f14f
+0,       4096,       4096,     1024,     4096, 0x2379ed91
+0,       5120,       5120,     1024,     4096, 0xfd6a0070
+0,       6144,       6144,     1024,     4096, 0x0b01f4cf
+0,       7168,       7168,     1024,     4096, 0x6716fd93
+0,       8192,       8192,     1024,     4096, 0x1840f25b
+0,       9216,       9216,     1024,     4096, 0x9c1ffaf1
+0,      10240,      10240,     1024,     4096, 0xcbedefaf
+0,      11264,      11264,     1024,     4096, 0x3e050390
+0,      12288,      12288,     1024,     4096, 0xb30e0090
+0,      13312,      13312,     1024,     4096, 0x26b8f75b
+0,      14336,      14336,     1024,     4096, 0xd706e311
+0,      15360,      15360,     1024,     4096, 0x0c480138
+0,      16384,      16384,     1024,     4096, 0x6c9a0216
+0,      17408,      17408,     1024,     4096, 0x7abce54f
+0,      18432,      18432,     1024,     4096, 0xda45f63f
+0,      19456,      19456,     1024,     4096, 0x50d5ff87
+0,      20480,      20480,     1024,     4096, 0x59be0352
+0,      21504,      21504,     1024,     4096, 0xa61af077
+0,      22528,      22528,     1024,     4096, 0x84c4fc07
+0,      23552,      23552,     1024,     4096, 0x4a35f345
+0,      24576,      24576,     1024,     4096, 0xbb65fa81
+0,      25600,      25600,     1024,     4096, 0xf6c7f5e5
+0,      26624,      26624,     1024,     4096, 0xd3270138
+0,      27648,      27648,     1024,     4096, 0x4782ed53
+0,      28672,      28672,     1024,     4096, 0xe308f055
+0,      29696,      29696,     1024,     4096, 0x7d33f97d
+0,      30720,      30720,     1024,     4096, 0xb8b00dd4
+0,      31744,      31744,     1024,     4096, 0x7ff7efab
+0,      32768,      32768,     1024,     4096, 0x29e3eecf
+0,      33792,      33792,     1024,     4096, 0x18390b96
+0,      34816,      34816,     1024,     4096, 0xc477fa99
+0,      35840,      35840,     1024,     4096, 0x3bc0f14f
+0,      36864,      36864,     1024,     4096, 0x2379ed91
+0,      37888,      37888,     1024,     4096, 0xfd6a0070
+0,      38912,      38912,     1024,     4096, 0x0b01f4cf
+0,      39936,      39936,     1024,     4096, 0x6716fd93
+0,      40960,      40960,     1024,     4096, 0x1840f25b
+0,      41984,      41984,     1024,     4096, 0x9c1ffaf1
+0,      43008,      43008,     1024,     4096, 0xcbedefaf
+0,      44032,      44032,     1024,     4096, 0xda37d691
+0,      45056,      45056,     1024,     4096, 0x7193ecbf
+0,      46080,      46080,     1024,     4096, 0x6e4a0a36
+0,      47104,      47104,     1024,     4096, 0x61cfe70d
+0,      48128,      48128,     1024,     4096, 0xc19ffa15
+0,      49152,      49152,     1024,     4096, 0x7b32fb3d
+0,      50176,      50176,     1024,     4096, 0xdacefd3f
+0,      51200,      51200,     1024,     4096, 0x3964f64d
+0,      52224,      52224,     1024,     4096, 0xdcf2edad
+0,      53248,      53248,     1024,     4096, 0x1367f69b
+0,      54272,      54272,     1024,     4096, 0xd4c6f7b9
+0,      55296,      55296,     1024,     4096, 0x9e041186
+0,      56320,      56320,     1024,     4096, 0xe939edd7
+0,      57344,      57344,     1024,     4096, 0xa932336a
+0,      58368,      58368,     1024,     4096, 0x5f510e28
+0,      59392,      59392,     1024,     4096, 0x4b8501c8
+0,      60416,      60416,     1024,     4096, 0xfbc30250
+0,      61440,      61440,     1024,     4096, 0x5e7fd855
+0,      62464,      62464,     1024,     4096, 0x8ef1f265
+0,      63488,      63488,     1024,     4096, 0x9f7601c2
+0,      64512,      64512,     1024,     4096, 0xb400f0b7
+0,      65536,      65536,     1024,     4096, 0x4c91e10b
+0,      66560,      66560,     1024,     4096, 0x3f41fe61
+0,      67584,      67584,     1024,     4096, 0x74fff9b9
+0,      68608,      68608,     1024,     4096, 0x18bbf5a5
+0,      69632,      69632,     1024,     4096, 0x51a70180
+0,      70656,      70656,     1024,     4096, 0x29f3e8c5
+0,      71680,      71680,     1024,     4096, 0x562efdb9
+0,      72704,      72704,     1024,     4096, 0xa2e006e0
+0,      73728,      73728,     1024,     4096, 0xa1bff541
+0,      74752,      74752,     1024,     4096, 0xd95b0012
+0,      75776,      75776,     1024,     4096, 0xd93e0912
+0,      76800,      76800,     1024,     4096, 0x6c2a1d88
+0,      77824,      77824,     1024,     4096, 0xb4d8fb8b
+0,      78848,      78848,     1024,     4096, 0xf14b0492
+0,      79872,      79872,     1024,     4096, 0x1c7be7b7
+0,      80896,      80896,     1024,     4096, 0xc181f877
+0,      81920,      81920,     1024,     4096, 0xba132d14
+0,      82944,      82944,     1024,     4096, 0xabae2d9a
+0,      83968,      83968,     1024,     4096, 0xb07fff15
+0,      84992,      84992,     1024,     4096, 0xa0c1ff2d
+0,      86016,      86016,     1024,     4096, 0x19f7fd1f
+0,      87040,      87040,     1024,     4096, 0xcb6d11a4
+0,      88064,      88064,     1024,     4096, 0x166ac8b7
+0,      89088,      89088,     1024,     4096, 0xe68dda8f
+0,      90112,      90112,     1024,     4096, 0xe457b505
+0,      91136,      91136,     1024,     4096, 0xda25a409
+0,      92160,      92160,     1024,     4096, 0x5b5d9d3b
+0,      93184,      93184,     1024,     4096, 0xa61eb13d
+0,      94208,      94208,     1024,     4096, 0xac93b66f
+0,      95232,      95232,     1024,     4096, 0xc7aeb33f
+0,      96256,      96256,     1024,     4096, 0x52cccfb5
+0,      97280,      97280,     1024,     4096, 0x4e4cf487
+0,      98304,      98304,     1024,     4096, 0x19c07f35
+0,      99328,      99328,     1024,     4096, 0x63ecd34f
+0,     100352,     100352,     1024,     4096, 0x122aec53
+0,     101376,     101376,     1024,     4096, 0x6581c0ad
+0,     102400,     102400,     1024,     4096, 0x640edb15
+0,     103424,     103424,     1024,     4096, 0x5d66c66f
+0,     104448,     104448,     1024,     4096, 0x069e9d35
+0,     105472,     105472,     1024,     4096, 0x5c9fd0e9
+0,     106496,     106496,     1024,     4096, 0x72468667
+0,     107520,     107520,     1024,     4096, 0x6e6dd02b
+0,     108544,     108544,     1024,     4096, 0x93edce33
+0,     109568,     109568,     1024,     4096, 0xcdfbd519
+0,     110592,     110592,     1024,     4096, 0x8463f2bb
+0,     111616,     111616,     1024,     4096, 0x5ca6f869
+0,     112640,     112640,     1024,     4096, 0x099a0398
+0,     113664,     113664,     1024,     4096, 0xa7fa10f0
+0,     114688,     114688,     1024,     4096, 0x28caddd3
+0,     115712,     115712,     1024,     4096, 0x4852ef8b
+0,     116736,     116736,     1024,     4096, 0x0250ee7b
+0,     117760,     117760,     1024,     4096, 0x9583da21
+0,     118784,     118784,     1024,     4096, 0x7365fb33
+0,     119808,     119808,     1024,     4096, 0x28c82066
+0,     120832,     120832,     1024,     4096, 0x94650be4
+0,     121856,     121856,     1024,     4096, 0xeb21f8eb
+0,     122880,     122880,     1024,     4096, 0xcd88f455
+0,     123904,     123904,     1024,     4096, 0x66a9efaf
+0,     124928,     124928,     1024,     4096, 0x5500c6ed
+0,     125952,     125952,     1024,     4096, 0x0ee0c62d
+0,     126976,     126976,     1024,     4096, 0x34d30762
+0,     128000,     128000,     1024,     4096, 0x8c0dec9f
+0,     129024,     129024,     1024,     4096, 0x790011d8
+0,     130048,     130048,     1024,     4096, 0xb76a1136
+0,     131072,     131072,     1024,     4096, 0x7dddfea7
+0,     132096,     132096,     1024,     4096, 0xb473edbb
+0,     133120,     133120,     1024,     4096, 0x40f6e94d
+0,     134144,     134144,     1024,     4096, 0xe6fae99b
+0,     135168,     135168,     1024,     4096, 0xbf5fe741
+0,     136192,     136192,     1024,     4096, 0x877df2e3
+0,     137216,     137216,     1024,     4096, 0x981d03f8
+0,     138240,     138240,     1024,     4096, 0x4afc2830
+0,     139264,     139264,     1024,     4096, 0x1213ee89
+0,     140288,     140288,     1024,     4096, 0xb1aaef65
+0,     141312,     141312,     1024,     4096, 0x2406ef09
+0,     142336,     142336,     1024,     4096, 0xad66f40d
+0,     143360,     143360,     1024,     4096, 0x7a65d88d
+0,     144384,     144384,     1024,     4096, 0x55dff997
+0,     145408,     145408,     1024,     4096, 0x948b21f4
+0,     146432,     146432,     1024,     4096, 0xc1c4ef9d
+0,     147456,     147456,     1024,     4096, 0x81a6f5f3
+0,     148480,     148480,     1024,     4096, 0xd82fcfed
+0,     149504,     149504,     1024,     4096, 0x4ba50b0c
+0,     150528,     150528,     1024,     4096, 0x2cc4edb1
+0,     151552,     151552,     1024,     4096, 0x5085e701
+0,     152576,     152576,     1024,     4096, 0x97beee93
+0,     153600,     153600,     1024,     4096, 0x3ea10e94
+0,     154624,     154624,     1024,     4096, 0x4347f983
+0,     155648,     155648,     1024,     4096, 0x17f4d38f
+0,     156672,     156672,     1024,     4096, 0x47f2f5c5
+0,     157696,     157696,     1024,     4096, 0x5484db7b
+0,     158720,     158720,     1024,     4096, 0xdef2d915
+0,     159744,     159744,     1024,     4096, 0xccfaf223
+0,     160768,     160768,     1024,     4096, 0x2fcf1bc2
+0,     161792,     161792,     1024,     4096, 0xc2cc10e4
+0,     162816,     162816,     1024,     4096, 0x63bc0f96
+0,     163840,     163840,     1024,     4096, 0x23d6eb63
+0,     164864,     164864,     1024,     4096, 0xf97806d8
+0,     165888,     165888,     1024,     4096, 0xe9ec0836
+0,     166912,     166912,     1024,     4096, 0x7481ee4f
+0,     167936,     167936,     1024,     4096, 0x3aae0f32
+0,     168960,     168960,     1024,     4096, 0x1103f357
+0,     169984,     169984,     1024,     4096, 0x1bbf02c6
+0,     171008,     171008,     1024,     4096, 0x7b6aeeb3
+0,     172032,     172032,     1024,     4096, 0x377eeec9
+0,     173056,     173056,     1024,     4096, 0xaab0e16f
+0,     174080,     174080,     1024,     4096, 0x2ffff0a3
+0,     175104,     175104,     1024,     4096, 0x4fb6f805
+0,     176128,     176128,     1024,     4096, 0xf5c8fdf3
+0,     177152,     177152,     1024,     4096, 0x782fe5ad
+0,     178176,     178176,     1024,     4096, 0xce0f0d0a
+0,     179200,     179200,     1024,     4096, 0xf888b957
+0,     180224,     180224,     1024,     4096, 0x075ced7f
+0,     181248,     181248,     1024,     4096, 0x269eea07
+0,     182272,     182272,     1024,     4096, 0x838ded59
+0,     183296,     183296,     1024,     4096, 0x71410850
+0,     184320,     184320,     1024,     4096, 0xb6a0d1d5
+0,     185344,     185344,     1024,     4096, 0x6787feed
+0,     186368,     186368,     1024,     4096, 0xbdcefa91
+0,     187392,     187392,     1024,     4096, 0xc135c927
+0,     188416,     188416,     1024,     4096, 0xe7cd11d6
+0,     189440,     189440,     1024,     4096, 0x8a61e97f
+0,     190464,     190464,     1024,     4096, 0x86adf3e3
+0,     191488,     191488,     1024,     4096, 0xa46a12f6
+0,     192512,     192512,     1024,     4096, 0x1c8f2c18
+0,     193536,     193536,     1024,     4096, 0x2fa62b6e
+0,     194560,     194560,     1024,     4096, 0xb644e65d
+0,     195584,     195584,     1024,     4096, 0xcc33f651
+0,     196608,     196608,     1024,     4096, 0x6de62030
+0,     197632,     197632,     1024,     4096, 0x1b0ce3bd
+0,     198656,     198656,     1024,     4096, 0x92d80e40
+0,     199680,     199680,     1024,     4096, 0x20edff7f
+0,     200704,     200704,     1024,     4096, 0xeeddf9eb
+0,     201728,     201728,     1024,     4096, 0x83861e06
+0,     202752,     202752,     1024,     4096, 0x9d90e441
+0,     203776,     203776,     1024,     4096, 0xaae21706
+0,     204800,     204800,     1024,     4096, 0x3da411d0
+0,     205824,     205824,     1024,     4096, 0xdc52051c
+0,     206848,     206848,     1024,     4096, 0x17e7233a
+0,     207872,     207872,     1024,     4096, 0xe9c1df0d
+0,     208896,     208896,     1024,     4096, 0xf725f4d1
+0,     209920,     209920,     1024,     4096, 0x0a760b38
+0,     210944,     210944,     1024,     4096, 0xbd67e3db
+0,     211968,     211968,     1024,     4096, 0x84c8378c
+0,     212992,     212992,     1024,     4096, 0xb045036a
+0,     214016,     214016,     1024,     4096, 0x697706de
+0,     215040,     215040,     1024,     4096, 0x15e6038e
+0,     216064,     216064,     1024,     4096, 0x17c4e895
+0,     217088,     217088,     1024,     4096, 0xd1d81f0e
+0,     218112,     218112,     1024,     4096, 0x3764f1eb
+0,     219136,     219136,     1024,     4096, 0xce58f645
+0,     220160,     220160,     1024,     4096, 0xd53127be
+0,     221184,     221184,     1024,     4096, 0xacc7df11
+0,     222208,     222208,     1024,     4096, 0x05040766
+0,     223232,     223232,     1024,     4096, 0x131efcf5
+0,     224256,     224256,     1024,     4096, 0xe3dcddef
+0,     225280,     225280,     1024,     4096, 0xd042a3c2
+0,     226304,     226304,     1024,     4096, 0x6e3dc579
+0,     227328,     227328,     1024,     4096, 0xd6920a88
+0,     228352,     228352,     1024,     4096, 0xd6c9fa87
+0,     229376,     229376,     1024,     4096, 0x17efd0b5
+0,     230400,     230400,     1024,     4096, 0x73a90d28
+0,     231424,     231424,     1024,     4096, 0x077de2a5
+0,     232448,     232448,     1024,     4096, 0x8248f157
+0,     233472,     233472,     1024,     4096, 0xa459f6eb
+0,     234496,     234496,     1024,     4096, 0x1ab5d2e1
+0,     235520,     235520,     1024,     4096, 0xee960ca4
+0,     236544,     236544,     1024,     4096, 0xe5ccd9df
+0,     237568,     237568,     1024,     4096, 0x85cddf19
+0,     238592,     238592,     1024,     4096, 0x9dceebc7
+0,     239616,     239616,     1024,     4096, 0x81becdab
+0,     240640,     240640,     1024,     4096, 0xac4d11d8
+0,     241664,     241664,     1024,     4096, 0x9b61fc05
+0,     242688,     242688,     1024,     4096, 0x782fe5ad
+0,     243712,     243712,     1024,     4096, 0xce0f0d0a
+0,     244736,     244736,     1024,     4096, 0xf888b957
+0,     245760,     245760,     1024,     4096, 0x075ced7f
+0,     246784,     246784,     1024,     4096, 0x269eea07
+0,     247808,     247808,     1024,     4096, 0x838ded59
+0,     248832,     248832,     1024,     4096, 0x71410850
+0,     249856,     249856,     1024,     4096, 0xb6a0d1d5
+0,     250880,     250880,     1024,     4096, 0x6787feed
+0,     251904,     251904,     1024,     4096, 0xbdcefa91
+0,     252928,     252928,     1024,     4096, 0xc135c927
+0,     253952,     253952,     1024,     4096, 0xe7cd11d6
+0,     254976,     254976,     1024,     4096, 0x8a61e97f
+0,     256000,     256000,     1024,     4096, 0x86adf3e3
+0,     257024,     257024,     1024,     4096, 0xa46a12f6
+0,     258048,     258048,     1024,     4096, 0x1c8f2c18
+0,     259072,     259072,     1024,     4096, 0x2fa62b6e
+0,     260096,     260096,     1024,     4096, 0xb644e65d
+0,     261120,     261120,     1024,     4096, 0xcc33f651
+0,     262144,     262144,     1024,     4096, 0x6de62030
+0,     263168,     263168,     1024,     4096, 0x1b0ce3bd
 0,     264192,     264192,      408,     1632, 0x53c44589
diff --git a/tests/ref/fate/filter-chorus b/tests/ref/fate/filter-chorus
index 97c7919655..219567d0e8 100644
--- a/tests/ref/fate/filter-chorus
+++ b/tests/ref/fate/filter-chorus
@@ -3,13 +3,13 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 22050
 #channel_layout_name 0: mono
-0,          0,          0,     2048,     4096, 0x1fc6f1f1
-0,       2048,       2048,     2048,     4096, 0xe5f7f442
-0,       4096,       4096,     2048,     4096, 0x4f14ecb9
-0,       6144,       6144,     2048,     4096, 0xd431eeee
-0,       8192,       8192,     2048,     4096, 0x4c38ead6
-0,      10240,      10240,     2048,     4096, 0x786cf071
-0,      12288,      12288,     2048,     4096, 0xe291f200
-0,      14336,      14336,     2048,     4096, 0x47d2f1dd
-0,      16384,      16384,     2048,     4096, 0xd6a1f028
-0,      18432,      18432,     2048,     4096, 0x2bf4ec79
+0,          0,          0,      882,     1764, 0xce976a71
+0,        882,        882,      882,     1764, 0xe7b76c72
+0,       1764,       1764,      882,     1764, 0x2b0b6c6f
+0,       2646,       2646,      882,     1764, 0xa65d6c4e
+0,       3528,       3528,      882,     1764, 0x9ebc6c6f
+0,       4410,       4410,      882,     1764, 0x902b6a72
+0,       5292,       5292,      882,     1764, 0x90d46a73
+0,       6174,       6174,      882,     1764, 0x92176a6f
+0,       7056,       7056,      882,     1764, 0xaaae6a74
+0,       7938,       7938,      882,     1764, 0x81da6c71
diff --git a/tests/ref/fate/filter-pan-downmix1 b/tests/ref/fate/filter-pan-downmix1
index 85630ab179..54a4189618 100644
--- a/tests/ref/fate/filter-pan-downmix1
+++ b/tests/ref/fate/filter-pan-downmix1
@@ -3,23 +3,23 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
-0,          0,          0,      512,     2048, 0xccb10170
-0,        512,        512,      512,     2048, 0xc51cf8e7
-0,       1024,       1024,      512,     2048, 0x959eef2d
-0,       1536,       1536,      512,     2048, 0x559f0751
-0,       2048,       2048,      512,     2048, 0x4c4c08e1
-0,       2560,       2560,      512,     2048, 0x41c3fd6f
-0,       3072,       3072,      512,     2048, 0x4c92f8d2
-0,       3584,       3584,      512,     2048, 0x9defee05
-0,       4096,       4096,      512,     2048, 0x2d33f4dc
-0,       4608,       4608,      512,     2048, 0xd854eeca
-0,       5120,       5120,      512,     2048, 0xdb55eaf7
-0,       5632,       5632,      512,     2048, 0x2bac060d
-0,       6144,       6144,      512,     2048, 0x91beec0f
-0,       6656,       6656,      512,     2048, 0x3262f0da
-0,       7168,       7168,      512,     2048, 0xf00708a6
-0,       7680,       7680,      512,     2048, 0xc90cfa02
-0,       8192,       8192,      512,     2048, 0x09e9f413
-0,       8704,       8704,      512,     2048, 0xcd0d0c36
-0,       9216,       9216,      512,     2048, 0x6f6bff82
-0,       9728,       9728,      512,     2048, 0x18a40912
+0,          0,          0,     1024,     4096, 0x1290fa57
+0,       1024,       1024,     1024,     4096, 0xc363f67e
+0,       2048,       2048,     1024,     4096, 0x9a38065f
+0,       3072,       3072,     1024,     4096, 0xef2ae6e6
+0,       4096,       4096,     1024,     4096, 0x585fe3b5
+0,       5120,       5120,     1024,     4096, 0x2d38f104
+0,       6144,       6144,     1024,     4096, 0xaacfdcf8
+0,       7168,       7168,     1024,     4096, 0xed2d02b7
+0,       8192,       8192,     1024,     4096, 0xe1650058
+0,       9216,       9216,     1024,     4096, 0x0fe208a3
+0,      10240,      10240,     1024,     4096, 0xf1ece81f
+0,      11264,      11264,     1024,     4096, 0x836ef60b
+0,      12288,      12288,     1024,     4096, 0x6683e4cd
+0,      13312,      13312,     1024,     4096, 0x0b42025c
+0,      14336,      14336,     1024,     4096, 0x07fbda9c
+0,      15360,      15360,     1024,     4096, 0x8f3f07c0
+0,      16384,      16384,     1024,     4096, 0x145dfc54
+0,      17408,      17408,     1024,     4096, 0x4f74eeba
+0,      18432,      18432,     1024,     4096, 0xc75eea1e
+0,      19456,      19456,     1024,     4096, 0x08c7ed8e
diff --git a/tests/ref/fate/filter-pan-downmix2 b/tests/ref/fate/filter-pan-downmix2
index 4ec18fc7dd..b8cf98054c 100644
--- a/tests/ref/fate/filter-pan-downmix2
+++ b/tests/ref/fate/filter-pan-downmix2
@@ -3,23 +3,23 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: 5 channels
-0,          0,          0,      186,     1860, 0x2480a20e
-0,        186,        186,      186,     1860, 0xde9e9c40
-0,        372,        372,      186,     1860, 0xc497b2a0
-0,        558,        558,      186,     1860, 0xe5a8a2d7
-0,        744,        744,      186,     1860, 0x01c09b6a
-0,        930,        930,      186,     1860, 0xb26fae2f
-0,       1116,       1116,      186,     1860, 0x1292a9ab
-0,       1302,       1302,      186,     1860, 0xe7a79136
-0,       1488,       1488,      186,     1860, 0x57dc81a3
-0,       1674,       1674,      186,     1860, 0xc13b9a1b
-0,       1860,       1860,      186,     1860, 0xdf7c9fd6
-0,       2046,       2046,      186,     1860, 0x4d769cff
-0,       2232,       2232,      186,     1860, 0xb8b79977
-0,       2418,       2418,      186,     1860, 0xd287989f
-0,       2604,       2604,      186,     1860, 0xc2a38f03
-0,       2790,       2790,      186,     1860, 0xd7149438
-0,       2976,       2976,      186,     1860, 0xc3719081
-0,       3162,       3162,      186,     1860, 0xb9fba1a3
-0,       3348,       3348,      186,     1860, 0xe92cb2de
-0,       3534,       3534,      186,     1860, 0x9dd9b272
+0,          0,          0,     1024,    10240, 0xfc3c0f05
+0,       1024,       1024,     1024,    10240, 0xc6c9d04b
+0,       2048,       2048,     1024,    10240, 0x1628c409
+0,       3072,       3072,     1024,    10240, 0x5ef50e5b
+0,       4096,       4096,     1024,    10240, 0xc4a0ff1a
+0,       5120,       5120,     1024,    10240, 0xb116da08
+0,       6144,       6144,     1024,    10240, 0x9b2cdf3d
+0,       7168,       7168,     1024,    10240, 0xf3cfe299
+0,       8192,       8192,     1024,    10240, 0x85dcbfc2
+0,       9216,       9216,     1024,    10240, 0xc748f5cf
+0,      10240,      10240,     1024,    10240, 0x7063ef46
+0,      11264,      11264,     1024,    10240, 0xa219da16
+0,      12288,      12288,     1024,    10240, 0xbf77e2ae
+0,      13312,      13312,     1024,    10240, 0xa71bd705
+0,      14336,      14336,     1024,    10240, 0x6878e3d6
+0,      15360,      15360,     1024,    10240, 0xb8f419a3
+0,      16384,      16384,     1024,    10240, 0xd7ccd236
+0,      17408,      17408,     1024,    10240, 0x48ee24ec
+0,      18432,      18432,     1024,    10240, 0xe9e8e37e
+0,      19456,      19456,     1024,    10240, 0x949f00ae
diff --git a/tests/ref/fate/filter-pan-stereo1 b/tests/ref/fate/filter-pan-stereo1
index b4270bb113..d1cfddb720 100644
--- a/tests/ref/fate/filter-pan-stereo1
+++ b/tests/ref/fate/filter-pan-stereo1
@@ -3,23 +3,23 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
-0,          0,          0,      682,     2728, 0xaf365458
-0,        682,        682,      682,     2728, 0xcd684898
-0,       1364,       1364,      682,     2728, 0x5d514ae5
-0,       2046,       2046,      682,     2728, 0x48cb4605
-0,       2728,       2728,      682,     2728, 0x76ac43ee
-0,       3410,       3410,      682,     2728, 0x088355fa
-0,       4092,       4092,      682,     2728, 0xf66f4efa
-0,       4774,       4774,      682,     2728, 0x7efc3b1a
-0,       5456,       5456,      682,     2728, 0x1c1745f3
-0,       6138,       6138,      682,     2728, 0x824d50fe
-0,       6820,       6820,      682,     2728, 0xb26c5b94
-0,       7502,       7502,      682,     2728, 0x02d5636d
-0,       8184,       8184,      682,     2728, 0x65e647de
-0,       8866,       8866,      682,     2728, 0x93374812
-0,       9548,       9548,      682,     2728, 0xa0d55153
-0,      10230,      10230,      682,     2728, 0x56cf392c
-0,      10912,      10912,      682,     2728, 0x554051c3
-0,      11594,      11594,      682,     2728, 0xbc3655ce
-0,      12276,      12276,      682,     2728, 0xb432529f
-0,      12958,      12958,      682,     2728, 0x64df52a7
+0,          0,          0,     1024,     4096, 0x337efeb6
+0,       1024,       1024,     1024,     4096, 0x5c4aea76
+0,       2048,       2048,     1024,     4096, 0xec82ee33
+0,       3072,       3072,     1024,     4096, 0xfe66f9df
+0,       4096,       4096,     1024,     4096, 0x7291e981
+0,       5120,       5120,     1024,     4096, 0x390be918
+0,       6144,       6144,     1024,     4096, 0x3c6fff4f
+0,       7168,       7168,     1024,     4096, 0xa46b12b7
+0,       8192,       8192,     1024,     4096, 0xcbb4e329
+0,       9216,       9216,     1024,     4096, 0xe66f0265
+0,      10240,      10240,     1024,     4096, 0x1cffe900
+0,      11264,      11264,     1024,     4096, 0xd86efd12
+0,      12288,      12288,     1024,     4096, 0xa122f221
+0,      13312,      13312,     1024,     4096, 0x13500181
+0,      14336,      14336,     1024,     4096, 0x4d9a0bd7
+0,      15360,      15360,     1024,     4096, 0xa3620ba4
+0,      16384,      16384,     1024,     4096, 0x60e8e816
+0,      17408,      17408,     1024,     4096, 0xea75e8a5
+0,      18432,      18432,     1024,     4096, 0xc6c2f1a5
+0,      19456,      19456,     1024,     4096, 0xa83aebaa
diff --git a/tests/ref/fate/filter-pan-stereo2 b/tests/ref/fate/filter-pan-stereo2
index dcd429a0ce..c206058bbd 100644
--- a/tests/ref/fate/filter-pan-stereo2
+++ b/tests/ref/fate/filter-pan-stereo2
@@ -3,23 +3,23 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: stereo
-0,          0,          0,      682,     2728, 0x35c15e81
-0,        682,        682,      682,     2728, 0x770f2e2d
-0,       1364,       1364,      682,     2728, 0x6f8d6d9f
-0,       2046,       2046,      682,     2728, 0x5b9e46f3
-0,       2728,       2728,      682,     2728, 0xda7e5fdc
-0,       3410,       3410,      682,     2728, 0x55e446f8
-0,       4092,       4092,      682,     2728, 0x4fcf4f8e
-0,       4774,       4774,      682,     2728, 0x86e757b2
-0,       5456,       5456,      682,     2728, 0x8d4256e9
-0,       6138,       6138,      682,     2728, 0xa28d4e58
-0,       6820,       6820,      682,     2728, 0xacaa5738
-0,       7502,       7502,      682,     2728, 0xd1fe580f
-0,       8184,       8184,      682,     2728, 0x09a05c0a
-0,       8866,       8866,      682,     2728, 0xcaf2555d
-0,       9548,       9548,      682,     2728, 0xcee159fc
-0,      10230,      10230,      682,     2728, 0xaa3444a5
-0,      10912,      10912,      682,     2728, 0x23b76512
-0,      11594,      11594,      682,     2728, 0xef2243dd
-0,      12276,      12276,      682,     2728, 0x36486118
-0,      12958,      12958,      682,     2728, 0xfd59626c
+0,          0,          0,     1024,     4096, 0x8801f679
+0,       1024,       1024,     1024,     4096, 0xbf6906ca
+0,       2048,       2048,     1024,     4096, 0xec8eeac9
+0,       3072,       3072,     1024,     4096, 0x938d0541
+0,       4096,       4096,     1024,     4096, 0xf0820121
+0,       5120,       5120,     1024,     4096, 0xd1da0083
+0,       6144,       6144,     1024,     4096, 0x13e502bf
+0,       7168,       7168,     1024,     4096, 0xcc68046f
+0,       8192,       8192,     1024,     4096, 0xb3e704db
+0,       9216,       9216,     1024,     4096, 0x8a9f07c0
+0,      10240,      10240,     1024,     4096, 0x50e0f62f
+0,      11264,      11264,     1024,     4096, 0xea48f6b6
+0,      12288,      12288,     1024,     4096, 0x76c31e7c
+0,      13312,      13312,     1024,     4096, 0x3629effc
+0,      14336,      14336,     1024,     4096, 0x3c450759
+0,      15360,      15360,     1024,     4096, 0x9569f61c
+0,      16384,      16384,     1024,     4096, 0x0685f076
+0,      17408,      17408,     1024,     4096, 0x3fc3fb15
+0,      18432,      18432,     1024,     4096, 0x7dc5fb44
+0,      19456,      19456,     1024,     4096, 0xcc3e03ab
diff --git a/tests/ref/fate/filter-pan-upmix2 b/tests/ref/fate/filter-pan-upmix2
index 1084a8f68c..dca5cee168 100644
--- a/tests/ref/fate/filter-pan-upmix2
+++ b/tests/ref/fate/filter-pan-upmix2
@@ -3,23 +3,23 @@
 #codec_id 0: pcm_s16le
 #sample_rate 0: 44100
 #channel_layout_name 0: 9 channels
-0,          0,          0,      512,     9216, 0xd561bb2b
-0,        512,        512,      512,     9216, 0x591805f9
-0,       1024,       1024,      512,     9216, 0xd46fecd6
-0,       1536,       1536,      512,     9216, 0x1e1f176b
-0,       2048,       2048,      512,     9216, 0xe383f1a6
-0,       2560,       2560,      512,     9216, 0xc628c661
-0,       3072,       3072,      512,     9216, 0x1ad09914
-0,       3584,       3584,      512,     9216, 0x798533cc
-0,       4096,       4096,      512,     9216, 0x4913d581
-0,       4608,       4608,      512,     9216, 0x59f506b3
-0,       5120,       5120,      512,     9216, 0x8885fa28
-0,       5632,       5632,      512,     9216, 0x769ffa95
-0,       6144,       6144,      512,     9216, 0xc636cc46
-0,       6656,       6656,      512,     9216, 0x4740f34b
-0,       7168,       7168,      512,     9216, 0x00d2de28
-0,       7680,       7680,      512,     9216, 0x704a07fc
-0,       8192,       8192,      512,     9216, 0x54a4f682
-0,       8704,       8704,      512,     9216, 0xd6dac181
-0,       9216,       9216,      512,     9216, 0xfcd6fe28
-0,       9728,       9728,      512,     9216, 0x5c41cbdc
+0,          0,          0,     1024,    18432, 0xc565c124
+0,       1024,       1024,     1024,    18432, 0xfe3e0450
+0,       2048,       2048,     1024,    18432, 0xff8db816
+0,       3072,       3072,     1024,    18432, 0xa74dcce0
+0,       4096,       4096,     1024,    18432, 0x8980dc34
+0,       5120,       5120,     1024,    18432, 0xaef4f4cc
+0,       6144,       6144,     1024,    18432, 0x947abfa0
+0,       7168,       7168,     1024,    18432, 0xe5cde624
+0,       8192,       8192,     1024,    18432, 0x7ba1b812
+0,       9216,       9216,     1024,    18432, 0x1166ca13
+0,      10240,      10240,     1024,    18432, 0x0fd40143
+0,      11264,      11264,     1024,    18432, 0x8aecc408
+0,      12288,      12288,     1024,    18432, 0x3da6de0b
+0,      13312,      13312,     1024,    18432, 0x95bd097d
+0,      14336,      14336,     1024,    18432, 0x8eacb965
+0,      15360,      15360,     1024,    18432, 0x3daf2b0a
+0,      16384,      16384,     1024,    18432, 0xe69218d2
+0,      17408,      17408,     1024,    18432, 0x0b14c778
+0,      18432,      18432,     1024,    18432, 0xa28cba24
+0,      19456,      19456,     1024,    18432, 0x77edf299
diff --git a/tests/ref/fate/g722-encode b/tests/ref/fate/g722-encode
index f178c8ca35..125c8321ba 100644
--- a/tests/ref/fate/g722-encode
+++ b/tests/ref/fate/g722-encode
@@ -7,15 +7,78 @@
 #sample_rate 0: 16000
 #channel_layout_name 0: mono
 #stream#, dts,        pts, duration,     size, hash
-0,          0,          0,     8192,    16384, 1dd9c285eb608038f3257d1a8e02eb75
-0,       8192,       8192,     8192,    16384, f7459334cbe70c06bc0897edfe64e840
-0,      16384,      16384,     8192,    16384, 486e7d07c8879ccd304689ad61911e5d
-0,      24576,      24576,     8192,    16384, 5178262fdeff11dc025c72a2678e420d
-0,      32768,      32768,     8192,    16384, 913f8208615dcd643edafda7db1eb943
-0,      40960,      40960,     8192,    16384, 0b8dc719670feac586db87bf3a92cc2a
-0,      49152,      49152,     8192,    16384, 075dc5022f5e9f1cb2fcd066e590fed1
-0,      57344,      57344,     8192,    16384, a6494307ecb1359ff42d6e05cf40ca4c
-0,      65536,      65536,     8192,    16384, 5b28d3b0d6d2bfe7100daeefcb3010ec
-0,      73728,      73728,     8192,    16384, b3cf1952b8a0d2e6a2741867e9fa8e24
-0,      81920,      81920,     8192,    16384, f0981f8fa28bbc0ba6a527b041468951
-0,      90112,      90112,     5888,    11776, 1e3d1b3d0da71aa2cdc00175cc47433a
+0,          0,          0,     1280,     2560, cd96995ecfa0edf214c1d6c7c6b37351
+0,       1280,       1280,     1280,     2560, d72d481d9c467656f8d36a94286e1a5b
+0,       2560,       2560,     1280,     2560, a09f0e46f2bc73d2454796bbfa1a59c8
+0,       3840,       3840,     1280,     2560, cfa9af21beab5786eb4ebaebf9e403c1
+0,       5120,       5120,     1280,     2560, 8649aecff1d284f20bbeed35c9b9a1e7
+0,       6400,       6400,     1280,     2560, 9faf9dc9c79df571fb08a2cb8d57f654
+0,       7680,       7680,     1280,     2560, d3ee9e40f674bee75647a115aefc9721
+0,       8960,       8960,     1280,     2560, d22fc90675529c56b0b9813213b59fd1
+0,      10240,      10240,     1280,     2560, 80a8385087ef739ffadc9d4314344ce2
+0,      11520,      11520,     1280,     2560, 251efeb72b7316a1c47c67d16584b62c
+0,      12800,      12800,     1280,     2560, d0e2936ff72e2f46c861f68ad8870aa9
+0,      14080,      14080,     1280,     2560, b47cd1cfffd504713de55ffc623319d3
+0,      15360,      15360,     1280,     2560, 8b1ead46d90c13c49de3bb2f3a8d05d0
+0,      16640,      16640,     1280,     2560, f8ae7db652a69bed10625f8c7a6a1eb0
+0,      17920,      17920,     1280,     2560, aeeb3df73249e3bb61aa2e4cd69c0f8f
+0,      19200,      19200,     1280,     2560, 10906b462f27de28080f0e85fbe0c6ab
+0,      20480,      20480,     1280,     2560, c99d1e7f33f6fee6803f9b5a9ade7903
+0,      21760,      21760,     1280,     2560, b28a0cb4037b3814bcf775c3f53011ac
+0,      23040,      23040,     1280,     2560, 3fecdb666569cb42119b1bb38460cccc
+0,      24320,      24320,     1280,     2560, f05d544ba2757313a53170c83a8355ef
+0,      25600,      25600,     1280,     2560, 93385f9efc40d8a05d36b65da388a72c
+0,      26880,      26880,     1280,     2560, d172f7595490cb7338c214a5730a5ea7
+0,      28160,      28160,     1280,     2560, 450d4d25e023546ba5bc93bca1dbfda0
+0,      29440,      29440,     1280,     2560, 4dc63487a12cd92b42b0b4b4342ba6ea
+0,      30720,      30720,     1280,     2560, c4829ec882be961e3eb503adb942e88e
+0,      32000,      32000,     1280,     2560, 093eb5b1eff2e3c6ecc1cd7cfb31190a
+0,      33280,      33280,     1280,     2560, 9a89ecb75fe2e5acd2a719479a7f618e
+0,      34560,      34560,     1280,     2560, bc13180d784163d1057227c514d6d5f7
+0,      35840,      35840,     1280,     2560, 3c6d0c72a466179ddfc477882e71423c
+0,      37120,      37120,     1280,     2560, 109743e2650f7978d931b998a5f07438
+0,      38400,      38400,     1280,     2560, ede31dd228b764406d13861b09b2b360
+0,      39680,      39680,     1280,     2560, 81bc38ca1068813a5953e649561a63ac
+0,      40960,      40960,     1280,     2560, 4bc7b871f8aa02533a1815f3c8e942a5
+0,      42240,      42240,     1280,     2560, a269372e59eede6ecd2a44500a92630b
+0,      43520,      43520,     1280,     2560, d6f06276f8e8a354ff75fd9593b09ef9
+0,      44800,      44800,     1280,     2560, 12c582c0d28d9373d77bb2dd50c8c052
+0,      46080,      46080,     1280,     2560, 2a4447ea1d7ad2b5e8b4fe19a2597f4e
+0,      47360,      47360,     1280,     2560, 722962cf9fe0a4327dbcf626b935f660
+0,      48640,      48640,     1280,     2560, e62a4c482bf6fa3fae9e0c9dbeb5e51f
+0,      49920,      49920,     1280,     2560, 000b14ecb533c0c24658cbe7734d3648
+0,      51200,      51200,     1280,     2560, a4dcc948c2aadc33c81a5bc5591ffb2d
+0,      52480,      52480,     1280,     2560, 94e75f66af8e31335c090042a1f63fc5
+0,      53760,      53760,     1280,     2560, cf4e38b36769a3fbcf7467c746ac2a1b
+0,      55040,      55040,     1280,     2560, f568270d6ff1f7bde6206360d9077f84
+0,      56320,      56320,     1280,     2560, ce63ca6e30c7af75b5188aad659d431e
+0,      57600,      57600,     1280,     2560, acd8534f856203f787ec8043aaf55185
+0,      58880,      58880,     1280,     2560, 50626cabcd732e4d071d4b73ae0e7e04
+0,      60160,      60160,     1280,     2560, 038990cbffc52a40552c6b027379b15c
+0,      61440,      61440,     1280,     2560, 6bdc159fc76b22500bd035edb7c2e1a3
+0,      62720,      62720,     1280,     2560, ee7ac329fe2fcf9e18afeea2fcfe6768
+0,      64000,      64000,     1280,     2560, b1abe3bcc36878412facb83270e6629d
+0,      65280,      65280,     1280,     2560, 326a9e4613119dc12e0a97e107e90442
+0,      66560,      66560,     1280,     2560, 569675a451b3b1b6e32fed683e0e4940
+0,      67840,      67840,     1280,     2560, 1e2db0be1805d797d0ec0fc928346d9e
+0,      69120,      69120,     1280,     2560, 3351ffe2a83a03b08331e819a1d0b7b9
+0,      70400,      70400,     1280,     2560, dce4210d528f17f28c397bb007f5b018
+0,      71680,      71680,     1280,     2560, e088d9c359d91e3a68d7f0889f84d14d
+0,      72960,      72960,     1280,     2560, c3f8a868eeda69e7d388f0f428de651b
+0,      74240,      74240,     1280,     2560, 17be00694027ccb870bada1f96bd6fcf
+0,      75520,      75520,     1280,     2560, b474e37998364312f0d86843a43dabb2
+0,      76800,      76800,     1280,     2560, 971255aafe9a4d96d44479e3df609aa7
+0,      78080,      78080,     1280,     2560, 1c912d86beab34eb2c6307a5e3699064
+0,      79360,      79360,     1280,     2560, 7addab61237812433409e5cf8eed2617
+0,      80640,      80640,     1280,     2560, e3b2838ff170a328d24f9bc2f1457fad
+0,      81920,      81920,     1280,     2560, 95a3ce68908eb179d1bb60a96ef21a26
+0,      83200,      83200,     1280,     2560, fc0bd36ad4cd4349ebf7c07c5fcda555
+0,      84480,      84480,     1280,     2560, 7a12e0d59365f42e78079093effea86c
+0,      85760,      85760,     1280,     2560, cb59a714ef2717932c89d5dd725084d8
+0,      87040,      87040,     1280,     2560, aaeb92b680b9a22fab9c3c305220821b
+0,      88320,      88320,     1280,     2560, e1f05444007910da6f212d751325f766
+0,      89600,      89600,     1280,     2560, fbeea303f52f37547dfceca570983895
+0,      90880,      90880,     1280,     2560, 53fbda08a3c3fb2d61ab124395092376
+0,      92160,      92160,     1280,     2560, 6cfd234af2e8855ddc4496e2868f5cd0
+0,      93440,      93440,     1280,     2560, 3959ebc0d5737a08784e3d129a0bcc5a
+0,      94720,      94720,     1280,     2560, 89ced69e400daf80524a5c53bcf28f6a
diff --git a/tests/ref/fate/g726-encode-2bit b/tests/ref/fate/g726-encode-2bit
index 2aafcc8bf2..e7ed4c8413 100644
--- a/tests/ref/fate/g726-encode-2bit
+++ b/tests/ref/fate/g726-encode-2bit
@@ -7,6 +7,41 @@
 #sample_rate 0: 8000
 #channel_layout_name 0: mono
 #stream#, dts,        pts, duration,     size, hash
-0,          0,          0,    16384,    32768, b28b116d2315323aeba6b66b58b7f4ed
-0,      16384,      16384,    16384,    32768, e9cfbebe99490bd4987341ee748291c4
-0,      32768,      32768,    15232,    30464, f890e7f29bc76ca6c214fac0cedd7a49
+0,          0,          0,     1280,     2560, f3ab112b1b0e900f2b936da73e14a125
+0,       1280,       1280,     1280,     2560, 22f2d94221d6f6ff85d50b287c0d13e9
+0,       2560,       2560,     1280,     2560, 01fb01c560b59ba5921c1e839e32fa8c
+0,       3840,       3840,     1280,     2560, 0385b5b73919c7184bcda319faefddde
+0,       5120,       5120,     1280,     2560, 8cd9ef1018b5169619b4baf1f99ea049
+0,       6400,       6400,     1280,     2560, 06a1a3e0582d03a2f32eb149855f0dd3
+0,       7680,       7680,     1280,     2560, c97f0f367b7a42aa1a8b396a835d0d64
+0,       8960,       8960,     1280,     2560, c02abe424728f38a4e6fe3cc42069831
+0,      10240,      10240,     1280,     2560, 6fe3da1d9299b9b5395afeef048b3cbc
+0,      11520,      11520,     1280,     2560, ac0971acae9ec3910c2cf39f62491466
+0,      12800,      12800,     1280,     2560, 715a285c131c2252bf286d5a11af1de2
+0,      14080,      14080,     1280,     2560, 3d90a8331fa11d2154195642311688ab
+0,      15360,      15360,     1280,     2560, ef621ba890460fb8e526d56cfc541be5
+0,      16640,      16640,     1280,     2560, 89be141dd2225e7045bc6650cbb9597e
+0,      17920,      17920,     1280,     2560, c1ccfa84e1e02903c835271a58d22113
+0,      19200,      19200,     1280,     2560, a47866a32feb4b6c5e372f4d0daec09a
+0,      20480,      20480,     1280,     2560, eb497427f47b81f61dd1c9c0e5974bbe
+0,      21760,      21760,     1280,     2560, 0c9bcf02f7519ec649216d5f2b0b5261
+0,      23040,      23040,     1280,     2560, 8abbd54d9ccca6a04b68177457adc7d7
+0,      24320,      24320,     1280,     2560, c5057c0d53da8623dfd0615a94dab1cf
+0,      25600,      25600,     1280,     2560, d34772bf2f19f44b7ea27bab285e7f41
+0,      26880,      26880,     1280,     2560, b3df3707bc95ce2f6420bcbf7603c33e
+0,      28160,      28160,     1280,     2560, 797dd52a17ad5cfdc7bd098c7101f7c2
+0,      29440,      29440,     1280,     2560, 86dda35ff2d5d8b8825747ac71ac1d0d
+0,      30720,      30720,     1280,     2560, 1028b04c740becf23cf58114198945bf
+0,      32000,      32000,     1280,     2560, bb3eb59d5af1db519b7f7fc2fc3e3b97
+0,      33280,      33280,     1280,     2560, f3e8a76ba0494edad76c49239c6d79d5
+0,      34560,      34560,     1280,     2560, eaf7c7daf474addfafe5ac947c729a85
+0,      35840,      35840,     1280,     2560, c4020767dcd200c8d39cdee32cc15563
+0,      37120,      37120,     1280,     2560, c3d5d41ae4ac67ef5d40e7c46fa980ed
+0,      38400,      38400,     1280,     2560, cbd3e3f07c2a321fcdea77eb3a61c1c7
+0,      39680,      39680,     1280,     2560, f7bd15761a8d1b7a045f5ffb015a5126
+0,      40960,      40960,     1280,     2560, 1352b4120a5cff7daab40c850a3ad4dd
+0,      42240,      42240,     1280,     2560, 1bf16db460df57dcc2a294864a8faad9
+0,      43520,      43520,     1280,     2560, a5091960966a453288c01959b9ecbd00
+0,      44800,      44800,     1280,     2560, 802cf1b2fd8fb9ae63edc0dbca9a72db
+0,      46080,      46080,     1280,     2560, dcf838cc0400996b3cabb46dd1d78091
+0,      47360,      47360,      640,     1280, 0825a77ec4cf6a812e394ddbe0cfdd00
diff --git a/tests/ref/fate/g726-encode-3bit b/tests/ref/fate/g726-encode-3bit
index 96c6b9447b..2b714763b5 100644
--- a/tests/ref/fate/g726-encode-3bit
+++ b/tests/ref/fate/g726-encode-3bit
@@ -7,8 +7,22 @@
 #sample_rate 0: 8000
 #channel_layout_name 0: mono
 #stream#, dts,        pts, duration,     size, hash
-0,          0,          0,    10920,    21840, 517dd6d1ce566b998251f0d215fa69c0
-0,      10920,      10920,    10920,    21840, b0268e2bcc67acb524753790123c65fd
-0,      21840,      21840,    10920,    21840, a072a222a4910642f12e127b95a4d640
-0,      32760,      32760,    10920,    21840, 83bcd3c91cc3b57afdab0cb79a83d7b7
-0,      43680,      43680,     4320,     8640, 0125e504113997ac7bcc027616edad55
+0,          0,          0,     2560,     5120, 541f86e88472104206b1fb48f337ff0a
+0,       2560,       2560,     2560,     5120, 5303a5e8e41a62a3193993cecd018875
+0,       5120,       5120,     2560,     5120, aa67abf20d31b1725a42c0fc646ed227
+0,       7680,       7680,     2560,     5120, 01c71275d7ad24250b4800709a6a9783
+0,      10240,      10240,     2560,     5120, c60745f2287bacb562c6ce7e92cc7498
+0,      12800,      12800,     2560,     5120, 5242ce9464420f0c7ce9ab8c7e63bdc8
+0,      15360,      15360,     2560,     5120, 8f8c9b0e06ed45f6f08b11e3f70a34ad
+0,      17920,      17920,     2560,     5120, 37fe7307137fcf760752d5fd65a446a0
+0,      20480,      20480,     2560,     5120, a2683017632e2fd5efb64cb3d2da3884
+0,      23040,      23040,     2560,     5120, 512b3e9a543b2d9002386187050c7f7e
+0,      25600,      25600,     2560,     5120, c630e8df0e006390a22cc3593d7c7c37
+0,      28160,      28160,     2560,     5120, e08e2ebdfe6f1a581b77247e76035117
+0,      30720,      30720,     2560,     5120, 1a25f9d9eeac8243b14410b7eaedd47b
+0,      33280,      33280,     2560,     5120, c3f8b4075f9b85df505e1ce7afaa34c0
+0,      35840,      35840,     2560,     5120, 93af21d167e70b2d8a218db530572439
+0,      38400,      38400,     2560,     5120, 7cc3c8338cafbbe2941f330dfda46d73
+0,      40960,      40960,     2560,     5120, 36015b4be5eaaf57f27d0258b43b0156
+0,      43520,      43520,     2560,     5120, 0b46668539b430dbf1f185e2bba5fc99
+0,      46080,      46080,     1920,     3840, 239f80bfdafac8eccdcfc378b65379f5
diff --git a/tests/ref/fate/g726-encode-4bit b/tests/ref/fate/g726-encode-4bit
index 28e9ee0284..49f10adbae 100644
--- a/tests/ref/fate/g726-encode-4bit
+++ b/tests/ref/fate/g726-encode-4bit
@@ -7,9 +7,78 @@
 #sample_rate 0: 8000
 #channel_layout_name 0: mono
 #stream#, dts,        pts, duration,     size, hash
-0,          0,          0,     8192,    16384, a0cf3a0953adce1a1032a4fd2da00a52
-0,       8192,       8192,     8192,    16384, c750c1b76a203556dd60d73d261529e9
-0,      16384,      16384,     8192,    16384, 4c116836487c05f259168f63883d6496
-0,      24576,      24576,     8192,    16384, 3e4f96c06d4c33c97829f962a5b4b443
-0,      32768,      32768,     8192,    16384, 55d73226120bcd01e4c0ea22a360e2ef
-0,      40960,      40960,     7040,    14080, de8f12a49e673ce923c2512b36e0ce8f
+0,          0,          0,      640,     1280, 80f3a3b7c1a85914f6ca5cdb308cb0fd
+0,        640,        640,      640,     1280, c26971cc7e416d33e9ff20556912213b
+0,       1280,       1280,      640,     1280, 786e4e6ac64aac8b3a65e6bd224e8173
+0,       1920,       1920,      640,     1280, 47aac472631837335e24fa68c5965f11
+0,       2560,       2560,      640,     1280, 65c40426d04a19244294be5d64abaeda
+0,       3200,       3200,      640,     1280, 67b4f4a00b00a0be9e2da4250bc67880
+0,       3840,       3840,      640,     1280, 511d3e61cb1dc29e67cec72f2f814d01
+0,       4480,       4480,      640,     1280, 49cbbcc20e1b50575e419c7b970f34e8
+0,       5120,       5120,      640,     1280, 48f867700f6f8d5f4b05ca746d5cf2f3
+0,       5760,       5760,      640,     1280, 1b8f7f925a49b57949a212e1e83c41ff
+0,       6400,       6400,      640,     1280, 5e64ef1c54f1ede5f12d3d685a9482f5
+0,       7040,       7040,      640,     1280, ec9c5d43bbe03d7fa6288c59afcdb272
+0,       7680,       7680,      640,     1280, 27ff9ebc31d0398cded602c77ce0913e
+0,       8320,       8320,      640,     1280, 603b757cfd5c5ed46f9792a548e451d5
+0,       8960,       8960,      640,     1280, 78017062224d22f94aee954d890f63a9
+0,       9600,       9600,      640,     1280, 7eb92b65d7b6a0a24ccfbfadf727a40c
+0,      10240,      10240,      640,     1280, 030c034e519e9c087633bc026c97c94e
+0,      10880,      10880,      640,     1280, 7faf7a1968bcd3eb0a1396f0ee0ea65d
+0,      11520,      11520,      640,     1280, 045367e6485bc0dd469e7527331331d2
+0,      12160,      12160,      640,     1280, ecd404e7f8c59b4e96f250b5dc19338e
+0,      12800,      12800,      640,     1280, a1c813c6168bf6459511f8987b834dd3
+0,      13440,      13440,      640,     1280, e43f4dfa59b35f702899d26765a15a5b
+0,      14080,      14080,      640,     1280, 9c18838023c3b827e483dfe942a1008a
+0,      14720,      14720,      640,     1280, be139ae159ee6b761d218074d9890fb4
+0,      15360,      15360,      640,     1280, e8b1ad160f9cdba6586f4d8113d94a5c
+0,      16000,      16000,      640,     1280, f3317df77243b721586cb4b621e74e0e
+0,      16640,      16640,      640,     1280, d050113c65cefcb188e63ea7b98c1de6
+0,      17280,      17280,      640,     1280, f1c73e8b20b253785eddf40e29597803
+0,      17920,      17920,      640,     1280, 15f7e6d5a9dc449b0f201f4eb2f015e1
+0,      18560,      18560,      640,     1280, 2e7cd361b9f5514950020fa9b7fe0f89
+0,      19200,      19200,      640,     1280, a2b6753d2dab353931373df09d6dcb9f
+0,      19840,      19840,      640,     1280, 566b1b88df80217253f746d66b6edf15
+0,      20480,      20480,      640,     1280, 0930f17f7f9dbf22bf7996e971f92989
+0,      21120,      21120,      640,     1280, caecb9a421b624b9bde4d1a9391b1b7c
+0,      21760,      21760,      640,     1280, 4ae25bf74ad074c691da38a0b23df23e
+0,      22400,      22400,      640,     1280, 94625b39581eb4c734cf06895f1d27b9
+0,      23040,      23040,      640,     1280, 4bd49aa3b136246bc9acf3da1df3e258
+0,      23680,      23680,      640,     1280, 13e7ab6cc2e3603923dbf3d95810cfa1
+0,      24320,      24320,      640,     1280, bc083289c9f0e230064f7a9606b5ae61
+0,      24960,      24960,      640,     1280, a6420a56c064963c228fbb022262a9e8
+0,      25600,      25600,      640,     1280, 4ad4b04a7c728cf1e4f79bf2e98b5f01
+0,      26240,      26240,      640,     1280, 1152f12b1e1b170d740c29e8ec04be9b
+0,      26880,      26880,      640,     1280, f7343ebbee059ef2caef1ca54b262cc0
+0,      27520,      27520,      640,     1280, ef942ec802bbdc4bd1bb0ee6dd5a226d
+0,      28160,      28160,      640,     1280, 770abaea85aa3fc1d35f80c773bd5223
+0,      28800,      28800,      640,     1280, f704771c09dff105ac45a95ff4d2a6fc
+0,      29440,      29440,      640,     1280, 5591bfff3909d5eab958ffed1d8aa67c
+0,      30080,      30080,      640,     1280, 6f945af66f686049bbcfc1d63fa65f2f
+0,      30720,      30720,      640,     1280, 7a3d0ca75900f9f60dcf0d39a0231a1f
+0,      31360,      31360,      640,     1280, a4f43e17a7b6591ec436e960c9a8c51d
+0,      32000,      32000,      640,     1280, fe1750270c9a83a0fd2549e34d2931ef
+0,      32640,      32640,      640,     1280, b45cdbddb99fca73108f3b88ba47520d
+0,      33280,      33280,      640,     1280, 5f7d71a3dce9a9b585eed44545461232
+0,      33920,      33920,      640,     1280, a2d02629176000eac033d577a9dd8a3f
+0,      34560,      34560,      640,     1280, b360ac6d1be896bf7b06a00bad87fffc
+0,      35200,      35200,      640,     1280, 0ccfca9e249fa3cd5e84f11bfbb36d31
+0,      35840,      35840,      640,     1280, dadb9af58c7bf36d11141529c5cf47b7
+0,      36480,      36480,      640,     1280, bb93fb805676bad3db700c6ffb158ea4
+0,      37120,      37120,      640,     1280, d1644e28880fa9a72769581bd17a7107
+0,      37760,      37760,      640,     1280, 99ff80b2cea2a66b222a4958b55dbced
+0,      38400,      38400,      640,     1280, 28f3faa3601bb0f86963667054e18369
+0,      39040,      39040,      640,     1280, 4890d2572cf175e621df7ff1a8d8e773
+0,      39680,      39680,      640,     1280, f0ca68514e51098395c39522c497e0c5
+0,      40320,      40320,      640,     1280, c9dfff14163fb732de9bd19b113b89d9
+0,      40960,      40960,      640,     1280, aebfbd84e404f70d2840538c8960a083
+0,      41600,      41600,      640,     1280, 9bd717cb234015d2824ccb342074f97b
+0,      42240,      42240,      640,     1280, 6b437b90005a0bf82920f7aec8831492
+0,      42880,      42880,      640,     1280, 28aaad0bdf4c4abec77237925f159d0a
+0,      43520,      43520,      640,     1280, 021a0b8cd57ea41f0e5bc69b57c8d415
+0,      44160,      44160,      640,     1280, 95bad96686e9ca62b23305f2025db81c
+0,      44800,      44800,      640,     1280, fc4dd31e04f22f046a60cba44d3eeceb
+0,      45440,      45440,      640,     1280, abab1efdf2c6d97ae74e484c8b1414af
+0,      46080,      46080,      640,     1280, 0f5f2d1ea4af8df15110714da8b8e8c1
+0,      46720,      46720,      640,     1280, 5317f8e7153487130e3becfe0e340062
+0,      47360,      47360,      640,     1280, 3429ef08e003a2abc7e312ada94dca04
diff --git a/tests/ref/fate/g726-encode-5bit b/tests/ref/fate/g726-encode-5bit
index c7cd7dd1d9..df302c59b8 100644
--- a/tests/ref/fate/g726-encode-5bit
+++ b/tests/ref/fate/g726-encode-5bit
@@ -7,11 +7,22 @@
 #sample_rate 0: 8000
 #channel_layout_name 0: mono
 #stream#, dts,        pts, duration,     size, hash
-0,          0,          0,     6552,    13104, 6fe3f75df1262c5f956887de9c32df40
-0,       6552,       6552,     6552,    13104, f955518de6f61f94253280d11d64d68b
-0,      13104,      13104,     6552,    13104, a3f2db5d35e0d923787b71aa352466de
-0,      19656,      19656,     6552,    13104, 90c41dc1338579e2e19edb811f8d58a9
-0,      26208,      26208,     6552,    13104, 4fbcd13f77e8cc0e61a7c9010e42adf1
-0,      32760,      32760,     6552,    13104, 82ef661e2afc2a1d6996005f17c1618c
-0,      39312,      39312,     6552,    13104, 1f5e9875ddcf88063e4adf910a8f0fa6
-0,      45864,      45864,     2136,     4272, 9a1cdf7ec6b06762047cdb1320d9d32e
+0,          0,          0,     2560,     5120, 06170a9254934525a324074924349d3a
+0,       2560,       2560,     2560,     5120, 339c0468c8e0a0d3d079608830b3b23b
+0,       5120,       5120,     2560,     5120, 94b2ccc80f2039aff2fd1804c5e7d996
+0,       7680,       7680,     2560,     5120, e3e89e128c140745a2f5ed6ec69ad37e
+0,      10240,      10240,     2560,     5120, d8af69a973c181e6f7062b61afd5a985
+0,      12800,      12800,     2560,     5120, cee2dcba6bd8353529b4796906ec2e5c
+0,      15360,      15360,     2560,     5120, 02e92b0f3344f7315016d55b36cf266c
+0,      17920,      17920,     2560,     5120, 8066f26d873a430ec65db62825f4018c
+0,      20480,      20480,     2560,     5120, dbe8b0d94fdb09863ff3a87bba31d0af
+0,      23040,      23040,     2560,     5120, 98322fa4637040c9245e1efe99c61ee6
+0,      25600,      25600,     2560,     5120, a20e98da03e04fb3f3336a1a1a9a3418
+0,      28160,      28160,     2560,     5120, 20fc201028fc27c858a3a2acb92d56f2
+0,      30720,      30720,     2560,     5120, 7ba1a3f12de057cb76576786c833788c
+0,      33280,      33280,     2560,     5120, 3317a89c362622d5aa3c67e0ddb42af4
+0,      35840,      35840,     2560,     5120, f8f858ef398e866b2a3b2f3de76b7122
+0,      38400,      38400,     2560,     5120, a600439cafbdb78f64b447b54fce6cad
+0,      40960,      40960,     2560,     5120, d78f318a6d9c070ee999f7e3f6854c21
+0,      43520,      43520,     2560,     5120, bf241d6d92f0899903922a37a2646fa4
+0,      46080,      46080,     1920,     3840, c97e94c2ff8358c12803eb1a004ed633
diff --git a/tests/ref/fate/matroska-move-cues-to-front b/tests/ref/fate/matroska-move-cues-to-front
index 1deacaa370..aef36c423b 100644
--- a/tests/ref/fate/matroska-move-cues-to-front
+++ b/tests/ref/fate/matroska-move-cues-to-front
@@ -1,5 +1,5 @@
-4ca0bdb5636523c3e43b9dbf692ae21c *tests/data/fate/matroska-move-cues-to-front.matroska
-23210293 tests/data/fate/matroska-move-cues-to-front.matroska
+96e544691ecaeb5c49fcbd9351e47af8 *tests/data/fate/matroska-move-cues-to-front.matroska
+23147910 tests/data/fate/matroska-move-cues-to-front.matroska
 #tb 0: 1/1000
 #media_type 0: audio
 #codec_id 0: pcm_s24be
@@ -10,61 +10,41 @@
 #codec_id 1: pcm_s24le
 #sample_rate 1: 192000
 #channel_layout_name 1: stereo
-0,          0,          0,        3,     4092, 0x71f10ea0
-1,          0,          0,        3,     4092, 0xa6320ea0
-0,          4,          4,        3,     4092, 0x51852317
-1,          4,          4,        3,     4092, 0x27732317
-0,          7,          7,        3,     4092, 0xc8e2693d
-1,          7,          7,        3,     4092, 0x5899693d
-0,         11,         11,        3,     4092, 0x8df13008
-1,         11,         11,        3,     4092, 0x6fa63008
-0,         14,         14,        3,     4092, 0xc56bdf7f
-1,         14,         14,        3,     4092, 0x22b0df7f
-0,         18,         18,        3,     4092, 0x4ac2c0f9
-1,         18,         18,        3,     4092, 0x5512c0f9
-0,         21,         21,        3,     4092, 0x11a50650
-1,         21,         21,        3,     4092, 0x11b90650
-0,         25,         25,        3,     4092, 0x0a3837f4
-1,         25,         25,        3,     4092, 0x9cb537f4
-0,         28,         28,        3,     4092, 0xff0a3ce7
-1,         28,         28,        3,     4092, 0x7d1a3ce7
-0,         32,         32,        3,     4092, 0x42d2c983
-1,         32,         32,        3,     4092, 0x0f56c983
-0,         36,         36,        3,     4092, 0x2adbf4ea
-1,         36,         36,        3,     4092, 0x386bf4ea
-0,         39,         39,        3,     4092, 0x86d4f0a5
-1,         39,         39,        3,     4092, 0x5924f0a5
-0,         43,         43,        3,     4092, 0x5f35d5f7
-1,         43,         43,        3,     4092, 0x565fd5f7
-0,         46,         46,        3,     4092, 0xd3f27234
-1,         46,         46,        3,     4092, 0x4d197234
-0,         50,         50,        3,     4092, 0xb3a97ff5
-1,         50,         50,        3,     4092, 0x61e67ff5
-0,         53,         53,        3,     4092, 0xce30e2ba
-1,         53,         53,        3,     4092, 0xe65de2ba
-0,         57,         57,        3,     4092, 0x3d482d44
-1,         57,         57,        3,     4092, 0xf85b2d44
-0,         60,         60,        3,     4092, 0x691d161c
-1,         60,         60,        3,     4092, 0x3b01161c
-0,         64,         64,        3,     4092, 0xe6b93525
-1,         64,         64,        3,     4092, 0xdd4e3525
-0,         67,         67,        3,     4092, 0x9ce3f785
-1,         67,         67,        3,     4092, 0x8a28f785
-0,         71,         71,        3,     4092, 0x688fc452
-1,         71,         71,        3,     4092, 0x8c5ec452
-0,         75,         75,        3,     4092, 0x400cf87e
-1,         75,         75,        3,     4092, 0x1e64f87e
-0,         78,         78,        3,     4092, 0x49baa923
-1,         78,         78,        3,     4092, 0x68d9a923
-0,         82,         82,        3,     4092, 0x4df27658
-1,         82,         82,        3,     4092, 0x38d77658
-0,         85,         85,        3,     4092, 0xdfebf0e7
-1,         85,         85,        3,     4092, 0xab2cf0e7
-0,         89,         89,        3,     4092, 0x69d2f76c
-1,         89,         89,        3,     4092, 0x35b9f76c
-0,         92,         92,        3,     4092, 0x877b89d3
-1,         92,         92,        3,     4092, 0xcc4889d3
-0,         96,         96,        3,     4092, 0x70035443
-1,         96,         96,        3,     4092, 0x04825443
-0,         99,         99,        3,     4092, 0x30135036
-1,         99,         99,        3,     4092, 0x4fba5036
+0,          0,          0,        5,     6144, 0x0afd2eda
+1,          0,          0,        5,     6144, 0x1f592eda
+0,          5,          5,        5,     6144, 0xd5e16fb3
+1,          5,          5,        5,     6144, 0x5c796fb3
+0,         11,         11,        5,     6144, 0xf0341c51
+1,         11,         11,        5,     6144, 0x22fc1c51
+0,         16,         16,        5,     6144, 0x444ebbe2
+1,         16,         16,        5,     6144, 0x5856bbe2
+0,         21,         21,        5,     6144, 0x03f10fa9
+1,         21,         21,        5,     6144, 0x022d0fa9
+0,         27,         27,        5,     6144, 0x153c7242
+1,         27,         27,        5,     6144, 0x2a1d7242
+0,         32,         32,        5,     6144, 0x23c5c2ce
+1,         32,         32,        5,     6144, 0xf37ec2ce
+0,         37,         37,        5,     6144, 0xea76f227
+1,         37,         37,        5,     6144, 0xc5f6f227
+0,         43,         43,        5,     6144, 0x1bf8d257
+1,         43,         43,        5,     6144, 0x1a84d257
+0,         48,         48,        5,     6144, 0xbf3bf14c
+1,         48,         48,        5,     6144, 0xe788f14c
+0,         53,         53,        5,     6144, 0x1d32dad7
+1,         53,         53,        5,     6144, 0x0d65dad7
+0,         59,         59,        5,     6144, 0x2e4963b5
+1,         59,         59,        5,     6144, 0xd92c63b5
+0,         64,         64,        5,     6144, 0x9e011e0d
+1,         64,         64,        5,     6144, 0xa8121e0d
+0,         69,         69,        5,     6144, 0x2177e43b
+1,         69,         69,        5,     6144, 0x0703e43b
+0,         75,         75,        5,     6144, 0xafc63815
+1,         75,         75,        5,     6144, 0x3c0c3815
+0,         80,         80,        5,     6144, 0xab1af266
+1,         80,         80,        5,     6144, 0x063ff266
+0,         85,         85,        5,     6144, 0xf4c77215
+1,         85,         85,        5,     6144, 0x284e7215
+0,         91,         91,        5,     6144, 0x584cf52e
+1,         91,         91,        5,     6144, 0x0b11f52e
+0,         96,         96,        5,     6144, 0x9f7e22b5
+1,         96,         96,        5,     6144, 0x35c622b5
diff --git a/tests/ref/fate/mov-channel-description b/tests/ref/fate/mov-channel-description
index 21b2e11406..fc1c1509ea 100644
--- a/tests/ref/fate/mov-channel-description
+++ b/tests/ref/fate/mov-channel-description
@@ -1,5 +1,5 @@
-497848e1bc5c9dcd416124b6f739d733 *tests/data/fate/mov-channel-description.mov
-4242044 tests/data/fate/mov-channel-description.mov
+cef306a5fa3bf45bcf174558d8ee6669 *tests/data/fate/mov-channel-description.mov
+4246172 tests/data/fate/mov-channel-description.mov
 #tb 0: 1/44100
 #media_type 0: audio
 #codec_id 0: pcm_s16le
diff --git a/tests/ref/fate/mov-mp4-pcm b/tests/ref/fate/mov-mp4-pcm
index b34f5e59e1..a40d16d3ac 100644
--- a/tests/ref/fate/mov-mp4-pcm
+++ b/tests/ref/fate/mov-mp4-pcm
@@ -1,5 +1,5 @@
-1573ecbd24a65a6ec23ef08a861614b3 *tests/data/fate/mov-mp4-pcm.mp4
-10589277 tests/data/fate/mov-mp4-pcm.mp4
+46624ccfca227727705222687cd90000 *tests/data/fate/mov-mp4-pcm.mp4
+10591857 tests/data/fate/mov-mp4-pcm.mp4
 #tb 0: 1/44100
 #media_type 0: audio
 #codec_id 0: pcm_s16le
diff --git a/tests/ref/fate/mov-mp4-pcm-float b/tests/ref/fate/mov-mp4-pcm-float
index 7da8fd2aba..16c51e4324 100644
--- a/tests/ref/fate/mov-mp4-pcm-float
+++ b/tests/ref/fate/mov-mp4-pcm-float
@@ -1,4 +1,4 @@
-7b998e652d5b7154e646a98bd2bf28a1 *tests/data/fate/mov-mp4-pcm-float.mp4
+d9e7439757350ddb75d309918caf2de5 *tests/data/fate/mov-mp4-pcm-float.mp4
 3175929 tests/data/fate/mov-mp4-pcm-float.mp4
 #tb 0: 1/44100
 #media_type 0: audio
diff --git a/tests/ref/seek/acodec-pcm-alaw b/tests/ref/seek/acodec-pcm-alaw
index e5466bd2d3..3f9e91de1e 100644
--- a/tests/ref/seek/acodec-pcm-alaw
+++ b/tests/ref/seek/acodec-pcm-alaw
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 167124 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 167124 size:  2048
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69590 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69590 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 227320 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 227320 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 129786 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 129786 size:  2048
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32252 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32252 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 189982 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 189982 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos:  92448 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos:  92448 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 250178 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 250178 size:  2048
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 152644 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 152644 size:  2048
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55110 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55110 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 212840 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 212840 size:  2048
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 115306 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 115306 size:  2048
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17772 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17772 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 175504 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 175504 size:  2048
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77968 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77968 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 235700 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 235700 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 138166 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 138166 size:  2048
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40630 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40630 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
diff --git a/tests/ref/seek/acodec-pcm-f32le b/tests/ref/seek/acodec-pcm-f32le
index 0b6bb33bcb..0a16dd2fa8 100644
--- a/tests/ref/seek/acodec-pcm-f32le
+++ b/tests/ref/seek/acodec-pcm-f32le
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 668322 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 668322 size:  8192
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 278186 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 278186 size:  8192
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 909106 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 909106 size:  8192
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 518970 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 518970 size:  8192
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos: 128834 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos: 128834 size:  8192
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 759754 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 759754 size:  8192
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 369618 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 369618 size:  8192
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos:1000538 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos:1000538 size:  8192
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 610402 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 610402 size:  8192
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 220266 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 220266 size:  8192
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 851186 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 851186 size:  8192
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 461050 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 461050 size:  8192
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  70914 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  70914 size:  8192
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 701842 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 701842 size:  8192
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 311698 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 311698 size:  8192
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 942626 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 942626 size:  8192
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 552490 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 552490 size:  8192
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 162346 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 162346 size:  8192
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  8192
diff --git a/tests/ref/seek/acodec-pcm-f64le b/tests/ref/seek/acodec-pcm-f64le
index 1366de3f65..8ec1a71c08 100644
--- a/tests/ref/seek/acodec-pcm-f64le
+++ b/tests/ref/seek/acodec-pcm-f64le
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos:1336586 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos:1336586 size: 16384
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 556314 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 556314 size: 16384
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos:1818154 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos:1818154 size: 16384
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos:1037882 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos:1037882 size: 16384
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos: 257610 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos: 257610 size: 16384
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos:1519450 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos:1519450 size: 16384
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 739178 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 739178 size: 16384
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos:2001018 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos:2001018 size: 16384
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos:1220746 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos:1220746 size: 16384
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 440474 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 440474 size: 16384
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos:1702314 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos:1702314 size: 16384
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 922042 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 922042 size: 16384
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos: 141770 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos: 141770 size: 16384
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos:1403626 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos:1403626 size: 16384
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 623338 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 623338 size: 16384
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos:1885194 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos:1885194 size: 16384
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos:1104922 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos:1104922 size: 16384
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 324634 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 324634 size: 16384
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size: 16384
diff --git a/tests/ref/seek/acodec-pcm-mulaw b/tests/ref/seek/acodec-pcm-mulaw
index e5466bd2d3..3f9e91de1e 100644
--- a/tests/ref/seek/acodec-pcm-mulaw
+++ b/tests/ref/seek/acodec-pcm-mulaw
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 167124 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 167124 size:  2048
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69590 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69590 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 227320 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 227320 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 129786 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 129786 size:  2048
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32252 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32252 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 189982 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 189982 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos:  92448 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos:  92448 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 250178 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 250178 size:  2048
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 152644 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 152644 size:  2048
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55110 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55110 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 212840 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 212840 size:  2048
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 115306 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 115306 size:  2048
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17772 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17772 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 175504 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 175504 size:  2048
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77968 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77968 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 235700 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 235700 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 138166 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 138166 size:  2048
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40630 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40630 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     58 size:  2048
diff --git a/tests/ref/seek/acodec-pcm-s24le b/tests/ref/seek/acodec-pcm-s24le
index c6a37f8323..ab57765a69 100644
--- a/tests/ref/seek/acodec-pcm-s24le
+++ b/tests/ref/seek/acodec-pcm-s24le
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 501266 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 501266 size:  6144
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 208664 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 208664 size:  6144
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 681854 size:  4092
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 681854 size:  6144
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 389252 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 389252 size:  6144
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  96650 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  96650 size:  6144
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 569840 size:  4092
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 569840 size:  6144
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 277238 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 277238 size:  6144
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 750428 size:  4092
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 750428 size:  6144
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 457826 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 457826 size:  6144
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 165224 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 165224 size:  6144
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 638414 size:  4092
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 638414 size:  6144
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 345812 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 345812 size:  6144
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  53210 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  53210 size:  6144
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 526406 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 526406 size:  6144
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 233798 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 233798 size:  6144
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 706994 size:  4092
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 706994 size:  6144
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 414392 size:  4092
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 414392 size:  6144
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 121784 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 121784 size:  6144
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4092
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  6144
diff --git a/tests/ref/seek/acodec-pcm-s32le b/tests/ref/seek/acodec-pcm-s32le
index df85b2d628..66d79ca7d2 100644
--- a/tests/ref/seek/acodec-pcm-s32le
+++ b/tests/ref/seek/acodec-pcm-s32le
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 668332 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 668332 size:  8192
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 278196 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos: 278196 size:  8192
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 909116 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 909116 size:  8192
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 518980 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 518980 size:  8192
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos: 128844 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos: 128844 size:  8192
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 759764 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 759764 size:  8192
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 369628 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos: 369628 size:  8192
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos:1000548 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos:1000548 size:  8192
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 610412 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 610412 size:  8192
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 220276 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos: 220276 size:  8192
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 851196 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 851196 size:  8192
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 461060 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 461060 size:  8192
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  70924 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  70924 size:  8192
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 701852 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 701852 size:  8192
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 311708 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 311708 size:  8192
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 942636 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 942636 size:  8192
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 552500 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 552500 size:  8192
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 162356 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 162356 size:  8192
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     68 size:  8192
diff --git a/tests/ref/seek/acodec-pcm-u8 b/tests/ref/seek/acodec-pcm-u8
index afa33519d7..7782e4a9d7 100644
--- a/tests/ref/seek/acodec-pcm-u8
+++ b/tests/ref/seek/acodec-pcm-u8
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 167110 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.894172 pts: 1.894172 pos: 167110 size:  2048
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69576 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69576 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 227306 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.576667 pts: 2.576667 pos: 227306 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 129772 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.470839 pts: 1.470839 pos: 129772 size:  2048
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32238 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32238 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 189968 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.153333 pts: 2.153333 pos: 189968 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos:  92434 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.047506 pts: 1.047506 pos:  92434 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.835828
-ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 250164 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.835828 pts: 2.835828 pos: 250164 size:  2048
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 152630 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.730000 pts: 1.730000 pos: 152630 size:  2048
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55096 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55096 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.412494
-ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 212826 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.412494 pts: 2.412494 pos: 212826 size:  2048
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 115292 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.306667 pts: 1.306667 pos: 115292 size:  2048
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17758 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17758 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.989184
-ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 175490 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.989184 pts: 1.989184 pos: 175490 size:  2048
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77954 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77954 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
 ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 235686 size:  4096
+ret: 0         st: 0 flags:1 dts: 2.671678 pts: 2.671678 pos: 235686 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.565850
-ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 138152 size:  4096
+ret: 0         st: 0 flags:1 dts: 1.565850 pts: 1.565850 pos: 138152 size:  2048
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40616 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40616 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     44 size:  2048
diff --git a/tests/ref/seek/lavf-wav b/tests/ref/seek/lavf-wav
index ed2f8d62de..0328ffc84b 100644
--- a/tests/ref/seek/lavf-wav
+++ b/tests/ref/seek/lavf-wav
@@ -1,53 +1,53 @@
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st:-1 flags:1  ts: 1.894167
 ret:-EOF
 ret: 0         st: 0 flags:0  ts: 0.788345
-ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69606 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.788345 pts: 0.788345 pos:  69606 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.317506
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.576668
 ret:-EOF
 ret: 0         st:-1 flags:1  ts: 1.470835
 ret:-EOF
 ret: 0         st: 0 flags:0  ts: 0.365011
-ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32268 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.365011 pts: 0.365011 pos:  32268 size:  2048
 ret: 0         st: 0 flags:1  ts:-0.740839
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st:-1 flags:0  ts: 2.153336
 ret:-EOF
 ret: 0         st:-1 flags:1  ts: 1.047503
 ret:-EOF
 ret: 0         st: 0 flags:0  ts:-0.058322
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.835828
 ret:-EOF
 ret: 0         st:-1 flags:0  ts: 1.730004
 ret:-EOF
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55126 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.624172 pts: 0.624172 pos:  55126 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.481655
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st: 0 flags:1  ts: 2.412494
 ret:-EOF
 ret: 0         st:-1 flags:0  ts: 1.306672
 ret:-EOF
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17788 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.200839 pts: 0.200839 pos:  17788 size:  2048
 ret: 0         st: 0 flags:0  ts:-0.904989
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st: 0 flags:1  ts: 1.989184
 ret:-EOF
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77984 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  77984 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
 ret: 0         st: 0 flags:0  ts: 2.671678
 ret:-EOF
 ret: 0         st: 0 flags:1  ts: 1.565850
 ret:-EOF
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40646 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  40646 size:  2048
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  4096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     74 size:  2048
-- 
2.35.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
@ 2024-02-26 22:19   ` Michael Niedermayer
  2024-02-27  9:48     ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Marton Balint
  0 siblings, 1 reply; 19+ messages in thread
From: Michael Niedermayer @ 2024-02-26 22:19 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 6370 bytes --]

On Mon, Feb 26, 2024 at 01:45:23AM +0100, Marton Balint wrote:
> This also fixes resampling with filter_size=1 and phase_shift=0, depending on
> input chunk size noticable corrpution was hearable with this command line:
> 
> ffplay -f lavfi -i "sine=440:r=8000:samples_per_frame=32,aresample=24000:filter_size=1:phase_shift=0"
> 
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
>  libswresample/resample.c          | 29 +++++++----------------------
>  libswresample/resample.h          |  4 ++--
>  libswresample/resample_template.c | 29 ++++++++++++++++++++++++-----
>  tests/fate/libswresample.mak      |  4 ++--
>  4 files changed, 35 insertions(+), 31 deletions(-)
> 
> diff --git a/libswresample/resample.c b/libswresample/resample.c
> index bd54a7002f..89859dec79 100644
> --- a/libswresample/resample.c
> +++ b/libswresample/resample.c
> @@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>  
>      *consumed = 0;
>  
> -    if (c->filter_length == 1 && c->phase_count == 1) {
> -        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index;
> -        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr;
> -        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
> -
> -        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
> -        if (dst_size > 0) {
> -            for (i = 0; i < dst->ch_count; i++) {
> -                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
> -                if (i+1 == dst->ch_count) {
> -                    c->index += dst_size * c->dst_incr_div;
> -                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
> -                    av_assert2(c->index >= 0);
> -                    *consumed = c->index;
> -                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
> -                    c->index = 0;
> -                }
> -            }
> -        }
> -    } else {
> +    {
>          int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
>          int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
>          int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
> @@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>          if (dst_size > 0) {
>              /* resample_linear and resample_common should have same behavior
>               * when frac and dst_incr_mod are zero */
> -            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
> -                            c->dsp.resample_linear : c->dsp.resample_common;
> +            if (c->filter_length == 1 && c->phase_count == 1)
> +                resample_func = c->dsp.resample_one;
> +            else if (c->linear && (c->frac || c->dst_incr_mod))
> +                resample_func = c->dsp.resample_linear;
> +            else
> +                resample_func = c->dsp.resample_common;
>              for (i = 0; i < dst->ch_count; i++)
>                  *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
>          }
> diff --git a/libswresample/resample.h b/libswresample/resample.h
> index 1731dad3cf..8cc29effe8 100644
> --- a/libswresample/resample.h
> +++ b/libswresample/resample.h
> @@ -51,8 +51,8 @@ typedef struct ResampleContext {
>      int phase_count_compensation;      /* desired phase_count when compensation is enabled */
>  
>      struct {
> -        void (*resample_one)(void *dst, const void *src,
> -                             int n, int64_t index, int64_t incr);
> +        int (*resample_one)(struct ResampleContext *c, void *dst,
> +                            const void *src, int n, int update_ctx);
>          int (*resample_common)(struct ResampleContext *c, void *dst,
>                                 const void *src, int n, int update_ctx);
>          int (*resample_linear)(struct ResampleContext *c, void *dst,
> diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
> index 4c227b9940..0c6e0ee34d 100644
> --- a/libswresample/resample_template.c
> +++ b/libswresample/resample_template.c
> @@ -72,17 +72,36 @@
>  
>  #endif
>  
> -static void RENAME(resample_one)(void *dest, const void *source,
> -                                 int dst_size, int64_t index2, int64_t incr)
> +static int RENAME(resample_one)(ResampleContext *c,
> +                                void *dest, const void *source,
> +                                int n, int update_ctx)
>  {
>      DELEM *dst = dest;
>      const DELEM *src = source;
>      int dst_index;
> +    int frac= c->frac;
> +    int sample_index = c->index;
> +    int index = 0;
> +
> +    for (dst_index = 0; dst_index < n; dst_index++) {
> +        dst[dst_index] = src[sample_index];
> +
> +        frac  += c->dst_incr_mod;
> +        index += c->dst_incr_div;
> +        if (frac >= c->src_incr) {
> +            frac -= c->src_incr;
> +            index++;
> +        }
> +        sample_index += index;
> +        index = 0;
> +    }
>  
> -    for (dst_index = 0; dst_index < dst_size; dst_index++) {
> -        dst[dst_index] = src[index2 >> 32];
> -        index2 += incr;
> +    if(update_ctx){
> +        c->frac= frac;
> +        c->index= index;
>      }
> +
> +    return sample_index;
>  }

please correct me if iam wrong, but this looks like that
resample_one() is used in some case where it doesnt produce correct
results ?

And to fix this your patch replaces the resample_one() optimization by
unoptimized code

I think what should be done is first understand why it produces
wrong output and if thats some edge case that can be just handled
better by teh common code or a new function. Or if some of the code
related to resample_one() is buggy n which case that should be fixed.
or if instead theres a issue in teh common code and you reuse resample_one
there and remove its optimizations because of that new use case.
I cannot tell ...

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Everything should be made as simple as possible, but not simpler.
-- Albert Einstein

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0
  2024-02-26 22:19   ` Michael Niedermayer
@ 2024-02-27  9:48     ` Marton Balint
  2024-02-27  9:48       ` [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
  2024-02-27 17:53       ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Michael Niedermayer
  0 siblings, 2 replies; 19+ messages in thread
From: Marton Balint @ 2024-02-27  9:48 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

Depending on input chunk size noticable corrpution was hearable, here is an
example command line:

ffplay -f lavfi -i "sine=440:r=8000:samples_per_frame=32,aresample=24000:filter_size=1:phase_shift=0"

Fix this by rounding the fixed point fractions up instead of down.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 libswresample/resample.c     | 4 ++--
 tests/fate/libswresample.mak | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libswresample/resample.c b/libswresample/resample.c
index bd54a7002f..17cebad01b 100644
--- a/libswresample/resample.c
+++ b/libswresample/resample.c
@@ -357,8 +357,8 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
     *consumed = 0;
 
     if (c->filter_length == 1 && c->phase_count == 1) {
-        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index;
-        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr;
+        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index + 1;
+        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr + 1;
         int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
 
         dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
diff --git a/tests/fate/libswresample.mak b/tests/fate/libswresample.mak
index 2fc55ea61a..0971a6b3ba 100644
--- a/tests/fate/libswresample.mak
+++ b/tests/fate/libswresample.mak
@@ -347,13 +347,13 @@ endef
 fate-swr-resample_nn-fltp-44100-8000: CMP_TARGET = 591.03
 fate-swr-resample_nn-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20486
 
-fate-swr-resample_nn-fltp-8000-44100: CMP_TARGET = 3163.32
+fate-swr-resample_nn-fltp-8000-44100: CMP_TARGET = 3156.61
 fate-swr-resample_nn-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20480
 
 fate-swr-resample_nn-s16p-44100-8000: CMP_TARGET = 590.98
 fate-swr-resample_nn-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20486
 
-fate-swr-resample_nn-s16p-8000-44100: CMP_TARGET = 3163.39
+fate-swr-resample_nn-s16p-8000-44100: CMP_TARGET = 3156.61
 fate-swr-resample_nn-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20480
 
 define ARESAMPLE_ASYNC
-- 
2.35.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-27  9:48     ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Marton Balint
@ 2024-02-27  9:48       ` Marton Balint
  2024-02-27 17:54         ` Michael Niedermayer
  2024-02-29 12:22         ` Michael Niedermayer
  2024-02-27 17:53       ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Michael Niedermayer
  1 sibling, 2 replies; 19+ messages in thread
From: Marton Balint @ 2024-02-27  9:48 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 libswresample/resample.c          | 29 +++++++----------------------
 libswresample/resample.h          |  4 ++--
 libswresample/resample_template.c | 14 ++++++++++++--
 3 files changed, 21 insertions(+), 26 deletions(-)

diff --git a/libswresample/resample.c b/libswresample/resample.c
index 17cebad01b..89859dec79 100644
--- a/libswresample/resample.c
+++ b/libswresample/resample.c
@@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
 
     *consumed = 0;
 
-    if (c->filter_length == 1 && c->phase_count == 1) {
-        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index + 1;
-        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr + 1;
-        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
-
-        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
-        if (dst_size > 0) {
-            for (i = 0; i < dst->ch_count; i++) {
-                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
-                if (i+1 == dst->ch_count) {
-                    c->index += dst_size * c->dst_incr_div;
-                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
-                    av_assert2(c->index >= 0);
-                    *consumed = c->index;
-                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
-                    c->index = 0;
-                }
-            }
-        }
-    } else {
+    {
         int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
         int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
         int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
@@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
         if (dst_size > 0) {
             /* resample_linear and resample_common should have same behavior
              * when frac and dst_incr_mod are zero */
-            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
-                            c->dsp.resample_linear : c->dsp.resample_common;
+            if (c->filter_length == 1 && c->phase_count == 1)
+                resample_func = c->dsp.resample_one;
+            else if (c->linear && (c->frac || c->dst_incr_mod))
+                resample_func = c->dsp.resample_linear;
+            else
+                resample_func = c->dsp.resample_common;
             for (i = 0; i < dst->ch_count; i++)
                 *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
         }
diff --git a/libswresample/resample.h b/libswresample/resample.h
index 1731dad3cf..8cc29effe8 100644
--- a/libswresample/resample.h
+++ b/libswresample/resample.h
@@ -51,8 +51,8 @@ typedef struct ResampleContext {
     int phase_count_compensation;      /* desired phase_count when compensation is enabled */
 
     struct {
-        void (*resample_one)(void *dst, const void *src,
-                             int n, int64_t index, int64_t incr);
+        int (*resample_one)(struct ResampleContext *c, void *dst,
+                            const void *src, int n, int update_ctx);
         int (*resample_common)(struct ResampleContext *c, void *dst,
                                const void *src, int n, int update_ctx);
         int (*resample_linear)(struct ResampleContext *c, void *dst,
diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
index 4c227b9940..a8114ea918 100644
--- a/libswresample/resample_template.c
+++ b/libswresample/resample_template.c
@@ -72,17 +72,27 @@
 
 #endif
 
-static void RENAME(resample_one)(void *dest, const void *source,
-                                 int dst_size, int64_t index2, int64_t incr)
+static int RENAME(resample_one)(ResampleContext *c,
+                                void *dest, const void *source,
+                                int dst_size, int update_ctx)
 {
     DELEM *dst = dest;
     const DELEM *src = source;
     int dst_index;
+    int64_t index2 = (1LL << 32) * c->frac     / c->src_incr + 1 + (1LL << 32) * c->index;
+    int64_t incr   = (1LL << 32) * c->dst_incr / c->src_incr + 1;
 
     for (dst_index = 0; dst_index < dst_size; dst_index++) {
         dst[dst_index] = src[index2 >> 32];
         index2 += incr;
     }
+
+    if (update_ctx) {
+        c->frac  = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
+        c->index = 0;
+    }
+
+    return index2 >> 32;
 }
 
 static int RENAME(resample_common)(ResampleContext *c,
-- 
2.35.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0
  2024-02-27  9:48     ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Marton Balint
  2024-02-27  9:48       ` [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
@ 2024-02-27 17:53       ` Michael Niedermayer
  1 sibling, 0 replies; 19+ messages in thread
From: Michael Niedermayer @ 2024-02-27 17:53 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 800 bytes --]

On Tue, Feb 27, 2024 at 10:48:09AM +0100, Marton Balint wrote:
> Depending on input chunk size noticable corrpution was hearable, here is an
> example command line:
> 
> ffplay -f lavfi -i "sine=440:r=8000:samples_per_frame=32,aresample=24000:filter_size=1:phase_shift=0"
> 
> Fix this by rounding the fixed point fractions up instead of down.
> 
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
>  libswresample/resample.c     | 4 ++--
>  tests/fate/libswresample.mak | 4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)

probably ok

thx


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Those who would give up essential Liberty, to purchase a little
temporary Safety, deserve neither Liberty nor Safety -- Benjamin Franklin

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-27  9:48       ` [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
@ 2024-02-27 17:54         ` Michael Niedermayer
  2024-02-27 20:50           ` Marton Balint
  2024-02-29 12:22         ` Michael Niedermayer
  1 sibling, 1 reply; 19+ messages in thread
From: Michael Niedermayer @ 2024-02-27 17:54 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 569 bytes --]

On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
>  libswresample/resample.c          | 29 +++++++----------------------
>  libswresample/resample.h          |  4 ++--
>  libswresample/resample_template.c | 14 ++++++++++++--
>  3 files changed, 21 insertions(+), 26 deletions(-)

what effect does this have on speed ?

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

There will always be a question for which you do not know the correct answer.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-27 17:54         ` Michael Niedermayer
@ 2024-02-27 20:50           ` Marton Balint
  2024-02-28 22:45             ` Michael Niedermayer
  0 siblings, 1 reply; 19+ messages in thread
From: Marton Balint @ 2024-02-27 20:50 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Tue, 27 Feb 2024, Michael Niedermayer wrote:

> On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
>> Signed-off-by: Marton Balint <cus@passwd.hu>
>> ---
>>  libswresample/resample.c          | 29 +++++++----------------------
>>  libswresample/resample.h          |  4 ++--
>>  libswresample/resample_template.c | 14 ++++++++++++--
>>  3 files changed, 21 insertions(+), 26 deletions(-)
>
> what effect does this have on speed ?

For the following command line

time ./ffprobe -f lavfi \
"sine=440:r=8000:d=86400:samples_per_frame=2048,aresample=24000:filter_size=1:phase_shift=0" \
-show_packets >/dev/null

Before the patch:

real	0m3,916s
user	0m3,812s
sys	0m0,104s

After the patch:

real    0m3,597s
user    0m3,457s
sys     0m0,140s

So it actually speed things up.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-27 20:50           ` Marton Balint
@ 2024-02-28 22:45             ` Michael Niedermayer
  2024-02-29  0:19               ` Marton Balint
  0 siblings, 1 reply; 19+ messages in thread
From: Michael Niedermayer @ 2024-02-28 22:45 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 1189 bytes --]

On Tue, Feb 27, 2024 at 09:50:49PM +0100, Marton Balint wrote:
> 
> 
> On Tue, 27 Feb 2024, Michael Niedermayer wrote:
> 
> > On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
> > > Signed-off-by: Marton Balint <cus@passwd.hu>
> > > ---
> > >  libswresample/resample.c          | 29 +++++++----------------------
> > >  libswresample/resample.h          |  4 ++--
> > >  libswresample/resample_template.c | 14 ++++++++++++--
> > >  3 files changed, 21 insertions(+), 26 deletions(-)
> > 
> > what effect does this have on speed ?
> 
> For the following command line
> 
> time ./ffprobe -f lavfi \
> "sine=440:r=8000:d=86400:samples_per_frame=2048,aresample=24000:filter_size=1:phase_shift=0" \
> -show_packets >/dev/null
> 
> Before the patch:
> 
> real	0m3,916s
> user	0m3,812s
> sys	0m0,104s
> 
> After the patch:
> 
> real    0m3,597s
> user    0m3,457s
> sys     0m0,140s
> 
> So it actually speed things up.

is resample_one used in both cases ?

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The educated differ from the uneducated as much as the living from the
dead. -- Aristotle 

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default
  2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default Marton Balint
@ 2024-02-28 23:12   ` Andreas Rheinhardt
  2024-02-29  0:18     ` Marton Balint
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Rheinhardt @ 2024-02-28 23:12 UTC (permalink / raw)
  To: ffmpeg-devel

Marton Balint:
> The wav demuxer by default tried to demux 4096-byte packets which caused
> packets with very few number of samples for files with high channel count.
> This caused a significant overhead especially since the latest ffmpeg.c
> threading changes.
> 
> So let's use a similar approach for selecting audio frame size which is already
> used in the PCM demuxer, which is to read 25 times per second but at most 1024
> samples.

1024 samples seems to be quite small, in particular for files with few
channels (like stereo).

- Andreas

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default
  2024-02-28 23:12   ` Andreas Rheinhardt
@ 2024-02-29  0:18     ` Marton Balint
  2024-03-01 22:30       ` Marton Balint
  0 siblings, 1 reply; 19+ messages in thread
From: Marton Balint @ 2024-02-29  0:18 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Thu, 29 Feb 2024, Andreas Rheinhardt wrote:

> Marton Balint:
>> The wav demuxer by default tried to demux 4096-byte packets which caused
>> packets with very few number of samples for files with high channel count.
>> This caused a significant overhead especially since the latest ffmpeg.c
>> threading changes.
>>
>> So let's use a similar approach for selecting audio frame size which is already
>> used in the PCM demuxer, which is to read 25 times per second but at most 1024
>> samples.
>
> 1024 samples seems to be quite small, in particular for files with few
> channels (like stereo).

1024 is kind of a historical default. Also having multiples of 1024 is 
beneficial for some codecs which encode this many samples per frame.

In any case, I am not against somewhat increasing this, but it should be 
done for both PCM and WAV, it can be a separate patch and discussion.

Regards,
Marton

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-28 22:45             ` Michael Niedermayer
@ 2024-02-29  0:19               ` Marton Balint
  0 siblings, 0 replies; 19+ messages in thread
From: Marton Balint @ 2024-02-29  0:19 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Wed, 28 Feb 2024, Michael Niedermayer wrote:

> On Tue, Feb 27, 2024 at 09:50:49PM +0100, Marton Balint wrote:
>>
>>
>> On Tue, 27 Feb 2024, Michael Niedermayer wrote:
>>
>>> On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
>>>> Signed-off-by: Marton Balint <cus@passwd.hu>
>>>> ---
>>>>  libswresample/resample.c          | 29 +++++++----------------------
>>>>  libswresample/resample.h          |  4 ++--
>>>>  libswresample/resample_template.c | 14 ++++++++++++--
>>>>  3 files changed, 21 insertions(+), 26 deletions(-)
>>>
>>> what effect does this have on speed ?
>>
>> For the following command line
>>
>> time ./ffprobe -f lavfi \
>> "sine=440:r=8000:d=86400:samples_per_frame=2048,aresample=24000:filter_size=1:phase_shift=0" \
>> -show_packets >/dev/null
>>
>> Before the patch:
>>
>> real	0m3,916s
>> user	0m3,812s
>> sys	0m0,104s
>>
>> After the patch:
>>
>> real    0m3,597s
>> user    0m3,457s
>> sys     0m0,140s
>>
>> So it actually speed things up.
>
> is resample_one used in both cases ?

Sure. The patch does not change the conditions when resample_one is used.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-27  9:48       ` [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
  2024-02-27 17:54         ` Michael Niedermayer
@ 2024-02-29 12:22         ` Michael Niedermayer
  2024-02-29 17:55           ` Marton Balint
  1 sibling, 1 reply; 19+ messages in thread
From: Michael Niedermayer @ 2024-02-29 12:22 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 4914 bytes --]

On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
>  libswresample/resample.c          | 29 +++++++----------------------
>  libswresample/resample.h          |  4 ++--
>  libswresample/resample_template.c | 14 ++++++++++++--
>  3 files changed, 21 insertions(+), 26 deletions(-)
> 
> diff --git a/libswresample/resample.c b/libswresample/resample.c
> index 17cebad01b..89859dec79 100644
> --- a/libswresample/resample.c
> +++ b/libswresample/resample.c
> @@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>  
>      *consumed = 0;
>  
> -    if (c->filter_length == 1 && c->phase_count == 1) {
> -        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index + 1;
> -        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr + 1;
> -        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
> -
> -        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
> -        if (dst_size > 0) {
> -            for (i = 0; i < dst->ch_count; i++) {
> -                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
> -                if (i+1 == dst->ch_count) {
> -                    c->index += dst_size * c->dst_incr_div;
> -                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
> -                    av_assert2(c->index >= 0);
> -                    *consumed = c->index;
> -                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
> -                    c->index = 0;
> -                }
> -            }
> -        }
> -    } else {
> +    {
>          int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
>          int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
>          int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
> @@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>          if (dst_size > 0) {
>              /* resample_linear and resample_common should have same behavior
>               * when frac and dst_incr_mod are zero */
> -            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
> -                            c->dsp.resample_linear : c->dsp.resample_common;
> +            if (c->filter_length == 1 && c->phase_count == 1)
> +                resample_func = c->dsp.resample_one;
> +            else if (c->linear && (c->frac || c->dst_incr_mod))
> +                resample_func = c->dsp.resample_linear;
> +            else
> +                resample_func = c->dsp.resample_common;
>              for (i = 0; i < dst->ch_count; i++)
>                  *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
>          }
> diff --git a/libswresample/resample.h b/libswresample/resample.h
> index 1731dad3cf..8cc29effe8 100644
> --- a/libswresample/resample.h
> +++ b/libswresample/resample.h
> @@ -51,8 +51,8 @@ typedef struct ResampleContext {
>      int phase_count_compensation;      /* desired phase_count when compensation is enabled */
>  
>      struct {
> -        void (*resample_one)(void *dst, const void *src,
> -                             int n, int64_t index, int64_t incr);
> +        int (*resample_one)(struct ResampleContext *c, void *dst,
> +                            const void *src, int n, int update_ctx);
>          int (*resample_common)(struct ResampleContext *c, void *dst,
>                                 const void *src, int n, int update_ctx);
>          int (*resample_linear)(struct ResampleContext *c, void *dst,
> diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
> index 4c227b9940..a8114ea918 100644
> --- a/libswresample/resample_template.c
> +++ b/libswresample/resample_template.c
> @@ -72,17 +72,27 @@
>  
>  #endif
>  
> -static void RENAME(resample_one)(void *dest, const void *source,
> -                                 int dst_size, int64_t index2, int64_t incr)
> +static int RENAME(resample_one)(ResampleContext *c,
> +                                void *dest, const void *source,
> +                                int dst_size, int update_ctx)
>  {
>      DELEM *dst = dest;
>      const DELEM *src = source;
>      int dst_index;

> +    int64_t index2 = (1LL << 32) * c->frac     / c->src_incr + 1 + (1LL << 32) * c->index;
> +    int64_t incr   = (1LL << 32) * c->dst_incr / c->src_incr + 1;

This computation is done repeatedly for each channel, thats not needed
its enough if its done once

thx

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The worst form of inequality is to try to make unequal things equal.
-- Aristotle

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-29 12:22         ` Michael Niedermayer
@ 2024-02-29 17:55           ` Marton Balint
  2024-03-01  3:30             ` Michael Niedermayer
  0 siblings, 1 reply; 19+ messages in thread
From: Marton Balint @ 2024-02-29 17:55 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Thu, 29 Feb 2024, Michael Niedermayer wrote:

> On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
>> Signed-off-by: Marton Balint <cus@passwd.hu>
>> ---
>>  libswresample/resample.c          | 29 +++++++----------------------
>>  libswresample/resample.h          |  4 ++--
>>  libswresample/resample_template.c | 14 ++++++++++++--
>>  3 files changed, 21 insertions(+), 26 deletions(-)
>>
>> diff --git a/libswresample/resample.c b/libswresample/resample.c
>> index 17cebad01b..89859dec79 100644
>> --- a/libswresample/resample.c
>> +++ b/libswresample/resample.c
>> @@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>>
>>      *consumed = 0;
>>
>> -    if (c->filter_length == 1 && c->phase_count == 1) {
>> -        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index + 1;
>> -        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr + 1;
>> -        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
>> -
>> -        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
>> -        if (dst_size > 0) {
>> -            for (i = 0; i < dst->ch_count; i++) {
>> -                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
>> -                if (i+1 == dst->ch_count) {
>> -                    c->index += dst_size * c->dst_incr_div;
>> -                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
>> -                    av_assert2(c->index >= 0);
>> -                    *consumed = c->index;
>> -                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
>> -                    c->index = 0;
>> -                }
>> -            }
>> -        }
>> -    } else {
>> +    {
>>          int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
>>          int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
>>          int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
>> @@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>>          if (dst_size > 0) {
>>              /* resample_linear and resample_common should have same behavior
>>               * when frac and dst_incr_mod are zero */
>> -            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
>> -                            c->dsp.resample_linear : c->dsp.resample_common;
>> +            if (c->filter_length == 1 && c->phase_count == 1)
>> +                resample_func = c->dsp.resample_one;
>> +            else if (c->linear && (c->frac || c->dst_incr_mod))
>> +                resample_func = c->dsp.resample_linear;
>> +            else
>> +                resample_func = c->dsp.resample_common;
>>              for (i = 0; i < dst->ch_count; i++)
>>                  *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
>>          }
>> diff --git a/libswresample/resample.h b/libswresample/resample.h
>> index 1731dad3cf..8cc29effe8 100644
>> --- a/libswresample/resample.h
>> +++ b/libswresample/resample.h
>> @@ -51,8 +51,8 @@ typedef struct ResampleContext {
>>      int phase_count_compensation;      /* desired phase_count when compensation is enabled */
>>
>>      struct {
>> -        void (*resample_one)(void *dst, const void *src,
>> -                             int n, int64_t index, int64_t incr);
>> +        int (*resample_one)(struct ResampleContext *c, void *dst,
>> +                            const void *src, int n, int update_ctx);
>>          int (*resample_common)(struct ResampleContext *c, void *dst,
>>                                 const void *src, int n, int update_ctx);
>>          int (*resample_linear)(struct ResampleContext *c, void *dst,
>> diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
>> index 4c227b9940..a8114ea918 100644
>> --- a/libswresample/resample_template.c
>> +++ b/libswresample/resample_template.c
>> @@ -72,17 +72,27 @@
>>
>>  #endif
>>
>> -static void RENAME(resample_one)(void *dest, const void *source,
>> -                                 int dst_size, int64_t index2, int64_t incr)
>> +static int RENAME(resample_one)(ResampleContext *c,
>> +                                void *dest, const void *source,
>> +                                int dst_size, int update_ctx)
>>  {
>>      DELEM *dst = dest;
>>      const DELEM *src = source;
>>      int dst_index;
>
>> +    int64_t index2 = (1LL << 32) * c->frac     / c->src_incr + 1 + (1LL << 32) * c->index;
>> +    int64_t incr   = (1LL << 32) * c->dst_incr / c->src_incr + 1;
>
> This computation is done repeatedly for each channel, thats not needed
> its enough if its done once

I consider that negligable for real cases, and it makes the code cleaner 
doing the computations here.

If you insist on this, then it is better to rework all the resample funcs 
to work on all channels in a separate patch.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-02-29 17:55           ` Marton Balint
@ 2024-03-01  3:30             ` Michael Niedermayer
  2024-03-01 22:24               ` Marton Balint
  0 siblings, 1 reply; 19+ messages in thread
From: Michael Niedermayer @ 2024-03-01  3:30 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 6596 bytes --]

On Thu, Feb 29, 2024 at 06:55:01PM +0100, Marton Balint wrote:
> 
> 
> On Thu, 29 Feb 2024, Michael Niedermayer wrote:
> 
> > On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
> > > Signed-off-by: Marton Balint <cus@passwd.hu>
> > > ---
> > >  libswresample/resample.c          | 29 +++++++----------------------
> > >  libswresample/resample.h          |  4 ++--
> > >  libswresample/resample_template.c | 14 ++++++++++++--
> > >  3 files changed, 21 insertions(+), 26 deletions(-)
> > > 
> > > diff --git a/libswresample/resample.c b/libswresample/resample.c
> > > index 17cebad01b..89859dec79 100644
> > > --- a/libswresample/resample.c
> > > +++ b/libswresample/resample.c
> > > @@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
> > > 
> > >      *consumed = 0;
> > > 
> > > -    if (c->filter_length == 1 && c->phase_count == 1) {
> > > -        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index + 1;
> > > -        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr + 1;
> > > -        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
> > > -
> > > -        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
> > > -        if (dst_size > 0) {
> > > -            for (i = 0; i < dst->ch_count; i++) {
> > > -                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
> > > -                if (i+1 == dst->ch_count) {
> > > -                    c->index += dst_size * c->dst_incr_div;
> > > -                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
> > > -                    av_assert2(c->index >= 0);
> > > -                    *consumed = c->index;
> > > -                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
> > > -                    c->index = 0;
> > > -                }
> > > -            }
> > > -        }
> > > -    } else {
> > > +    {
> > >          int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
> > >          int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
> > >          int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
> > > @@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
> > >          if (dst_size > 0) {
> > >              /* resample_linear and resample_common should have same behavior
> > >               * when frac and dst_incr_mod are zero */
> > > -            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
> > > -                            c->dsp.resample_linear : c->dsp.resample_common;
> > > +            if (c->filter_length == 1 && c->phase_count == 1)
> > > +                resample_func = c->dsp.resample_one;
> > > +            else if (c->linear && (c->frac || c->dst_incr_mod))
> > > +                resample_func = c->dsp.resample_linear;
> > > +            else
> > > +                resample_func = c->dsp.resample_common;
> > >              for (i = 0; i < dst->ch_count; i++)
> > >                  *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
> > >          }
> > > diff --git a/libswresample/resample.h b/libswresample/resample.h
> > > index 1731dad3cf..8cc29effe8 100644
> > > --- a/libswresample/resample.h
> > > +++ b/libswresample/resample.h
> > > @@ -51,8 +51,8 @@ typedef struct ResampleContext {
> > >      int phase_count_compensation;      /* desired phase_count when compensation is enabled */
> > > 
> > >      struct {
> > > -        void (*resample_one)(void *dst, const void *src,
> > > -                             int n, int64_t index, int64_t incr);
> > > +        int (*resample_one)(struct ResampleContext *c, void *dst,
> > > +                            const void *src, int n, int update_ctx);
> > >          int (*resample_common)(struct ResampleContext *c, void *dst,
> > >                                 const void *src, int n, int update_ctx);
> > >          int (*resample_linear)(struct ResampleContext *c, void *dst,
> > > diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
> > > index 4c227b9940..a8114ea918 100644
> > > --- a/libswresample/resample_template.c
> > > +++ b/libswresample/resample_template.c
> > > @@ -72,17 +72,27 @@
> > > 
> > >  #endif
> > > 
> > > -static void RENAME(resample_one)(void *dest, const void *source,
> > > -                                 int dst_size, int64_t index2, int64_t incr)
> > > +static int RENAME(resample_one)(ResampleContext *c,
> > > +                                void *dest, const void *source,
> > > +                                int dst_size, int update_ctx)
> > >  {
> > >      DELEM *dst = dest;
> > >      const DELEM *src = source;
> > >      int dst_index;
> > 
> > > +    int64_t index2 = (1LL << 32) * c->frac     / c->src_incr + 1 + (1LL << 32) * c->index;
> > > +    int64_t incr   = (1LL << 32) * c->dst_incr / c->src_incr + 1;
> > 
> > This computation is done repeatedly for each channel, thats not needed
> > its enough if its done once
> 
> I consider that negligable for real cases, and it makes the code cleaner
> doing the computations here.

It would make asm optimized functions more difficult to implement too while
being less efficient.


> 
> If you insist on this, then it is better to rework all the resample funcs to
> work on all channels in a separate patch.

That would be work as IIRC there are asm optimiezd versions
of these. Also iam not sure about the complexity overall decreasing with
such change

either way iam not "insisting" on anything, i just want the code to be
simple, clean and fast. I think the original code was close to achieving
this, it just was buggy.

Really iam happy about any ovarall improvment you want to do.
But this started out as a bugfix, and in that context seeing a non
bugfix change looks wrong to me

If you want to simplify or otherwise improve swr, iam not in your way
but please make sure the code really does improve and doesnt just
look better to you.
For example when its obvious a change would affect cases with small
blocks and many channels the worst, the speed of such case should be
tested. Not just a mono case

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I do not agree with what you have to say, but I'll defend to the death your
right to say it. -- Voltaire

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others
  2024-03-01  3:30             ` Michael Niedermayer
@ 2024-03-01 22:24               ` Marton Balint
  0 siblings, 0 replies; 19+ messages in thread
From: Marton Balint @ 2024-03-01 22:24 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Fri, 1 Mar 2024, Michael Niedermayer wrote:

> On Thu, Feb 29, 2024 at 06:55:01PM +0100, Marton Balint wrote:
>>
>>
>> On Thu, 29 Feb 2024, Michael Niedermayer wrote:
>>
>>> On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote:
>>>> Signed-off-by: Marton Balint <cus@passwd.hu>
>>>> ---
>>>>  libswresample/resample.c          | 29 +++++++----------------------
>>>>  libswresample/resample.h          |  4 ++--
>>>>  libswresample/resample_template.c | 14 ++++++++++++--
>>>>  3 files changed, 21 insertions(+), 26 deletions(-)
>>>>
>>>> diff --git a/libswresample/resample.c b/libswresample/resample.c
>>>> index 17cebad01b..89859dec79 100644
>>>> --- a/libswresample/resample.c
>>>> +++ b/libswresample/resample.c
>>>> @@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>>>>
>>>>      *consumed = 0;
>>>>
>>>> -    if (c->filter_length == 1 && c->phase_count == 1) {
>>>> -        int64_t index2= (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->index + 1;
>>>> -        int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr + 1;
>>>> -        int new_size = (src_size * (int64_t)c->src_incr - c->frac + c->dst_incr - 1) / c->dst_incr;
>>>> -
>>>> -        dst_size = FFMAX(FFMIN(dst_size, new_size), 0);
>>>> -        if (dst_size > 0) {
>>>> -            for (i = 0; i < dst->ch_count; i++) {
>>>> -                c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, index2, incr);
>>>> -                if (i+1 == dst->ch_count) {
>>>> -                    c->index += dst_size * c->dst_incr_div;
>>>> -                    c->index += (c->frac + dst_size * (int64_t)c->dst_incr_mod) / c->src_incr;
>>>> -                    av_assert2(c->index >= 0);
>>>> -                    *consumed = c->index;
>>>> -                    c->frac   = (c->frac + dst_size * (int64_t)c->dst_incr_mod) % c->src_incr;
>>>> -                    c->index = 0;
>>>> -                }
>>>> -            }
>>>> -        }
>>>> -    } else {
>>>> +    {
>>>>          int64_t end_index = (1LL + src_size - c->filter_length) * c->phase_count;
>>>>          int64_t delta_frac = (end_index - c->index) * c->src_incr - c->frac;
>>>>          int delta_n = (delta_frac + c->dst_incr - 1) / c->dst_incr;
>>>> @@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A
>>>>          if (dst_size > 0) {
>>>>              /* resample_linear and resample_common should have same behavior
>>>>               * when frac and dst_incr_mod are zero */
>>>> -            resample_func = (c->linear && (c->frac || c->dst_incr_mod)) ?
>>>> -                            c->dsp.resample_linear : c->dsp.resample_common;
>>>> +            if (c->filter_length == 1 && c->phase_count == 1)
>>>> +                resample_func = c->dsp.resample_one;
>>>> +            else if (c->linear && (c->frac || c->dst_incr_mod))
>>>> +                resample_func = c->dsp.resample_linear;
>>>> +            else
>>>> +                resample_func = c->dsp.resample_common;
>>>>              for (i = 0; i < dst->ch_count; i++)
>>>>                  *consumed = resample_func(c, dst->ch[i], src->ch[i], dst_size, i+1 == dst->ch_count);
>>>>          }
>>>> diff --git a/libswresample/resample.h b/libswresample/resample.h
>>>> index 1731dad3cf..8cc29effe8 100644
>>>> --- a/libswresample/resample.h
>>>> +++ b/libswresample/resample.h
>>>> @@ -51,8 +51,8 @@ typedef struct ResampleContext {
>>>>      int phase_count_compensation;      /* desired phase_count when compensation is enabled */
>>>>
>>>>      struct {
>>>> -        void (*resample_one)(void *dst, const void *src,
>>>> -                             int n, int64_t index, int64_t incr);
>>>> +        int (*resample_one)(struct ResampleContext *c, void *dst,
>>>> +                            const void *src, int n, int update_ctx);
>>>>          int (*resample_common)(struct ResampleContext *c, void *dst,
>>>>                                 const void *src, int n, int update_ctx);
>>>>          int (*resample_linear)(struct ResampleContext *c, void *dst,
>>>> diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c
>>>> index 4c227b9940..a8114ea918 100644
>>>> --- a/libswresample/resample_template.c
>>>> +++ b/libswresample/resample_template.c
>>>> @@ -72,17 +72,27 @@
>>>>
>>>>  #endif
>>>>
>>>> -static void RENAME(resample_one)(void *dest, const void *source,
>>>> -                                 int dst_size, int64_t index2, int64_t incr)
>>>> +static int RENAME(resample_one)(ResampleContext *c,
>>>> +                                void *dest, const void *source,
>>>> +                                int dst_size, int update_ctx)
>>>>  {
>>>>      DELEM *dst = dest;
>>>>      const DELEM *src = source;
>>>>      int dst_index;
>>>
>>>> +    int64_t index2 = (1LL << 32) * c->frac     / c->src_incr + 1 + (1LL << 32) * c->index;
>>>> +    int64_t incr   = (1LL << 32) * c->dst_incr / c->src_incr + 1;
>>>
>>> This computation is done repeatedly for each channel, thats not needed
>>> its enough if its done once
>>
>> I consider that negligable for real cases, and it makes the code cleaner
>> doing the computations here.
>
> It would make asm optimized functions more difficult to implement too while
> being less efficient.
>
>
>>
>> If you insist on this, then it is better to rework all the resample funcs to
>> work on all channels in a separate patch.
>
> That would be work as IIRC there are asm optimiezd versions
> of these. Also iam not sure about the complexity overall decreasing with
> such change
>
> either way iam not "insisting" on anything, i just want the code to be
> simple, clean and fast. I think the original code was close to achieving
> this, it just was buggy.
>
> Really iam happy about any ovarall improvment you want to do.
> But this started out as a bugfix, and in that context seeing a non
> bugfix change looks wrong to me
>
> If you want to simplify or otherwise improve swr, iam not in your way
> but please make sure the code really does improve and doesnt just
> look better to you.
> For example when its obvious a change would affect cases with small
> blocks and many channels the worst, the speed of such case should be
> tested. Not just a mono case

I just feel we draw the line between code simplicity and performance of 
rare or artificially constructed cases in different places.

I will drop this patch for now, I don't want to delay the set this was 
initially part of. (which by the way is an attempt to fix the ffmpeg.c 
audio frame performance issue caused by its threading changes)

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default
  2024-02-29  0:18     ` Marton Balint
@ 2024-03-01 22:30       ` Marton Balint
  0 siblings, 0 replies; 19+ messages in thread
From: Marton Balint @ 2024-03-01 22:30 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Thu, 29 Feb 2024, Marton Balint wrote:

>
>
> On Thu, 29 Feb 2024, Andreas Rheinhardt wrote:
>
>>  Marton Balint:
>>>  The wav demuxer by default tried to demux 4096-byte packets which caused
>>>  packets with very few number of samples for files with high channel
>>>  count.
>>>  This caused a significant overhead especially since the latest ffmpeg.c
>>>  threading changes.
>>>
>>>  So let's use a similar approach for selecting audio frame size which is
>>>  already
>>>  used in the PCM demuxer, which is to read 25 times per second but at most
>>>  1024
>>>  samples.
>>
>>  1024 samples seems to be quite small, in particular for files with few
>>  channels (like stereo).
>
> 1024 is kind of a historical default. Also having multiples of 1024 is 
> beneficial for some codecs which encode this many samples per frame.
>
> In any case, I am not against somewhat increasing this, but it should be done 
> for both PCM and WAV, it can be a separate patch and discussion.

I will apply this set soon unless there are other comments. Will send a 
patch after that to increase the default sample amount for wav and pcm.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2024-03-01 22:31 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-26  0:45 [FFmpeg-devel] [PATCH 1/4] fate: never generate auto-generated references Marton Balint
2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 2/4] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
2024-02-26 22:19   ` Michael Niedermayer
2024-02-27  9:48     ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Marton Balint
2024-02-27  9:48       ` [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others Marton Balint
2024-02-27 17:54         ` Michael Niedermayer
2024-02-27 20:50           ` Marton Balint
2024-02-28 22:45             ` Michael Niedermayer
2024-02-29  0:19               ` Marton Balint
2024-02-29 12:22         ` Michael Niedermayer
2024-02-29 17:55           ` Marton Balint
2024-03-01  3:30             ` Michael Niedermayer
2024-03-01 22:24               ` Marton Balint
2024-02-27 17:53       ` [FFmpeg-devel] [PATCH 1/2] swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 Michael Niedermayer
2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 3/4] fate/libswresample: force number of samples for the input of aresample async tests Marton Balint
2024-02-26  0:45 ` [FFmpeg-devel] [PATCH 4/4] avformat/wavdec: dynamically set max_size by default Marton Balint
2024-02-28 23:12   ` Andreas Rheinhardt
2024-02-29  0:18     ` Marton Balint
2024-03-01 22:30       ` Marton Balint

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git