[FFmpeg-user] Benefits from Chroma Upsampling v4l2 8bit 422 to 10bit 422 FFV1 backup?
Terje J. Hanssen
terjejhanssen at gmail.com
Mon May 19 15:45:52 EEST 2025
My first backup generation of my PAL Analog S-video footages on tapes
was digitized to SD 576i50 DV25 with 8-bit 4:2:0 color depth and 25 Mb/s
video bit rate.
IMO playback from DV25 backup files visually lack some brightness and
colors compared with native playback from S-video tapes.
Now I am testing another backup method with purpose of best practical
video quality using ffmpeg to encode lossless compressed FFV1.mkv files:
Analog video camera/player --> S-video/HDMI converter --> HDMI/USB3
capture card --> v4l2 --> ffmpeg/ FFV1.mkv
10-Bit 4:2:2 Video is recommended for Analog Tape Transfer due to color
shades and branding
https://www.archivalworks.com/blog/10-bit-video-transfer
Well, my ms2130 HDMI/USB3 video capture card achieves YUYV2 or 8-bit
4:2:2, which is not 10-bit but yet twice as much color info compared
with DV25 4:2:0.
Q1
Therefore my question here if it yet may be
Benefits from Chroma "Upsampling" v4l2 8bit 422 to 10bit 422 FFV1
backup?
While some say this is fake upsampling like filling 8-bit data in a
10-bit container, other say this may be beneficial with temporal noise
filtering
https://www.eoshd.com/comments/topic/26710-8bit-%E2%86%92-10bit-video-with-temporal-noise-filtering-stunning-results/
Q2
So let me hear if this may be applied with some ffmpeg denoising filters
like time base correcting, tape grain or snow?
ms2130 seemingly doesn't support interlaced video (25fps), so I have
used 50fps for PAL.
v4l2-ctl -V
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 3840
Size Image : 4147200
Colorspace : sRGB
Transfer Function : Rec. 709
YCbCr/HSV Encoding: ITU-R 601
Quantization : Default (maps to Limited Range)
Flags :
ffmpeg -hide_banner -f v4l2 -list_formats all -i /dev/video0
[video4linux2,v4l2 @ 0x556f439fc7c0] Raw : yuyv422 :
YUYV 4:2:2 : 1920x1080 1600x1200 1360x768 1280x1024 1280x960 1280x720
1024x768 800x600 720x576 720x480 640x480
[in#0 @ 0x556f439fc500] Error opening input: Immediate exit requested
Error opening input file /dev/video0.
As seen I have tested four cases with different input and output formats
in the table below.
Q3
I also wonder why the Video bitrate differs so much for the 10-bit
output files?
Case Input format Video size Output format Bit depth/YUV
Video bitrate
---- ------------ ---------- ------------- -------------
-------------
1) - 720x576 - 8 bits 422p
55.6 Mb/s
2) - 720x576 yuv422p10 10 bits 422
68.0 Mb/s
3) yuv422p10 720x576 yuv422p10 10 bits 422
32.0 Mb/s
4) y210 720x576 y210 10 bits 422
35.8 Mb/s
Attach ffmpeg output for Case 2) below:
ffmpeg -hide_banner -f v4l2 -video_size 720x576 -framerate 50 -i
/dev/video0 -c:v ffv1 -level 3 -vf format=pix_fmts='yuv422p10' -t 10
output.mkv
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 239.890699, bitrate: 331776 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 720x576,
331776 kb/s, 50 fps, 50 tbr, 1000k tbn
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> ffv1 (native))
Press [q] to stop, [?] for help
[ffv1 @ 0x5571b7d55280] bits_per_raw_sample > 8, forcing range coder
Output #0, matroska, to 'output.mkv':
Metadata:
encoder : Lavf61.7.100
Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p10le(tv,
progressive), 720x576, q=2-31, 200 kb/s, 50 fps, 1k tbn
Metadata:
encoder : Lavc61.19.101 ffv1
[out#0/matroska @ 0x5571b7d56d00] video:84659KiB audio:0KiB
subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead:
0.007280%
frame= 500 fps= 50 q=-0.0 Lsize= 84665KiB time=00:00:10.00
bitrate=69357.5kbits/s speed=0.998x
More information about the ffmpeg-user
mailing list