The human eye is able to see much more colors than modern video displays show it. No matter how sophisticated the computer is, it can still reproduce only a finite number of colors. In this article we will talk about the use of 10-bit color depth in comparison with 8-bit, based on the functionality of the seventh-generation Intel Core processors and the optimizing capabilities of Intel Software Tools. In the article you will also find a link to a sample program that implements 10-bit HEVC coding.
Color depth
The color depth, also known as bit depth, is the number of bits used to display the color of an individual pixel. The same image or frame with different color depths look different, because the number of colors in a pixel depends on the color depth.
The number of bits in the image includes a set of bits per channel for each type of color in a pixel. The number of color channels in a pixel depends on the color space used. For example, the color channels in the RGBA color space are red (R), green (G), blue (B), and alpha (A). Each extra bit doubles the amount of information we can store for each color. In an 8-bit image, the total number of available pixel colors is 256. Table 1 shows the possible number of available colors for each respective color depth.
Channel depth | Hues per channel per pixel | Total number of possible shades |
---|
8-bit | 256 | 16.78 million |
10-bit | 1024 | 1.07 billion |
12-bit | 4096 | 68.68 billion |
Most monitors and televisions are capable of displaying only 8-bit content, 10-bit images are converted to 8-bit in them. However, the advantages of 10-bit depth are already there:
')
- when processing images or video after shooting
- when using High Dynamic Range (HDR) monitors or cameras.
If the content is removed with a depth of 10 bits, it is important not to lose it during further processing, since this can lead to a decrease in sharpness, contrast and other important characteristics. In that case, if 8-bit content is being edited, this can also lead to a decrease in depth and cause the effect of color bars.
The effect of color bars
When capturing an image, it sometimes happens that the sensor cannot recognize the minimal difference between two adjacent colors, and the problem of incorrect display of colors arises. As a result, the area of ​​the picture is painted with one color in the absence of a more suitable other. Thus, color bands appear in the figure instead of a smooth transition from one color to another.
Possible solutions to the problem of color bars:
- increase color depth per channel
- apply color sampling (not covered in this article).
An uncalibrated display can also cause stripes. To avoid this, use the
Intel Graphics Control Panel utility.
Figure 1. Comparison of 8-bit (left) and 10-bit (right) images. On the left you can see the effect of bands.
Figure 1 shows the difference between 8-bit and 10-bit images in relation to the effect of color bars. In the left image, the required color detail was not transmitted by the sensor, which resulted in a smaller than necessary quantity of colors and color bands. On the right photo color information is sufficient and the transition between the colors turned out to be smooth. To ensure smooth color transitions, a wider color range is required, as described in BT2020.
Standard BT. 2020
The seventh generation of Intel Xeon and Core processors supports the BT standard. 2020 (also known as Rec. 2020) in such cases as the creation / playback of 4K Ultra-high definition (UHD) content, the use of HDR with support for 10 bits, etc. UHD monitors have a resolution of 3840 * 2160 with a different diagonal. Support for the standard BT.2020 improves picture quality at such a high resolution.
Figure 2. Comparison of the color spaces BT.2020 and BT.709
The recommendations of The International Telecommunications Union (ITU) BT.2020 represent a significantly larger range of colors than those previously used by BT.709. A comparison of the respective color spaces is shown in Figure 2, representing the CIE 1931 chromaticity diagram. The X and Y axes show the relative chromaticity coordinates with the wavelengths of the corresponding color spaces (blue font). The yellow triangle covers the BT color space. 709. The black triangle shows the color space BT. 2020, significantly larger in size and, therefore, containing more colors for smooth transitions. Bt. 2020 also defines various aspects of UHD TV, such as display resolution, frame rate, color subsampling, and color depth in addition to color space.
Intel 7th generation processors support HEVC Main 10 profile, VP9 Profile 2 and High Dynamic Range (HDR) video rendering using the standard BT.2020.
HEVC Main 10 profile
High Efficiency Video Coding (HEVC), also known as H.265, a video compression standard, is the successor of the well-known H.264 / AVC standard. Compared to its predecessors, HEVC uses more complex compression algorithms. More information about the standard can be found
here . Main 10 allows you to use an 8-bit or 10-bit color with 4: 2: 0 color sub-sampling.
HEVC 10b decoding support has appeared since the 6th generation of Intel processors. The command below shows how the test utility
sample_decode from
the Intel Media SDK sample code set can be used to get raw frames from the simplest HEVC stream.
sample_decode.exe h265 -p010 -i input.h265 -o raw_farmes.yuv -hw
The input stream used above (input.h265) can be taken
here . The output stream (raw_frames.yuv) must be in the P010 format used as the source material for the
sample_encode utility.
Hardware support for encoding / decoding HEVC 10b introduced since the 7th generation of Intel processors. The coding of 10-bit HEVC is implemented using the additional code
modified_sample_encode , specially modified for this particular functionality. This example works with the Intel Media SDK 2016 R2. Assembly instructions are provided in
the Media Example Guide in the Intel Media SDK code samples .
Below is an example of a 10-bit encoding using
sample_encode from the added
modified_sample_encode .
sample_encode.exe h265 -i raw_frames.yuv -o output.265 -w 3840 -h 2160 -p010 -hw
Figure 3. Screenshot of the Video Quality Caliper utility showing that the encoded stream has 10 bits per pixel.
VP9 profile 2
VP9 is a video encoding format developed by Google as a successor to VP8. The seventh-generation Intel platforms support VP9 10-bit decoding hardware acceleration, while the coding is still combined, software-hardware.
High Dynamic Range (High Dynamic Range, HDR)
Dynamic range is the ratio of the lightest value to the darkest point in the image. High dynamic range (HDR) video allows you to get a better dynamic range than ordinary (SDR) video, using nonlinear operations to encode and decode light levels.
HDR video content is supported using the HEVC Main 10 or VP9.2 codec, hardware accelerated since the 7th generation of Intel processors. To transmit HDR content, the system must be equipped with a DisplayPort 1.4 or HDMI 2.0a port. This functionality is still at the testing stage and is not included in public releases.
Conclusion
As we found out, developers now have the opportunity to create beautiful, realistic video in the most modern formats, colored with bright colors of 10-bit color, ideal for HD / UHD displays. Using the seventh generation Intel processors for creating content of the BT.2020 standard, as well as the optimization capabilities of the Intel Media SDK, we can already look beyond the 4K UHD resolution and the standard personnel speed for today. In the future, the area of ​​application of modern hardware-accelerated video codecs will be expanded.
The following software was mentioned in this article (with download links):
- Software - Intel Media SDK 2016 R2
- Video input stream - MHD_2013_2160p_ShowReel_R_9000f_24fps_RMN_QP23_10b.hevc from Free H.265 / HEVC streams
- Codec - H.265 / HEVC
- Analysis Tool - Video Quality Caliper (VQC), Intel Media Server Studio Professional Edition component and Intel Video Pro Analyzer
- Test bench :
- CPU : Intel Core i7-7500U CPU @ 2.70GHz
- OS : Microsoft Windows 10 Professional 64-bit
- Graphics : Intel HD Graphics 620
useful links