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