Den 27.04.2025 23:39, skrev Andrew
Randrianasulu:
Den 26.04.2025 22:37, skrev Andrew Randrianasulu
via Cin:
RADV_PERFTEST=video_decode,video_encode
time -p ./ffmpeg -init_hw_device vulkan=vulkan
-filter_hw_device vulkan -hwaccel vulkan -i
~/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov
-vf
libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos:colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
-c:a copy -c:v libx264 -f mp4 -benchmark
/dev/shm/ffmpeg-git-libplacebo-vulkan-2k.mp4
frame= 1148 fps= 10 q=-1.0 Lsize=
30435KiB time=00:00:19.13 bitrate=13029.3kbits/s
speed=0.167x
bench: utime=355.600s stime=25.878s
rtime=114.342s
so nearly 10 fps with scaled to FHD
input! (otherwise 32bit x264 OOMs)
==================
I admit I'm not sure what's going on in every detail
above and below. But I've tried to adapt something
similar or equivalent (?) using my Google Pixel 7 Pro
smartphone to record a small HDR10 video clip, and then
using ffmpeg on my Intel Alder Lake cpu/DG2 gpu
workstation. Comments are welcome for correction and
learning?
Well, 125 fps sounds fast ;)
This line tries to convert HDR video to SDR
version, same size (for your case) but it now 10bit h264
instead of 10bit h265.
You probably can add format=yuv420p before all
other -vf liblacebo options so resulting file will be more
compatible 8bit h264.
You can try to watch both vids side by side, I
think mpv uses same algorithm as libplacebo, so on SDR screen
results must look close to each other?
I tried also to convert adding -vf format=yuv420p,
sorry, I mean
-i ~/K38_sdcard1/Documents/iPhone11_4K-recorder_59.940HDR10.mov -vf libplacebo=format=yuv444p:w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos:colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
format as part of -vf libplacebo string, not separate ffmpeg filter.
but both the
10bit and 8bit output files are distorted when playback with vlc,
mpv or ffplay.
In comparison testing with my highest ProRes hq 10bit video file as
input (not HDR), the output mp4 file looks fine with the same ffmpeg
code line.
Was there a download site with small HDR10 test clips available, so
we can test and compare using the same input?
No clips themselves, but wiki with links to them
I used
Apple "special" clip
"HDR10 HEVC 59.94 (MOV, @hdmkv's iPhone 11 Pro Max raw 4K footage using 4K HDR Video Recorder app)"
and less demanding (but still slideshow w/o hw acceleration!)
"HDR10+ Profile B HEVC 10-bit 23.976 Sample (MKV with EAC-3 JOC ATMOS audio)"
time -p ffmpeg
-hide_banner -init_hw_device vulkan=vulkan -filter_hw_device
vulkan -hwaccel vulkan -i PXL_20250427_195356771.TS.mp4 -vf
format=yuv420p,libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos:colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
-c:a copy -c:v libx264 -f mp4 -benchmark
ffmpeg-libplacebo-PXL_20250427_195356771.TS.mp4
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x56364496c680] All samples in data
stream index:id [3:4] have zero duration, stream set to be
discarded by default. Override using AVStream->discard or
-discard for ffmpeg command.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'PXL_20250427_195356771.TS.mp4':
Metadata:
major_brand : isom
minor_version : 131072
compatible_brands: isomiso2mp41
creation_time : 2025-04-27T19:54:05.000000Z
SpecialTypeID :
com.google.android.apps.camera.gallery.specialtype.SpecialType-AMETHYST
com.android.capture.fps: 30.000000
com.android.model: Pixel 7 Pro
com.android.manufacturer: Google
Duration: 00:00:06.97, start: 0.000000, bitrate: 20255 kb/s
Stream #0:0[0x1](eng): Data: none (mett / 0x7474656D), 47 kb/s
(default)
Metadata:
creation_time : 2025-04-27T19:54:05.000000Z
handler_name : MetaHandle
Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D),
48000 Hz, stereo, fltp, 192 kb/s (default)
Metadata:
creation_time : 2025-04-27T19:54:05.000000Z
handler_name : SoundHandle
vendor_id : [0][0][0][0]
Stream #0:2[0x3](eng): Video: hevc (Main 10) (hvc1 /
0x31637668), yuv420p10le(tv, bt2020nc/bt2020/arib-std-b67),
1920x1080, 20010 kb/s, SAR 1:1 DAR 16:9, 29.99 fps, 30 tbr, 90k
tbn (default)
Metadata:
creation_time : 2025-04-27T19:54:05.000000Z
handler_name : VideoHandle
vendor_id : [0][0][0][0]
Stream #0:3[0x4](eng): Data: none (mett / 0x7474656D) (default)
Metadata:
creation_time : 2025-04-27T19:54:05.000000Z
handler_name : MetaHandle
File 'ffmpeg-libplacebo-PXL_20250427_195356771.TS.mp4' already
exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:2 -> #0:0 (hevc (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:834:
FINISHME: support more multi-planar formats with DRM modifiers
[libx264 @ 0x563644986d40] using SAR=1/1
[libx264 @ 0x563644986d40] using cpu capabilities: MMX2 SSE2Fast
SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x563644986d40] profile High, level 4.0, 4:2:0, 8-bit
[libx264 @ 0x563644986d40] 264 - core 164 - H.264/MPEG-4 AVC codec
- Copyleft 2003-2023 - http://www.videolan.org/x264.html -
options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex
subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1
trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1
chroma_qp_offset=-2 threads=30 lookahead_threads=5
sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0
constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0
direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25
scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1
crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
aq=1:1.00
Output #0, mp4, to
'ffmpeg-libplacebo-PXL_20250427_195356771.TS.mp4':
Metadata:
major_brand : isom
minor_version : 131072
compatible_brands: isomiso2mp41
com.android.manufacturer: Google
SpecialTypeID :
com.google.android.apps.camera.gallery.specialtype.SpecialType-AMETHYST
com.android.capture.fps: 30.000000
com.android.model: Pixel 7 Pro
encoder : Lavf61.7.100
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(tv,
bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 30 fps,
15360 tbn (default)
Metadata:
creation_time : 2025-04-27T19:54:05.000000Z
handler_name : VideoHandle
vendor_id : [0][0][0][0]
encoder : Lavc61.19.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay:
N/A
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 192 kb/s (default)
Metadata:
creation_time : 2025-04-27T19:54:05.000000Z
handler_name : SoundHandle
vendor_id : [0][0][0][0]
[out#0/mp4 @ 0x56364496f940] video:3480KiB audio:163KiB
subtitle:0KiB other streams:0KiB global headers:0KiB muxing
overhead: 0.242542%
frame= 209 fps=116 q=-1.0 Lsize= 3651KiB time=00:00:06.90
bitrate=4335.2kbits/s speed=3.83x
bench: utime=14.435s stime=0.739s rtime=1.804s
bench: maxrss=1455376KiB
[libx264 @ 0x563644986d40] frame I:2 Avg QP:18.68 size:105708
[libx264 @ 0x563644986d40] frame P:66 Avg QP:23.77 size: 32017
[libx264 @ 0x563644986d40] frame B:141 Avg QP:31.40 size: 8783
[libx264 @ 0x563644986d40] consecutive B-frames: 7.2% 6.7% 5.7%
80.4%
[libx264 @ 0x563644986d40] mb I I16..4: 32.3% 25.8% 41.9%
[libx264 @ 0x563644986d40] mb P I16..4: 0.4% 0.5% 1.2%
P16..4: 16.7% 8.0% 5.6% 0.0% 0.0% skip:67.5%
[libx264 @ 0x563644986d40] mb B I16..4: 0.0% 0.0% 0.0%
B16..8: 12.9% 4.5% 1.4% direct: 1.8% skip:79.2% L0:46.1%
L1:47.2% BI: 6.8%
[libx264 @ 0x563644986d40] 8x8 transform intra:23.8% inter:36.3%
[libx264 @ 0x563644986d40] coded y,uvDC,uvAC intra: 56.1% 64.0%
50.1% inter: 6.8% 6.4% 2.8%
[libx264 @ 0x563644986d40] i16 v,h,dc,p: 53% 44% 2% 1%
[libx264 @ 0x563644986d40] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 43% 16%
16% 2% 1% 0% 0% 0% 21%
[libx264 @ 0x563644986d40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 56%
12% 1% 1% 1% 1% 1% 7%
[libx264 @ 0x563644986d40] i8c dc,h,v,p: 42% 45% 13% 1%
[libx264 @ 0x563644986d40] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x563644986d40] ref P L0: 68.8% 8.1% 12.7% 10.4%
[libx264 @ 0x563644986d40] ref B L0: 88.9% 8.3% 2.8%
[libx264 @ 0x563644986d40] ref B L1: 94.5% 5.5%
[libx264 @ 0x563644986d40] kb/s:4091.33
real 4,76
user 14,49
sys 0,77