[FFmpeg翻译]深入HDR

2,210 阅读16分钟

本文由 简悦SimpRead 转码,原文地址 www.elecard.com

尽管有种种弊端和过时的技术工艺,但SDR(Standar......)中的视频内容还是很受欢迎。

2022年4月15日

尽管有种种弊端和过时的技术工艺,但SDR(标准动态范围)格式的视频内容仍然在当今媒体市场上占据着主导地位。HDR(高动态范围)格式才刚刚开始扩张。

在这篇文章中,我们将考虑SDR和HDR的区别,并研究主要的HDR标准,它们对H.264/AVC、H.265/HEVC、VP9和AV1的鉴定和验证。这篇文章对想要实现或识别HDR内容的QA工程师、应用开发人员、OEM-制造商和SOC-设计人员很有用。

HDR和SDR之间的差异

色度参数

SDR格式是基于Rec.ITU-R BT.709中描述的色度参数。ITU-R BT.709中描述的色度参数。它们只覆盖了CEI 1931系统中人眼可见光谱的35.9%(图1)。相比之下,HDR使用色彩参数Rec. ITU-R BT.2020,覆盖75.8%的光谱。

图1. CEI 1931系统的色彩空间。

颜色深度

SDR的颜色深度为8比特。SDR并不禁止使用10比特,但在实践中,绝大多数的视频内容都是以8比特的颜色深度压缩的。这意味着每一种原色--红、绿、蓝--可以有2^8个值,等于256,或者说总共有256x256x256=16,777,216种颜色。这是一个很大的数字,但人眼看到的更多,因此,在实践中,它可以区分SDR视频中的异化过渡(图2)。这在渐变的背景场景中尤其明显,比如天空。 

图2. 8位和10位的颜色深度。

HDR中的最小颜色深度是10比特。每种原色有1024个可能的值,或者总共有1073 741 824种颜色,比SDR多64倍。这样的图像更接近现实,然而,在某些情况下,人眼仍然能够注意到色彩转换中的混杂现象。

亮度

人眼的结构是这样的,除了颜色成分外,它还能区分亮度或亮度成分,它的感知能力要强得多。SDR被限制在100 cd/m2的亮度,而HDR标准理论上可以达到10,000 cd/m2。

在实践中,支持HDR的中价位显示器声称亮度为1,000 cd/m2,而高端市场则提供高达4,000 cd/m2的亮度,但只适用于某些场景和短暂的时间。

HDR标准

应该注意的是,HDR这个术语是一个总括性术语,因为市场上有几个来自不同供应商的HDR实施标准。最广泛使用的是四个HDR标准。HDR10、HLG、HDR10+和Dolby Vision。图3.1和3.2显示了支持HDR的电视制造商的品牌,图4显示了目前支持HDR的流媒体服务。

图3.1. 美国的HDR电视品牌。

图3.2. 欧洲的HDR电视品牌。

图4. 支持HDR的流媒体服务。

要播放HDR内容,你需要适当准备符合标准的内容,以及支持HDR的解码器和显示器。

通过StreamEye,你可以检查基本流级别的参数,而Stream Analyzer有助于在基本流和文件的媒体容器级别上验证参数。即将发布的Boro将帮助识别HDR格式并为直播流呈现其元数据。

HDR10

该标准于2014年通过。HDR10由于其易于使用和没有许可费而获得广泛的接受。该标准描述的视频内容符合UHDTV Rec.的建议。ITU-R BT.2020的建议。

分辨率高达7680 × 4320(8K)像素
纵横比16:9
像素比1:1
扫描方式逐行扫描
帧速率(fps)高达 120
颜色位深10-12位
色度参数BT.2020
亮度在明亮的场景中高达10 000 cd/m2,在黑暗的场景中高达0.0001 cd/m2

HDR10是基于PQ EOTF转换函数,这就是为什么这样的视频内容与SDR显示器不兼容。另外,HDR10有一个单层的视频内容。

该标准采用了静态元数据,应用于整个视频序列。一方面,静态实施简化了实施过程。同时,它没有考虑到静态和动态、明亮和黑暗场景对不同色调的需求,因此需要应用全局补偿方法。因此,HDR10不能够完全传达作者的想法和愿景。

HDR10元数据包括母版显示色彩量和内容光照度信息。

母版显示色量是用于创建视频内容的显示参数,被认为是参考参数。当播放视频内容时,显示器将根据参考参数重新调整。

母版显示色量描述。

  • Display_primaries, 三个主要色度成分的X和Y坐标。
  • White_point,白点的X和Y坐标。
  • Max_display_mastering_luminance, 母版显示器的名义最大亮度,单位为0.0001cd/m2。 
  • Min_display_mastering_luminance,母版显示器的名义最小亮度,单位为0.0001cd/m2。

内容光照度信息--图像的名义目标光照度的上限值。它包括。

  • Content light level information (MaxCLL),表示最大像素亮度水平的上限,单位为cd/m2。 
  • Max_pic_average_light_level (MaxFALL),指定整个画面的最大平均亮度水平的上限,单位是cd/m2。

在H.264/AVC和H.265/HEVC视频格式中,HDR10元数据可以在两个层面上指定。

  1. 在IDR访问块的相应SEI-头中的基本视频流级别。图5显示了一个HEVC视频序列的SEI母版显示色彩量和内容光照度信息的例子:最大标称亮度1,000 cd/m2,最小标称亮度0.05 cd/m2,MaxCLL 1,000 cd/m2,MaxCLL 400 cd/m2,还有色度成分和白点的坐标。
  2. 在MP4媒体容器层面:mdcv(母版显示色彩量)和clli(内容亮度)框。
  3. 在MKV/WebM媒体容器层面上。SmDm和CoLL框。

图5. SEI信息。内容光照度和母版显示颜色量。

VP9在媒体容器层面携带数据。

  1. MKV/WebM:SmDm(母版显示元数据)和CoLL(内容光照度)(图6)。
  2. MP4:mdcv和clli盒。

图6. VP9视频序列的母版元数据。

AV1携带元数据。

  1. 在基本视频流层面,使用OBU语法(metadata_hdr_mdcv和metadata_hdr_cll)发出信号。
  2. 在MP4媒体容器层面:mdcv和clli框。
  3. 在MKV/WebM媒体容器层面上。SmDm和CoLL框。

HLG

HLG标准出现在2015年,也已被广泛采用。该标准描述了符合BT.2020的视频内容。

分辨率高达7680 × 4320(8K)像素
纵横比16:9
像素比1:1
扫描方式逐行扫描
帧速率(fps)高达 120
色差10-12位
色度参数BT. 2020, BT. 2021,BT.709
亮度在明亮的场景中高达1000cd/m2,在黑暗的场景中高达0.0001cd/m2。

HLG,像HDR10一样,携带一层视频内容。与HDR10不同,HLG没有元数据,因为它使用HLG EOTF混合对数函数,部分重复SDR函数曲线,部分重复HDR(图7)。这样的实现理论上允许HLG在PQ EOTF(HDR10、HDR10+、Dolby Vision)和SDR显示器上播放,色度参数符合BT.2020。就逼真程度而言,HLG和HDR10一样,无法完全传达作者的想法和设想。而且由于HLG EOTF功能的特殊性,如果图像中含有饱和颜色的明亮区域,在SDR显示器上可能会发现色调的变化。通常情况下,在有镜面耀斑的场景中会观察到失真。

图7. 相对于SDR和PQ HDR的HLG曲线

一个HLG视频流可以通过Transfer_characteristics参数来识别,该参数的值为14或18。

对于H.264/AVC和H.265/HEVC,该参数可以被指定。

  1. 在MP4媒体容器层面:在avcc、hvcc或colr框中(图8)。
  2. 在MKV/WebM媒体容器级别,在相应的TrackEntry视频和颜色框中。
  3. 在SPS头文件 → VUI → video_signal_type_present_flag → colour_description_present_flag → Transfer_characteristics(图8)的基本流级别。
  4. SEI消息替代传输特性,位于基本流级别的IDR访问块中。该信息包含参数referred_transfer_characteristics = 18(图9)。如果在SEI、VUI或媒体容器中的值有差异,则优先考虑SEI值。

