diff mbox

[FFmpeg-devel] mjpegenc: enable optimal huffman coding by default

Message ID 20170403213127.81373-1-atomnuker@gmail.com
State Accepted
Commit 45eeb1f785d6c726181568db341bbf80b43e32c0
Headers show

Commit Message

Rostislav Pehlivanov April 3, 2017, 9:31 p.m. UTC
As it gives excellent encoding gains at an insignificant speed increase
and passes fate without problems, it should now be safe to enable by
default.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
---
Had to add some missing tests
---
 libavcodec/mjpegenc.c                    |  2 +-
 tests/ref/lavf/jpg                       |  4 ++--
 tests/ref/lavf/smjpeg                    |  4 ++--
 tests/ref/seek/lavf-jpg                  |  8 +++----
 tests/ref/seek/vsynth_lena-mjpeg         | 40 ++++++++++++++++----------------
 tests/ref/vsynth/vsynth1-mjpeg           |  4 ++--
 tests/ref/vsynth/vsynth1-mjpeg-422       |  4 ++--
 tests/ref/vsynth/vsynth1-mjpeg-444       |  4 ++--
 tests/ref/vsynth/vsynth1-mjpeg-trell     |  8 +++----
 tests/ref/vsynth/vsynth2-mjpeg           |  4 ++--
 tests/ref/vsynth/vsynth2-mjpeg-422       |  4 ++--
 tests/ref/vsynth/vsynth2-mjpeg-444       |  4 ++--
 tests/ref/vsynth/vsynth2-mjpeg-trell     |  6 ++---
 tests/ref/vsynth/vsynth3-mjpeg           |  4 ++--
 tests/ref/vsynth/vsynth3-mjpeg-422       |  4 ++--
 tests/ref/vsynth/vsynth3-mjpeg-444       |  4 ++--
 tests/ref/vsynth/vsynth3-mjpeg-trell     |  8 +++----
 tests/ref/vsynth/vsynth_lena-mjpeg       |  4 ++--
 tests/ref/vsynth/vsynth_lena-mjpeg-422   |  4 ++--
 tests/ref/vsynth/vsynth_lena-mjpeg-444   |  4 ++--
 tests/ref/vsynth/vsynth_lena-mjpeg-trell |  8 +++----
 21 files changed, 68 insertions(+), 68 deletions(-)

Comments

Michael Niedermayer April 4, 2017, 1:54 a.m. UTC | #1
On Mon, Apr 03, 2017 at 10:31:27PM +0100, Rostislav Pehlivanov wrote:
> As it gives excellent encoding gains at an insignificant speed increase
> and passes fate without problems, it should now be safe to enable by
> default.

Still breaks slice threading

both
Assertion n <= 31 && value < (1U << n) failed at libavcodec/put_bits.h:157

and
Assertion (header_bits & 7) == 0 failed at libavcodec/mjpegenc_common.c:541

occur with
./ffmpeg -y -i ~/fatesamples/fate/fate-suite/lena.pnm  -vf scale -strict -1  -threads 2 -thread_type slice test.jpg

randomly

also ive seen it not trigger an assert on repeating the command

[...]
Rostislav Pehlivanov April 4, 2017, 10 a.m. UTC | #2
On 4 April 2017 at 02:54, Michael Niedermayer <michael@niedermayer.cc>
wrote:

> On Mon, Apr 03, 2017 at 10:31:27PM +0100, Rostislav Pehlivanov wrote:
> > As it gives excellent encoding gains at an insignificant speed increase
> > and passes fate without problems, it should now be safe to enable by
> > default.
>
> Still breaks slice threading
>
> both
> Assertion n <= 31 && value < (1U << n) failed at libavcodec/put_bits.h:157
>
> and
> Assertion (header_bits & 7) == 0 failed at libavcodec/mjpegenc_common.c:
> 541
>
> occur with
> ./ffmpeg -y -i ~/fatesamples/fate/fate-suite/lena.pnm  -vf scale -strict
> -1  -threads 2 -thread_type slice test.jpg
>
> randomly
>
> also ive seen it not trigger an assert on repeating the command
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> You can kill me, but you cannot change the truth.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
Sent a patch meant to be applied before this patch to disable it with AMV
and slice threads, should fix this issue.
Michael Niedermayer April 4, 2017, 1:59 p.m. UTC | #3
On Tue, Apr 04, 2017 at 11:00:23AM +0100, Rostislav Pehlivanov wrote:
> On 4 April 2017 at 02:54, Michael Niedermayer <michael@niedermayer.cc>
> wrote:
> 
> > On Mon, Apr 03, 2017 at 10:31:27PM +0100, Rostislav Pehlivanov wrote:
> > > As it gives excellent encoding gains at an insignificant speed increase
> > > and passes fate without problems, it should now be safe to enable by
> > > default.
> >
> > Still breaks slice threading
> >
> > both
> > Assertion n <= 31 && value < (1U << n) failed at libavcodec/put_bits.h:157
> >
> > and
> > Assertion (header_bits & 7) == 0 failed at libavcodec/mjpegenc_common.c:
> > 541
> >
> > occur with
> > ./ffmpeg -y -i ~/fatesamples/fate/fate-suite/lena.pnm  -vf scale -strict
> > -1  -threads 2 -thread_type slice test.jpg
> >
> > randomly
> >
> > also ive seen it not trigger an assert on repeating the command
> >
> > [...]
> > --
> > Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> >
> > You can kill me, but you cannot change the truth.
> >
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> >
> Sent a patch meant to be applied before this patch to disable it with AMV
> and slice threads, should fix this issue.

