guint chroma_type = 0;
switch (sps->chroma_format_idc) {
+ case 0:
+ chroma_type = GST_VAAPI_CHROMA_TYPE_YUV400;
+ break;
case 1:
chroma_type = GST_VAAPI_CHROMA_TYPE_YUV420;
break;
}
chroma_type = h264_get_chroma_type(sps);
- if (!chroma_type || chroma_type != GST_VAAPI_CHROMA_TYPE_YUV420) {
+ if (chroma_type != GST_VAAPI_CHROMA_TYPE_YUV400 &&
+ chroma_type != GST_VAAPI_CHROMA_TYPE_YUV420) {
GST_ERROR("unsupported chroma_format_idc %u", sps->chroma_format_idc);
return GST_VAAPI_DECODER_STATUS_ERROR_UNSUPPORTED_CHROMA_FORMAT;
}
break;
case 0:
switch (priv->chroma_type) {
+#if VA_CHECK_VERSION(0,34,0)
+ case GST_VAAPI_CHROMA_TYPE_YUV400:
+ format = VA_RT_FORMAT_YUV400;
+ break;
+#endif
case GST_VAAPI_CHROMA_TYPE_YUV420:
format = VA_RT_FORMAT_YUV420;
break;
/**
* GstVaapiChromaType:
+ * @GST_VAAPI_CHROMA_TYPE_YUV400: 4:0:0 chroma format
* @GST_VAAPI_CHROMA_TYPE_YUV420: 4:2:0 chroma format
* @GST_VAAPI_CHROMA_TYPE_YUV422: 4:2:2 chroma format
* @GST_VAAPI_CHROMA_TYPE_YUV444: 4:4:4 chroma format
* The set of all chroma types for #GstVaapiSurface.
*/
typedef enum {
- GST_VAAPI_CHROMA_TYPE_YUV420 = 1,
+ GST_VAAPI_CHROMA_TYPE_YUV400,
+ GST_VAAPI_CHROMA_TYPE_YUV420,
GST_VAAPI_CHROMA_TYPE_YUV422,
GST_VAAPI_CHROMA_TYPE_YUV444
} GstVaapiChromaType;