对于VP9,该参数可以在媒体容器层面指定。

  1. MP4:在vpcc和сolr框中。
  2. MKV/WebM:彩色框。

对于AV1,参数可以被指定。

  1. 在OBU序列头的基本流级别→color_config→if (color_description_present_flag) → Transfer_characteristics。
  2. 在MP4媒体容器级别的av1c和colr框中。
  3. 在MKV/WebM媒体容器级别的相应TrackEntry视频和颜色框中。

图8. 部分SPS VUI参数来自MP4媒体容器的AvcС和颜色框。

图9. SEI消息的替代传输特性。

HDR10+

该标准还描述了符合UHDTV BT.2020的视频内容。

分辨率高达7680 × 4320(8K)像素
纵横比16:9
像素比1:1
扫描方式逐行扫描
帧速率(fps)高达 120
颜色比例10-16位
色度参数BT。2020
亮度在明亮的场景中高达10 000 cd/m2,在黑暗的场景中高达0.0001 cd/m2。

HDR10+使用PQ EOTF,因此与SDR显示器不兼容。

与HDR10不同,HDR10+使用动态元数据,可以在母版制作过程中更有效地编辑每个场景,从而完全传达出作者的想法。在内容播放过程中,显示内容从一个场景到另一个场景的重新排列与作者的创作方式相同。

HDR10+提供对HDR10的向后兼容性。如果显示器不支持HDR10+动态元数据,但支持HDR10静态元数据,并且这种数据存在于流或媒体容器中,显示器可以播放HDR10视频序列。

对于H.264/AVC和H.265/HEVC,动态元数据位于SEI user_data_registered_itu_t_35(图10)中的基本流级别。在VP9中,元数据被指定在WebM容器的BlockAddID(ITU-T T.35元数据)中。在AV1中,元数据是在metadata_itut_t35()OBU语法中指定的。

图10. 动态元数据HDR10+,SEI消息。

Dolby Vision

由杜比公司开发和授权的最复杂的专有HDR标准。一个HDR标准,规范了在一个视频文件中同时使用两个层的可能性:基础层(BL)和增强层(EL)。事实上,由于视频文件的大小以及准备和播放此类内容的难度,两个视频层的存在是很罕见的。

杜比视界有5个预定义的配置文件。4、5、7、8(8.1和8.4)和9。

支持的编解码器最大分辨率最大帧率(fps)颜色深度是否有两层颜色色度参数与其他SDR/HDR标准的兼容性描述是否有VUI数据
Profile 4H.265/Hevc Main 10 profile3840х21606010 bitsBl and ELBT.2020,BT.709BL与SDR兼容 (2)可选 (2,2,2) !
Profile 5H.265/Hevc Main 10 Profile7680х432012010位没有,只有BLBT. 2020否(0)HLS和MPEG-DASH平台可选择(2,2,2)
Profile 7H.265/Hevc Main 10 profile 3840x21607680х43206010 bitsBl and ELBT. 2020(6)蓝光光盘强制性 (9,16,9) for EL
Profile 8.1H.265/Hevc Main 10 profile7680x432012010 bits不,只有BLBT. 2020HDR10 (1)HLS和MPEG-DASH平台必须 (9,16,9)
Profile 8.4H.265/Hevc Main 10 Profile没有,只有BLBT.2020, BT.2100, BT.709HLG, SDR (2, 4)HLS和MPEG-DASH平台可选择(9,18,9或9,14,9)
Profile 9H.264/AVC High profile1920x1080608 bitsNo, only BLBT. 709SDR(2)MPEG-DASH平台可选
  1. Profile 4不支持新的应用程序和服务提供商。

  2. Profile 8.4正处于标准化阶段。最大亮度水平为1000cd/m2。 