The failing case doesnt use AMV
and i double checked, i had all 3 patches applied when i tested
yestarday

[...]
Michael Niedermayer April 4, 2017, 2:10 p.m. UTC | #4
On Tue, Apr 04, 2017 at 03:59:28PM +0200, Michael Niedermayer wrote:
> On Tue, Apr 04, 2017 at 11:00:23AM +0100, Rostislav Pehlivanov wrote:
> > On 4 April 2017 at 02:54, Michael Niedermayer <michael@niedermayer.cc>
> > wrote:
> > 
> > > On Mon, Apr 03, 2017 at 10:31:27PM +0100, Rostislav Pehlivanov wrote:
> > > > As it gives excellent encoding gains at an insignificant speed increase
> > > > and passes fate without problems, it should now be safe to enable by
> > > > default.
> > >
> > > Still breaks slice threading
> > >
> > > both
> > > Assertion n <= 31 && value < (1U << n) failed at libavcodec/put_bits.h:157
> > >
> > > and
> > > Assertion (header_bits & 7) == 0 failed at libavcodec/mjpegenc_common.c:
> > > 541
> > >
> > > occur with
> > > ./ffmpeg -y -i ~/fatesamples/fate/fate-suite/lena.pnm  -vf scale -strict
> > > -1  -threads 2 -thread_type slice test.jpg
> > >
> > > randomly
> > >
> > > also ive seen it not trigger an assert on repeating the command
> > >
> > > [...]
> > > --
> > > Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> > >
> > > You can kill me, but you cannot change the truth.
> > >
> > > _______________________________________________
> > > ffmpeg-devel mailing list
> > > ffmpeg-devel@ffmpeg.org
> > > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > >
> > >
> > Sent a patch meant to be applied before this patch to disable it with AMV
> > and slice threads, should fix this issue.
> 
> The failing case doesnt use AMV
> and i double checked, i had all 3 patches applied when i tested
> yestarday

wait, i just saw you posted a new patch today, i havnt tried that
will do

[...]
Michael Niedermayer April 5, 2017, 7:05 p.m. UTC | #5
On Tue, Apr 04, 2017 at 04:10:39PM +0200, Michael Niedermayer wrote:
> On Tue, Apr 04, 2017 at 03:59:28PM +0200, Michael Niedermayer wrote:
> > On Tue, Apr 04, 2017 at 11:00:23AM +0100, Rostislav Pehlivanov wrote:
> > > On 4 April 2017 at 02:54, Michael Niedermayer <michael@niedermayer.cc>
> > > wrote:
> > > 
> > > > On Mon, Apr 03, 2017 at 10:31:27PM +0100, Rostislav Pehlivanov wrote:
> > > > > As it gives excellent encoding gains at an insignificant speed increase
> > > > > and passes fate without problems, it should now be safe to enable by
> > > > > default.
> > > >
> > > > Still breaks slice threading
> > > >
> > > > both
> > > > Assertion n <= 31 && value < (1U << n) failed at libavcodec/put_bits.h:157
> > > >
> > > > and
> > > > Assertion (header_bits & 7) == 0 failed at libavcodec/mjpegenc_common.c:
> > > > 541
> > > >
> > > > occur with
> > > > ./ffmpeg -y -i ~/fatesamples/fate/fate-suite/lena.pnm  -vf scale -strict
> > > > -1  -threads 2 -thread_type slice test.jpg
> > > >
> > > > randomly
> > > >
> > > > also ive seen it not trigger an assert on repeating the command
> > > >
> > > > [...]
> > > > --
> > > > Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> > > >
> > > > You can kill me, but you cannot change the truth.
> > > >
> > > > _______________________________________________
> > > > ffmpeg-devel mailing list
> > > > ffmpeg-devel@ffmpeg.org
> > > > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > > >
> > > >
> > > Sent a patch meant to be applied before this patch to disable it with AMV
> > > and slice threads, should fix this issue.
> > 
> > The failing case doesnt use AMV
> > and i double checked, i had all 3 patches applied when i tested
> > yestarday
> 
> wait, i just saw you posted a new patch today, i havnt tried that
> will do

