This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

HDR10+ backwards to HDR10
#1
Hello,
I have a question: If I'm using those settings to encode my HDR10+ video, will the video be able to play as HDR10 on device that support only HDR10 and not HDR10+ and also if it will play on device as HDR10+ that ar certified as HDR10+.

x265 --preset slower --log-level 2 --input - --output-depth 10 --y4m --profile main10   --no-hme --rskip 1 --temporal-mvp --weightp --crf 18.00 --qpfile GENERATED_QP_FILE --limit-refs 1 --signhide --range limited --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --master-display "G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50)" --hdr10 --hdr10-opt --dhdr10-info "E:\Other\Proiect\Windows APP\FastFlix\metadata2.json" --dhdr10-opt --output OUTPUTFILE

[Image: xHQfwGs]

I don't have a device that can play HDR10 or HDR10+, I want o buy one, but I want to know if with those commands will allow me to play play the video on compatible HDR10 device.

Thank you!


Attached Files Thumbnail(s)
   
Reply
#2
In general: HDR10+ is backward-compatible to HDR-10
- I think max cll and max fall should also be specified for better color reproduction, but they should not be strictly necessary (afaik players should use mac cll 0 and max fall 1000 as fallback or use some auto tone magic).
- What might be a problem are the missing level&vbv settings. (especially since open gop is used) This is mainly for player compatibility not for color handling.
Other than that the settings should be fine.

Quote:I don't have a device that can play HDR10 or HDR10+, I want o buy one, but I want to know if with those commands will allow me to play play the video on compatible HDR10 device.
Since I personally don't have any HDR10(+) compatible hardware either I would recommend to create a file but it on a usb stick and if there's an 'offline' shop selling such a monitor/tv ask them if they could playback the file for you. (or create a sample and share it with some other folks who have the necessary hardware to test)

Cu Selur
Reply
#3
(23.10.2020, 20:08)Selur Wrote: In general: HDR10+ is backward-compatible to HDR-10
- I think max cll and max fall should also be specified for better color reproduction, but they should not be strictly necessary (afaik players should use mac cll 0 and max fall 1000 as fallback or use some auto tone magic).
- What might be a problem are the missing level&vbv settings. (especially since open gop is used) This is mainly for player compatibility not for color handling.
Other than that the settings should be fine.

Quote:I don't have a device that can play HDR10 or HDR10+, I want o buy one, but I want to know if with those commands will allow me to play play the video on compatible HDR10 device.
Since I personally don't have any HDR10(+) compatible hardware either I would recommend to create a file but it on a usb stick and if there's an 'offline' shop selling such a monitor/tv ask them if they could playback the file for you. (or create a sample and share it with some other folks who have the necessary hardware to test)

Cu Selur

Thank you for the replay!
I just wanted to make the encoder setting simple, but good for quality. I just used 
--preset slower --profile main10 --crf 18.00
 and all the settings necessary for HDR10 
--range limited --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --master-display "G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50)" --hdr10 --hdr10-opt --dhdr10-info "E:\Other\Proiect\Windows APP\FastFlix\metadata2.json" --dhdr10-opt --output OUTPUTFILE


I just want to let the encoder select the best level that is required for my video baste on the info from the video and the output of the video, also I read that open-gop is better for quality wish, source: https://streaminglearningcenter.com/arti...-know.html

The source of the video was: audio was passthrough all
General
Complete name                            : E:\20201017_145050.mp4
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42 (isom/mp42)
File size                                : 33.5 MiB
Duration                                 : 11 s 198 ms
Overall bit rate                         : 25.1 Mb/s
Encoded date                             : UTC 2020-10-17 11:51:02
Tagged date                              : UTC 2020-10-17 11:51:02
com.android.version                      : 10

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5@Main
HDR format                               : SMPTE ST 2094 App 4, Version 1, HDR10+ Profile B compatible
Codec ID                                 : hvc1
Codec ID/Info                            : High Efficiency Video Coding
Duration                                 : 11 s 198 ms
Bit rate                                 : 24.8 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 30.000 FPS
Minimum frame rate                       : 29.980 FPS
Maximum frame rate                       : 30.030 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.399
Stream size                              : 33.2 MiB (99%)
Title                                    : VideoHandle
Language                                 : English
Encoded date                             : UTC 2020-10-17 11:51:02
Tagged date                              : UTC 2020-10-17 11:51:02
Color range                              : Limited
Color primaries                          : BT.2020
Transfer characteristics                 : PQ
Matrix coefficients                      : BT.2020 non-constant
Mastering display color primaries        : Display P3
Mastering display luminance              : min: 0.0050 cd/m2, max: 1000 cd/m2
mdhd_Duration                            : 11198
Codec configuration box                  : hvcC

And after encoded:

