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