CVSROOT: /sources/gnash Module name: gnash Changes by: Tomas Groth <tgc> 07/10/08 11:00:06
Modified files: . : ChangeLog libmedia : AudioDecoderSimple.cpp libmedia/sdl : AudioDecoderMad.cpp VideoDecoderFfmpeg.cpp sound_handler_sdl.cpp Log message: * libmedia/AudioDecoderSimple.cpp: Fix stereo/mono resampling. * libmedia/sdl/AudioDecoderMad.cpp: Fix compilation and stereo/mono resampling. * libmedia/sdl/VideoDecoderFfmpeg.cpp: Free frame after use. Throw bad_alloc, if out of memory. * libmedia/sdl/sound_handler_sdl.cpp: Fix decoding multiple times until the required buffer is full. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4567&r2=1.4568 http://cvs.savannah.gnu.org/viewcvs/gnash/libmedia/AudioDecoderSimple.cpp?cvsroot=gnash&r1=1.4&r2=1.5 http://cvs.savannah.gnu.org/viewcvs/gnash/libmedia/sdl/AudioDecoderMad.cpp?cvsroot=gnash&r1=1.3&r2=1.4 http://cvs.savannah.gnu.org/viewcvs/gnash/libmedia/sdl/VideoDecoderFfmpeg.cpp?cvsroot=gnash&r1=1.4&r2=1.5 http://cvs.savannah.gnu.org/viewcvs/gnash/libmedia/sdl/sound_handler_sdl.cpp?cvsroot=gnash&r1=1.4&r2=1.5 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4567 retrieving revision 1.4568 diff -u -b -r1.4567 -r1.4568 --- ChangeLog 8 Oct 2007 07:32:07 -0000 1.4567 +++ ChangeLog 8 Oct 2007 11:00:04 -0000 1.4568 @@ -1,3 +1,13 @@ +2007-10-08 Tomas Groth Christensen <[EMAIL PROTECTED]> + + * libmedia/AudioDecoderSimple.cpp: Fix stereo/mono resampling. + * libmedia/sdl/AudioDecoderMad.cpp: Fix compilation and stereo/mono + resampling. + * libmedia/sdl/VideoDecoderFfmpeg.cpp: Free frame after use. Throw + bad_alloc, if out of memory. + * libmedia/sdl/sound_handler_sdl.cpp: Fix decoding multiple times until + the required buffer is full. + 2007-10-08 Sandro Santilli <[EMAIL PROTECTED]> * testsuite/misc-ming.all/loop_test9.c: add a test for RemoveObject Index: libmedia/AudioDecoderSimple.cpp =================================================================== RCS file: /sources/gnash/gnash/libmedia/AudioDecoderSimple.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- libmedia/AudioDecoderSimple.cpp 4 Oct 2007 11:25:31 -0000 1.4 +++ libmedia/AudioDecoderSimple.cpp 8 Oct 2007 11:00:05 -0000 1.5 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -// $Id: AudioDecoderSimple.cpp,v 1.4 2007/10/04 11:25:31 tgc Exp $ +// $Id: AudioDecoderSimple.cpp,v 1.5 2007/10/08 11:00:05 tgc Exp $ #include <boost/scoped_array.hpp> @@ -394,7 +394,7 @@ int16_t* adjusted_data = 0; int adjusted_size = 0; - int sample_count = outsize / 2;// samples are of size 2 + int sample_count = outsize / (_stereo ? 4 : 2); // samples are of size 2 // Convert to needed samplerate - this converter only support standard flash samplerates convert_raw_data(&adjusted_data, &adjusted_size, tmp_raw_buffer, sample_count, 0, Index: libmedia/sdl/AudioDecoderMad.cpp =================================================================== RCS file: /sources/gnash/gnash/libmedia/sdl/AudioDecoderMad.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -b -r1.3 -r1.4 --- libmedia/sdl/AudioDecoderMad.cpp 4 Oct 2007 09:41:46 -0000 1.3 +++ libmedia/sdl/AudioDecoderMad.cpp 8 Oct 2007 11:00:06 -0000 1.4 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -// $Id: AudioDecoderMad.cpp,v 1.3 2007/10/04 09:41:46 tgc Exp $ +// $Id: AudioDecoderMad.cpp,v 1.4 2007/10/08 11:00:06 tgc Exp $ #include "AudioDecoderMad.h" #include "utility.h" @@ -45,7 +45,7 @@ bool AudioDecoderMad::setup(SoundInfo* info) { - if (info->getFormat() == FORMAT_MP3) return true; + if (info->getFormat() == AUDIO_CODEC_MP3) return true; else return false; } @@ -141,7 +141,7 @@ int16_t* adjusted_data = 0; int adjusted_size = 0; - int sample_count = outsize / 2; // samples are of size 2 + int sample_count = outsize / (_synth.pcm.channels * 2); // samples are of size 2 // Convert to needed samplerate - this converter only support standard flash samplerates convert_raw_data(&adjusted_data, &adjusted_size, tmp_raw_buffer, sample_count, 0, Index: libmedia/sdl/VideoDecoderFfmpeg.cpp =================================================================== RCS file: /sources/gnash/gnash/libmedia/sdl/VideoDecoderFfmpeg.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- libmedia/sdl/VideoDecoderFfmpeg.cpp 6 Oct 2007 10:32:28 -0000 1.4 +++ libmedia/sdl/VideoDecoderFfmpeg.cpp 8 Oct 2007 11:00:06 -0000 1.5 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -// $Id: VideoDecoderFfmpeg.cpp,v 1.4 2007/10/06 10:32:28 strk Exp $ +// $Id: VideoDecoderFfmpeg.cpp,v 1.5 2007/10/08 11:00:06 tgc Exp $ #include "VideoDecoderFfmpeg.h" @@ -218,7 +218,7 @@ if ( ! frame ) { log_error(_("Out of memory while allocating avcodec frame")); - return NULL; + throw std::bad_alloc(); } int got = 0; @@ -229,7 +229,6 @@ uint8_t* decodedData = new uint8_t[_videoCodecCtx->width * _videoCodecCtx->height * 3]; buffer.reset(convertRGB24(_videoCodecCtx, frame)); - // Copy the data to the buffer in the correct RGB format uint8_t* srcptr = frame->data[0]; uint8_t* srcend = frame->data[0] + frame->linesize[0] * _videoCodecCtx->height; @@ -245,6 +244,7 @@ outputSize += srcwidth; } + av_free(frame); return decodedData; /* if (_videoFrameFormat == NONE) { // NullGui? @@ -313,6 +313,7 @@ }*/ } else { log_error("Decoding of a video frame failed"); + av_free(frame); return NULL; } } Index: libmedia/sdl/sound_handler_sdl.cpp =================================================================== RCS file: /sources/gnash/gnash/libmedia/sdl/sound_handler_sdl.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- libmedia/sdl/sound_handler_sdl.cpp 6 Oct 2007 09:53:45 -0000 1.4 +++ libmedia/sdl/sound_handler_sdl.cpp 8 Oct 2007 11:00:06 -0000 1.5 @@ -20,7 +20,7 @@ // Based on sound_handler_sdl.cpp by Thatcher Ulrich http://tulrich.com 2003 // which has been donated to the Public Domain. -// $Id: sound_handler_sdl.cpp,v 1.4 2007/10/06 09:53:45 tgc Exp $ +// $Id: sound_handler_sdl.cpp,v 1.5 2007/10/08 11:00:06 tgc Exp $ #ifdef HAVE_CONFIG_H #include "config.h" @@ -707,7 +707,10 @@ // We loop until the size of the decoded sound is greater than the buffer size, // or there is no more to decode. unsigned int decoded_size = 0; - // TODO: should we delete any previous raw_data ? + + // Delete any previous raw_data + sound->deleteDecodedData(); + while(decoded_size < buffer_length) { @@ -741,13 +744,13 @@ sound->position += decodedBytes; - sound->deleteDecodedData(); sound->appendDecodedData(tmp_raw_buffer, tmp_raw_buffer_size); decoded_size += tmp_raw_buffer_size; // no more to decode from this sound, so we break the loop if (sound->dataSize() <= sound->position && sound->loop_count == 0 || tmp_raw_buffer_size == 0 && decodedBytes == 0) { + sound->position = sound->dataSize(); break; } _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit