BT.2020 Colospace Change

So it’s been a few months since doing some HD Upscales to 4K. I normally take my BT.709 sources and convert them BT.2020 and degrain them using SMDegrain before running them through Video AI.

I had been staying on version 4…0.4 and the output using Prores as the container. I know that Topaz’s pipeline is BT.709, but somehow using BT.2020 Prores container removed the banding I was seeing in certain scenes, especially underwater or skies.
Mediainfo for Video:
V

ideo
ID                                       : 1
Format                                   : ProRes
Format version                           : Version 0
Format profile                           : 422 LT
Codec ID                                 : apcs
Duration                                 : 2 h 26 min
Bit rate mode                            : Variable
Bit rate                                 : 276 Mb/s
Width                                    : 3 840 pixels
Height                                   : 1 608 pixels
Display aspect ratio                     : 2.40:1
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:2
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 1.866
Stream size                              : 282 GiB (99%)
Title                                    : Man on Fire (2004) HD
Writing library                          : Apple
Encoded date                             : 2024-07-14 17:29:08 UTC
Tagged date                              : 2024-07-14 17:29:08 UTC
Color primaries                          : BT.2020
Transfer characteristics                 : BT.2020 (10-bit)
Matrix coefficients                      : BT.2020 non-constant
Menus                                    : 4

While 4.1.0 shows tihs:

Video
ID                                       : 1
Format                                   : ProRes
Format version                           : Version 0
Format profile                           : 422 LT
Codec ID                                 : apcs
Duration                                 : 2 h 26 min
Bit rate mode                            : Variable
Bit rate                                 : 276 Mb/s
Width                                    : 3 840 pixels
Height                                   : 1 608 pixels
Display aspect ratio                     : 2.40:1
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:2
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 1.866
Stream size                              : 282 GiB (99%)
Title                                    : Man on Fire (2004) HD
Writing library                          : Apple
Encoded date                             : 2024-07-14 17:29:08 UTC
Tagged date                              : 2024-07-14 17:29:08 UTC
Color primaries                          : BT.2020
Transfer characteristics                 : BT.2020 (10-bit)
Matrix coefficients                      : BT.2020 non-constant
matrix_coefficients_Original             : BT.709
Menus                                    : 4

That new line “matrix_coefficients_Original: BT.709” is causing x265 to actually using BT.709 when I encode the Prores to x265 using Fatflix:
x265 output:

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5@Main
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 2 h 26 min
Bit rate                                 : 11.0 Mb/s
Width                                    : 3 840 pixels
Height                                   : 1 608 pixels
Display aspect ratio                     : 2.40:1
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.074
Stream size                              : 11.2 GiB (98%)
Writing library                          : x265 3.5+98-753305aff:[Windows][GCC 12.2.0][64 bit] 10bit
Encoding settings                        : cpuid=1111039 / frame-threads=5 / numa-pools=32 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x1608 / interlace=0 / total-frames=0 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=3 / no-allow-non-conformance / no-repeat-headers / annexb / no-aud / no-eob / no-eos / no-hrd / info / hash=0 / temporal-layers=0 / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=4 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=20 / lookahead-slices=8 / scenecut=40 / no-hist-scenecut / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=0 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=3 / limit-refs=1 / no-limit-modes / me=1 / subme=2 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao-non-deblock / rd=3 / selective-sao=4 / early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=0.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=17.0 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / ipratio=1.40 / pbratio=1.30 / aq-mode=2 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=0 / videoformat=5 / range=0 / colorprim=9 / transfer=14 / colormatrix=9 / chromaloc=0 / display-window=0 / cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr10 / no-hdr10-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=0 / analysis-save-reuse-level=0 / analysis-load-reuse-level=0 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=1 / refine-ctu-distortion=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-analysis-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei / no-hevc-aq / no-svt / no-field / qp-adaptation-range=1.00 / scenecut-aware-qp=0conformance-window-offsets / right=0 / bottom=0 / decoder-max-rate=0 / no-vbv-live-multi-pass / no-mcstf / no-sbrc
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.2020
Transfer characteristics                 : BT.2020 (10-bit)
Matrix coefficients                      : BT.709
matrix_coefficients_Original             : BT.2020 non-constant

Not sure what changed from 4.0.4 to 4.10. Maybe it’s not a Video AI problem but maybe it is FFMPEG that is adding this matrix_coefficients_Original line? Has there been any progress on adding a BT.2020 pipeline yet?

For now I’m going to stay with 4.0.4. as it produces that output that I need. Perhaps I just need to pass and x265 option, but I haven’t gone down that rabbit hole yet.

1 Like

In the latest releases of v5 of Video AI there are now input color override options under the Input Video Settings that add more color profile options.

image

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.