encoder: fix subclassing process.
[vaapi:gstreamer-vaapi.git] / configure.ac
1 # gstreamer-vaapi package version number
2 m4_define([gst_vaapi_major_version], [0])
3 m4_define([gst_vaapi_minor_version], [5])
4 m4_define([gst_vaapi_micro_version], [8])
5 m4_define([gst_vaapi_pre_version],   [1])
6 m4_define([gst_vaapi_version],
7           [gst_vaapi_major_version.gst_vaapi_minor_version.gst_vaapi_micro_version])
8 m4_if(gst_vaapi_pre_version, [0], [], [
9 m4_append([gst_vaapi_version], gst_vaapi_pre_version, [.pre])
10 ])
11
12 # gstreamer-vaapi library (libtool) version number
13 m4_define([gst_vaapi_lt_current],       [4])
14 m4_define([gst0_vaapi_lt_current_bias], [0])
15 m4_define([gst1_vaapi_lt_current_bias], [2])
16 m4_define([gst2_vaapi_lt_current_bias], [4])
17 m4_define([gst4_vaapi_lt_current_bias], [4])
18 m4_define([gst_vaapi_lt_revision],      [0])
19 m4_define([gst_vaapi_lt_age],           [0])
20
21 # glib version number
22 m4_define([glib_version], [2.28])
23
24 # gstreamer version number
25 m4_define([gst_api_version],            [autodetect])
26 m4_define([gst0_version],               [0.10.36])
27 m4_define([gst0_plugins_base_version],  [0.10.31])
28 m4_define([gst0_plugins_bad_version],   [0.10.22])
29 m4_define([gst1_version],               [1.0.0])
30 m4_define([gst1_plugins_base_version],  [1.0.0])
31 m4_define([gst1_plugins_bad_version],   [1.0.0])
32 m4_define([gst12_version],              [1.1.90])
33 m4_define([gst12_plugins_base_version], [1.1.0])
34 m4_define([gst12_plugins_bad_version],  [1.1.0])
35 m4_define([gst14_version],              [1.2.90])
36 m4_define([gst14_plugins_base_version], [1.3.0])
37 m4_define([gst14_plugins_bad_version],  [1.3.0])
38
39 # Wayland minimum version number
40 m4_define([wayland_api_version], [1.0.0])
41
42 # VA-API minimum version number
43 m4_define([va_api_version],     [0.30.4])
44 m4_define([va_api_enc_version], [0.34.0])
45 m4_define([va_api_drm_version], [0.33.0])
46 m4_define([va_api_x11_version], [0.31.0])
47 m4_define([va_api_glx_version], [0.32.0])
48 m4_define([va_api_wld_version], [0.33.0])
49
50 # libva package version number
51 m4_define([libva_enc_package_version], [1.2.0])
52 m4_define([libva_drm_package_version], [1.1.0])
53 m4_define([libva_x11_package_version], [1.0.3])
54 m4_define([libva_glx_package_version], [1.0.9])
55 m4_define([libva_wld_package_version], [1.1.0])
56
57 # gtk-doc version number
58 # XXX: introspection annotations require gtk-doc >= 1.12
59 m4_define([gtkdoc_version], [1.9])
60
61 AC_PREREQ([2.66])
62 AC_INIT([gst_vaapi], [gst_vaapi_version],
63     [gwenole.beauchesne@intel.com],
64     [gstreamer-vaapi])
65
66 AC_CONFIG_HEADERS([config.h])
67 AC_CONFIG_SRCDIR([Makefile.am])
68 AC_CONFIG_MACRO_DIR([m4])
69 AC_CONFIG_AUX_DIR([build-aux])
70
71 AC_CANONICAL_TARGET
72
73 AM_INIT_AUTOMAKE([1.11 tar-ustar no-dist-gzip dist-bzip2])
74
75 TODAY="`LC_ALL=C date +'%a, %d %b %Y %X %z'`"
76 AC_SUBST(TODAY)
77
78 LIBVA_PACKAGE_VERSION=libva_x11_package_version
79 AC_SUBST(LIBVA_PACKAGE_VERSION)
80
81 WAYLAND_API_VERSION=wayland_api_version
82 AC_SUBST(WAYLAND_API_VERSION)
83
84 dnl Use pretty build output with automake >= 1.11
85 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [
86   AM_DEFAULT_VERBOSITY=1
87   AC_SUBST(AM_DEFAULT_VERBOSITY)
88 ])
89
90 dnl Check for tools
91 AC_PROG_CC
92 AM_PROG_CC_C_O
93
94 AC_ARG_VAR([GIT], [Path to git program, if any])
95 AC_PATH_PROG([GIT], [git])
96 AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
97
98 dnl Initialize libtool
99 LT_PREREQ([2.2])
100 LT_INIT
101
102 AC_ARG_ENABLE(builtin_codecparsers,
103     AS_HELP_STRING([--enable-builtin-codecparsers],
104                    [enable built-in codecparsers @<:@default=yes@:>@]),
105     [], [enable_builtin_codecparsers="yes"])
106
107 AC_ARG_ENABLE([encoders],
108     AS_HELP_STRING([--enable-encoders],
109                    [enable video encoders @<:@default=yes@:>@]),
110     [], [enable_encoders="yes"])
111
112 AC_ARG_ENABLE(drm,
113     AS_HELP_STRING([--enable-drm],
114                    [enable DRM backend @<:@default=yes@:>@]),
115     [], [enable_drm="yes"])
116
117 AC_ARG_ENABLE(x11,
118     AS_HELP_STRING([--enable-x11],
119                    [enable X11 output @<:@default=yes@:>@]),
120     [], [enable_x11="yes"])
121
122 AC_ARG_ENABLE(glx,
123     AS_HELP_STRING([--enable-glx],
124                    [enable OpenGL/X11 output @<:@default=yes@:>@]),
125     [], [enable_glx="yes"])
126
127 AC_ARG_ENABLE(wayland,
128     AC_HELP_STRING([--enable-wayland],
129                    [enable Wayland output @<:@default=yes@:>@]),
130     [], [enable_wayland="yes"])
131
132 AC_ARG_WITH([gstreamer-api],
133     AC_HELP_STRING([--with-gstreamer-api=VERSION],
134                    [build against the specified GStreamer API version
135                     @<:@default=gst_api_version@:>@]),
136     [GST_API_VERSION="$with_gstreamer_api"], [GST_API_VERSION=gst_api_version])
137
138 dnl Check for basic libraries
139 AC_CHECK_LIB(m, tan)
140
141 dnl Check for Gtk doc
142 GTKDOC_VERSION=gtkdoc_version
143 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
144 m4_ifdef([GTK_DOC_CHECK], [
145 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
146 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
147 AC_SUBST(GTKDOC_VERSION)
148
149 dnl Check for GLib
150 GLIB_VERSION_REQUIRED=glib_version
151 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
152 AC_SUBST(GLIB_VERSION_REQUIRED)
153
154 dnl Check to see if dlopen is in default libraries (like Solaris, which
155 dnl has it in libc), or if libdl is needed to get it.
156 AC_CHECK_FUNC([dlopen], [], [
157     AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
158 AC_SUBST([DLOPEN_LIBS])
159
160 dnl ---------------------------------------------------------------------------
161 dnl -- GStreamer                                                             --
162 dnl ---------------------------------------------------------------------------
163
164 dnl If GStreamer API version is to be autodetected, then always try
165 dnl with the latest version first
166 AC_MSG_CHECKING([for GStreamer API version])
167 if test "$GST_API_VERSION" = "autodetect"; then
168     gst_pkg_versions="1.0 0.10"
169 else
170     AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
171         [gst_pkg_versions="0.10"], [gst_pkg_versions="1.0"],
172         dnl GStreamer 1.2.x APIs don't have their own namespace
173         [gst_pkg_versions="1.0"])
174 fi
175 for gst_pkg_version in ${gst_pkg_versions}; do
176     if $PKG_CONFIG --exists "gstreamer-$gst_pkg_version"; then
177         gst_version=`$PKG_CONFIG --modversion "gstreamer-$gst_pkg_version"`
178         gst_major_version=`echo "$gst_version" | cut -d'.' -f1`
179         gst_minor_version=`echo "$gst_version" | cut -d'.' -f2`
180         GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
181         GST_PKG_VERSION="$gst_pkg_version"
182         break
183     fi
184 done
185 if test -z "$GST_PKG_VERSION"; then
186     AC_MSG_ERROR([version $GST_API_VERSION not found])
187 fi
188 AC_MSG_RESULT([$GST_API_VERSION])
189
190 dnl Versions for GStreamer and plugins-base
191 case $GST_API_VERSION in
192 0.10)
193     GST_VERSION_REQUIRED=gst0_version
194     GST_PLUGINS_BASE_VERSION_REQUIRED=gst0_plugins_base_version
195     GST_PLUGINS_BAD_VERSION_REQUIRED=gst0_plugins_bad_version
196     ;;
197 1.0)
198     GST_VERSION_REQUIRED=gst1_version
199     GST_PLUGINS_BASE_VERSION_REQUIRED=gst1_plugins_base_version
200     GST_PLUGINS_BAD_VERSION_REQUIRED=gst1_plugins_bad_version
201     ;;
202 1.2)
203     GST_VERSION_REQUIRED=gst12_version
204     GST_PLUGINS_BASE_VERSION_REQUIRED=gst12_plugins_base_version
205     GST_PLUGINS_BAD_VERSION_REQUIRED=gst12_plugins_bad_version
206     ;;
207 1.3)
208     GST_VERSION_REQUIRED=gst14_version
209     GST_PLUGINS_BASE_VERSION_REQUIRED=gst14_plugins_base_version
210     GST_PLUGINS_BAD_VERSION_REQUIRED=gst14_plugins_bad_version
211     ;;
212 *)
213     AC_MSG_ERROR([unsupported GStreamer API version $GST_API_VERSION])
214     ;;
215 esac
216 AC_SUBST(GST_API_VERSION)
217 AC_SUBST(GST_VERSION_REQUIRED)
218 AC_SUBST(GST_PLUGINS_BASE_VERSION_REQUIRED)
219 AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
220
221 USE_GST_API_0_10="no"
222 USE_GST_API_1_0p="no"
223 USE_GST_API_1_2p="no"
224 AS_VERSION_COMPARE([$GST_API_VERSION], [0.10],
225     [], [USE_GST_API_0_10="yes"], [])
226 AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
227     [], [USE_GST_API_1_0p="yes"], [USE_GST_API_1_0p="yes"])
228 AS_VERSION_COMPARE([$GST_API_VERSION], [1.2],
229     [], [USE_GST_API_1_2p="yes"], [USE_GST_API_1_2p="yes"])
230 AM_CONDITIONAL([USE_GST_API_0_10], [test "$USE_GST_API_0_10" = "yes"])
231 AM_CONDITIONAL([USE_GST_API_1_0p], [test "$USE_GST_API_1_0p" = "yes"])
232 AM_CONDITIONAL([USE_GST_API_1_2p], [test "$USE_GST_API_1_2p" = "yes"])
233
234 dnl GStreamer 1.2.x APIs don't have their own namespace
235 GST_PKG_VERSION="$GST_API_VERSION"
236 if test "$USE_GST_API_1_2p" = "yes"; then
237     GST_PKG_VERSION="1.0"
238 fi
239 AC_SUBST([GST_PKG_VERSION])
240
241 dnl GStreamer Core
242 PKG_CHECK_MODULES([GST],
243     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
244 PKG_CHECK_MODULES([GST_BASE],
245     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
246
247 AC_CACHE_CHECK([for GstBaseSink::query hook], ac_cv_have_gst_base_sink_query, [
248     saved_CPPFLAGS="$CPPFLAGS"
249     CPPFLAGS="$CPPFLAGS $GST_BASE_CFLAGS"
250     saved_LIBS="$LIBS"
251     LIBS="$LIBS $GST_BASE_LIBS"
252     AC_COMPILE_IFELSE(
253         [AC_LANG_PROGRAM(
254             [[#include <gst/base/gstbasesink.h>]],
255             [[GstBaseSinkClass klass; klass.query = NULL;]])],
256         [ac_cv_have_gst_base_sink_query="yes"],
257         [ac_cv_have_gst_base_sink_query="no"]
258     )
259     CPPFLAGS="$saved_CPPFLAGS"
260     LIBS="$saved_LIBS"
261 ])
262 if test "$ac_cv_have_gst_base_sink_query" != "yes"; then
263     AC_MSG_ERROR([GstBaseSink does not contain the 'query' vfunc])
264 fi
265
266 dnl GStreamer -base plugins
267 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
268     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
269 if test "$GST_API_VERSION" = "0.10"; then
270 PKG_CHECK_MODULES([GST_INTERFACES],
271     [gstreamer-interfaces-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
272 fi
273
274 dnl ... GstVideoOverlayComposition (gstreamer-video)
275 PKG_CHECK_MODULES([GST_VIDEO],
276     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
277
278 AC_CACHE_CHECK([for GstVideoOverlayComposition],
279     ac_cv_have_gst_video_overlay_composition, [
280     saved_CPPFLAGS="$CPPFLAGS"
281     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
282     saved_LIBS="$LIBS"
283     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
284     AC_COMPILE_IFELSE(
285         [AC_LANG_PROGRAM(
286             [[#include <gst/video/video-overlay-composition.h>]],
287             [[GstVideoOverlayComposition *c;
288               c = gst_video_overlay_composition_new(0);]])],
289         [ac_cv_have_gst_video_overlay_composition="yes"],
290         [ac_cv_have_gst_video_overlay_composition="no"]
291     )
292     CPPFLAGS="$saved_CPPFLAGS"
293     LIBS="$saved_LIBS"
294 ])
295 if test "$ac_cv_have_gst_video_overlay_composition" != "yes"; then
296     AC_MSG_ERROR([GstVideoOverlayComposition is not available])
297 fi
298
299 AC_CACHE_CHECK([... with advanced format flags],
300     ac_cv_have_gst_video_overlay_hwcaps, [
301     saved_CPPFLAGS="$CPPFLAGS"
302     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
303     saved_LIBS="$LIBS"
304     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
305     AC_COMPILE_IFELSE(
306         [AC_LANG_PROGRAM(
307             [[#include <gst/video/video-overlay-composition.h>]],
308             [[GstVideoOverlayRectangle *rect;
309               const guint w = 64, h = 64;
310               guint flags = (
311                   GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA|
312                   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA);
313               rect = gst_video_overlay_rectangle_new_argb(NULL, w, h, w * 4,
314                   0, 0, w, h, flags);
315               gst_video_overlay_rectangle_set_global_alpha(rect, 0.5f);]])],
316         [ac_cv_have_gst_video_overlay_hwcaps="yes"],
317         [ac_cv_have_gst_video_overlay_hwcaps="no"]
318     )
319     CPPFLAGS="$saved_CPPFLAGS"
320     LIBS="$saved_LIBS"
321 ])
322 if test "$ac_cv_have_gst_video_overlay_hwcaps" = "yes"; then
323     AC_DEFINE_UNQUOTED([HAVE_GST_VIDEO_OVERLAY_HWCAPS], 1,
324         [Defined to 1 if GstVideoOverlayComposition API supports HW hints.])
325 fi
326
327 dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
328 if test "$USE_GST_API_1_2p" != "yes"; then
329 PKG_CHECK_MODULES([GST_BASEVIDEO],
330     [gstreamer-basevideo-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
331 fi
332
333 dnl ... bitstream parsers
334 if test "$enable_builtin_codecparsers" = "yes"; then
335     ac_cv_have_gst_mpeg2_parser="no"
336     ac_cv_have_gst_h264_parser="no"
337     ac_cv_have_gst_jpeg_parser="no"
338 else
339 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
340     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
341 fi
342
343 dnl ... MPEG-2 parser, with the required extensions
344 AC_CACHE_CHECK([for MPEG-2 parser],
345     ac_cv_have_gst_mpeg2_parser, [
346     saved_CPPFLAGS="$CPPFLAGS"
347     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
348     saved_LIBS="$LIBS"
349     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
350     AC_COMPILE_IFELSE(
351         [AC_LANG_PROGRAM(
352             [[#include <gst/codecparsers/gstmpegvideoparser.h>]],
353             [[GstMpegVideoSequenceHdr seq_hdr;
354               GstMpegVideoSequenceExt seq_ext;
355               GstMpegVideoSequenceDisplayExt seq_dpy;
356               GstMpegVideoSliceHdr slice_hdr;
357               GstMpegVideoPacket packet;
358               gst_mpeg_video_packet_parse_slice_header(&packet, &slice_hdr,
359                   &seq_hdr, NULL);
360               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
361                   &seq_ext, &seq_dpy);]])],
362         [ac_cv_have_gst_mpeg2_parser="yes"],
363         [ac_cv_have_gst_mpeg2_parser="no"]
364     )
365     CPPFLAGS="$saved_CPPFLAGS"
366     LIBS="$saved_LIBS"
367 ])
368 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
369     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
370
371 dnl ... H.264 parser, with the required extensions
372 AC_CACHE_CHECK([for H.264 parser],
373     ac_cv_have_gst_h264_parser, [
374     saved_CPPFLAGS="$CPPFLAGS"
375     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
376     saved_LIBS="$LIBS"
377     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
378     AC_COMPILE_IFELSE(
379         [AC_LANG_PROGRAM(
380             [[#include <gst/codecparsers/gsth264parser.h>]],
381             [[GstH264SliceHdr slice_hdr;
382               GstH264VUIParams vui_params;
383               GstH264Profile profile = GST_H264_PROFILE_HIGH;
384               slice_hdr.n_emulation_prevention_bytes = 0;
385               vui_params.par_n = 0;
386               vui_params.par_d = 0;]])],
387         [ac_cv_have_gst_h264_parser="yes"],
388         [ac_cv_have_gst_h264_parser="no"]
389     )
390     CPPFLAGS="$saved_CPPFLAGS"
391     LIBS="$saved_LIBS"
392 ])
393 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
394     [test "$ac_cv_have_gst_h264_parser" != "yes"])
395
396 dnl ... JPEG parser, not upstream yet
397 AC_CACHE_CHECK([for JPEG parser],
398     ac_cv_have_gst_jpeg_parser, [
399     saved_CPPFLAGS="$CPPFLAGS"
400     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
401     saved_LIBS="$LIBS"
402     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
403     AC_COMPILE_IFELSE(
404         [AC_LANG_PROGRAM(
405             [[#include <gst/codecparsers/gstjpegparser.h>]],
406             [[GstJpegImage jpeg_image;]])],
407         [ac_cv_have_gst_jpeg_parser="yes"],
408         [ac_cv_have_gst_jpeg_parser="no"]
409     )
410     CPPFLAGS="$saved_CPPFLAGS"
411     LIBS="$saved_LIBS"
412 ])
413 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
414     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
415
416 case $GST_API_VERSION in
417 0.10)   lt_bias=gst0_vaapi_lt_current_bias;;
418 1.0)    lt_bias=gst1_vaapi_lt_current_bias;;
419 1.2)    lt_bias=gst2_vaapi_lt_current_bias;;
420 1.3)    lt_bias=gst4_vaapi_lt_current_bias;;
421 esac
422 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
423 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
424
425 dnl GST_VAAPI_LT_LDFLAGS:
426 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
427 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
428 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
429 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
430 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
431 AC_SUBST(GST_VAAPI_LT_VERSION)
432 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
433
434 dnl GST_ALL_LDFLAGS:
435 dnl LDFLAGS really should only contain flags, not libs - they get added before
436 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
437 GST_ALL_LDFLAGS="-no-undefined"
438 AC_SUBST(GST_ALL_LDFLAGS)
439
440 dnl GST_PLUGIN_LDFLAGS:
441 dnl this really should only contain flags, not libs - they get added before
442 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
443 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
444 AC_SUBST(GST_PLUGIN_LDFLAGS)
445
446 dnl Check for the GStreamer plugins directory
447 AC_ARG_VAR([GST_PLUGIN_PATH], [installation path for gstreamer-vaapi plugin elements for GStreamer 0.10])
448 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
449 AC_MSG_CHECKING([for GStreamer plugins directory])
450 case $GST_API_VERSION in
451 0.10)   _gst_plugin_path="$GST_PLUGIN_PATH";;
452 1.0)    _gst_plugin_path="$GST_PLUGIN_PATH_1_0";;
453 1.2)    _gst_plugin_path="$GST_PLUGIN_PATH_1_0";;
454 esac
455 if test -d "$_gst_plugin_path"; then
456     GST_PLUGINS_DIR="$_gst_plugin_path"
457 else
458     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
459     if test -z "$GST_PLUGINS_DIR"; then
460         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
461     fi
462 fi
463 AC_MSG_RESULT([$GST_PLUGINS_DIR])
464 plugindir="$GST_PLUGINS_DIR"
465 AC_SUBST(plugindir)
466
467 dnl ---------------------------------------------------------------------------
468 dnl -- Renderers                                                             --
469 dnl ---------------------------------------------------------------------------
470
471 dnl Check for DRM/libudev
472 USE_DRM=0
473 if test "$enable_drm" = "yes"; then
474     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
475     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
476
477     if test $USE_DRM -eq 1; then
478         saved_CPPFLAGS="$CPPFLAGS"
479         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
480         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
481         CPPFLAGS="$saved_CPPFLAGS"
482     fi
483 fi
484
485 dnl Check for X11
486 USE_X11=0
487 if test "$enable_x11" = "yes"; then
488     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
489     if test $USE_X11 -eq 1; then
490         saved_CPPFLAGS="$CPPFLAGS"
491         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
492         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
493         CPPFLAGS="$saved_CPPFLAGS"
494     fi
495 fi
496
497 dnl Check for XRandR
498 HAVE_XRANDR=0
499 if test $USE_X11 -eq 1; then
500     HAVE_XRANDR=1
501     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
502     if test $HAVE_XRANDR -eq 1; then
503         saved_CPPFLAGS="$CPPFLAGS"
504         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
505         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
506         CPPFLAGS="$saved_CPPFLAGS"
507     fi
508 fi
509 if test $HAVE_XRANDR -eq 1; then
510     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
511         [Defined to 1 if the XRandR extension exists.])
512 fi
513
514 dnl Check for XRender
515 HAVE_XRENDER=0
516 if test $USE_X11 -eq 1; then
517     HAVE_XRENDER=1
518     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
519     if test $HAVE_XRENDER -eq 1; then
520         saved_CPPFLAGS="$CPPFLAGS"
521         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
522         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
523         CPPFLAGS="$saved_CPPFLAGS"
524     fi
525 fi
526 if test $HAVE_XRENDER -eq 1; then
527     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
528         [Defined to 1 if the XRender extension exists.])
529 fi
530
531 dnl OpenGL
532 enable_opengl="no"
533 if test "$enable_glx" = "yes"; then
534     enable_opengl="yes"
535 fi
536
537 HAVE_GL=0
538 if test "$enable_opengl" = "yes"; then
539     HAVE_GL=1
540     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
541     saved_CPPFLAGS="$CPPFLAGS"
542     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
543     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
544 #ifdef HAVE_GL_GL_H
545 # include <GL/gl.h>
546 #endif
547     ])
548     CPPFLAGS="$saved_CPPFLAGS"
549 fi
550
551 dnl ... GLX
552 USE_GLX=0
553 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
554     USE_GLX=1
555     saved_CPPFLAGS="$CPPFLAGS"
556     saved_LIBS="$LIBS"
557     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
558     LIBS="$LIBS $GL_LIBS"
559     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
560 #ifdef HAVE_GL_GL_H
561 # include <GL/gl.h>
562 #endif
563     ])
564     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
565     CPPFLAGS="$saved_CPPFLAGS"
566     LIBS="$saved_LIBS"
567 fi
568
569 dnl Check for Wayland
570 USE_WAYLAND=0
571 if test "$enable_wayland" = "yes"; then
572     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
573         [USE_WAYLAND=1], [USE_WAYLAND=0])
574
575     if test $USE_WAYLAND -eq 1; then
576         saved_CPPFLAGS="$CPPFLAGS"
577         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
578         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
579         CPPFLAGS="$saved_CPPFLAGS"
580     fi
581 fi
582
583 dnl ---------------------------------------------------------------------------
584 dnl -- VA-API                                                                --
585 dnl ---------------------------------------------------------------------------
586
587 dnl Core API
588 LIBVA_PKGNAME="libva"
589 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
590 AC_SUBST(LIBVA_PKGNAME)
591
592 VA_VERSION=`$PKG_CONFIG --modversion libva`
593 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
594 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
595 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
596 VA_VERSION_STR="$VA_VERSION"
597
598 dnl VA/DRM API
599 HAVE_VA_DRM=0
600 if test $USE_DRM -eq 1; then
601     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
602         [HAVE_VA_DRM=1], [USE_DRM=0])
603
604     if test $HAVE_VA_DRM -eq 1; then
605         saved_CPPFLAGS="$CPPFLAGS"
606         CPPFLAGS="$LIBVA_DRM_CFLAGS"
607         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
608         CPPFLAGS="$saved_CPPFLAGS"
609     fi
610 fi
611
612 dnl VA/X11 API
613 HAVE_VA_X11=0
614 LIBVA_X11_PKGNAME="libva-x11"
615 if test $USE_X11 -eq 1; then
616     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
617         [HAVE_VA_X11=1], [USE_X11=0])
618 fi
619 AC_SUBST(LIBVA_X11_PKGNAME)
620
621 dnl VA/GLX API
622 HAVE_VA_GLX=0
623 LIBVA_GLX_PKGNAME="libva-glx"
624 if test $USE_GLX -eq 1; then
625     PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME >= va_api_glx_version],
626         [HAVE_VA_GLX=1], [LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"])
627
628     if test $HAVE_VA_GLX -eq 1; then
629         saved_CPPFLAGS="$CPPFLAGS"
630         CPPFLAGS="$LIBVA_GLX_CFLAGS"
631         AC_CHECK_HEADERS([va/va_glx.h], [:], [HAVE_VA_GLX=0])
632         CPPFLAGS="$saved_CPPFLAGS"
633     fi
634 fi
635 AC_SUBST(LIBVA_GLX_PKGNAME)
636
637 dnl Check for va_dec_jpeg.h header
638 saved_CPPFLAGS="$CPPFLAGS"
639 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
640 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
641 CPPFLAGS="$saved_CPPFLAGS"
642
643 dnl Check for JPEG decoding API (0.32.1+)
644 USE_JPEG_DECODER=0
645 AC_CACHE_CHECK([for JPEG decoding API],
646     ac_cv_have_jpeg_decoding_api, [
647     saved_CPPFLAGS="$CPPFLAGS"
648     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
649     saved_LIBS="$LIBS"
650     LIBS="$LIBS $LIBVA_LIBS"
651     AC_COMPILE_IFELSE(
652         [AC_LANG_PROGRAM(
653             [[#include <va/va.h>
654               #ifdef HAVE_VA_VA_DEC_JPEG_H
655               #include <va/va_dec_jpeg.h>
656               #endif
657             ]],
658             [[VAPictureParameterBufferJPEGBaseline pic_param;
659               VASliceParameterBufferJPEGBaseline slice_param;
660               VAHuffmanTableBufferJPEGBaseline huffman_table;
661               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
662         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
663         [ac_cv_have_jpeg_decoding_api="no"]
664     )
665     CPPFLAGS="$saved_CPPFLAGS"
666     LIBS="$saved_LIBS"
667 ])
668
669 dnl Check for vpp (video post-processing) support
670 USE_VA_VPP=0
671 AC_CACHE_CHECK([for video post-postprocessing API],
672     ac_cv_have_va_vpp_api, [
673     saved_CPPFLAGS="$CPPFLAGS"
674     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
675     saved_LIBS="$LIBS"
676     LIBS="$LIBS $LIBVA_LIBS"
677     AC_COMPILE_IFELSE(
678         [AC_LANG_PROGRAM(
679             [[#include <va/va.h>
680               #include <va/va_vpp.h>]],
681             [[VADisplay va_dpy;
682               VAContextID vpp_ctx;
683               VAProcFilterType filters[VAProcFilterCount];
684               unsigned int num_filters = VAProcFilterCount;
685               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
686               ]])],
687         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
688         [ac_cv_have_va_vpp_api="no"]
689     )
690     CPPFLAGS="$saved_CPPFLAGS"
691     LIBS="$saved_LIBS"
692 ])
693
694 dnl Check for encoding support
695 USE_ENCODERS=0
696 if test "$enable_encoders" = "yes"; then
697     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
698         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
699
700     if test $HAVE_VA_ENC -eq 1; then
701         saved_CPPFLAGS="$CPPFLAGS"
702         CPPFLAGS="$LIBVA_CFLAGS"
703         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
704             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
705             [#include <va/va.h>
706             ])
707         CPPFLAGS="$saved_CPPFLAGS"
708     fi
709 fi
710
711 dnl VA/Wayland API
712 if test "$enable_wayland" = "yes"; then
713     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
714         [:], [USE_WAYLAND=0])
715 fi
716
717 dnl ---------------------------------------------------------------------------
718 dnl -- Generate files and summary                                            --
719 dnl ---------------------------------------------------------------------------
720
721 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
722 *:1:*)
723     ;;
724 *)
725     AC_MSG_ERROR([No renderer is enabled])
726     ;;
727 esac
728
729 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
730     [Defined to 1 if video encoders are used])
731 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
732
733 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
734     [Defined to 1 if video post-processing is used])
735 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
736
737 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
738     [Defined to 1 if JPEG decoder is used])
739 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
740
741 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
742     [Defined to 1 if DRM is enabled])
743 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
744
745 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
746     [Defined to 1 if X11 is enabled])
747 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
748
749 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
750     [Defined to 1 if GLX is enabled])
751 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
752
753 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
754     [Defined to 1 if WAYLAND is enabled])
755 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
756
757 pkgconfigdir=${libdir}/pkgconfig
758 AC_SUBST(pkgconfigdir)
759
760 AC_CONFIG_FILES([
761     Makefile
762     debian.upstream/Makefile
763     debian.upstream/changelog
764     debian.upstream/control
765     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
766 debian.upstream/gstreamer-vaapi-doc.install.in
767     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
768 debian.upstream/gstreamer-vaapi.install.in
769     debian.upstream/libgstvaapi$GST_API_VERSION-dev.install:\
770 debian.upstream/libgstvaapi-dev.install.in
771     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
772 debian.upstream/libgstvaapi.install.in
773     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
774 debian.upstream/libgstvaapi-drm.install.in
775     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
776 debian.upstream/libgstvaapi-glx.install.in
777     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
778 debian.upstream/libgstvaapi-wayland.install.in
779     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
780 debian.upstream/libgstvaapi-x11.install.in
781     docs/Makefile
782     docs/reference/Makefile
783     docs/reference/libs/Makefile
784     docs/reference/libs/libs-docs.xml
785     docs/reference/plugins/Makefile
786     docs/reference/plugins/plugins-docs.xml
787     ext/Makefile
788     gst-libs/Makefile
789     gst-libs/gst/Makefile
790     gst-libs/gst/base/Makefile
791     gst-libs/gst/codecparsers/Makefile
792     gst-libs/gst/vaapi/Makefile
793     gst-libs/gst/video/Makefile
794     gst/Makefile
795     gst/vaapi/Makefile
796     pkgconfig/Makefile
797     pkgconfig/gstreamer-vaapi-$GST_API_VERSION.pc:\
798 pkgconfig/gstreamer-vaapi.pc.in
799     pkgconfig/gstreamer-vaapi-drm-$GST_API_VERSION.pc:\
800 pkgconfig/gstreamer-vaapi-drm.pc.in
801     pkgconfig/gstreamer-vaapi-glx-$GST_API_VERSION.pc:\
802 pkgconfig/gstreamer-vaapi-glx.pc.in
803     pkgconfig/gstreamer-vaapi-wayland-$GST_API_VERSION.pc:\
804 pkgconfig/gstreamer-vaapi-wayland.pc.in
805     pkgconfig/gstreamer-vaapi-x11-$GST_API_VERSION.pc:\
806 pkgconfig/gstreamer-vaapi-x11.pc.in
807     tests/Makefile
808 ])
809 AC_OUTPUT
810
811 dnl Print summary
812 yesno() {
813     test $1 -eq 1 && echo yes || echo no
814 }
815
816 VIDEO_OUTPUTS=""
817 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
818 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
819 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
820 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
821
822 echo
823 echo $PACKAGE configuration summary:
824 echo
825 echo GStreamer API version ............ : $GST_API_VERSION
826 echo VA-API version ................... : $VA_VERSION_STR
827 echo Video encoding ................... : $(yesno $USE_ENCODERS)
828 echo Video outputs .................... : $VIDEO_OUTPUTS
829 echo