mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-09 08:55:33 +00:00
libs: dec: h265: add 422 chroma format support.
Add main-422-10 profile which support 422 chroma format stream. Currently, this feature is only supported by media-driver in Icelake. https://bugzilla.gnome.org/show_bug.cgi?id=797143
This commit is contained in:
parent
37a756fd91
commit
619abbdeb4
12 changed files with 128 additions and 50 deletions
|
@ -1053,8 +1053,7 @@ get_profile (GstVaapiDecoderH265 * decoder, GstH265SPS * sps, guint dpb_size)
|
||||||
GstVaapiProfile profile, profiles[3];
|
GstVaapiProfile profile, profiles[3];
|
||||||
guint i, n_profiles = 0;
|
guint i, n_profiles = 0;
|
||||||
|
|
||||||
profile =
|
profile = gst_vaapi_utils_h265_get_profile (sps);
|
||||||
gst_vaapi_utils_h265_get_profile (sps->profile_tier_level.profile_idc);
|
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
/* HACK: This is a work-around to identify some main profile streams having wrong profile_idc.
|
/* HACK: This is a work-around to identify some main profile streams having wrong profile_idc.
|
||||||
* There are some wrongly encoded main profile streams(eg: ENTP_C_LG_3.bin) which doesn't
|
* There are some wrongly encoded main profile streams(eg: ENTP_C_LG_3.bin) which doesn't
|
||||||
|
|
|
@ -132,6 +132,10 @@ static const GstVaapiProfileMap gst_vaapi_profiles[] = {
|
||||||
{GST_VAAPI_PROFILE_H265_MAIN10, VAProfileHEVCMain10,
|
{GST_VAAPI_PROFILE_H265_MAIN10, VAProfileHEVCMain10,
|
||||||
"video/x-h265", "main-10"},
|
"video/x-h265", "main-10"},
|
||||||
#endif
|
#endif
|
||||||
|
#if VA_CHECK_VERSION(1,2,0)
|
||||||
|
{GST_VAAPI_PROFILE_H265_MAIN_422_10, VAProfileHEVCMain422_10,
|
||||||
|
"video/x-h265", "main-422-10"},
|
||||||
|
#endif
|
||||||
#if VA_CHECK_VERSION(0,38,0)
|
#if VA_CHECK_VERSION(0,38,0)
|
||||||
{GST_VAAPI_PROFILE_VP9_0, VAProfileVP9Profile0,
|
{GST_VAAPI_PROFILE_VP9_0, VAProfileVP9Profile0,
|
||||||
"video/x-vp9", "profile0"},
|
"video/x-vp9", "profile0"},
|
||||||
|
@ -330,6 +334,8 @@ gst_vaapi_profile_from_codec_data_h265 (GstBuffer * buffer)
|
||||||
return GST_VAAPI_PROFILE_H265_MAIN10;
|
return GST_VAAPI_PROFILE_H265_MAIN10;
|
||||||
case 3:
|
case 3:
|
||||||
return GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE;
|
return GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE;
|
||||||
|
case 4:
|
||||||
|
return GST_VAAPI_PROFILE_H265_MAIN_422_10;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,8 @@ typedef enum {
|
||||||
* H.265 main 10 profile [A.3.3]
|
* H.265 main 10 profile [A.3.3]
|
||||||
* @GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE:
|
* @GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE:
|
||||||
* H.265 main still picture profile [A.3.4]
|
* H.265 main still picture profile [A.3.4]
|
||||||
|
* @GST_VAAPI_PROFILE_H265_MAIN_422_10:
|
||||||
|
* H.265 main still picture profile [A.3.5]
|
||||||
* @GST_VAAPI_PROFILE_VP9_0:
|
* @GST_VAAPI_PROFILE_VP9_0:
|
||||||
* VP9 prfile 0, bitdepth=8, 420
|
* VP9 prfile 0, bitdepth=8, 420
|
||||||
* @GST_VAAPI_PROFILE_VP9_1:
|
* @GST_VAAPI_PROFILE_VP9_1:
|
||||||
|
@ -175,6 +177,7 @@ typedef enum {
|
||||||
GST_VAAPI_PROFILE_H265_MAIN10 = GST_VAAPI_MAKE_PROFILE(H265,2),
|
GST_VAAPI_PROFILE_H265_MAIN10 = GST_VAAPI_MAKE_PROFILE(H265,2),
|
||||||
GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE =
|
GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE =
|
||||||
GST_VAAPI_MAKE_PROFILE(H265,3),
|
GST_VAAPI_MAKE_PROFILE(H265,3),
|
||||||
|
GST_VAAPI_PROFILE_H265_MAIN_422_10 = GST_VAAPI_MAKE_PROFILE(H265,4),
|
||||||
GST_VAAPI_PROFILE_VP9_0 = GST_VAAPI_MAKE_PROFILE(VP9,1),
|
GST_VAAPI_PROFILE_VP9_0 = GST_VAAPI_MAKE_PROFILE(VP9,1),
|
||||||
GST_VAAPI_PROFILE_VP9_1 = GST_VAAPI_MAKE_PROFILE(VP9,2),
|
GST_VAAPI_PROFILE_VP9_1 = GST_VAAPI_MAKE_PROFILE(VP9,2),
|
||||||
GST_VAAPI_PROFILE_VP9_2 = GST_VAAPI_MAKE_PROFILE(VP9,3),
|
GST_VAAPI_PROFILE_VP9_2 = GST_VAAPI_MAKE_PROFILE(VP9,3),
|
||||||
|
|
|
@ -340,6 +340,20 @@ gst_vaapi_surface_new (GstVaapiDisplay * display,
|
||||||
if (!surface)
|
if (!surface)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
/* first try a recent version of vaCreateSurface, and later use as
|
||||||
|
* fallback its old version */
|
||||||
|
#if VA_CHECK_VERSION(0,34,0)
|
||||||
|
{
|
||||||
|
GstVideoInfo vi;
|
||||||
|
GstVideoFormat surface_format;
|
||||||
|
|
||||||
|
surface_format = gst_vaapi_video_format_from_chroma (chroma_type);
|
||||||
|
gst_video_info_set_format (&vi, surface_format, width, height);
|
||||||
|
|
||||||
|
if (gst_vaapi_surface_create_full (surface, &vi, 0))
|
||||||
|
return surface;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (!gst_vaapi_surface_create (surface, chroma_type, width, height))
|
if (!gst_vaapi_surface_create (surface, chroma_type, width, height))
|
||||||
goto error;
|
goto error;
|
||||||
return surface;
|
return surface;
|
||||||
|
|
|
@ -228,6 +228,9 @@ string_of_VAProfile (VAProfile profile)
|
||||||
MAP (H264MultiviewHigh);
|
MAP (H264MultiviewHigh);
|
||||||
MAP (H264StereoHigh);
|
MAP (H264StereoHigh);
|
||||||
#endif
|
#endif
|
||||||
|
#if VA_CHECK_VERSION(1,2,0)
|
||||||
|
MAP (HEVCMain422_10);
|
||||||
|
#endif
|
||||||
#if VA_CHECK_VERSION(0,37,1)
|
#if VA_CHECK_VERSION(0,37,1)
|
||||||
MAP (HEVCMain);
|
MAP (HEVCMain);
|
||||||
MAP (HEVCMain10);
|
MAP (HEVCMain10);
|
||||||
|
|
|
@ -132,11 +132,11 @@ gst_vaapi_utils_h265_get_profile_score (GstVaapiProfile profile)
|
||||||
|
|
||||||
/** Returns GstVaapiProfile from H.265 profile_idc value */
|
/** Returns GstVaapiProfile from H.265 profile_idc value */
|
||||||
GstVaapiProfile
|
GstVaapiProfile
|
||||||
gst_vaapi_utils_h265_get_profile (guint8 profile_idc)
|
gst_vaapi_utils_h265_get_profile (GstH265SPS * sps)
|
||||||
{
|
{
|
||||||
GstVaapiProfile profile;
|
GstVaapiProfile profile;
|
||||||
|
|
||||||
switch (profile_idc) {
|
switch (sps->profile_tier_level.profile_idc) {
|
||||||
case GST_H265_PROFILE_IDC_MAIN:
|
case GST_H265_PROFILE_IDC_MAIN:
|
||||||
profile = GST_VAAPI_PROFILE_H265_MAIN;
|
profile = GST_VAAPI_PROFILE_H265_MAIN;
|
||||||
break;
|
break;
|
||||||
|
@ -146,6 +146,19 @@ gst_vaapi_utils_h265_get_profile (guint8 profile_idc)
|
||||||
case GST_H265_PROFILE_IDC_MAIN_STILL_PICTURE:
|
case GST_H265_PROFILE_IDC_MAIN_STILL_PICTURE:
|
||||||
profile = GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE;
|
profile = GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE;
|
||||||
break;
|
break;
|
||||||
|
case GST_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSION:
|
||||||
|
if (sps->profile_tier_level.max_12bit_constraint_flag == 1
|
||||||
|
&& sps->profile_tier_level.max_10bit_constraint_flag == 1
|
||||||
|
&& sps->profile_tier_level.max_8bit_constraint_flag == 0
|
||||||
|
&& sps->profile_tier_level.max_422chroma_constraint_flag == 1
|
||||||
|
&& sps->profile_tier_level.max_420chroma_constraint_flag == 0
|
||||||
|
&& sps->profile_tier_level.max_monochrome_constraint_flag == 0
|
||||||
|
&& sps->profile_tier_level.intra_constraint_flag == 0
|
||||||
|
&& sps->profile_tier_level.one_picture_only_constraint_flag == 0
|
||||||
|
&& sps->profile_tier_level.lower_bit_rate_constraint_flag == 1) {
|
||||||
|
profile = GST_VAAPI_PROFILE_H265_MAIN_422_10;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
g_debug ("unsupported profile_idc value");
|
g_debug ("unsupported profile_idc value");
|
||||||
profile = GST_VAAPI_PROFILE_UNKNOWN;
|
profile = GST_VAAPI_PROFILE_UNKNOWN;
|
||||||
|
@ -170,6 +183,9 @@ gst_vaapi_utils_h265_get_profile_idc (GstVaapiProfile profile)
|
||||||
case GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE:
|
case GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE:
|
||||||
profile_idc = GST_H265_PROFILE_MAIN_STILL_PICTURE;
|
profile_idc = GST_H265_PROFILE_MAIN_STILL_PICTURE;
|
||||||
break;
|
break;
|
||||||
|
case GST_VAAPI_PROFILE_H265_MAIN_422_10:
|
||||||
|
profile_idc = GST_H265_PROFILE_MAIN_422_10;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
g_debug ("unsupported GstVaapiProfile value");
|
g_debug ("unsupported GstVaapiProfile value");
|
||||||
profile_idc = 0;
|
profile_idc = 0;
|
||||||
|
|
|
@ -63,7 +63,7 @@ typedef struct {
|
||||||
/* Returns GstVaapiProfile from H.265 profile_idc value */
|
/* Returns GstVaapiProfile from H.265 profile_idc value */
|
||||||
G_GNUC_INTERNAL
|
G_GNUC_INTERNAL
|
||||||
GstVaapiProfile
|
GstVaapiProfile
|
||||||
gst_vaapi_utils_h265_get_profile (guint8 profile_idc);
|
gst_vaapi_utils_h265_get_profile (GstH265SPS * sps);
|
||||||
|
|
||||||
/* Returns H.265 profile_idc value from GstVaapiProfile */
|
/* Returns H.265 profile_idc value from GstVaapiProfile */
|
||||||
G_GNUC_INTERNAL
|
G_GNUC_INTERNAL
|
||||||
|
|
|
@ -274,6 +274,35 @@ gst_vaapi_video_format_get_score (GstVideoFormat format)
|
||||||
return m ? (m - &gst_vaapi_video_formats[0]) : G_MAXUINT;
|
return m ? (m - &gst_vaapi_video_formats[0]) : G_MAXUINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_vaapi_video_format_from_chroma:
|
||||||
|
* @chroma_type: a #GstVaapiChromaType
|
||||||
|
*
|
||||||
|
* Returns the "preferred" pixel format that matches with
|
||||||
|
* @chroma_type.
|
||||||
|
*
|
||||||
|
* Returns: the preferred pixel format for @chroma_type
|
||||||
|
**/
|
||||||
|
GstVideoFormat
|
||||||
|
gst_vaapi_video_format_from_chroma (guint chroma_type)
|
||||||
|
{
|
||||||
|
switch (chroma_type) {
|
||||||
|
case GST_VAAPI_CHROMA_TYPE_YUV422:
|
||||||
|
return GST_VIDEO_FORMAT_YUY2;
|
||||||
|
case GST_VAAPI_CHROMA_TYPE_YUV400:
|
||||||
|
return GST_VIDEO_FORMAT_GRAY8;
|
||||||
|
case GST_VAAPI_CHROMA_TYPE_YUV420:
|
||||||
|
case GST_VAAPI_CHROMA_TYPE_RGB32: /* GstVideoGLTextureUploadMeta */
|
||||||
|
return GST_VIDEO_FORMAT_NV12;
|
||||||
|
case GST_VAAPI_CHROMA_TYPE_YUV420_10BPP:
|
||||||
|
return GST_VIDEO_FORMAT_P010_10LE;
|
||||||
|
case GST_VAAPI_CHROMA_TYPE_YUV444:
|
||||||
|
return GST_VIDEO_FORMAT_AYUV;
|
||||||
|
default:
|
||||||
|
return GST_VIDEO_FORMAT_UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_vaapi_video_format_get_best_native:
|
* gst_vaapi_video_format_get_best_native:
|
||||||
* @format: a #GstVideoFormat
|
* @format: a #GstVideoFormat
|
||||||
|
@ -293,17 +322,5 @@ gst_vaapi_video_format_get_best_native (GstVideoFormat format)
|
||||||
return GST_VIDEO_FORMAT_NV12;
|
return GST_VIDEO_FORMAT_NV12;
|
||||||
|
|
||||||
chroma_type = gst_vaapi_video_format_get_chroma_type (format);
|
chroma_type = gst_vaapi_video_format_get_chroma_type (format);
|
||||||
switch (chroma_type) {
|
return gst_vaapi_video_format_from_chroma (chroma_type);
|
||||||
case GST_VAAPI_CHROMA_TYPE_YUV422:
|
|
||||||
return GST_VIDEO_FORMAT_YUY2;
|
|
||||||
case GST_VAAPI_CHROMA_TYPE_YUV400:
|
|
||||||
return GST_VIDEO_FORMAT_GRAY8;
|
|
||||||
case GST_VAAPI_CHROMA_TYPE_YUV420:
|
|
||||||
case GST_VAAPI_CHROMA_TYPE_RGB32: /* GstVideoGLTextureUploadMeta */
|
|
||||||
return GST_VIDEO_FORMAT_NV12;
|
|
||||||
case GST_VAAPI_CHROMA_TYPE_YUV420_10BPP:
|
|
||||||
return GST_VIDEO_FORMAT_P010_10LE;
|
|
||||||
default:
|
|
||||||
return GST_VIDEO_FORMAT_UNKNOWN;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,9 @@ gst_vaapi_video_format_get_chroma_type (GstVideoFormat format);
|
||||||
guint
|
guint
|
||||||
gst_vaapi_video_format_get_score (GstVideoFormat format);
|
gst_vaapi_video_format_get_score (GstVideoFormat format);
|
||||||
|
|
||||||
|
GstVideoFormat
|
||||||
|
gst_vaapi_video_format_from_chroma (guint chroma);
|
||||||
|
|
||||||
GstVideoFormat
|
GstVideoFormat
|
||||||
gst_vaapi_video_format_get_best_native (GstVideoFormat format);
|
gst_vaapi_video_format_get_best_native (GstVideoFormat format);
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ static const char gst_vaapidecode_src_caps_str[] =
|
||||||
#if (USE_GLX || USE_EGL)
|
#if (USE_GLX || USE_EGL)
|
||||||
GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS ";"
|
GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS ";"
|
||||||
#endif
|
#endif
|
||||||
GST_VIDEO_CAPS_MAKE("{ NV12, I420, YV12, P010_10LE }") ";"
|
GST_VIDEO_CAPS_MAKE("{ NV12, I420, YV12, YUY2, UYVY, P010_10LE }") ";"
|
||||||
GST_VAAPI_MAKE_DMABUF_CAPS;
|
GST_VAAPI_MAKE_DMABUF_CAPS;
|
||||||
|
|
||||||
static GstStaticPadTemplate gst_vaapidecode_src_factory =
|
static GstStaticPadTemplate gst_vaapidecode_src_factory =
|
||||||
|
|
|
@ -1253,51 +1253,70 @@ no_valid_gl_display:
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GArray *
|
||||||
|
extract_allowed_surface_formats (GstVaapiDisplay * display, GArray * formats)
|
||||||
|
{
|
||||||
|
guint i;
|
||||||
|
GArray *out_formats;
|
||||||
|
|
||||||
|
out_formats =
|
||||||
|
g_array_sized_new (FALSE, FALSE, sizeof (GstVideoFormat), formats->len);
|
||||||
|
if (!out_formats)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for (i = 0; i < formats->len; i++) {
|
||||||
|
const GstVideoFormat format = g_array_index (formats, GstVideoFormat, i);
|
||||||
|
GstVaapiChromaType chroma_type;
|
||||||
|
GstVaapiSurface *surface;
|
||||||
|
GstVaapiImage *image;
|
||||||
|
|
||||||
|
if (format == GST_VIDEO_FORMAT_UNKNOWN)
|
||||||
|
continue;
|
||||||
|
chroma_type = gst_vaapi_video_format_get_chroma_type (format);
|
||||||
|
if (chroma_type == 0)
|
||||||
|
continue;
|
||||||
|
surface = gst_vaapi_surface_new (display, chroma_type, 64, 64);
|
||||||
|
if (!surface)
|
||||||
|
continue;
|
||||||
|
image = gst_vaapi_image_new (display, format, 64, 64);
|
||||||
|
if (!image) {
|
||||||
|
gst_vaapi_object_unref (surface);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gst_vaapi_surface_put_image (surface, image))
|
||||||
|
g_array_append_val (out_formats, format);
|
||||||
|
|
||||||
|
gst_vaapi_object_unref (image);
|
||||||
|
gst_vaapi_object_unref (surface);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (out_formats->len == 0) {
|
||||||
|
g_array_unref (out_formats);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return out_formats;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
ensure_allowed_raw_caps (GstVaapiPluginBase * plugin)
|
ensure_allowed_raw_caps (GstVaapiPluginBase * plugin)
|
||||||
{
|
{
|
||||||
GArray *formats, *out_formats;
|
GArray *formats, *out_formats;
|
||||||
GstVaapiSurface *surface;
|
|
||||||
GstVaapiDisplay *display;
|
GstVaapiDisplay *display;
|
||||||
guint i;
|
|
||||||
GstCaps *out_caps;
|
GstCaps *out_caps;
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
if (plugin->allowed_raw_caps)
|
if (plugin->allowed_raw_caps)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
out_formats = formats = NULL;
|
out_formats = NULL;
|
||||||
surface = NULL;
|
|
||||||
|
|
||||||
display = gst_object_ref (plugin->display);
|
display = gst_object_ref (plugin->display);
|
||||||
formats = gst_vaapi_display_get_image_formats (display);
|
formats = gst_vaapi_display_get_image_formats (display);
|
||||||
if (!formats)
|
if (!formats)
|
||||||
goto bail;
|
goto bail;
|
||||||
|
out_formats = extract_allowed_surface_formats (display, formats);
|
||||||
out_formats =
|
|
||||||
g_array_sized_new (FALSE, FALSE, sizeof (GstVideoFormat), formats->len);
|
|
||||||
if (!out_formats)
|
if (!out_formats)
|
||||||
goto bail;
|
goto bail;
|
||||||
|
|
||||||
surface =
|
|
||||||
gst_vaapi_surface_new (display, GST_VAAPI_CHROMA_TYPE_YUV420, 64, 64);
|
|
||||||
if (!surface)
|
|
||||||
goto bail;
|
|
||||||
|
|
||||||
for (i = 0; i < formats->len; i++) {
|
|
||||||
const GstVideoFormat format = g_array_index (formats, GstVideoFormat, i);
|
|
||||||
GstVaapiImage *image;
|
|
||||||
|
|
||||||
if (format == GST_VIDEO_FORMAT_UNKNOWN)
|
|
||||||
continue;
|
|
||||||
image = gst_vaapi_image_new (display, format, 64, 64);
|
|
||||||
if (!image)
|
|
||||||
continue;
|
|
||||||
if (gst_vaapi_surface_put_image (surface, image))
|
|
||||||
g_array_append_val (out_formats, format);
|
|
||||||
gst_vaapi_object_unref (image);
|
|
||||||
}
|
|
||||||
|
|
||||||
out_caps = gst_vaapi_video_format_new_template_caps_from_list (out_formats);
|
out_caps = gst_vaapi_video_format_new_template_caps_from_list (out_formats);
|
||||||
if (!out_caps)
|
if (!out_caps)
|
||||||
goto bail;
|
goto bail;
|
||||||
|
@ -1311,8 +1330,6 @@ bail:
|
||||||
g_array_unref (formats);
|
g_array_unref (formats);
|
||||||
if (out_formats)
|
if (out_formats)
|
||||||
g_array_unref (out_formats);
|
g_array_unref (out_formats);
|
||||||
if (surface)
|
|
||||||
gst_vaapi_object_unref (surface);
|
|
||||||
gst_object_unref (display);
|
gst_object_unref (display);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -105,7 +105,7 @@ gst_vaapi_caps_feature_contains (const GstCaps * caps,
|
||||||
|
|
||||||
#define GST_VAAPI_MAKE_SURFACE_CAPS \
|
#define GST_VAAPI_MAKE_SURFACE_CAPS \
|
||||||
GST_VIDEO_CAPS_MAKE_WITH_FEATURES( \
|
GST_VIDEO_CAPS_MAKE_WITH_FEATURES( \
|
||||||
GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE, "{ ENCODED, NV12, I420, YV12, P010_10LE }")
|
GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE, "{ ENCODED, NV12, I420, YV12, YUY2, UYVY, P010_10LE }")
|
||||||
|
|
||||||
#define GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS \
|
#define GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS \
|
||||||
GST_VIDEO_CAPS_MAKE_WITH_FEATURES( \
|
GST_VIDEO_CAPS_MAKE_WITH_FEATURES( \
|
||||||
|
|
Loading…
Reference in a new issue