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