gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash backend/sound_handler.h backend/sound_han...


From: Martin Guy
Subject: [Gnash-commit] gnash backend/sound_handler.h backend/sound_han...
Date: Fri, 18 May 2007 12:51:48 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Martin Guy <martinwguy> 07/05/18 12:51:48

Modified files:
        backend        : sound_handler.h sound_handler_gst.cpp 
                         sound_handler_gst.h sound_handler_sdl.cpp 
                         sound_handler_sdl.h 
        testsuite      : sound_handler_test.cpp sound_handler_test.h 
        server/asobj   : SoundMad.cpp 
        .              : ChangeLog 

Log message:
                * backend/sound_handler.h,
                  backend/sound_handler_gst.cpp,
                  backend/sound_handler_gst.h,
                  backend/sound_handler_sdl.cpp,
                  backend/sound_handler_sdl.h,
                  testsuite/sound_handler_test.cpp,
                  testsuite/sound_handler_test.h,
                  server/asobj/SoundMad.cpp:
                  Add two params to convert_raw_data so that it is 
SDL-independent

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler.h?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler_gst.cpp?cvsroot=gnash&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler_gst.h?cvsroot=gnash&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler_sdl.cpp?cvsroot=gnash&r1=1.57&r2=1.58
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/sound_handler_sdl.h?cvsroot=gnash&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/sound_handler_test.cpp?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/sound_handler_test.h?cvsroot=gnash&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/SoundMad.cpp?cvsroot=gnash&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3266&r2=1.3267

Patches:
Index: backend/sound_handler.h
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- backend/sound_handler.h     18 May 2007 03:17:22 -0000      1.6
+++ backend/sound_handler.h     18 May 2007 12:51:47 -0000      1.7
@@ -17,7 +17,7 @@
 // 
 //
 
-/* $Id: sound_handler.h,v 1.6 2007/05/18 03:17:22 martinwguy Exp $ */
+/* $Id: sound_handler.h,v 1.7 2007/05/18 12:51:47 martinwguy Exp $ */
 
 /// \page sound_handler_intro Sound handler introduction
 ///
@@ -137,7 +137,8 @@
        // Converts input data to the SDL output format.
        virtual void    convert_raw_data(int16_t** adjusted_data,
                          int* adjusted_size, void* data, int sample_count,
-                         int sample_size, int sample_rate, bool stereo) = 0;
+                         int sample_size, int sample_rate, bool stereo,
+                         int m_sample_rate, bool m_stereo) = 0;
 
        virtual ~sound_handler() {};
 };

Index: backend/sound_handler_gst.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler_gst.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- backend/sound_handler_gst.cpp       18 May 2007 10:25:43 -0000      1.42
+++ backend/sound_handler_gst.cpp       18 May 2007 12:51:47 -0000      1.43
@@ -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_gst.cpp,v 1.42 2007/05/18 10:25:43 martinwguy Exp $ */
+/* $Id: sound_handler_gst.cpp,v 1.43 2007/05/18 12:51:47 martinwguy Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -575,6 +575,20 @@
        gnash::log_unimpl(__PRETTY_FUNCTION__);
 }
 
+void GST_sound_handler::convert_raw_data(
+       int16_t** /*adjusted_data*/,
+       int* /*adjusted_size*/,
+       void* /*data*/,
+       int /*sample_count*/,
+       int /*sample_size*/,
+       int /*sample_rate*/,
+       bool /*stereo*/,
+       int /*m_sample_rate*/,
+       bool /*m_stereo*/)
+{
+       gnash::log_unimpl(__PRETTY_FUNCTION__);
+}
+
 gnash::sound_handler*  gnash::create_sound_handler_gst()
 // Factory.
 {

Index: backend/sound_handler_gst.h
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler_gst.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- backend/sound_handler_gst.h 27 Feb 2007 09:10:20 -0000      1.2
+++ backend/sound_handler_gst.h 18 May 2007 12:51:47 -0000      1.3
@@ -156,7 +156,8 @@
        /// Converts input data to the SDL output format.
        virtual void    convert_raw_data(int16_t** adjusted_data,
                          int* adjusted_size, void* data, int sample_count,
-                         int sample_size, int sample_rate, bool stereo);       
//vv
+                         int sample_size, int sample_rate, bool stereo,
+                         int m_sample_rate, bool m_stereo);
 };
 
 #endif // SOUND_HANDLER_GST_H

