[FFmpeg-devel] [PATCH v2 3/3] lavf/f_select: make the more pixel format usable to avoid autoscale to rgb

Marton Balint cus at passwd.hu
Fri Jul 19 22:23:24 EEST 2019



On Fri, 19 Jul 2019, lance.lmwang at gmail.com wrote:

> From: Limin Wang <lance.lmwang at gmail.com>
>
> Below is the tested results for the new added pixel format without autoscale to rgb24:
> 1. AV_PIX_FMT_YUVJ420P
> time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
> "sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.25)"
>
> master:
> pkt_pts=1620|tag:lavfi.scene_score=1.000000
> pkt_pts=4140|tag:lavfi.scene_score=0.875036
> pkt_pts=5800|tag:lavfi.scene_score=1.000000
> pkt_pts=6720|tag:lavfi.scene_score=0.461625
> pkt_pts=8160|tag:lavfi.scene_score=1.000000
> pkt_pts=9760|tag:lavfi.scene_score=1.000000
> pkt_pts=14080|tag:lavfi.scene_score=0.838916
> pkt_pts=15700|tag:lavfi.scene_score=1.000000
> pkt_pts=18500|tag:lavfi.scene_score=0.474948
> pkt_pts=20040|tag:lavfi.scene_score=0.379700
> pkt_pts=21760|tag:lavfi.scene_score=1.000000
> ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  0.71s user 0.01s system 99% cpu 0.721 total
>
> patch applied:
> pkt_pts=1620|tag:lavfi.scene_score=1.000000
> pkt_pts=4140|tag:lavfi.scene_score=0.668643
> pkt_pts=5800|tag:lavfi.scene_score=0.996721
> pkt_pts=6720|tag:lavfi.scene_score=0.357390
> pkt_pts=8160|tag:lavfi.scene_score=0.886268
> pkt_pts=9760|tag:lavfi.scene_score=0.926219
> pkt_pts=14080|tag:lavfi.scene_score=0.650033
> pkt_pts=15700|tag:lavfi.scene_score=1.000000
> pkt_pts=18500|tag:lavfi.scene_score=0.316402
> pkt_pts=20040|tag:lavfi.scene_score=0.269509
> pkt_pts=21760|tag:lavfi.scene_score=1.000000
> ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  0.19s user 0.01s system 81% cpu 0.240 total
>
> 2. AV_PIX_FMT_YUV420P
> time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
> "sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_1080-sdr.mkv,select=gt(scene\,.2)"
> master:
> pkt_pts=3587|tag:lavfi.scene_score=0.462364
> pkt_pts=4838|tag:lavfi.scene_score=0.419519
> pkt_pts=6548|tag:lavfi.scene_score=0.397027
> pkt_pts=9968|tag:lavfi.scene_score=0.419245
> pkt_pts=12471|tag:lavfi.scene_score=0.413084
> pkt_pts=16225|tag:lavfi.scene_score=0.506370
> pkt_pts=19645|tag:lavfi.scene_score=0.507538
> pkt_pts=22314|tag:lavfi.scene_score=0.504319
> pkt_pts=24817|tag:lavfi.scene_score=0.417544
> pkt_pts=25651|tag:lavfi.scene_score=0.413916
> pkt_pts=26652|tag:lavfi.scene_score=0.487707
> 18.58s user 0.07s system 99% cpu 18.663 total
>
> patch applied:
> pkt_pts=3587|tag:lavfi.scene_score=0.272173
> pkt_pts=4838|tag:lavfi.scene_score=0.247841
> pkt_pts=6548|tag:lavfi.scene_score=0.233134
> pkt_pts=9968|tag:lavfi.scene_score=0.247253
> pkt_pts=12471|tag:lavfi.scene_score=0.244129
> pkt_pts=16225|tag:lavfi.scene_score=0.302531
> pkt_pts=19645|tag:lavfi.scene_score=0.303560
> pkt_pts=22314|tag:lavfi.scene_score=0.301861
> pkt_pts=24817|tag:lavfi.scene_score=0.249331
> pkt_pts=25651|tag:lavfi.scene_score=0.247096
> pkt_pts=26652|tag:lavfi.scene_score=0.287728
> 10.90s user 0.06s system 99% cpu 10.967 total
>
> 3. AV_PIX_FMT_YUV422P
>
> time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
> "sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_1080-sdr.mkv,format=yuv422p,select=gt(scene\,.2)"
> master:
>
> patched applied:
> pkt_pts=3587|tag:lavfi.scene_score=0.224017
> pkt_pts=4838|tag:lavfi.scene_score=0.204225
> pkt_pts=9968|tag:lavfi.scene_score=0.204636
> pkt_pts=12471|tag:lavfi.scene_score=0.202772
> pkt_pts=16225|tag:lavfi.scene_score=0.248765
> pkt_pts=19645|tag:lavfi.scene_score=0.250144
> pkt_pts=22314|tag:lavfi.scene_score=0.248802
> pkt_pts=24817|tag:lavfi.scene_score=0.208362
> pkt_pts=25651|tag:lavfi.scene_score=0.205777
> pkt_pts=26652|tag:lavfi.scene_score=0.230742
>
> 4.  AV_PIX_FMT_YUV420P10LE
> time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
> "sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_4k.mkv,select=gt(scene\,.2)"
>
> master:
> pkt_pts=3587|tag:lavfi.scene_score=0.269890
> pkt_pts=4838|tag:lavfi.scene_score=0.248957
> pkt_pts=6548|tag:lavfi.scene_score=0.234619
> pkt_pts=9969|tag:lavfi.scene_score=0.224912
> pkt_pts=12471|tag:lavfi.scene_score=0.225158
> pkt_pts=16225|tag:lavfi.scene_score=0.289809
> pkt_pts=19645|tag:lavfi.scene_score=0.285013
> pkt_pts=22314|tag:lavfi.scene_score=0.280295
> pkt_pts=24817|tag:lavfi.scene_score=0.206486
> pkt_pts=25651|tag:lavfi.scene_score=0.208556
> pkt_pts=26652|tag:lavfi.scene_score=0.249577
> ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  76.03s user 0.22s system 99% cpu 1:16.27 total
>
> patch applied
> pkt_pts=3587|tag:lavfi.scene_score=0.630004
> pkt_pts=4838|tag:lavfi.scene_score=0.580807
> pkt_pts=6548|tag:lavfi.scene_score=0.548095
> pkt_pts=9969|tag:lavfi.scene_score=0.529728
> pkt_pts=12471|tag:lavfi.scene_score=0.529921
> pkt_pts=16225|tag:lavfi.scene_score=0.680033
> pkt_pts=19645|tag:lavfi.scene_score=0.670753
> pkt_pts=22314|tag:lavfi.scene_score=0.660605
> pkt_pts=24817|tag:lavfi.scene_score=0.490141
> pkt_pts=25651|tag:lavfi.scene_score=0.494594
> pkt_pts=26652|tag:lavfi.scene_score=0.584942
> ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  50.27s user 0.20s system 99% cpu 50.476 total
>
> 5. AV_PIX_FMT_RGBA, AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA, AV_PIX_FMT_GRAY8
> are tested by format= with the fate sample: Vertical400kbit.sorenson3.mov like below:
> time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
> "sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,format=rgba,select=gt(scene\,.25)"
>
> patch applied:
> pkt_pts=1620|tag:lavfi.scene_score=1.000000
> pkt_pts=4140|tag:lavfi.scene_score=0.656277
> pkt_pts=5800|tag:lavfi.scene_score=1.000000
> pkt_pts=6720|tag:lavfi.scene_score=0.346218
> pkt_pts=8160|tag:lavfi.scene_score=0.987686
> pkt_pts=9760|tag:lavfi.scene_score=1.000000
> pkt_pts=14080|tag:lavfi.scene_score=0.629187
> pkt_pts=15700|tag:lavfi.scene_score=1.000000
> pkt_pts=18500|tag:lavfi.scene_score=0.356211
> pkt_pts=20040|tag:lavfi.scene_score=0.284775
> pkt_pts=21760|tag:lavfi.scene_score=1.000000
>
> 6. AV_PIX_FMT_YUVJ422P
> time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
> "sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,format=yuvj422p,select=gt(scene\,.25)"
>
> patch applied:
> pkt_pts=1620|tag:lavfi.scene_score=0.838281
> pkt_pts=4140|tag:lavfi.scene_score=0.541382
> pkt_pts=5800|tag:lavfi.scene_score=0.780588
> pkt_pts=6720|tag:lavfi.scene_score=0.298274
> pkt_pts=8160|tag:lavfi.scene_score=0.699106
> pkt_pts=9760|tag:lavfi.scene_score=0.730136
> pkt_pts=14080|tag:lavfi.scene_score=0.537742
> pkt_pts=15700|tag:lavfi.scene_score=0.811946
> pkt_pts=18500|tag:lavfi.scene_score=0.263382
> pkt_pts=21760|tag:lavfi.scene_score=0.880773
>
> 7. Remove the P10LE, NV12, NV16 hardware format support, it can't use the 100 for [0,1] normalized.
>
> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> ---
> libavfilter/f_select.c                     |  6 +++++-
> tests/ref/fate/filter-metadata-scenedetect | 16 ++++++++--------
> 2 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/libavfilter/f_select.c b/libavfilter/f_select.c
> index eed8df34cb..b9cb5f08eb 100644
> --- a/libavfilter/f_select.c
> +++ b/libavfilter/f_select.c
> @@ -498,7 +498,11 @@ static int query_formats(AVFilterContext *ctx)
>     } else {
>         int ret;
>         static const enum AVPixelFormat pix_fmts[] = {
> -            AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
> +            AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24, AV_PIX_FMT_RGBA,
> +            AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA, AV_PIX_FMT_GRAY8,
> +            AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVJ420P,
> +            AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVJ422P,
> +            AV_PIX_FMT_YUV420P10LE,

I think this supposed to be simply AV_PIX_FMT_YUV420P10, because 1/1 patch 
only works with native endian, so you should not explicitly specify little 
endian version of the pixel format here, but use native endian instead.

Regards,
Marton


More information about the ffmpeg-devel mailing list