diff mbox

[FFmpeg-devel,08/29] avcodec/mpeg4videoenc: mark as limited color range only

Message ID 20171210131436.15791-8-onemda@gmail.com
State Superseded
Headers show

Commit Message

Paul B Mahol Dec. 10, 2017, 1:14 p.m. UTC
lavf-mkv changes only because of metadata.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
 libavcodec/mpeg4videoenc.c |  1 +
 libavcodec/mpegvideo_enc.c |  4 ++++
 tests/ref/lavf/mkv         |  8 ++++----
 tests/ref/seek/lavf-mkv    | 44 ++++++++++++++++++++++----------------------
 4 files changed, 31 insertions(+), 26 deletions(-)

Comments

Michael Niedermayer Dec. 10, 2017, 6:22 p.m. UTC | #1
On Sun, Dec 10, 2017 at 02:14:15PM +0100, Paul B Mahol wrote:
> lavf-mkv changes only because of metadata.
> 
> Signed-off-by: Paul B Mahol <onemda@gmail.com>
> ---
>  libavcodec/mpeg4videoenc.c |  1 +
>  libavcodec/mpegvideo_enc.c |  4 ++++
>  tests/ref/lavf/mkv         |  8 ++++----
>  tests/ref/seek/lavf-mkv    | 44 ++++++++++++++++++++++----------------------
>  4 files changed, 31 insertions(+), 26 deletions(-)

This changes the amount of noise in:

./ffmpeg -f lavfi -i testsrc=s=500x300 -vf noise=alls=40 -vcodec mpeg4 -qscale 2 -vframes 3 noise.avi

Looking at the format convertion it seems that an additional scaler
is used to convert to gbrp which is then converted again

[....]
Paul B Mahol Dec. 10, 2017, 7:37 p.m. UTC | #2
On 12/10/17, Michael Niedermayer <michael@niedermayer.cc> wrote:
> On Sun, Dec 10, 2017 at 02:14:15PM +0100, Paul B Mahol wrote:
>> lavf-mkv changes only because of metadata.
>>
>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>> ---
>>  libavcodec/mpeg4videoenc.c |  1 +
>>  libavcodec/mpegvideo_enc.c |  4 ++++
>>  tests/ref/lavf/mkv         |  8 ++++----
>>  tests/ref/seek/lavf-mkv    | 44
>> ++++++++++++++++++++++----------------------
>>  4 files changed, 31 insertions(+), 26 deletions(-)
>
> This changes the amount of noise in:
>
> ./ffmpeg -f lavfi -i testsrc=s=500x300 -vf noise=alls=40 -vcodec mpeg4
> -qscale 2 -vframes 3 noise.avi
>
> Looking at the format convertion it seems that an additional scaler
> is used to convert to gbrp which is then converted again

Here output looks more correct IMHO.
Nicolas George Dec. 10, 2017, 7:39 p.m. UTC | #3
Paul B Mahol (2017-12-10):
> > Looking at the format convertion it seems that an additional scaler
> > is used to convert to gbrp which is then converted again
> Here output looks more correct IMHO.

What about the performances? Two expensive conversions instead of one
(zero?) will cause a loss.

Regards,
Paul B Mahol Dec. 10, 2017, 7:45 p.m. UTC | #4
On 12/10/17, Nicolas George <george@nsup.org> wrote:
> Paul B Mahol (2017-12-10):
>> > Looking at the format convertion it seems that an additional scaler
>> > is used to convert to gbrp which is then converted again
>> Here output looks more correct IMHO.
>
> What about the performances? Two expensive conversions instead of one
> (zero?) will cause a loss.

Correct output is more important than speed.
The filter supports only packed rgb output.

And in this case correct output is more important than speed.

I could set for filtering to pick encoder final format as first format
in input filtergraph, but I'm sure you guys will come with another
pathetic "broken" example in that case.
diff mbox

Patch

diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c
index 494452c938..59dec0d375 100644
--- a/libavcodec/mpeg4videoenc.c
+++ b/libavcodec/mpeg4videoenc.c
@@ -1396,6 +1396,7 @@  AVCodec ff_mpeg4_encoder = {
     .encode2        = ff_mpv_encode_picture,
     .close          = ff_mpv_encode_end,
     .pix_fmts       = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+    .color_range    = AVCOL_RANGE_MPEG,
     .capabilities   = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS,
     .priv_class     = &mpeg4enc_class,
 };
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index f1f4989231..f8cfd1e2a0 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -4864,6 +4864,7 @@  AVCodec ff_h263p_encoder = {
     .close          = ff_mpv_encode_end,
     .capabilities   = AV_CODEC_CAP_SLICE_THREADS,
     .pix_fmts       = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+    .color_range    = AVCOL_RANGE_MPEG,
     .priv_class     = &h263p_class,
 };
 
