changeset 31163:07faae7acdfa

Add support for decoding VP8 through libvpx wrapper in FFmpeg. patch by James Zern, jzern google com
author diego
date Tue, 25 May 2010 23:41:30 +0000
parents 3221c1d5a164
children 4ab80ac9c2d1
files Changelog configure etc/codecs.conf
diffstat 3 files changed, 37 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Changelog	Tue May 25 23:09:20 2010 +0000
+++ b/Changelog	Tue May 25 23:41:30 2010 +0000
@@ -17,6 +17,7 @@
     * JPEG 2000 support via OpenJPEG
     * internal liba52 copy removed
     * CineForm HD (CFHD) via binary DLL
+    * VP8 decoding through libvpx wrapper in FFmpeg
 
     Demuxers:
     * support for TrueHD in Blu-ray streams in libmpdemux
--- a/configure	Tue May 25 23:09:20 2010 +0000
+++ b/configure	Tue May 25 23:41:30 2010 +0000
@@ -299,6 +299,7 @@
   --disable-libdirac-lavc   disable Dirac in libavcodec [autodetect]
   --disable-libschroedinger-lavc   disable Dirac in libavcodec (Schroedinger
                                    decoder) [autodetect]
+  --disable-libvpx-lavc     disable libvpx in libavcodec [autodetect]
   --disable-libnut          disable libnut [autodetect]
   --disable-libavutil_a     disable static libavutil [autodetect]
   --disable-libavcodec_a    disable static libavcodec [autodetect]
@@ -693,6 +694,7 @@
 _x264_lavc=auto
 _libdirac_lavc=auto
 _libschroedinger_lavc=auto
+_libvpx_lavc=auto
 _libnut=auto
 _lirc=auto
 _lircc=auto
@@ -1137,6 +1139,8 @@
   --disable-libdirac-lavc)  _libdirac_lavc=no   ;;
   --enable-libschroedinger-lavc)   _libschroedinger_lavc=yes  ;;
   --disable-libschroedinger-lavc)  _libschroedinger_lavc=no   ;;
+  --enable-libvpx-lavc)   _libvpx_lavc=yes  ;;
+  --disable-libvpx-lavc)  _libvpx_lavc=no   ;;
   --enable-libnut)      _libnut=yes     ;;
   --disable-libnut)     _libnut=no      ;;
   --enable-libavutil_a)         _libavutil_a=yes        ;;
@@ -7596,6 +7600,30 @@
 fi
 echores "$_libschroedinger_lavc"
 
+echocheck "libvpx"
+if test "$_libvpx_lavc" = auto; then
+  _libvpx_lavc=no
+  if test "$_libavcodec_a" != yes; then
+    res_comment="libavcodec (static) is required by libvpx, sorry"
+  else
+    cat > $TMPC << EOF
+#include <vpx/vpx_decoder.h>
+#include <vpx/vp8dx.h>
+int main(void) { vpx_codec_dec_init(NULL, &vpx_codec_vp8_dx_algo, NULL, 0); return 0; }
+EOF
+    cc_check -lvpx && _libvpx_lavc=yes && extra_ldflags="$extra_ldflags -lvpx"
+  fi
+fi
+if test "$_libvpx_lavc" = yes ; then
+  def_libvpx_lavc='#define CONFIG_LIBVPX 1'
+  _libavdecoders="$_libavdecoders LIBVPX_DECODER"
+  codecmodules="libvpx $codecmodules"
+else
+  def_libvpx_lavc='#define CONFIG_LIBVPX 0'
+  nocodecmodules="libvpx $nocodecmodules"
+fi
+echores "$_libvpx_lavc"
+
 echocheck "libnut"
 if test "$_libnut" = auto ; then
   cat > $TMPC << EOF
--- a/etc/codecs.conf	Tue May 25 23:09:20 2010 +0000
+++ b/etc/codecs.conf	Tue May 25 23:41:30 2010 +0000
@@ -2173,6 +2173,14 @@
   out YUY2
   out BGR32,BGR24
 
+videocodec fflibvpx
+  info "FFmpeg wrapper for libvpx/VP8"
+  status working
+  fourcc VP80
+  driver ffmpeg
+  dll "libvpx"
+  out YV12
+
 videocodec mwv1
   info "Motion Wavelets"
   status working