• Limin Wang's avatar
    avformat/f_select: add support for more pixel formats for scene change score calculations · b696caba
    Limin Wang authored
    This avoids automatic conversions to rgb if scene change score is used in the expression.
    
    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_YUV420P10
    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.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  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
    Reviewed-by: 's avatarMarton Balint <cus@passwd.hu>
    Signed-off-by: 's avatarLimin Wang <lance.lmwang@gmail.com>
    b696caba
Name
Last commit
Last update
..
api Loading commit data...
checkasm Loading commit data...
fate Loading commit data...
filtergraphs Loading commit data...
ref Loading commit data...
.gitignore Loading commit data...
Makefile Loading commit data...
audiogen.c Loading commit data...
audiomatch.c Loading commit data...
base64.c Loading commit data...
copycooker.sh Loading commit data...
extended.ffconcat Loading commit data...
fate-run.sh Loading commit data...
fate-valgrind.supp Loading commit data...
fate.sh Loading commit data...
md5.sh Loading commit data...
refcmp-metadata.awk Loading commit data...
reference.pnm Loading commit data...
rotozoom.c Loading commit data...
simple1.ffconcat Loading commit data...
simple2.ffconcat Loading commit data...
test.ffmeta Loading commit data...
tiny_psnr.c Loading commit data...
tiny_ssim.c Loading commit data...
utils.c Loading commit data...
videogen.c Loading commit data...