配置文件5、8、9的BL和配置文件4和7的EL使用PQ EOTF,所以它们与SDR显示器不兼容。这些配置文件使用类似于HDR10+元数据的动态元数据。这允许在母版制作过程中对每个场景进行有效的编辑,并准确地传达作者的想法。当内容被回放时,根据动态元数据重新调整各场景的显示。

在H.264/AVC和H.265/HEVC视频格式中,杜比视界动态元数据位于基本视频级别。

  • 在SEI user_data_registered_itu_t_t35 ST2094-10_data()中。
  • 在NAL单元62的基本流级别。

杜比已经对MPEG-2传输流和MP4媒体容器的杜比视力识别进行了标准化。在MPEG-2 TS中,使用PMT表中的DOVI视频流描述符提供信息,从其内容中确定配置文件、级别、层的存在和兼容性。 

与SDR或HDR兼容的BL层与SDR和HDR不兼容的BL层二级Dolby Vision PID
PMT表中的stream_type应该是。0x1B代表AVC 0x24代表HEVCPMT表中的stream_type必须等于0x06PMT表中的stream_type必须等于0x06
bl_present_flag = 1bl_present_flag = 1bl_present_flag = 0
el_present_flag = profileel_present_flag = 0el_present_flag 设置为 1
dv_bl_signal_compatibility_id对应BL信号兼容IDdv_bl_signal_compatibility_id = 0x0dv_bl_signal_compatibility_id对应BL信号兼容ID

为此,MP4容器使用配置框:dvcc(用于低于或等于7的配置文件),dvvc(用于高于7但低于10的配置文件),dvwc(用于等于或高于10的配置文件--保留给未来使用)。

也使用下列方框中的一个。

  • dvav, dva1, dvhe, dvh1, avc1, avc3, avc2, avc4, avc1, avc3, hev1, hvc1 用于解码器初始化。
  • avcc, hvcc提供有关编码器配置的信息。
  • avce, hvce描述EL,如果第二视频层存在(配置文件4和7)。

图11. 来自MP4媒体容器的Dolby Vision配置框。

HDR标准的一般概述

HDR 10HLGHDR 10+Dolby Vision
视频编解码器H.264/AVC, H.265/HEVC, VP9, AV1H.264/AVC, H.265/HEVC, VP9, AV1H.264/AVC, H.265/HEVC, VP9, AV1H.264/AVC, H.265/HEVC
HDR元数据的类型静态不存在动态动态
向后兼容SDR/HDR没有SDRHDR10HDR10, HLG, SDR
eotfpqhlgpqpq, hlg
色度参数BT. 2020BT. 2020, BT. 2100, BT. 709BT. 2020BT. 2020, BT. 2100, BT. 709
最大亮度水平10,000 cd/m21,000 cd/m210,000 cd/m210,000 cd/m2
可能的媒体容器MP4,MKV/Webm,TSMP4,MKV/Webm,TSMP4,MKV/Webm,TSMP4,TS

3 动态:Profile 4(EL),5,7,8.1,9。8.4中不存在。

HDR内容的播放按以下方式进行(图12)。

  1. 应用程序从MP4、MKV/WebM、TS媒体容器中提取基本视频和HDR元数据(如果存在),然后将数据传输到解码器。
  2. 解码器对视频序列进行解码,并提取静态或动态HDR元数据,或从媒体容器中获得关于框架的静态HDR元数据。
  3. 解码器将解码后的框架和HDR元数据传输给显示器。
  4. 显示器输出图像。

HLG没有元数据。如果有2个视频层(BL/EL--杜比视界中的Profile 4或7),提取器会提取它们,但应用程序可以根据平台的能力决定选择哪个层和相应的解码器。

图12. HDR内容播放的一般过程。HDR视频流的验证按惯例可以分为几个阶段。