General
Unique ID                                : 172063719482437538947663698359491187433 (0x817244581B13016418B2B9FEB3A752E9)
Complete name                            : E:\Test HDR10+ dhdr10-opt.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 5.51 MiB
Duration                                 : 11 s 198 ms
Overall bit rate                         : 4 129 kb/s
Encoded date                             : UTC 2020-10-23 10:17:23
Writing application                      : mkvmerge v51.0.0 ('I Wish') 64-bit
Writing library                          : libebml v1.4.0 + libmatroska v1.6.2
Encoding Gui                             : Hybrid 2020.10.11.1

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L4@Main
HDR format                               : SMPTE ST 2094 App 4, Version 1, HDR10+ Profile B compatible
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 11 s 198 ms
Bit rate                                 : 3 864 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 30.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.062
Stream size                              : 5.16 MiB (94%)
Title                                    : VideoHandle
Writing library                          : x265 3.4+26-ga82c6c7a7:[Windows][GCC 10.2.0][64 bit] 10bit
Encoding settings                        : cpuid=1111039 / frame-threads=2 / numa-pools=4 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / interlace=0 / total-frames=0 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=5 / no-allow-non-conformance / repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=25 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=40 / lookahead-slices=0 / scenecut=40 / hist-scenecut=0 / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / rect / amp / max-tu-size=32 / tu-inter-depth=3 / tu-intra-depth=3 / limit-tu=4 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=4 / limit-refs=1 / limit-modes / me=3 / subme=4 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao-non-deblock / rd=6 / selective-sao=4 / no-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=1.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=18.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=16 / colormatrix=9 / chromaloc=0 / display-window=0 / master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50) / 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 / hist-threshold=0.03 / no-opt-cu-delta-qp / no-aq-motion / hdr10 / hdr10-opt / 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 / no-scenecut-aware-qpconformance-window-offsets / right=0 / bottom=0 / decoder-max-rate=0 / no-vbv-live-multi-pass
Language                                 : English
Default                                  : Yes
Forced                                   : Yes
Color range                              : Limited
Color primaries                          : BT.2020
Transfer characteristics                 : PQ
Matrix coefficients                      : BT.2020 non-constant
Mastering display color primaries        : Display P3
Mastering display luminance              : min: 0.0050 cd/m2, max: 1000 cd/m2


And about VbV, I read that is useful to restrict bitrate in CRF Mode, to not go higher than a certain vbv-maxrate https://slhck.info/video/2017/03/01/rate-control.html

I'm trying to understand if is better to let it on unrestricted level so it can be selected automatically and without vbv.

But if vbv helps, how can I calculate to get --vbv-bufsize and --vbv-maxrate for a specific level?
Any suggestion for a better quality and compatibility are always good.
Thanks!
Reply
#4
Quote: and all the settings necessary for HDR10
Like I wrote before: max cll and fall are missing there.

Quote:I just want to let the encoder select the best level that is required for my video
And that is where you go wrong.
VBV, profiles and level are not about the best for the content but for playback compatibility.
You need to select VBV, profiles and level such that:
a. they allow your content
b. are supported by your playback device.
read:
https://en.wikipedia.org/wiki/High_Effic...g#Profiles
https://en.wikipedia.org/wiki/High_Effic...and_levels

Quote: also I read that open-gop is better for quality wish,
Yes, open-gop can increase the compressibility.

Quote:But if vbv helps, how can I calculate to get --vbv-bufsize and --vbv-maxrate for a specific level?
If you select a specific level Hybrid will automatically set the default vbv restrictions for that level.

Cu Selur
Reply
#5
Quote:Like I wrote before: max cll and fall are missing there.
From what I read, I see that if in the source of the video maxcll is not prezent, better then put the wrong value, let it be 0 and use: 
--hdr10
Along with:
--hdr10-opt

It seams to be a better option for the video, benwaggoner said this:
https://forum.doom9.org/showthread.php?p...ost1906154

Quote:Maximum Content Light Level : xxxx cd/m2
Maximum Frame-Average Light Level : xxxx cd/m2
My video don't have those value in the info: So is better to let it be 0.

Quote:And that is where you go wrong.
VBV, profiles and level are not about the best for the content but for playback compatibility.
You need to select VBV, profiles and level such that:
a. they allow your content
b. are supported by your playback device.
read:
https://en.wikipedia.org/wiki/High_Effic...g#Profiles
https://en.wikipedia.org/wiki/High_Effic...and_levels

I readed all of that and also:
https://x265.readthedocs.io/en/master/cl...level-tier

It seams that x265 can determinate the encoding level based on the resolution of the video, framerate.
So the level on my video was:
Quote:Main 10@L5@Main

After encoded on auto-detection it got:
Quote:Main 10@L4@Main

