summaryrefslogtreecommitdiff
path: root/core/multimedia/opieplayer/wavplugin
Side-by-side diff
Diffstat (limited to 'core/multimedia/opieplayer/wavplugin') (more/less context) (show whitespace changes)
-rw-r--r--core/multimedia/opieplayer/wavplugin/Makefile.in4
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.cpp217
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.h6
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavpluginimpl.cpp1
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavpluginimpl.h3
5 files changed, 188 insertions, 43 deletions
diff --git a/core/multimedia/opieplayer/wavplugin/Makefile.in b/core/multimedia/opieplayer/wavplugin/Makefile.in
index a46b925..bcbe7f2 100644
--- a/core/multimedia/opieplayer/wavplugin/Makefile.in
+++ b/core/multimedia/opieplayer/wavplugin/Makefile.in
@@ -102,4 +102,3 @@ REQUIRES=
wavplugin.o: wavplugin.cpp \
- wavplugin.h \
- ../mediaplayerplugininterface.h
+ wavplugin.h
@@ -107,3 +106,2 @@ wavpluginimpl.o: wavpluginimpl.cpp \
wavplugin.h \
- ../mediaplayerplugininterface.h \
wavpluginimpl.h
diff --git a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
index 7f63b3b..0be667f 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
@@ -19,4 +19,2 @@
**********************************************************************/
-// L.J.Potter added changes Fri 02-15-2002
-
#include <stdio.h>
@@ -29,3 +27,2 @@
-
//#define debugMsg(a) qDebug(a)
@@ -51,3 +48,3 @@ struct ChunkData {
-const int sound_buffer_size = 512; // 4096; // you got to be kidding right?
+const int sound_buffer_size = 4096;
@@ -65,2 +62,6 @@ public:
int samples;
+ int freq;
+ int chan;
+ int sampleRate;
+ int resolution;
@@ -76,4 +77,4 @@ public:
{
+ qDebug("add");
done = 0;
- qApp->processEvents();
@@ -90,3 +91,3 @@ public:
}
- samples_due += chunkdata.samplesPerSec;
+ samples_due += 44100;
while ( count && (samples_due > chunkdata.samplesPerSec) ) {
@@ -100,2 +101,3 @@ public:
}
+
return TRUE;
@@ -104,2 +106,3 @@ public:
bool initialise() {
+ qDebug("initialize");
if ( input == 0 )
@@ -140,3 +143,8 @@ public:
}
- } else {
+ }
+
+
+
+
+ else {
// ignored chunk
@@ -147,3 +155,3 @@ public:
} // while
- qDebug("bits %d", chunkdata.wBitsPerSample);
+
return TRUE;
@@ -174,3 +182,3 @@ public:
}
- if ( chunkdata.wBitsPerSample == 8 ) {
+ if ( resolution == 8 ) {
l = (data[out++] - 128) * 128;
@@ -180,6 +188,6 @@ public:
}
- if ( chunkdata.channels == 1 ) {
+ if ( chan == 1 ) {
r = l;
} else {
- if ( chunkdata.wBitsPerSample == 8 ) {
+ if ( resolution == 8 ) {
r = (data[out++] - 128) * 128;
@@ -193,2 +201,150 @@ public:
+//////////////////////////////////////////////////////
+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;
+}
+
+//////////////////////////////////////////////////
};
@@ -209,3 +365,3 @@ WavPlugin::~WavPlugin() {
bool WavPlugin::isFileSupported( const QString& path ) {
-// qDebug( "WavPlugin::isFileSupported" );
+ debugMsg( "WavPlugin::isFileSupported" );
@@ -228,3 +384,3 @@ bool WavPlugin::isFileSupported( const QString& path ) {
bool WavPlugin::open( const QString& path ) {
-// qDebug( "WavPlugin::open" );
+ qDebug( "WavPlugin::open" );
@@ -242,2 +398,3 @@ bool WavPlugin::open( const QString& path ) {
+// d->getWavSettings( d->input.handle());
d->initialise();
@@ -249,3 +406,3 @@ bool WavPlugin::open( const QString& path ) {
bool WavPlugin::close() {
-// qDebug( "WavPlugin::close" );
+ qDebug( "WavPlugin::close" );
@@ -259,3 +416,3 @@ bool WavPlugin::close() {
bool WavPlugin::isOpen() {
-// qDebug( "WavPlugin::isOpen" );
+ qDebug( "WavPlugin::isOpen" );
return ( d->input != 0 );
@@ -265,3 +422,3 @@ bool WavPlugin::isOpen() {
int WavPlugin::audioStreams() {
-// qDebug( "WavPlugin::audioStreams" );
+ qDebug( "WavPlugin::audioStreams" );
return 1;
@@ -271,4 +428,4 @@ int WavPlugin::audioStreams() {
int WavPlugin::audioChannels( int ) {
-// qDebug( "WavPlugin::audioChannels" );
- return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples
+ debugMsg( "WavPlugin::audioChannels" );
+ return d->chan;
}
@@ -277,4 +434,4 @@ int WavPlugin::audioChannels( int ) {
int WavPlugin::audioFrequency( int ) {
-// qDebug( "WavPlugin::audioFrequency %d", d->chunkdata.samplesPerSec );
- return d->chunkdata.samplesPerSec; //44100; // ### Always scale to frequency of 44100
+ qDebug( "WavPlugin::audioFrequency" );
+ return d->freq;
}
@@ -283,5 +440,6 @@ int WavPlugin::audioFrequency( int ) {
int WavPlugin::audioSamples( int ) {
-// 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
+ 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
}
@@ -290,3 +448,3 @@ int WavPlugin::audioSamples( int ) {
bool WavPlugin::audioSetSample( long, int ) {
-// qDebug( "WavPlugin::audioSetSample" );
+ qDebug( "WavPlugin::audioSetSample" );
return FALSE;
@@ -296,3 +454,3 @@ bool WavPlugin::audioSetSample( long, int ) {
long WavPlugin::audioGetSample( int ) {
-// qDebug( "WavPlugin::audioGetSample" );
+ qDebug( "WavPlugin::audioGetSample" );
return 0;
@@ -326,3 +484,3 @@ 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 );
@@ -331,3 +489,3 @@ bool WavPlugin::audioReadSamples( short *output, int channels, long samples, lon
double WavPlugin::getTime() {
-// qDebug( "WavPlugin::getTime" );
+ qDebug( "WavPlugin::getTime" );
return 0.0;
@@ -335,7 +493,2 @@ double WavPlugin::getTime() {
-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 6afd67e..19d1a8e 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.h
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.h
@@ -19,4 +19,2 @@
**********************************************************************/
-// L.J.Potter added changes Fri 02-15-2002
-
#ifndef WAV_PLUGIN_H
@@ -24,6 +22,5 @@
-
#include <qstring.h>
#include <qapplication.h>
-#include "../mediaplayerplugininterface.h"
+#include <qpe/mediaplayerplugininterface.h>
@@ -56,3 +53,2 @@ public:
int audioFrequency( int stream );
- int audioBitsPerSample( int stream );
int audioSamples( int stream );
diff --git a/core/multimedia/opieplayer/wavplugin/wavpluginimpl.cpp b/core/multimedia/opieplayer/wavplugin/wavpluginimpl.cpp
index 1f7b85b..2923180 100644
--- a/core/multimedia/opieplayer/wavplugin/wavpluginimpl.cpp
+++ b/core/multimedia/opieplayer/wavplugin/wavpluginimpl.cpp
@@ -22,3 +22,2 @@
-
WavPluginImpl::WavPluginImpl()
diff --git a/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h b/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h
index ee32f54..71f5f20 100644
--- a/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h
+++ b/core/multimedia/opieplayer/wavplugin/wavpluginimpl.h
@@ -22,4 +22,3 @@
-
-#include "../mediaplayerplugininterface.h"
+#include <qpe/mediaplayerplugininterface.h>