summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-02-25 04:59:47 (UTC)
committer llornkcor <llornkcor>2002-02-25 04:59:47 (UTC)
commitd948361c1b475fab4660b28fbf5ec21fd34d923f (patch) (side-by-side diff)
tree89bc57d755e37b27c396499c58369d595158b530
parentf180c1a5e8fc889ff1fb390d5cc94cdbc5085046 (diff)
downloadopie-d948361c1b475fab4660b28fbf5ec21fd34d923f.zip
opie-d948361c1b475fab4660b28fbf5ec21fd34d923f.tar.gz
opie-d948361c1b475fab4660b28fbf5ec21fd34d923f.tar.bz2
fixed
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.cpp216
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.h5
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavpluginimpl.h2
3 files changed, 36 insertions, 187 deletions
diff --git a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
index 0be667f..7ac63c0 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
@@ -18,4 +18,6 @@
**
**********************************************************************/
+// L.J.Potter added changes Fri 02-15-2002
+
#include <stdio.h>
#include <stdarg.h>
@@ -47,5 +49,5 @@ struct ChunkData {
-const int sound_buffer_size = 4096;
+const int sound_buffer_size = 512; // 4096; // you got to be kidding right?
@@ -61,8 +63,4 @@ public:
int samples_due;
int samples;
- int freq;
- int chan;
- int sampleRate;
- int resolution;
WavPluginData() {
@@ -76,6 +74,6 @@ public:
bool add( short *output, long count, long& done, bool stereo )
{
- qDebug("add");
done = 0;
+ qApp->processEvents();
if ( input == 0 ) {
@@ -90,5 +88,5 @@ public:
return FALSE;
}
- samples_due += 44100;
+ samples_due += chunkdata.samplesPerSec;
while ( count && (samples_due > chunkdata.samplesPerSec) ) {
*output++ = l;
@@ -100,10 +98,8 @@ public:
}
}
-
return TRUE;
}
bool initialise() {
- qDebug("initialize");
if ( input == 0 )
return FALSE;
@@ -142,10 +138,5 @@ public:
return FALSE;
}
- }
-
-
-
-
- else {
+ } else {
// ignored chunk
if ( chunk.size > 1000000000 || !input->at(input->at()+chunk.size) ) {
@@ -154,5 +145,5 @@ public:
}
} // while
-
+ qDebug("bits %d", chunkdata.wBitsPerSample);
return TRUE;
}
@@ -181,5 +172,5 @@ public:
}
}
- if ( resolution == 8 ) {
+ if ( chunkdata.wBitsPerSample == 8 ) {
l = (data[out++] - 128) * 128;
} else {
@@ -187,8 +178,8 @@ public:
out += 2;
}
- if ( chan == 1 ) {
+ if ( chunkdata.channels == 1 ) {
r = l;
} else {
- if ( resolution == 8 ) {
+ if ( chunkdata.wBitsPerSample == 8 ) {
r = (data[out++] - 128) * 128;
} else {
@@ -200,152 +191,4 @@ public:
} // getSample
-//////////////////////////////////////////////////////
-int getWavSettings(int fd)
-{ //this came from wmrecord
-
- char t1[4];
- unsigned long l1;
- int found;
- short fmt;
- unsigned short ch, brate;
- unsigned long srate;
-
-
- /* First read in the RIFF identifier. If this is missing then the
- * file is not a valid WAVE file.
- */
- if (read(fd, t1, 4)<4) {
- qDebug(" Could not read from sound file.\n");
- return -1;
- }
- if (strncmp(t1, "RIFF", 4)) {
- qDebug(" not a valid WAV file.\n");
- return -1;
- }
- /* Advance the file pointer to the next relevant field. */
- lseek(fd, 4, SEEK_CUR);
- /* Read in the WAVE identifier. */
- if (read(fd, t1, 4)<4) {
- qDebug("Could not read from sound file.\n");
- return -1;
- }
- if (strncmp(t1, "WAVE", 4)) {
- qDebug("not a valid WAV file.\n");
- return -1;
- }
-
- /* Search through the file for the format chunk. If the end of the
- * file is reached without finding the chunk, then the file is not a
- * valid WAVE file.
- */
- found = 0;
- while (!found) {
- if (read(fd, t1, 4)<4) {
- qDebug("Could not read from sound file.\n");
- return -1;
- }
- if (strncmp(t1, "fmt ", 4)) {
- /* Determine the length of the chunk found and skip to the next
- * chunk. The chunk length is always stored in the four bytes
- * following the chunk id.
- */
- if (read(fd, &l1, 4)<4) {
- qDebug("Could not read from sound file.\n");
- return -1;
- }
- lseek(fd, l1, SEEK_CUR);
- }
- else {
- /* This is the format chunk, which stores the playback settings
- * for the recording.
- */
- /* Skip the length field, since we don't really need it. */
- lseek(fd, 4, SEEK_CUR);
- /* Read in the format tag. If it has a value of 1, then there is
- * no compression and we can attempt to play the file
- * back. Otherwise, return.
- */
- if (read(fd, &fmt, 2)<2) {
- qDebug("Could not read from format chunk.\n");
- return -1;
- }
- if (fmt != 1) {
- qDebug("Wave file contains compressed data."
- " Unable to continue.\n");
- return -1;
- }
- /* Get the stereo mode. */
- if (read(fd, &ch, 2)<2) {
- qDebug("Could not read from format chunk.\n");
- return -1;
- }
- else {
- chan = ch;
- qDebug("File has %d channels", chan);
- }
- /* Get the sample rate. */
- if (read(fd, &srate, 4)<4) {
- qDebug("Could not read from format chunk.\n");
- return -1;
- }
- else {
- sampleRate = srate;
- qDebug("File has samplerate of %d", sampleRate);
- }
- /* Get the bit rate. This is at the end of the format chunk. */
- lseek(fd, 6, SEEK_CUR);
- if (read(fd, &brate, 2)<2) {
- qDebug("Could not read from format chunk.\n");
- return -1;
- }
- else {
- resolution = brate;
- qDebug("File has bitrate of %d", resolution);
- }
-
- found++;
- }
- }
-
- /* Search through the file for the data chunk. If the end of the
- * file is reached without finding the chunk, then the file is not a
- * valid WAVE file.
- */
- found = 0;
- while (!found) {
- if (read(fd, t1, 4)<4) {
- qDebug("Could not read from sound file.\n");
- return -1;
- }
- if (strncmp(t1, "data", 4)) {
- /* Determine the length of the chunk found and skip to the next
- * chunk. The chunk length is always stored in the four bytes
- * following the chunk id.
- */
- if (read(fd, &l1, 4)<4) {
- qDebug("Could not read from sound file.\n");
- return -1;
- }
- lseek(fd, l1, SEEK_CUR);
- }
- else {
- /* This is the data chunk, which stores the recording. */
- /* Get the length field. */
- if (read(fd, &l1, 4)<4) {
- qDebug("Could not read from sound file.\n");
- return -1;
- }
- else {
- samples =l1;
- qDebug("file has length of %d\nlasting %d seconds",l1, (( l1 / sampleRate) / chan) / 2 ); // ????
- return l1;
- }
- }
- }
-
- return 0;
-}
-
-//////////////////////////////////////////////////
};
@@ -364,5 +207,5 @@ WavPlugin::~WavPlugin() {
bool WavPlugin::isFileSupported( const QString& path ) {
- debugMsg( "WavPlugin::isFileSupported" );
+// qDebug( "WavPlugin::isFileSupported" );
char *ext = strrchr( path.latin1(), '.' );
@@ -383,5 +226,5 @@ bool WavPlugin::isFileSupported( const QString& path ) {
bool WavPlugin::open( const QString& path ) {
- qDebug( "WavPlugin::open" );
+// qDebug( "WavPlugin::open" );
d->max = d->out = sound_buffer_size;
@@ -397,5 +240,4 @@ bool WavPlugin::open( const QString& path ) {
}
-// d->getWavSettings( d->input.handle());
d->initialise();
@@ -405,5 +247,5 @@ bool WavPlugin::open( const QString& path ) {
bool WavPlugin::close() {
- qDebug( "WavPlugin::close" );
+// qDebug( "WavPlugin::close" );
d->input->close();
@@ -415,5 +257,5 @@ bool WavPlugin::close() {
bool WavPlugin::isOpen() {
- qDebug( "WavPlugin::isOpen" );
+// qDebug( "WavPlugin::isOpen" );
return ( d->input != 0 );
}
@@ -421,5 +263,5 @@ bool WavPlugin::isOpen() {
int WavPlugin::audioStreams() {
- qDebug( "WavPlugin::audioStreams" );
+// qDebug( "WavPlugin::audioStreams" );
return 1;
}
@@ -427,25 +269,24 @@ int WavPlugin::audioStreams() {
int WavPlugin::audioChannels( int ) {
- debugMsg( "WavPlugin::audioChannels" );
- return d->chan;
+// qDebug( "WavPlugin::audioChannels" );
+ return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples
}
int WavPlugin::audioFrequency( int ) {
- qDebug( "WavPlugin::audioFrequency" );
- return d->freq;
+// qDebug( "WavPlugin::audioFrequency %d", d->chunkdata.samplesPerSec );
+ return d->chunkdata.samplesPerSec; //44100; // ### Always scale to frequency of 44100
}
int WavPlugin::audioSamples( int ) {
- qDebug( "WavPlugin::audioSamples" );
- return d->samples;
-// return d->samples * 2 / d->chunkdata.channels; // ### Scaled samples will be made stereo,
-// // Therefore if source is mono we will double the number of samples
+// qDebug( "WavPlugin::audioSamples" );
+ return d->samples / d->chunkdata.channels/2; // ### Scaled samples will be made stereo,
+ // Therefore if source is mono we will double the number of samples
}
bool WavPlugin::audioSetSample( long, int ) {
- qDebug( "WavPlugin::audioSetSample" );
+// qDebug( "WavPlugin::audioSetSample" );
return FALSE;
}
@@ -453,5 +294,5 @@ bool WavPlugin::audioSetSample( long, int ) {
long WavPlugin::audioGetSample( int ) {
- qDebug( "WavPlugin::audioGetSample" );
+// qDebug( "WavPlugin::audioGetSample" );
return 0;
}
@@ -483,12 +324,17 @@ bool WavPlugin::audioReadStereoSamples( short *output, long samples, long& sampl
bool WavPlugin::audioReadSamples( short *output, int channels, long samples, long& samplesMade, int ) {
- qDebug( "WavPlugin::audioReadSamples" );
+// qDebug( "WavPlugin::audioReadSamples" );
return d->add( output, samples, samplesMade, channels != 1 );
}
double WavPlugin::getTime() {
- qDebug( "WavPlugin::getTime" );
+// qDebug( "WavPlugin::getTime" );
return 0.0;
}
+int WavPlugin::audioBitsPerSample( int ) {
+// qDebug( "WavPlugin::audioFormat %d", d->chunkdata.wBitsPerSample );
+ return d->chunkdata.wBitsPerSample; //
+}
+
diff --git a/core/multimedia/opieplayer/wavplugin/wavplugin.h b/core/multimedia/opieplayer/wavplugin/wavplugin.h
index 19d1a8e..6ae6e06 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.h
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.h
@@ -18,4 +18,6 @@
**
**********************************************************************/
+// L.J.Potter added changes Fri 02-15-2002
+
#ifndef WAV_PLUGIN_H
#define WAV_PLUGIN_H
@@ -23,5 +25,5 @@
#include <qstring.h>
#include <qapplication.h>
-#include <qpe/mediaplayerplugininterface.h>
+#include "../mediaplayerplugininterface.h"
@@ -52,4 +54,5 @@ public:
int audioChannels( int stream );
int audioFrequency( int stream );
+ int audioBitsPerSample( int stream );
int audioSamples( int stream );
bool audioSetSample( long sample, int stream );
diff --git a/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h b/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h
index 71f5f20..10f9305 100644
--- a/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h
+++ b/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h
@@ -21,5 +21,5 @@
#define WAV_PLUGIN_IMPL_H
-#include <qpe/mediaplayerplugininterface.h>
+#include "../mediaplayerplugininterface.h"