检查视频序列是否符合色度参数 

  1. BT.2020/2100和EOTF视频信号转换功能。对于所有4种视频编解码器(H.264/AVC,H.265/HEVC,VP9,AV1),这是标准化的相同的参数集。

    • color_primaries,表示根据CIE 1931规定的源原点的色度坐标。
    • Transfer_characteristics, 表示源图片的参考光电子传输特性函数。
    • 矩阵系数(matrix_coeffs)描述了用于从绿、蓝、红或Y、Z、X基色推导出亮度和色度信号的矩阵系数。

    这些参数的位置。

    对于H.264/AVC和H.265/HEVC。

    • 在VUI头文件中的基本流级别。序列参数集 → VUI → video_signal_type_present_flag → color_description_present_flag(图8)。
    • 在MP4媒体容器级别的avcc、hvcc或colr框中(图8)。
    • 在MKV/WebM媒体容器级别的相应TrackEntry视频和颜色框中。

    对于VP9。

    • MP4:在vpcc和сolr框中。
    • MKV/WebM:颜色框。

    对于AV1。

    • 在OBU序列头的基本流级别→ color_config → if (color_description_present_flag)。
    • 在MP4媒体容器级别的av1c和colr框中。
    • 在MKV/WebM媒体容器级别的相应TrackEntry视频和颜色框中。
  2. 检查分辨率、宽高比、帧率、色深、视频编解码器的合规性。

  3. HDR元数据检查。

因此,在这篇文章中,我们把每种HDR格式最相关的信息收集在一起。所描述的标记可以让你快速潜入HDR主题领域,识别、整合HDR内容并解决可能的问题。

通过StreamEye,你可以在基本流层面上检查参数,而Stream Analyzer则有助于在基本流和媒体容器层面上验证参数。

申请StreamEye演示

参考资料

  1. HDR Ecosystem Tracker 2020年秋季更新,可从www.flatpanelshd.com/focus.php?s…获得。
  2. 建议ITU-R BT.2020-2 (10/2015) 用于生产和国际节目交换的超高清电视系统的参数值
  3. SMPTE ST 2084:2014 掌握参考显示器的高动态范围电光传输功能
  4. SMPTE ST 2086:2014 支持高亮度和宽色域图像的母版显示色量元数据
  5. CTA-861.3-A, HDR静态元数据扩展 
  6. ITU-T H.264,视听服务的基础设施-移动视频的编码
  7. ITU-T H.265,视听服务的基础设施--移动视频的编码
  8. ISO/IEC 14496-12,信息技术-视听对象的编码-第12部分:ISO基础媒体文件格式
  9. WebM容器指南,可从www.webmproject.org/docs/contai…
  10. Matroska媒体容器,可从www.matroska.org/technical/e…
  11. AV1比特流和解码过程规范,可从aomediacodec.github.io/av1-spec/av…
  12. ARIB STD-B67,用于节目制作的扩展图像动态范围电视(Eidrtv)系统的基本参数值 
  13. 建议 ITU-R BT.2100-2 用于生产和国际节目交流的高动态范围电视的图像参数值 14.
  14. HDR10+系统白皮书,可从hdr10plus.org/wp-content/…
  15. SMPTE ST 2094-40:2016 颜色体积变换的动态元数据--应用#4
  16. ST 2094-40的User_data_registered_itu_t_t35 SEI消息。
  17. Dolby Vision Profiles and Levels Version 1.3.3规范 
  18. ISO基础媒体文件格式2.2版中的杜比视界流
  19. 在MPEG-2传输流格式中的杜比视力流 
  20. 在HTTP实时流格式中的杜比视力流
  21. 在MPEG-DASH格式中的杜比视界流
  22. SMPTE ST 2094-10:2016,颜色体积变换的动态元数据--应用#1
  23. 根据《专利合作条约》(PCT)发表的国际申请,国际申请号PCT/US20 16/059862
  24. ETSI TS 103 572,HDR信号和色彩体积变换的动态元数据传输;用于DVB兼容系统的应用#1。

亚历山大-克鲁格洛夫

Alexander Kruglov是Elecard公司的一名主要工程师。他自2018年以来一直从事视频分析工作。Alexander负责支持Elecard的最大客户,如Netflix、Cisco、Walt Disney Studios等。


www.deepl.com 翻译