window: allow for updating size from current geometry.
[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     AC_MSG_WARN([support for GStreamer 0.10 is deprecated, and will be removed])
260     if test "$enable_builtin_videoparsers" = "yes"; then
261         AC_MSG_WARN([disabled built-in videoparsers (unsupported)])
262         enable_builtin_videoparsers="no"
263     fi
264 fi
265
266 dnl GStreamer Core
267 PKG_CHECK_MODULES([GST],
268     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
269 PKG_CHECK_MODULES([GST_BASE],
270     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
271
272 AC_CACHE_CHECK([for GstBaseSink::query hook], ac_cv_have_gst_base_sink_query, [
273     saved_CPPFLAGS="$CPPFLAGS"
274     CPPFLAGS="$CPPFLAGS $GST_BASE_CFLAGS"
275     saved_LIBS="$LIBS"
276     LIBS="$LIBS $GST_BASE_LIBS"
277     AC_COMPILE_IFELSE(
278         [AC_LANG_PROGRAM(
279             [[#include <gst/base/gstbasesink.h>]],
280             [[GstBaseSinkClass klass; klass.query = NULL;]])],
281         [ac_cv_have_gst_base_sink_query="yes"],
282         [ac_cv_have_gst_base_sink_query="no"]
283     )
284     CPPFLAGS="$saved_CPPFLAGS"
285     LIBS="$saved_LIBS"
286 ])
287 if test "$ac_cv_have_gst_base_sink_query" != "yes"; then
288     AC_MSG_ERROR([GstBaseSink does not contain the 'query' vfunc])
289 fi
290
291 dnl GStreamer -base plugins
292 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
293     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
294 if test "$GST_API_VERSION" = "0.10"; then
295 PKG_CHECK_MODULES([GST_INTERFACES],
296     [gstreamer-interfaces-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
297 fi
298
299 dnl ... GstVideoOverlayComposition (gstreamer-video)
300 PKG_CHECK_MODULES([GST_VIDEO],
301     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
302
303 AC_CACHE_CHECK([for GstVideoOverlayComposition],
304     ac_cv_have_gst_video_overlay_composition, [
305     saved_CPPFLAGS="$CPPFLAGS"
306     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
307     saved_LIBS="$LIBS"
308     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
309     AC_COMPILE_IFELSE(
310         [AC_LANG_PROGRAM(
311             [[#include <gst/video/video-overlay-composition.h>]],
312             [[GstVideoOverlayComposition *c;
313               c = gst_video_overlay_composition_new(0);]])],
314         [ac_cv_have_gst_video_overlay_composition="yes"],
315         [ac_cv_have_gst_video_overlay_composition="no"]
316     )
317     CPPFLAGS="$saved_CPPFLAGS"
318     LIBS="$saved_LIBS"
319 ])
320 if test "$ac_cv_have_gst_video_overlay_composition" != "yes"; then
321     AC_MSG_ERROR([GstVideoOverlayComposition is not available])
322 fi
323
324 AC_CACHE_CHECK([... with advanced format flags],
325     ac_cv_have_gst_video_overlay_hwcaps, [
326     saved_CPPFLAGS="$CPPFLAGS"
327     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
328     saved_LIBS="$LIBS"
329     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
330     AC_COMPILE_IFELSE(
331         [AC_LANG_PROGRAM(
332             [[#include <gst/video/video-overlay-composition.h>]],
333             [[GstVideoOverlayRectangle *rect;
334               const guint w = 64, h = 64;
335               guint flags = (
336                   GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA|
337                   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA);
338               rect = gst_video_overlay_rectangle_new_argb(NULL, w, h, w * 4,
339                   0, 0, w, h, flags);
340               gst_video_overlay_rectangle_set_global_alpha(rect, 0.5f);]])],
341         [ac_cv_have_gst_video_overlay_hwcaps="yes"],
342         [ac_cv_have_gst_video_overlay_hwcaps="no"]
343     )
344     CPPFLAGS="$saved_CPPFLAGS"
345     LIBS="$saved_LIBS"
346 ])
347 if test "$ac_cv_have_gst_video_overlay_hwcaps" = "yes"; then
348     AC_DEFINE_UNQUOTED([HAVE_GST_VIDEO_OVERLAY_HWCAPS], 1,
349         [Defined to 1 if GstVideoOverlayComposition API supports HW hints.])
350 fi
351
352 dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
353 if test "$USE_GST_API_1_2p" != "yes"; then
354 PKG_CHECK_MODULES([GST_BASEVIDEO],
355     [gstreamer-basevideo-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
356 fi
357
358 dnl ... bitstream parsers
359 if test "$enable_builtin_codecparsers" = "yes"; then
360     ac_cv_have_gst_mpeg2_parser="no"
361     ac_cv_have_gst_h264_parser="no"
362     ac_cv_have_gst_jpeg_parser="no"
363     ac_cv_have_gst_vp8_parser="no"
364 else
365 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
366     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
367 fi
368
369 dnl ... MPEG-2 parser, with the required extensions
370 AC_CACHE_CHECK([for MPEG-2 parser],
371     ac_cv_have_gst_mpeg2_parser, [
372     saved_CPPFLAGS="$CPPFLAGS"
373     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
374     saved_LIBS="$LIBS"
375     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
376     AC_COMPILE_IFELSE(
377         [AC_LANG_PROGRAM(
378             [[#include <gst/codecparsers/gstmpegvideoparser.h>]],
379             [[GstMpegVideoSequenceHdr seq_hdr;
380               GstMpegVideoSequenceExt seq_ext;
381               GstMpegVideoSequenceDisplayExt seq_dpy;
382               GstMpegVideoSliceHdr slice_hdr;
383               GstMpegVideoPacket packet;
384               gst_mpeg_video_packet_parse_slice_header(&packet, &slice_hdr,
385                   &seq_hdr, NULL);
386               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
387                   &seq_ext, &seq_dpy);]])],
388         [ac_cv_have_gst_mpeg2_parser="yes"],
389         [ac_cv_have_gst_mpeg2_parser="no"]
390     )
391     CPPFLAGS="$saved_CPPFLAGS"
392     LIBS="$saved_LIBS"
393 ])
394 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
395     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
396
397 dnl ... H.264 parser, with the required extensions
398 AC_CACHE_CHECK([for H.264 parser],
399     ac_cv_have_gst_h264_parser, [
400     saved_CPPFLAGS="$CPPFLAGS"
401     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
402     saved_LIBS="$LIBS"
403     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
404     AC_COMPILE_IFELSE(
405         [AC_LANG_PROGRAM(
406             [[#include <gst/codecparsers/gsth264parser.h>]],
407             [[GstH264SliceHdr slice_hdr;
408               GstH264VUIParams vui_params;
409               GstH264Profile profile = GST_H264_PROFILE_HIGH;
410               slice_hdr.n_emulation_prevention_bytes = 0;
411               vui_params.par_n = 0;
412               vui_params.par_d = 0;]])],
413         [ac_cv_have_gst_h264_parser="yes"],
414         [ac_cv_have_gst_h264_parser="no"]
415     )
416     CPPFLAGS="$saved_CPPFLAGS"
417     LIBS="$saved_LIBS"
418 ])
419 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
420     [test "$ac_cv_have_gst_h264_parser" != "yes"])
421
422 dnl ... JPEG parser, not upstream yet
423 AC_CACHE_CHECK([for JPEG parser],
424     ac_cv_have_gst_jpeg_parser, [
425     saved_CPPFLAGS="$CPPFLAGS"
426     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
427     saved_LIBS="$LIBS"
428     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
429     AC_COMPILE_IFELSE(
430         [AC_LANG_PROGRAM(
431             [[#include <gst/codecparsers/gstjpegparser.h>]],
432             [[GstJpegImage jpeg_image;]])],
433         [ac_cv_have_gst_jpeg_parser="yes"],
434         [ac_cv_have_gst_jpeg_parser="no"]
435     )
436     CPPFLAGS="$saved_CPPFLAGS"
437     LIBS="$saved_LIBS"
438 ])
439 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
440     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
441
442 dnl ... VP8 parser, not upstream yet
443 if test "$enable_builtin_libvpx" = "yes"; then
444     ac_cv_have_gst_vp8_parser="no"
445 fi
446 AC_CACHE_CHECK([for VP8 parser],
447     ac_cv_have_gst_vp8_parser, [
448     saved_CPPFLAGS="$CPPFLAGS"
449     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
450     saved_LIBS="$LIBS"
451     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
452     AC_COMPILE_IFELSE(
453         [AC_LANG_PROGRAM(
454             [[#include <gst/codecparsers/gstvp8parser.h>]],
455             [[GstVp8FrameHdr frame_hdr;]])],
456         [ac_cv_have_gst_vp8_parser="yes"],
457         [ac_cv_have_gst_vp8_parser="no"]
458     )
459     CPPFLAGS="$saved_CPPFLAGS"
460     LIBS="$saved_LIBS"
461 ])
462 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_VP8],
463     [test "$ac_cv_have_gst_vp8_parser" != "yes"])
464 AM_CONDITIONAL([USE_BUILTIN_LIBVPX], [test "$enable_builtin_libvpx" = "yes"])
465
466 dnl ... video parsers
467 AM_CONDITIONAL([USE_LOCAL_VIDEO_PARSERS],
468     [test "$enable_builtin_videoparsers" = "yes"])
469
470 case $GST_API_VERSION in
471 0.10)   lt_bias=gst0_vaapi_lt_current_bias;;
472 1.0)    lt_bias=gst1_vaapi_lt_current_bias;;
473 1.2)    lt_bias=gst2_vaapi_lt_current_bias;;
474 1.3)    lt_bias=gst4_vaapi_lt_current_bias;;
475 esac
476 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
477 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
478
479 dnl GST_VAAPI_LT_LDFLAGS:
480 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
481 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
482 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
483 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
484 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
485 AC_SUBST(GST_VAAPI_LT_VERSION)
486 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
487
488 dnl GST_ALL_LDFLAGS:
489 dnl LDFLAGS really should only contain flags, not libs - they get added before
490 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
491 GST_ALL_LDFLAGS="-no-undefined"
492 AC_SUBST(GST_ALL_LDFLAGS)
493
494 dnl GST_PLUGIN_LDFLAGS:
495 dnl this really should only contain flags, not libs - they get added before
496 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
497 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
498 AC_SUBST(GST_PLUGIN_LDFLAGS)
499
500 dnl Check for the GStreamer plugins directory
501 AC_ARG_VAR([GST_PLUGIN_PATH], [installation path for gstreamer-vaapi plugin elements for GStreamer 0.10])
502 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
503 AC_MSG_CHECKING([for GStreamer plugins directory])
504 case $GST_PKG_VERSION in
505 0.10)   _gst_plugin_path="$GST_PLUGIN_PATH";;
506 1.0)    _gst_plugin_path="$GST_PLUGIN_PATH_1_0";;
507 esac
508 if test -d "$_gst_plugin_path"; then
509     GST_PLUGINS_DIR="$_gst_plugin_path"
510 else
511     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
512     if test -z "$GST_PLUGINS_DIR"; then
513         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
514     fi
515 fi
516 AC_MSG_RESULT([$GST_PLUGINS_DIR])
517 plugindir="$GST_PLUGINS_DIR"
518 AC_SUBST(plugindir)
519
520 dnl ---------------------------------------------------------------------------
521 dnl -- Renderers                                                             --
522 dnl ---------------------------------------------------------------------------
523
524 dnl Check for DRM/libudev
525 USE_DRM=0
526 if test "$enable_drm" = "yes"; then
527     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
528     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
529
530     if test $USE_DRM -eq 1; then
531         saved_CPPFLAGS="$CPPFLAGS"
532         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
533         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
534         CPPFLAGS="$saved_CPPFLAGS"
535     fi
536 fi
537
538 dnl Check for X11
539 USE_X11=0
540 if test "$enable_x11" = "yes"; then
541     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
542     if test $USE_X11 -eq 1; then
543         saved_CPPFLAGS="$CPPFLAGS"
544         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
545         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
546         CPPFLAGS="$saved_CPPFLAGS"
547     fi
548 fi
549
550 dnl Check for XRandR
551 HAVE_XRANDR=0
552 if test $USE_X11 -eq 1; then
553     HAVE_XRANDR=1
554     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
555     if test $HAVE_XRANDR -eq 1; then
556         saved_CPPFLAGS="$CPPFLAGS"
557         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
558         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
559         CPPFLAGS="$saved_CPPFLAGS"
560     fi
561 fi
562 if test $HAVE_XRANDR -eq 1; then
563     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
564         [Defined to 1 if the XRandR extension exists.])
565 fi
566
567 dnl Check for XRender
568 HAVE_XRENDER=0
569 if test $USE_X11 -eq 1; then
570     HAVE_XRENDER=1
571     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
572     if test $HAVE_XRENDER -eq 1; then
573         saved_CPPFLAGS="$CPPFLAGS"
574         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
575         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
576         CPPFLAGS="$saved_CPPFLAGS"
577     fi
578 fi
579 if test $HAVE_XRENDER -eq 1; then
580     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
581         [Defined to 1 if the XRender extension exists.])
582 fi
583
584 dnl OpenGL
585 enable_opengl="no"
586 if test "$enable_glx" = "yes"; then
587     enable_opengl="yes"
588 fi
589
590 HAVE_GL=0
591 if test "$enable_opengl" = "yes"; then
592     HAVE_GL=1
593     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
594     saved_CPPFLAGS="$CPPFLAGS"
595     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
596     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
597 #ifdef HAVE_GL_GL_H
598 # include <GL/gl.h>
599 #endif
600     ])
601     CPPFLAGS="$saved_CPPFLAGS"
602 fi
603
604 dnl ... GLX
605 USE_GLX=0
606 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
607     USE_GLX=1
608     saved_CPPFLAGS="$CPPFLAGS"
609     saved_LIBS="$LIBS"
610     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
611     LIBS="$LIBS $GL_LIBS"
612     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
613 #ifdef HAVE_GL_GL_H
614 # include <GL/gl.h>
615 #endif
616     ])
617     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
618     CPPFLAGS="$saved_CPPFLAGS"
619     LIBS="$saved_LIBS"
620 fi
621
622 dnl Check for Wayland
623 USE_WAYLAND=0
624 if test "$enable_wayland" = "yes"; then
625     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
626         [USE_WAYLAND=1], [USE_WAYLAND=0])
627
628     if test $USE_WAYLAND -eq 1; then
629         saved_CPPFLAGS="$CPPFLAGS"
630         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
631         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
632         CPPFLAGS="$saved_CPPFLAGS"
633     fi
634 fi
635
636 dnl ---------------------------------------------------------------------------
637 dnl -- VA-API                                                                --
638 dnl ---------------------------------------------------------------------------
639
640 dnl Core API
641 LIBVA_PKGNAME="libva"
642 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
643 AC_SUBST(LIBVA_PKGNAME)
644
645 VA_VERSION=`$PKG_CONFIG --modversion libva`
646 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
647 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
648 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
649 VA_VERSION_STR="$VA_VERSION"
650
651 dnl VA/DRM API
652 HAVE_VA_DRM=0
653 if test $USE_DRM -eq 1; then
654     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
655         [HAVE_VA_DRM=1], [USE_DRM=0])
656
657     if test $HAVE_VA_DRM -eq 1; then
658         saved_CPPFLAGS="$CPPFLAGS"
659         CPPFLAGS="$LIBVA_DRM_CFLAGS"
660         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
661         CPPFLAGS="$saved_CPPFLAGS"
662     fi
663 fi
664
665 dnl VA/X11 API
666 HAVE_VA_X11=0
667 LIBVA_X11_PKGNAME="libva-x11"
668 if test $USE_X11 -eq 1; then
669     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
670         [HAVE_VA_X11=1], [USE_X11=0])
671 fi
672 AC_SUBST(LIBVA_X11_PKGNAME)
673
674 dnl VA/GLX API
675 HAVE_VA_GLX=0
676 LIBVA_GLX_PKGNAME="libva-glx"
677 if test $USE_GLX -eq 1; then
678     PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME >= va_api_glx_version],
679         [HAVE_VA_GLX=1], [LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"])
680
681     if test $HAVE_VA_GLX -eq 1; then
682         saved_CPPFLAGS="$CPPFLAGS"
683         CPPFLAGS="$LIBVA_GLX_CFLAGS"
684         AC_CHECK_HEADERS([va/va_glx.h], [:], [HAVE_VA_GLX=0])
685         CPPFLAGS="$saved_CPPFLAGS"
686     fi
687 fi
688 AC_SUBST(LIBVA_GLX_PKGNAME)
689
690 dnl Check for va_dec_jpeg.h header
691 saved_CPPFLAGS="$CPPFLAGS"
692 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
693 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
694 CPPFLAGS="$saved_CPPFLAGS"
695
696 dnl Check for JPEG decoding API (0.32.1+)
697 USE_JPEG_DECODER=0
698 AC_CACHE_CHECK([for JPEG decoding API],
699     ac_cv_have_jpeg_decoding_api, [
700     saved_CPPFLAGS="$CPPFLAGS"
701     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
702     saved_LIBS="$LIBS"
703     LIBS="$LIBS $LIBVA_LIBS"
704     AC_COMPILE_IFELSE(
705         [AC_LANG_PROGRAM(
706             [[#include <va/va.h>
707               #ifdef HAVE_VA_VA_DEC_JPEG_H
708               #include <va/va_dec_jpeg.h>
709               #endif
710             ]],
711             [[VAPictureParameterBufferJPEGBaseline pic_param;
712               VASliceParameterBufferJPEGBaseline slice_param;
713               VAHuffmanTableBufferJPEGBaseline huffman_table;
714               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
715         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
716         [ac_cv_have_jpeg_decoding_api="no"]
717     )
718     CPPFLAGS="$saved_CPPFLAGS"
719     LIBS="$saved_LIBS"
720 ])
721
722 dnl Check for va_dec_vp8.h header
723 saved_CPPFLAGS="$CPPFLAGS"
724 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
725 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [], [#include <va/va.h>])
726 CPPFLAGS="$saved_CPPFLAGS"
727
728 dnl Check for VP8 decoding API (0.34+)
729 USE_VP8_DECODER=0
730 AC_CACHE_CHECK([for VP8 decoding API],
731     ac_cv_have_vp8_decoding_api, [
732     saved_CPPFLAGS="$CPPFLAGS"
733     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
734     saved_LIBS="$LIBS"
735     LIBS="$LIBS $LIBVA_LIBS"
736     AC_COMPILE_IFELSE(
737         [AC_LANG_PROGRAM(
738             [[#include <va/va.h>
739               #ifdef HAVE_VA_VA_DEC_VP8_H
740               #include <va/va_dec_vp8.h>
741               #endif
742             ]],
743             [[VAPictureParameterBufferVP8 pic_param;
744               VASliceParameterBufferVP8 slice_param;
745               VAProbabilityDataBufferVP8 prob_data;
746               VAIQMatrixBufferVP8 iq_matrix;
747               slice_param.slice_data_offset = 0;
748               slice_param.slice_data_flag = 0;]])],
749         [ac_cv_have_vp8_decoding_api="yes" USE_VP8_DECODER=1],
750         [ac_cv_have_vp8_decoding_api="no"]
751     )
752     CPPFLAGS="$saved_CPPFLAGS"
753     LIBS="$saved_LIBS"
754 ])
755
756
757 dnl Check for vpp (video post-processing) support
758 USE_VA_VPP=0
759 AC_CACHE_CHECK([for video post-postprocessing API],
760     ac_cv_have_va_vpp_api, [
761     saved_CPPFLAGS="$CPPFLAGS"
762     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
763     saved_LIBS="$LIBS"
764     LIBS="$LIBS $LIBVA_LIBS"
765     AC_COMPILE_IFELSE(
766         [AC_LANG_PROGRAM(
767             [[#include <va/va.h>
768               #include <va/va_vpp.h>]],
769             [[VADisplay va_dpy;
770               VAContextID vpp_ctx;
771               VAProcFilterType filters[VAProcFilterCount];
772               unsigned int num_filters = VAProcFilterCount;
773               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
774               ]])],
775         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
776         [ac_cv_have_va_vpp_api="no"]
777     )
778     CPPFLAGS="$saved_CPPFLAGS"
779     LIBS="$saved_LIBS"
780 ])
781
782 dnl Check for encoding support
783 USE_ENCODERS=0
784 if test "$enable_encoders" = "yes"; then
785     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
786         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
787
788     if test $HAVE_VA_ENC -eq 1; then
789         saved_CPPFLAGS="$CPPFLAGS"
790         CPPFLAGS="$LIBVA_CFLAGS"
791         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
792             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
793             [#include <va/va.h>
794             ])
795         CPPFLAGS="$saved_CPPFLAGS"
796     fi
797 fi
798
799 dnl VA/Wayland API
800 if test "$enable_wayland" = "yes"; then
801     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
802         [:], [USE_WAYLAND=0])
803 fi
804
805 dnl ---------------------------------------------------------------------------
806 dnl -- Generate files and summary                                            --
807 dnl ---------------------------------------------------------------------------
808
809 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
810 *:1:*)
811     ;;
812 *)
813     AC_MSG_ERROR([No renderer is enabled])
814     ;;
815 esac
816
817 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
818     [Defined to 1 if video encoders are used])
819 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
820
821 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
822     [Defined to 1 if video post-processing is used])
823 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
824
825 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
826     [Defined to 1 if JPEG decoder is used])
827 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
828
829 AC_DEFINE_UNQUOTED(USE_VP8_DECODER, $USE_VP8_DECODER,
830     [Defined to 1 if VP8 decoder is used])
831 AM_CONDITIONAL(USE_VP8_DECODER, test $USE_VP8_DECODER -eq 1)
832
833 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
834     [Defined to 1 if DRM is enabled])
835 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
836
837 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
838     [Defined to 1 if X11 is enabled])
839 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
840
841 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
842     [Defined to 1 if GLX is enabled])
843 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
844
845 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
846     [Defined to 1 if WAYLAND is enabled])
847 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
848
849 pkgconfigdir=${libdir}/pkgconfig
850 AC_SUBST(pkgconfigdir)
851
852 AC_CONFIG_FILES([
853     Makefile
854     debian.upstream/Makefile
855     debian.upstream/changelog
856     debian.upstream/control
857     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
858 debian.upstream/gstreamer-vaapi-doc.install.in
859     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
860 debian.upstream/gstreamer-vaapi.install.in
861     debian.upstream/libgstvaapi$GST_API_VERSION-dev.install:\
862 debian.upstream/libgstvaapi-dev.install.in
863     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
864 debian.upstream/libgstvaapi.install.in
865     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
866 debian.upstream/libgstvaapi-drm.install.in
867     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
868 debian.upstream/libgstvaapi-glx.install.in
869     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
870 debian.upstream/libgstvaapi-wayland.install.in
871     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
872 debian.upstream/libgstvaapi-x11.install.in
873     docs/Makefile
874     docs/reference/Makefile
875     docs/reference/libs/Makefile
876     docs/reference/libs/libs-docs.xml
877     docs/reference/plugins/Makefile
878     docs/reference/plugins/plugins-docs.xml
879     ext/Makefile
880     ext/libvpx/Makefile
881     gst-libs/Makefile
882     gst-libs/gst/Makefile
883     gst-libs/gst/base/Makefile
884     gst-libs/gst/codecparsers/Makefile
885     gst-libs/gst/vaapi/Makefile
886     gst-libs/gst/video/Makefile
887     gst/Makefile
888     gst/vaapi/Makefile
889     patches/Makefile
890     patches/videoparsers/Makefile
891     pkgconfig/Makefile
892     pkgconfig/gstreamer-vaapi-$GST_PKG_VERSION.pc:\
893 pkgconfig/gstreamer-vaapi.pc.in
894     pkgconfig/gstreamer-vaapi-drm-$GST_PKG_VERSION.pc:\
895 pkgconfig/gstreamer-vaapi-drm.pc.in
896     pkgconfig/gstreamer-vaapi-glx-$GST_PKG_VERSION.pc:\
897 pkgconfig/gstreamer-vaapi-glx.pc.in
898     pkgconfig/gstreamer-vaapi-wayland-$GST_PKG_VERSION.pc:\
899 pkgconfig/gstreamer-vaapi-wayland.pc.in
900     pkgconfig/gstreamer-vaapi-x11-$GST_PKG_VERSION.pc:\
901 pkgconfig/gstreamer-vaapi-x11.pc.in
902     tests/Makefile
903 ])
904 AC_OUTPUT
905
906 dnl Print summary
907 yesno() {
908     test $1 -eq 1 && echo yes || echo no
909 }
910
911 VIDEO_OUTPUTS=""
912 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
913 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
914 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
915 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
916
917 echo
918 echo $PACKAGE configuration summary:
919 echo
920 echo GStreamer API version ............ : $GST_API_VERSION
921 echo VA-API version ................... : $VA_VERSION_STR
922 echo Video encoding ................... : $(yesno $USE_ENCODERS)
923 echo Video outputs .................... : $VIDEO_OUTPUTS
924 echo