37 files changed, 381 insertions, 549 deletions
diff --git a/core/multimedia/opieplayer/Makefile.in b/core/multimedia/opieplayer/Makefile.in index 8d33fb4..1d2ff5e 100644 --- a/core/multimedia/opieplayer/Makefile.in +++ b/core/multimedia/opieplayer/Makefile.in @@ -135,10 +135,8 @@ REQUIRES= ####### Compile main.o: main.cpp \ $(OPIEDIR)/include/qpe/qpeapplication.h \ - $(OPIEDIR)/include/qpedecoration_qws.h \ - $(OPIEDIR)/include/timestring.h \ mediaplayerstate.h \ playlistwidget.h \ $(OPIEDIR)/include/qpe/applnk.h \ audiowidget.h \ @@ -146,15 +144,13 @@ main.o: main.cpp \ loopcontrol.h \ mediaplayer.h \ $(OPIEDIR)/include/qpe/qlibrary.h \ $(OPIEDIR)/include/qpe/qcom.h \ - $(OPIEDIR)/include/qpe/quuid.h \ - mediaplayerplugininterface.h + $(OPIEDIR)/include/qpe/quuid.h loopcontrol.o: loopcontrol.cpp \ $(OPIEDIR)/include/qpe/qpeapplication.h \ - $(OPIEDIR)/include/qpedecoration_qws.h \ - $(OPIEDIR)/include/timestring.h \ + $(OPIEDIR)/include/qpe/qcopenvelope_qws.h \ loopcontrol.h \ videowidget.h \ audiodevice.h \ mediaplayerplugininterface.h \ @@ -168,25 +164,19 @@ playlistselection.o: playlistselection.cpp \ playlistselection.h mediaplayerstate.o: mediaplayerstate.cpp \ $(OPIEDIR)/include/qpe/qpeapplication.h \ - $(OPIEDIR)/include/qpedecoration_qws.h \ - $(OPIEDIR)/include/timestring.h \ $(OPIEDIR)/include/qpe/qlibrary.h \ $(OPIEDIR)/include/qpe/qcom.h \ $(OPIEDIR)/include/qpe/quuid.h \ $(OPIEDIR)/include/qpe/config.h \ - mediaplayerplugininterface.h \ mediaplayerstate.h \ libmad/libmadpluginimpl.h \ libmpeg3/libmpeg3pluginimpl.h \ wavplugin/wavpluginimpl.h videowidget.o: videowidget.cpp \ $(OPIEDIR)/include/qpe/resource.h \ - mediaplayerplugininterface.h \ - $(OPIEDIR)/include/qpe/qcom.h \ - $(OPIEDIR)/include/qpe/quuid.h \ videowidget.h \ mediaplayerstate.h audiowidget.o: audiowidget.cpp \ @@ -197,13 +187,8 @@ audiowidget.o: audiowidget.cpp \ playlistwidget.o: playlistwidget.cpp \ $(OPIEDIR)/include/qpe/qpemenubar.h \ $(OPIEDIR)/include/qpe/qpetoolbar.h \ $(OPIEDIR)/include/qpe/fileselector.h \ - $(OPIEDIR)/include/filemanager.h \ - $(OPIEDIR)/include/applnk.h \ - $(OPIEDIR)/include/qpe/qpeapplication.h \ - $(OPIEDIR)/include/qpedecoration_qws.h \ - $(OPIEDIR)/include/timestring.h \ $(OPIEDIR)/include/qpe/applnk.h \ $(OPIEDIR)/include/qpe/config.h \ $(OPIEDIR)/include/qpe/global.h \ $(OPIEDIR)/include/qpe/resource.h \ @@ -212,17 +197,14 @@ playlistwidget.o: playlistwidget.cpp \ mediaplayerstate.h mediaplayer.o: mediaplayer.cpp \ $(OPIEDIR)/include/qpe/qpeapplication.h \ - $(OPIEDIR)/include/qpedecoration_qws.h \ - $(OPIEDIR)/include/timestring.h \ $(OPIEDIR)/include/qpe/qlibrary.h \ $(OPIEDIR)/include/qpe/qcom.h \ $(OPIEDIR)/include/qpe/quuid.h \ $(OPIEDIR)/include/qpe/resource.h \ $(OPIEDIR)/include/qpe/config.h \ mediaplayer.h \ - mediaplayerplugininterface.h \ playlistwidget.h \ $(OPIEDIR)/include/qpe/applnk.h \ audiowidget.h \ loopcontrol.h \ @@ -230,12 +212,11 @@ mediaplayer.o: mediaplayer.cpp \ mediaplayerstate.h audiodevice.o: audiodevice.cpp \ $(OPIEDIR)/include/qpe/qpeapplication.h \ - $(OPIEDIR)/include/qpedecoration_qws.h \ - $(OPIEDIR)/include/timestring.h \ $(OPIEDIR)/include/qpe/config.h \ - audiodevice.h + audiodevice.h \ + $(OPIEDIR)/include/qpe/qcopenvelope_qws.h moc_loopcontrol.o: moc_loopcontrol.cpp \ loopcontrol.h @@ -259,10 +240,9 @@ moc_playlistwidget.o: moc_playlistwidget.cpp \ moc_mediaplayer.o: moc_mediaplayer.cpp \ mediaplayer.h \ $(OPIEDIR)/include/qpe/qlibrary.h \ $(OPIEDIR)/include/qpe/qcom.h \ - $(OPIEDIR)/include/qpe/quuid.h \ - mediaplayerplugininterface.h + $(OPIEDIR)/include/qpe/quuid.h moc_audiodevice.o: moc_audiodevice.cpp \ audiodevice.h diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp index 11fd9e8..7b3700a 100644 --- a/core/multimedia/opieplayer/audiodevice.cpp +++ b/core/multimedia/opieplayer/audiodevice.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,13 +16,10 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -// L.J.Potter added better error code Fri 02-15-2002 14:37:47 - #include <stdlib.h> -#include <stdio.h> #include <qpe/qpeapplication.h> #include <qpe/config.h> #include "audiodevice.h" @@ -108,20 +105,19 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume formatData.nSamplesPerSec = 44000; formatData.wBitsPerSample = 16; waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); if ( waveOutGetVolume( handle, (LPDWORD)&volume ) ) -// qDebug( "get volume of audio device failed" ); + qDebug( "get volume of audio device failed" ); waveOutClose( handle ); leftVolume = volume & 0xFFFF; rightVolume = volume >> 16; #else int mixerHandle = open( "/dev/mixer", O_RDWR ); if ( mixerHandle >= 0 ) { - if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1) - perror("ioctl(\"MIXER_READ\")"); + ioctl( mixerHandle, MIXER_READ(0), &volume ); close( mixerHandle ); } else - perror("open(\"/dev/mixer\")"); + qDebug( "get volume of audio device failed" ); leftVolume = ((volume & 0x00FF) << 16) / 101; rightVolume = ((volume & 0xFF00) << 8) / 101; #endif } @@ -150,9 +146,9 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, formatData.wBitsPerSample = 16; waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); unsigned int volume = (rightVolume << 16) | leftVolume; if ( waveOutSetVolume( handle, volume ) ) -// qDebug( "set volume of audio device failed" ); + qDebug( "set volume of audio device failed" ); waveOutClose( handle ); #else // Volume can be from 0 to 100 which is 101 distinct values unsigned int rV = (rightVolume * 101) >> 16; @@ -161,14 +157,12 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, unsigned int lV = (leftVolume * 101) >> 16; unsigned int volume = ((rV << 8) & 0xFF00) | (lV & 0x00FF); int mixerHandle = 0; if ( ( mixerHandle = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { - if(ioctl( mixerHandle, MIXER_WRITE(0), &volume ) ==-1) - perror("ioctl(\"MIXER_WRITE\")"); + ioctl( mixerHandle, MIXER_WRITE(0), &volume ); close( mixerHandle ); } else - perror("open(\"/dev/mixer\")"); - + qDebug( "set volume of audio device failed" ); # else // This is the way this has to be done now I guess, doesn't allow for // independant right and left channel setting, or setting for different outputs Config cfg("Sound"); @@ -191,26 +185,54 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { d = new AudioDevicePrivate; d->frequency = f; d->channels = chs; d->bytesPerSample = bps; -// qDebug("%d",bps); - int format=0; - if( bps == 8) format = AFMT_U8; - else if( bps <= 0) format = AFMT_S16_LE; - else format = AFMT_S16_LE; -// qDebug("AD- freq %d, channels %d, b/sample %d, bitrate %d",f,chs,bps,format); connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) ); +#ifdef Q_OS_WIN32 + UINT result; + WAVEFORMATEX formatData; + formatData.cbSize = sizeof(WAVEFORMATEX); +/* + // Other possible formats windows supports + formatData.wFormatTag = WAVE_FORMAT_MPEG; + formatData.wFormatTag = WAVE_FORMAT_MPEGLAYER3; + formatData.wFormatTag = WAVE_FORMAT_ADPCM; +*/ + formatData.wFormatTag = WAVE_FORMAT_PCM; + formatData.nAvgBytesPerSec = bps * chs * f; + formatData.nBlockAlign = bps * chs; + formatData.nChannels = chs; + formatData.nSamplesPerSec = f; + formatData.wBitsPerSample = bps * 8; + // Open a waveform device for output + if (result = waveOutOpen((LPHWAVEOUT)&d->handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL)) { + QString errorMsg = "error opening audio device.\nReason: %i - "; + switch (result) { + case MMSYSERR_ALLOCATED: errorMsg += "Specified resource is already allocated."; break; + case MMSYSERR_BADDEVICEID: errorMsg += "Specified device identifier is out of range."; break; + case MMSYSERR_NODRIVER: errorMsg += "No device driver is present."; break; + case MMSYSERR_NOMEM: errorMsg += "Unable to allocate or lock memory."; break; + case WAVERR_BADFORMAT: errorMsg += "Attempted to open with an unsupported waveform-audio format."; break; + case WAVERR_SYNC: errorMsg += "The device is synchronous but waveOutOpen was called without using the WAVE_ALLOWSYNC flag."; break; + default: errorMsg += "Undefined error"; break; + } + qDebug( errorMsg, result ); + } + + d->bufferSize = sound_fragment_bytes; +#else int fragments = 0x10000 * 8 + sound_fragment_shift; + int format = AFMT_S16_LE; int capabilities = 0; #ifdef KEEP_DEVICE_OPEN if ( AudioDevicePrivate::dspFd == 0 ) { #endif if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) { - perror("open(\"/dev/dsp\") sending to /dev/null instead"); + qDebug( "error opening audio device /dev/dsp, sending data to /dev/null instead" ); d->handle = ::open( "/dev/null", O_WRONLY ); } #ifdef KEEP_DEVICE_OPEN AudioDevicePrivate::dspFd = d->handle; @@ -218,22 +240,15 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { d->handle = AudioDevicePrivate::dspFd; } #endif - if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1) - perror("ioctl(\"SNDCTL_DSP_GETCAPS\")"); - if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1) - perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")"); - if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1) - perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); - qDebug("freq %d", d->frequency); - if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1) - perror("ioctl(\"SNDCTL_DSP_SPEED\")"); - qDebug("channels %d",d->channels); + ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities ); + ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments ); + ioctl( d->handle, SNDCTL_DSP_SETFMT, &format ); + ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency ); if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) { d->channels = ( d->channels == 1 ) ? 2 : d->channels; - if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1) - perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); + ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ); } d->bufferSize = sound_fragment_bytes; d->unwrittenBuffer = new char[d->bufferSize]; @@ -245,8 +260,9 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" ); //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" ); //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" ); //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" ); +#endif } AudioDevice::~AudioDevice() { diff --git a/core/multimedia/opieplayer/audiodevice.h b/core/multimedia/opieplayer/audiodevice.h index dcd79fe..ec70788 100644 --- a/core/multimedia/opieplayer/audiodevice.h +++ b/core/multimedia/opieplayer/audiodevice.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,26 +16,21 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -// L.J.Potter added changes Fri 02-15-2002 - - #ifndef AUDIODEVICE_H #define AUDIODEVICE_H - #include <qobject.h> -#include <sys/soundcard.h> class AudioDevicePrivate; class AudioDevice : public QObject { Q_OBJECT public: - AudioDevice( unsigned int freq = 44000, unsigned int channels = 2, unsigned int bytesPerSample = AFMT_S16_LE ); + AudioDevice( unsigned int freq = 44000, unsigned int channels = 2, unsigned int bytesPerSample = 2 ); ~AudioDevice(); unsigned int canWrite() const; void write( char *buffer, unsigned int length ); diff --git a/core/multimedia/opieplayer/audiowidget.cpp b/core/multimedia/opieplayer/audiowidget.cpp index 0d88591..1e0757f 100644 --- a/core/multimedia/opieplayer/audiowidget.cpp +++ b/core/multimedia/opieplayer/audiowidget.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -25,9 +25,8 @@ #include <qpe/resource.h> #include "audiowidget.h" #include "mediaplayerstate.h" - extern MediaPlayerState *mediaPlayerState; static const int xo = -2; // movable x offset @@ -60,9 +59,9 @@ static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton)); AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) : QWidget( parent, name, f ) { - setCaption( tr("OpiePlayer") ); + setCaption( tr("MediaPlayer") ); setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/metalFinish" ) ); pixmaps[0] = new QPixmap( Resource::loadPixmap( "mpegplayer/mediaButtonsAll" ) ); pixmaps[1] = new QPixmap( Resource::loadPixmap( "mpegplayer/mediaButtonsBig" ) ); pixmaps[2] = new QPixmap( Resource::loadPixmap( "mpegplayer/mediaControls" ) ); diff --git a/core/multimedia/opieplayer/audiowidget.h b/core/multimedia/opieplayer/audiowidget.h index 4b82a91..95f5322 100644 --- a/core/multimedia/opieplayer/audiowidget.h +++ b/core/multimedia/opieplayer/audiowidget.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -19,9 +19,8 @@ **********************************************************************/ #ifndef AUDIO_WIDGET_H #define AUDIO_WIDGET_H - #include <qwidget.h> #include <qpainter.h> #include <qdrawutil.h> #include <qpixmap.h> diff --git a/core/multimedia/opieplayer/libflash/libflashplugin.h b/core/multimedia/opieplayer/libflash/libflashplugin.h index a2f1c42..48b512f 100644 --- a/core/multimedia/opieplayer/libflash/libflashplugin.h +++ b/core/multimedia/opieplayer/libflash/libflashplugin.h @@ -23,10 +23,9 @@ #include <qstring.h> #include <qapplication.h> #include "flash.h" -//#include <qpe/mediaplayerplugininterface.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> class LibFlashPlugin : public MediaPlayerDecoder { @@ -48,9 +47,8 @@ public: int audioStreams() { return 1; } int audioChannels( int /*stream*/ ) { return 2; } int audioFrequency( int /*stream*/ ) { return 44100; } int audioSamples( int /*stream*/ ) { return 1000000; } -int audioBitsPerSample(int) { return 0;} bool audioSetSample( long sample, int stream ); long audioGetSample( int stream ); //bool audioReadMonoSamples( short *output, long samples, long& samplesRead, int stream ); //bool audioReadStereoSamples( short *output, long samples, long& samplesRead, int stream ); diff --git a/core/multimedia/opieplayer/libflash/libflashpluginimpl.h b/core/multimedia/opieplayer/libflash/libflashpluginimpl.h index cb8d959..33d8ad2 100644 --- a/core/multimedia/opieplayer/libflash/libflashpluginimpl.h +++ b/core/multimedia/opieplayer/libflash/libflashpluginimpl.h @@ -20,10 +20,9 @@ #ifndef LIBFLASH_PLUGIN_IMPL_H #define LIBFLASH_PLUGIN_IMPL_H -//#include <qpe/mediaplayerplugininterface.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> class LibFlashPlugin; diff --git a/core/multimedia/opieplayer/libflash/swf.h b/core/multimedia/opieplayer/libflash/swf.h index 48986cc..5f5e4f7 100644 --- a/core/multimedia/opieplayer/libflash/swf.h +++ b/core/multimedia/opieplayer/libflash/swf.h @@ -207,9 +207,9 @@ extern "C" { #include "jpeglib.h" }; extern "C" { //#include "zlib.h" -#include "/opt/qt-2.3.2-embedded/src/3rdparty/zlib/zlib.h" +#include "../src/3rdparty/zlib/zlib.h" }; #include "graphic.h" #include "character.h" diff --git a/core/multimedia/opieplayer/libmad/Makefile.in b/core/multimedia/opieplayer/libmad/Makefile.in index 552043c..e9f74e7 100644 --- a/core/multimedia/opieplayer/libmad/Makefile.in +++ b/core/multimedia/opieplayer/libmad/Makefile.in @@ -213,13 +213,11 @@ huffman.o: huffman.c \ huffman.h libmadplugin.o: libmadplugin.cpp \ libmadplugin.h \ - ../mediaplayerplugininterface.h \ mad.h libmadpluginimpl.o: libmadpluginimpl.cpp \ libmadplugin.h \ - ../mediaplayerplugininterface.h \ libmadpluginimpl.h diff --git a/core/multimedia/opieplayer/libmad/libmad.pro b/core/multimedia/opieplayer/libmad/libmad.pro index b54ca6b..6c40a15 100644 --- a/core/multimedia/opieplayer/libmad/libmad.pro +++ b/core/multimedia/opieplayer/libmad/libmad.pro @@ -7,8 +7,6 @@ SOURCES = version.c fixed.c bit.c timer.c stream.c frame.c synth.c dec TARGET = madplugin DESTDIR = ../../plugins/codecs INCLUDEPATH += $(OPIEDIR)/include .. DEPENDPATH += ../$(OPIEDIR)/include .. -TMAKE_CFLAGS += -DFPM_64BIT -TMAKE_CXXFLAGS += -DFPM_64BIT LIBS += -lqpe -lm VERSION = 1.0.0 diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.h b/core/multimedia/opieplayer/libmad/libmadplugin.h index ff84c27..d85e0d4 100644 --- a/core/multimedia/opieplayer/libmad/libmadplugin.h +++ b/core/multimedia/opieplayer/libmad/libmadplugin.h @@ -19,12 +19,10 @@ **********************************************************************/ #ifndef LIBMAD_PLUGIN_H #define LIBMAD_PLUGIN_H - #include <qstring.h> -//#include <qpe/mediaplayerplugininterface.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> // #define OLD_MEDIAPLAYER_API @@ -53,9 +51,8 @@ public: int audioChannels( int stream ); int audioFrequency( int stream ); int audioSamples( int stream ); bool audioSetSample( long sample, int stream ); - int audioBitsPerSample(int) {return 0;} long audioGetSample( int stream ); #ifdef OLD_MEDIAPLAYER_API bool audioReadMonoSamples( short *output, long samples, long& samplesRead, int stream ); bool audioReadStereoSamples( short *output, long samples, long& samplesRead, int stream ); diff --git a/core/multimedia/opieplayer/libmad/libmadpluginimpl.h b/core/multimedia/opieplayer/libmad/libmadpluginimpl.h index 8ad4956..2c5ed3b 100644 --- a/core/multimedia/opieplayer/libmad/libmadpluginimpl.h +++ b/core/multimedia/opieplayer/libmad/libmadpluginimpl.h @@ -19,11 +19,9 @@ **********************************************************************/ #ifndef LIBMAD_PLUGIN_IMPL_H #define LIBMAD_PLUGIN_IMPL_H - -//#include <qpe/mediaplayerplugininterface.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> class LibMadPlugin; @@ -42,8 +40,9 @@ public: #endif virtual MediaPlayerDecoder *decoder(); virtual MediaPlayerEncoder *encoder(); + private: LibMadPlugin *libmadplugin; ulong ref; }; diff --git a/core/multimedia/opieplayer/libmad/version.c b/core/multimedia/opieplayer/libmad/version.c index 1baba26..413d54b 100644 --- a/core/multimedia/opieplayer/libmad/version.c +++ b/core/multimedia/opieplayer/libmad/version.c diff --git a/core/multimedia/opieplayer/libmpeg3/Makefile.in b/core/multimedia/opieplayer/libmpeg3/Makefile.in index d255e4f..154f85d 100644 --- a/core/multimedia/opieplayer/libmpeg3/Makefile.in +++ b/core/multimedia/opieplayer/libmpeg3/Makefile.in @@ -175,10 +175,9 @@ libmpeg3plugin.o: libmpeg3plugin.cpp \ mpeg3private.inc \ audio/mpeg3audio.h \ mpeg3vtrack.h \ video/mpeg3video.h \ - mpeg3protos.h \ - ../mediaplayerplugininterface.h + mpeg3protos.h libmpeg3pluginimpl.o: libmpeg3pluginimpl.cpp \ libmpeg3plugin.h \ libmpeg3.h \ @@ -192,9 +191,8 @@ libmpeg3pluginimpl.o: libmpeg3pluginimpl.cpp \ audio/mpeg3audio.h \ mpeg3vtrack.h \ video/mpeg3video.h \ mpeg3protos.h \ - ../mediaplayerplugininterface.h \ libmpeg3pluginimpl.h bitstream.o: bitstream.c \ mpeg3private.h \ @@ -415,9 +413,9 @@ audio/layer2.o: audio/layer2.c \ audio/../mpeg3protos.h \ audio/tables.h audio/layer3.o: audio/layer3.c \ - huffman.h \ + audio/huffman.h \ audio/mpeg3audio.h \ audio/ac3.h \ audio/mpeg3real.h \ audio/../bitstream.h \ diff --git a/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h b/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h index 54f259b..e0eb930 100644 --- a/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h +++ b/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h @@ -19,15 +19,13 @@ **********************************************************************/ #ifndef LIBMPEG3_PLUGIN_H #define LIBMPEG3_PLUGIN_H - #include <qstring.h> #include <qapplication.h> #include "libmpeg3.h" #include "mpeg3protos.h" -//#include <qpe/mediaplayerplugininterface.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> // #define OLD_MEDIAPLAYER_API @@ -51,9 +49,8 @@ public: // If decoder doesn't support audio then return 0 here int audioStreams() { return file ? mpeg3_total_astreams( file ) : 0; } int audioChannels( int stream ) { return file ? mpeg3_audio_channels( file, stream ) : 0; } int audioFrequency( int stream ) { return file ? mpeg3_sample_rate( file, stream ) : 0; } - int audioBitsPerSample(int) { return 0;} int audioSamples( int stream ) { return file ? mpeg3_audio_samples( file, stream ) : 0; } bool audioSetSample( long sample, int stream ) { return file ? mpeg3_set_sample( file, sample, stream) == 1 : FALSE; } long audioGetSample( int stream ) { return file ? mpeg3_get_sample( file, stream ) : 0; } #ifdef OLD_MEDIAPLAYER_API diff --git a/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h b/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h index 89abf97..e9926f4 100644 --- a/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h +++ b/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h @@ -19,11 +19,9 @@ **********************************************************************/ #ifndef LIBMPEG3_PLUGIN_IMPL_H #define LIBMPEG3_PLUGIN_IMPL_H - -//#include <qpe/mediaplayerplugininterface.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> class LibMpeg3Plugin; diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp index 1ae0059..dd466ed 100644 --- a/core/multimedia/opieplayer/loopcontrol.cpp +++ b/core/multimedia/opieplayer/loopcontrol.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,15 +16,14 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -// L.J.Potter added changes Fri 02-15-2002 - #include <qpe/qpeapplication.h> - #ifdef Q_WS_QWS + #include <qpe/qcopenvelope_qws.h> #endif +#include <qpe/mediaplayerplugininterface.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> @@ -32,9 +31,8 @@ #include <unistd.h> #include "loopcontrol.h" #include "videowidget.h" #include "audiodevice.h" -#include "mediaplayerplugininterface.h" #include "mediaplayerstate.h" extern VideoWidget *videoUI; // now only needed to tell it to play a frame @@ -103,10 +101,12 @@ LoopControl::LoopControl( QObject *parent, const char *name ) audioMutex = new Mutex; pthread_attr_init(&audio_attr); -#define USE_REALTIME_AUDIO_THREAD -#ifdef USE_REALTIME_AUDIO_THREAD + + if ( getuid() == 0 ) { + printf("true, guid = %i\n", getuid()); + // Attempt to set it to real-time round robin if ( pthread_attr_setschedpolicy( &audio_attr, SCHED_RR ) == 0 ) { sched_param params; params.sched_priority = 50; @@ -115,9 +115,12 @@ LoopControl::LoopControl( QObject *parent, const char *name ) qDebug( "Error setting up a realtime thread, reverting to using a normal thread." ); pthread_attr_destroy(&audio_attr); pthread_attr_init(&audio_attr); } -#endif + } +// printf("false, guid = %i\n", getuid()); + usleep( 100 ); + pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this); } @@ -230,25 +233,24 @@ void LoopControl::startAudio() { if ( currentSample != audioSampleCounter + 1 ) qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter); long samplesRead = 0; - bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); + mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; long sampleWaitTime = currentSample - sampleWeShouldBeAt; if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); - } - else if ( sampleWaitTime <= -5000 ) { + } else if ( sampleWaitTime <= -5000 ) { qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); currentSample = sampleWeShouldBeAt; } audioDevice->write( audioBuffer, samplesRead * 2 * channels ); audioSampleCounter = currentSample + samplesRead - 1; - moreAudio = readOk && (audioSampleCounter <= total_audio_samples); + moreAudio = audioSampleCounter <= total_audio_samples; } else { moreAudio = FALSE; @@ -376,25 +378,25 @@ bool LoopControl::init( const QString& filename ) { if ( hasAudioChannel ) { int astream = 0; channels = mediaPlayerState->curDecoder()->audioChannels( astream ); - qDebug( "LC- channels = %d", channels ); + DecodeLoopDebug(( "channels = %d\n", channels )); if ( !total_audio_samples ) total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); -// total_audio_samples += 1000; + total_audio_samples += 1000; mediaPlayerState->setLength( total_audio_samples ); freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); - qDebug( "LC- frequency = %d", freq ); + DecodeLoopDebug(( "frequency = %d\n", freq )); audioSampleCounter = 0; - int bits_per_sample = mediaPlayerState->curDecoder()->audioBitsPerSample( astream); + static const int bytes_per_sample = 2; //16 bit - audioDevice = new AudioDevice( freq, channels, bits_per_sample); + audioDevice = new AudioDevice( freq, channels, bytes_per_sample ); audioBuffer = new char[ audioDevice->bufferSize() ]; channels = audioDevice->channels(); //### must check which frequency is actually used. diff --git a/core/multimedia/opieplayer/loopcontrol.h b/core/multimedia/opieplayer/loopcontrol.h index fc7d316..3191259 100644 --- a/core/multimedia/opieplayer/loopcontrol.h +++ b/core/multimedia/opieplayer/loopcontrol.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,14 +16,11 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -// L.J.Potter added changes Fri 02-15-2002 - #ifndef MPEGVIEW_H #define MPEGVIEW_H - #include <qwidget.h> #include <qdatetime.h> diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.cpp b/core/multimedia/opieplayer/loopcontrol_threaded.cpp index 2e49bb7..eb89b85 100644 --- a/core/multimedia/opieplayer/loopcontrol_threaded.cpp +++ b/core/multimedia/opieplayer/loopcontrol_threaded.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -19,15 +19,16 @@ **********************************************************************/ #define _REENTRANT + #include <qpe/qpeapplication.h> #include <qimage.h> #include <qpainter.h> #ifdef Q_WS_QWS #include <qpe/qcopenvelope_qws.h> #endif -#include "mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.h b/core/multimedia/opieplayer/loopcontrol_threaded.h index 9a009d1..ced6ac8 100644 --- a/core/multimedia/opieplayer/loopcontrol_threaded.h +++ b/core/multimedia/opieplayer/loopcontrol_threaded.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -20,8 +20,9 @@ #ifndef MPEGVIEW_H #define MPEGVIEW_H + #include <qwidget.h> #include <qdatetime.h> diff --git a/core/multimedia/opieplayer/main.cpp b/core/multimedia/opieplayer/main.cpp index 9f7ef73..720a1ca 100644 --- a/core/multimedia/opieplayer/main.cpp +++ b/core/multimedia/opieplayer/main.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -24,9 +24,8 @@ #include "videowidget.h" #include "loopcontrol.h" #include "mediaplayer.h" - MediaPlayerState *mediaPlayerState; PlayListWidget *playList; AudioWidget *audioUI; VideoWidget *videoUI; @@ -47,9 +46,9 @@ int main(int argc, char **argv) { LoopControl lc( 0, "loopControl" ); loopControl = &lc; MediaPlayer mp( 0, "mediaPlayer" ); - pl.setCaption( MediaPlayer::tr("Opie Player") ); + pl.setCaption( MediaPlayer::tr("Media Player") ); a.showMainDocumentWidget(&pl); return a.exec(); } diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp index 3d8f76c..ce42c2c 100644 --- a/core/multimedia/opieplayer/mediaplayer.cpp +++ b/core/multimedia/opieplayer/mediaplayer.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,8 +16,9 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ + #include <qpe/qpeapplication.h> #include <qpe/qlibrary.h> #include <qpe/resource.h> #include <qpe/config.h> diff --git a/core/multimedia/opieplayer/mediaplayer.h b/core/multimedia/opieplayer/mediaplayer.h index 379d95c..73f8124 100644 --- a/core/multimedia/opieplayer/mediaplayer.h +++ b/core/multimedia/opieplayer/mediaplayer.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -19,13 +19,12 @@ **********************************************************************/ #ifndef MEDIA_PLAYER_H #define MEDIA_PLAYER_H - #include <qmainwindow.h> #include <qframe.h> #include <qpe/qlibrary.h> -#include "mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> class DocLnk; diff --git a/core/multimedia/opieplayer/mediaplayerplugininterface.h b/core/multimedia/opieplayer/mediaplayerplugininterface.h index 339b2e4..aeeffde 100644 --- a/core/multimedia/opieplayer/mediaplayerplugininterface.h +++ b/core/multimedia/opieplayer/mediaplayerplugininterface.h @@ -19,8 +19,9 @@ **********************************************************************/ #ifndef MEDIA_PLAYER_PLUGIN_INTERFACE_H #define MEDIA_PLAYER_PLUGIN_INTERFACE_H + #include <qpe/qcom.h> #ifndef QT_NO_COMPONENT // {c0093632-b44c-4cf7-a279-d82fe8a8890c} @@ -60,9 +61,14 @@ public: virtual int audioFrequency( int stream ) = 0; virtual int audioSamples( int stream ) = 0; virtual bool audioSetSample( long sample, int stream ) = 0; virtual long audioGetSample( int stream ) = 0; +// virtual bool audioReadMonoSamples( short *samples, long samples, long& samplesRead, int stream ) = 0; +// virtual bool audioReadStereoSamples( short *samples, long samples, long& samplesRead, int stream ) = 0; virtual bool audioReadSamples( short *samples, int channels, long samples, long& samplesRead, int stream ) = 0; + // Libmpeg3 functions, perhaps good for reading an audio file with 5 channels or something! +// virtual bool audioReadSamples( short *samples, int channel, long samples, int stream ) = 0; +// virtual bool audioReReadSamples( short *samples, int channel, long samples, int stream ) = 0; // If decoder doesn't support video then return 0 here virtual int videoStreams() = 0; virtual int videoWidth( int stream ) = 0; @@ -90,11 +96,8 @@ public: virtual bool supportsSMP() = 0; virtual bool supportsStereo() = 0; virtual bool supportsScaling() = 0; - // File Properies - virtual long getPlayTime() { return -1; } - virtual int audioBitsPerSample( int stream ) = 0; }; class MediaPlayerEncoder; diff --git a/core/multimedia/opieplayer/mediaplayerstate.cpp b/core/multimedia/opieplayer/mediaplayerstate.cpp index 2a6bca3..7e82166 100644 --- a/core/multimedia/opieplayer/mediaplayerstate.cpp +++ b/core/multimedia/opieplayer/mediaplayerstate.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -18,27 +18,25 @@ ** **********************************************************************/ #include <qpe/qpeapplication.h> #include <qpe/qlibrary.h> +#include <qpe/mediaplayerplugininterface.h> #include <qpe/config.h> #include <qvaluelist.h> #include <qobject.h> #include <qdir.h> -#include "mediaplayerplugininterface.h" #include "mediaplayerstate.h" - - #ifdef QT_NO_COMPONENT // Plugins which are compiled in when no plugin architecture available #include "libmad/libmadpluginimpl.h" #include "libmpeg3/libmpeg3pluginimpl.h" #include "wavplugin/wavpluginimpl.h" #endif -//#define MediaPlayerDebug(x) qDebug x -#define MediaPlayerDebug(x) +#define MediaPlayerDebug(x) qDebug x +//#define MediaPlayerDebug(x) MediaPlayerState::MediaPlayerState( QObject *parent, const char *name ) : QObject( parent, name ), decoder( NULL ), libmpeg3decoder( NULL ) { @@ -115,12 +113,8 @@ MediaPlayerDecoder *MediaPlayerState::curDecoder() { MediaPlayerDecoder *MediaPlayerState::libMpeg3Decoder() { return libmpeg3decoder; } -// ### hack to get true sample count -// MediaPlayerDecoder *MediaPlayerState::libWavDecoder() { -// return libwavdecoder; -// } void MediaPlayerState::loadPlugins() { #ifndef QT_NO_COMPONENT diff --git a/core/multimedia/opieplayer/mediaplayerstate.h b/core/multimedia/opieplayer/mediaplayerstate.h index 1a23742..e82c263 100644 --- a/core/multimedia/opieplayer/mediaplayerstate.h +++ b/core/multimedia/opieplayer/mediaplayerstate.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -19,9 +19,8 @@ **********************************************************************/ #ifndef MEDIA_PLAYER_STATE_H #define MEDIA_PLAYER_STATE_H - #include <qobject.h> class MediaPlayerDecoder; @@ -105,9 +104,8 @@ private: char curView; MediaPlayerDecoder *decoder; MediaPlayerDecoder *libmpeg3decoder; -// MediaPlayerDecoder *libwavdecoder; void loadPlugins(); void readConfig( Config& cfg ); void writeConfig( Config& cfg ) const; diff --git a/core/multimedia/opieplayer/playlistselection.cpp b/core/multimedia/opieplayer/playlistselection.cpp index f17ab6f..a82b594 100644 --- a/core/multimedia/opieplayer/playlistselection.cpp +++ b/core/multimedia/opieplayer/playlistselection.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -29,9 +29,8 @@ #include "playlistselection.h" #include <stdlib.h> - class PlayListSelectionItem : public QListViewItem { public: PlayListSelectionItem( QListView *parent, const DocLnk *f ) : QListViewItem( parent ), fl( f ) { setText( 0, f->name() ); diff --git a/core/multimedia/opieplayer/playlistselection.h b/core/multimedia/opieplayer/playlistselection.h index 6ce6bdc..22d3c74 100644 --- a/core/multimedia/opieplayer/playlistselection.h +++ b/core/multimedia/opieplayer/playlistselection.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -20,8 +20,9 @@ #ifndef PLAY_LIST_SELECTION_H #define PLAY_LIST_SELECTION_H + #include <qlist.h> #include <qlistview.h> #include <qpe/applnk.h> diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp index 269aed8..0423e7a 100644 --- a/core/multimedia/opieplayer/playlistwidget.cpp +++ b/core/multimedia/opieplayer/playlistwidget.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,13 +16,12 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ + #include <qpe/qpemenubar.h> #include <qpe/qpetoolbar.h> #include <qpe/fileselector.h> -#include <qpe/qpeapplication.h> - #include <qpe/applnk.h> #include <qpe/config.h> #include <qpe/global.h> #include <qpe/resource.h> @@ -35,31 +34,27 @@ #include <qlistbox.h> #include <qmainwindow.h> #include <qmessagebox.h> #include <qtoolbutton.h> -#include <qtabwidget.h> -#include <qlistview.h> -#include <qpoint.h> -//#include <qtimer.h> #include "playlistselection.h" #include "playlistwidget.h" #include "mediaplayerstate.h" #include <stdlib.h> -#define BUTTONS_ON_TOOLBAR -#define SIDE_BUTTONS -#define CAN_SAVE_LOAD_PLAYLISTS extern MediaPlayerState *mediaPlayerState; -// class myFileSelector { -// }; class PlayListWidgetPrivate { public: - QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove; + QToolButton *tbPlay; + QToolButton *tbFull; + QToolButton *tbLoop; + QToolButton *tbScale; + QToolButton *tbShuffle; + QFrame *playListFrame; FileSelector *files; PlayListSelection *selectedFiles; bool setDocumentUsed; @@ -97,14 +92,12 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) d = new PlayListWidgetPrivate; d->setDocumentUsed = FALSE; d->current = NULL; -// menuTimer = new QTimer( this ,"menu timer"), -// connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) ); setBackgroundMode( PaletteButton ); - setCaption( tr("OpiePlayer") ); + setCaption( tr("MediaPlayer") ); setIcon( Resource::loadPixmap( "MPEGPlayer" ) ); setToolBarsMovable( FALSE ); @@ -117,168 +110,79 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) menu->setMargin( 0 ); QPEToolBar *bar = new QPEToolBar( this ); bar->setLabel( tr( "Play Operations" ) ); - d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "mpegplayer/add_to_playlist", - this , SLOT(addSelected()) ); - d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "mpegplayer/remove_from_playlist", - this , SLOT(removeSelected()) ); - d->tbPlay = new ToolButton( bar, tr( "Play" ), "mpegplayer/play", - mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); - - d->tbShuffle = new ToolButton( bar, tr( "Randomize" ), "mpegplayer/shuffle", - mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); - d->tbLoop = new ToolButton( bar, tr( "Loop" ), "mpegplayer/loop", - mediaPlayerState, SLOT(setLooping(bool)), TRUE ); - -// d->tbFull = new ToolButton( bar, tr( "Fullscreen" ), "fullscreen", mediaPlayerState, SLOT(setFullscreen(bool)), TRUE ); -// d->tbScale = new ToolButton( bar, tr( "Scale" ), "mpegplayer/scale", mediaPlayerState, SLOT(setScaled(bool)), TRUE ); +#ifdef BUTTONS_ON_TOOLBAR + d->tbPlay = new ToolButton( bar, tr( "Play" ), "mpegplayer/play", mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); + d->tbShuffle = new ToolButton( bar, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); +#endif + d->tbLoop = new ToolButton( bar, tr( "Loop" ), "mpegplayer/loop", mediaPlayerState, SLOT(setLooping(bool)), TRUE ); + d->tbFull = new ToolButton( bar, tr( "Fullscreen" ), "fullscreen", mediaPlayerState, SLOT(setFullscreen(bool)), TRUE ); + d->tbScale = new ToolButton( bar, tr( "Scale" ), "mpegplayer/scale", mediaPlayerState, SLOT(setScaled(bool)), TRUE ); QPopupMenu *pmPlayList = new QPopupMenu( this ); - menu->insertItem( tr( "File" ), pmPlayList ); + menu->insertItem( tr( "PlayList" ), pmPlayList ); + new MenuItem( pmPlayList, tr( "Toggle PlayList" ), mediaPlayerState, SLOT( togglePlaylist() ) ); new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); - new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); + new MenuItem( pmPlayList, tr( "Add all music files" ), this, SLOT( addAllMusicToList() ) ); new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); +#ifdef CAN_SAVE_LOAD_PLAYLISTS new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); new MenuItem( pmPlayList, tr( "Load PlayList" ), this, SLOT( loadList() ) ); - - QPopupMenu *pmView = new QPopupMenu( this ); - menu->insertItem( tr( "View" ), pmView ); - - fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); - connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); - fullScreenButton->addTo(pmView); - scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("mpegplayer/scale"), QString::null, 0, this, 0); - connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); - scaleButton->addTo(pmView); +#endif QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); - QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); -// vbox4->setMargin(4); -// libString = new QLabel( tr(" Media Library"), vbox4 ); -// libString->setBackgroundMode( QButton::PaletteButton ); -// libString->setFont( QFont( "Helvetica", 8, QFont::Bold ) ); - - QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); - - tabWidget = new QTabWidget( hbox6, "tabWidget" ); - tabWidget->setTabShape(QTabWidget::Triangular); - - - QWidget *pTab; - pTab = new QWidget( tabWidget, "pTab" ); - playlistView = new QListView( pTab, "Videoview" ); - playlistView->setMinimumSize(236,260); - tabWidget->insertTab( pTab,"Playlist"); // Add the playlist area - - QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); + QVBox *vbox3 = new QVBox( vbox5 ); vbox3->setBackgroundMode( PaletteButton ); d->playListFrame = vbox3; - d->playListFrame ->setMinimumSize(235,260); + + QLabel *plString = new QLabel( tr(" PlayList"), vbox3 ); + plString->setBackgroundMode( QButton::PaletteButton ); + plString->setFont( QFont( "Helvetica", 8, QFont::Bold ) ); QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); d->selectedFiles = new PlayListSelection( hbox2); QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); +#ifndef BUTTONS_ON_TOOLBAR + d->tbPlay = new ToolButton( vbox1, tr( "Play" ), "mpegplayer/play", mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch +#endif new ToolButton( vbox1, tr( "Move Up" ), "mpegplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); new ToolButton( vbox1, tr( "Remove" ), "mpegplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); new ToolButton( vbox1, tr( "Move Down" ), "mpegplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch - - QWidget *aTab; - aTab = new QWidget( tabWidget, "aTab" ); - audioView = new QListView( aTab, "Audioview" ); - audioView->setMinimumSize(233,260); - audioView->addColumn( "Title",150); - audioView->addColumn("Size", 45); - audioView->addColumn("Media",35); - audioView->setColumnAlignment(1, Qt::AlignRight); - audioView->setColumnAlignment(2, Qt::AlignRight); - tabWidget->insertTab(aTab,"Audio"); -// audioView - Global::findDocuments(&files, "audio/*"); - QListIterator<DocLnk> dit( files.children() ); - QString storage; - for ( ; dit.current(); ++dit ) { - QListViewItem * newItem; - if(dit.current()->file().find("/mnt/cf") != -1 ) storage="CF"; - else if(dit.current()->file().find("/mnt/hda") != -1 ) storage="CF"; - else if(dit.current()->file().find("/mnt/card") != -1 ) storage="SD"; - else storage="RAM"; - if ( QFile( dit.current()->file()).exists() ) { - newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), QString::number( QFile( dit.current()->file()).size() ), storage); - newItem->setPixmap(0, Resource::loadPixmap( "mpegplayer/musicfile" )); - } - } -// videowidget - - QWidget *vTab; - vTab = new QWidget( tabWidget, "vTab" ); - videoView = new QListView( vTab, "Videoview" ); - videoView->setMinimumSize(233,260); - - videoView->addColumn("Title",150); - videoView->addColumn("Size",45); - videoView->addColumn("Media",35); - videoView->setColumnAlignment(1, Qt::AlignRight); - videoView->setColumnAlignment(2, Qt::AlignRight); - - tabWidget->insertTab( vTab,"Video"); - - Global::findDocuments(&vFiles, "video/*"); - QListIterator<DocLnk> Vdit( vFiles.children() ); - for ( ; Vdit.current(); ++Vdit ) { - if( Vdit.current()->file().find("/mnt/cf") != -1 ) storage="CF"; - else if( Vdit.current()->file().find("/mnt/hda") != -1 ) storage="CF"; - else if( Vdit.current()->file().find("/mnt/card") != -1 ) storage="SD"; - else storage="RAM"; - QListViewItem * newItem; - if ( QFile( Vdit.current()->file()).exists() ) { - newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), QString::number( QFile( Vdit.current()->file()).size() ), storage); - newItem->setPixmap(0, Resource::loadPixmap( "mpegplayer/videofile" )); - } - } - - -// d->tbPlay = new ToolButton( vbox1, tr( "Play" ), "mpegplayer/play", mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); -// d->tbShuffle = new ToolButton( vbox1, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); +#ifndef BUTTONS_ON_TOOLBAR + d->tbShuffle = new ToolButton( vbox1, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); +#endif // add the library area + QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); -// d->files->setBackgroundMode( PaletteButton ); -// QVBox *vbox7 = new QVBox( hbox6 ); vbox7->setBackgroundMode( PaletteButton ); - -// #ifdef SIDE_BUTTONS -// QVBox *stretch3 = new QVBox( vbox1 ); stretch3->setBackgroundMode( PaletteButton ); // add stretch -// #endif - QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); - -// connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); -// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); + QLabel *libString = new QLabel( tr(" Media Library"), vbox4 ); + libString->setBackgroundMode( QButton::PaletteButton ); + libString->setFont( QFont( "Helvetica", 8, QFont::Bold ) ); - connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); - connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); + QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); + d->files = new FileSelector( "video/*;audio/*", hbox6, "Find Media Files", FALSE, FALSE ); + d->files->setBackgroundMode( PaletteButton ); + QVBox *vbox7 = new QVBox( hbox6 ); vbox7->setBackgroundMode( PaletteButton ); - connect( audioView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint&, int ) ), - this, SLOT( addToSelection( QListViewItem *, const QPoint&, int )) ); - connect( videoView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint&, int ) ), - this, SLOT( addToSelection( QListViewItem *, const QPoint&, int )) ); +#ifdef SIDE_BUTTONS + new ToolButton( vbox7, tr( "Add to Playlist" ), "mpegplayer/add_to_playlist", d->selectedFiles, SLOT(addSelected()) ); + new ToolButton( vbox7, tr( "Remove from Playlist" ), "mpegplayer/remove_from_playlist", d->selectedFiles, SLOT(removeSelected()) ); + QVBox *stretch3 = new QVBox( vbox1 ); stretch3->setBackgroundMode( PaletteButton ); // add stretch +#endif - connect( playlistView, SIGNAL( pressed( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); - connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); - // connect( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); - // connect( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); + connect( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); - -// connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), fullScreenButton, SLOT( setOn( bool ) ) ); -// connect( mediaPlayerState, SIGNAL( scaledToggled( bool ) ), scaleButton, SLOT( setEnabled( bool ) ) ); -// connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), fullScreenButton, SLOT( setEnabled( bool ) ) ); - + connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), d->tbFull, SLOT( setOn( bool ) ) ); + connect( mediaPlayerState, SIGNAL( scaledToggled( bool ) ), d->tbScale, SLOT( setOn( bool ) ) ); + connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), d->tbScale, SLOT( setEnabled( bool ) ) ); connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); setCentralWidget( vbox5 ); @@ -299,16 +203,15 @@ PlayListWidget::~PlayListWidget() { } void PlayListWidget::initializeStates() { - d->tbPlay->setOn( mediaPlayerState->playing() ); d->tbLoop->setOn( mediaPlayerState->looping() ); d->tbShuffle->setOn( mediaPlayerState->shuffled() ); -// d->tbFull->setOn( mediaPlayerState->fullscreen() ); -// d->tbScale->setOn( mediaPlayerState->scaled() ); -// d->tbScale->setEnabled( mediaPlayerState->fullscreen() ); -// setPlaylist( mediaPlayerState->playlist() ); + d->tbFull->setOn( mediaPlayerState->fullscreen() ); + d->tbScale->setOn( mediaPlayerState->scaled() ); + d->tbScale->setEnabled( mediaPlayerState->fullscreen() ); + setPlaylist( mediaPlayerState->playlist() ); } void PlayListWidget::readConfig( Config& cfg ) { @@ -371,18 +274,8 @@ void PlayListWidget::addToSelection( const DocLnk& lnk ) { mediaPlayerState->setPlaying( TRUE ); } -void PlayListWidget::addToSelection( QListViewItem *it ,const QPoint & p, int index) { - qDebug("add"); -// d->selectedFiles->addToSelection( lnk ); - // } -// else -// mediaPlayerState->setPlaying( TRUE ); -// -} - - void PlayListWidget::clearList() { while ( first() ) d->selectedFiles->removeSelected(); } @@ -553,146 +446,4 @@ void PlayListWidget::setView( char view ) { else hide(); } -void PlayListWidget::addSelected() { -// QMessageBox::message("Note","Bozo the clown thinks\nthere's something actually here"); - int tabPage=tabWidget->currentPageIndex(); - switch (tabPage) { - case 0: //playlist - break; - case 1: { //audio - addToSelection( audioView->selectedItem() ); - } - break; - case 2: { // video - addToSelection( videoView->selectedItem() ); - } - break; - }; -} - -void PlayListWidget::removeSelected() { - d->selectedFiles->removeSelected( ); -} - - -void PlayListWidget::playIt( QListViewItem *it) { - d->setDocumentUsed = FALSE; - - if(it) { - qDebug("playit"); - int tabPage=tabWidget->currentPageIndex(); - switch (tabPage) { - case 1: { - DocLnkSet files; - QListIterator<DocLnk> dit( files.children() ); - for ( ; dit.current(); ++dit ) { - if( dit.current()->name() == it->text(0)) { - setDocument( dit.current()->name()); - } - } - } - break; - case 2: { - DocLnkSet vFiles; - QListIterator<DocLnk> dit( vFiles.children() ); - for ( ; dit.current(); ++dit ) { - qDebug(dit.current()->name()); - if( dit.current()->name() == it->text(0)) { - qDebug(it->text(0)); - setDocument( dit.current()->name()); - } - } - } - break; - }; - } -} - -void PlayListWidget::addToSelection( QListViewItem *it) { - d->setDocumentUsed = FALSE; - - if(it) { - qDebug("add to selection"); - int tabPage=tabWidget->currentPageIndex(); - switch (tabPage) { - case 1: { - QListIterator<DocLnk> dit( files.children() ); - for ( ; dit.current(); ++dit ) { - if( dit.current()->name() == it->text(0)) { - d->selectedFiles->addToSelection( **dit ); - } - } - } - break; - case 2: { - QListIterator<DocLnk> dit( vFiles.children() ); - for ( ; dit.current(); ++dit ) { - qDebug(dit.current()->name()); - if( dit.current()->name() == it->text(0)) { - d->selectedFiles->addToSelection( **dit ); - } - } - } - break; - case 0: - break; - }; - tabWidget->setCurrentPage(0); -// mediaPlayerState->setPlaying( TRUE ); - } -} - -void PlayListWidget::tabChanged(QWidget *widg) { - - int tabPage=tabWidget->currentPageIndex(); - switch (tabPage) { - case 0: - { - d->tbRemoveFromList->setEnabled(TRUE); - d->tbAddToList->setEnabled(FALSE); - } - break; - case 1: - { - d->tbRemoveFromList->setEnabled(FALSE); - d->tbAddToList->setEnabled(TRUE); - } - break; - case 2: - { - d->tbRemoveFromList->setEnabled(FALSE); - d->tbAddToList->setEnabled(TRUE); - } - break; - }; -} - -// void PlayListWidget::cancelMenuTimer() { -// if( menuTimer->isActive() ) -// menuTimer->stop(); -// } - -// void PlayListWidget::showFileMenu() { - -// } - -// void PlayListWidget::contentsMousePressEvent( QMouseEvent * e ) -// { -// // QListView::contentsMousePressEvent( e ); -// menuTimer->start( 750, TRUE ); -// } - - -// void PlayListWidget::contentsMouseReleaseEvent( QMouseEvent * e ) -// { -// // QListView::contentsMouseReleaseEvent( e ); -// menuTimer->stop(); -// } -// // void PlayListWidget::setFullScreen() { -// mediaPlayerState->toggleFullscreen( ); -// } - -// void PlayListWidget::setScaled() { -// mediaPlayerState->toggleScaled(); -// } diff --git a/core/multimedia/opieplayer/playlistwidget.h b/core/multimedia/opieplayer/playlistwidget.h index 6fe2211..819adb1 100644 --- a/core/multimedia/opieplayer/playlistwidget.h +++ b/core/multimedia/opieplayer/playlistwidget.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -19,44 +19,29 @@ **********************************************************************/ #ifndef PLAY_LIST_WIDGET_H #define PLAY_LIST_WIDGET_H - #include <qmainwindow.h> #include <qpe/applnk.h> -#include <qtabwidget.h> -/* #include <qtimer.h> */ class PlayListWidgetPrivate; class Config; -class QListViewItem; -class QListView; -class QPoint; -class QAction; -class QLabel; + class PlayListWidget : public QMainWindow { Q_OBJECT public: PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 ); ~PlayListWidget(); - QTabWidget * tabWidget; - QAction *fullScreenButton, *scaleButton; - DocLnkSet files; - DocLnkSet vFiles; - QListView *audioView, *videoView, *playlistView; - QLabel *libString; + // retrieve the current playlist entry (media file link) const DocLnk *current(); void useSelectedDocument(); -/* QTimer * menuTimer; */ public slots: void setDocument( const QString& fileref ); void addToSelection( const DocLnk& ); // Add a media file to the playlist - void addToSelection( QListViewItem* ); // Add a media file to the playlist - void addToSelection( QListViewItem*, const QPoint&,int ); // Add a media file to the playlist void setActiveWindow(); // need to handle this to show the right view void setPlaylist( bool ); // Show/Hide the playlist void setView( char ); void clearList(); @@ -64,33 +49,18 @@ public slots: void addAllMusicToList(); void addAllVideoToList(); void saveList(); // Save the playlist void loadList(); // Load a playlist - void playIt( QListViewItem *); bool first(); bool last(); bool next(); bool prev(); - void addSelected(); - void removeSelected(); - void tabChanged(QWidget*); -/* void setFullScreen(); */ -/* void setScaled(); */ -protected: -/* void contentsMousePressEvent( QMouseEvent * e ); */ -/* void contentsMouseReleaseEvent( QMouseEvent * e ); */ private: void initializeStates(); void readConfig( Config& cfg ); void writeConfig( Config& cfg ) const; PlayListWidgetPrivate *d; // Private implementation data - -protected slots: -/* void cancelMenuTimer(); */ -/* void showFileMenu(); */ - - }; #endif // PLAY_LIST_WIDGET_H diff --git a/core/multimedia/opieplayer/videowidget.cpp b/core/multimedia/opieplayer/videowidget.cpp index 1f128a4..12ae4fd 100644 --- a/core/multimedia/opieplayer/videowidget.cpp +++ b/core/multimedia/opieplayer/videowidget.cpp @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -16,10 +16,11 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ + #include <qpe/resource.h> -#include "mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> #include <qwidget.h> #include <qpainter.h> #include <qpixmap.h> #include <qslider.h> @@ -65,9 +66,9 @@ static const int numButtons = (sizeof(videoButtons)/sizeof(MediaButton)); VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) : QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) { - setCaption( tr("OpiePlayer") ); + setCaption( tr("MediaPlayer") ); setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/metalFinish" ) ); pixmaps[0] = new QPixmap( Resource::loadPixmap( "mpegplayer/mediaButton0a" ) ); pixmaps[1] = new QPixmap( Resource::loadPixmap( "mpegplayer/mediaButton0b" ) ); pixmaps[2] = new QPixmap( Resource::loadPixmap( "mpegplayer/mediaControls0" ) ); diff --git a/core/multimedia/opieplayer/videowidget.h b/core/multimedia/opieplayer/videowidget.h index 8b49091..cf13743 100644 --- a/core/multimedia/opieplayer/videowidget.h +++ b/core/multimedia/opieplayer/videowidget.h @@ -1,8 +1,8 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -22,9 +22,8 @@ #include <qwidget.h> - class QPixmap; class QSlider; 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 @@ -99,13 +99,11 @@ REQUIRES= ####### Compile wavplugin.o: wavplugin.cpp \ - wavplugin.h \ - ../mediaplayerplugininterface.h + wavplugin.h 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 @@ -16,19 +16,16 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -// L.J.Potter added changes Fri 02-15-2002 - #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <errno.h> #include <unistd.h> #include <qfile.h> #include "wavplugin.h" - //#define debugMsg(a) qDebug(a) #define debugMsg(a) @@ -48,9 +45,9 @@ struct ChunkData { Q_INT16 wBitsPerSample; }; -const int sound_buffer_size = 512; // 4096; // you got to be kidding right? +const int sound_buffer_size = 4096; class WavPluginData { public: @@ -62,8 +59,12 @@ public: uchar data[sound_buffer_size+32]; // +32 to handle badly aligned input data int out,max; int samples_due; int samples; + int freq; + int chan; + int sampleRate; + int resolution; WavPluginData() { max = out = sound_buffer_size; wavedata_remaining = 0; @@ -73,10 +74,10 @@ public: // expands out samples to the frequency of 44kHz bool add( short *output, long count, long& done, bool stereo ) { + qDebug("add"); done = 0; - qApp->processEvents(); if ( input == 0 ) { qDebug("no input"); return FALSE; @@ -87,9 +88,9 @@ public: if ( getSample(l, r) == FALSE ) { qDebug("didn't get sample"); return FALSE; } - samples_due += chunkdata.samplesPerSec; + samples_due += 44100; while ( count && (samples_due > chunkdata.samplesPerSec) ) { *output++ = l; if ( stereo ) *output++ = r; @@ -97,12 +98,14 @@ public: count--; done++; } } + return TRUE; } bool initialise() { + qDebug("initialize"); if ( input == 0 ) return FALSE; wavedata_remaining = -1; @@ -137,16 +140,21 @@ public: if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) { qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag); return FALSE; } - } else { + } + + + + + else { // ignored chunk if ( chunk.size > 1000000000 || !input->at(input->at()+chunk.size) ) { return FALSE; } } } // while - qDebug("bits %d", chunkdata.wBitsPerSample); + return TRUE; } @@ -171,18 +179,18 @@ public: max = 0; return TRUE; } } - if ( chunkdata.wBitsPerSample == 8 ) { + if ( resolution == 8 ) { l = (data[out++] - 128) * 128; } else { l = ((short*)data)[out/2]; out += 2; } - if ( chunkdata.channels == 1 ) { + if ( chan == 1 ) { r = l; } else { - if ( chunkdata.wBitsPerSample == 8 ) { + if ( resolution == 8 ) { r = (data[out++] - 128) * 128; } else { r = ((short*)data)[out/2]; out += 2; @@ -190,8 +198,156 @@ public: } return TRUE; } // 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; +} + +////////////////////////////////////////////////// }; WavPlugin::WavPlugin() { @@ -206,9 +362,9 @@ WavPlugin::~WavPlugin() { } bool WavPlugin::isFileSupported( const QString& path ) { -// qDebug( "WavPlugin::isFileSupported" ); + debugMsg( "WavPlugin::isFileSupported" ); char *ext = strrchr( path.latin1(), '.' ); // Test file extension @@ -225,9 +381,9 @@ 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; d->wavedata_remaining = 0; d->samples_due = 0; @@ -239,16 +395,17 @@ bool WavPlugin::open( const QString& path ) { d->input = 0; return FALSE; } +// d->getWavSettings( d->input.handle()); d->initialise(); return TRUE; } bool WavPlugin::close() { -// qDebug( "WavPlugin::close" ); + qDebug( "WavPlugin::close" ); d->input->close(); delete d->input; d->input = 0; @@ -256,46 +413,47 @@ bool WavPlugin::close() { } bool WavPlugin::isOpen() { -// qDebug( "WavPlugin::isOpen" ); + qDebug( "WavPlugin::isOpen" ); return ( d->input != 0 ); } int WavPlugin::audioStreams() { -// qDebug( "WavPlugin::audioStreams" ); + qDebug( "WavPlugin::audioStreams" ); return 1; } int WavPlugin::audioChannels( int ) { -// qDebug( "WavPlugin::audioChannels" ); - return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples + debugMsg( "WavPlugin::audioChannels" ); + return d->chan; } 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; } 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 } bool WavPlugin::audioSetSample( long, int ) { -// qDebug( "WavPlugin::audioSetSample" ); + qDebug( "WavPlugin::audioSetSample" ); return FALSE; } long WavPlugin::audioGetSample( int ) { -// qDebug( "WavPlugin::audioGetSample" ); + qDebug( "WavPlugin::audioGetSample" ); return 0; } /* @@ -323,19 +481,14 @@ 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 6afd67e..19d1a8e 100644 --- a/core/multimedia/opieplayer/wavplugin/wavplugin.h +++ b/core/multimedia/opieplayer/wavplugin/wavplugin.h @@ -16,17 +16,14 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -// L.J.Potter added changes Fri 02-15-2002 - #ifndef WAV_PLUGIN_H #define WAV_PLUGIN_H - #include <qstring.h> #include <qapplication.h> -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> // #define OLD_MEDIAPLAYER_API @@ -53,9 +50,8 @@ public: // If decoder doesn't support audio then return 0 here int audioStreams(); int audioChannels( int stream ); int audioFrequency( int stream ); - int audioBitsPerSample( int stream ); int audioSamples( int stream ); bool audioSetSample( long sample, int stream ); long audioGetSample( int stream ); #ifdef OLD_MEDIAPLAYER_API 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 @@ -19,9 +19,8 @@ **********************************************************************/ #include "wavplugin.h" #include "wavpluginimpl.h" - WavPluginImpl::WavPluginImpl() : libmadplugin(0), ref(0) { } 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 @@ -19,10 +19,9 @@ **********************************************************************/ #ifndef WAV_PLUGIN_IMPL_H #define WAV_PLUGIN_IMPL_H - -#include "../mediaplayerplugininterface.h" +#include <qpe/mediaplayerplugininterface.h> class WavPlugin; |