tried, seems to work

[...]
Rostislav Pehlivanov April 8, 2017, 11:07 p.m. UTC | #6
On 5 April 2017 at 20:05, Michael Niedermayer <michael@niedermayer.cc>
wrote:

> On Tue, Apr 04, 2017 at 04:10:39PM +0200, Michael Niedermayer wrote:
> > On Tue, Apr 04, 2017 at 03:59:28PM +0200, Michael Niedermayer wrote:
> > > On Tue, Apr 04, 2017 at 11:00:23AM +0100, Rostislav Pehlivanov wrote:
> > > > On 4 April 2017 at 02:54, Michael Niedermayer <michael@niedermayer.cc
> >
> > > > wrote:
> > > >
> > > > > On Mon, Apr 03, 2017 at 10:31:27PM +0100, Rostislav Pehlivanov
> wrote:
> > > > > > As it gives excellent encoding gains at an insignificant speed
> increase
> > > > > > and passes fate without problems, it should now be safe to
> enable by
> > > > > > default.
> > > > >
> > > > > Still breaks slice threading
> > > > >
> > > > > both
> > > > > Assertion n <= 31 && value < (1U << n) failed at
> libavcodec/put_bits.h:157
> > > > >
> > > > > and
> > > > > Assertion (header_bits & 7) == 0 failed at
> libavcodec/mjpegenc_common.c:
> > > > > 541
> > > > >
> > > > > occur with
> > > > > ./ffmpeg -y -i ~/fatesamples/fate/fate-suite/lena.pnm  -vf scale
> -strict
> > > > > -1  -threads 2 -thread_type slice test.jpg
> > > > >
> > > > > randomly
> > > > >
> > > > > also ive seen it not trigger an assert on repeating the command
> > > > >
> > > > > [...]
> > > > > --
> > > > > Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC7
> 87040B0FAB
> > > > >
> > > > > You can kill me, but you cannot change the truth.
> > > > >
> > > > > _______________________________________________
> > > > > ffmpeg-devel mailing list
> > > > > ffmpeg-devel@ffmpeg.org
> > > > > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > > > >
> > > > >
> > > > Sent a patch meant to be applied before this patch to disable it
> with AMV
> > > > and slice threads, should fix this issue.
> > >
> > > The failing case doesnt use AMV
> > > and i double checked, i had all 3 patches applied when i tested
> > > yestarday
> >
> > wait, i just saw you posted a new patch today, i havnt tried that
> > will do
>
> tried, seems to work
>
> [...]
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Awnsering whenever a program halts or runs forever is
> On a turing machine, in general impossible (turings halting problem).
> On any real computer, always possible as a real computer has a finite
> number
> of states N, and will either halt in less than N cycles or never halt.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
Thanks for the review, pushed to master.
diff mbox

Patch

diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c
index cc917edb7f..03c3d0ab13 100644
--- a/libavcodec/mjpegenc.c
+++ b/libavcodec/mjpegenc.c
@@ -444,7 +444,7 @@  FF_MPV_COMMON_OPTS
     { "left",   NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, INT_MIN, INT_MAX, VE, "pred" },
     { "plane",  NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 2 }, INT_MIN, INT_MAX, VE, "pred" },
     { "median", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 3 }, INT_MIN, INT_MAX, VE, "pred" },
-{ "huffman", "Huffman table strategy", OFFSET(huffman), AV_OPT_TYPE_INT, { .i64 = HUFFMAN_TABLE_DEFAULT }, 0, NB_HUFFMAN_TABLE_OPTION - 1, VE, "huffman" },
+{ "huffman", "Huffman table strategy", OFFSET(huffman), AV_OPT_TYPE_INT, { .i64 = HUFFMAN_TABLE_OPTIMAL }, 0, NB_HUFFMAN_TABLE_OPTION - 1, VE, "huffman" },
     { "default", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = HUFFMAN_TABLE_DEFAULT }, INT_MIN, INT_MAX, VE, "huffman" },
     { "optimal", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = HUFFMAN_TABLE_OPTIMAL }, INT_MIN, INT_MAX, VE, "huffman" },
 { NULL},