@@ -4884,6 +4885,7 @@  AVCodec ff_msmpeg4v2_encoder = {
     .encode2        = ff_mpv_encode_picture,
     .close          = ff_mpv_encode_end,
     .pix_fmts       = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+    .color_range    = AVCOL_RANGE_MPEG,
     .priv_class     = &msmpeg4v2_class,
 };
 
@@ -4904,6 +4906,7 @@  AVCodec ff_msmpeg4v3_encoder = {
     .encode2        = ff_mpv_encode_picture,
     .close          = ff_mpv_encode_end,
     .pix_fmts       = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+    .color_range    = AVCOL_RANGE_MPEG,
     .priv_class     = &msmpeg4v3_class,
 };
 
@@ -4924,5 +4927,6 @@  AVCodec ff_wmv1_encoder = {
     .encode2        = ff_mpv_encode_picture,
     .close          = ff_mpv_encode_end,
     .pix_fmts       = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+    .color_range    = AVCOL_RANGE_MPEG,
     .priv_class     = &wmv1_class,
 };
diff --git a/tests/ref/lavf/mkv b/tests/ref/lavf/mkv
index 0083033958..bd0302b14f 100644
--- a/tests/ref/lavf/mkv
+++ b/tests/ref/lavf/mkv
@@ -1,6 +1,6 @@ 
-7c8697c324e8ad79c5ea14364a6c39b8 *./tests/data/lavf/lavf.mkv
-472759 ./tests/data/lavf/lavf.mkv
+80092ba5b6833704dd04bd9f7f75366d *./tests/data/lavf/lavf.mkv
+472766 ./tests/data/lavf/lavf.mkv
 ./tests/data/lavf/lavf.mkv CRC=0xec6c3c68
-9767a3b526d7e56d7400164cb888990c *./tests/data/lavf/lavf.mkv
-320603 ./tests/data/lavf/lavf.mkv
+b919b159a2dd7c9c7cd45cc36f204754 *./tests/data/lavf/lavf.mkv
+320610 ./tests/data/lavf/lavf.mkv
 ./tests/data/lavf/lavf.mkv CRC=0xec6c3c68
diff --git a/tests/ref/seek/lavf-mkv b/tests/ref/seek/lavf-mkv
index cea34e99ac..368e86cd14 100644
--- a/tests/ref/seek/lavf-mkv
+++ b/tests/ref/seek/lavf-mkv
@@ -1,48 +1,48 @@ 
-ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos:    834 size:   208
+ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos:    841 size:   208
 ret: 0         st:-1 flags:0  ts:-1.000000
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292476 size: 27834
+ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292483 size: 27834
 ret: 0         st: 0 flags:0  ts: 0.788000
-ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292476 size: 27834
+ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292483 size: 27834
 ret: 0         st: 0 flags:1  ts:-0.317000
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837
 ret:-1         st: 1 flags:0  ts: 2.577000
 ret: 0         st: 1 flags:1  ts: 1.471000
-ret: 0         st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320317 size:   209
+ret: 0         st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320324 size:   209
 ret: 0         st:-1 flags:0  ts: 0.365002
-ret: 0         st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 147023 size: 27925
+ret: 0         st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 147030 size: 27925
 ret: 0         st:-1 flags:1  ts:-0.740831
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837
 ret:-1         st: 0 flags:0  ts: 2.153000
 ret: 0         st: 0 flags:1  ts: 1.048000
-ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292476 size: 27834
+ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292483 size: 27834
 ret: 0         st: 1 flags:0  ts:-0.058000
-ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos:    834 size:   208
+ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos:    841 size:   208
 ret: 0         st: 1 flags:1  ts: 2.836000
-ret: 0         st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320317 size:   209
+ret: 0         st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320324 size:   209
 ret:-1         st:-1 flags:0  ts: 1.730004
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 147023 size: 27925
+ret: 0         st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 147030 size: 27925
 ret: 0         st: 0 flags:0  ts:-0.482000
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837
 ret: 0         st: 0 flags:1  ts: 2.413000
-ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292476 size: 27834
+ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292483 size: 27834
 ret:-1         st: 1 flags:0  ts: 1.307000
 ret: 0         st: 1 flags:1  ts: 0.201000
-ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos:    834 size:   208
+ret: 0         st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos:    841 size:   208
 ret: 0         st:-1 flags:0  ts:-0.904994
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837
 ret: 0         st:-1 flags:1  ts: 1.989173
-ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292476 size: 27834
+ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292483 size: 27834
 ret: 0         st: 0 flags:0  ts: 0.883000
-ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292476 size: 27834
+ret: 0         st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292483 size: 27834
 ret: 0         st: 0 flags:1  ts:-0.222000
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837
 ret:-1         st: 1 flags:0  ts: 2.672000
 ret: 0         st: 1 flags:1  ts: 1.566000
-ret: 0         st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320317 size:   209
+ret: 0         st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320324 size:   209
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 147023 size: 27925
+ret: 0         st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 147030 size: 27925
 ret: 0         st:-1 flags:1  ts:-0.645825
-ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1050 size: 27837
+ret: 0         st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos:   1057 size: 27837