gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, ffmpeg, created. release_0_8_9_final-


From: Benjamin Wolsey
Subject: [Gnash-commit] [SCM] Gnash branch, ffmpeg, created. release_0_8_9_final-312-gd2cb101
Date: Wed, 27 Apr 2011 12:01:06 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, ffmpeg has been created
        at  d2cb101eb00396c8f5d800ae4c457aac8222199f (commit)

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=d2cb101eb00396c8f5d800ae4c457aac8222199f


commit d2cb101eb00396c8f5d800ae4c457aac8222199f
Author: Benjamin Wolsey <address@hidden>
Date:   Tue Apr 26 14:31:48 2011 +0200

    Update FFmpeg usage to work with Debian Wheezy
    
    Current FFmpeg drops various deprecated functions. This commit
    introduces more copying for obvious correctness. This may be avoided
    after some testing.

diff --git a/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp 
b/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
index 1421aa6..1f185bb 100644
--- a/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
+++ b/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
@@ -29,8 +29,6 @@
 
 //#define GNASH_DEBUG_AUDIO_DECODING
 
-#define AVCODEC_DECODE_AUDIO avcodec_decode_audio2
-
 namespace gnash {
 namespace media {
 namespace ffmpeg {
@@ -520,16 +518,18 @@ boost::uint8_t*
 AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
         boost::uint32_t inputSize, boost::uint32_t& outputSize)
 {
-    //GNASH_REPORT_FUNCTION;
-
     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 +548,8 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
         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) "
@@ -656,47 +655,43 @@ AudioDecoderFfmpeg::parseInput(const boost::uint8_t* 
input,
         boost::uint32_t inputSize,
         boost::uint8_t const ** outFrame, int* outFrameSize)
 {
-    if ( _needsParsing )
-    {
-        return av_parser_parse(_parser, _audioCodecCtx,
+    if (_needsParsing) {
+        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);
     }
-    else
-    {
-        // democratic value for a chunk to decode...
-        // @todo this might be constrained by codec id, check that !
-
-        // NOTE: AVCODEC_MAX_AUDIO_FRAME_SIZE resulted bigger
-        //       than avcodec_decode_audio could handle, resulting
-        //       in eventSoundTest1.swf regression.
-        //static const unsigned int maxFrameSize = 
AVCODEC_MAX_AUDIO_FRAME_SIZE;
-
-        // NOTE: 1024 resulted too few
-        //       to properly decode (or resample?) raw audio
-        //       thus resulting noisy (bugs #21177 and #22284)
-        //static const unsigned int maxFrameSize = 1024;
-
-        // NOTE: 96000 was found to be the max returned
-        //       by avcodec_decode_audio when passed anything
-        //       bigger than that. Works fine with all of
-        //       eventSoundTest1.swf, bug #21177 and bug #22284
-        //
-        static const unsigned int maxFrameSize = 96000;
 
-        int frameSize = inputSize < maxFrameSize ? inputSize : maxFrameSize;
-
-        // we assume the input is just a set of frames
-        // and we'll consume all
-        *outFrame = input; // frame always start on input
-        *outFrameSize = frameSize;
-        int parsed = frameSize;
-        return parsed;
-    }
+    // democratic value for a chunk to decode...
+    // @todo this might be constrained by codec id, check that !
+
+    // NOTE: AVCODEC_MAX_AUDIO_FRAME_SIZE resulted bigger
+    //       than avcodec_decode_audio could handle, resulting
+    //       in eventSoundTest1.swf regression.
+    //static const unsigned int maxFrameSize = AVCODEC_MAX_AUDIO_FRAME_SIZE;
+
+    // NOTE: 1024 resulted too few
+    //       to properly decode (or resample?) raw audio
+    //       thus resulting noisy (bugs #21177 and #22284)
+    //static const unsigned int maxFrameSize = 1024;
+
+    // NOTE: 96000 was found to be the max returned
+    //       by avcodec_decode_audio when passed anything
+    //       bigger than that. Works fine with all of
+    //       eventSoundTest1.swf, bug #21177 and bug #22284
+    //
+    static const unsigned int maxFrameSize = 96000;
+
+    int frameSize = inputSize < maxFrameSize ? inputSize : maxFrameSize;
+
+    // we assume the input is just a set of frames
+    // and we'll consume all
+    *outFrame = input; // frame always start on input
+    *outFrameSize = frameSize;
+    return frameSize;
 }
 
 
diff --git a/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp 
b/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
index 3a43655..34e06b6 100644
--- a/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
+++ b/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
@@ -30,41 +30,39 @@ namespace media {
 namespace ffmpeg {
 
 AudioResamplerFfmpeg::AudioResamplerFfmpeg()
-       :_context(NULL)
+       :
+    _context(0)
 {
 }
 
 AudioResamplerFfmpeg::~AudioResamplerFfmpeg()
 {
-  if ( _context ) {
-    audio_resample_close( _context );
-  }
+    if (_context) {
+        audio_resample_close(_context);
+    }
 }
 
 bool
 AudioResamplerFfmpeg::init( AVCodecContext* ctx ) 
 {
-  if ( (ctx->sample_rate != 44100) || (ctx->channels != 2) ) {
-    if ( ! _context ) {
-      _context = audio_resample_init( 
-               2, ctx->channels, 44100, ctx->sample_rate 
-       );
+    if ((ctx->sample_rate != 44100) || (ctx->channels != 2)) {
+        if (!_context) {
+            _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);
+        }
+        return true;
     }
 
-    return true;
-  }
-
-  return false;
+    return false;
 }
 
 int
-AudioResamplerFfmpeg::resample( 
-                               boost::int16_t* input, 
-                               boost::int16_t* output, 
-                               int samples 
-                       ) 
+AudioResamplerFfmpeg::resample(boost::int16_t* input, boost::int16_t* output, 
+                               int samples) 
 {
-  return audio_resample( _context, output, input, samples );
+    return audio_resample(_context, output, input, samples);
 }
 
 
diff --git a/libmedia/ffmpeg/MediaParserFfmpeg.cpp 
b/libmedia/ffmpeg/MediaParserFfmpeg.cpp
index 19c8136..06e2f25 100644
--- a/libmedia/ffmpeg/MediaParserFfmpeg.cpp
+++ b/libmedia/ffmpeg/MediaParserFfmpeg.cpp
@@ -396,17 +396,6 @@ MediaParserFfmpeg::initializeParser()
     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++)
        {
@@ -423,7 +412,7 @@ MediaParserFfmpeg::initializeParser()
            }
            
            switch (enc->codec_type) {
-           case CODEC_TYPE_AUDIO:
+           case AVMEDIA_TYPE_AUDIO:
                if (_audioStreamIndex < 0) {
                    _audioStreamIndex = i;
                    _audioStream = _formatCtx->streams[i];
@@ -433,7 +422,7 @@ MediaParserFfmpeg::initializeParser()
                }
                break;
                
-           case CODEC_TYPE_VIDEO:
+           case AVMEDIA_TYPE_VIDEO:
                if (_videoStreamIndex < 0) {
                    _videoStreamIndex = i;
                    _videoStream = _formatCtx->streams[i];
diff --git a/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp 
b/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
index 79a42a0..05e0f69 100644
--- a/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
+++ b/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
@@ -354,10 +354,13 @@ VideoDecoderFfmpeg::decode(const boost::uint8_t* input,
         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");

-----------------------------------------------------------------------


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]