diff --git a/tests/ref/lavf/jpg b/tests/ref/lavf/jpg
index 1309d742c8..508066747f 100644
--- a/tests/ref/lavf/jpg
+++ b/tests/ref/lavf/jpg
@@ -1,3 +1,3 @@ 
-131878fee153a086d740543fbf2ab359 *./tests/data/images/jpg/02.jpg
+1e7c6d937f21c045e0b238a83f62f3c5 *./tests/data/images/jpg/02.jpg
 ./tests/data/images/jpg/%02d.jpg CRC=0xe3509f33
-28406 ./tests/data/images/jpg/02.jpg
+26037 ./tests/data/images/jpg/02.jpg
diff --git a/tests/ref/lavf/smjpeg b/tests/ref/lavf/smjpeg
index a2eeb97578..fb8c6542fa 100644
--- a/tests/ref/lavf/smjpeg
+++ b/tests/ref/lavf/smjpeg
@@ -1,3 +1,3 @@ 
-a95982a2d390f4dcdc72a41d8920abb9 *./tests/data/lavf/lavf.smjpeg
-789551 ./tests/data/lavf/lavf.smjpeg
+3fe90213ac4f5275eb85ad0a4e4bdb44 *./tests/data/lavf/lavf.smjpeg
+728642 ./tests/data/lavf/lavf.smjpeg
 ./tests/data/lavf/lavf.smjpeg CRC=0x54bf6147
diff --git a/tests/ref/seek/lavf-jpg b/tests/ref/seek/lavf-jpg
index 4f3a14ca84..545f59da57 100644
--- a/tests/ref/seek/lavf-jpg
+++ b/tests/ref/seek/lavf-jpg
@@ -1,4 +1,4 @@ 
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     -1 size: 28070
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     -1 size: 25641
 ret:-EINVAL    st:-1 flags:0  ts:-1.000000
 ret:-EINVAL    st:-1 flags:1  ts: 1.894167
 ret:-EINVAL    st: 0 flags:0  ts: 0.800000
@@ -6,7 +6,7 @@  ret:-EINVAL    st: 0 flags:1  ts:-0.320000
 ret:-EINVAL    st:-1 flags:0  ts: 2.576668
 ret:-EINVAL    st:-1 flags:1  ts: 1.470835
 ret: 0         st: 0 flags:0  ts: 0.360000
-ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:     -1 size: 27771
+ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:     -1 size: 25316
 ret:-EINVAL    st: 0 flags:1  ts:-0.760000
 ret:-EINVAL    st:-1 flags:0  ts: 2.153336
 ret:-EINVAL    st:-1 flags:1  ts: 1.047503
@@ -18,7 +18,7 @@  ret:-EINVAL    st: 0 flags:0  ts:-0.480000
 ret:-EINVAL    st: 0 flags:1  ts: 2.400000
 ret:-EINVAL    st:-1 flags:0  ts: 1.306672
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:     -1 size: 28197
+ret: 0         st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:     -1 size: 25788
 ret:-EINVAL    st: 0 flags:0  ts:-0.920000
 ret:-EINVAL    st: 0 flags:1  ts: 2.000000
 ret:-EINVAL    st:-1 flags:0  ts: 0.883340
@@ -26,5 +26,5 @@  ret:-EINVAL    st:-1 flags:1  ts:-0.222493
 ret:-EINVAL    st: 0 flags:0  ts: 2.680000
 ret:-EINVAL    st: 0 flags:1  ts: 1.560000
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:     -1 size: 27950
+ret: 0         st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:     -1 size: 25487
 ret:-EINVAL    st:-1 flags:1  ts:-0.645825
diff --git a/tests/ref/seek/vsynth_lena-mjpeg b/tests/ref/seek/vsynth_lena-mjpeg
index 08cbd88eb9..71f798e929 100644
--- a/tests/ref/seek/vsynth_lena-mjpeg
+++ b/tests/ref/seek/vsynth_lena-mjpeg
@@ -1,46 +1,46 @@ 
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 12096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 11209
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 12096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 11209
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos: 627818 size: 14806
+ret: 0         st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos: 592412 size: 14066
 ret: 0         st: 0 flags:0  ts: 0.800000
-ret: 0         st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos: 247502 size: 12959
+ret: 0         st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos: 232652 size: 12269
 ret:-1         st: 0 flags:1  ts:-0.320000
 ret:-1         st:-1 flags:0  ts: 2.576668
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos: 480740 size: 14519
+ret: 0         st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos: 453104 size: 13735
 ret: 0         st: 0 flags:0  ts: 0.360000
-ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos: 111000 size: 11924
+ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos: 104118 size: 11213
 ret:-1         st: 0 flags:1  ts:-0.760000
 ret:-1         st:-1 flags:0  ts: 2.153336
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos: 326684 size: 13491
+ret: 0         st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos: 307404 size: 12723
 ret: 0         st: 0 flags:0  ts:-0.040000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 12096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 11209
 ret: 0         st: 0 flags:1  ts: 2.840000
-ret: 0         st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos: 657472 size: 14897
+ret: 0         st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos: 620564 size: 14125
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos: 568610 size: 14751
+ret: 0         st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos: 536264 size: 13966
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos: 196424 size: 12720
+ret: 0         st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos: 184478 size: 11981
 ret: 0         st: 0 flags:0  ts:-0.480000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 12096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 11209
 ret: 0         st: 0 flags:1  ts: 2.400000
-ret: 0         st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos: 657472 size: 14897
+ret: 0         st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos: 620564 size: 14125
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos: 423474 size: 14114
+ret: 0         st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos: 398934 size: 13340
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:  63866 size: 11715
+ret: 0         st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:  59904 size: 10972
 ret: 0         st: 0 flags:0  ts:-0.920000
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 12096
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5652 size: 11209
 ret: 0         st: 0 flags:1  ts: 2.000000
-ret: 0         st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos: 657472 size: 14897
+ret: 0         st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos: 620564 size: 14125
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos: 273516 size: 13122
+ret: 0         st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos: 257220 size: 12407
 ret:-1         st:-1 flags:1  ts:-0.222493
 ret:-1         st: 0 flags:0  ts: 2.680000
 ret: 0         st: 0 flags:1  ts: 1.560000
-ret: 0         st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos: 509896 size: 14594
+ret: 0         st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos: 480710 size: 13831
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 146954 size: 12173
+ret: 0         st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 137920 size: 11458
 ret:-1         st:-1 flags:1  ts:-0.645825
diff --git a/tests/ref/vsynth/vsynth1-mjpeg b/tests/ref/vsynth/vsynth1-mjpeg
index 11de0207f6..aa441d312a 100644
--- a/tests/ref/vsynth/vsynth1-mjpeg
+++ b/tests/ref/vsynth/vsynth1-mjpeg
@@ -1,4 +1,4 @@ 
-9ff18b19d12bb9bb2ed434a79f212888 *tests/data/fate/vsynth1-mjpeg.avi
-1515906 tests/data/fate/vsynth1-mjpeg.avi
+63ea9bd494e16bad8f3a0c8dbb3dc11e *tests/data/fate/vsynth1-mjpeg.avi
+1391380 tests/data/fate/vsynth1-mjpeg.avi
 9a3b8169c251d19044f7087a95458c55 *tests/data/fate/vsynth1-mjpeg.out.rawvideo
 stddev:    7.87 PSNR: 30.21 MAXDIFF:   63 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth1-mjpeg-422 b/tests/ref/vsynth/vsynth1-mjpeg-422
index bd760a1c8d..dda3928a4b 100644
--- a/tests/ref/vsynth/vsynth1-mjpeg-422
+++ b/tests/ref/vsynth/vsynth1-mjpeg-422
@@ -1,4 +1,4 @@ 
-3b19da06ffe23cb804bca7a9a86eb3d5 *tests/data/fate/vsynth1-mjpeg-422.avi
-1756304 tests/data/fate/vsynth1-mjpeg-422.avi
+82d8874bfe13f56ec466b206a08a4402 *tests/data/fate/vsynth1-mjpeg-422.avi
+1611832 tests/data/fate/vsynth1-mjpeg-422.avi
 c35eea486c6d72050f4848eab64032b5 *tests/data/fate/vsynth1-mjpeg-422.out.rawvideo
 stddev:    7.45 PSNR: 30.69 MAXDIFF:   63 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth1-mjpeg-444 b/tests/ref/vsynth/vsynth1-mjpeg-444
index 42a9be3278..66a0efcf95 100644
--- a/tests/ref/vsynth/vsynth1-mjpeg-444
+++ b/tests/ref/vsynth/vsynth1-mjpeg-444
@@ -1,4 +1,4 @@ 
-9591b754ca151f3802738840fa5c26c0 *tests/data/fate/vsynth1-mjpeg-444.avi
-1989784 tests/data/fate/vsynth1-mjpeg-444.avi
+2dd741cbee9b3499826beca7c7d3b8dc *tests/data/fate/vsynth1-mjpeg-444.avi
+1831614 tests/data/fate/vsynth1-mjpeg-444.avi
 313a4a76af13d5879ea4910107b7ea74 *tests/data/fate/vsynth1-mjpeg-444.out.rawvideo
 stddev:    7.37 PSNR: 30.77 MAXDIFF:   63 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth1-mjpeg-trell b/tests/ref/vsynth/vsynth1-mjpeg-trell
