MediaCodec解码到OES纹理后,读取的颜色为线性RGB还是sRGB?
问题解答
你的片段着色器中从samplerExternalOES采样得到的tmpColor是sRGB格式的RGB值,原因如下:
- 服务器编码的H.264帧本身是sRGB格式,MediaCodec解码后输出的YUV数据对应的原始色彩空间就是sRGB。
samplerExternalOES的核心作用是将YUV格式的外部纹理(MediaCodec的解码输出)转换为RGB,这个转换会遵循视频色彩标准,输出带伽马校正的sRGB值,而非线性RGB。- 除非你显式通过EGL扩展(如
EGL_EXT_sRGB)配置纹理使用线性色彩空间,否则Android平台上的OES外部纹理默认采样输出就是sRGB格式的色彩值。
内容的提问来源于stack exchange,提问作者Noob Max Pro
相关产品推荐
相关产品推荐

