+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

HDRSample: 用MediaCode和OpenGL实现了HDR和SDR转换

这个库用MediaCode和OpenGL实现了HDR和SDR转换,如果你觉得有所收获,给这个库点个赞吧,你的鼓励是我前进最大的动力。 HDR和SDR转换是为了解决以下问题: 1,播放流程,不是所有手机都支持HDR屏幕会导致视频变灰,需要转换成SDR视频 2,编辑流程,HDR和SDR混合编辑时,要不HDR转SDR,要不SDR转HDR,不然会出现色差 现有功能实现如下,供大家一起学习一起上进: 1,输出模式(直接输出到Surface、经过OpenGL中转) 2,视图模式(无缝切换SurfaceView和TextureView) 3,多种纹理来源配置(Auto、YUV420Buffer、外部纹理OES、Y2Y)、纹理位深配置(8位、10位、16位) 4,HDR转SDR CubeLut配置,PQ转SDR12种、HLG转SDR4种 5,HDR转SDR Shader配置,该Shader支持对PQ视频和HLG视频进行色度矫正、色调参考、色调映射、色域转换、Gamma压缩 6,色调映射已支持Android8的Tonemap、Android13的Tonemap、BT2446A、BT2446C、Hable 7,色域转换已支持BT2020转BT709Clip、Compress、adpative_l0_cusp 8,10个测试视频无缝切换 关键代码 代码已经都加上注释了,如果有疑惑,欢迎加入HDR视频开发讨论群 1,Shader目录下实现了色度矫正、色调参考、色调映射、色域转换、Gamma压缩 2,YUV420FragmentShader和GLYUV420Renderer 纯Shader实现四种YUV420的Buffer转换成纹理 4,Java代码读取CubeLut文件,从3s左右优化成70ms 5,直接使用3D纹理加载CubeLut数据 6,2D纹理、OES纹理、Y2Y纹理渲染 7,判断MediaCodec是否支持10位解码 8,不同位深的纹理创建 9,GLVideoOutputImpl 10,MediaCodec异步解码 11,OpenGL运行环境封装 实践总结 1,HDR转SDR实践之旅(一)流程总结 2,HDR转SDR实践之旅(二)解码10位YUV纹理 3,HDR转SDR实践之旅(三)YUV420转YUV公式 4,HDR转SDR实践之旅(四)YUV转RGB矩阵推导 5,HDR转SDR实践之旅(五)色域转换BT2020转BT709 6,HDR转SDR实践之旅(六)传递函数与色差矫正 7,HDR转SDR实践之旅(七)Gamma、HLG、PQ公式详解 8,HDR转SDR实践之旅(八)色调映射 9,HDR转SDR实践之旅(九)HDR开发资源汇总 10,HDR转SDR实践之旅(十)SDR转HDR逆色调映射探索
你可能想看的