index b97efcbf74..cf2a7ff16e 100644
--- a/tests/ref/vsynth/vsynth1-mjpeg-trell
+++ b/tests/ref/vsynth/vsynth1-mjpeg-trell
@@ -1,4 +1,4 @@ 
-03d14b3db6232f46c0d931477801a7a6 *tests/data/fate/vsynth1-mjpeg-trell.avi
-1454308 tests/data/fate/vsynth1-mjpeg-trell.avi
-218d4dc8086fdef15d5382e6ba97df0b *tests/data/fate/vsynth1-mjpeg-trell.out.rawvideo
-stddev:    7.71 PSNR: 30.39 MAXDIFF:   62 bytes:  7603200/  7603200
+d9410fa80c07edbd2a2b44ceb06086ca *tests/data/fate/vsynth1-mjpeg-trell.avi
+1360456 tests/data/fate/vsynth1-mjpeg-trell.avi
+0266b223bdd7928426a951164bb4a366 *tests/data/fate/vsynth1-mjpeg-trell.out.rawvideo
+stddev:    7.68 PSNR: 30.42 MAXDIFF:   62 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth2-mjpeg b/tests/ref/vsynth/vsynth2-mjpeg
index 98b257ef01..cf80937dc6 100644
--- a/tests/ref/vsynth/vsynth2-mjpeg
+++ b/tests/ref/vsynth/vsynth2-mjpeg
@@ -1,4 +1,4 @@ 
-c76100bdc3f4c8e2580bb263accda9ec *tests/data/fate/vsynth2-mjpeg.avi
-830154 tests/data/fate/vsynth2-mjpeg.avi
+9bf00cd3188b7395b798bb10df376243 *tests/data/fate/vsynth2-mjpeg.avi
+792742 tests/data/fate/vsynth2-mjpeg.avi
 2b8c59c59e33d6ca7c85d31c5eeab7be *tests/data/fate/vsynth2-mjpeg.out.rawvideo
 stddev:    4.87 PSNR: 34.37 MAXDIFF:   55 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth2-mjpeg-422 b/tests/ref/vsynth/vsynth2-mjpeg-422
index ddedda68fe..b162bb32c7 100644
--- a/tests/ref/vsynth/vsynth2-mjpeg-422
+++ b/tests/ref/vsynth/vsynth2-mjpeg-422
@@ -1,4 +1,4 @@ 
-1c8dd65c901ce48ef82d73b80e38c735 *tests/data/fate/vsynth2-mjpeg-422.avi
-920364 tests/data/fate/vsynth2-mjpeg-422.avi
+e37720892c9ee9d02842cc50bf20181e *tests/data/fate/vsynth2-mjpeg-422.avi
+877786 tests/data/fate/vsynth2-mjpeg-422.avi
 4a1b18eeb8b0f3dccc2c0e6a9f8c876d *tests/data/fate/vsynth2-mjpeg-422.out.rawvideo
 stddev:    4.69 PSNR: 34.69 MAXDIFF:   55 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth2-mjpeg-444 b/tests/ref/vsynth/vsynth2-mjpeg-444
index 428fedcc80..c461e87cbf 100644
--- a/tests/ref/vsynth/vsynth2-mjpeg-444
+++ b/tests/ref/vsynth/vsynth2-mjpeg-444
@@ -1,4 +1,4 @@ 
-0ac6d33ef31d07eecf65955eabf241f7 *tests/data/fate/vsynth2-mjpeg-444.avi
-1060070 tests/data/fate/vsynth2-mjpeg-444.avi
+28c9331da946a4ba76947cef290fe184 *tests/data/fate/vsynth2-mjpeg-444.avi
+1005052 tests/data/fate/vsynth2-mjpeg-444.avi
 6417f5a4be03ca7854f0a1be429a286e *tests/data/fate/vsynth2-mjpeg-444.out.rawvideo
 stddev:    4.57 PSNR: 34.93 MAXDIFF:   55 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth2-mjpeg-trell b/tests/ref/vsynth/vsynth2-mjpeg-trell
