GST_VIDEO_INTERLACE_MODE_PROGRESSIVE));
}
-#if GST_CHECK_VERSION(1,5,0)
void
gst_vaapi_decoder_set_multiview_mode (GstVaapiDecoder * decoder,
gint views, GstVideoMultiviewMode mv_mode, GstVideoMultiviewFlags mv_flags)
notify_codec_state_changed (decoder);
}
}
-#endif
gboolean
gst_vaapi_decoder_ensure_context (GstVaapiDecoder * decoder,
priv->profile = profile;
}
-#if GST_CHECK_VERSION(1,5,0)
- /* Multiview flags only available in >= 1.5 */
if (reset_context) {
switch (num_views) {
case 1:
break;
}
}
-#endif
chroma_type = gst_vaapi_utils_h264_get_chroma_type(sps->chroma_format_idc);
if (!chroma_type) {
gst_vaapi_decoder_set_interlaced (GstVaapiDecoder * decoder,
gboolean interlaced);
-#if GST_CHECK_VERSION(1,5,0)
G_GNUC_INTERNAL
void
gst_vaapi_decoder_set_multiview_mode (GstVaapiDecoder * decoder,
gint views, GstVideoMultiviewMode mv_mode, GstVideoMultiviewFlags mv_flags);
-#endif
G_GNUC_INTERNAL
gboolean
encoder->config_changed = TRUE;
}
-#if GST_CHECK_VERSION(1,5,0)
/* Take number of MVC views from input caps if provided */
if (GST_VIDEO_INFO_MULTIVIEW_MODE (vip) == GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME ||
GST_VIDEO_INFO_MULTIVIEW_MODE (vip) == GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME)
encoder->num_views = GST_VIDEO_INFO_VIEWS (vip);
-#endif
encoder->is_mvc = encoder->num_views > 1;
"video/x-h264", "stereo-high"
},
#endif
-#if GST_CHECK_VERSION(1,5,0)
{ GST_VAAPI_PROFILE_VC1_SIMPLE, VAProfileVC1Simple,
"video/x-wmv, wmvversion=3", "simple"
},
{ GST_VAAPI_PROFILE_VC1_ADVANCED, VAProfileVC1Advanced,
"video/x-wmv, wmvversion=3, format=(string)WVC1", "advanced"
},
-#else
- { GST_VAAPI_PROFILE_VC1_SIMPLE, VAProfileVC1Simple,
- "video/x-wmv, wmvversion=3", NULL
- },
- { GST_VAAPI_PROFILE_VC1_MAIN, VAProfileVC1Main,
- "video/x-wmv, wmvversion=3", NULL
- },
- { GST_VAAPI_PROFILE_VC1_ADVANCED, VAProfileVC1Advanced,
- "video/x-wmv, wmvversion=3, format=(string)WVC1", NULL
- },
-#endif
#if VA_CHECK_VERSION(0,32,0)
{ GST_VAAPI_PROFILE_JPEG_BASELINE, VAProfileJPEGBaseline,
"image/jpeg", NULL
#include "gst/vaapi/sysdeps.h"
-#if !GST_CHECK_VERSION (1,5,0)
-static inline GstBuffer *
-gst_buffer_copy_deep (const GstBuffer * buffer)
-{
- GstBuffer *copy;
-
- g_return_val_if_fail (buffer != NULL, NULL);
-
- copy = gst_buffer_new ();
-
- if (!gst_buffer_copy_into (copy, (GstBuffer *) buffer,
- GST_BUFFER_COPY_ALL | GST_BUFFER_COPY_DEEP, 0, -1))
- gst_buffer_replace (©, NULL);
-
-#if GST_CHECK_VERSION (1,4,0)
- if (copy)
- GST_BUFFER_FLAG_UNSET (copy, GST_BUFFER_FLAG_TAG_MEMORY);
-#endif
-
- return copy;
-}
-#endif
-
#endif /* GST_COMPAT_H */
GST_RANK_PRIMARY, GST_TYPE_VAAPIENCODE_H265);
#endif
-#if GST_CHECK_VERSION(1,4,0)
gst_element_register (plugin, "vaapidecodebin",
GST_RANK_PRIMARY + 2, GST_TYPE_VAAPI_DECODE_BIN);
-#endif
return TRUE;
}
(GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, NULL);
break;
#endif
-#if GST_CHECK_VERSION(1,3,1)
case GST_VAAPI_CAPS_FEATURE_VAAPI_SURFACE:
features =
gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE, NULL);
break;
-#endif
default:
break;
}
}
GST_BUFFER_FLAG_SET (out_frame->output_buffer, out_flags);
-#if GST_CHECK_VERSION(1,5,0)
- /* First-in-bundle flag only appeared in 1.5 dev */
if (flags & GST_VAAPI_SURFACE_PROXY_FLAG_FFB) {
GST_BUFFER_FLAG_SET (out_frame->output_buffer,
GST_VIDEO_BUFFER_FLAG_FIRST_IN_BUNDLE);
}
-#endif
crop_rect = gst_vaapi_surface_proxy_get_crop_rect (proxy);
if (crop_rect) {
}
}
-#if GST_CHECK_VERSION(1,5,0)
static GstFlowReturn
gst_vaapidecode_drain (GstVideoDecoder * vdec)
{
return gst_vaapidecode_push_all_decoded_frames (decode);
}
-#endif
static gboolean
gst_vaapidecode_internal_flush (GstVideoDecoder * vdec)
vdec_class->parse = GST_DEBUG_FUNCPTR (gst_vaapidecode_parse);
vdec_class->handle_frame = GST_DEBUG_FUNCPTR (gst_vaapidecode_handle_frame);
vdec_class->finish = GST_DEBUG_FUNCPTR (gst_vaapidecode_finish);
-#if GST_CHECK_VERSION(1,5,0)
vdec_class->drain = GST_DEBUG_FUNCPTR (gst_vaapidecode_drain);
-#endif
vdec_class->decide_allocation =
GST_DEBUG_FUNCPTR (gst_vaapidecode_decide_allocation);
-#if GST_CHECK_VERSION(1,4,0)
vdec_class->src_query = GST_DEBUG_FUNCPTR (gst_vaapidecode_src_query);
vdec_class->sink_query = GST_DEBUG_FUNCPTR (gst_vaapidecode_sink_query);
-#endif
gst_element_class_set_static_metadata (element_class,
"VA-API decoder",
return gst_caps_ref (decode->allowed_caps);
}
-#if !GST_CHECK_VERSION(1,4,0)
-static gboolean
-gst_vaapidecode_query (GstPad * pad, GstObject * parent, GstQuery * query)
-{
- GstVaapiDecode *const decode =
- GST_VAAPIDECODE (gst_pad_get_parent_element (pad));
- GstVideoDecoder *const vdec = GST_VIDEO_DECODER (decode);
- gboolean res;
-
- GST_INFO_OBJECT (decode, "query type %s on %s pad",
- GST_QUERY_TYPE_NAME (query), GST_PAD_IS_SINK (pad) ? "sink" : "src");
-
- if (GST_PAD_IS_SINK (pad))
- res = gst_vaapidecode_sink_query (vdec, query);
- else
- res = gst_vaapidecode_src_query (vdec, query);
-
- gst_object_unref (vdec);
- return res;
-}
-#endif
-
static gboolean
gst_vaapidecode_sink_query (GstVideoDecoder * vdec, GstQuery * query)
{
break;
}
default:{
-#if GST_CHECK_VERSION(1,4,0)
ret = GST_VIDEO_DECODER_CLASS (gst_vaapidecode_parent_class)->sink_query
(vdec, query);
-#else
- GstPad *pad = GST_VIDEO_DECODER_SINK_PAD (vdec);
- GstObject *parent = gst_pad_get_parent (pad);
- ret = plugin->sinkpad_query (pad, parent, query);
- if (parent)
- gst_object_unref (parent);
-#endif
break;
}
}
break;
}
default:{
-#if GST_CHECK_VERSION(1,4,0)
ret = GST_VIDEO_DECODER_CLASS (gst_vaapidecode_parent_class)->src_query
(vdec, query);
-#else
- GstPad *pad = GST_VIDEO_DECODER_SRC_PAD (vdec);
- GstObject *parent = gst_pad_get_parent (pad);
- ret = plugin->srcpad_query (pad, parent, query);
- if (parent)
- gst_object_unref (parent);
-#endif
break;
}
}
g_cond_init (&decode->surface_ready);
gst_video_decoder_set_packetized (vdec, FALSE);
-
-#if !GST_CHECK_VERSION(1,4,0)
- /* Pad through which data comes in to the element */
- GstPad *pad = GST_VAAPI_PLUGIN_BASE_SINK_PAD (decode);
- gst_pad_set_query_function (pad, GST_DEBUG_FUNCPTR (gst_vaapidecode_query));
-
- /* Pad through which data goes out of the element */
- pad = GST_VAAPI_PLUGIN_BASE_SRC_PAD (decode);
- gst_pad_set_query_function (pad, GST_DEBUG_FUNCPTR (gst_vaapidecode_query));
-#endif
}
return gst_vaapi_plugin_base_ensure_display (GST_VAAPI_PLUGIN_BASE (encode));
}
-#if GST_CHECK_VERSION(1,4,0)
static gboolean
gst_vaapiencode_sink_query (GstVideoEncoder * encoder, GstQuery * query)
{
return ret;
}
-#else
-static gboolean
-gst_vaapiencode_query (GstPad * pad, GstObject * parent, GstQuery * query)
-{
- GstVaapiPluginBase *const plugin =
- GST_VAAPI_PLUGIN_BASE (gst_pad_get_parent_element (pad));
- gboolean success;
-
- GST_INFO_OBJECT (plugin, "query type %s", GST_QUERY_TYPE_NAME (query));
-
- if (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT)
- success = gst_vaapi_handle_context_query (query, plugin->display);
- else if (GST_PAD_IS_SINK (pad))
- success = plugin->sinkpad_query (plugin->sinkpad, parent, query);
- else
- success = plugin->srcpad_query (plugin->srcpad, parent, query);
-
- gst_object_unref (plugin);
- return success;
-}
-#endif
typedef struct
{
GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (encode);
gst_vaapi_plugin_base_init (GST_VAAPI_PLUGIN_BASE (encode), GST_CAT_DEFAULT);
-
-#if !GST_CHECK_VERSION(1,4,0)
- gst_pad_set_query_function (plugin->sinkpad, gst_vaapiencode_query);
- gst_pad_set_query_function (plugin->srcpad, gst_vaapiencode_query);
-#endif
gst_pad_use_fixed_caps (plugin->srcpad);
}
klass->set_property = gst_vaapiencode_default_set_property;
klass->alloc_buffer = gst_vaapiencode_default_alloc_buffer;
-#if GST_CHECK_VERSION(1,4,0)
venc_class->src_query = GST_DEBUG_FUNCPTR (gst_vaapiencode_src_query);
venc_class->sink_query = GST_DEBUG_FUNCPTR (gst_vaapiencode_sink_query);
-#else
- /* Registering debug symbols for function pointers */
- GST_DEBUG_REGISTER_FUNCPTR (gst_vaapiencode_query);
-#endif
}
static inline GPtrArray *
/* sink pad */
plugin->sinkpad = gst_element_get_static_pad (GST_ELEMENT (plugin), "sink");
gst_video_info_init (&plugin->sinkpad_info);
-#if !GST_CHECK_VERSION(1,4,0)
- plugin->sinkpad_query = GST_PAD_QUERYFUNC (plugin->sinkpad);
-#endif
/* src pad */
- if (!(GST_OBJECT_FLAGS (plugin) & GST_ELEMENT_FLAG_SINK)) {
+ if (!(GST_OBJECT_FLAGS (plugin) & GST_ELEMENT_FLAG_SINK))
plugin->srcpad = gst_element_get_static_pad (GST_ELEMENT (plugin), "src");
-#if !GST_CHECK_VERSION(1,4,0)
- plugin->srcpad_query = GST_PAD_QUERYFUNC (plugin->srcpad);
-#endif
- }
gst_video_info_init (&plugin->srcpad_info);
}
GstVideoInfo srcpad_info;
GstBufferPool *srcpad_buffer_pool;
-#if !GST_CHECK_VERSION(1,4,0)
- GstPadQueryFunction srcpad_query;
- GstPadQueryFunction sinkpad_query;
-#endif
-
GstVaapiDisplay *display;
GstVaapiDisplayType display_type;
GstVaapiDisplayType display_type_req;
GstCapsFeatures *const features = gst_caps_get_features (out_caps, i);
GstStructure *const structure = gst_caps_get_structure (out_caps, i);
-#if GST_CHECK_VERSION(1,3,0)
/* Skip ANY features, we need an exact match for correct evaluation */
if (gst_caps_features_is_any (features))
continue;
-#endif
caps = gst_caps_new_full (gst_structure_copy (structure), NULL);
if (!caps)
feature = GST_VAAPI_CAPS_FEATURE_SYSTEM_MEMORY;
gst_caps_replace (&caps, NULL);
-#if GST_CHECK_VERSION(1,3,0)
/* Stop at the first match, the caps should already be sorted out
by preference order from downstream elements */
if (feature != GST_VAAPI_CAPS_FEATURE_SYSTEM_MEMORY)
break;
-#endif
}
if (out_format_ptr) {
vip->fps_n = vi.fps_n;
vip->fps_d = vi.fps_d;
-#if GST_CHECK_VERSION(1,5,0)
GST_VIDEO_INFO_MULTIVIEW_MODE (vip) =
GST_VIDEO_INFO_MULTIVIEW_MODE (&vi);
GST_VIDEO_INFO_MULTIVIEW_FLAGS (vip) =
GST_VIDEO_INFO_MULTIVIEW_FLAGS (&vi);
-#endif
}
/**
/* *INDENT-OFF* */
static const char gst_vaapisink_sink_caps_str[] =
GST_VAAPI_MAKE_ENC_SURFACE_CAPS ";"
-#if GST_CHECK_VERSION(1,3,1)
GST_VIDEO_CAPS_MAKE_WITH_FEATURES (
GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE ","
GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION,
GST_VIDEO_CAPS_MAKE_WITH_FEATURES (
GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION,
GST_VIDEO_FORMATS_ALL) ";"
-#endif
GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL);
/* *INDENT-ON* */