[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