index ce6d917c18..e1acb33d88 100644
--- a/tests/ref/vsynth/vsynth2-mjpeg-trell
+++ b/tests/ref/vsynth/vsynth2-mjpeg-trell
@@ -1,4 +1,4 @@ 
-4fdbd2327ed16fc4448eb421def22b5e *tests/data/fate/vsynth2-mjpeg-trell.avi
-765628 tests/data/fate/vsynth2-mjpeg-trell.avi
-ce145393bece26d49076b26cf1a2e52e *tests/data/fate/vsynth2-mjpeg-trell.out.rawvideo
+a59d99d31d24875161504820d4266e4d *tests/data/fate/vsynth2-mjpeg-trell.avi
+734728 tests/data/fate/vsynth2-mjpeg-trell.avi
+42376126213c73c86b408882e24ba015 *tests/data/fate/vsynth2-mjpeg-trell.out.rawvideo
 stddev:    5.03 PSNR: 34.09 MAXDIFF:   67 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth3-mjpeg b/tests/ref/vsynth/vsynth3-mjpeg
index c69338fbc0..4b3371ec22 100644
--- a/tests/ref/vsynth/vsynth3-mjpeg
+++ b/tests/ref/vsynth/vsynth3-mjpeg
@@ -1,4 +1,4 @@ 
-7d7a2fa8559a3652db52b7a70267d1a3 *tests/data/fate/vsynth3-mjpeg.avi
-64808 tests/data/fate/vsynth3-mjpeg.avi
+eec435352485fec167179a63405505be *tests/data/fate/vsynth3-mjpeg.avi
+48156 tests/data/fate/vsynth3-mjpeg.avi
 c4fe7a2669afbd96c640748693fc4e30 *tests/data/fate/vsynth3-mjpeg.out.rawvideo
 stddev:    8.60 PSNR: 29.43 MAXDIFF:   58 bytes:    86700/    86700
diff --git a/tests/ref/vsynth/vsynth3-mjpeg-422 b/tests/ref/vsynth/vsynth3-mjpeg-422
index b50e4792ed..c364c79a11 100644
--- a/tests/ref/vsynth/vsynth3-mjpeg-422
+++ b/tests/ref/vsynth/vsynth3-mjpeg-422
@@ -1,4 +1,4 @@ 
-34c57632d23c4322d2e508368e7c8e36 *tests/data/fate/vsynth3-mjpeg-422.avi
-69462 tests/data/fate/vsynth3-mjpeg-422.avi
+396394fab0d456443a3929a33f8c0d59 *tests/data/fate/vsynth3-mjpeg-422.avi
+52606 tests/data/fate/vsynth3-mjpeg-422.avi
 a332893cb0603f2f505fe5d3bf105519 *tests/data/fate/vsynth3-mjpeg-422.out.rawvideo
 stddev:    8.23 PSNR: 29.82 MAXDIFF:   58 bytes:    86700/    86700
diff --git a/tests/ref/vsynth/vsynth3-mjpeg-444 b/tests/ref/vsynth/vsynth3-mjpeg-444
index d701f667cc..0e38744fd2 100644
--- a/tests/ref/vsynth/vsynth3-mjpeg-444
+++ b/tests/ref/vsynth/vsynth3-mjpeg-444
@@ -1,4 +1,4 @@ 
-0900258953e90ab97a95ccaccb7b0d8a *tests/data/fate/vsynth3-mjpeg-444.avi
-70588 tests/data/fate/vsynth3-mjpeg-444.avi
+3f2dca7be789eb7818c69ec716c0d831 *tests/data/fate/vsynth3-mjpeg-444.avi
+53958 tests/data/fate/vsynth3-mjpeg-444.avi
 79a901f2ed85d82cf1c674fab3d3ef72 *tests/data/fate/vsynth3-mjpeg-444.out.rawvideo
 stddev:    8.21 PSNR: 29.84 MAXDIFF:   58 bytes:    86700/    86700