Index: backend/sound_handler_sdl.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler_sdl.cpp,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- backend/sound_handler_sdl.cpp       18 May 2007 10:25:43 -0000      1.57
+++ backend/sound_handler_sdl.cpp       18 May 2007 12:51:47 -0000      1.58
@@ -18,7 +18,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.57 2007/05/18 10:25:43 martinwguy Exp $
+// $Id: sound_handler_sdl.cpp,v 1.58 2007/05/18 12:51:47 martinwguy Exp $
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -94,9 +94,10 @@
        case FORMAT_NATIVE16:
 
                if (data_bytes > 0) {
-                       convert_raw_data(&adjusted_data, &adjusted_size, data, 
sample_count, 2, sample_rate, stereo);
+                       convert_raw_data(&adjusted_data, &adjusted_size, data, 
sample_count, 2, sample_rate, stereo,
+                                        audioSpec.freq, (audioSpec.channels == 
2 ? true : false));
                        if (!adjusted_data) {
-                               gnash::log_error(_("Some kind of error occurred 
with adpcm sound data"));
+                               gnash::log_error(_("Some kind of error occurred 
with sound data"));
                                return -1;
                        }
                        sounddata->data_size = adjusted_size;
@@ -166,7 +167,8 @@
                int16_t*        adjusted_data = 0;
                int     adjusted_size = 0;
 
-               convert_raw_data(&adjusted_data, &adjusted_size, data, 
sample_count, 2, sounddata->sample_rate, sounddata->stereo);
+               convert_raw_data(&adjusted_data, &adjusted_size, data, 
sample_count, 2, sounddata->sample_rate, sounddata->stereo,
+                                audioSpec.freq, (audioSpec.channels == 2 ? 
true : false));
                if (!adjusted_data || adjusted_size < 1) {
                        gnash::log_error(_("Some kind of error with resampling 
sound data"));
                        return -1;
@@ -529,14 +531,17 @@
        void* data,
        int sample_count,
        int sample_size,
+       // stereo, sample_rate are those of the incoming sample
        int sample_rate,
-       bool stereo)
+       bool stereo,
+       // m_stereo etc are the format we must convert to.
+       int m_sample_rate,
+       bool m_stereo)
 // VERY crude sample-rate & sample-size conversion.  Converts
 // input data to the SDL output format (SAMPLE_RATE,
 // stereo, 16-bit native endianness)
 {
-       bool m_stereo = (audioSpec.channels == 2 ? true : false);
-       int m_sample_rate = audioSpec.freq;
+       assert(sample_size == 2);
 
        // simple hack to handle dup'ing mono to stereo
        if ( !stereo && m_stereo)
@@ -545,6 +550,7 @@
        }
 
        // simple hack to lose half the samples to get mono from stereo
+       // Unfortunately, this gives two copies of the left channel.
        if ( stereo && !m_stereo)
        {
                sample_rate <<= 1;
@@ -564,28 +570,15 @@
        }
 
        int     output_sample_count = (sample_count * dup * (stereo ? 2 : 1)) / 
inc;
-
        int16_t*        out_data = new int16_t[output_sample_count];
        *adjusted_data = out_data;
        *adjusted_size = output_sample_count * 2;       // 2 bytes per sample
 
-       if (sample_size == 1)
-       {
-               // Expand from 8 bit unsigned to 16 bit signed.
-               uint8_t*        in = (uint8_t*) data;
-               for (int i = 0; i < output_sample_count; i += dup)
-               {
-                       uint8_t val = *in;
-                       for (int j = 0; j < dup; j++)
-                       {
-                               *out_data++ = (int(val) - 128) * 256 ;
-                       }
-                       in += inc;
-               }
-       }
-       else
-       {
-               // 16-bit to 16-bit conversion.
+       if (inc == 1 && dup == 1) {
+               // Speed up no-op case
+               memcpy(out_data, data, output_sample_count * sizeof(int16_t));
+       } else {
+               // crude sample rate conversion.
                int16_t*        in = (int16_t*) data;
                for (int i = 0; i < output_sample_count; i += dup)
                {
@@ -937,7 +930,8 @@
 
                                                // Convert to needed samplerate
                                                
handler->convert_raw_data(&adjusted_data, &adjusted_size, tmp_raw_buffer, 
sample_count, 0, 
-                                                               
sounddata->sample_rate, sounddata->stereo);
+                                                               
sounddata->sample_rate, sounddata->stereo,
+                                                               
handler->audioSpec.freq, (handler->audioSpec.channels == 2 ? true : false));
 
                                                // Hopefully this wont happen
                                                if (!adjusted_data) {

Index: backend/sound_handler_sdl.h
===================================================================
RCS file: /sources/gnash/gnash/backend/sound_handler_sdl.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- backend/sound_handler_sdl.h 4 May 2007 23:00:32 -0000       1.17
+++ backend/sound_handler_sdl.h 18 May 2007 12:51:47 -0000      1.18
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-// $Id: sound_handler_sdl.h,v 1.17 2007/05/04 23:00:32 nihilus Exp $
+// $Id: sound_handler_sdl.h,v 1.18 2007/05/18 12:51:47 martinwguy Exp $
 
 #ifndef SOUND_HANDLER_SDL_H
 #define SOUND_HANDLER_SDL_H
@@ -216,7 +216,8 @@
        /// Converts input data to the SDL output format.
        virtual void    convert_raw_data(int16_t** adjusted_data,
                          int* adjusted_size, void* data, int sample_count,
-                         int sample_size, int sample_rate, bool stereo);       
//vv
+                         int sample_size, int sample_rate, bool stereo,
+                         int m_sample_rate, bool m_stereo);
 
 };
 

Index: testsuite/sound_handler_test.cpp
===================================================================
RCS file: /sources/gnash/gnash/testsuite/sound_handler_test.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- testsuite/sound_handler_test.cpp    18 May 2007 11:10:40 -0000      1.5
+++ testsuite/sound_handler_test.cpp    18 May 2007 12:51:47 -0000      1.6
@@ -15,7 +15,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-// $Id: sound_handler_test.cpp,v 1.5 2007/05/18 11:10:40 martinwguy Exp $
+// $Id: sound_handler_test.cpp,v 1.6 2007/05/18 12:51:47 martinwguy Exp $
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -379,7 +379,9 @@
        int /*sample_count*/,
        int /*sample_size*/,
        int /*sample_rate*/,
-       bool /*stereo*/)
+       bool /*stereo*/,
+       int /*m_sample_rate*/,
+       bool /*m_stereo*/)
 {
        gnash::log_msg("%s: unimplemented \n", __PRETTY_FUNCTION__);
 }

Index: testsuite/sound_handler_test.h
===================================================================
RCS file: /sources/gnash/gnash/testsuite/sound_handler_test.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- testsuite/sound_handler_test.h      27 Feb 2007 09:10:20 -0000      1.2
+++ testsuite/sound_handler_test.h      18 May 2007 12:51:47 -0000      1.3
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-// $Id: sound_handler_test.h,v 1.2 2007/02/27 09:10:20 strk Exp $
+// $Id: sound_handler_test.h,v 1.3 2007/05/18 12:51:47 martinwguy Exp $
 
 #ifndef SOUND_HANDLER_TEST_H
 #define SOUND_HANDLER_TEST_H
@@ -175,7 +175,8 @@
        /// Converts input data to the SDL output format.
        virtual void    convert_raw_data(int16_t** adjusted_data,
                          int* adjusted_size, void* data, int sample_count,
-                         int sample_size, int sample_rate, bool stereo);       
//vv
+                         int sample_size, int sample_rate, bool stereo,
+                         int m_sample_rate, bool m_stereo);
 
        /// Special test-fuction. Reports how many times this sound has been 
started
        int test_times_started(int sound_handle);

Index: server/asobj/SoundMad.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/SoundMad.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- server/asobj/SoundMad.cpp   4 May 2007 21:40:50 -0000       1.7
+++ server/asobj/SoundMad.cpp   18 May 2007 12:51:47 -0000      1.8
@@ -262,8 +262,9 @@
                                        int sample_count = outsize / 
((so->frame.header.mode) ? 4 : 2);
 
                                        // Convert to needed samplerate
-                                       s->convert_raw_data(&adjusted_data, 
&adjusted_size, tmp_raw_buffer, sample_count, 0, 
-                                                       
so->frame.header.samplerate, so->frame.header.mode);
+                                       s->convert_raw_data(&adjusted_data, 
&adjusted_size, tmp_raw_buffer, sample_count, 2, 
+                                                       
so->frame.header.samplerate, so->frame.header.mode,
+                                                       44100, true/*stereo*/);
 
                                        // Hopefully this won't happen
                                        if (!adjusted_data) {

Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3266
retrieving revision 1.3267
diff -u -b -r1.3266 -r1.3267
--- ChangeLog   18 May 2007 11:10:40 -0000      1.3266
+++ ChangeLog   18 May 2007 12:51:47 -0000      1.3267
@@ -29,6 +29,15 @@
          at decoding other linear audio formats.
        * backend/sound_handler_gst.cpp, testsuite/sound_handler_test.cpp:
          Replace never-implemented stub declarations, symptom of a deeper ill.
+       * backend/sound_handler.h,
+         backend/sound_handler_gst.cpp,
+         backend/sound_handler_gst.h,
+         backend/sound_handler_sdl.cpp,
+         backend/sound_handler_sdl.h,
+         testsuite/sound_handler_test.cpp,
+         testsuite/sound_handler_test.h,
+         server/asobj/SoundMad.cpp:
+         Add two params to convert_raw_data so that it is SDL-independent
 
 2007-05-17  Rob Savoye  <address@hidden>
 




reply via email to

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