[Top][All Lists]
[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>
- [Gnash-commit] gnash backend/sound_handler.h backend/sound_han...,
Martin Guy <=