7bba4ba796639ffc43d64bccd74d00b9d00cacb3
[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], [9])
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],       [5])
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], [5])
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 AC_ARG_VAR([YASM], [Path to yasm program, if any])
99 AC_PATH_PROG([YASM], [yasm])
100 if test -z "$YASM" -a "$enable_builtin_libvpx" = "yes"; then
101     AC_MSG_ERROR([yasm is needed to build libvpx sources])
102 fi
103
104 dnl Initialize libtool
105 LT_PREREQ([2.2])
106 LT_INIT
107
108 AC_ARG_ENABLE(builtin_videoparsers,
109     AS_HELP_STRING([--enable-builtin-videoparsers],
110                    [enable built-in videoparsers @<:@default=yes@:>@]),
111     [], [enable_builtin_videoparsers="yes"])
112
113 AC_ARG_ENABLE(builtin_codecparsers,
114     AS_HELP_STRING([--enable-builtin-codecparsers],
115                    [enable built-in codecparsers @<:@default=yes@:>@]),
116     [], [enable_builtin_codecparsers="yes"])
117
118 AC_ARG_ENABLE(builtin_libvpx,
119     AS_HELP_STRING([--enable-builtin-libvpx],
120                    [enable built-in libvpx @<:@default=yes@:>@]),
121     [], [enable_builtin_libvpx="yes"])
122
123 AC_ARG_ENABLE([encoders],
124     AS_HELP_STRING([--enable-encoders],
125                    [enable video encoders @<:@default=yes@:>@]),
126     [], [enable_encoders="yes"])
127
128 AC_ARG_ENABLE(drm,
129     AS_HELP_STRING([--enable-drm],
130                    [enable DRM backend @<:@default=yes@:>@]),
131     [], [enable_drm="yes"])
132
133 AC_ARG_ENABLE(x11,
134     AS_HELP_STRING([--enable-x11],
135                    [enable X11 output @<:@default=yes@:>@]),
136     [], [enable_x11="yes"])
137
138 AC_ARG_ENABLE(glx,
139     AS_HELP_STRING([--enable-glx],
140                    [enable OpenGL/X11 output @<:@default=yes@:>@]),
141     [], [enable_glx="yes"])
142
143 AC_ARG_ENABLE(wayland,
144     AC_HELP_STRING([--enable-wayland],
145                    [enable Wayland output @<:@default=yes@:>@]),
146     [], [enable_wayland="yes"])
147
148 AC_ARG_WITH([gstreamer-api],
149     AC_HELP_STRING([--with-gstreamer-api=VERSION],
150                    [build against the specified GStreamer API version
151                     @<:@default=gst_api_version@:>@]),
152     [GST_API_VERSION="$with_gstreamer_api"], [GST_API_VERSION=gst_api_version])
153
154 dnl Check for basic libraries
155 AC_CHECK_LIB(m, tan)
156
157 dnl Check for Gtk doc
158 GTKDOC_VERSION=gtkdoc_version
159 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
160 m4_ifdef([GTK_DOC_CHECK], [
161 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
162 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
163 AC_SUBST(GTKDOC_VERSION)
164
165 dnl Check for GLib
166 GLIB_VERSION_REQUIRED=glib_version
167 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
168 AC_SUBST(GLIB_VERSION_REQUIRED)
169
170 dnl Check to see if dlopen is in default libraries (like Solaris, which
171 dnl has it in libc), or if libdl is needed to get it.
172 AC_CHECK_FUNC([dlopen], [], [
173     AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
174 AC_SUBST([DLOPEN_LIBS])
175
176 dnl ---------------------------------------------------------------------------
177 dnl -- GStreamer                                                             --
178 dnl ---------------------------------------------------------------------------
179
180 dnl If GStreamer API version is to be autodetected, then always try
181 dnl with the latest version first
182 AC_MSG_CHECKING([for GStreamer API version])
183 if test "$GST_API_VERSION" = "autodetect"; then
184     gst_pkg_versions="1.0 0.10"
185 else
186     AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
187         [gst_pkg_versions="0.10"], [gst_pkg_versions="1.0"],
188         dnl GStreamer 1.2.x APIs don't have their own namespace
189         [gst_pkg_versions="1.0"])
190 fi
191 for gst_pkg_version in ${gst_pkg_versions}; do
192     if $PKG_CONFIG --exists "gstreamer-$gst_pkg_version"; then
193         gst_version=`$PKG_CONFIG --modversion "gstreamer-$gst_pkg_version"`
194         gst_major_version=`echo "$gst_version" | cut -d'.' -f1`
195         gst_minor_version=`echo "$gst_version" | cut -d'.' -f2`
196         GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
197         GST_PKG_VERSION="$gst_pkg_version"
198         break
199     fi
200 done
201 if test -z "$GST_PKG_VERSION"; then
202     AC_MSG_ERROR([version $GST_API_VERSION not found])
203 fi
204 AC_MSG_RESULT([$GST_API_VERSION])
205
206 dnl Versions for GStreamer and plugins-base
207 case $GST_API_VERSION in
208 0.10)
209     GST_VERSION_REQUIRED=gst0_version
210     GST_PLUGINS_BASE_VERSION_REQUIRED=gst0_plugins_base_version
211     GST_PLUGINS_BAD_VERSION_REQUIRED=gst0_plugins_bad_version
212     ;;
213 1.0)
214     GST_VERSION_REQUIRED=gst1_version
215     GST_PLUGINS_BASE_VERSION_REQUIRED=gst1_plugins_base_version
216     GST_PLUGINS_BAD_VERSION_REQUIRED=gst1_plugins_bad_version
217     ;;
218 1.2)
219     GST_VERSION_REQUIRED=gst12_version
220     GST_PLUGINS_BASE_VERSION_REQUIRED=gst12_plugins_base_version
221     GST_PLUGINS_BAD_VERSION_REQUIRED=gst12_plugins_bad_version
222     ;;
223 1.3)
224     GST_VERSION_REQUIRED=gst14_version
225     GST_PLUGINS_BASE_VERSION_REQUIRED=gst14_plugins_base_version
226     GST_PLUGINS_BAD_VERSION_REQUIRED=gst14_plugins_bad_version
227     ;;
228 *)
229     AC_MSG_ERROR([unsupported GStreamer API version $GST_API_VERSION])
230     ;;
231 esac
232 AC_SUBST(GST_API_VERSION)
233 AC_SUBST(GST_VERSION_REQUIRED)
234 AC_SUBST(GST_PLUGINS_BASE_VERSION_REQUIRED)
235 AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
236
237 USE_GST_API_0_10="no"
238 USE_GST_API_1_0p="no"
239 USE_GST_API_1_2p="no"
240 AS_VERSION_COMPARE([$GST_API_VERSION], [0.10],
241     [], [USE_GST_API_0_10="yes"], [])
242 AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
243     [], [USE_GST_API_1_0p="yes"], [USE_GST_API_1_0p="yes"])
244 AS_VERSION_COMPARE([$GST_API_VERSION], [1.2],
245     [], [USE_GST_API_1_2p="yes"], [USE_GST_API_1_2p="yes"])
246 AM_CONDITIONAL([USE_GST_API_0_10], [test "$USE_GST_API_0_10" = "yes"])
247 AM_CONDITIONAL([USE_GST_API_1_0p], [test "$USE_GST_API_1_0p" = "yes"])
248 AM_CONDITIONAL([USE_GST_API_1_2p], [test "$USE_GST_API_1_2p" = "yes"])
249
250 dnl GStreamer 1.2.x APIs don't have their own namespace
251 GST_PKG_VERSION="$GST_API_VERSION"
252 if test "$USE_GST_API_1_2p" = "yes"; then
253     GST_PKG_VERSION="1.0"
254 fi
255 AC_SUBST([GST_PKG_VERSION])
256
257 dnl Validate certain features
258 if test "$USE_GST_API_0_10" = "yes"; then
259     if test "$enable_builtin_videoparsers" = "yes"; then
260         AC_MSG_WARN([disabled built-in videoparsers (unsupported)])
261         enable_builtin_videoparsers="no"
262     fi
263 fi
264
265 dnl GStreamer Core
266 PKG_CHECK_MODULES([GST],
267     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
268 PKG_CHECK_MODULES([GST_BASE],
269     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
270
271 AC_CACHE_CHECK([for GstBaseSink::query hook], ac_cv_have_gst_base_sink_query, [
272     saved_CPPFLAGS="$CPPFLAGS"
273     CPPFLAGS="$CPPFLAGS $GST_BASE_CFLAGS"
274     saved_LIBS="$LIBS"
275     LIBS="$LIBS $GST_BASE_LIBS"
276     AC_COMPILE_IFELSE(
277         [AC_LANG_PROGRAM(
278             [[#include <gst/base/gstbasesink.h>]],
279             [[GstBaseSinkClass klass; klass.query = NULL;]])],
280         [ac_cv_have_gst_base_sink_query="yes"],
281         [ac_cv_have_gst_base_sink_query="no"]
282     )
283     CPPFLAGS="$saved_CPPFLAGS"
284     LIBS="$saved_LIBS"
285 ])
286 if test "$ac_cv_have_gst_base_sink_query" != "yes"; then
287     AC_MSG_ERROR([GstBaseSink does not contain the 'query' vfunc])
288 fi
289
290 dnl GStreamer -base plugins
291 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
292     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
293 if test "$GST_API_VERSION" = "0.10"; then
294 PKG_CHECK_MODULES([GST_INTERFACES],
295     [gstreamer-interfaces-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
296 fi
297
298 dnl ... GstVideoOverlayComposition (gstreamer-video)
299 PKG_CHECK_MODULES([GST_VIDEO],
300     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
301
302 AC_CACHE_CHECK([for GstVideoOverlayComposition],
303     ac_cv_have_gst_video_overlay_composition, [
304     saved_CPPFLAGS="$CPPFLAGS"
305     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
306     saved_LIBS="$LIBS"
307     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
308     AC_COMPILE_IFELSE(
309         [AC_LANG_PROGRAM(
310             [[#include <gst/video/video-overlay-composition.h>]],
311             [[GstVideoOverlayComposition *c;
312               c = gst_video_overlay_composition_new(0);]])],
313         [ac_cv_have_gst_video_overlay_composition="yes"],
314         [ac_cv_have_gst_video_overlay_composition="no"]
315     )
316     CPPFLAGS="$saved_CPPFLAGS"
317     LIBS="$saved_LIBS"
318 ])
319 if test "$ac_cv_have_gst_video_overlay_composition" != "yes"; then
320     AC_MSG_ERROR([GstVideoOverlayComposition is not available])
321 fi
322
323 AC_CACHE_CHECK([... with advanced format flags],
324     ac_cv_have_gst_video_overlay_hwcaps, [
325     saved_CPPFLAGS="$CPPFLAGS"
326     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
327     saved_LIBS="$LIBS"
328     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
329     AC_COMPILE_IFELSE(
330         [AC_LANG_PROGRAM(
331             [[#include <gst/video/video-overlay-composition.h>]],
332             [[GstVideoOverlayRectangle *rect;
333               const guint w = 64, h = 64;
334               guint flags = (
335                   GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA|
336                   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA);
337               rect = gst_video_overlay_rectangle_new_argb(NULL, w, h, w * 4,
338                   0, 0, w, h, flags);
339               gst_video_overlay_rectangle_set_global_alpha(rect, 0.5f);]])],
340         [ac_cv_have_gst_video_overlay_hwcaps="yes"],
341         [ac_cv_have_gst_video_overlay_hwcaps="no"]
342     )
343     CPPFLAGS="$saved_CPPFLAGS"
344     LIBS="$saved_LIBS"
345 ])
346 if test "$ac_cv_have_gst_video_overlay_hwcaps" = "yes"; then
347     AC_DEFINE_UNQUOTED([HAVE_GST_VIDEO_OVERLAY_HWCAPS], 1,
348         [Defined to 1 if GstVideoOverlayComposition API supports HW hints.])
349 fi
350
351 dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
352 if test "$USE_GST_API_1_2p" != "yes"; then
353 PKG_CHECK_MODULES([GST_BASEVIDEO],
354     [gstreamer-basevideo-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
355 fi
356
357 dnl ... bitstream parsers
358 if test "$enable_builtin_codecparsers" = "yes"; then
359     ac_cv_have_gst_mpeg2_parser="no"
360     ac_cv_have_gst_h264_parser="no"
361     ac_cv_have_gst_jpeg_parser="no"
362     ac_cv_have_gst_vp8_parser="no"
363 else
364 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
365     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
366 fi
367
368 dnl ... MPEG-2 parser, with the required extensions
369 AC_CACHE_CHECK([for MPEG-2 parser],
370     ac_cv_have_gst_mpeg2_parser, [
371     saved_CPPFLAGS="$CPPFLAGS"
372     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
373     saved_LIBS="$LIBS"
374     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
375     AC_COMPILE_IFELSE(
376         [AC_LANG_PROGRAM(
377             [[#include <gst/codecparsers/gstmpegvideoparser.h>]],
378             [[GstMpegVideoSequenceHdr seq_hdr;
379               GstMpegVideoSequenceExt seq_ext;
380               GstMpegVideoSequenceDisplayExt seq_dpy;
381               GstMpegVideoSliceHdr slice_hdr;
382               GstMpegVideoPacket packet;
383               gst_mpeg_video_packet_parse_slice_header(&packet, &slice_hdr,
384                   &seq_hdr, NULL);
385               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
386                   &seq_ext, &seq_dpy);]])],
387         [ac_cv_have_gst_mpeg2_parser="yes"],
388         [ac_cv_have_gst_mpeg2_parser="no"]
389     )
390     CPPFLAGS="$saved_CPPFLAGS"
391     LIBS="$saved_LIBS"
392 ])
393 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
394     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
395
396 dnl ... H.264 parser, with the required extensions
397 AC_CACHE_CHECK([for H.264 parser],
398     ac_cv_have_gst_h264_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/gsth264parser.h>]],
406             [[GstH264SliceHdr slice_hdr;
407               GstH264VUIParams vui_params;
408               GstH264Profile profile = GST_H264_PROFILE_HIGH;
409               slice_hdr.n_emulation_prevention_bytes = 0;
410               vui_params.par_n = 0;
411               vui_params.par_d = 0;]])],
412         [ac_cv_have_gst_h264_parser="yes"],
413         [ac_cv_have_gst_h264_parser="no"]
414     )
415     CPPFLAGS="$saved_CPPFLAGS"
416     LIBS="$saved_LIBS"
417 ])
418 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
419     [test "$ac_cv_have_gst_h264_parser" != "yes"])
420
421 dnl ... JPEG parser, not upstream yet
422 AC_CACHE_CHECK([for JPEG parser],
423     ac_cv_have_gst_jpeg_parser, [
424     saved_CPPFLAGS="$CPPFLAGS"
425     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
426     saved_LIBS="$LIBS"
427     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
428     AC_COMPILE_IFELSE(
429         [AC_LANG_PROGRAM(
430             [[#include <gst/codecparsers/gstjpegparser.h>]],
431             [[GstJpegImage jpeg_image;]])],
432         [ac_cv_have_gst_jpeg_parser="yes"],
433         [ac_cv_have_gst_jpeg_parser="no"]
434     )
435     CPPFLAGS="$saved_CPPFLAGS"
436     LIBS="$saved_LIBS"
437 ])
438 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
439     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
440
441 dnl ... VP8 parser, not upstream yet
442 if test "$enable_builtin_libvpx" = "yes"; then
443     ac_cv_have_gst_vp8_parser="no"
444 fi
445 AC_CACHE_CHECK([for VP8 parser],
446     ac_cv_have_gst_vp8_parser, [
447     saved_CPPFLAGS="$CPPFLAGS"
448     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
449     saved_LIBS="$LIBS"
450     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
451     AC_COMPILE_IFELSE(
452         [AC_LANG_PROGRAM(
453             [[#include <gst/codecparsers/gstvp8parser.h>]],
454             [[GstVp8FrameHdr frame_hdr;]])],
455         [ac_cv_have_gst_vp8_parser="yes"],
456         [ac_cv_have_gst_vp8_parser="no"]
457     )
458     CPPFLAGS="$saved_CPPFLAGS"
459     LIBS="$saved_LIBS"
460 ])
461 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_VP8],
462     [test "$ac_cv_have_gst_vp8_parser" != "yes"])
463 AM_CONDITIONAL([USE_BUILTIN_LIBVPX], [test "$enable_builtin_libvpx" = "yes"])
464
465 dnl ... video parsers
466 AM_CONDITIONAL([USE_LOCAL_VIDEO_PARSERS],
467     [test "$enable_builtin_videoparsers" = "yes"])
468
469 case $GST_API_VERSION in
470 0.10)   lt_bias=gst0_vaapi_lt_current_bias;;
471 1.0)    lt_bias=gst1_vaapi_lt_current_bias;;
472 1.2)    lt_bias=gst2_vaapi_lt_current_bias;;
473 1.3)    lt_bias=gst4_vaapi_lt_current_bias;;
474 esac
475 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
476 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
477
478 dnl GST_VAAPI_LT_LDFLAGS:
479 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
480 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
481 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
482 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
483 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
484 AC_SUBST(GST_VAAPI_LT_VERSION)
485 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
486
487 dnl GST_ALL_LDFLAGS:
488 dnl LDFLAGS really should only contain flags, not libs - they get added before
489 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
490 GST_ALL_LDFLAGS="-no-undefined"
491 AC_SUBST(GST_ALL_LDFLAGS)
492
493 dnl GST_PLUGIN_LDFLAGS:
494 dnl this really should only contain flags, not libs - they get added before
495 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
496 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
497 AC_SUBST(GST_PLUGIN_LDFLAGS)
498
499 dnl Check for the GStreamer plugins directory
500 AC_ARG_VAR([GST_PLUGIN_PATH], [installation path for gstreamer-vaapi plugin elements for GStreamer 0.10])
501 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
502 AC_MSG_CHECKING([for GStreamer plugins directory])
503 case $GST_PKG_VERSION in
504 0.10)   _gst_plugin_path="$GST_PLUGIN_PATH";;
505 1.0)    _gst_plugin_path="$GST_PLUGIN_PATH_1_0";;
506 esac
507 if test -d "$_gst_plugin_path"; then
508     GST_PLUGINS_DIR="$_gst_plugin_path"
509 else
510     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
511     if test -z "$GST_PLUGINS_DIR"; then
512         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
513     fi
514 fi
515 AC_MSG_RESULT([$GST_PLUGINS_DIR])
516 plugindir="$GST_PLUGINS_DIR"
517 AC_SUBST(plugindir)
518
519 dnl ---------------------------------------------------------------------------
520 dnl -- Renderers                                                             --
521 dnl ---------------------------------------------------------------------------
522
523 dnl Check for DRM/libudev
524 USE_DRM=0
525 if test "$enable_drm" = "yes"; then
526     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
527     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
528
529     if test $USE_DRM -eq 1; then
530         saved_CPPFLAGS="$CPPFLAGS"
531         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
532         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
533         CPPFLAGS="$saved_CPPFLAGS"
534     fi
535 fi
536
537 dnl Check for X11
538 USE_X11=0
539 if test "$enable_x11" = "yes"; then
540     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
541     if test $USE_X11 -eq 1; then
542         saved_CPPFLAGS="$CPPFLAGS"
543         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
544         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
545         CPPFLAGS="$saved_CPPFLAGS"
546     fi
547 fi
548
549 dnl Check for XRandR
550 HAVE_XRANDR=0
551 if test $USE_X11 -eq 1; then
552     HAVE_XRANDR=1
553     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
554     if test $HAVE_XRANDR -eq 1; then
555         saved_CPPFLAGS="$CPPFLAGS"
556         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
557         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
558         CPPFLAGS="$saved_CPPFLAGS"
559     fi
560 fi
561 if test $HAVE_XRANDR -eq 1; then
562     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
563         [Defined to 1 if the XRandR extension exists.])
564 fi
565
566 dnl Check for XRender
567 HAVE_XRENDER=0
568 if test $USE_X11 -eq 1; then
569     HAVE_XRENDER=1
570     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
571     if test $HAVE_XRENDER -eq 1; then
572         saved_CPPFLAGS="$CPPFLAGS"
573         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
574         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
575         CPPFLAGS="$saved_CPPFLAGS"
576     fi
577 fi
578 if test $HAVE_XRENDER -eq 1; then
579     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
580         [Defined to 1 if the XRender extension exists.])
581 fi
582
583 dnl OpenGL
584 enable_opengl="no"
585 if test "$enable_glx" = "yes"; then
586     enable_opengl="yes"
587 fi
588
589 HAVE_GL=0
590 if test "$enable_opengl" = "yes"; then
591     HAVE_GL=1
592     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
593     saved_CPPFLAGS="$CPPFLAGS"
594     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
595     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
596 #ifdef HAVE_GL_GL_H
597 # include <GL/gl.h>
598 #endif
599     ])
600     CPPFLAGS="$saved_CPPFLAGS"
601 fi
602
603 dnl ... GLX
604 USE_GLX=0
605 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
606     USE_GLX=1
607     saved_CPPFLAGS="$CPPFLAGS"
608     saved_LIBS="$LIBS"
609     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
610     LIBS="$LIBS $GL_LIBS"
611     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
612 #ifdef HAVE_GL_GL_H
613 # include <GL/gl.h>
614 #endif
615     ])
616     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
617     CPPFLAGS="$saved_CPPFLAGS"
618     LIBS="$saved_LIBS"
619 fi
620
621 dnl Check for Wayland
622 USE_WAYLAND=0
623 if test "$enable_wayland" = "yes"; then
624     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
625         [USE_WAYLAND=1], [USE_WAYLAND=0])
626
627     if test $USE_WAYLAND -eq 1; then
628         saved_CPPFLAGS="$CPPFLAGS"
629         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
630         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
631         CPPFLAGS="$saved_CPPFLAGS"
632     fi
633 fi
634
635 dnl ---------------------------------------------------------------------------
636 dnl -- VA-API                                                                --
637 dnl ---------------------------------------------------------------------------
638
639 dnl Core API
640 LIBVA_PKGNAME="libva"
641 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
642 AC_SUBST(LIBVA_PKGNAME)
643
644 VA_VERSION=`$PKG_CONFIG --modversion libva`
645 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
646 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
647 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
648 VA_VERSION_STR="$VA_VERSION"
649
650 dnl VA/DRM API
651 HAVE_VA_DRM=0
652 if test $USE_DRM -eq 1; then
653     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
654         [HAVE_VA_DRM=1], [USE_DRM=0])
655
656     if test $HAVE_VA_DRM -eq 1; then
657         saved_CPPFLAGS="$CPPFLAGS"
658         CPPFLAGS="$LIBVA_DRM_CFLAGS"
659         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
660         CPPFLAGS="$saved_CPPFLAGS"
661     fi
662 fi
663
664 dnl VA/X11 API
665 HAVE_VA_X11=0
666 LIBVA_X11_PKGNAME="libva-x11"
667 if test $USE_X11 -eq 1; then
668     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
669         [HAVE_VA_X11=1], [USE_X11=0])
670 fi
671 AC_SUBST(LIBVA_X11_PKGNAME)
672
673 dnl VA/GLX API
674 HAVE_VA_GLX=0
675 LIBVA_GLX_PKGNAME="libva-glx"
676 if test $USE_GLX -eq 1; then
677     PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME >= va_api_glx_version],
678         [HAVE_VA_GLX=1], [LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"])
679
680     if test $HAVE_VA_GLX -eq 1; then
681         saved_CPPFLAGS="$CPPFLAGS"
682         CPPFLAGS="$LIBVA_GLX_CFLAGS"
683         AC_CHECK_HEADERS([va/va_glx.h], [:], [HAVE_VA_GLX=0])
684         CPPFLAGS="$saved_CPPFLAGS"
685     fi
686 fi
687 AC_SUBST(LIBVA_GLX_PKGNAME)
688
689 dnl Check for va_dec_jpeg.h header
690 saved_CPPFLAGS="$CPPFLAGS"
691 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
692 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
693 CPPFLAGS="$saved_CPPFLAGS"
694
695 dnl Check for JPEG decoding API (0.32.1+)
696 USE_JPEG_DECODER=0
697 AC_CACHE_CHECK([for JPEG decoding API],
698     ac_cv_have_jpeg_decoding_api, [
699     saved_CPPFLAGS="$CPPFLAGS"
700     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
701     saved_LIBS="$LIBS"
702     LIBS="$LIBS $LIBVA_LIBS"
703     AC_COMPILE_IFELSE(
704         [AC_LANG_PROGRAM(
705             [[#include <va/va.h>
706               #ifdef HAVE_VA_VA_DEC_JPEG_H
707               #include <va/va_dec_jpeg.h>
708               #endif
709             ]],
710             [[VAPictureParameterBufferJPEGBaseline pic_param;
711               VASliceParameterBufferJPEGBaseline slice_param;
712               VAHuffmanTableBufferJPEGBaseline huffman_table;
713               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
714         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
715         [ac_cv_have_jpeg_decoding_api="no"]
716     )
717     CPPFLAGS="$saved_CPPFLAGS"
718     LIBS="$saved_LIBS"
719 ])
720
721 dnl Check for va_dec_vp8.h header
722 saved_CPPFLAGS="$CPPFLAGS"
723 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
724 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [], [#include <va/va.h>])
725 CPPFLAGS="$saved_CPPFLAGS"
726
727 dnl Check for VP8 decoding API (0.34+)
728 USE_VP8_DECODER=0
729 AC_CACHE_CHECK([for VP8 decoding API],
730     ac_cv_have_vp8_decoding_api, [
731     saved_CPPFLAGS="$CPPFLAGS"
732     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
733     saved_LIBS="$LIBS"
734     LIBS="$LIBS $LIBVA_LIBS"
735     AC_COMPILE_IFELSE(
736         [AC_LANG_PROGRAM(
737             [[#include <va/va.h>
738               #ifdef HAVE_VA_VA_DEC_VP8_H
739               #include <va/va_dec_vp8.h>
740               #endif
741             ]],
742             [[VAPictureParameterBufferVP8 pic_param;
743               VASliceParameterBufferVP8 slice_param;
744               VAProbabilityDataBufferVP8 prob_data;
745               VAIQMatrixBufferVP8 iq_matrix;
746               slice_param.slice_data_offset = 0;
747               slice_param.slice_data_flag = 0;]])],
748         [ac_cv_have_vp8_decoding_api="yes" USE_VP8_DECODER=1],
749         [ac_cv_have_vp8_decoding_api="no"]
750     )
751     CPPFLAGS="$saved_CPPFLAGS"
752     LIBS="$saved_LIBS"
753 ])
754
755
756 dnl Check for vpp (video post-processing) support
757 USE_VA_VPP=0
758 AC_CACHE_CHECK([for video post-postprocessing API],
759     ac_cv_have_va_vpp_api, [
760     saved_CPPFLAGS="$CPPFLAGS"
761     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
762     saved_LIBS="$LIBS"
763     LIBS="$LIBS $LIBVA_LIBS"
764     AC_COMPILE_IFELSE(
765         [AC_LANG_PROGRAM(
766             [[#include <va/va.h>
767               #include <va/va_vpp.h>]],
768             [[VADisplay va_dpy;
769               VAContextID vpp_ctx;
770               VAProcFilterType filters[VAProcFilterCount];
771               unsigned int num_filters = VAProcFilterCount;
772               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
773               ]])],
774         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
775         [ac_cv_have_va_vpp_api="no"]
776     )
777     CPPFLAGS="$saved_CPPFLAGS"
778     LIBS="$saved_LIBS"
779 ])
780
781 dnl Check for encoding support
782 USE_ENCODERS=0
783 if test "$enable_encoders" = "yes"; then
784     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
785         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
786
787     if test $HAVE_VA_ENC -eq 1; then
788         saved_CPPFLAGS="$CPPFLAGS"
789         CPPFLAGS="$LIBVA_CFLAGS"
790         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
791             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
792             [#include <va/va.h>
793             ])
794         CPPFLAGS="$saved_CPPFLAGS"
795     fi
796 fi
797
798 dnl VA/Wayland API
799 if test "$enable_wayland" = "yes"; then
800     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
801         [:], [USE_WAYLAND=0])
802 fi
803
804 dnl ---------------------------------------------------------------------------
805 dnl -- Generate files and summary                                            --
806 dnl ---------------------------------------------------------------------------
807
808 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
809 *:1:*)
810     ;;
811 *)
812     AC_MSG_ERROR([No renderer is enabled])
813     ;;
814 esac
815
816 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
817     [Defined to 1 if video encoders are used])
818 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
819
820 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
821     [Defined to 1 if video post-processing is used])
822 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
823
824 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
825     [Defined to 1 if JPEG decoder is used])
826 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
827
828 AC_DEFINE_UNQUOTED(USE_VP8_DECODER, $USE_VP8_DECODER,
829     [Defined to 1 if VP8 decoder is used])
830 AM_CONDITIONAL(USE_VP8_DECODER, test $USE_VP8_DECODER -eq 1)
831
832 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
833     [Defined to 1 if DRM is enabled])
834 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
835
836 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
837     [Defined to 1 if X11 is enabled])
838 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
839
840 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
841     [Defined to 1 if GLX is enabled])
842 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
843
844 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
845     [Defined to 1 if WAYLAND is enabled])
846 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
847
848 pkgconfigdir=${libdir}/pkgconfig
849 AC_SUBST(pkgconfigdir)
850
851 AC_CONFIG_FILES([
852     Makefile
853     debian.upstream/Makefile
854     debian.upstream/changelog
855     debian.upstream/control
856     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
857 debian.upstream/gstreamer-vaapi-doc.install.in
858     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
859 debian.upstream/gstreamer-vaapi.install.in
860     debian.upstream/libgstvaapi$GST_API_VERSION-dev.install:\
861 debian.upstream/libgstvaapi-dev.install.in
862     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
863 debian.upstream/libgstvaapi.install.in
864     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
865 debian.upstream/libgstvaapi-drm.install.in
866     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
867 debian.upstream/libgstvaapi-glx.install.in
868     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
869 debian.upstream/libgstvaapi-wayland.install.in
870     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
871 debian.upstream/libgstvaapi-x11.install.in
872     docs/Makefile
873     docs/reference/Makefile
874     docs/reference/libs/Makefile
875     docs/reference/libs/libs-docs.xml
876     docs/reference/plugins/Makefile
877     docs/reference/plugins/plugins-docs.xml
878     ext/Makefile
879     ext/libvpx/Makefile
880     gst-libs/Makefile
881     gst-libs/gst/Makefile
882     gst-libs/gst/base/Makefile
883     gst-libs/gst/codecparsers/Makefile
884     gst-libs/gst/vaapi/Makefile
885     gst-libs/gst/video/Makefile
886     gst/Makefile
887     gst/vaapi/Makefile
888     patches/Makefile
889     patches/videoparsers/Makefile
890     pkgconfig/Makefile
891     pkgconfig/gstreamer-vaapi-$GST_PKG_VERSION.pc:\
892 pkgconfig/gstreamer-vaapi.pc.in
893     pkgconfig/gstreamer-vaapi-drm-$GST_PKG_VERSION.pc:\
894 pkgconfig/gstreamer-vaapi-drm.pc.in
895     pkgconfig/gstreamer-vaapi-glx-$GST_PKG_VERSION.pc:\
896 pkgconfig/gstreamer-vaapi-glx.pc.in
897     pkgconfig/gstreamer-vaapi-wayland-$GST_PKG_VERSION.pc:\
898 pkgconfig/gstreamer-vaapi-wayland.pc.in
899     pkgconfig/gstreamer-vaapi-x11-$GST_PKG_VERSION.pc:\
900 pkgconfig/gstreamer-vaapi-x11.pc.in
901     tests/Makefile
902 ])
903 AC_OUTPUT
904
905 dnl Print summary
906 yesno() {
907     test $1 -eq 1 && echo yes || echo no
908 }
909
910 VIDEO_OUTPUTS=""
911 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
912 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
913 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
914 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
915
916 echo
917 echo $PACKAGE configuration summary:
918 echo
919 echo GStreamer API version ............ : $GST_API_VERSION
920 echo VA-API version ................... : $VA_VERSION_STR
921 echo Video encoding ................... : $(yesno $USE_ENCODERS)
922 echo Video outputs .................... : $VIDEO_OUTPUTS
923 echo