build: declare correctly parse lib built files
[platform/upstream/gstreamer.git] / configure.ac
1 # gstreamer-vaapi package version number
2 m4_define([gst_vaapi_major_version], [0])
3 m4_define([gst_vaapi_minor_version], [6])
4 m4_define([gst_vaapi_micro_version], [1])
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 # Configure defaults
13 m4_define([default_glapi],              [any])
14
15 # gstreamer-vaapi library (libtool) version number
16 m4_define([gst_vaapi_lt_current],       [7])
17 m4_define([gst2_vaapi_lt_current_bias], [4])
18 m4_define([gst4_vaapi_lt_current_bias], [5])
19 m4_define([gst6_vaapi_lt_current_bias], [6])
20 m4_define([gst8_vaapi_lt_current_bias], [7])
21 m4_define([gst_vaapi_lt_revision],      [0])
22 m4_define([gst_vaapi_lt_age],           [0])
23
24 # glib version number
25 m4_define([glib_version], [2.32])
26
27 # gstreamer version number
28 m4_define([gst_api_version],            [autodetect])
29 m4_define([gst12_version],              [1.1.90])
30 m4_define([gst12_plugins_base_version], [1.1.0])
31 m4_define([gst12_plugins_bad_version],  [1.1.0])
32 m4_define([gst14_version],              [1.2.90])
33 m4_define([gst14_plugins_base_version], [1.3.0])
34 m4_define([gst14_plugins_bad_version],  [1.3.0])
35 m4_define([gst16_version],              [1.5.0])
36 m4_define([gst16_plugins_base_version], [1.5.0])
37 m4_define([gst16_plugins_bad_version],  [1.5.0])
38 m4_define([gst18_version],              [1.7.0])
39 m4_define([gst18_plugins_base_version], [1.7.0])
40 m4_define([gst18_plugins_bad_version],  [1.7.0])
41
42 # Wayland minimum version number
43 m4_define([wayland_api_version], [1.0.2])
44
45 # VA-API minimum version number
46 m4_define([va_api_version],     [0.30.4])
47 m4_define([va_api_enc_version], [0.34.0])
48 m4_define([va_api_drm_version], [0.33.0])
49 m4_define([va_api_x11_version], [0.31.0])
50 m4_define([va_api_wld_version], [0.33.0])
51
52 # libva package version number
53 m4_define([libva_enc_package_version], [1.2.0])
54 m4_define([libva_drm_package_version], [1.1.0])
55 m4_define([libva_x11_package_version], [1.0.3])
56 m4_define([libva_wld_package_version], [1.1.0])
57
58 # gtk-doc version number
59 # XXX: introspection annotations require gtk-doc >= 1.12
60 m4_define([gtkdoc_version], [1.9])
61
62 AC_PREREQ([2.66])
63 AC_INIT([gst_vaapi], [gst_vaapi_version],
64     [gwenole.beauchesne@intel.com, sreerenj.balachandran@intel.com],
65     [gstreamer-vaapi])
66
67 AC_CONFIG_HEADERS([config.h])
68 AC_CONFIG_SRCDIR([Makefile.am])
69 AC_CONFIG_MACRO_DIR([m4])
70 AC_CONFIG_AUX_DIR([build-aux])
71
72 AC_CANONICAL_TARGET
73
74 AM_INIT_AUTOMAKE([1.11 tar-ustar no-dist-gzip dist-bzip2])
75
76 TODAY="`LC_ALL=C date +'%a, %d %b %Y %X %z'`"
77 AC_SUBST(TODAY)
78
79 LIBVA_PACKAGE_VERSION=libva_x11_package_version
80 AC_SUBST(LIBVA_PACKAGE_VERSION)
81
82 WAYLAND_API_VERSION=wayland_api_version
83 AC_SUBST(WAYLAND_API_VERSION)
84
85 dnl Use pretty build output with automake >= 1.11
86 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [
87   AM_DEFAULT_VERBOSITY=1
88   AC_SUBST(AM_DEFAULT_VERBOSITY)
89 ])
90
91 dnl Check for tools
92 AC_PROG_CC
93 AM_PROG_CC_C_O
94
95 AC_ARG_VAR([GIT], [Path to git program, if any])
96 AC_PATH_PROG([GIT], [git])
97 AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
98
99 dnl Initialize libtool
100 LT_PREREQ([2.2])
101 LT_INIT
102
103 AC_ARG_ENABLE(builtin_videoparsers,
104     AS_HELP_STRING([--enable-builtin-videoparsers],
105                    [enable built-in videoparsers @<:@default=yes@:>@]),
106     [], [enable_builtin_videoparsers="yes"])
107
108 AC_ARG_ENABLE(builtin_codecparsers,
109     AS_HELP_STRING([--enable-builtin-codecparsers],
110                    [enable built-in codecparsers @<:@default=yes@:>@]),
111     [], [enable_builtin_codecparsers="yes"])
112
113 AC_ARG_ENABLE(builtin_libvpx,
114     AS_HELP_STRING([--enable-builtin-libvpx],
115                    [enable built-in libvpx @<:@default=yes@:>@]),
116     [], [enable_builtin_libvpx="yes"])
117
118 AC_ARG_ENABLE([encoders],
119     AS_HELP_STRING([--enable-encoders],
120                    [enable video encoders @<:@default=yes@:>@]),
121     [], [enable_encoders="yes"])
122
123 AC_ARG_ENABLE(drm,
124     AS_HELP_STRING([--enable-drm],
125                    [enable DRM backend @<:@default=yes@:>@]),
126     [], [enable_drm="yes"])
127
128 AC_ARG_ENABLE(x11,
129     AS_HELP_STRING([--enable-x11],
130                    [enable X11 output @<:@default=yes@:>@]),
131     [], [enable_x11="yes"])
132
133 AC_ARG_ENABLE(glx,
134     AS_HELP_STRING([--enable-glx],
135                    [enable OpenGL/X11 output @<:@default=yes@:>@]),
136     [], [enable_glx="yes"])
137
138 AC_ARG_ENABLE(wayland,
139     AC_HELP_STRING([--enable-wayland],
140                    [enable Wayland output @<:@default=yes@:>@]),
141     [], [enable_wayland="yes"])
142
143 AC_ARG_ENABLE([egl],
144     AS_HELP_STRING([--enable-egl],
145         [enable EGL output @<:@default=yes@:>@]),
146     [], [enable_egl="yes"])
147
148 AC_ARG_WITH([glapi],
149     AS_HELP_STRING([--with-glapi=APIs],
150         [build with the specified OpenGL APIs @<:@default=default_glapi@:>@]),
151     [GLAPI="$with_glapi"], [GLAPI=default_glapi])
152
153
154 dnl Check fr YASM
155 AC_ARG_VAR([YASM], [Path to yasm program, if any])
156 AC_PATH_PROG([YASM], [yasm])
157 if test -z "$YASM" -a "$enable_builtin_libvpx" = "yes"; then
158     AC_MSG_ERROR([yasm is needed to build libvpx sources])
159 fi
160
161 dnl Check for PATCH
162 AC_ARG_VAR([PATCH], [Path to patch program, if any])
163 AC_PATH_PROG([PATCH], [patch])
164 if test -z "$PATCH" -a "$enable_builtin_videoparsers" = "yes"; then
165     AC_MSG_ERROR([patch is needed to apply patches for built videoparsers
166 sources])
167 fi
168
169 dnl Check for basic libraries
170 AC_CHECK_LIB(m, tan)
171
172 dnl Check for Gtk doc
173 GTKDOC_VERSION=gtkdoc_version
174 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
175 m4_ifdef([GTK_DOC_CHECK], [
176 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
177 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
178 AC_SUBST(GTKDOC_VERSION)
179
180 dnl Check for GLib
181 GLIB_VERSION_REQUIRED=glib_version
182 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
183 AC_SUBST(GLIB_VERSION_REQUIRED)
184
185 dnl Check to see if dlopen is in default libraries (like Solaris, which
186 dnl has it in libc), or if libdl is needed to get it.
187 AC_CHECK_FUNC([dlopen], [], [
188     AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
189 AC_SUBST([DLOPEN_LIBS])
190
191 dnl ---------------------------------------------------------------------------
192 dnl -- GStreamer                                                             --
193 dnl ---------------------------------------------------------------------------
194 AC_MSG_CHECKING([for GStreamer API version])
195 if $PKG_CONFIG --exists "gstreamer-1.0"; then
196     gst_version=`$PKG_CONFIG --modversion "gstreamer-1.0"`
197     gst_major_version=`echo "$gst_version" | cut -d'.' -f1`
198     gst_minor_version=`echo "$gst_version" | cut -d'.' -f2`
199     GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
200     GST_PKG_VERSION="1.0"
201 fi
202 if test -z "$GST_PKG_VERSION"; then
203     AC_MSG_ERROR([gstreamer-1.0 was not found])
204 fi
205 AC_MSG_RESULT([$GST_API_VERSION])
206
207 AC_DEFINE_UNQUOTED([GST_API_VERSION_S], ["$GST_API_VERSION"],
208     [Defined to the string representation of GStreamer version])
209
210 dnl Versions for GStreamer and plugins-base
211 case $GST_API_VERSION in
212 1.2)
213     GST_VERSION_REQUIRED=gst12_version
214     GST_PLUGINS_BASE_VERSION_REQUIRED=gst12_plugins_base_version
215     GST_PLUGINS_BAD_VERSION_REQUIRED=gst12_plugins_bad_version
216     ;;
217 1.4)
218     GST_VERSION_REQUIRED=gst14_version
219     GST_PLUGINS_BASE_VERSION_REQUIRED=gst14_plugins_base_version
220     GST_PLUGINS_BAD_VERSION_REQUIRED=gst14_plugins_bad_version
221     ;;
222 1.[[5-6]])
223     GST_VERSION_REQUIRED=gst16_version
224     GST_PLUGINS_BASE_VERSION_REQUIRED=gst16_plugins_base_version
225     GST_PLUGINS_BAD_VERSION_REQUIRED=gst16_plugins_bad_version
226     ;;
227 1.[[7-8]])
228     GST_VERSION_REQUIRED=gst18_version
229     GST_PLUGINS_BASE_VERSION_REQUIRED=gst18_plugins_base_version
230     GST_PLUGINS_BAD_VERSION_REQUIRED=gst18_plugins_bad_version
231     ;;
232 *)
233     AC_MSG_ERROR([unsupported GStreamer API version $GST_API_VERSION])
234     ;;
235 esac
236 AC_SUBST(GST_API_VERSION)
237 AC_SUBST(GST_VERSION_REQUIRED)
238 AC_SUBST(GST_PLUGINS_BASE_VERSION_REQUIRED)
239 AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
240
241 USE_GST_API_1_2p="no"
242 USE_GST_API_1_4p="no"
243 AS_VERSION_COMPARE([$GST_API_VERSION], [1.2],
244     [], [USE_GST_API_1_2p="yes"], [USE_GST_API_1_2p="yes"])
245 AS_VERSION_COMPARE([$GST_API_VERSION], [1.4],
246     [], [USE_GST_API_1_4p="yes"], [USE_GST_API_1_4p="yes"])
247 AM_CONDITIONAL([USE_GST_API_1_2p], [test "$USE_GST_API_1_2p" = "yes"])
248 AM_CONDITIONAL([USE_GST_API_1_4p], [test "$USE_GST_API_1_4p" = "yes"])
249
250 AC_SUBST([GST_PKG_VERSION])
251
252 AC_DEFINE_UNQUOTED([GST_PKG_VERSION_S], ["$GST_PKG_VERSION"],
253     [Defined to the string representation of GStreamer API version])
254
255 if test "$GST_API_VERSION" = "1.2"; then
256     AC_MSG_WARN([support for GStreamer 1.2 is obsolete, and will be removed])
257 fi
258
259 dnl GStreamer Core
260 PKG_CHECK_MODULES([GST],
261     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
262 PKG_CHECK_MODULES([GST_BASE],
263     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
264
265 dnl GStreamer -base plugins
266 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
267     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
268 if test "$GST_API_VERSION" = "0.10"; then
269 PKG_CHECK_MODULES([GST_INTERFACES],
270     [gstreamer-interfaces-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
271 fi
272
273 dnl ... gst_dmabuf_memory_get_fd (gstreamer-allocators)
274 PKG_CHECK_MODULES([GST_ALLOCATORS],
275     [gstreamer-allocators-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
276
277 dnl ... GstVideoOverlayComposition (gstreamer-video)
278 PKG_CHECK_MODULES([GST_VIDEO],
279     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
280
281 dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
282 if test "$USE_GST_API_1_2p" != "yes" && test "$USE_GST_API_1_4p" != "yes"; then
283 PKG_CHECK_MODULES([GST_BASEVIDEO],
284     [gstreamer-basevideo-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
285 fi
286
287 dnl ... bitstream parsers
288 if test "$enable_builtin_codecparsers" = "yes"; then
289     ac_cv_have_gst_mpeg2_parser="no"
290     ac_cv_have_gst_h264_parser="no"
291     ac_cv_have_gst_jpeg_parser="no"
292     ac_cv_have_gst_vp8_parser="no"
293     ac_cv_have_gst_h265_parser="no"
294     ac_cv_have_gst_vp9_parser="no"
295 else
296 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
297     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
298 fi
299
300 dnl ... MPEG-2 parser, with the required extensions
301 AC_CACHE_CHECK([for MPEG-2 parser],
302     ac_cv_have_gst_mpeg2_parser, [
303     saved_CPPFLAGS="$CPPFLAGS"
304     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
305     saved_LIBS="$LIBS"
306     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
307     AC_COMPILE_IFELSE(
308         [AC_LANG_PROGRAM(
309             [[#include <gst/codecparsers/gstmpegvideoparser.h>]],
310             [[GstMpegVideoSequenceHdr seq_hdr;
311               GstMpegVideoSequenceExt seq_ext;
312               GstMpegVideoSequenceDisplayExt seq_dpy;
313               GstMpegVideoSliceHdr slice_hdr;
314               GstMpegVideoPacket packet;
315               gst_mpeg_video_packet_parse_slice_header(&packet, &slice_hdr,
316                   &seq_hdr, NULL);
317               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
318                   &seq_ext, &seq_dpy);]])],
319         [ac_cv_have_gst_mpeg2_parser="yes"],
320         [ac_cv_have_gst_mpeg2_parser="no"]
321     )
322     CPPFLAGS="$saved_CPPFLAGS"
323     LIBS="$saved_LIBS"
324 ])
325 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
326     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
327
328 dnl ... H.264 parser, with the required extensions
329 AC_CACHE_CHECK([for H.264 parser],
330     ac_cv_have_gst_h264_parser, [
331     saved_CPPFLAGS="$CPPFLAGS"
332     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
333     saved_LIBS="$LIBS"
334     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
335     AC_COMPILE_IFELSE(
336         [AC_LANG_PROGRAM(
337             [[#include <gst/codecparsers/gsth264parser.h>]],
338             [[GstH264SliceHdr slice_hdr;
339               GstH264VUIParams vui_params;
340               GstH264Profile profile = GST_H264_PROFILE_HIGH;
341               slice_hdr.n_emulation_prevention_bytes = 0;
342               vui_params.par_n = 0;
343               vui_params.par_d = 0;
344               GstH264SPS sps;
345               sps.extension.mvc.num_views_minus1 = 1;
346               GstH264NalUnit nalu;
347               nalu.extension_type = GST_H264_NAL_EXTENSION_MVC;]])],
348         [ac_cv_have_gst_h264_parser="yes"],
349         [ac_cv_have_gst_h264_parser="no"]
350     )
351     CPPFLAGS="$saved_CPPFLAGS"
352     LIBS="$saved_LIBS"
353 ])
354 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
355     [test "$ac_cv_have_gst_h264_parser" != "yes"])
356
357 dnl ... JPEG parser, not upstream yet
358 AC_CACHE_CHECK([for JPEG parser],
359     ac_cv_have_gst_jpeg_parser, [
360     saved_CPPFLAGS="$CPPFLAGS"
361     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
362     saved_LIBS="$LIBS"
363     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
364     AC_COMPILE_IFELSE(
365         [AC_LANG_PROGRAM(
366             [[#include <gst/codecparsers/gstjpegparser.h>]],
367             [[GstJpegImage jpeg_image;]])],
368         [ac_cv_have_gst_jpeg_parser="yes"],
369         [ac_cv_have_gst_jpeg_parser="no"]
370     )
371     CPPFLAGS="$saved_CPPFLAGS"
372     LIBS="$saved_LIBS"
373 ])
374 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
375     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
376
377 dnl ... VP8 parser, not upstream yet
378 if test "$enable_builtin_libvpx" = "yes"; then
379     ac_cv_have_gst_vp8_parser="no"
380 fi
381 AC_CACHE_CHECK([for VP8 parser],
382     ac_cv_have_gst_vp8_parser, [
383     saved_CPPFLAGS="$CPPFLAGS"
384     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
385     saved_LIBS="$LIBS"
386     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
387     AC_COMPILE_IFELSE(
388         [AC_LANG_PROGRAM(
389             [[#include <gst/codecparsers/gstvp8parser.h>]],
390             [[GstVp8FrameHdr frame_hdr;]])],
391         [ac_cv_have_gst_vp8_parser="yes"],
392         [ac_cv_have_gst_vp8_parser="no"]
393     )
394     CPPFLAGS="$saved_CPPFLAGS"
395     LIBS="$saved_LIBS"
396 ])
397 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_VP8],
398     [test "$ac_cv_have_gst_vp8_parser" != "yes"])
399 AM_CONDITIONAL([USE_BUILTIN_LIBVPX], [test "$enable_builtin_libvpx" = "yes"])
400
401 dnl ... VP9 parser, with required extensions
402 AC_CACHE_CHECK([for VP9 parser],
403     ac_cv_have_gst_vp9_parser, [
404     saved_CPPFLAGS="$CPPFLAGS"
405     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
406     saved_LIBS="$LIBS"
407     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
408     AC_COMPILE_IFELSE(
409         [AC_LANG_PROGRAM(
410             [[#include <gst/codecparsers/gstvp9parser.h>]],
411             [[GstVp9FrameHdr frame_hdr;]])],
412         [ac_cv_have_gst_vp9_parser="yes"],
413         [ac_cv_have_gst_vp9_parser="no"]
414     )
415     CPPFLAGS="$saved_CPPFLAGS"
416     LIBS="$saved_LIBS"
417 ])
418 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_VP9],
419     [test "$ac_cv_have_gst_vp9_parser" != "yes"])
420
421 dnl ... H.265 parser, with the required extensions
422 AC_CACHE_CHECK([for H.265 parser],
423     ac_cv_have_gst_h265_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/gsth265parser.h>]],
431             [[GstH265SliceHdr slice_hdr;
432               GstH265VUIParams vui_params;
433               GstH265Profile profile = GST_H265_PROFILE_MAIN_STILL_PICTURE;
434               slice_hdr.n_emulation_prevention_bytes = 0;
435               vui_params.par_n = 0;
436               vui_params.par_d = 0;
437               GstH265SPS sps;
438               sps.crop_rect_x = 0;
439               sps.crop_rect_width = 0;]])],
440         [ac_cv_have_gst_h265_parser="yes"],
441         [ac_cv_have_gst_h265_parser="no"]
442     )
443     CPPFLAGS="$saved_CPPFLAGS"
444     LIBS="$saved_LIBS"
445 ])
446 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H265],
447     [test "$ac_cv_have_gst_h265_parser" != "yes"])
448
449 dnl ... video parsers
450 AM_CONDITIONAL([USE_LOCAL_VIDEO_PARSERS],
451     [test "$enable_builtin_videoparsers" = "yes"])
452
453 dnl ... opengl helper libraries
454 HAVE_GSTGL=0
455 if test "$enable_glx" = "yes" -o "$enable_egl" = "yes"; then
456     PKG_CHECK_MODULES([GST_GL],
457         [gstreamer-gl-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED],
458         [HAVE_GSTGL=1], [HAVE_GSTGL=0])
459 fi
460
461 if test $HAVE_GSTGL -eq 1; then
462     AC_CACHE_CHECK([for GStreamer OpenGL helper libraries],
463         [ac_cv_have_gst_gl_helpers], [
464         saved_CPPFLAGS="$CPPFLAGS"
465         CPPFLAGS="$CPPFLAGS $GST_GL_CFLAGS $GST_VIDEO_CFLAGS"
466         saved_LIBS="$LIBS"
467         LIBS="$saved_LIBS"
468         AC_CHECK_HEADERS([gst/gl/gl.h], [:], [HAVE_GSTGL=0])
469         AC_COMPILE_IFELSE(
470             [AC_LANG_PROGRAM(
471                 [[#include <gst/gl/gl.h>]],
472                 [[GstGLContext gl_context;]])],
473             [ac_cv_have_gst_gl_helpers="yes"],
474             [ac_cv_have_gst_gl_helpers="no" HAVE_GSTGL=0]
475         )
476         CPPFLAGS="$saved_CPPFLAGS"
477         LIBS="$saved_LIBS"
478     ])
479 fi
480 AM_CONDITIONAL([USE_GST_GL_HELPERS], [test $HAVE_GSTGL -eq 1])
481
482 AC_DEFINE_UNQUOTED([USE_GST_GL_HELPERS], [$HAVE_GSTGL],
483     [Defined to 1 if GStreamer OpenGL helper libraries are available])
484
485 if test "$enable_egl" = "yes" -a $HAVE_GSTGL -ne 1; then
486     AC_MSG_WARN([GStreamer/GL helper libraries not found, disabling EGL support])
487     enable_egl="no"
488 fi
489
490 case $GST_API_VERSION in
491 1.2)    lt_bias=gst2_vaapi_lt_current_bias;;
492 1.4)    lt_bias=gst4_vaapi_lt_current_bias;;
493 1.[[5-6]])    lt_bias=gst6_vaapi_lt_current_bias;;
494 1.[[7-8]])    lt_bias=gst8_vaapi_lt_current_bias;;
495 esac
496 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
497 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
498
499 AC_DEFINE_UNQUOTED([GST_VAAPI_MAJOR_VERSION_S], ["$GST_VAAPI_MAJOR_VERSION"],
500     [Defined to the string representation of gstreamer-vaapi major version])
501
502 dnl GST_VAAPI_LT_LDFLAGS:
503 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
504 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
505 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
506 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
507 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
508 AC_SUBST(GST_VAAPI_LT_VERSION)
509 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
510
511 dnl GST_ALL_LDFLAGS:
512 dnl LDFLAGS really should only contain flags, not libs - they get added before
513 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
514 GST_ALL_LDFLAGS="-no-undefined"
515 AC_SUBST(GST_ALL_LDFLAGS)
516
517 dnl GST_PLUGIN_LDFLAGS:
518 dnl this really should only contain flags, not libs - they get added before
519 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
520 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
521 AC_SUBST(GST_PLUGIN_LDFLAGS)
522
523 dnl Check for the GStreamer plugins directory
524 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
525 AC_MSG_CHECKING([for GStreamer plugins directory])
526 if test -d "$GST_PLUGIN_PATH_1_0"; then
527     GST_PLUGINS_DIR="$GST_PLUGIN_PATH_1_0"
528 else
529     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
530     if test -z "$GST_PLUGINS_DIR"; then
531         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
532     fi
533 fi
534 AC_MSG_RESULT([$GST_PLUGINS_DIR])
535 plugindir="$GST_PLUGINS_DIR"
536 AC_SUBST(plugindir)
537
538 dnl ---------------------------------------------------------------------------
539 dnl -- Renderers                                                             --
540 dnl ---------------------------------------------------------------------------
541
542 dnl Check for DRM/libudev
543 USE_DRM=0
544 if test "$enable_drm" = "yes"; then
545     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
546     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
547
548     if test $USE_DRM -eq 1; then
549         saved_CPPFLAGS="$CPPFLAGS"
550         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
551         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
552         CPPFLAGS="$saved_CPPFLAGS"
553     fi
554 fi
555
556 dnl Check for X11
557 USE_X11=0
558 if test "$enable_x11" = "yes"; then
559     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
560     if test $USE_X11 -eq 1; then
561         saved_CPPFLAGS="$CPPFLAGS"
562         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
563         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
564         CPPFLAGS="$saved_CPPFLAGS"
565     fi
566 fi
567
568 dnl Check for XKB library
569 HAVE_XKBLIB=0
570 if test $USE_X11 -eq 1; then
571     AC_CHECK_HEADERS([X11/XKBlib.h], [HAVE_XKBLIB=1], [:])
572 fi
573 if test $HAVE_XKBLIB -eq 1; then
574     AC_DEFINE_UNQUOTED([HAVE_XKBLIB], 1,
575         [Defined to 1 if the XKB extension exists.])
576 fi
577
578 dnl Check for XRandR
579 HAVE_XRANDR=0
580 if test $USE_X11 -eq 1; then
581     HAVE_XRANDR=1
582     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
583     if test $HAVE_XRANDR -eq 1; then
584         saved_CPPFLAGS="$CPPFLAGS"
585         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
586         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
587         CPPFLAGS="$saved_CPPFLAGS"
588     fi
589 fi
590 if test $HAVE_XRANDR -eq 1; then
591     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
592         [Defined to 1 if the XRandR extension exists.])
593 fi
594
595 dnl Check for XRender
596 HAVE_XRENDER=0
597 if test $USE_X11 -eq 1; then
598     HAVE_XRENDER=1
599     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
600     if test $HAVE_XRENDER -eq 1; then
601         saved_CPPFLAGS="$CPPFLAGS"
602         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
603         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
604         CPPFLAGS="$saved_CPPFLAGS"
605     fi
606 fi
607 if test $HAVE_XRENDER -eq 1; then
608     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
609         [Defined to 1 if the XRender extension exists.])
610 fi
611
612 dnl OpenGL
613 enable_opengl="no"
614 if test "$enable_glx" = "yes"; then
615     enable_opengl="yes"
616 fi
617 if test "$enable_egl" = "yes"; then
618     enable_opengl="yes"
619 fi
620 GLES_VERSION_MASK=0
621
622 HAVE_GL=0
623 if test "$enable_opengl" = "yes"; then
624 case ",$GLAPI," in
625 (*,any,*|*,gl,*)
626     HAVE_GL=1
627     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
628     saved_CPPFLAGS="$CPPFLAGS"
629     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
630     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
631 #ifdef HAVE_GL_GL_H
632 # include <GL/gl.h>
633 #endif
634     ])
635     CPPFLAGS="$saved_CPPFLAGS"
636     ;;
637 esac
638 fi
639 GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GL "*" 1`
640
641 dnl OpenGL|ESv2
642 HAVE_GLESv2=0
643 if test "$enable_opengl" = "yes"; then
644 case ",$GLAPI," in
645 (*,any,*|*,gles2,*)
646     HAVE_GLESv2=1
647     PKG_CHECK_MODULES([GLES2], [glesv2], [:], [HAVE_GLESv2=0])
648     saved_CPPFLAGS="$CPPFLAGS"
649     CPPFLAGS="$CPPFLAGS $GLES2_CFLAGS"
650     AC_CHECK_HEADERS([GLES2/gl2.h GLES2/gl2ext.h], [:],
651         [HAVE_GLESv2=0], [
652 #ifdef HAVE_GLES2_GL2_H
653 # include <GLES2/gl2.h>
654 #endif
655     ])
656     CPPFLAGS="$saved_CPPFLAGS"
657     ;;
658 esac
659 fi
660 GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv2 "*" 4`
661
662 dnl OpenGL|ESv3
663 HAVE_GLESv3=0
664 if test "$enable_opengl" = "yes"; then
665 case ",$GLAPI," in
666 (*,any,*|*,gles3,*)
667     HAVE_GLESv3=1
668     PKG_CHECK_MODULES([GLES3], [glesv2], [:], [HAVE_GLESv3=0])
669     saved_CPPFLAGS="$CPPFLAGS"
670     CPPFLAGS="$CPPFLAGS $GLES3_CFLAGS"
671     AC_CHECK_HEADERS([GLES3/gl3.h GLES3/gl3ext.h GLES2/gl2ext.h], [:],
672         [HAVE_GLESv3=0], [
673 #ifdef HAVE_GLES3_GL3_H
674 # include <GLES3/gl3.h>
675 #endif
676     ])
677     CPPFLAGS="$saved_CPPFLAGS"
678     ;;
679 esac
680 fi
681 GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv3 "*" 8`
682
683 dnl ... GLX
684 USE_GLX=0
685 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
686     USE_GLX=1
687     saved_CPPFLAGS="$CPPFLAGS"
688     saved_LIBS="$LIBS"
689     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
690     LIBS="$LIBS $GL_LIBS"
691     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
692 #ifdef HAVE_GL_GL_H
693 # include <GL/gl.h>
694 #endif
695     ])
696     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
697     CPPFLAGS="$saved_CPPFLAGS"
698     LIBS="$saved_LIBS"
699 fi
700
701 dnl ... EGL
702 USE_EGL=0
703 if test "$enable_egl" = "yes" -a $GLES_VERSION_MASK -ne 0; then
704     USE_EGL=1
705     PKG_CHECK_MODULES([EGL], [egl], [:], [USE_EGL=0])
706     saved_CPPFLAGS="$CPPFLAGS"
707     saved_LIBS="$LIBS"
708     AC_CHECK_HEADERS([EGL/egl.h], [:], [USE_EGL=0])
709     AC_CHECK_LIB([EGL], [eglGetDisplay], [:], [USE_EGL=0])
710     CPPFLAGS="$saved_CPPFLAGS"
711     LIBS="$saved_LIBS"
712 fi
713
714 dnl Check for Wayland
715 USE_WAYLAND=0
716 if test "$enable_wayland" = "yes"; then
717     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
718         [USE_WAYLAND=1], [USE_WAYLAND=0])
719
720     if test $USE_WAYLAND -eq 1; then
721         saved_CPPFLAGS="$CPPFLAGS"
722         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
723         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
724         CPPFLAGS="$saved_CPPFLAGS"
725     fi
726 fi
727
728 dnl ---------------------------------------------------------------------------
729 dnl -- VA-API                                                                --
730 dnl ---------------------------------------------------------------------------
731
732 dnl Core API
733 LIBVA_PKGNAME="libva"
734 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
735 AC_SUBST(LIBVA_PKGNAME)
736
737 VA_VERSION=`$PKG_CONFIG --modversion libva`
738 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
739 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
740 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
741 VA_VERSION_STR="$VA_VERSION"
742
743 dnl VA/DRM API
744 HAVE_VA_DRM=0
745 if test $USE_DRM -eq 1; then
746     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
747         [HAVE_VA_DRM=1], [USE_DRM=0])
748
749     if test $HAVE_VA_DRM -eq 1; then
750         saved_CPPFLAGS="$CPPFLAGS"
751         CPPFLAGS="$LIBVA_DRM_CFLAGS"
752         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
753         CPPFLAGS="$saved_CPPFLAGS"
754     fi
755 fi
756
757 dnl VA/X11 API
758 HAVE_VA_X11=0
759 LIBVA_X11_PKGNAME="libva-x11"
760 if test $USE_X11 -eq 1; then
761     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
762         [HAVE_VA_X11=1], [USE_X11=0])
763 fi
764 AC_SUBST(LIBVA_X11_PKGNAME)
765
766 dnl Check for va_dec_jpeg.h header
767 saved_CPPFLAGS="$CPPFLAGS"
768 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
769 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
770 CPPFLAGS="$saved_CPPFLAGS"
771
772 dnl Check for JPEG decoding API (0.32.1+)
773 USE_JPEG_DECODER=0
774 AC_CACHE_CHECK([for JPEG decoding API],
775     ac_cv_have_jpeg_decoding_api, [
776     saved_CPPFLAGS="$CPPFLAGS"
777     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
778     saved_LIBS="$LIBS"
779     LIBS="$LIBS $LIBVA_LIBS"
780     AC_COMPILE_IFELSE(
781         [AC_LANG_PROGRAM(
782             [[#include <va/va.h>
783               #ifdef HAVE_VA_VA_DEC_JPEG_H
784               #include <va/va_dec_jpeg.h>
785               #endif
786             ]],
787             [[VAPictureParameterBufferJPEGBaseline pic_param;
788               VASliceParameterBufferJPEGBaseline slice_param;
789               VAHuffmanTableBufferJPEGBaseline huffman_table;
790               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
791         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
792         [ac_cv_have_jpeg_decoding_api="no"]
793     )
794     CPPFLAGS="$saved_CPPFLAGS"
795     LIBS="$saved_LIBS"
796 ])
797
798 dnl Check for va_dec_vp8.h header
799 saved_CPPFLAGS="$CPPFLAGS"
800 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
801 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [], [#include <va/va.h>])
802 CPPFLAGS="$saved_CPPFLAGS"
803
804 dnl Check for VP8 decoding API (0.34+)
805 USE_VP8_DECODER=0
806 AC_CACHE_CHECK([for VP8 decoding API],
807     ac_cv_have_vp8_decoding_api, [
808     saved_CPPFLAGS="$CPPFLAGS"
809     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
810     saved_LIBS="$LIBS"
811     LIBS="$LIBS $LIBVA_LIBS"
812     AC_COMPILE_IFELSE(
813         [AC_LANG_PROGRAM(
814             [[#include <va/va.h>
815               #ifdef HAVE_VA_VA_DEC_VP8_H
816               #include <va/va_dec_vp8.h>
817               #endif
818             ]],
819             [[VAPictureParameterBufferVP8 pic_param;
820               VASliceParameterBufferVP8 slice_param;
821               VAProbabilityDataBufferVP8 prob_data;
822               VAIQMatrixBufferVP8 iq_matrix;
823               slice_param.slice_data_offset = 0;
824               slice_param.slice_data_flag = 0;]])],
825         [ac_cv_have_vp8_decoding_api="yes" USE_VP8_DECODER=1],
826         [ac_cv_have_vp8_decoding_api="no"]
827     )
828     CPPFLAGS="$saved_CPPFLAGS"
829     LIBS="$saved_LIBS"
830 ])
831
832 dnl Check for va_dec_vp9.h header
833 saved_CPPFLAGS="$CPPFLAGS"
834 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
835 AC_CHECK_HEADERS([va/va_dec_vp9.h], [], [], [#include <va/va.h>])
836 CPPFLAGS="$saved_CPPFLAGS"
837
838 dnl Check for VP9 decoding API (0.37+)
839 USE_VP9_DECODER=0
840 AC_CACHE_CHECK([for VP9 decoding API],
841     ac_cv_have_vp9_decoding_api, [
842     saved_CPPFLAGS="$CPPFLAGS"
843     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
844     saved_LIBS="$LIBS"
845     LIBS="$LIBS $LIBVA_LIBS"
846     AC_COMPILE_IFELSE(
847         [AC_LANG_PROGRAM(
848             [[#include <va/va.h>
849               #ifdef HAVE_VA_VA_DEC_VP9_H
850               #include <va/va_dec_vp9.h>
851               #endif
852             ]],
853             [[VADecPictureParameterBufferVP9 pic_param;
854               VASliceParameterBufferVP9 slice_param;
855               VASegmentParameterVP9 seg_param;
856               slice_param.slice_data_offset = 0;
857               slice_param.slice_data_flag = 0;]])],
858         [ac_cv_have_vp9_decoding_api="yes" USE_VP9_DECODER=1],
859         [ac_cv_have_vp9_decoding_api="no"]
860     )
861     CPPFLAGS="$saved_CPPFLAGS"
862     LIBS="$saved_LIBS"
863 ])
864
865 dnl Check for va_dec_hevc.h header
866 saved_CPPFLAGS="$CPPFLAGS"
867 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
868 AC_CHECK_HEADERS([va/va_dec_hevc.h], [], [], [#include <va/va.h>])
869 CPPFLAGS="$saved_CPPFLAGS"
870
871 dnl Check for HEVC decoding API (0.38+)
872 USE_HEVC_DECODER=0
873 AC_CACHE_CHECK([for HEVC decoding API],
874     ac_cv_have_hevc_decoding_api, [
875     saved_CPPFLAGS="$CPPFLAGS"
876     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
877     saved_LIBS="$LIBS"
878     LIBS="$LIBS $LIBVA_LIBS"
879     AC_COMPILE_IFELSE(
880         [AC_LANG_PROGRAM(
881             [[#include <va/va.h>
882               #ifdef HAVE_VA_VA_DEC_HEVC_H
883               #include <va/va_dec_hevc.h>
884               #endif
885             ]],
886             [[VAPictureParameterBufferHEVC pic_param;
887               VASliceParameterBufferHEVC slice_param;
888               VAIQMatrixBufferHEVC iq_matrix;
889               slice_param.slice_data_offset = 0;
890               slice_param.slice_data_flag = 0;]])],
891         [ac_cv_have_hevc_decoding_api="yes" USE_HEVC_DECODER=1],
892         [ac_cv_have_hevc_decoding_api="no"]
893     )
894     CPPFLAGS="$saved_CPPFLAGS"
895     LIBS="$saved_LIBS"
896 ])
897
898 dnl Check for vpp (video post-processing) support
899 USE_VA_VPP=0
900 AC_CACHE_CHECK([for video post-postprocessing API],
901     ac_cv_have_va_vpp_api, [
902     saved_CPPFLAGS="$CPPFLAGS"
903     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
904     saved_LIBS="$LIBS"
905     LIBS="$LIBS $LIBVA_LIBS"
906     AC_COMPILE_IFELSE(
907         [AC_LANG_PROGRAM(
908             [[#include <va/va.h>
909               #include <va/va_vpp.h>]],
910             [[VADisplay va_dpy;
911               VAContextID vpp_ctx;
912               VAProcFilterType filters[VAProcFilterCount];
913               unsigned int num_filters = VAProcFilterCount;
914               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
915               ]])],
916         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
917         [ac_cv_have_va_vpp_api="no"]
918     )
919     CPPFLAGS="$saved_CPPFLAGS"
920     LIBS="$saved_LIBS"
921 ])
922
923 dnl Check for encoding support
924 USE_ENCODERS=0
925 USE_JPEG_ENCODER=0
926 USE_VP8_ENCODER=0
927 USE_H265_ENCODER=0
928 if test "$enable_encoders" = "yes"; then
929     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
930         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
931
932     if test $HAVE_VA_ENC -eq 1; then
933         saved_CPPFLAGS="$CPPFLAGS"
934         CPPFLAGS="$LIBVA_CFLAGS"
935         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
936             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
937             [#include <va/va.h>
938             ])
939
940         dnl Check for JPEG Encoding API (0.37.0+)
941         AC_CHECK_HEADERS([va/va_enc_jpeg.h],
942             [USE_JPEG_ENCODER=1], [],
943             [#include <va/va.h>
944             ])
945         AC_CACHE_CHECK([for JPEG encoding API],
946             ac_cv_have_jpeg_encoding_api, [
947             saved_CPPFLAGS="$CPPFLAGS"
948             CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
949             saved_LIBS="$LIBS"
950             LIBS="$LIBS $LIBVA_LIBS"
951             AC_COMPILE_IFELSE(
952                 [AC_LANG_PROGRAM(
953                     [[#include <va/va.h>
954                       #ifdef HAVE_VA_VA_ENC_JPEG_H
955                       #include <va/va_enc_jpeg.h>
956                       #endif
957                     ]],
958                     [[VAEncPictureParameterBufferJPEG pic_param;
959                       VAEncSliceParameterBufferJPEG slice_param;
960                       VAQMatrixBufferJPEG q_matrix;]])],
961                 [ac_cv_have_jpeg_encoding_api="yes" USE_JPEG_ENCODER=1],
962                 [ac_cv_have_jpeg_encoding_api="no"]
963             )
964             CPPFLAGS="$saved_CPPFLAGS"
965             LIBS="$saved_LIBS"
966         ])
967
968         dnl Check for VP8 Encoding API
969         AC_CHECK_HEADERS([va/va_enc_vp8.h],
970             [USE_VP8_ENCODER=1], [],
971             [#include <va/va.h>
972             ])
973         AC_CACHE_CHECK([for VP8 encoding API],
974             ac_cv_have_vp8_encoding_api, [
975             saved_CPPFLAGS="$CPPFLAGS"
976             CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
977             saved_LIBS="$LIBS"
978             LIBS="$LIBS $LIBVA_LIBS"
979             AC_COMPILE_IFELSE(
980                 [AC_LANG_PROGRAM(
981                     [[#include <va/va.h>
982                       #ifdef HAVE_VA_VA_ENC_VP8_H
983                       #include <va/va_enc_vp8.h>
984                       #endif
985                     ]],
986                     [[VAEncSequenceParameterBufferVP8 seq_param;
987                       VAEncPictureParameterBufferVP8 pic_param;
988                       VAQMatrixBufferVP8 q_matrix;]])],
989                 [ac_cv_have_vp8_encoding_api="yes" USE_VP8_ENCODER=1],
990                 [ac_cv_have_vp8_encoding_api="no" USE_VP8_ENCODER=0]
991             )
992             CPPFLAGS="$saved_CPPFLAGS"
993             LIBS="$saved_LIBS"
994         ])
995         CPPFLAGS="$saved_CPPFLAGS"
996
997         dnl Check for H265/HEVC Encoding API
998         AC_CHECK_HEADERS([va/va_enc_hevc.h],
999             [USE_H265_ENCODER=1], [],
1000             [#include <va/va.h>
1001             ])
1002         AC_CACHE_CHECK([for HEVC encoding API],
1003             ac_cv_have_hevc_encoding_api, [
1004             saved_CPPFLAGS="$CPPFLAGS"
1005             CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
1006             saved_LIBS="$LIBS"
1007             LIBS="$LIBS $LIBVA_LIBS"
1008             AC_COMPILE_IFELSE(
1009                 [AC_LANG_PROGRAM(
1010                     [[#include <va/va.h>
1011                       #ifdef HAVE_VA_VA_ENC_HEVC_H
1012                       #include <va/va_enc_hevc.h>
1013                       #endif
1014                     ]],
1015                     [[VAEncSequenceParameterBufferHEVC seq_param;
1016                       VAEncPictureParameterBufferHEVC pic_param;
1017                       VAEncSliceParameterBufferHEVC;
1018                       VAQMatrixBufferHEVC q_matrix;]])],
1019                 [ac_cv_have_hevc_encoding_api="yes" USE_H265_ENCODER=1],
1020                 [ac_cv_have_hevc_encoding_api="no" USE_H265_ENCODER=0]
1021             )
1022             CPPFLAGS="$saved_CPPFLAGS"
1023             LIBS="$saved_LIBS"
1024         ])
1025         CPPFLAGS="$saved_CPPFLAGS"
1026     fi
1027 fi
1028
1029 dnl VA/Wayland API
1030 if test "$enable_wayland" = "yes"; then
1031     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
1032         [:], [USE_WAYLAND=0])
1033 fi
1034
1035 dnl ---------------------------------------------------------------------------
1036 dnl -- Generate files and summary                                            --
1037 dnl ---------------------------------------------------------------------------
1038
1039 case ":$USE_X11:$USE_GLX:$USE_EGL:$USE_WAYLAND:$USE_DRM:" in
1040 *:1:*)
1041     ;;
1042 *)
1043     AC_MSG_ERROR([No renderer is enabled])
1044     ;;
1045 esac
1046
1047 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
1048     [Defined to 1 if video encoders are used])
1049 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
1050
1051 AC_DEFINE_UNQUOTED(USE_JPEG_ENCODER, $USE_JPEG_ENCODER,
1052     [Defined to 1 if JPEG encoder is used])
1053 AM_CONDITIONAL(USE_JPEG_ENCODER, test $USE_JPEG_ENCODER -eq 1)
1054
1055 AC_DEFINE_UNQUOTED(USE_VP8_ENCODER, $USE_VP8_ENCODER,
1056     [Defined to 1 if VP8 encoder is used])
1057 AM_CONDITIONAL(USE_VP8_ENCODER, test $USE_VP8_ENCODER -eq 1)
1058
1059 AC_DEFINE_UNQUOTED(USE_H265_ENCODER, $USE_H265_ENCODER,
1060     [Defined to 1 if H265 encoder is used])
1061 AM_CONDITIONAL(USE_H265_ENCODER, test $USE_H265_ENCODER -eq 1)
1062
1063 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
1064     [Defined to 1 if video post-processing is used])
1065 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
1066
1067 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
1068     [Defined to 1 if JPEG decoder is used])
1069 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
1070
1071 AC_DEFINE_UNQUOTED(USE_VP8_DECODER, $USE_VP8_DECODER,
1072     [Defined to 1 if VP8 decoder is used])
1073 AM_CONDITIONAL(USE_VP8_DECODER, test $USE_VP8_DECODER -eq 1)
1074
1075 AC_DEFINE_UNQUOTED(USE_VP9_DECODER, $USE_VP9_DECODER,
1076     [Defined to 1 if VP9 decoder is used])
1077 AM_CONDITIONAL(USE_VP9_DECODER, test $USE_VP9_DECODER -eq 1)
1078
1079 AC_DEFINE_UNQUOTED(USE_HEVC_DECODER, $USE_HEVC_DECODER,
1080     [Defined to 1 if HEVC decoder is used])
1081 AM_CONDITIONAL(USE_HEVC_DECODER, test $USE_HEVC_DECODER -eq 1)
1082
1083 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
1084     [Defined to 1 if DRM is enabled])
1085 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
1086
1087 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
1088     [Defined to 1 if X11 is enabled])
1089 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
1090
1091 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
1092     [Defined to 1 if GLX is enabled])
1093 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
1094
1095 AC_DEFINE_UNQUOTED([USE_EGL], [$USE_EGL],
1096     [Defined to 1 if EGL is enabled])
1097 AM_CONDITIONAL([USE_EGL], [test $USE_EGL -eq 1])
1098
1099 AC_DEFINE_UNQUOTED([USE_GLES_VERSION_MASK], [$GLES_VERSION_MASK],
1100     [Defined to the set of enabled OpenGL ES APIs])
1101
1102 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
1103     [Defined to 1 if WAYLAND is enabled])
1104 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
1105
1106 pkgconfigdir=${libdir}/pkgconfig
1107 AC_SUBST(pkgconfigdir)
1108
1109 AC_CONFIG_FILES([
1110     Makefile
1111     debian.upstream/Makefile
1112     debian.upstream/changelog
1113     debian.upstream/control
1114     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
1115 debian.upstream/gstreamer-vaapi-doc.install.in
1116     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
1117 debian.upstream/gstreamer-vaapi.install.in
1118     debian.upstream/libgstvaapi$GST_PKG_VERSION-dev.install:\
1119 debian.upstream/libgstvaapi-dev.install.in
1120     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
1121 debian.upstream/libgstvaapi.install.in
1122     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
1123 debian.upstream/libgstvaapi-drm.install.in
1124     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
1125 debian.upstream/libgstvaapi-glx.install.in
1126     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
1127 debian.upstream/libgstvaapi-wayland.install.in
1128     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
1129 debian.upstream/libgstvaapi-x11.install.in
1130     docs/Makefile
1131     docs/reference/Makefile
1132     docs/reference/libs/Makefile
1133     docs/reference/libs/libs-docs.xml
1134     docs/reference/plugins/Makefile
1135     docs/reference/plugins/plugins-docs.xml
1136     ext/Makefile
1137     ext/libvpx/Makefile
1138     gst-libs/Makefile
1139     gst-libs/gst/Makefile
1140     gst-libs/gst/base/Makefile
1141     gst-libs/gst/codecparsers/Makefile
1142     gst-libs/gst/vaapi/Makefile
1143     gst/Makefile
1144     gst/vaapi/Makefile
1145     patches/Makefile
1146     patches/videoparsers/Makefile
1147     pkgconfig/Makefile
1148     pkgconfig/gstreamer-vaapi-$GST_PKG_VERSION.pc:\
1149 pkgconfig/gstreamer-vaapi.pc.in
1150     pkgconfig/gstreamer-vaapi-drm-$GST_PKG_VERSION.pc:\
1151 pkgconfig/gstreamer-vaapi-drm.pc.in
1152     pkgconfig/gstreamer-vaapi-glx-$GST_PKG_VERSION.pc:\
1153 pkgconfig/gstreamer-vaapi-glx.pc.in
1154     pkgconfig/gstreamer-vaapi-wayland-$GST_PKG_VERSION.pc:\
1155 pkgconfig/gstreamer-vaapi-wayland.pc.in
1156     pkgconfig/gstreamer-vaapi-x11-$GST_PKG_VERSION.pc:\
1157 pkgconfig/gstreamer-vaapi-x11.pc.in
1158     tests/Makefile
1159 ])
1160 AC_OUTPUT
1161
1162 dnl Print summary
1163 yesno() {
1164     test $1 -eq 1 && echo yes || echo no
1165 }
1166
1167 VIDEO_OUTPUTS=""
1168 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
1169 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
1170 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
1171 AS_IF([test $USE_EGL -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS egl"])
1172 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
1173
1174 echo
1175 echo $PACKAGE configuration summary:
1176 echo
1177 echo Installation Prefix .............. : ${prefix}
1178 echo GStreamer API version ............ : $GST_API_VERSION
1179 echo VA-API version ................... : $VA_VERSION_STR
1180 echo Video encoding ................... : $(yesno $USE_ENCODERS)
1181 echo Video outputs .................... : $VIDEO_OUTPUTS
1182 echo