Use colorspace helpers for DRM EGL export

This commit is contained in:
Cameron Gutman
2022-10-05 00:20:33 -05:00
parent d24db13e9d
commit 2a4af0bc2c
+10 -25
View File
@@ -910,40 +910,25 @@ ssize_t DrmRenderer::exportEGLImages(AVFrame *frame, EGLDisplay dpy,
} }
} }
// Add colorspace data if present // Add colorspace metadata
switch (frame->colorspace) { switch (getFrameColorspace(frame)) {
case AVCOL_SPC_BT2020_CL: case COLORSPACE_REC_601:
case AVCOL_SPC_BT2020_NCL:
attribs[attribIndex++] = EGL_YUV_COLOR_SPACE_HINT_EXT;
attribs[attribIndex++] = EGL_ITU_REC2020_EXT;
break;
case AVCOL_SPC_SMPTE170M:
case AVCOL_SPC_BT470BG:
case AVCOL_SPC_FCC:
attribs[attribIndex++] = EGL_YUV_COLOR_SPACE_HINT_EXT; attribs[attribIndex++] = EGL_YUV_COLOR_SPACE_HINT_EXT;
attribs[attribIndex++] = EGL_ITU_REC601_EXT; attribs[attribIndex++] = EGL_ITU_REC601_EXT;
break; break;
case AVCOL_SPC_BT709: case COLORSPACE_REC_709:
attribs[attribIndex++] = EGL_YUV_COLOR_SPACE_HINT_EXT; attribs[attribIndex++] = EGL_YUV_COLOR_SPACE_HINT_EXT;
attribs[attribIndex++] = EGL_ITU_REC709_EXT; attribs[attribIndex++] = EGL_ITU_REC709_EXT;
break; break;
default: case COLORSPACE_REC_2020:
attribs[attribIndex++] = EGL_YUV_COLOR_SPACE_HINT_EXT;
attribs[attribIndex++] = EGL_ITU_REC2020_EXT;
break; break;
} }
// Add color range data if present // Add color range metadata
switch (frame->color_range) { attribs[attribIndex++] = EGL_SAMPLE_RANGE_HINT_EXT;
case AVCOL_RANGE_JPEG: attribs[attribIndex++] = isFrameFullRange(frame) ? EGL_YUV_FULL_RANGE_EXT : EGL_YUV_NARROW_RANGE_EXT;
attribs[attribIndex++] = EGL_SAMPLE_RANGE_HINT_EXT;
attribs[attribIndex++] = EGL_YUV_FULL_RANGE_EXT;
break;
case AVCOL_RANGE_MPEG:
attribs[attribIndex++] = EGL_SAMPLE_RANGE_HINT_EXT;
attribs[attribIndex++] = EGL_YUV_NARROW_RANGE_EXT;
break;
default:
break;
}
// Terminate the attribute list // Terminate the attribute list
attribs[attribIndex++] = EGL_NONE; attribs[attribIndex++] = EGL_NONE;