diff --git a/tests/ref/vsynth/vsynth3-mjpeg-trell b/tests/ref/vsynth/vsynth3-mjpeg-trell
index 9178d02475..5b386c7eed 100644
--- a/tests/ref/vsynth/vsynth3-mjpeg-trell
+++ b/tests/ref/vsynth/vsynth3-mjpeg-trell
@@ -1,4 +1,4 @@ 
-6f815acb8fce5458561aa902703e6189 *tests/data/fate/vsynth3-mjpeg-trell.avi
-63994 tests/data/fate/vsynth3-mjpeg-trell.avi
-4fed1e12c80df7b67df292b153c3cf16 *tests/data/fate/vsynth3-mjpeg-trell.out.rawvideo
-stddev:    8.27 PSNR: 29.77 MAXDIFF:   61 bytes:    86700/    86700
+484fa337b71c06a0206243814c4894b0 *tests/data/fate/vsynth3-mjpeg-trell.avi
+47816 tests/data/fate/vsynth3-mjpeg-trell.avi
+f0ccfe4584d193fd6d690a85a70db188 *tests/data/fate/vsynth3-mjpeg-trell.out.rawvideo
+stddev:    8.27 PSNR: 29.78 MAXDIFF:   55 bytes:    86700/    86700
diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg b/tests/ref/vsynth/vsynth_lena-mjpeg
index 1487641831..e30ddc7677 100644
--- a/tests/ref/vsynth/vsynth_lena-mjpeg
+++ b/tests/ref/vsynth/vsynth_lena-mjpeg
@@ -1,4 +1,4 @@ 
-40c5ba1b15006799773617f888c2808b *tests/data/fate/vsynth_lena-mjpeg.avi
-673178 tests/data/fate/vsynth_lena-mjpeg.avi
+007c989af621445dc7c9bd248b9df3b4 *tests/data/fate/vsynth_lena-mjpeg.avi
+635498 tests/data/fate/vsynth_lena-mjpeg.avi
 9d4bd90e9abfa18192383b4adc23c8d4 *tests/data/fate/vsynth_lena-mjpeg.out.rawvideo
 stddev:    4.32 PSNR: 35.40 MAXDIFF:   49 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-422 b/tests/ref/vsynth/vsynth_lena-mjpeg-422
index 23dd1a257d..f94ae5815d 100644
--- a/tests/ref/vsynth/vsynth_lena-mjpeg-422
+++ b/tests/ref/vsynth/vsynth_lena-mjpeg-422
@@ -1,4 +1,4 @@ 
-4a1f72cf4c8e562f4e805f0c7912515b *tests/data/fate/vsynth_lena-mjpeg-422.avi
-746534 tests/data/fate/vsynth_lena-mjpeg-422.avi
+e867bc5e8e4e4555846c61b3cb4580a6 *tests/data/fate/vsynth_lena-mjpeg-422.avi
+707376 tests/data/fate/vsynth_lena-mjpeg-422.avi
 451ac80989c4e14445cf951fd7f83b6d *tests/data/fate/vsynth_lena-mjpeg-422.out.rawvideo
 stddev:    4.18 PSNR: 35.70 MAXDIFF:   49 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-444 b/tests/ref/vsynth/vsynth_lena-mjpeg-444
index 1dc103c199..cb4c0a12db 100644
--- a/tests/ref/vsynth/vsynth_lena-mjpeg-444
+++ b/tests/ref/vsynth/vsynth_lena-mjpeg-444
@@ -1,4 +1,4 @@ 
-969ac14cbc77d5475f4871cefe3cc6b0 *tests/data/fate/vsynth_lena-mjpeg-444.avi
-851446 tests/data/fate/vsynth_lena-mjpeg-444.avi
+9a36b201c4f68051441b1ee1307a2cc2 *tests/data/fate/vsynth_lena-mjpeg-444.avi
+807628 tests/data/fate/vsynth_lena-mjpeg-444.avi
 34edcb9c87ff7aac456a4fb07f43504b *tests/data/fate/vsynth_lena-mjpeg-444.out.rawvideo
 stddev:    4.05 PSNR: 35.96 MAXDIFF:   49 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-trell b/tests/ref/vsynth/vsynth_lena-mjpeg-trell
index d37d5a2714..86332b2010 100644
--- a/tests/ref/vsynth/vsynth_lena-mjpeg-trell
+++ b/tests/ref/vsynth/vsynth_lena-mjpeg-trell
@@ -1,4 +1,4 @@ 
-61c12b5e0f95c352c1ff2f3b95d88274 *tests/data/fate/vsynth_lena-mjpeg-trell.avi
-613612 tests/data/fate/vsynth_lena-mjpeg-trell.avi
-ee4999fcc0913e01e69fe689b4229cbe *tests/data/fate/vsynth_lena-mjpeg-trell.out.rawvideo
-stddev:    4.51 PSNR: 35.03 MAXDIFF:   60 bytes:  7603200/  7603200
+6eb36ab28a082f496f1f3bc165704a68 *tests/data/fate/vsynth_lena-mjpeg-trell.avi
+582534 tests/data/fate/vsynth_lena-mjpeg-trell.avi
+dcb183a6a5fa06e7234d46dd97ceb8ec *tests/data/fate/vsynth_lena-mjpeg-trell.out.rawvideo
+stddev:    4.51 PSNR: 35.05 MAXDIFF:   60 bytes:  7603200/  7603200