build: hard-code an unneeded macro
[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([gst_vaapi_lt_revision],      [0])
18 m4_define([gst_vaapi_lt_age],           [0])
19
20 # glib version number
21 m4_define([glib_version], [2.32])
22
23 # gmodule version number
24 m4_define([gmodule_version], [2.32])
25
26 # gstreamer version number
27 m4_define([gst_version],                [1.6.3])
28 m4_define([gst_plugins_base_version],   [1.6.3])
29 m4_define([gst_plugins_bad_version],    [1.6.3])
30
31 # Wayland minimum version number
32 m4_define([wayland_api_version], [1.0.2])
33
34 # VA-API minimum version number
35 m4_define([va_api_version],     [0.30.4])
36 m4_define([va_api_enc_version], [0.34.0])
37 m4_define([va_api_drm_version], [0.33.0])
38 m4_define([va_api_x11_version], [0.31.0])
39 m4_define([va_api_wld_version], [0.33.0])
40
41 # gtk-doc version number
42 # XXX: introspection annotations require gtk-doc >= 1.12
43 m4_define([gtkdoc_version], [1.12])
44
45 AC_PREREQ([2.69])
46 AC_INIT([GStreamer VA-API Plug-ins], [gst_vaapi_version],
47   [http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],
48   [gstreamer-vaapi])
49
50 AC_CONFIG_HEADERS([config.h])
51 AC_CONFIG_SRCDIR([Makefile.am])
52 AC_CONFIG_MACRO_DIR([m4])
53 AC_CONFIG_AUX_DIR([build-aux])
54
55 AC_CANONICAL_TARGET
56
57 AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
58
59 dnl Use pretty build output
60 AM_SILENT_RULES([yes])
61
62 dnl Check for tools
63 AC_PROG_CC
64 AM_PROG_CC_C_O
65
66 AC_ARG_VAR([GIT], [Path to git program, if any])
67 AC_PATH_PROG([GIT], [git])
68 AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
69
70 dnl Initialize libtool
71 LT_PREREQ([2.2.6])
72 LT_INIT
73
74 AC_ARG_ENABLE([encoders],
75   AS_HELP_STRING([--enable-encoders],
76     [enable video encoders @<:@default=yes@:>@]),
77   [], [enable_encoders="yes"])
78
79 AC_ARG_ENABLE([drm],
80   AS_HELP_STRING([--enable-drm],
81     [enable DRM backend @<:@default=yes@:>@]),
82   [], [enable_drm="yes"])
83
84 AC_ARG_ENABLE([x11],
85   AS_HELP_STRING([--enable-x11],
86     [enable X11 output @<:@default=yes@:>@]),
87   [], [enable_x11="yes"])
88
89 AC_ARG_ENABLE([glx],
90   AS_HELP_STRING([--enable-glx],
91     [enable OpenGL/X11 output @<:@default=yes@:>@]),
92   [], [enable_glx="yes"])
93
94 AC_ARG_ENABLE([wayland],
95   AC_HELP_STRING([--enable-wayland],
96     [enable Wayland output @<:@default=yes@:>@]),
97   [], [enable_wayland="yes"])
98
99 AC_ARG_ENABLE([egl],
100   AS_HELP_STRING([--enable-egl],
101     [enable EGL output @<:@default=yes@:>@]),
102   [], [enable_egl="yes"])
103
104 AC_ARG_WITH([glapi],
105   AS_HELP_STRING([--with-glapi=APIs],
106     [build with the specified OpenGL APIs @<:@default=default_glapi@:>@]),
107   [GLAPI="$with_glapi"], [GLAPI=default_glapi])
108
109 dnl Check for basic libraries
110 AC_CHECK_LIB([m], [tan])
111
112 dnl Check for Gtk doc
113 GTKDOC_VERSION=gtkdoc_version
114 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
115 m4_ifdef([GTK_DOC_CHECK], [
116 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
117 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
118
119 dnl Check for GLib
120 GLIB_VERSION_REQUIRED=glib_version
121 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
122
123 dnl Check to see if dlopen is in default libraries (like Solaris, which
124 dnl has it in libc), or if libdl is needed to get it.
125 AC_CHECK_FUNC([dlopen], [], [
126   AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
127 AC_SUBST([DLOPEN_LIBS])
128
129 dnl ---------------------------------------------------------------------------
130 dnl -- GStreamer                                                             --
131 dnl ---------------------------------------------------------------------------
132 GST_PKG_VERSION="1.0"
133 AC_SUBST([GST_PKG_VERSION])
134 AC_DEFINE_UNQUOTED([GST_PKG_VERSION_S], ["$GST_PKG_VERSION"],
135   [Defined to the string representation of GStreamer API version])
136
137 dnl Versions for GStreamer and plugins-base
138 GST_VERSION_REQUIRED=gst_version
139 GST_PLUGINS_BASE_VERSION_REQUIRED=gst_plugins_base_version
140 GST_PLUGINS_BAD_VERSION_REQUIRED=gst_plugins_bad_version
141
142 dnl GStreamer Core
143 PKG_CHECK_MODULES([GST],
144   [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
145
146 AC_MSG_CHECKING([for GStreamer API version])
147 gst_api_version=`$PKG_CONFIG --modversion "gstreamer-$GST_PKG_VERSION"`
148 gst_major_version=`echo "$gst_api_version" | cut -d'.' -f1`
149 gst_minor_version=`echo "$gst_api_version" | cut -d'.' -f2`
150 GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
151 AC_MSG_RESULT([$GST_API_VERSION])
152 AC_DEFINE_UNQUOTED([GST_API_VERSION_S], ["$GST_API_VERSION"],
153   [Defined to the string representation of GStreamer version])
154
155 PKG_CHECK_MODULES([GST_BASE],
156   [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
157
158 dnl GStreamer -base plugins
159 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
160   [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
161
162 dnl ... gst_dmabuf_memory_get_fd (gstreamer-allocators)
163 PKG_CHECK_MODULES([GST_ALLOCATORS],
164   [gstreamer-allocators-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
165
166 dnl ... GstVideoOverlayComposition (gstreamer-video)
167 PKG_CHECK_MODULES([GST_VIDEO],
168   [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
169
170 dnl ... GStreamer base utils (gstreamer-pbutils)
171 PKG_CHECK_MODULES([GST_PBUTILS],
172   [gstreamer-pbutils-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
173
174 dnl ... bitstream parsers
175 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
176   [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
177
178 dnl ... VP9 parser, with required extensions
179 HAVE_GST_VP9_PARSER=0
180 AC_CACHE_CHECK([for VP9 parser],
181   [ac_cv_have_gst_vp9_parser],
182   [
183     saved_CPPFLAGS="$CPPFLAGS"
184     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
185     saved_LIBS="$LIBS"
186     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
187     AC_COMPILE_IFELSE(
188       [
189         AC_LANG_PROGRAM(
190           [[
191 #include <gst/codecparsers/gstvp9parser.h>
192           ]],
193           [[
194 GstVp9FrameHdr frame_hdr;
195           ]])
196       ],
197       [ac_cv_have_gst_vp9_parser="yes" HAVE_GST_VP9_PARSER=1],
198       [ac_cv_have_gst_vp9_parser="no"])
199     CPPFLAGS="$saved_CPPFLAGS"
200     LIBS="$saved_LIBS"
201   ])
202
203 AS_IF([test "x$enable_glx" = "xyes" -o "x$enable_egl" = "xyes"],
204   [enable_opengl="yes"], [enable_opengl="no"])
205
206 dnl ... opengl helper libraries
207 HAVE_GSTGL=0
208 if test "x$enable_opengl" = "xyes"; then
209   PKG_CHECK_MODULES([GST_GL],
210     [gstreamer-gl-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED],
211     [
212       HAVE_GSTGL=1
213       AC_CACHE_CHECK([for GStreamer OpenGL helper libraries],
214         [ac_cv_have_gst_gl_helpers],
215         [
216           saved_CPPFLAGS="$CPPFLAGS"
217           CPPFLAGS="$CPPFLAGS $GST_GL_CFLAGS $GST_VIDEO_CFLAGS"
218           saved_LIBS="$LIBS"
219           LIBS="$saved_LIBS"
220           AC_CHECK_HEADERS([gst/gl/gl.h], [], [HAVE_GSTGL=0])
221           AC_COMPILE_IFELSE(
222             [
223               AC_LANG_PROGRAM(
224                 [[
225 #include <gst/gl/gl.h>
226                 ]],
227                 [[
228 GstGLContext gl_context;
229                 ]])
230             ],
231             [ac_cv_have_gst_gl_helpers="yes"],
232             [ac_cv_have_gst_gl_helpers="no" HAVE_GSTGL=0])
233           CPPFLAGS="$saved_CPPFLAGS"
234           LIBS="$saved_LIBS"
235         ])
236     ], [])
237 fi
238 AM_CONDITIONAL([USE_GST_GL_HELPERS], [test $HAVE_GSTGL -eq 1])
239 AC_DEFINE_UNQUOTED([USE_GST_GL_HELPERS], [$HAVE_GSTGL],
240   [Defined to 1 if GStreamer OpenGL helper libraries are available])
241
242 if test "x$enable_egl" = "xyes" -a $HAVE_GSTGL -ne 1; then
243   AC_MSG_WARN([GStreamer/GL helper libraries not found, disabling EGL support])
244   enable_egl="no"
245 fi
246
247 dnl GST_ALL_LDFLAGS:
248 dnl LDFLAGS really should only contain flags, not libs - they get added before
249 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
250 GST_ALL_LDFLAGS="-no-undefined"
251 AC_SUBST([GST_ALL_LDFLAGS])
252
253 dnl GST_PLUGIN_LDFLAGS:
254 dnl this really should only contain flags, not libs - they get added before
255 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
256 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
257 AC_SUBST([GST_PLUGIN_LDFLAGS])
258
259 dnl Check for the GStreamer plugins directory
260 AC_ARG_VAR([GST_PLUGIN_PATH_1_0],
261   [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
262 AC_MSG_CHECKING([for GStreamer plugins directory])
263 if test -n "$GST_PLUGIN_PATH_1_0"; then
264     GST_PLUGINS_DIR="$GST_PLUGIN_PATH_1_0"
265 else
266     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
267     if test -z "$GST_PLUGINS_DIR"; then
268         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
269     fi
270 fi
271 AC_MSG_RESULT([$GST_PLUGINS_DIR])
272 plugindir="$GST_PLUGINS_DIR"
273 AC_SUBST([plugindir])
274
275 dnl ---------------------------------------------------------------------------
276 dnl -- Renderers                                                             --
277 dnl ---------------------------------------------------------------------------
278
279 dnl Check for DRM/libudev
280 USE_DRM=0
281 if test "x$enable_drm" = "xyes"; then
282   PKG_CHECK_MODULES([DRM], [libdrm libudev],
283     [
284       USE_DRM=1
285       saved_CPPFLAGS="$CPPFLAGS"
286       CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
287       AC_CHECK_HEADERS([drm_fourcc.h], [], [USE_DRM=0])
288       CPPFLAGS="$saved_CPPFLAGS"
289     ], [])
290 fi
291
292 dnl Check for X11
293 USE_X11=0
294 if test "x$enable_x11" = "xyes"; then
295   PKG_CHECK_MODULES([X11], [x11],
296     [
297       USE_X11=1
298       saved_CPPFLAGS="$CPPFLAGS"
299       CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
300       AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [], [USE_X11=0])
301       CPPFLAGS="$saved_CPPFLAGS"
302     ], [])
303 fi
304
305 HAVE_XKBLIB=0
306 HAVE_XRANDR=0
307 HAVE_XRENDER=0
308 if test $USE_X11 -eq 1; then
309   dnl Check for XKB library
310   HAVE_XKBLIB=1
311   AC_CHECK_HEADERS([X11/XKBlib.h], [], [HAVE_XKBLIB=0])
312
313   dnl Check for XRandR
314   PKG_CHECK_MODULES([XRANDR], [xrandr],
315     [
316       HAVE_XRANDR=1
317       saved_CPPFLAGS="$CPPFLAGS"
318       CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
319       AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [], [HAVE_XRANDR=0])
320       CPPFLAGS="$saved_CPPFLAGS"
321     ], [])
322
323   dnl Check for XRender
324   PKG_CHECK_MODULES([XRENDER], [xrender],
325     [
326       HAVE_XRENDER=1
327       saved_CPPFLAGS="$CPPFLAGS"
328       CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
329       AC_CHECK_HEADERS([X11/extensions/Xrender.h], [], [HAVE_XRENDER=0])
330       CPPFLAGS="$saved_CPPFLAGS"
331     ], [])
332 fi
333
334 AC_DEFINE_UNQUOTED([HAVE_XKBLIB], [$HAVE_XKBLIB],
335   [Defined to 1 if the XKB extension exists.])
336 AC_DEFINE_UNQUOTED([HAVE_XRANDR], [$HAVE_XRANDR],
337   [Defined to 1 if the XRandR extension exists.])
338 AC_DEFINE_UNQUOTED([HAVE_XRENDER], [$HAVE_XRENDER],
339   [Defined to 1 if the XRender extension exists.])
340
341 dnl OpenGL
342 GLES_VERSION_MASK=0
343
344 HAVE_GL=0
345 HAVE_GLESv2=0
346 HAVE_GLESv3=0
347 if test "x$enable_opengl" = "xyes"; then
348   dnl OpenGL
349   case ",$GLAPI," in
350     (*,any,*|*,gl,*)
351       HAVE_GL=1
352       PKG_CHECK_MODULES([GL], [gl],
353         [
354           saved_CPPFLAGS="$CPPFLAGS"
355           CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
356           AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [], [HAVE_GL=0],
357             [
358 #ifdef HAVE_GL_GL_H
359 # include <GL/gl.h>
360 #endif
361             ])
362           CPPFLAGS="$saved_CPPFLAGS"
363         ], [HAVE_GL=0])
364       GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GL "*" 1`
365     ;;
366   esac
367
368   dnl OpenGL|ESv2
369   case ",$GLAPI," in
370     (*,any,*|*,gles2,*)
371       HAVE_GLESv2=1
372       PKG_CHECK_MODULES([GLES2], [glesv2],
373         [
374           saved_CPPFLAGS="$CPPFLAGS"
375           CPPFLAGS="$CPPFLAGS $GLES2_CFLAGS"
376           AC_CHECK_HEADERS([GLES2/gl2.h GLES2/gl2ext.h], [], [HAVE_GLESv2=0],
377             [
378 #ifdef HAVE_GLES2_GL2_H
379 # include <GLES2/gl2.h>
380 #endif
381             ])
382           CPPFLAGS="$saved_CPPFLAGS"
383         ], [HAVE_GLESv2=0])
384       GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv2 "*" 4`
385     ;;
386   esac
387
388   dnl OpenGL|ESv3
389   case ",$GLAPI," in
390     (*,any,*|*,gles3,*)
391       HAVE_GLESv3=1
392       PKG_CHECK_MODULES([GLES3], [glesv2],
393         [
394           saved_CPPFLAGS="$CPPFLAGS"
395           CPPFLAGS="$CPPFLAGS $GLES3_CFLAGS"
396           AC_CHECK_HEADERS([GLES3/gl3.h GLES3/gl3ext.h GLES2/gl2ext.h], [],
397             [HAVE_GLESv3=0],
398             [
399 #ifdef HAVE_GLES3_GL3_H
400 # include <GLES3/gl3.h>
401 #endif
402             ])
403           CPPFLAGS="$saved_CPPFLAGS"
404         ], [HAVE_GLESv3=0])
405       GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv3 "*" 8`
406     ;;
407   esac
408 fi
409
410 dnl ... GLX
411 USE_GLX=0
412 if test "x$enable_glx" = "xyes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
413   USE_GLX=1
414
415   saved_CPPFLAGS="$CPPFLAGS"
416   saved_LIBS="$LIBS"
417   CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
418   LIBS="$LIBS $GL_LIBS"
419   AC_CHECK_HEADERS([GL/glx.h], [], [USE_GLX=0],
420     [
421 #ifdef HAVE_GL_GL_H
422 # include <GL/gl.h>
423 #endif
424     ])
425   AC_CHECK_LIB([GL], [glXCreateContext], [], [USE_GLX=0])
426   CPPFLAGS="$saved_CPPFLAGS"
427   LIBS="$saved_LIBS"
428 fi
429
430 dnl ... EGL
431 USE_EGL=0
432 if test "x$enable_egl" = "xyes" -a $GLES_VERSION_MASK -ne 0; then
433   PKG_CHECK_MODULES([EGL], [egl],
434     [
435       USE_EGL=1
436
437       saved_CPPFLAGS="$CPPFLAGS"
438       saved_LIBS="$LIBS"
439       AC_CHECK_HEADERS([EGL/egl.h], [], [USE_EGL=0])
440       AC_CHECK_LIB([EGL], [eglGetDisplay], [], [USE_EGL=0])
441
442       dnl Check for GMODULE
443       GMODULE_VERSION_REQUIRED=gmodule_version
444       PKG_CHECK_MODULES([GMODULE],
445         [gmodule-2.0 >= $GMODULE_VERSION_REQUIRED])
446       CPPFLAGS="$saved_CPPFLAGS"
447       LIBS="$saved_LIBS"
448     ], [])
449 fi
450
451 dnl Check for Wayland
452 USE_WAYLAND=0
453 if test "x$enable_wayland" = "xyes"; then
454   PKG_CHECK_MODULES([WAYLAND], [wayland-client >= wayland_api_version],
455     [
456       USE_WAYLAND=1
457       saved_CPPFLAGS="$CPPFLAGS"
458       CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
459       AC_CHECK_HEADERS([wayland-client.h], [], [USE_WAYLAND=0])
460       CPPFLAGS="$saved_CPPFLAGS"
461     ], [])
462 fi
463
464 dnl ---------------------------------------------------------------------------
465 dnl -- VA-API                                                                --
466 dnl ---------------------------------------------------------------------------
467
468 dnl Core API
469 PKG_CHECK_MODULES([LIBVA], [libva >= va_api_version])
470 VA_VERSION_STR=`$PKG_CONFIG --modversion libva`
471
472 dnl VA/DRM API
473 if test $USE_DRM -eq 1; then
474   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
475     [
476       saved_CPPFLAGS="$CPPFLAGS"
477       CPPFLAGS="$LIBVA_DRM_CFLAGS"
478       AC_CHECK_HEADERS([va/va_drm.h], [], [USE_DRM=0])
479       CPPFLAGS="$saved_CPPFLAGS"
480     ], [USE_DRM=0])
481 fi
482
483 dnl VA/X11 API
484 if test $USE_X11 -eq 1; then
485   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11 >= va_api_x11_version],
486     [], [USE_X11=0])
487 fi
488
489 dnl Check for va_dec_jpeg.h header
490 saved_CPPFLAGS="$CPPFLAGS"
491 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
492 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [],
493   [
494 #include <va/va.h>
495   ])
496 CPPFLAGS="$saved_CPPFLAGS"
497
498 dnl Check for JPEG decoding API (0.32.1+)
499 USE_JPEG_DECODER=0
500 AC_CACHE_CHECK([for JPEG decoding API],
501   [ac_cv_have_jpeg_decoding_api],
502   [
503     saved_CPPFLAGS="$CPPFLAGS"
504     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
505     saved_LIBS="$LIBS"
506     LIBS="$LIBS $LIBVA_LIBS"
507     AC_COMPILE_IFELSE(
508       [
509         AC_LANG_PROGRAM(
510           [[
511 #include <va/va.h>
512 #ifdef HAVE_VA_VA_DEC_JPEG_H
513 # include <va/va_dec_jpeg.h>
514 #endif
515           ]],
516           [[
517 VAPictureParameterBufferJPEGBaseline pic_param;
518 VASliceParameterBufferJPEGBaseline slice_param;
519 VAHuffmanTableBufferJPEGBaseline huffman_table;
520 VAIQMatrixBufferJPEGBaseline iq_matrix;
521           ]])
522       ],
523       [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
524       [ac_cv_have_jpeg_decoding_api="no"])
525     CPPFLAGS="$saved_CPPFLAGS"
526     LIBS="$saved_LIBS"
527   ])
528
529 dnl Check for va_dec_vp8.h header
530 saved_CPPFLAGS="$CPPFLAGS"
531 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
532 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [],
533   [
534 #include <va/va.h>
535   ])
536 CPPFLAGS="$saved_CPPFLAGS"
537
538 dnl Check for VP8 decoding API (0.34+)
539 USE_VP8_DECODER=0
540 AC_CACHE_CHECK([for VP8 decoding API],
541   [ac_cv_have_vp8_decoding_api],
542   [
543     saved_CPPFLAGS="$CPPFLAGS"
544     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
545     saved_LIBS="$LIBS"
546     LIBS="$LIBS $LIBVA_LIBS"
547     AC_COMPILE_IFELSE(
548       [
549         AC_LANG_PROGRAM(
550           [[
551 #include <va/va.h>
552 #ifdef HAVE_VA_VA_DEC_VP8_H
553 # include <va/va_dec_vp8.h>
554 #endif
555           ]],
556           [[
557 VAPictureParameterBufferVP8 pic_param;
558 VASliceParameterBufferVP8 slice_param;
559 VAProbabilityDataBufferVP8 prob_data;
560 VAIQMatrixBufferVP8 iq_matrix;
561 slice_param.slice_data_offset = 0;
562 slice_param.slice_data_flag = 0;
563           ]])
564       ],
565       [ac_cv_have_vp8_decoding_api="yes" USE_VP8_DECODER=1],
566       [ac_cv_have_vp8_decoding_api="no"])
567     CPPFLAGS="$saved_CPPFLAGS"
568     LIBS="$saved_LIBS"
569   ])
570
571 dnl Check for va_dec_vp9.h header
572 saved_CPPFLAGS="$CPPFLAGS"
573 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
574 AC_CHECK_HEADERS([va/va_dec_vp9.h], [], [],
575   [
576 #include <va/va.h>
577   ])
578 CPPFLAGS="$saved_CPPFLAGS"
579
580 dnl Check for VP9 decoding API (0.37+)
581 USE_VP9_DECODER=0
582 AC_CACHE_CHECK([for VP9 decoding API],
583   [ac_cv_have_vp9_decoding_api],
584   [
585     saved_CPPFLAGS="$CPPFLAGS"
586     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
587     saved_LIBS="$LIBS"
588     LIBS="$LIBS $LIBVA_LIBS"
589     AC_COMPILE_IFELSE(
590       [
591         AC_LANG_PROGRAM(
592           [[
593 #include <va/va.h>
594 #ifdef HAVE_VA_VA_DEC_VP9_H
595 # include <va/va_dec_vp9.h>
596 #endif
597           ]],
598           [[
599 VADecPictureParameterBufferVP9 pic_param;
600 VASliceParameterBufferVP9 slice_param;
601 VASegmentParameterVP9 seg_param;
602 slice_param.slice_data_offset = 0;
603 slice_param.slice_data_flag = 0;
604           ]])
605       ],
606       [ac_cv_have_vp9_decoding_api="yes" USE_VP9_DECODER=$HAVE_GST_VP9_PARSER],
607       [ac_cv_have_vp9_decoding_api="no"])
608     CPPFLAGS="$saved_CPPFLAGS"
609     LIBS="$saved_LIBS"
610   ])
611
612 dnl Check for va_dec_hevc.h header
613 saved_CPPFLAGS="$CPPFLAGS"
614 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
615 AC_CHECK_HEADERS([va/va_dec_hevc.h], [], [],
616   [
617 #include <va/va.h>
618   ])
619 CPPFLAGS="$saved_CPPFLAGS"
620
621 dnl Check for HEVC decoding API (0.38+)
622 USE_HEVC_DECODER=0
623 AC_CACHE_CHECK([for HEVC decoding API],
624   [ac_cv_have_hevc_decoding_api],
625   [
626     saved_CPPFLAGS="$CPPFLAGS"
627     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
628     saved_LIBS="$LIBS"
629     LIBS="$LIBS $LIBVA_LIBS"
630     AC_COMPILE_IFELSE(
631       [
632         AC_LANG_PROGRAM(
633           [[
634 #include <va/va.h>
635 #ifdef HAVE_VA_VA_DEC_HEVC_H
636 # include <va/va_dec_hevc.h>
637 #endif
638           ]],
639           [[
640 VAPictureParameterBufferHEVC pic_param;
641 VASliceParameterBufferHEVC slice_param;
642 VAIQMatrixBufferHEVC iq_matrix;
643 slice_param.slice_data_offset = 0;
644 slice_param.slice_data_flag = 0;
645           ]])
646       ],
647       [ac_cv_have_hevc_decoding_api="yes" USE_HEVC_DECODER=1],
648       [ac_cv_have_hevc_decoding_api="no"])
649     CPPFLAGS="$saved_CPPFLAGS"
650     LIBS="$saved_LIBS"
651   ])
652
653 dnl Check for vpp (video post-processing) support
654 USE_VA_VPP=0
655 AC_CACHE_CHECK([for video post-postprocessing API],
656   [ac_cv_have_va_vpp_api],
657   [
658     saved_CPPFLAGS="$CPPFLAGS"
659     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
660     saved_LIBS="$LIBS"
661     LIBS="$LIBS $LIBVA_LIBS"
662     AC_COMPILE_IFELSE(
663       [
664         AC_LANG_PROGRAM(
665           [[
666 #include <va/va.h>
667 #include <va/va_vpp.h>
668           ]],
669           [[
670 VADisplay va_dpy;
671 VAContextID vpp_ctx;
672 VAProcFilterType filters[VAProcFilterCount];
673 unsigned int num_filters = VAProcFilterCount;
674 vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
675           ]])
676       ],
677       [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
678       [ac_cv_have_va_vpp_api="no"])
679     CPPFLAGS="$saved_CPPFLAGS"
680     LIBS="$saved_LIBS"
681   ])
682
683 dnl Check for encoding support
684 USE_ENCODERS=0
685 if test "x$enable_encoders" = "xyes"; then
686   PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
687     [
688       USE_ENCODERS=1
689       saved_CPPFLAGS="$CPPFLAGS"
690       CPPFLAGS="$LIBVA_CFLAGS"
691       AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h], [],
692         [USE_ENCODERS=0],
693         [
694 #include <va/va.h>
695         ])
696       CPPFLAGS="$saved_CPPFLAGS"
697     ], [])
698 fi
699
700 USE_JPEG_ENCODER=0
701 USE_VP8_ENCODER=0
702 USE_H265_ENCODER=0
703 if test $USE_ENCODERS -eq 1; then
704   dnl Check for JPEG Encoding API (0.37.0+)
705   AC_CHECK_HEADERS([va/va_enc_jpeg.h], [], [],
706     [
707 #include <va/va.h>
708     ])
709   AC_CACHE_CHECK([for JPEG encoding API],
710     [ac_cv_have_jpeg_encoding_api],
711     [
712       saved_CPPFLAGS="$CPPFLAGS"
713       CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
714       saved_LIBS="$LIBS"
715       LIBS="$LIBS $LIBVA_LIBS"
716       AC_COMPILE_IFELSE(
717         [
718           AC_LANG_PROGRAM(
719             [[
720 #include <va/va.h>
721 #ifdef HAVE_VA_VA_ENC_JPEG_H
722 # include <va/va_enc_jpeg.h>
723 #endif
724             ]],
725             [[
726 VAEncPictureParameterBufferJPEG pic_param;
727 VAEncSliceParameterBufferJPEG slice_param;
728 VAQMatrixBufferJPEG q_matrix;
729             ]])
730         ],
731         [ac_cv_have_jpeg_encoding_api="yes" USE_JPEG_ENCODER=1],
732         [ac_cv_have_jpeg_encoding_api="no"])
733       CPPFLAGS="$saved_CPPFLAGS"
734       LIBS="$saved_LIBS"
735     ])
736
737   dnl Check for VP8 Encoding API
738   AC_CHECK_HEADERS([va/va_enc_vp8.h], [], [],
739     [
740 #include <va/va.h>
741     ])
742   AC_CACHE_CHECK([for VP8 encoding API],
743     [ac_cv_have_vp8_encoding_api],
744     [
745       saved_CPPFLAGS="$CPPFLAGS"
746       CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
747       saved_LIBS="$LIBS"
748       LIBS="$LIBS $LIBVA_LIBS"
749       AC_COMPILE_IFELSE(
750         [
751           AC_LANG_PROGRAM(
752             [[
753 #include <va/va.h>
754 #ifdef HAVE_VA_VA_ENC_VP8_H
755 # include <va/va_enc_vp8.h>
756 #endif
757             ]],
758             [[
759 VAEncSequenceParameterBufferVP8 seq_param;
760 VAEncPictureParameterBufferVP8 pic_param;
761 VAQMatrixBufferVP8 q_matrix;
762             ]])
763         ],
764         [ac_cv_have_vp8_encoding_api="yes" USE_VP8_ENCODER=1],
765         [ac_cv_have_vp8_encoding_api="no"])
766       CPPFLAGS="$saved_CPPFLAGS"
767       LIBS="$saved_LIBS"
768     ])
769
770   dnl Check for H265/HEVC Encoding API
771   AC_CHECK_HEADERS([va/va_enc_hevc.h], [], [],
772     [
773 #include <va/va.h>
774     ])
775   AC_CACHE_CHECK([for HEVC encoding API],
776     [ac_cv_have_hevc_encoding_api],
777     [
778       saved_CPPFLAGS="$CPPFLAGS"
779       CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
780       saved_LIBS="$LIBS"
781       LIBS="$LIBS $LIBVA_LIBS"
782       AC_COMPILE_IFELSE(
783         [
784           AC_LANG_PROGRAM(
785             [[
786 #include <va/va.h>
787 #ifdef HAVE_VA_VA_ENC_HEVC_H
788 # include <va/va_enc_hevc.h>
789 #endif
790             ]],
791             [[
792 VAEncSequenceParameterBufferHEVC seq_param;
793 VAEncPictureParameterBufferHEVC pic_param;
794 VAEncSliceParameterBufferHEVC buf_param;
795 VAQMatrixBufferHEVC q_matrix;
796             ]])
797         ],
798         [ac_cv_have_hevc_encoding_api="yes" USE_H265_ENCODER=1],
799         [ac_cv_have_hevc_encoding_api="no"])
800       CPPFLAGS="$saved_CPPFLAGS"
801       LIBS="$saved_LIBS"
802     ])
803 fi
804
805 dnl VA/Wayland API
806 if test $USE_WAYLAND -eq 1; then
807   PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
808     [], [USE_WAYLAND=0])
809 fi
810
811 dnl ---------------------------------------------------------------------------
812 dnl -- Generate files and summary                                            --
813 dnl ---------------------------------------------------------------------------
814
815 case ":$USE_X11:$USE_GLX:$USE_EGL:$USE_WAYLAND:$USE_DRM:" in
816 *:1:*) ;;
817 *) AC_MSG_ERROR([No renderer is enabled]) ;;
818 esac
819
820 AC_DEFINE_UNQUOTED([USE_ENCODERS], [$USE_ENCODERS],
821   [Defined to 1 if video encoders are used])
822 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
823
824 AC_DEFINE_UNQUOTED([USE_JPEG_ENCODER], [$USE_JPEG_ENCODER],
825   [Defined to 1 if JPEG encoder is used])
826 AM_CONDITIONAL([USE_JPEG_ENCODER], [test $USE_JPEG_ENCODER -eq 1])
827
828 AC_DEFINE_UNQUOTED([USE_VP8_ENCODER], [$USE_VP8_ENCODER],
829   [Defined to 1 if VP8 encoder is used])
830 AM_CONDITIONAL([USE_VP8_ENCODER], [test $USE_VP8_ENCODER -eq 1])
831
832 AC_DEFINE_UNQUOTED([USE_H265_ENCODER], [$USE_H265_ENCODER],
833   [Defined to 1 if H265 encoder is used])
834 AM_CONDITIONAL([USE_H265_ENCODER], [test $USE_H265_ENCODER -eq 1])
835
836 AC_DEFINE_UNQUOTED([USE_VA_VPP], [$USE_VA_VPP],
837   [Defined to 1 if video post-processing is used])
838 AM_CONDITIONAL([USE_VA_VPP], [test $USE_VA_VPP -eq 1])
839
840 AC_DEFINE_UNQUOTED([USE_JPEG_DECODER], [$USE_JPEG_DECODER],
841   [Defined to 1 if JPEG decoder is used])
842 AM_CONDITIONAL([USE_JPEG_DECODER], [test $USE_JPEG_DECODER -eq 1])
843
844 AC_DEFINE_UNQUOTED([USE_VP8_DECODER], [$USE_VP8_DECODER],
845   [Defined to 1 if VP8 decoder is used])
846 AM_CONDITIONAL([USE_VP8_DECODER], [test $USE_VP8_DECODER -eq 1])
847
848 AC_DEFINE_UNQUOTED([USE_VP9_DECODER], [$USE_VP9_DECODER],
849   [Defined to 1 if VP9 decoder is used])
850 AM_CONDITIONAL([USE_VP9_DECODER], [test $USE_VP9_DECODER -eq 1])
851
852 AC_DEFINE_UNQUOTED([USE_HEVC_DECODER], [$USE_HEVC_DECODER],
853   [Defined to 1 if HEVC decoder is used])
854 AM_CONDITIONAL([USE_HEVC_DECODER], [test $USE_HEVC_DECODER -eq 1])
855
856 AC_DEFINE_UNQUOTED([USE_DRM], [$USE_DRM],
857   [Defined to 1 if DRM is enabled])
858 AM_CONDITIONAL([USE_DRM], [test $USE_DRM -eq 1])
859
860 AC_DEFINE_UNQUOTED([USE_X11], [$USE_X11],
861   [Defined to 1 if X11 is enabled])
862 AM_CONDITIONAL([USE_X11], [test $USE_X11 -eq 1])
863
864 AC_DEFINE_UNQUOTED([USE_GLX], [$USE_GLX],
865   [Defined to 1 if GLX is enabled])
866 AM_CONDITIONAL([USE_GLX], [test $USE_GLX -eq 1])
867
868 AC_DEFINE_UNQUOTED([USE_EGL], [$USE_EGL],
869   [Defined to 1 if EGL is enabled])
870 AM_CONDITIONAL([USE_EGL], [test $USE_EGL -eq 1])
871
872 AC_DEFINE_UNQUOTED([USE_GLES_VERSION_MASK], [$GLES_VERSION_MASK],
873   [Defined to the set of enabled OpenGL ES APIs])
874
875 AC_DEFINE_UNQUOTED([USE_WAYLAND], [$USE_WAYLAND],
876   [Defined to 1 if WAYLAND is enabled])
877 AM_CONDITIONAL([USE_WAYLAND], [test $USE_WAYLAND -eq 1])
878
879 dnl @TODO hack for egl's dynamic module loading. remove it!
880 AC_DEFINE_UNQUOTED([GST_VAAPI_MAJOR_VERSION_S], ["0"],
881   [Defined to the string representation of gstreamer-vaapi major version])
882
883 AC_CONFIG_FILES([
884     Makefile
885     docs/Makefile
886     docs/reference/Makefile
887     docs/reference/plugins/Makefile
888     docs/reference/plugins/plugins-docs.xml
889     gst-libs/Makefile
890     gst-libs/gst/Makefile
891     gst-libs/gst/base/Makefile
892     gst-libs/gst/vaapi/Makefile
893     gst/Makefile
894     gst/vaapi/Makefile
895     tests/Makefile
896 ])
897 AC_OUTPUT
898
899 dnl Print summary
900 yesno() {
901   test $1 -eq 1 && echo yes || echo no
902 }
903
904 VIDEO_OUTPUTS=""
905 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
906 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
907 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
908 AS_IF([test $USE_EGL -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS egl"])
909 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
910
911 echo
912 echo $PACKAGE configuration summary:
913 echo
914 echo Installation Prefix .............. : ${prefix}
915 echo GStreamer API version ............ : $GST_API_VERSION
916 echo VA-API version ................... : $VA_VERSION_STR
917 echo Video encoding ................... : $(yesno $USE_ENCODERS)
918 echo Video outputs .................... : $VIDEO_OUTPUTS
919 echo