HDR 10 support

I’m developing a prototype capable of receiving an HDMI 2.0 signal (4k HDR-10), encode it using HEVC (<40Mbps) and transmitting wirelessly to a receiver that will decode and deliver a 4k HDR-10 resolution signal.

I did a little research on NVIDA products and discovered the Shield TV PRO can delivery a 4K Dolby Vision HDR and HDR10 output. In addition, I looked at the block diagram of Jetson TX Family and noticed that they also use NVIDIA’s 20nm Tegra X1 SoC (NVIDIA® Jetson™ TX1 Supercomputer-on-Module Drives Next Wave of Autonomous Machines | NVIDIA Technical Blog).

Therefore I would like help to confirm that the Jetson TX1/TX2 is able to fulfill our requirements: encode/decode 4K HDR10 in real time - the desired output rate of the encoder would be less than 40Mbps.

Kind regards,
Cláudio.

Hi,
On Jetson TX1, encode/decode 4K HDR10 is not supported.
On Jetson TX2, decoding 4K HDR10 is supported, but encoding is not supported.encode/decode 4K HRD10 is supported

For decoding 4K HDR10 on Jetson TX2, we have tegra_multimedia_api sample 08_video_dec_drm. You can install the whole packages through sdk manager and follow the steps:

1 Connect to TV supporting HDR10(ex: Sony KD-55X9000E)

2 Boot the device and stop display manager

sudo systemctl stop gdm
sudo loginctl terminate-seat seat0

3 Run

08_video_dec_drm$ sudo ./video_dec_drm jellyfish10bit.265 H265 --disable-ui

Above information is for your reference, although it does not fully fit your requirement.

Hi DaneLLL,

Thanks for the clarification! Awesome answer.

Since neither Jetson TX1 nor Jetson TX2 have support for encoding HDR10, would you please recommend me a NVIDIA hardware capable of supporting HDR10 encoding?

My application consists in receiving 4K HDR10 stream via HDMI 2.0 and I need to encode it using h.265 in real-time.
The desired output bitrate of the codec would be less than 50Mbps.
In addition, the output of the codec should be available in a low-speed interface (USB2.0, SPI, etc).

Thanks in advance! Looking forward for your reply.

Regards,
Claudio.

Hi DaneLLL,

Thanks for the clarification! Awesome answer.

Since neither Jetson TX1 nor Jetson TX2 have support for encoding HDR10, would you please recommend me a NVIDIA hardware capable of supporting HDR10 encoding?

My application consists in receiving 4K HDR10 stream via HDMI 2.0 and I need to encode it using h.265 in real-time.
The desired output bitrate of the codec would be less than 50Mbps.
In addition, the output of the codec should be available in a low-speed interface (USB2.0, SPI, etc).

Thanks in advance! Looking forward for your reply.

Regards,
Claudio.

Hi,
For more information, please share detail about My application consists in receiving 4K HDR10 stream via HDMI 2.0. Is it a v4l2 source?

We don’t have existing implementation for this usecase. would like to get more information so that we can check if there is platform that can run the usecase.

Hi, thanks for the answer.
In this project, we have to develop a prototype capable of receiving an HDMI 2.0 input signal (coded UHD 4k 4:2:2 and HDR-10), encoding it using HEVC/H.265 (<50Mbps) and transmitting wirelessly to a receiver that decodes and delivers the same input signal.

The input signal can be from a set-top-box or a blu-ray, or other source that provides the signal with the required quality - 4k 4: 2: 2 and HDR-10.

Hi,
We have the full implementation of 10-bit YUV420 encoding/decoding on r32.3.1/Xavier, TX2.
For decoding, please check #2
For encoding, please refer to 01_video_encode and run the following steps:

$ gst-launch-1.0 videotestsrc num-buffers=300 ! video/x-raw,width=3840,height=2160,format=P010_10LE ! filesink location=raw_10bit_p010.yuv
$ ./video_encode raw_10bit_p010.yuv 3840 2160 H265 test_10bit.265 -p main10

You can run $ ./video_encode --help to get all options. ‘-br 50000000’ is to set bitrate=50Mbps

Document of tegra_multimedia_api is in
https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-3231/index.html

The input buffer format is in NvBufferColorFormat_NV12_10LE and it reads input frames from a file( raw_10bit_p010.yuv in the example ) in 01_video_encode. You would need to investigate on how to put your input signal into the allocated NvBuffers.

Thanks for the help and time spent

Hello DaneLLL,

where can i find the download for the L4T Multimedia API r32.3.1? I can only find the L4T Multimedia API Reference v32.3.1.

Edit:

Okay i have oversleep that JetPack 4.3 is now working with Debian Packages and the L4T Multimedia API r32.3.1 is now part of this.

Hi,
After the installation, you shall see the samples in

/usr/src/jetson_multimedia_api/

@DaneLLL is there any gstreamer filters for encoding HDR?

Terry

Hi,
The nvv4l2h265enc plugin supports 10-bit video frames. The format is P010_10LE:

  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-raw(memory:NVMM)
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
                 format: { (string)I420, (string)NV12, (string)P010_10LE, (string)NV24 }
              framerate: [ 0/1, 2147483647/1 ]