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