当前位置: 首页 > news >正文

支持dolby vision的盒子接支持dolby vision的电视,在adaptive hdr时,播放非dv的hdr视频,输出sdr

支持dolby vision的盒子接支持dolby vision的电视,setting选择adaptive hdr,按照这个配置在播放非dv的hdr视频时,会输出sdr。
看起来是很不合理的,高级的产品播放高级的片源,却输出低级的画质。
想要搞清楚这个问题,首先需要理解dolby vision有两种模式:
1)Sink-led(又名:display-led/dv standard/标准模式)
当前模式是tv主导,player送每一帧元数据给tv去处理每一帧的亮度及对比度数据,tv再根据自己的能力去调整最佳显示色调。
所以tv主导会让dolby vision显示的更准确。
2)Source-led(player-led/dv low low latency)
当前模式是player主导,即理论上player和显示器去通信确定最佳的输出亮度及对比度,然后player逐帧的处理完发送到显示器;
但是绝大部分情况下,player并没有和tv完美沟通的场景,player当不知道tv最佳输出时,则会根据自己的默认值去操作,例如当tv亮度只能达到750nits时,由于player不清楚仍输出1000nits或500nits,那么片源里一些细节将会丢失或过曝

了解了上面两种模式后,我们再继续看播放hdr输出sdr的原因:
由于标准模式表达的画面更佳,所以盒子默认会使用sink-led,而sink-led的color space是 RGB444 8bit
至于为什么colorspace非要是8bit,后面再讲。
由于是8bit,再加上netflix要求,8bit只能输出SDR信号,10和12bit才可以输出HDR信号。
所以这就是为什么dv盒子+dv tv+hdr10片源输出sdr了

那怎么去规避这个问题呢?
如果只是想规避这个问题,只需要做colorspace的动态切换即可。
在播放片源时侦测片源信息,来决定是否从8bit切换到10bit。
但是如果做动态切换,很容易引起以下几个问题:
1)dv/Netflix 那种不同信号拼接的片源在不同信号之间切换不能丢帧,只能黑几帧的要求 无法满足了,因为为了输出不同信号,需要重新设置分辨率和colorspace。
2)起播视频如果有分辨率和colorspace切换,还需要进行hdcp认证,针对很多需要根据hdcp认证结果才展示对应内容的apk,有很多的兼容性问题。
3)增加不同信号切换就切分辨率+colorspace会让hdmi兼容性问题暴涨很多(切换分辨率+colorspace本来针对用户是一个低频行为,现在如果策略主动信号变化就切换就变成一个非常高频行为了)。
这些问题会是很头痛的兼容性问题,可以说是捡了芝麻丢了西瓜。

那么再回头想一下为什么dolby vision要规定标准模式为8bit呢,dolby vision不都是12bit的吗?
这个历史就比较久了,由于hdcp2.2是最新普及,市场上还有很多只支持HDCP1.4的tv或显示器。
而HDCP 1.4最高支持的带宽为10.2 Gbps,10.2 Gbps最高只能支持到4k 30hz RGB444 8bit;
HDCP2.2最高支持的带宽为18 Gbps。
所以为了兼容HDCP1.4的带宽问题,dolby vision 标准模式会对元数据传输时做一次编码压缩,tv在收到dolby vision数据后会再还原成YUV422 12bit输出。
这就是dolby vision标准模式为什么是8bit,即sink-led为什么是8bit的原因了!

http://www.lryc.cn/news/138354.html

相关文章:

  • 使用ffmpeg将WebM文件转换为MP4文件的简单应用程序
  • Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”
  • 玩转Mysql系列 - 第6篇:select查询基础篇
  • 【SpringCloud技术专题】「Gateway网关系列」(1)微服务网关服务的Gateway组件的原理介绍分析
  • 【面试刷题】————STL中的vector是如何实现的?
  • 使用钉钉的扫码会出现多个回调(DTFrameLogin)
  • Android | 关于 OOM 的那些事儿
  • 珠玑妙算游戏
  • 【rust语言】rust多态实现方式
  • 两年半机场,告诉我如何飞翔
  • 【动手学深度学习】--21.锚框
  • C语言学习笔记(完整版)
  • 【Unity3D赛车游戏】【四】在Unity中添加阿克曼转向,下压力,质心会让汽车更稳定
  • Python爬虫requests判断请求超时并重新post/get发送请求
  • CSS中如何实现多列布局?
  • 【C++】string简单实用详解
  • opencv 进阶16-基于FAST特征和BRIEF描述符的ORB(图像匹配)
  • Unity 类Scene窗口相机控制
  • juc基础(三)
  • c语言函数指针和指针函数的区别,以及回调函数的使用。
  • 什么是服务端渲染?前后端分离的优点和缺点?
  • 【Java】优化重复冗余代码的8种方式
  • rabbitmq卸载重新安装3.8版本
  • MyBatis分页思想和特殊字符
  • 设计模式大白话——命令模式
  • [线程/C++(11)]线程池
  • VR防地质灾害安全教育:增强自然灾害知识,提高自我保护意识
  • Mybatis多对多查询案例!
  • Android OpenCV(七十五): 看看刚”转正“的条形码识别
  • 数据结构——布隆计算器