vp8dec: Add support for the MFQE postprocessing flag
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 14 Aug 2012 09:09:46 +0000 (11:09 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 14 Aug 2012 09:09:46 +0000 (11:09 +0200)
Which is enabled by default if postprocessing is enabled.

configure.ac
ext/vp8/gstvp8dec.c

index cfdfa78766ad787f2869860513b86c0f592ea2c1..822ddb75918a86a1c2eca3ed45ef688f69530a8e 100644 (file)
@@ -1790,6 +1790,19 @@ return 0;
     AC_CHECK_LIB(vpx, vpx_codec_vp8_dx_algo, [
       HAVE_VP8=yes
       AC_DEFINE(HAVE_VP8_DECODER, 1, [Defined if the VP8 decoder is available])
+      AC_MSG_CHECKING([for VP8_MFQE presence])
+      AC_TRY_COMPILE([
+#include <vpx/vpx_decoder.h>
+#include <vpx/vp8dx.h>
+int foo=VP8_MFQE;
+      ], [
+return 0;
+      ], [
+        AC_DEFINE(HAVE_VP8_MFQE, 1, [Defined if the VP8 decoder has MFQE support])
+       AC_MSG_RESULT(yes)
+      ], [
+       AC_MSG_RESULT(no)
+      ])
     ])
     LIBS="$OLD_LIBS"
   fi
index 9eb1ca3615d3520551c2b3b0712038d9212d8b00..1cddb5b1d41900329e23f531fe23a5351584b96a 100644 (file)
 GST_DEBUG_CATEGORY_STATIC (gst_vp8dec_debug);
 #define GST_CAT_DEFAULT gst_vp8dec_debug
 
+#ifndef HAVE_VP8_MFQE
+#define VP8_MFQE (1<<10)
+#endif
+
 #define DEFAULT_POST_PROCESSING FALSE
-#define DEFAULT_POST_PROCESSING_FLAGS (VP8_DEBLOCK | VP8_DEMACROBLOCK)
+#define DEFAULT_POST_PROCESSING_FLAGS (VP8_DEBLOCK | VP8_DEMACROBLOCK | VP8_MFQE)
 #define DEFAULT_DEBLOCKING_LEVEL 4
 #define DEFAULT_NOISE_LEVEL 0
 
@@ -77,6 +81,7 @@ gst_vp8_dec_post_processing_flags_get_type (void)
     {C_FLAGS (VP8_DEBLOCK), "Deblock", "deblock"},
     {C_FLAGS (VP8_DEMACROBLOCK), "Demacroblock", "demacroblock"},
     {C_FLAGS (VP8_ADDNOISE), "Add noise", "addnoise"},
+    {C_FLAGS (VP8_MFQE), "Multi-frame quality enhancement", "mfqe"},
     {0, NULL, NULL}
   };
   static volatile GType id = 0;
@@ -420,7 +425,11 @@ open_codec (GstVP8Dec * dec, GstVideoCodecFrame * frame)
   if ((caps & VPX_CODEC_CAP_POSTPROC) && dec->post_processing) {
     vp8_postproc_cfg_t pp_cfg = { 0, };
 
+#ifndef HAVE_VP8_MFQE
+    pp_cfg.post_proc_flag = (dec->post_processing_flags & (~VP8_MFQE));
+#else
     pp_cfg.post_proc_flag = dec->post_processing_flags;
+#endif
     pp_cfg.deblocking_level = dec->deblocking_level;
     pp_cfg.noise_level = dec->noise_level;