tests: image: add support for packed YUV formats.
[vaapi:sree-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 VA/Wayland API
619 if test "$enable_wayland" = "yes"; then
620     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
621         [:], [USE_WAYLAND=0])
622 fi
623
624 dnl ---------------------------------------------------------------------------
625 dnl -- Generate files and summary                                            --
626 dnl ---------------------------------------------------------------------------
627
628 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
629 *:1:*)
630     ;;
631 *)
632     AC_MSG_ERROR([No renderer is enabled])
633     ;;
634 esac
635
636 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
637     [Defined to 1 if JPEG decoder is used])
638 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
639
640 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
641     [Defined to 1 if DRM is enabled])
642 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
643
644 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
645     [Defined to 1 if X11 is enabled])
646 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
647
648 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
649     [Defined to 1 if GLX is enabled])
650 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
651
652 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
653     [Defined to 1 if WAYLAND is enabled])
654 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
655
656 pkgconfigdir=${libdir}/pkgconfig
657 AC_SUBST(pkgconfigdir)
658
659 AC_CONFIG_FILES([
660     Makefile
661     debian.upstream/Makefile
662     debian.upstream/changelog
663     debian.upstream/control
664     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
665 debian.upstream/gstreamer-vaapi-doc.install.in
666     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
667 debian.upstream/gstreamer-vaapi.install.in
668     debian.upstream/libgstvaapi$GST_API_VERSION-dev.install:\
669 debian.upstream/libgstvaapi-dev.install.in
670     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
671 debian.upstream/libgstvaapi.install.in
672     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
673 debian.upstream/libgstvaapi-drm.install.in
674     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
675 debian.upstream/libgstvaapi-glx.install.in
676     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
677 debian.upstream/libgstvaapi-wayland.install.in
678     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
679 debian.upstream/libgstvaapi-x11.install.in
680     docs/Makefile
681     docs/reference/Makefile
682     docs/reference/libs/Makefile
683     docs/reference/libs/libs-docs.xml
684     docs/reference/plugins/Makefile
685     docs/reference/plugins/plugins-docs.xml
686     ext/Makefile
687     gst-libs/Makefile
688     gst-libs/gst/Makefile
689     gst-libs/gst/codecparsers/Makefile
690     gst-libs/gst/vaapi/Makefile
691     gst-libs/gst/video/Makefile
692     gst/Makefile
693     gst/vaapi/Makefile
694     pkgconfig/Makefile
695     pkgconfig/gstreamer-vaapi-$GST_API_VERSION.pc:\
696 pkgconfig/gstreamer-vaapi.pc.in
697     pkgconfig/gstreamer-vaapi-drm-$GST_API_VERSION.pc:\
698 pkgconfig/gstreamer-vaapi-drm.pc.in
699     pkgconfig/gstreamer-vaapi-glx-$GST_API_VERSION.pc:\
700 pkgconfig/gstreamer-vaapi-glx.pc.in
701     pkgconfig/gstreamer-vaapi-wayland-$GST_API_VERSION.pc:\
702 pkgconfig/gstreamer-vaapi-wayland.pc.in
703     pkgconfig/gstreamer-vaapi-x11-$GST_API_VERSION.pc:\
704 pkgconfig/gstreamer-vaapi-x11.pc.in
705     tests/Makefile
706 ])
707 AC_OUTPUT
708
709 dnl Print summary
710 yesno() {
711     test $1 -eq 1 && echo yes || echo no
712 }
713
714 VIDEO_OUTPUTS=""
715 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
716 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
717 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
718 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
719
720 echo
721 echo $PACKAGE configuration summary:
722 echo
723 echo GStreamer API version ............ : $GST_API_VERSION
724 echo VA-API version ................... : $VA_VERSION_STR
725 echo Video outputs .................... : $VIDEO_OUTPUTS
726 echo