mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 02:00:33 +00:00
vaapipostproc: fix construction of allowed sink pad caps.
Fix construction of the set of caps allowed on the sink pad to filter out unsupported raw video caps with GStreamer >= 1.2.
This commit is contained in:
parent
d82e6a8866
commit
913f2ef68c
1 changed files with 17 additions and 23 deletions
|
@ -46,14 +46,18 @@
|
||||||
GST_DEBUG_CATEGORY_STATIC(gst_debug_vaapipostproc);
|
GST_DEBUG_CATEGORY_STATIC(gst_debug_vaapipostproc);
|
||||||
#define GST_CAT_DEFAULT gst_debug_vaapipostproc
|
#define GST_CAT_DEFAULT gst_debug_vaapipostproc
|
||||||
|
|
||||||
|
#if GST_CHECK_VERSION(1,1,0)
|
||||||
|
# define GST_VAAPIPOSTPROC_SURFACE_CAPS \
|
||||||
|
GST_VIDEO_CAPS_MAKE_WITH_FEATURES( \
|
||||||
|
GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE, "{ ENCODED, NV12, I420, YV12 }")
|
||||||
|
#else
|
||||||
|
# define GST_VAAPIPOSTPROC_SURFACE_CAPS \
|
||||||
|
GST_VAAPI_SURFACE_CAPS
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Default templates */
|
/* Default templates */
|
||||||
static const char gst_vaapipostproc_sink_caps_str[] =
|
static const char gst_vaapipostproc_sink_caps_str[] =
|
||||||
#if GST_CHECK_VERSION(1,1,0)
|
GST_VAAPIPOSTPROC_SURFACE_CAPS ", "
|
||||||
GST_VIDEO_CAPS_MAKE_WITH_FEATURES(
|
|
||||||
GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE, "{ ENCODED, NV12, I420, YV12 }") ", "
|
|
||||||
#else
|
|
||||||
GST_VAAPI_SURFACE_CAPS ", "
|
|
||||||
#endif
|
|
||||||
GST_CAPS_INTERLACED_MODES "; "
|
GST_CAPS_INTERLACED_MODES "; "
|
||||||
#if GST_CHECK_VERSION(1,0,0)
|
#if GST_CHECK_VERSION(1,0,0)
|
||||||
GST_VIDEO_CAPS_MAKE(GST_VIDEO_FORMATS_ALL) ", "
|
GST_VIDEO_CAPS_MAKE(GST_VIDEO_FORMATS_ALL) ", "
|
||||||
|
@ -66,12 +70,7 @@ static const char gst_vaapipostproc_sink_caps_str[] =
|
||||||
GST_CAPS_INTERLACED_MODES;
|
GST_CAPS_INTERLACED_MODES;
|
||||||
|
|
||||||
static const char gst_vaapipostproc_src_caps_str[] =
|
static const char gst_vaapipostproc_src_caps_str[] =
|
||||||
#if GST_CHECK_VERSION(1,1,0)
|
GST_VAAPIPOSTPROC_SURFACE_CAPS ", "
|
||||||
GST_VIDEO_CAPS_MAKE_WITH_FEATURES(
|
|
||||||
GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE, "{ ENCODED, NV12, I420, YV12 }") ", "
|
|
||||||
#else
|
|
||||||
GST_VAAPI_SURFACE_CAPS ", "
|
|
||||||
#endif
|
|
||||||
GST_CAPS_INTERLACED_FALSE;
|
GST_CAPS_INTERLACED_FALSE;
|
||||||
|
|
||||||
static GstStaticPadTemplate gst_vaapipostproc_sink_factory =
|
static GstStaticPadTemplate gst_vaapipostproc_sink_factory =
|
||||||
|
@ -859,30 +858,25 @@ gst_vaapipostproc_update_src_caps(GstVaapiPostproc *postproc, GstCaps *caps,
|
||||||
static gboolean
|
static gboolean
|
||||||
ensure_allowed_sinkpad_caps(GstVaapiPostproc *postproc)
|
ensure_allowed_sinkpad_caps(GstVaapiPostproc *postproc)
|
||||||
{
|
{
|
||||||
GstCaps *out_caps, *yuv_caps;
|
GstCaps *out_caps, *raw_caps;
|
||||||
|
|
||||||
if (postproc->allowed_sinkpad_caps)
|
if (postproc->allowed_sinkpad_caps)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/* Create VA caps */
|
/* Create VA caps */
|
||||||
#if GST_CHECK_VERSION(1,1,0)
|
out_caps = gst_caps_from_string(GST_VAAPIPOSTPROC_SURFACE_CAPS ", "
|
||||||
out_caps = gst_static_pad_template_get_caps(
|
|
||||||
&gst_vaapipostproc_sink_factory);
|
|
||||||
#else
|
|
||||||
out_caps = gst_caps_from_string(GST_VAAPI_SURFACE_CAPS ", "
|
|
||||||
GST_CAPS_INTERLACED_MODES);
|
GST_CAPS_INTERLACED_MODES);
|
||||||
#endif
|
|
||||||
if (!out_caps) {
|
if (!out_caps) {
|
||||||
GST_ERROR("failed to create VA sink caps");
|
GST_ERROR("failed to create VA sink caps");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Append YUV caps */
|
/* Append raw video caps */
|
||||||
if (gst_vaapipostproc_ensure_uploader(postproc)) {
|
if (gst_vaapipostproc_ensure_uploader(postproc)) {
|
||||||
yuv_caps = GST_VAAPI_PLUGIN_BASE_UPLOADER_CAPS(postproc);
|
raw_caps = GST_VAAPI_PLUGIN_BASE_UPLOADER_CAPS(postproc);
|
||||||
if (yuv_caps) {
|
if (raw_caps) {
|
||||||
out_caps = gst_caps_make_writable(out_caps);
|
out_caps = gst_caps_make_writable(out_caps);
|
||||||
gst_caps_append(out_caps, gst_caps_copy(yuv_caps));
|
gst_caps_append(out_caps, gst_caps_copy(raw_caps));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
GST_WARNING("failed to create YUV sink caps");
|
GST_WARNING("failed to create YUV sink caps");
|
||||||
|
|
Loading…
Reference in a new issue