Fix build with VA-API 0.32.0.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 8 Oct 2012 08:30:23 +0000 (10:30 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 8 Oct 2012 08:33:35 +0000 (10:33 +0200)
Really fix build back to VA-API 0.32.0, and not only VA-API 0.32.1,
thus checking for VA/JPEG decode API. VA-API 0.32.0 was provided by
libva 1.0.15 and earlier version, which is still available in
Ubuntu 12.04-LTS.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
configure.ac
src/gen7_mfd.c
src/i965_drv_video.c

index 4c4a6db..e20c374 100644 (file)
@@ -10,8 +10,8 @@ m4_append([intel_driver_version], intel_driver_pre_version, [.pre])
 ])
 
 # libva minimum version requirement
-m4_define([libva_package_version], [1.0.16])
-m4_define([va_api_version], [0.32.1])
+m4_define([libva_package_version], [1.0.14])
+m4_define([va_api_version], [0.32.0])
 
 # libdrm minimum version requirement
 m4_define([libdrm_version], [2.4.23])
@@ -163,6 +163,30 @@ m4_ifdef([WAYLAND_SCANNER_RULES],
     [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/wayland'])],
     [wayland_scanner_rules=""; AC_SUBST(wayland_scanner_rules)])
 
+dnl Check for JPEG decoding API
+AC_CACHE_CHECK([for JPEG decoding API], ac_cv_have_va_jpeg_decode, [
+    saved_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $LIBVA_DEPS_CFLAGS"
+    saved_LIBS="$LIBS"
+    LIBS="$LIBS $LIBVA_DEPS_LIBS"
+    AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+            [[#include <va/va.h>]],
+            [[VAPictureParameterBufferJPEGBaseline pic_param;
+              VASliceParameterBufferJPEGBaseline slice_param;
+              VAHuffmanTableBufferJPEGBaseline huffman_table;
+              VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
+            [ac_cv_have_va_jpeg_decode="yes"],
+            [ac_cv_have_va_jpeg_decode="no"]
+    )
+    CPPFLAGS="$saved_CPPFLAGS"
+    LIBS="$saved_LIBS"
+])
+if test "$ac_cv_have_va_jpeg_decode" = "yes"; then
+    AC_DEFINE(HAVE_VA_JPEG_DECODE, 1,
+        [Defined to 1 if VA-API exposes JPEG decoding])
+fi
+
 AC_OUTPUT([
     Makefile
     debian.upstream/Makefile 
index 07ce85a..852fb03 100755 (executable)
@@ -1923,6 +1923,7 @@ gen7_mfd_vc1_decode_picture(VADriverContextP ctx,
     intel_batchbuffer_flush(batch);
 }
 
+#ifdef HAVE_VA_JPEG_DECODE
 static void
 gen7_mfd_jpeg_decode_init(VADriverContextP ctx,
                           struct decode_state *decode_state,
@@ -2705,6 +2706,7 @@ gen7_mfd_jpeg_decode_picture(VADriverContextP ctx,
     intel_batchbuffer_end_atomic(batch);
     intel_batchbuffer_flush(batch);
 }
+#endif
 
 static void 
 gen7_mfd_decode_picture(VADriverContextP ctx, 
@@ -2738,9 +2740,11 @@ gen7_mfd_decode_picture(VADriverContextP ctx,
         gen7_mfd_vc1_decode_picture(ctx, decode_state, gen7_mfd_context);
         break;
 
+#ifdef HAVE_VA_JPEG_DECODE
     case VAProfileJPEGBaseline:
         gen7_mfd_jpeg_decode_picture(ctx, decode_state, gen7_mfd_context);
         break;
+#endif
 
     default:
         assert(0);
index adf4d7a..7e3cef9 100644 (file)
@@ -229,9 +229,11 @@ i965_QueryConfigProfiles(VADriverContextP ctx,
         profile_list[i++] = VAProfileVC1Advanced;
     }
 
+#ifdef HAVE_VA_JPEG_DECODE
     if (HAS_JPEG(i965)) {
         profile_list[i++] = VAProfileJPEGBaseline;
     }
+#endif
 
     /* If the assert fails then I965_MAX_PROFILES needs to be bigger */
     assert(i <= I965_MAX_PROFILES);
@@ -1020,7 +1022,9 @@ i965_create_buffer_internal(VADriverContextP ctx,
     case VAEncSequenceParameterBufferType:
     case VAEncPictureParameterBufferType:
     case VAEncSliceParameterBufferType:
-    case VAHuffmanTableBufferType:
+#ifdef HAVE_VA_JPEG_DECODE
+     case VAHuffmanTableBufferType:
+#endif
         /* Ok */
         break;
 
@@ -1368,9 +1372,11 @@ i965_decoder_render_picture(VADriverContextP ctx,
             vaStatus = I965_RENDER_DECODE_BUFFER(slice_data);
             break;
 
+#ifdef HAVE_VA_JPEG_DECODE
         case VAHuffmanTableBufferType:
             vaStatus = I965_RENDER_DECODE_BUFFER(huffman_table);
             break;
+#endif
 
         default:
             vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;