And if I look on the tabel from:
https://en.wikipedia.org/wiki/High_Effic...and_levels
I see that my video with FullHD resolution and 30 framerate it fits on level 4 the same level that has been chosen by the x265.
Or maybe HDR10+ has another standard, a specific level only for HDR10, but I don't have information abaout that...

Quote:If you select a specific level Hybrid will automatically set the default vbv restrictions for that level.
After the first encode and seeing that my video fit in level 4, I can chose level 4 and Hybrid will do the rest, setting vbv for that level.
So my question is, should I use vbv or not? What is the benefit in using it or not?
I see that is a must for the internet content, it helps in streaming.

Thanks!
Reply
#6
Yes, if your source has no max cll/fall values, you can leave them out.

Quote:It seams that x265 can determinate the encoding level based on the resolution of the video, framerate.
Yes, if you to not set level&profile x265 will guess them (hopefully not only on resolution and frame rate).

Quote:So my question is, should I use vbv or not? What is the benefit in using it or not?
You should since it guaranties that the output will be compatible to the selected level&profile.

Quote:Main 10@L4@Main
is okay, if the player you want to use support it (which is to be expected since it's a common level/profile/tier combination-)


Cu Selur
Reply
#7
(24.10.2020, 19:14)SlashX Wrote:
Quote:Like I wrote before: max cll and fall are missing there.
From what I read, I see that if in the source of the video maxcll is not prezent, better then put the wrong value, let it be 0 and use: 
--hdr10
Along with:
--hdr10-opt

It seams to be a better option for the video, benwaggoner said this:
https://forum.doom9.org/showthread.php?p...ost1906154

Quote:Maximum Content Light Level : xxxx cd/m2
Maximum Frame-Average Light Level : xxxx cd/m2
My video don't have those value in the info: So is better to let it be 0.

Quote:And that is where you go wrong.
VBV, profiles and level are not about the best for the content but for playback compatibility.
You need to select VBV, profiles and level such that:
a. they allow your content
b. are supported by your playback device.
read:
https://en.wikipedia.org/wiki/High_Effic...g#Profiles
https://en.wikipedia.org/wiki/High_Effic...and_levels

I readed all of that and also:
https://x265.readthedocs.io/en/master/cl...level-tier

It seams that x265 can determinate the encoding level based on the resolution of the video, framerate.
So the level on my video was:
Quote:Main 10@L5@Main

After encoded on auto-detection it got:
Quote:Main 10@L4@Main

And if I look on the tabel from:
https://en.wikipedia.org/wiki/High_Effic...and_levels
I see that my video with FullHD resolution and 30 framerate it fits on level 4 the same level that has been chosen by the x265.
Or maybe HDR10+ has another standard, a specific level only for HDR10, but I don't have information abaout that...

Quote:If you select a specific level Hybrid will automatically set the default vbv restrictions for that level.
After the first encode and seeing that my video fit in level 4, I can chose level 4 and Hybrid will do the rest, setting vbv for that level.
So my question is, should I use vbv or not? What is the benefit in using it or not?
I see that is a must for the internet content, it helps in streaming.

Thanks!

(24.10.2020, 19:23)Selur Wrote: Yes, if your source has no max cll/fall values, you can leave them out.

Quote:It seams that x265 can determinate the encoding level based on the resolution of the video, framerate.
Yes, if you to not set level&profile x265 will guess them (hopefully not only on resolution and frame rate).

Quote:So my question is, should I use vbv or not? What is the benefit in using it or not?
You should since it guaranties that the output will be compatible to the selected level&profile.

Quote:Main 10@L4@Main
is okay, if the player you want to use support it (which is to be expected since it's a common level/profile/tier combination-)


Cu Selur

Thank you for the prompt answer!

The irony is that I don't have a player, it. I plan on getting a TV which has support for HDR10+.
I just want to be prepared, and encode my video with x265 for making the video smaller with at the best quality keeping them compatible.

I have one more question for you. I don't have to much experience with x265.
My normal recorded video are in HEVC 8 bits, I want te encode them for making the video smaller with at the best quality.
What is your suggestion to use x265 8bit or 10 bit?

Thank you for your patience.
Reply
#8
Hight calculation precision means better compression.
So just for compression 12bit calculation precision would even be better, but downside there is that most hardware will not support this.
-> stick with 10bit
8bit does not make any sense to me when using H.265.
(different story with H.264 since there nearly hardware player supports 10bit)

Cu Selur
Reply
#9
(24.10.2020, 19:45)Selur Wrote: Hight calculation precision means better compression.
So just for compression 12bit calculation precision would even be better, but downside there is that most hardware will not support this.
-> stick with 10bit
8bit does not make any sense to me when using H.265.
(different story with H.264 since there nearly hardware player supports 10bit)

Cu Selur

Thank you for the advice.
And I want to thank you for the hard work you do for Hybrid, it's a great app. Lots of options, I have to do research and see how to use them.

Thanks.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)