mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-04 05:22:30 +00:00
plugins: initial port to GStreamer 1.2.
Port vaapidecode and vaapisink plugins to GStreamer API >= 1.2. This is rather minimalistic so that to test the basic functionality. Disable vaapipostproc plugin for now as further polishing is needed. Also disable GstVideoContext interface support since this API is now gone in 1.2.x. This is preparatory work for GstContext support. https://bugzilla.gnome.org/show_bug.cgi?id=703235 Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
This commit is contained in:
parent
d262d36623
commit
f75762d910
7 changed files with 70 additions and 10 deletions
24
configure.ac
24
configure.ac
|
@ -27,6 +27,9 @@ m4_define([gst0_plugins_bad_version], [0.10.22])
|
|||
m4_define([gst1_version], [1.0.0])
|
||||
m4_define([gst1_plugins_base_version], [1.0.0])
|
||||
m4_define([gst1_plugins_bad_version], [1.0.0])
|
||||
m4_define([gst12_version], [1.1.0])
|
||||
m4_define([gst12_plugins_base_version], [1.1.0])
|
||||
m4_define([gst12_plugins_bad_version], [1.1.0])
|
||||
|
||||
# Wayland minimum version number
|
||||
m4_define([wayland_api_version], [1.0.0])
|
||||
|
@ -158,6 +161,11 @@ case $GST_API_VERSION in
|
|||
GST_PLUGINS_BASE_VERSION_REQUIRED=gst1_plugins_base_version
|
||||
GST_PLUGINS_BAD_VERSION_REQUIRED=gst1_plugins_bad_version
|
||||
;;
|
||||
1.2)
|
||||
GST_VERSION_REQUIRED=gst12_version
|
||||
GST_PLUGINS_BASE_VERSION_REQUIRED=gst12_plugins_base_version
|
||||
GST_PLUGINS_BAD_VERSION_REQUIRED=gst12_plugins_bad_version
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([unsupported GStreamer API version $GST_API_VERSION])
|
||||
;;
|
||||
|
@ -169,12 +177,22 @@ AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
|
|||
|
||||
USE_GST_API_0_10="no"
|
||||
USE_GST_API_1_0p="no"
|
||||
USE_GST_API_1_2p="no"
|
||||
AS_VERSION_COMPARE([$GST_API_VERSION], [0.10],
|
||||
[], [USE_GST_API_0_10="yes"], [])
|
||||
AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
|
||||
[], [USE_GST_API_1_0p="yes"], [USE_GST_API_1_0p="yes"])
|
||||
AS_VERSION_COMPARE([$GST_API_VERSION], [1.2],
|
||||
[], [USE_GST_API_1_2p="yes"], [USE_GST_API_1_2p="yes"])
|
||||
AM_CONDITIONAL([USE_GST_API_0_10], [test "$USE_GST_API_0_10" = "yes"])
|
||||
AM_CONDITIONAL([USE_GST_API_1_0p], [test "$USE_GST_API_1_0p" = "yes"])
|
||||
AM_CONDITIONAL([USE_GST_API_1_2p], [test "$USE_GST_API_1_2p" = "yes"])
|
||||
|
||||
dnl XXX: GStreamer 1.2.x APIs don't have their own namespace yet
|
||||
GST_API_VERSION_ORIG=$GST_API_VERSION
|
||||
if test "$USE_GST_API_1_2p" = "yes"; then
|
||||
GST_API_VERSION="1.0"
|
||||
fi
|
||||
|
||||
dnl GStreamer Core
|
||||
PKG_CHECK_MODULES([GST],
|
||||
|
@ -288,9 +306,11 @@ AC_CACHE_CHECK([for GstVideoDecoder],
|
|||
AM_CONDITIONAL([USE_LOCAL_GST_VIDEO_DECODER],
|
||||
[test "$ac_cv_have_gst_video_decoder" != "yes"])
|
||||
|
||||
dnl GStreamer -bad plugins
|
||||
dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
|
||||
if test "$USE_GST_API_1_2p" != "yes"; then
|
||||
PKG_CHECK_MODULES([GST_BASEVIDEO],
|
||||
[gstreamer-basevideo-$GST_API_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
|
||||
fi
|
||||
|
||||
dnl ... bitstream parsers
|
||||
if test "$enable_builtin_codecparsers" = "yes"; then
|
||||
|
@ -759,7 +779,7 @@ AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
|
|||
echo
|
||||
echo $PACKAGE configuration summary:
|
||||
echo
|
||||
echo GStreamer API version ............ : $GST_API_VERSION
|
||||
echo GStreamer API version ............ : $GST_API_VERSION_ORIG
|
||||
echo VA-API version ................... : $VA_VERSION_STR
|
||||
echo Video outputs .................... : $VIDEO_OUTPUTS
|
||||
echo
|
||||
|
|
|
@ -33,7 +33,6 @@ libgstvaapi_source_c = \
|
|||
gstvaapi.c \
|
||||
gstvaapidecode.c \
|
||||
gstvaapipluginutil.c \
|
||||
gstvaapipostproc.c \
|
||||
gstvaapisink.c \
|
||||
gstvaapiuploader.c \
|
||||
gstvaapivideobuffer.c \
|
||||
|
@ -43,28 +42,36 @@ libgstvaapi_source_c = \
|
|||
libgstvaapi_source_h = \
|
||||
gstvaapidecode.h \
|
||||
gstvaapipluginutil.h \
|
||||
gstvaapipostproc.h \
|
||||
gstvaapisink.h \
|
||||
gstvaapiuploader.h \
|
||||
gstvaapivideobuffer.h \
|
||||
gstvaapivideometa.h \
|
||||
$(NULL)
|
||||
|
||||
if !USE_GST_API_1_2p
|
||||
libgstvaapi_source_c += gstvaapipostproc.c
|
||||
libgstvaapi_source_h += gstvaapipostproc.h
|
||||
endif
|
||||
|
||||
libgstvaapi_x11_source_c = gstvaapivideoconverter_x11.c
|
||||
libgstvaapi_x11_source_h = gstvaapivideoconverter_x11.h
|
||||
|
||||
if USE_X11
|
||||
if !USE_GST_API_1_2p
|
||||
libgstvaapi_source_c += $(libgstvaapi_x11_source_c)
|
||||
libgstvaapi_source_h += $(libgstvaapi_x11_source_h)
|
||||
endif
|
||||
endif
|
||||
|
||||
libgstvaapi_glx_source_c = gstvaapivideoconverter_glx.c
|
||||
libgstvaapi_glx_source_h = gstvaapivideoconverter_glx.h
|
||||
|
||||
if USE_GLX
|
||||
if !USE_GST_API_1_2p
|
||||
libgstvaapi_source_c += $(libgstvaapi_glx_source_c)
|
||||
libgstvaapi_source_h += $(libgstvaapi_glx_source_h)
|
||||
endif
|
||||
endif
|
||||
|
||||
libgstvaapi_1_0p_source_c = \
|
||||
gstvaapivideobufferpool.c \
|
||||
|
|
|
@ -47,9 +47,11 @@ plugin_init (GstPlugin *plugin)
|
|||
gst_element_register(plugin, "vaapidecode",
|
||||
GST_RANK_PRIMARY,
|
||||
GST_TYPE_VAAPIDECODE);
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
gst_element_register(plugin, "vaapipostproc",
|
||||
GST_RANK_PRIMARY,
|
||||
GST_TYPE_VAAPIPOSTPROC);
|
||||
#endif
|
||||
gst_element_register(plugin, "vaapisink",
|
||||
GST_RANK_PRIMARY,
|
||||
GST_TYPE_VAAPISINK);
|
||||
|
|
|
@ -30,7 +30,9 @@
|
|||
|
||||
#include "gst/vaapi/sysdeps.h"
|
||||
#include <gst/vaapi/gstvaapidisplay.h>
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
#include <gst/video/videocontext.h>
|
||||
#endif
|
||||
|
||||
#include "gstvaapidecode.h"
|
||||
#include "gstvaapipluginutil.h"
|
||||
|
@ -102,6 +104,7 @@ gst_vaapidecode_implements_iface_init(GstImplementsInterfaceClass *iface)
|
|||
#endif
|
||||
|
||||
/* GstVideoContext interface */
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
static void
|
||||
gst_vaapidecode_set_video_context(GstVideoContext *context, const gchar *type,
|
||||
const GValue *value)
|
||||
|
@ -117,6 +120,8 @@ gst_video_context_interface_init(GstVideoContextInterface *iface)
|
|||
}
|
||||
|
||||
#define GstVideoContextClass GstVideoContextInterface
|
||||
#endif
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE(
|
||||
GstVaapiDecode,
|
||||
gst_vaapidecode,
|
||||
|
@ -125,8 +130,11 @@ G_DEFINE_TYPE_WITH_CODE(
|
|||
G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
|
||||
gst_vaapidecode_implements_iface_init);
|
||||
#endif
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
|
||||
gst_video_context_interface_init))
|
||||
gst_video_context_interface_init)
|
||||
#endif
|
||||
)
|
||||
|
||||
static gboolean
|
||||
gst_vaapidecode_update_src_caps(GstVaapiDecode *decode,
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
*/
|
||||
|
||||
#include "gst/vaapi/sysdeps.h"
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
#include <gst/video/videocontext.h>
|
||||
#endif
|
||||
#if USE_DRM
|
||||
# include <gst/vaapi/gstvaapidisplay_drm.h>
|
||||
#endif
|
||||
|
@ -117,9 +119,11 @@ gst_vaapi_ensure_display(
|
|||
)
|
||||
{
|
||||
GstVaapiDisplay *display;
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
GstVideoContext *context;
|
||||
|
||||
g_return_val_if_fail(GST_IS_VIDEO_CONTEXT(element), FALSE);
|
||||
#endif
|
||||
g_return_val_if_fail(display_ptr != NULL, FALSE);
|
||||
|
||||
/* Already exist ? */
|
||||
|
@ -127,10 +131,12 @@ gst_vaapi_ensure_display(
|
|||
if (display)
|
||||
return TRUE;
|
||||
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
context = GST_VIDEO_CONTEXT(element);
|
||||
g_return_val_if_fail(context != NULL, FALSE);
|
||||
|
||||
gst_video_context_prepare(context, display_types);
|
||||
#endif
|
||||
|
||||
/* Neighbour found and it updated the display */
|
||||
if (*display_ptr)
|
||||
|
@ -217,6 +223,9 @@ gst_vaapi_set_display(
|
|||
gboolean
|
||||
gst_vaapi_reply_to_query(GstQuery *query, GstVaapiDisplay *display)
|
||||
{
|
||||
#if GST_CHECK_VERSION(1,1,0)
|
||||
return FALSE;
|
||||
#else
|
||||
GstVaapiDisplayType display_type;
|
||||
const gchar **types;
|
||||
const gchar *type;
|
||||
|
@ -305,6 +314,7 @@ gst_vaapi_reply_to_query(GstQuery *query, GstVaapiDisplay *display)
|
|||
}
|
||||
}
|
||||
return res;
|
||||
#endif /* !GST_CHECK_VERSION(1,1,0) */
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
|
|
@ -32,7 +32,10 @@
|
|||
#include "gst/vaapi/sysdeps.h"
|
||||
#include <gst/gst.h>
|
||||
#include <gst/video/video.h>
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
#include <gst/video/videocontext.h>
|
||||
#endif
|
||||
|
||||
#include <gst/vaapi/gstvaapivalue.h>
|
||||
#if USE_DRM
|
||||
# include <gst/vaapi/gstvaapidisplay_drm.h>
|
||||
|
@ -119,6 +122,7 @@ gst_vaapisink_implements_iface_init(GstImplementsInterfaceClass *iface)
|
|||
#endif
|
||||
|
||||
/* GstVideoContext interface */
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
static void
|
||||
gst_vaapisink_set_video_context(GstVideoContext *context, const gchar *type,
|
||||
const GValue *value)
|
||||
|
@ -132,6 +136,7 @@ gst_vaapisink_video_context_iface_init(GstVideoContextInterface *iface)
|
|||
{
|
||||
iface->set_context = gst_vaapisink_set_video_context;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
gst_vaapisink_video_overlay_iface_init(GstVideoOverlayInterface *iface);
|
||||
|
@ -144,8 +149,10 @@ G_DEFINE_TYPE_WITH_CODE(
|
|||
G_IMPLEMENT_INTERFACE(GST_TYPE_IMPLEMENTS_INTERFACE,
|
||||
gst_vaapisink_implements_iface_init);
|
||||
#endif
|
||||
#if !GST_CHECK_VERSION(1,1,0)
|
||||
G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_CONTEXT,
|
||||
gst_vaapisink_video_context_iface_init);
|
||||
#endif
|
||||
G_IMPLEMENT_INTERFACE(GST_TYPE_VIDEO_OVERLAY,
|
||||
gst_vaapisink_video_overlay_iface_init))
|
||||
|
||||
|
|
|
@ -27,14 +27,20 @@
|
|||
|
||||
#include "gst/vaapi/sysdeps.h"
|
||||
#include "gstvaapivideobuffer.h"
|
||||
#if USE_X11
|
||||
#if USE_X11 && !GST_CHECK_VERSION(1,1,0)
|
||||
# include "gstvaapivideoconverter_x11.h"
|
||||
#endif
|
||||
#if USE_GLX
|
||||
#if USE_GLX && !GST_CHECK_VERSION(1,1,0)
|
||||
# include "gstvaapivideoconverter_glx.h"
|
||||
#endif
|
||||
|
||||
#if GST_CHECK_VERSION(1,0,0)
|
||||
#if GST_CHECK_VERSION(1,1,0)
|
||||
static inline GstBuffer *
|
||||
gst_surface_buffer_new(void)
|
||||
{
|
||||
return gst_buffer_new();
|
||||
}
|
||||
#elif GST_CHECK_VERSION(1,0,0)
|
||||
#include <gst/video/gstsurfacemeta.h>
|
||||
|
||||
#define GST_VAAPI_SURFACE_META_CAST(obj) \
|
||||
|
@ -263,12 +269,12 @@ get_surface_converter(GstVaapiDisplay *display)
|
|||
GFunc func;
|
||||
|
||||
switch (gst_vaapi_display_get_display_type(display)) {
|
||||
#if USE_X11
|
||||
#if USE_X11 && !GST_CHECK_VERSION(1,1,0)
|
||||
case GST_VAAPI_DISPLAY_TYPE_X11:
|
||||
func = (GFunc)gst_vaapi_video_converter_x11_new;
|
||||
break;
|
||||
#endif
|
||||
#if USE_GLX
|
||||
#if USE_GLX && !GST_CHECK_VERSION(1,1,0)
|
||||
case GST_VAAPI_DISPLAY_TYPE_GLX:
|
||||
func = (GFunc)gst_vaapi_video_converter_glx_new;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue