diff -Naur gnash-0.8.9~/configure gnash-0.8.9/configure
--- gnash-0.8.9~/configure	2011-03-18 13:50:30.000000000 +0000
+++ gnash-0.8.9/configure	2011-06-23 12:34:22.476989141 +0100
@@ -9302,9 +9302,9 @@
 
     if test x"${with_ffmpeg_incl}" != x ; then
                   ffmpeg_top_incl=`dirname ${with_ffmpeg_incl}`
-      if test -f ${with_ffmpeg_incl}/avcodec.h; then
+      if test -f ${with_ffmpeg_incl}/version.h; then
         ac_cv_path_ffmpeg_incl="-I`(cd ${ffmpeg_top_incl}; pwd)`"
-        avcodec_h=${with_ffmpeg_incl}/avcodec.h
+        avcodec_h=${with_ffmpeg_incl}/version.h
       else
         as_fn_error $? "${with_ffmpeg_incl} directory does not contain the avcodec.h header" "$LINENO" 5
       fi
@@ -9319,9 +9319,9 @@
         if test x"$PKG_CONFIG" != x; then       if $PKG_CONFIG --exists libavcodec; then                                 ffmpeg_pkg=`$PKG_CONFIG --cflags-only-I libavcodec`
         ffmpeg_top_incl=`echo ${ffmpeg_pkg} | sed  -e 's:-I::'`
                         for i in "" ffmpeg libavcodec ffmpeg/libavcodec; do
-          if test -f ${ffmpeg_top_incl}/${i}/avcodec.h; then
+          if test -f ${ffmpeg_top_incl}/${i}/version.h; then
             ac_cv_path_ffmpeg_incl="-I`(cd ${ffmpeg_top_incl}; pwd)`"
-            avcodec_h="${ffmpeg_top_incl}/${i}/avcodec.h"
+            avcodec_h="${ffmpeg_top_incl}/${i}/version.h"
             break
           fi
         done
@@ -9333,9 +9333,9 @@
     newlist="/usr/include/ffmpeg $incllist"
     for ffmpeg_top_incl in $newlist; do
       for i in ffmpeg libavcodec ffmpeg/libavcodec; do
-        if test -f ${ffmpeg_top_incl}/${i}/avcodec.h; then
+        if test -f ${ffmpeg_top_incl}/${i}/version.h; then
           ac_cv_path_ffmpeg_incl="-I`(cd ${ffmpeg_top_incl}/${i}; pwd)`"
-          avcodec_h=${ffmpeg_top_incl}/${i}/avcodec.h
+          avcodec_h=${ffmpeg_top_incl}/${i}/version.h
           break
         fi
       done
diff -Naur gnash-0.8.9~/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp gnash-0.8.9/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
--- gnash-0.8.9~/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp	2011-02-26 18:11:08.000000000 +0000
+++ gnash-0.8.9/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp	2011-06-23 12:34:32.196844731 +0100
@@ -29,8 +29,6 @@
 
 //#define GNASH_DEBUG_AUDIO_DECODING
 
-#define AVCODEC_DECODE_AUDIO avcodec_decode_audio2
-
 namespace gnash {
 namespace media {
 namespace ffmpeg {
@@ -524,12 +522,16 @@
 
     assert(inputSize);
 
+    AVPacket packet;
+    av_new_packet(&packet, inputSize);
+    std::copy(input, input + inputSize, packet.data);
+
     const size_t bufsize = AVCODEC_MAX_AUDIO_FRAME_SIZE;
 
     // TODO: make this a private member, to reuse (see NetStreamFfmpeg in 0.8.3)
     boost::uint8_t* output;
 
-    output = reinterpret_cast<boost::uint8_t*>(av_malloc(bufsize));
+    output = static_cast<boost::uint8_t*>(av_malloc(bufsize));
     if (!output) {
         log_error(_("failed to allocate audio buffer."));
         outputSize = 0;
@@ -548,9 +550,8 @@
         inputSize, _audioCodecCtx->channels, _audioCodecCtx->frame_size);
 #endif
 
-    // older ffmpeg versions didn't accept a const input..
-    int tmp = AVCODEC_DECODE_AUDIO(_audioCodecCtx, outPtr, &outSize,
-                                   input, inputSize);
+    const int tmp = avcodec_decode_audio3(_audioCodecCtx, outPtr, &outSize,
+            &packet);
 
 #ifdef GNASH_DEBUG_AUDIO_DECODING
     log_debug(" avcodec_decode_audio[2](ctx, bufptr, %d, input, %d) "
@@ -658,16 +659,14 @@
 {
     if ( _needsParsing )
     {
-        return av_parser_parse(_parser, _audioCodecCtx,
+        return av_parser_parse2(_parser, _audioCodecCtx,
                     // as of 2008-10-28 SVN, ffmpeg doesn't
                     // accept a pointer to pointer to const..
                     const_cast<boost::uint8_t**>(outFrame),
                     outFrameSize,
                     input, inputSize,
-                    0, 0); // pts & dts
+                    0, 0, AV_NOPTS_VALUE); // pts & dts
     }
-    else
-    {
         // democratic value for a chunk to decode...
         // @todo this might be constrained by codec id, check that !
 
@@ -694,9 +693,7 @@
         // and we'll consume all
         *outFrame = input; // frame always start on input
         *outFrameSize = frameSize;
-        int parsed = frameSize;
-        return parsed;
-    }
+        return frameSize;
 }
 
 
diff -Naur gnash-0.8.9~/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp gnash-0.8.9/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
--- gnash-0.8.9~/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp	2011-02-26 18:11:08.000000000 +0000
+++ gnash-0.8.9/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp	2011-06-23 12:34:32.196844731 +0100
@@ -30,7 +30,7 @@
 namespace ffmpeg {
 
 AudioResamplerFfmpeg::AudioResamplerFfmpeg()
-	:_context(NULL)
+	:_context(0)
 {
 }
 
@@ -46,8 +46,10 @@
 {
   if ( (ctx->sample_rate != 44100) || (ctx->channels != 2) ) {
     if ( ! _context ) {
-      _context = audio_resample_init( 
-		2, ctx->channels, 44100, ctx->sample_rate 
+      _context = av_audio_resample_init( 
+		2, ctx->channels, 44100, ctx->sample_rate,
+         AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, 16,
+         10, 0, 0.8
 	);
     }
 
diff -Naur gnash-0.8.9~/libmedia/ffmpeg/MediaParserFfmpeg.cpp gnash-0.8.9/libmedia/ffmpeg/MediaParserFfmpeg.cpp
--- gnash-0.8.9~/libmedia/ffmpeg/MediaParserFfmpeg.cpp	2011-03-13 16:47:36.000000000 +0000
+++ gnash-0.8.9/libmedia/ffmpeg/MediaParserFfmpeg.cpp	2011-06-23 12:34:22.476989141 +0100
@@ -388,17 +388,6 @@
     log_debug("Parsing FFMPEG media file: format:%s; nstreams:%d",
         _inputFmt->name, _formatCtx->nb_streams);
     
-    if ( _formatCtx->title[0] )
-        log_debug(_("  Title:'%s'"), _formatCtx->title);
-    if ( _formatCtx->author[0] )
-        log_debug(_("  Author:'%s'"), _formatCtx->author);
-    if ( _formatCtx->copyright[0] )
-        log_debug(_("  Copyright:'%s'"), _formatCtx->copyright);
-    if ( _formatCtx->comment[0] )
-        log_debug(_("  Comment:'%s'"), _formatCtx->comment);
-    if ( _formatCtx->album[0] )
-        log_debug(_("  Album:'%s'"), _formatCtx->album);
-    
     // Find first audio and video stream
     for (unsigned int i = 0; i < static_cast<unsigned int>(_formatCtx->nb_streams); i++)
 	{
@@ -415,7 +404,7 @@
 	    }
 	    
 	    switch (enc->codec_type) {
-	    case CODEC_TYPE_AUDIO:
+	    case AVMEDIA_TYPE_AUDIO:
 		if (_audioStreamIndex < 0) {
 		    _audioStreamIndex = i;
 		    _audioStream = _formatCtx->streams[i];
@@ -425,7 +414,7 @@
 		}
 		break;
 		
-	    case CODEC_TYPE_VIDEO:
+	    case AVMEDIA_TYPE_VIDEO:
 		if (_videoStreamIndex < 0) {
 		    _videoStreamIndex = i;
 		    _videoStream = _formatCtx->streams[i];
diff -Naur gnash-0.8.9~/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp gnash-0.8.9/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
--- gnash-0.8.9~/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp	2011-03-13 16:47:36.000000000 +0000
+++ gnash-0.8.9/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp	2011-06-23 12:34:22.476989142 +0100
@@ -354,10 +354,13 @@
         return ret;
     }
 
+    AVPacket packet;
+    av_new_packet(&packet, input_size);
+    std::copy(input, input + input_size, packet.data);
+
     int bytes = 0;    
     // no idea why avcodec_decode_video wants a non-const input...
-    avcodec_decode_video(_videoCodecCtx->getContext(), frame, &bytes,
-            input, input_size);
+    avcodec_decode_video2(_videoCodecCtx->getContext(), frame, &bytes, &packet);
     
     if (!bytes) {
         log_error("Decoding of a video frame failed");
