summaryrefslogtreecommitdiff
path: root/core
Side-by-side diff
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/Makefile.in30
-rw-r--r--core/multimedia/opieplayer/audiodevice.cpp155
-rw-r--r--core/multimedia/opieplayer/audiodevice.h10
-rw-r--r--core/multimedia/opieplayer/audiowidget.cpp126
-rw-r--r--core/multimedia/opieplayer/audiowidget.h4
-rw-r--r--core/multimedia/opieplayer/libmad/Makefile.in2
-rw-r--r--core/multimedia/opieplayer/libmad/libmad.pro18
-rw-r--r--core/multimedia/opieplayer/libmad/libmadplugin.cpp302
-rw-r--r--core/multimedia/opieplayer/libmad/libmadplugin.h4
-rw-r--r--core/multimedia/opieplayer/libmad/libmadpluginimpl.h4
-rw-r--r--core/multimedia/opieplayer/libmpeg3/Makefile.in6
-rw-r--r--core/multimedia/opieplayer/libmpeg3/libmpeg3.pro79
-rw-r--r--core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h4
-rw-r--r--core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h3
-rw-r--r--core/multimedia/opieplayer/loopcontrol.cpp353
-rw-r--r--core/multimedia/opieplayer/loopcontrol.h8
-rw-r--r--core/multimedia/opieplayer/loopcontrol_threaded.cpp8
-rw-r--r--core/multimedia/opieplayer/loopcontrol_threaded.h6
-rw-r--r--core/multimedia/opieplayer/mediaplayerplugininterface.h9
-rw-r--r--core/multimedia/opieplayer/mediaplayerstate.cpp67
-rw-r--r--core/multimedia/opieplayer/mpegplayer.pro29
-rw-r--r--core/multimedia/opieplayer/playlistselection.cpp49
-rw-r--r--core/multimedia/opieplayer/playlistselection.h6
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp510
-rw-r--r--core/multimedia/opieplayer/playlistwidget.h37
-rw-r--r--core/multimedia/opieplayer/videowidget.cpp363
-rw-r--r--core/multimedia/opieplayer/wavplugin/Makefile.in4
27 files changed, 1223 insertions, 973 deletions
diff --git a/core/multimedia/opieplayer/Makefile.in b/core/multimedia/opieplayer/Makefile.in
index 1d2ff5e..e8ccc34 100644
--- a/core/multimedia/opieplayer/Makefile.in
+++ b/core/multimedia/opieplayer/Makefile.in
@@ -138,2 +138,4 @@ main.o: main.cpp \
$(OPIEDIR)/include/qpe/qpeapplication.h \
+ $(OPIEDIR)/include/qpedecoration_qws.h \
+ $(OPIEDIR)/include/timestring.h \
mediaplayerstate.h \
@@ -147,3 +149,4 @@ main.o: main.cpp \
$(OPIEDIR)/include/qpe/qcom.h \
- $(OPIEDIR)/include/qpe/quuid.h
+ $(OPIEDIR)/include/qpe/quuid.h \
+ $(OPIEDIR)/include/qpe/mediaplayerplugininterface.h
@@ -151,3 +154,4 @@ loopcontrol.o: loopcontrol.cpp \
$(OPIEDIR)/include/qpe/qpeapplication.h \
- $(OPIEDIR)/include/qpe/qcopenvelope_qws.h \
+ $(OPIEDIR)/include/qpedecoration_qws.h \
+ $(OPIEDIR)/include/timestring.h \
loopcontrol.h \
@@ -167,2 +171,4 @@ mediaplayerstate.o: mediaplayerstate.cpp \
$(OPIEDIR)/include/qpe/qpeapplication.h \
+ $(OPIEDIR)/include/qpedecoration_qws.h \
+ $(OPIEDIR)/include/timestring.h \
$(OPIEDIR)/include/qpe/qlibrary.h \
@@ -171,2 +177,3 @@ mediaplayerstate.o: mediaplayerstate.cpp \
$(OPIEDIR)/include/qpe/config.h \
+ mediaplayerplugininterface.h \
mediaplayerstate.h \
@@ -178,2 +185,5 @@ videowidget.o: videowidget.cpp \
$(OPIEDIR)/include/qpe/resource.h \
+ mediaplayerplugininterface.h \
+ $(OPIEDIR)/include/qpe/qcom.h \
+ $(OPIEDIR)/include/qpe/quuid.h \
videowidget.h \
@@ -190,2 +200,7 @@ playlistwidget.o: playlistwidget.cpp \
$(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 \
@@ -200,2 +215,4 @@ mediaplayer.o: mediaplayer.cpp \
$(OPIEDIR)/include/qpe/qpeapplication.h \
+ $(OPIEDIR)/include/qpedecoration_qws.h \
+ $(OPIEDIR)/include/timestring.h \
$(OPIEDIR)/include/qpe/qlibrary.h \
@@ -206,2 +223,3 @@ mediaplayer.o: mediaplayer.cpp \
mediaplayer.h \
+ $(OPIEDIR)/include/qpe/mediaplayerplugininterface.h \
playlistwidget.h \
@@ -215,5 +233,6 @@ 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 \
- $(OPIEDIR)/include/qpe/qcopenvelope_qws.h
+ audiodevice.h
@@ -243,3 +262,4 @@ moc_mediaplayer.o: moc_mediaplayer.cpp \
$(OPIEDIR)/include/qpe/qcom.h \
- $(OPIEDIR)/include/qpe/quuid.h
+ $(OPIEDIR)/include/qpe/quuid.h \
+ $(OPIEDIR)/include/qpe/mediaplayerplugininterface.h
diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp
index 7b3700a..9a10eb4 100644
--- a/core/multimedia/opieplayer/audiodevice.cpp
+++ b/core/multimedia/opieplayer/audiodevice.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -19,4 +19,6 @@
**********************************************************************/
+// L.J.Potter added better error code Fri 02-15-2002 14:37:47
#include <stdlib.h>
+#include <stdio.h>
#include <qpe/qpeapplication.h>
@@ -108,3 +110,3 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume
if ( waveOutGetVolume( handle, (LPDWORD)&volume ) )
- qDebug( "get volume of audio device failed" );
+// qDebug( "get volume of audio device failed" );
waveOutClose( handle );
@@ -115,6 +117,7 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume
if ( mixerHandle >= 0 ) {
- ioctl( mixerHandle, MIXER_READ(0), &volume );
+ if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1)
+ perror("ioctl(\"MIXER_READ\")");
close( mixerHandle );
} else
- qDebug( "get volume of audio device failed" );
+ perror("open(\"/dev/mixer\")");
leftVolume = ((volume & 0x00FF) << 16) / 101;
@@ -128,9 +131,9 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume,
if ( muted ) {
- AudioDevicePrivate::leftVolume = leftVolume;
- AudioDevicePrivate::rightVolume = rightVolume;
- leftVolume = 0;
- rightVolume = 0;
+ AudioDevicePrivate::leftVolume = leftVolume;
+ AudioDevicePrivate::rightVolume = rightVolume;
+ leftVolume = 0;
+ rightVolume = 0;
} else {
leftVolume = ( (int) leftVolume < 0 ) ? 0 : (( leftVolume > 0xFFFF ) ? 0xFFFF : leftVolume );
- rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume );
+ rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume );
}
@@ -149,3 +152,3 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume,
if ( waveOutSetVolume( handle, volume ) )
- qDebug( "set volume of audio device failed" );
+// qDebug( "set volume of audio device failed" );
waveOutClose( handle );
@@ -160,6 +163,8 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume,
if ( ( mixerHandle = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- ioctl( mixerHandle, MIXER_WRITE(0), &volume );
+ if(ioctl( mixerHandle, MIXER_WRITE(0), &volume ) ==-1)
+ perror("ioctl(\"MIXER_WRITE\")");
close( mixerHandle );
} else
- qDebug( "set volume of audio device failed" );
+ perror("open(\"/dev/mixer\")");
+
# else
@@ -188,41 +193,13 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
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;
@@ -233,7 +210,7 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) {
- qDebug( "error opening audio device /dev/dsp, sending data to /dev/null instead" );
- d->handle = ::open( "/dev/null", O_WRONLY );
+ perror("open(\"/dev/dsp\") sending to /dev/null instead");
+ d->handle = ::open( "/dev/null", O_WRONLY );
}
#ifdef KEEP_DEVICE_OPEN
- AudioDevicePrivate::dspFd = d->handle;
+ AudioDevicePrivate::dspFd = d->handle;
} else {
@@ -243,9 +220,16 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
- 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_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);
if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) {
- d->channels = ( d->channels == 1 ) ? 2 : d->channels;
- ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels );
+ d->channels = ( d->channels == 1 ) ? 2 : d->channels;
+ if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1)
+ perror("ioctl(\"SNDCTL_DSP_CHANNELS\")");
}
@@ -257,4 +241,4 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
- //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels );
- //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency );
+ //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels );
+ //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency );
//if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" );
@@ -263,3 +247,2 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
//if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" );
-#endif
}
@@ -272,3 +255,3 @@ AudioDevice::~AudioDevice() {
# ifndef KEEP_DEVICE_OPEN
- close( d->handle ); // Now it should be safe to shut the handle
+ close( d->handle ); // Now it should be safe to shut the handle
# endif
@@ -299,3 +282,3 @@ void AudioDevice::write( char *buffer, unsigned int length )
if ( waveOutWrite( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ) )
- qDebug( "failed to write block to audio device" );
+ qDebug( "failed to write block to audio device" );
// emit completedIO();
@@ -305,5 +288,5 @@ void AudioDevice::write( char *buffer, unsigned int length )
if ( t != (int)length) {
- qDebug("Ahhh!! memcpys 1");
- memcpy(d->unwrittenBuffer,buffer+t,length-t);
- d->unwritten = length-t;
+ qDebug("Ahhh!! memcpys 1");
+ memcpy(d->unwrittenBuffer,buffer+t,length-t);
+ d->unwritten = length-t;
}
@@ -343,23 +326,23 @@ unsigned int AudioDevice::canWrite() const
if ( d->can_GETOSPACE && ioctl(d->handle,SNDCTL_DSP_GETOSPACE,&info) ) {
- d->can_GETOSPACE = FALSE;
- fcntl( d->handle, F_SETFL, O_NONBLOCK );
+ d->can_GETOSPACE = FALSE;
+ fcntl( d->handle, F_SETFL, O_NONBLOCK );
}
if ( d->can_GETOSPACE ) {
- int t = info.fragments * sound_fragment_bytes;
- return QMIN(t,(int)bufferSize());
+ int t = info.fragments * sound_fragment_bytes;
+ return QMIN(t,(int)bufferSize());
} else {
- if ( d->unwritten ) {
- int t = ::write( d->handle, d->unwrittenBuffer, d->unwritten );
- if ( t<0 ) t = 0;
- if ( (unsigned)t!=d->unwritten ) {
- memcpy(d->unwrittenBuffer,d->unwrittenBuffer+t,d->unwritten-t);
- d->unwritten -= t;
- } else {
- d->unwritten = 0;
- }
- }
- if ( d->unwritten )
- return 0;
- else
- return d->bufferSize;
+ if ( d->unwritten ) {
+ int t = ::write( d->handle, d->unwrittenBuffer, d->unwritten );
+ if ( t<0 ) t = 0;
+ if ( (unsigned)t!=d->unwritten ) {
+ memcpy(d->unwrittenBuffer,d->unwrittenBuffer+t,d->unwritten-t);
+ d->unwritten -= t;
+ } else {
+ d->unwritten = 0;
+ }
+ }
+ if ( d->unwritten )
+ return 0;
+ else
+ return d->bufferSize;
}
@@ -373,4 +356,4 @@ int AudioDevice::bytesWritten() {
if ( ( waveOutGetPosition( (HWAVEOUT)d->handle, &pmmt, sizeof(MMTIME) ) != MMSYSERR_NOERROR ) || ( pmmt.wType != TIME_BYTES ) ) {
- qDebug( "failed to get audio device position" );
- return -1;
+ qDebug( "failed to get audio device position" );
+ return -1;
}
@@ -380,4 +363,4 @@ int AudioDevice::bytesWritten() {
if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) {
- qDebug( "failed to get audio device position" );
- return -1;
+ qDebug( "failed to get audio device position" );
+ return -1;
}
diff --git a/core/multimedia/opieplayer/audiodevice.h b/core/multimedia/opieplayer/audiodevice.h
index ec70788..d59c388 100644
--- a/core/multimedia/opieplayer/audiodevice.h
+++ b/core/multimedia/opieplayer/audiodevice.h
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -19,2 +19,4 @@
**********************************************************************/
+// L.J.Potter added changes Fri 02-15-2002
+
#ifndef AUDIODEVICE_H
@@ -22,3 +24,5 @@
+
#include <qobject.h>
+#include <sys/soundcard.h>
@@ -31,3 +35,3 @@ class AudioDevice : public QObject {
public:
- AudioDevice( unsigned int freq = 44000, unsigned int channels = 2, unsigned int bytesPerSample = 2 );
+ AudioDevice( unsigned int freq = 44000, unsigned int channels = 2, unsigned int bytesPerSample = AFMT_S16_LE );
~AudioDevice();
diff --git a/core/multimedia/opieplayer/audiowidget.cpp b/core/multimedia/opieplayer/audiowidget.cpp
index 1e0757f..582660c 100644
--- a/core/multimedia/opieplayer/audiowidget.cpp
+++ b/core/multimedia/opieplayer/audiowidget.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -62,3 +62,3 @@ AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
{
- setCaption( tr("MediaPlayer") );
+ setCaption( tr("OpiePlayer") );
setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/metalFinish" ) );
@@ -105,3 +105,3 @@ AudioWidget::~AudioWidget() {
for ( int i = 0; i < 4; i++ )
- delete pixmaps[i];
+ delete pixmaps[i];
}
@@ -120,3 +120,3 @@ void AudioWidget::sliderReleased() {
if ( slider->width() == 0 )
- return;
+ return;
long val = long((double)slider->value() * mediaPlayerState->length() / slider->width());
@@ -138,7 +138,7 @@ void AudioWidget::setView( char view ) {
if ( view == 'a' ) {
- startTimer( 150 );
- showMaximized();
+ startTimer( 150 );
+ showMaximized();
} else {
- killTimers();
- hide();
+ killTimers();
+ hide();
}
@@ -149,3 +149,3 @@ void AudioWidget::updateSlider( long i, long max ) {
if ( max == 0 )
- return;
+ return;
// Will flicker too much if we don't do this
@@ -155,6 +155,6 @@ void AudioWidget::updateSlider( long i, long max ) {
if ( !audioSliderBeingMoved ) {
- if ( slider->value() != val )
- slider->setValue( val );
- if ( slider->maxValue() != width )
- slider->setMaxValue( width );
+ if ( slider->value() != val )
+ slider->setValue( val );
+ if ( slider->maxValue() != width )
+ slider->setMaxValue( width );
}
@@ -165,3 +165,3 @@ void AudioWidget::setToggleButton( int i, bool down ) {
if ( down != audioButtons[i].isDown )
- toggleButton( i );
+ toggleButton( i );
}
@@ -189,9 +189,9 @@ void AudioWidget::timerEvent( QTimerEvent * ) {
if ( !mediaPlayerState->paused() && audioButtons[ AudioPlay ].isDown ) {
- frame = frame >= 7 ? 0 : frame + 1;
- int x = audioButtons[AudioPlay].xPos;
- int y = audioButtons[AudioPlay].yPos;
- QPainter p( this );
- // Optimize to only draw the little bit of the changing images which is different
- p.drawPixmap( x + 14, y + 8, *pixmaps[3], 32 * frame, 0, 32, 32 );
- p.drawPixmap( x + 37, y + 37, *pixmaps[2], 18 * AudioPlay, 0, 6, 3 );
+ frame = frame >= 7 ? 0 : frame + 1;
+ int x = audioButtons[AudioPlay].xPos;
+ int y = audioButtons[AudioPlay].yPos;
+ QPainter p( this );
+ // Optimize to only draw the little bit of the changing images which is different
+ p.drawPixmap( x + 14, y + 8, *pixmaps[3], 32 * frame, 0, 32, 32 );
+ p.drawPixmap( x + 37, y + 37, *pixmaps[2], 18 * AudioPlay, 0, 6, 3 );
}
@@ -202,44 +202,44 @@ void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
for ( int i = 0; i < numButtons; i++ ) {
- int size = audioButtons[i].isBig;
- int x = audioButtons[i].xPos;
- int y = audioButtons[i].yPos;
- if ( event->state() == QMouseEvent::LeftButton ) {
- // The test to see if the mouse click is inside the circular button or not
- // (compared with the radius squared to avoid a square-root of our distance)
- int radius = 32 + 13 * size;
- QPoint center = QPoint( x + radius, y + radius );
- QPoint dXY = center - event->pos();
- int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y();
- bool isOnButton = dist <= (radius * radius);
-// QRect r( x, y, 64 + 22*size, 64 + 22*size );
-// bool isOnButton = r.contains( event->pos() ); // Rectangular Button code
- if ( isOnButton && !audioButtons[i].isHeld ) {
- audioButtons[i].isHeld = TRUE;
- toggleButton(i);
- switch (i) {
+ int size = audioButtons[i].isBig;
+ int x = audioButtons[i].xPos;
+ int y = audioButtons[i].yPos;
+ if ( event->state() == QMouseEvent::LeftButton ) {
+ // The test to see if the mouse click is inside the circular button or not
+ // (compared with the radius squared to avoid a square-root of our distance)
+ int radius = 32 + 13 * size;
+ QPoint center = QPoint( x + radius, y + radius );
+ QPoint dXY = center - event->pos();
+ int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y();
+ bool isOnButton = dist <= (radius * radius);
+// QRect r( x, y, 64 + 22*size, 64 + 22*size );
+// bool isOnButton = r.contains( event->pos() ); // Rectangular Button code
+ if ( isOnButton && !audioButtons[i].isHeld ) {
+ audioButtons[i].isHeld = TRUE;
+ toggleButton(i);
+ switch (i) {
case AudioVolumeUp: emit moreClicked(); return;
case AudioVolumeDown: emit lessClicked(); return;
- }
- } else if ( !isOnButton && audioButtons[i].isHeld ) {
- audioButtons[i].isHeld = FALSE;
- toggleButton(i);
- }
- } else {
- if ( audioButtons[i].isHeld ) {
- audioButtons[i].isHeld = FALSE;
- if ( !audioButtons[i].isToggle )
- setToggleButton( i, FALSE );
- switch (i) {
- case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return;
- case AudioStop: mediaPlayerState->setPlaying(FALSE); return;
- case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return;
- case AudioNext: mediaPlayerState->setNext(); return;
- case AudioPrevious: mediaPlayerState->setPrev(); return;
- case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return;
- case AudioVolumeUp: emit moreReleased(); return;
- case AudioVolumeDown: emit lessReleased(); return;
- case AudioPlayList: mediaPlayerState->setList(); return;
- }
- }
- }
+ }
+ } else if ( !isOnButton && audioButtons[i].isHeld ) {
+ audioButtons[i].isHeld = FALSE;
+ toggleButton(i);
+ }
+ } else {
+ if ( audioButtons[i].isHeld ) {
+ audioButtons[i].isHeld = FALSE;
+ if ( !audioButtons[i].isToggle )
+ setToggleButton( i, FALSE );
+ switch (i) {
+ case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return;
+ case AudioStop: mediaPlayerState->setPlaying(FALSE); return;
+ case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return;
+ case AudioNext: mediaPlayerState->setNext(); return;
+ case AudioPrevious: mediaPlayerState->setPrev(); return;
+ case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return;
+ case AudioVolumeUp: emit moreReleased(); return;
+ case AudioVolumeDown: emit lessReleased(); return;
+ case AudioPlayList: mediaPlayerState->setList(); return;
+ }
+ }
+ }
}
@@ -272,3 +272,3 @@ void AudioWidget::paintEvent( QPaintEvent * ) {
for ( int i = 0; i < numButtons; i++ )
- paintButton( &p, i );
+ paintButton( &p, i );
}
diff --git a/core/multimedia/opieplayer/audiowidget.h b/core/multimedia/opieplayer/audiowidget.h
index 95f5322..53e84b3 100644
--- a/core/multimedia/opieplayer/audiowidget.h
+++ b/core/multimedia/opieplayer/audiowidget.h
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
diff --git a/core/multimedia/opieplayer/libmad/Makefile.in b/core/multimedia/opieplayer/libmad/Makefile.in
index e9f74e7..552043c 100644
--- a/core/multimedia/opieplayer/libmad/Makefile.in
+++ b/core/multimedia/opieplayer/libmad/Makefile.in
@@ -216,2 +216,3 @@ libmadplugin.o: libmadplugin.cpp \
libmadplugin.h \
+ ../mediaplayerplugininterface.h \
mad.h
@@ -220,2 +221,3 @@ 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 6c40a15..06e19e4 100644
--- a/core/multimedia/opieplayer/libmad/libmad.pro
+++ b/core/multimedia/opieplayer/libmad/libmad.pro
@@ -1,9 +1,9 @@
-TEMPLATE = lib
-CONFIG += qt warn_on release
-HEADERS = libmad_version.h fixed.h bit.h timer.h stream.h frame.h synth.h decoder.h \
- layer12.h layer3.h huffman.h libmad_global.h mad.h libmadplugin.h libmadpluginimpl.h
-SOURCES = version.c fixed.c bit.c timer.c stream.c frame.c synth.c decoder.c \
- layer12.c layer3.c huffman.c libmadplugin.cpp libmadpluginimpl.cpp
-TARGET = madplugin
-DESTDIR = ../../plugins/codecs
+TEMPLATE = lib
+CONFIG += qt warn_on release
+HEADERS = libmad_version.h fixed.h bit.h timer.h stream.h frame.h synth.h decoder.h \
+ layer12.h layer3.h huffman.h libmad_global.h mad.h libmadplugin.h libmadpluginimpl.h
+SOURCES = version.c fixed.c bit.c timer.c stream.c frame.c synth.c decoder.c \
+ layer12.c layer3.c huffman.c libmadplugin.cpp libmadpluginimpl.cpp
+TARGET = madplugin
+DESTDIR = ../../plugins/codecs
INCLUDEPATH += $(OPIEDIR)/include ..
@@ -11,2 +11,2 @@ DEPENDPATH += ../$(OPIEDIR)/include ..
LIBS += -lqpe -lm
-VERSION = 1.0.0
+VERSION = 1.0.0
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
index 9d04f7e..9f8ba65 100644
--- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp
+++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
@@ -49,3 +49,3 @@ extern "C" {
#define MPEG_BUFFER_SIZE 65536
-//#define debugMsg(a) qDebug(a)
+//#define debugMsg(a) qDebug(a)
#define debugMsg(a)
@@ -147,3 +147,3 @@ bool LibMadPlugin::isFileSupported( const QString& path ) {
// Mpeg file extensions
- // "mp2","mp3","m1v","m2v","m2s","mpg","vob","mpeg","ac3"
+ // "mp2","mp3","m1v","m2v","m2s","mpg","vob","mpeg","ac3"
// Other media extensions
@@ -155,6 +155,6 @@ bool LibMadPlugin::isFileSupported( const QString& path ) {
if ( ext ) {
- if ( strncasecmp(ext, ".mp2", 4) == 0 )
- return TRUE;
- if ( strncasecmp(ext, ".mp3", 4) == 0 )
- return TRUE;
+ if ( strncasecmp(ext, ".mp2", 4) == 0 )
+ return TRUE;
+ if ( strncasecmp(ext, ".mp3", 4) == 0 )
+ return TRUE;
}
@@ -178,3 +178,3 @@ bool LibMadPlugin::open( const QString& path ) {
qDebug("error opening %s", d->input.path );
- return FALSE;
+ return FALSE;
}
@@ -186,11 +186,11 @@ bool LibMadPlugin::open( const QString& path ) {
if (fstat(d->input.fd, &stat) == -1) {
- qDebug("error calling fstat"); return FALSE;
+ qDebug("error calling fstat"); return FALSE;
}
if (S_ISREG(stat.st_mode) && stat.st_size > 0) {
- d->input.length = stat.st_size;
- d->input.fdm = map_file(d->input.fd, &d->input.length);
- if (d->input.fdm == 0) {
- qDebug("error mmapping file"); return FALSE;
- }
- d->input.data = (unsigned char *)d->input.fdm;
+ d->input.length = stat.st_size;
+ d->input.fdm = map_file(d->input.fd, &d->input.length);
+ if (d->input.fdm == 0) {
+ qDebug("error mmapping file"); return FALSE;
+ }
+ d->input.data = (unsigned char *)d->input.fdm;
}
@@ -199,8 +199,8 @@ bool LibMadPlugin::open( const QString& path ) {
if (d->input.data == 0) {
- d->input.data = (unsigned char *)malloc(MPEG_BUFFER_SIZE);
- if (d->input.data == 0) {
- qDebug("error allocating input buffer");
- return FALSE;
- }
- d->input.length = 0;
+ d->input.data = (unsigned char *)malloc(MPEG_BUFFER_SIZE);
+ if (d->input.data == 0) {
+ qDebug("error allocating input buffer");
+ return FALSE;
+ }
+ d->input.length = 0;
}
@@ -228,8 +228,8 @@ bool LibMadPlugin::close() {
if (d->input.fdm) {
- if (unmap_file(d->input.fdm, d->input.length) == -1) {
- qDebug("error munmapping file");
- result = FALSE;
- }
- d->input.fdm = 0;
- d->input.data = 0;
+ if (unmap_file(d->input.fdm, d->input.length) == -1) {
+ qDebug("error munmapping file");
+ result = FALSE;
+ }
+ d->input.fdm = 0;
+ d->input.data = 0;
}
@@ -239,3 +239,3 @@ bool LibMadPlugin::close() {
free(d->input.data);
- d->input.data = 0;
+ d->input.data = 0;
}
@@ -244,3 +244,3 @@ bool LibMadPlugin::close() {
qDebug("error closing file %s", d->input.path);
- result = FALSE;
+ result = FALSE;
}
@@ -325,3 +325,3 @@ bool LibMadPlugin::read() {
if (d->input.eof)
- return FALSE;
+ return FALSE;
@@ -329,34 +329,34 @@ bool LibMadPlugin::read() {
if (d->input.fdm) {
- unsigned long skip = 0;
+ unsigned long skip = 0;
- if (d->stream.next_frame) {
- struct stat stat;
+ if (d->stream.next_frame) {
+ struct stat stat;
- if (fstat(d->input.fd, &stat) == -1)
- return FALSE;
+ if (fstat(d->input.fd, &stat) == -1)
+ return FALSE;
- if (stat.st_size + MAD_BUFFER_GUARD <= (signed)d->input.length)
- return FALSE;
+ if (stat.st_size + MAD_BUFFER_GUARD <= (signed)d->input.length)
+ return FALSE;
- // file size changed; update memory map
- skip = d->stream.next_frame - d->input.data;
+ // file size changed; update memory map
+ skip = d->stream.next_frame - d->input.data;
- if (unmap_file(d->input.fdm, d->input.length) == -1) {
- d->input.fdm = 0;
- d->input.data = 0;
- return FALSE;
- }
+ if (unmap_file(d->input.fdm, d->input.length) == -1) {
+ d->input.fdm = 0;
+ d->input.data = 0;
+ return FALSE;
+ }
- d->input.length = stat.st_size;
+ d->input.length = stat.st_size;
- d->input.fdm = map_file(d->input.fd, &d->input.length);
- if (d->input.fdm == 0) {
- d->input.data = 0;
- return FALSE;
- }
+ d->input.fdm = map_file(d->input.fd, &d->input.length);
+ if (d->input.fdm == 0) {
+ d->input.data = 0;
+ return FALSE;
+ }
- d->input.data = (unsigned char *)d->input.fdm;
- }
+ d->input.data = (unsigned char *)d->input.fdm;
+ }
- mad_stream_buffer(&d->stream, d->input.data + skip, d->input.length - skip);
+ mad_stream_buffer(&d->stream, d->input.data + skip, d->input.length - skip);
@@ -365,26 +365,26 @@ bool LibMadPlugin::read() {
{
- if (d->stream.next_frame) {
- memmove(d->input.data, d->stream.next_frame,
- d->input.length = &d->input.data[d->input.length] - d->stream.next_frame);
- }
-
- do {
- len = ::read(d->input.fd, d->input.data + d->input.length, MPEG_BUFFER_SIZE - d->input.length);
- }
- while (len == -1 && errno == EINTR);
-
- if (len == -1) {
- qDebug("error reading audio");
- return FALSE;
- }
- else if (len == 0) {
- d->input.eof = 1;
-
- assert(MPEG_BUFFER_SIZE - d->input.length >= MAD_BUFFER_GUARD);
-
- while (len < MAD_BUFFER_GUARD)
- d->input.data[d->input.length + len++] = 0;
- }
-
- mad_stream_buffer(&d->stream, d->input.data, d->input.length += len);
+ if (d->stream.next_frame) {
+ memmove(d->input.data, d->stream.next_frame,
+ d->input.length = &d->input.data[d->input.length] - d->stream.next_frame);
+ }
+
+ do {
+ len = ::read(d->input.fd, d->input.data + d->input.length, MPEG_BUFFER_SIZE - d->input.length);
+ }
+ while (len == -1 && errno == EINTR);
+
+ if (len == -1) {
+ qDebug("error reading audio");
+ return FALSE;
+ }
+ else if (len == 0) {
+ d->input.eof = 1;
+
+ assert(MPEG_BUFFER_SIZE - d->input.length >= MAD_BUFFER_GUARD);
+
+ while (len < MAD_BUFFER_GUARD)
+ d->input.data[d->input.length + len++] = 0;
+ }
+
+ mad_stream_buffer(&d->stream, d->input.data, d->input.length += len);
}
@@ -413,12 +413,12 @@ inline void audio_pcm( short *data, unsigned int nsamples, mad_fixed_t *left, ma
if ( right ) {
- while (nsamples--) {
- data[0] = audio_linear_dither( *left++, left_err );
- data[1] = audio_linear_dither( *right++, right_err );
- data += 2;
- }
+ while (nsamples--) {
+ data[0] = audio_linear_dither( *left++, left_err );
+ data[1] = audio_linear_dither( *right++, right_err );
+ data += 2;
+ }
} else {
- while (nsamples--) {
- data[0] = data[1] = audio_linear_dither( *left++, left_err );
- data += 2;
- }
+ while (nsamples--) {
+ data[0] = data[1] = audio_linear_dither( *left++, left_err );
+ data += 2;
+ }
}
@@ -438,8 +438,8 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
if ( samples > maxBuffered )
- samples = maxBuffered;
+ samples = maxBuffered;
if ( d->flush ) {
- buffered = 0;
- offset = 0;
- d->flush = FALSE;
+ buffered = 0;
+ offset = 0;
+ d->flush = FALSE;
}
@@ -448,22 +448,22 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
- while (mad_frame_decode(&d->frame, &d->stream) == -1) {
- if (!MAD_RECOVERABLE(d->stream.error)) {
- debugMsg( "feed me" );
- return FALSE; // Feed me
- }
- if ( d->stream.error == MAD_ERROR_BADCRC ) {
- mad_frame_mute(&d->frame);
- qDebug( "error decoding, bad crc" );
- }
- }
-
- mad_synth_frame(&d->synth, &d->frame);
- int decodedSamples = d->synth.pcm.length;
- memcpy( &(buffer[0][offset]), d->synth.pcm.samples[0], decodedSamples * sizeof(mad_fixed_t) );
- if ( d->synth.pcm.channels == 2 )
- memcpy( &(buffer[1][offset]), d->synth.pcm.samples[1], decodedSamples * sizeof(mad_fixed_t) );
- offset += decodedSamples;
- buffered += decodedSamples;
+ while (mad_frame_decode(&d->frame, &d->stream) == -1) {
+ if (!MAD_RECOVERABLE(d->stream.error)) {
+ debugMsg( "feed me" );
+ return FALSE; // Feed me
+ }
+ if ( d->stream.error == MAD_ERROR_BADCRC ) {
+ mad_frame_mute(&d->frame);
+ qDebug( "error decoding, bad crc" );
+ }
+ }
+
+ mad_synth_frame(&d->synth, &d->frame);
+ int decodedSamples = d->synth.pcm.length;
+ memcpy( &(buffer[0][offset]), d->synth.pcm.samples[0], decodedSamples * sizeof(mad_fixed_t) );
+ if ( d->synth.pcm.channels == 2 )
+ memcpy( &(buffer[1][offset]), d->synth.pcm.samples[1], decodedSamples * sizeof(mad_fixed_t) );
+ offset += decodedSamples;
+ buffered += decodedSamples;
}
-
+//qApp->processEvents();
audio_pcm( output, samples, buffer[0], (d->synth.pcm.channels == 2) ? buffer[1] : 0 );
@@ -495,19 +495,19 @@ bool LibMadPlugin::audioReadSamples( short *output, int /*channels*/, long sampl
if ( samples == 0 )
- return FALSE;
+ return FALSE;
do {
- if ( needInput )
- if ( !read() ) {
-// if ( d->input.eof )
-// needInput = FALSE;
-// else
- return FALSE;
- }
-
- needInput = FALSE;
-
- if ( decode( output, samples, samplesMade ) )
- return TRUE;
- else
- needInput = TRUE;
+ if ( needInput )
+ if ( !read() ) {
+// if ( d->input.eof )
+// needInput = FALSE;
+// else
+ return FALSE;
+ }
+
+ needInput = FALSE;
+
+ if ( decode( output, samples, samplesMade ) )
+ return TRUE;
+ else
+ needInput = TRUE;
}
@@ -518,5 +518,5 @@ bool LibMadPlugin::audioReadSamples( short *output, int /*channels*/, long sampl
if ( firstTimeThru ) {
- firstTimeThru = FALSE;
- decode( output, samples, samplesMade );
- return FALSE;
+ firstTimeThru = FALSE;
+ decode( output, samples, samplesMade );
+ return FALSE;
} else
@@ -539,4 +539,4 @@ void LibMadPlugin::printID3Tags() {
if ( ::lseek( d->input.fd, -128, SEEK_END ) == -1 ) {
- qDebug( "error seeking to id3 tags" );
- return;
+ qDebug( "error seeking to id3 tags" );
+ return;
}
@@ -544,4 +544,4 @@ void LibMadPlugin::printID3Tags() {
if ( ::read( d->input.fd, id3v1, 128 ) != 128 ) {
- qDebug( "error reading in id3 tags" );
- return;
+ qDebug( "error reading in id3 tags" );
+ return;
}
@@ -549,23 +549,23 @@ void LibMadPlugin::printID3Tags() {
if ( ::strncmp( (const char *)id3v1, "TAG", 3 ) != 0 ) {
- debugMsg( "sorry, no id3 tags" );
+ debugMsg( "sorry, no id3 tags" );
} else {
- int len[5] = { 30, 30, 30, 4, 30 };
- QString label[5] = { tr( "Title" ), tr( "Artist" ), tr( "Album" ), tr( "Year" ), tr( "Comment" ) };
- char *ptr = id3v1 + 3, *ptr2 = ptr + len[0];
- qDebug( "ID3 tags in file:" );
- info = "";
- for ( int i = 0; i < 5; ptr += len[i], i++, ptr2 += len[i] ) {
- char push = *ptr2;
- *ptr2 = '\0';
- char *ptr3 = ptr2;
- while ( ptr3-1 >= ptr && isspace(ptr3[-1]) ) ptr3--;
- char push2 = *ptr3; *ptr3 = '\0';
- if ( strcmp( ptr, "" ) )
- info += ( i != 0 ? ", " : "" ) + label[i] + ": " + ptr;
- //qDebug( info.latin1() );
- *ptr3 = push2;
- *ptr2 = push;
- }
- if (id3v1[126] == 0 && id3v1[127] != 0)
- info += tr( ", Track: " ) + id3v1[127];
+ int len[5] = { 30, 30, 30, 4, 30 };
+ QString label[5] = { tr( "Title" ), tr( "Artist" ), tr( "Album" ), tr( "Year" ), tr( "Comment" ) };
+ char *ptr = id3v1 + 3, *ptr2 = ptr + len[0];
+ qDebug( "ID3 tags in file:" );
+ info = "";
+ for ( int i = 0; i < 5; ptr += len[i], i++, ptr2 += len[i] ) {
+ char push = *ptr2;
+ *ptr2 = '\0';
+ char *ptr3 = ptr2;
+ while ( ptr3-1 >= ptr && isspace(ptr3[-1]) ) ptr3--;
+ char push2 = *ptr3; *ptr3 = '\0';
+ if ( strcmp( ptr, "" ) )
+ info += ( i != 0 ? ", " : "" ) + label[i] + ": " + ptr;
+ //qDebug( info.latin1() );
+ *ptr3 = push2;
+ *ptr2 = push;
+ }
+ if (id3v1[126] == 0 && id3v1[127] != 0)
+ info += tr( ", Track: " ) + id3v1[127];
}
@@ -573,3 +573,3 @@ void LibMadPlugin::printID3Tags() {
if ( ::lseek(d->input.fd, 0, SEEK_SET) == -1 ) {
- qDebug( "error seeking back to beginning" );
+ qDebug( "error seeking back to beginning" );
return;
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.h b/core/multimedia/opieplayer/libmad/libmadplugin.h
index d85e0d4..d163458 100644
--- a/core/multimedia/opieplayer/libmad/libmadplugin.h
+++ b/core/multimedia/opieplayer/libmad/libmadplugin.h
@@ -23,3 +23,4 @@
#include <qstring.h>
-#include <qpe/mediaplayerplugininterface.h>
+//#include <qpe/mediaplayerplugininterface.h>
+#include "../mediaplayerplugininterface.h"
@@ -54,2 +55,3 @@ public:
bool audioSetSample( long sample, int stream );
+ int audioBitsPerSample(int) {return 0;}
long audioGetSample( int stream );
diff --git a/core/multimedia/opieplayer/libmad/libmadpluginimpl.h b/core/multimedia/opieplayer/libmad/libmadpluginimpl.h
index 2c5ed3b..bc864ee 100644
--- a/core/multimedia/opieplayer/libmad/libmadpluginimpl.h
+++ b/core/multimedia/opieplayer/libmad/libmadpluginimpl.h
@@ -22,3 +22,4 @@
-#include <qpe/mediaplayerplugininterface.h>
+//#include <qpe/mediaplayerplugininterface.h>
+#include "../mediaplayerplugininterface.h"
@@ -43,3 +44,2 @@ public:
virtual MediaPlayerEncoder *encoder();
-
private:
diff --git a/core/multimedia/opieplayer/libmpeg3/Makefile.in b/core/multimedia/opieplayer/libmpeg3/Makefile.in
index 154f85d..d255e4f 100644
--- a/core/multimedia/opieplayer/libmpeg3/Makefile.in
+++ b/core/multimedia/opieplayer/libmpeg3/Makefile.in
@@ -178,3 +178,4 @@ libmpeg3plugin.o: libmpeg3plugin.cpp \
video/mpeg3video.h \
- mpeg3protos.h
+ mpeg3protos.h \
+ ../mediaplayerplugininterface.h
@@ -194,2 +195,3 @@ libmpeg3pluginimpl.o: libmpeg3pluginimpl.cpp \
mpeg3protos.h \
+ ../mediaplayerplugininterface.h \
libmpeg3pluginimpl.h
@@ -416,3 +418,3 @@ audio/layer2.o: audio/layer2.c \
audio/layer3.o: audio/layer3.c \
- audio/huffman.h \
+ huffman.h \
audio/mpeg3audio.h \
diff --git a/core/multimedia/opieplayer/libmpeg3/libmpeg3.pro b/core/multimedia/opieplayer/libmpeg3/libmpeg3.pro
index b1426d1..e50aa4e 100644
--- a/core/multimedia/opieplayer/libmpeg3/libmpeg3.pro
+++ b/core/multimedia/opieplayer/libmpeg3/libmpeg3.pro
@@ -1,39 +1,40 @@
-TEMPLATE = lib
-CONFIG += qt warn_on release
-HEADERS = libmpeg3plugin.h libmpeg3pluginimpl.h
-SOURCES = libmpeg3plugin.cpp libmpeg3pluginimpl.cpp \
- bitstream.c \
- libmpeg3.c \
- mpeg3atrack.c \
- mpeg3css.c \
- mpeg3demux.c \
- mpeg3io.c \
- mpeg3title.c \
- mpeg3vtrack.c \
- audio/ac3.c \
- audio/bit_allocation.c \
- audio/dct.c \
- audio/exponents.c \
- audio/header.c \
- audio/layer2.c \
- audio/layer3.c \
- audio/mantissa.c \
- audio/mpeg3audio.c \
- audio/pcm.c \
- audio/synthesizers.c \
- audio/tables.c \
- video/getpicture.c \
- video/headers.c \
- video/idct.c \
- video/macroblocks.c \
- video/mmxtest.c \
- video/motion.c \
- video/mpeg3video.c \
- video/output.c \
- video/reconstruct.c \
- video/seek.c \
- video/slice.c \
- video/vlc.c
-TARGET = mpeg3plugin
-DESTDIR = ../../plugins/codecs
+TEMPLATE = lib
+CONFIG += qt warn_on release
+HEADERS = libmpeg3plugin.h libmpeg3pluginimpl.h
+SOURCES = libmpeg3plugin.cpp libmpeg3pluginimpl.cpp \
+ bitstream.c \
+ libmpeg3.c \
+ mpeg3atrack.c \
+ mpeg3css.c \
+ mpeg3demux.c \
+ mpeg3io.c \
+ mpeg3title.c \
+ mpeg3vtrack.c \
+ audio/ac3.c \
+ audio/bit_allocation.c \
+ audio/dct.c \
+ audio/exponents.c \
+ audio/header.c \
+ audio/layer2.c \
+ audio/layer3.c \
+ audio/mantissa.c \
+ audio/mpeg3audio.c \
+ audio/pcm.c \
+ audio/synthesizers.c \
+ audio/tables.c \
+ video/getpicture.c \
+ video/headers.c \
+ video/idct.c \
+ video/macroblocks.c \
+ video/mmxtest.c \
+ video/motion.c \
+ video/mpeg3video.c \
+ video/output.c \
+ video/reconstruct.c \
+ video/seek.c \
+ video/slice.c \
+ video/vlc.c
+TARGET = mpeg3plugin
+TMAKE_CC=g++
+DESTDIR = ../../plugins/codecs
INCLUDEPATH += $(OPIEDIR)/include ..
@@ -41,2 +42,2 @@ DEPENDPATH += ../$(OPIEDIR)/include ..
LIBS += -lqpe -lpthread -lm
-VERSION = 1.0.0
+VERSION = 1.0.0
diff --git a/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h b/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h
index e0eb930..bd31706 100644
--- a/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h
+++ b/core/multimedia/opieplayer/libmpeg3/libmpeg3plugin.h
@@ -26,3 +26,4 @@
#include "mpeg3protos.h"
-#include <qpe/mediaplayerplugininterface.h>
+//#include <qpe/mediaplayerplugininterface.h>
+#include "../mediaplayerplugininterface.h"
@@ -52,2 +53,3 @@ public:
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; }
diff --git a/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h b/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h
index e9926f4..a2f5211 100644
--- a/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h
+++ b/core/multimedia/opieplayer/libmpeg3/libmpeg3pluginimpl.h
@@ -22,3 +22,4 @@
-#include <qpe/mediaplayerplugininterface.h>
+//#include <qpe/mediaplayerplugininterface.h>
+#include "../mediaplayerplugininterface.h"
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp
index dd466ed..90a7cc6 100644
--- a/core/multimedia/opieplayer/loopcontrol.cpp
+++ b/core/multimedia/opieplayer/loopcontrol.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -19,8 +19,10 @@
**********************************************************************/
+// L.J.Potter added changes Fri 02-15-2002
+
+
#include <qpe/qpeapplication.h>
-#ifdef Q_WS_QWS
+#ifdef Q_WS_QWS
#include <qpe/qcopenvelope_qws.h>
#endif
-#include <qpe/mediaplayerplugininterface.h>
#include <stdio.h>
@@ -34,2 +36,3 @@
#include "audiodevice.h"
+#include "mediaplayerplugininterface.h"
#include "mediaplayerstate.h"
@@ -45,9 +48,9 @@ extern MediaPlayerState *mediaPlayerState;
-static char *audioBuffer = NULL;
+static char *audioBuffer = NULL;
static AudioDevice *audioDevice = NULL;
-static bool disabledSuspendScreenSaver = FALSE;
-static bool previousSuspendMode = FALSE;
+static bool disabledSuspendScreenSaver = FALSE;
+static bool previousSuspendMode = FALSE;
-pthread_t audio_tid;
+pthread_t audio_tid;
pthread_attr_t audio_attr;
@@ -59,6 +62,6 @@ public:
Mutex() {
- pthread_mutexattr_t attr;
- pthread_mutexattr_init( &attr );
- pthread_mutex_init( &mutex, &attr );
- pthread_mutexattr_destroy( &attr );
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init( &attr );
+ pthread_mutex_init( &mutex, &attr );
+ pthread_mutexattr_destroy( &attr );
}
@@ -66,3 +69,3 @@ public:
~Mutex() {
- pthread_mutex_destroy( &mutex );
+ pthread_mutex_destroy( &mutex );
}
@@ -70,3 +73,3 @@ public:
void lock() {
- pthread_mutex_lock( &mutex );
+ pthread_mutex_lock( &mutex );
}
@@ -74,3 +77,3 @@ public:
void unlock() {
- pthread_mutex_unlock( &mutex );
+ pthread_mutex_unlock( &mutex );
}
@@ -84,6 +87,6 @@ void *startAudioThread( void *ptr ) {
while ( TRUE ) {
- if ( threadOkToGo && mpegView->moreAudio )
- mpegView->startAudio();
- else
- usleep( 10000 ); // Semi-buzy-wait till we are playing again
+ if ( threadOkToGo && mpegView->moreAudio )
+ mpegView->startAudio();
+ else
+ usleep( 10000 ); // Semi-buzy-wait till we are playing again
}
@@ -104,20 +107,15 @@ LoopControl::LoopControl( QObject *parent, const char *name )
pthread_attr_init(&audio_attr);
-
- 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;
- pthread_attr_setschedparam(&audio_attr,&params);
- } else {
- qDebug( "Error setting up a realtime thread, reverting to using a normal thread." );
- pthread_attr_destroy(&audio_attr);
- pthread_attr_init(&audio_attr);
- }
+#define USE_REALTIME_AUDIO_THREAD
+#ifdef USE_REALTIME_AUDIO_THREAD
+ // 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;
+ pthread_attr_setschedparam(&audio_attr,&params);
+ } else {
+ qDebug( "Error setting up a realtime thread, reverting to using a normal thread." );
+ pthread_attr_destroy(&audio_attr);
+ pthread_attr_init(&audio_attr);
}
-// printf("false, guid = %i\n", getuid());
- usleep( 100 );
-
+#endif
pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this);
@@ -138,10 +136,10 @@ void LoopControl::timerEvent( QTimerEvent *te ) {
if ( te->timerId() == videoId )
- startVideo();
+ startVideo();
if ( te->timerId() == sliderId ) {
- if ( hasAudioChannel && !hasVideoChannel && moreAudio ) {
- mediaPlayerState->updatePosition( audioSampleCounter );
- } else if ( hasVideoChannel && moreVideo ) {
- mediaPlayerState->updatePosition( current_frame );
- }
+ if ( hasAudioChannel && !hasVideoChannel && moreAudio ) {
+ mediaPlayerState->updatePosition( audioSampleCounter );
+ } else if ( hasVideoChannel && moreVideo ) {
+ mediaPlayerState->updatePosition( current_frame );
+ }
}
@@ -159,22 +157,22 @@ void LoopControl::setPosition( long pos ) {
if ( hasVideoChannel && hasAudioChannel ) {
- playtime.restart();
- playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) );
- current_frame = pos + 1;
- mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
- prev_frame = current_frame - 1;
- currentSample = (int)( (double)current_frame * freq / framerate );
- mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream );
- audioSampleCounter = currentSample - 1;
+ playtime.restart();
+ playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) );
+ current_frame = pos + 1;
+ mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
+ prev_frame = current_frame - 1;
+ currentSample = (int)( (double)current_frame * freq / framerate );
+ mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream );
+ audioSampleCounter = currentSample - 1;
} else if ( hasVideoChannel ) {
- playtime.restart();
- playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) );
- current_frame = pos + 1;
- mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
- prev_frame = current_frame - 1;
+ playtime.restart();
+ playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) );
+ current_frame = pos + 1;
+ mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
+ prev_frame = current_frame - 1;
} else if ( hasAudioChannel ) {
- playtime.restart();
- playtime = playtime.addMSecs( long((double)-pos * 1000.0 / freq) );
- currentSample = pos + 1;
- mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream );
- audioSampleCounter = currentSample - 1;
+ playtime.restart();
+ playtime = playtime.addMSecs( long((double)-pos * 1000.0 / freq) );
+ currentSample = pos + 1;
+ mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream );
+ audioSampleCounter = currentSample - 1;
}
@@ -191,28 +189,28 @@ void LoopControl::startVideo() {
- if ( hasAudioChannel && !isMuted ) {
+ if ( hasAudioChannel && !isMuted ) {
- current_frame = long( playtime.elapsed() * framerate / 1000 );
+ current_frame = long( playtime.elapsed() * framerate / 1000 );
- if ( prev_frame != -1 && current_frame <= prev_frame )
- return;
+ if ( prev_frame != -1 && current_frame <= prev_frame )
+ return;
- } else {
- // Don't skip
- current_frame++;
- }
+ } else {
+ // Don't skip
+ current_frame++;
+ }
- if ( prev_frame == -1 || current_frame > prev_frame ) {
- if ( current_frame > prev_frame + 1 ) {
- mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
- }
- moreVideo = videoUI->playVideo();
- prev_frame = current_frame;
- }
+ if ( prev_frame == -1 || current_frame > prev_frame ) {
+ if ( current_frame > prev_frame + 1 ) {
+ mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
+ }
+ moreVideo = videoUI->playVideo();
+ prev_frame = current_frame;
+ }
- } else {
+ } else {
- moreVideo = FALSE;
- killTimer( videoId );
+ moreVideo = FALSE;
+ killTimer( videoId );
- }
+ }
@@ -228,32 +226,33 @@ void LoopControl::startAudio() {
- if ( !isMuted && mediaPlayerState->curDecoder() ) {
+ if ( !isMuted && mediaPlayerState->curDecoder() ) {
- currentSample = audioSampleCounter + 1;
+ currentSample = audioSampleCounter + 1;
- if ( currentSample != audioSampleCounter + 1 )
- qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter);
+ if ( currentSample != audioSampleCounter + 1 )
+ qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter);
- long samplesRead = 0;
- mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream );
- long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000;
- long sampleWaitTime = currentSample - sampleWeShouldBeAt;
+ long samplesRead = 0;
+ bool readOk=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 ) {
- qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt );
- //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream );
- currentSample = sampleWeShouldBeAt;
- }
+ if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) {
+ usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) );
+ }
+ 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;
+ audioDevice->write( audioBuffer, samplesRead * 2 * channels );
+ audioSampleCounter = currentSample + samplesRead - 1;
- moreAudio = audioSampleCounter <= total_audio_samples;
+ moreAudio = readOk && (audioSampleCounter <= total_audio_samples);
- } else {
+ } else {
- moreAudio = FALSE;
+ moreAudio = FALSE;
- }
+ }
@@ -270,3 +269,3 @@ void LoopControl::killTimers() {
if ( hasVideoChannel )
- killTimer( videoId );
+ killTimer( videoId );
killTimer( sliderId );
@@ -286,5 +285,5 @@ void LoopControl::startTimers() {
if ( hasVideoChannel ) {
- moreVideo = TRUE;
- int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value
- videoId = startTimer( mSecsBetweenFrames );
+ moreVideo = TRUE;
+ int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value
+ videoId = startTimer( mSecsBetweenFrames );
}
@@ -292,4 +291,4 @@ void LoopControl::startTimers() {
if ( hasAudioChannel ) {
- moreAudio = TRUE;
- threadOkToGo = TRUE;
+ moreAudio = TRUE;
+ threadOkToGo = TRUE;
}
@@ -305,12 +304,12 @@ void LoopControl::setPaused( bool pause ) {
if ( !mediaPlayerState->curDecoder() || !mediaPlayerState->curDecoder()->isOpen() )
- return;
+ return;
if ( pause ) {
- killTimers();
+ killTimers();
} else {
- // Force an update of the position
- mediaPlayerState->setPosition( mediaPlayerState->position() + 1 );
- mediaPlayerState->setPosition( mediaPlayerState->position() - 1 );
- // Just like we never stopped
- startTimers();
+ // Force an update of the position
+ mediaPlayerState->setPosition( mediaPlayerState->position() + 1 );
+ mediaPlayerState->setPosition( mediaPlayerState->position() - 1 );
+ // Just like we never stopped
+ startTimers();
}
@@ -323,5 +322,5 @@ void LoopControl::stop( bool willPlayAgainShortly ) {
if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) {
- disabledSuspendScreenSaver = FALSE;
- // Re-enable the suspend mode
- QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
+ disabledSuspendScreenSaver = FALSE;
+ // Re-enable the suspend mode
+ QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
}
@@ -331,16 +330,16 @@ void LoopControl::stop( bool willPlayAgainShortly ) {
- killTimers();
+ killTimers();
- audioMutex->lock();
+ audioMutex->lock();
- mediaPlayerState->curDecoder()->close();
+ mediaPlayerState->curDecoder()->close();
- if ( audioDevice ) {
- delete audioDevice;
- delete audioBuffer;
- audioDevice = 0;
- audioBuffer = 0;
- }
+ if ( audioDevice ) {
+ delete audioDevice;
+ delete audioBuffer;
+ audioDevice = 0;
+ audioBuffer = 0;
+ }
- audioMutex->unlock();
+ audioMutex->unlock();
@@ -363,11 +362,11 @@ bool LoopControl::init( const QString& filename ) {
if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) {
- if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) {
- total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 );
- mediaPlayerState->libMpeg3Decoder()->close();
- }
+ if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) {
+ total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 );
+ mediaPlayerState->libMpeg3Decoder()->close();
+ }
}
-
+
if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) {
- audioMutex->unlock();
- return FALSE;
+ audioMutex->unlock();
+ return FALSE;
}
@@ -378,30 +377,30 @@ bool LoopControl::init( const QString& filename ) {
if ( hasAudioChannel ) {
- int astream = 0;
+ int astream = 0;
- channels = mediaPlayerState->curDecoder()->audioChannels( astream );
- DecodeLoopDebug(( "channels = %d\n", channels ));
-
- if ( !total_audio_samples )
- total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream );
+ channels = mediaPlayerState->curDecoder()->audioChannels( astream );
+ qDebug( "LC- channels = %d", 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 );
- DecodeLoopDebug(( "frequency = %d\n", freq ));
+ mediaPlayerState->setLength( total_audio_samples );
+
+ freq = mediaPlayerState->curDecoder()->audioFrequency( astream );
+ qDebug( "LC- frequency = %d", freq );
- audioSampleCounter = 0;
+ audioSampleCounter = 0;
- static const int bytes_per_sample = 2; //16 bit
+ int bits_per_sample = mediaPlayerState->curDecoder()->audioBitsPerSample( astream);
- audioDevice = new AudioDevice( freq, channels, bytes_per_sample );
- audioBuffer = new char[ audioDevice->bufferSize() ];
- channels = audioDevice->channels();
+ audioDevice = new AudioDevice( freq, channels, bits_per_sample);
+ audioBuffer = new char[ audioDevice->bufferSize() ];
+ channels = audioDevice->channels();
- //### must check which frequency is actually used.
- static const int size = 1;
- short int buf[size];
- long samplesRead = 0;
- mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream );
+ //### must check which frequency is actually used.
+ static const int size = 1;
+ short int buf[size];
+ long samplesRead = 0;
+ mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream );
}
@@ -409,17 +408,17 @@ bool LoopControl::init( const QString& filename ) {
if ( hasVideoChannel ) {
- total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream );
+ total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream );
- mediaPlayerState->setLength( total_video_frames );
+ mediaPlayerState->setLength( total_video_frames );
- framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream );
- DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames ));
+ framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream );
+ DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames ));
- if ( framerate <= 1.0 ) {
- DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" ));
- framerate = 25;
- }
+ if ( framerate <= 1.0 ) {
+ DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" ));
+ framerate = 25;
+ }
- if ( total_video_frames == 1 ) {
- DecodeLoopDebug(( "Cannot seek to frame" ));
- }
+ if ( total_video_frames == 1 ) {
+ DecodeLoopDebug(( "Cannot seek to frame" ));
+ }
@@ -443,7 +442,7 @@ void LoopControl::play() {
if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) {
- disabledSuspendScreenSaver = TRUE;
- previousSuspendMode = hasVideoChannel;
+ disabledSuspendScreenSaver = TRUE;
+ previousSuspendMode = hasVideoChannel;
// Stop the screen from blanking and power saving state
- QCopEnvelope("QPE/System", "setScreenSaverMode(int)" )
- << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend );
+ QCopEnvelope("QPE/System", "setScreenSaverMode(int)" )
+ << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend );
}
@@ -458,10 +457,10 @@ void LoopControl::setMute( bool on ) {
if ( on != isMuted ) {
- isMuted = on;
- if ( !on ) {
- // Force an update of the position
- mediaPlayerState->setPosition( mediaPlayerState->position() + 1 );
- mediaPlayerState->setPosition( mediaPlayerState->position() - 1 );
- // Resume playing audio
- moreAudio = TRUE;
- }
+ isMuted = on;
+ if ( !on ) {
+ // Force an update of the position
+ mediaPlayerState->setPosition( mediaPlayerState->position() + 1 );
+ mediaPlayerState->setPosition( mediaPlayerState->position() - 1 );
+ // Resume playing audio
+ moreAudio = TRUE;
+ }
}
diff --git a/core/multimedia/opieplayer/loopcontrol.h b/core/multimedia/opieplayer/loopcontrol.h
index 3191259..f4a7fcd 100644
--- a/core/multimedia/opieplayer/loopcontrol.h
+++ b/core/multimedia/opieplayer/loopcontrol.h
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -19,2 +19,5 @@
**********************************************************************/
+// L.J.Potter added changes Fri 02-15-2002
+
+
#ifndef MPEGVIEW_H
@@ -22,2 +25,3 @@
+
#include <qwidget.h>
diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.cpp b/core/multimedia/opieplayer/loopcontrol_threaded.cpp
index eb89b85..c7dc7a8 100644
--- a/core/multimedia/opieplayer/loopcontrol_threaded.cpp
+++ b/core/multimedia/opieplayer/loopcontrol_threaded.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -19,6 +19,4 @@
**********************************************************************/
-
#define _REENTRANT
-
#include <qpe/qpeapplication.h>
@@ -29,3 +27,3 @@
#endif
-#include <qpe/mediaplayerplugininterface.h>
+#include "mediaplayerplugininterface.h"
#include <stdio.h>
diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.h b/core/multimedia/opieplayer/loopcontrol_threaded.h
index ced6ac8..1031169 100644
--- a/core/multimedia/opieplayer/loopcontrol_threaded.h
+++ b/core/multimedia/opieplayer/loopcontrol_threaded.h
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -22,4 +22,2 @@
-
-
#include <qwidget.h>
diff --git a/core/multimedia/opieplayer/mediaplayerplugininterface.h b/core/multimedia/opieplayer/mediaplayerplugininterface.h
index aeeffde..339b2e4 100644
--- a/core/multimedia/opieplayer/mediaplayerplugininterface.h
+++ b/core/multimedia/opieplayer/mediaplayerplugininterface.h
@@ -22,3 +22,2 @@
-
#include <qpe/qcom.h>
@@ -64,8 +63,3 @@ public:
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;
@@ -99,2 +93,5 @@ public:
+ // File Properies
+ virtual long getPlayTime() { return -1; }
+ virtual int audioBitsPerSample( int stream ) = 0;
};
diff --git a/core/multimedia/opieplayer/mediaplayerstate.cpp b/core/multimedia/opieplayer/mediaplayerstate.cpp
index 7e82166..13741f6 100644
--- a/core/multimedia/opieplayer/mediaplayerstate.cpp
+++ b/core/multimedia/opieplayer/mediaplayerstate.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -21,3 +21,2 @@
#include <qpe/qlibrary.h>
-#include <qpe/mediaplayerplugininterface.h>
#include <qpe/config.h>
@@ -26,4 +25,6 @@
#include <qdir.h>
+#include "mediaplayerplugininterface.h"
#include "mediaplayerstate.h"
+
#ifdef QT_NO_COMPONENT
@@ -36,4 +37,4 @@
-#define MediaPlayerDebug(x) qDebug x
-//#define MediaPlayerDebug(x)
+//#define MediaPlayerDebug(x) qDebug x
+#define MediaPlayerDebug(x)
@@ -97,6 +98,6 @@ MediaPlayerDecoder *MediaPlayerState::newDecoder( const QString& file ) {
for ( it = pluginList.begin(); it != pluginList.end(); ++it ) {
- if ( (*it).decoder->isFileSupported( file ) ) {
- tmpDecoder = (*it).decoder;
- break;
- }
+ if ( (*it).decoder->isFileSupported( file ) ) {
+ tmpDecoder = (*it).decoder;
+ break;
+ }
}
@@ -116,2 +117,6 @@ MediaPlayerDecoder *MediaPlayerState::libMpeg3Decoder() {
+// ### hack to get true sample count
+// MediaPlayerDecoder *MediaPlayerState::libWavDecoder() {
+// return libwavdecoder;
+// }
@@ -122,5 +127,5 @@ void MediaPlayerState::loadPlugins() {
for ( mit = pluginList.begin(); mit != pluginList.end(); ++mit ) {
- (*mit).iface->release();
- (*mit).library->unload();
- delete (*mit).library;
+ (*mit).iface->release();
+ (*mit).library->unload();
+ delete (*mit).library;
}
@@ -133,25 +138,25 @@ void MediaPlayerState::loadPlugins() {
for ( it = list.begin(); it != list.end(); ++it ) {
- MediaPlayerPluginInterface *iface = 0;
- QLibrary *lib = new QLibrary( path + "/" + *it );
+ MediaPlayerPluginInterface *iface = 0;
+ QLibrary *lib = new QLibrary( path + "/" + *it );
- MediaPlayerDebug(( "querying: %s", QString( path + "/" + *it ).latin1() ));
+ MediaPlayerDebug(( "querying: %s", QString( path + "/" + *it ).latin1() ));
- if ( lib->queryInterface( IID_MediaPlayerPlugin, (QUnknownInterface**)&iface ) == QS_OK ) {
+ if ( lib->queryInterface( IID_MediaPlayerPlugin, (QUnknownInterface**)&iface ) == QS_OK ) {
- MediaPlayerDebug(( "loading: %s", QString( path + "/" + *it ).latin1() ));
+ MediaPlayerDebug(( "loading: %s", QString( path + "/" + *it ).latin1() ));
- MediaPlayerPlugin plugin;
- plugin.library = lib;
- plugin.iface = iface;
- plugin.decoder = plugin.iface->decoder();
- plugin.encoder = plugin.iface->encoder();
- pluginList.append( plugin );
+ MediaPlayerPlugin plugin;
+ plugin.library = lib;
+ plugin.iface = iface;
+ plugin.decoder = plugin.iface->decoder();
+ plugin.encoder = plugin.iface->encoder();
+ pluginList.append( plugin );
- // ### hack to get true sample count
- if ( plugin.decoder->pluginName() == QString("LibMpeg3Plugin") )
- libmpeg3decoder = plugin.decoder;
+ // ### hack to get true sample count
+ if ( plugin.decoder->pluginName() == QString("LibMpeg3Plugin") )
+ libmpeg3decoder = plugin.decoder;
- } else {
- delete lib;
- }
+ } else {
+ delete lib;
+ }
}
@@ -180,5 +185,5 @@ void MediaPlayerState::loadPlugins() {
if ( pluginList.count() )
- MediaPlayerDebug(( "%i decoders found", pluginList.count() ));
+ MediaPlayerDebug(( "%i decoders found", pluginList.count() ));
else
- MediaPlayerDebug(( "No decoders found" ));
+ MediaPlayerDebug(( "No decoders found" ));
}
diff --git a/core/multimedia/opieplayer/mpegplayer.pro b/core/multimedia/opieplayer/mpegplayer.pro
index 3b8d4b0..41f2de0 100644
--- a/core/multimedia/opieplayer/mpegplayer.pro
+++ b/core/multimedia/opieplayer/mpegplayer.pro
@@ -1,15 +1,16 @@
-TEMPLATE = app
-CONFIG = qt warn_on release
-DESTDIR = $(OPIEDIR)/bin
-HEADERS = loopcontrol.h mediaplayerplugininterface.h playlistselection.h mediaplayerstate.h \
- videowidget.h audiowidget.h playlistwidget.h mediaplayer.h audiodevice.h
-SOURCES = main.cpp \
- loopcontrol.cpp playlistselection.cpp mediaplayerstate.cpp \
- videowidget.cpp audiowidget.cpp playlistwidget.cpp mediaplayer.cpp audiodevice.cpp
-TARGET = mpegplayer
-INCLUDEPATH += $(OPIEDIR)/include
-DEPENDPATH += $(OPIEDIR)/include
+TEMPLATE = app
+CONFIG = qt warn_on release
+#release
+DESTDIR = $(OPIEDIR)/bin
+HEADERS = loopcontrol.h mediaplayerplugininterface.h playlistselection.h mediaplayerstate.h \
+ videowidget.h audiowidget.h playlistwidget.h mediaplayer.h audiodevice.h
+SOURCES = main.cpp \
+ loopcontrol.cpp playlistselection.cpp mediaplayerstate.cpp \
+ videowidget.cpp audiowidget.cpp playlistwidget.cpp mediaplayer.cpp audiodevice.cpp
+TARGET = mpegplayer
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -lpthread
-# INTERFACES =
+# INTERFACES =
# INCLUDEPATH += $(OPIEDIR)/include
@@ -17,4 +18,4 @@ LIBS += -lqpe -lpthread
# TMAKE_CXXFLAGS += -DQPIM_STANDALONE
-# LIBS += libmpeg3/libmpeg3.a -lpthread
-# LIBS += $(OPIEDIR)/plugins/codecs/liblibmadplugin.so
+# LIBS += libmpeg3/libmpeg3.a -lpthread
+# LIBS += $(OPIEDIR)/plugins/codecs/liblibmadplugin.so
diff --git a/core/multimedia/opieplayer/playlistselection.cpp b/core/multimedia/opieplayer/playlistselection.cpp
index a82b594..2c62e86 100644
--- a/core/multimedia/opieplayer/playlistselection.cpp
+++ b/core/multimedia/opieplayer/playlistselection.cpp
@@ -35,4 +35,4 @@ public:
PlayListSelectionItem( QListView *parent, const DocLnk *f ) : QListViewItem( parent ), fl( f ) {
- setText( 0, f->name() );
- setPixmap( 0, f->pixmap() );
+ setText( 0, f->name() );
+ setPixmap( 0, f->pixmap() );
}
@@ -52,6 +52,8 @@ PlayListSelection::PlayListSelection( QWidget *parent, const char *name )
{
-#ifdef USE_PLAYLIST_BACKGROUND
+// #ifdef USE_PLAYLIST_BACKGROUND
setStaticBackground( TRUE );
- setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/background" ) );
-#endif
+// setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/background" ) );
+ setBackgroundPixmap( Resource::loadPixmap( "opielogo" ) );
+// #endif
+ addColumn("Title",236);
setAllColumnsShowFocus( TRUE );
@@ -67,10 +69,11 @@ PlayListSelection::~PlayListSelection() {
-#ifdef USE_PLAYLIST_BACKGROUND
+// #ifdef USE_PLAYLIST_BACKGROUND
void PlayListSelection::drawBackground( QPainter *p, const QRect &r ) {
p->fillRect( r, QBrush( white ) );
- QImage logo = Resource::loadImage( "mpegplayer/background" );
+// QImage logo = Resource::loadImage( "mpegplayer/background" );
+ QImage logo = Resource::loadImage( "opielogo" );
if ( !logo.isNull() )
- p->drawImage( (width() - logo.width()) / 2, (height() - logo.height()) / 2, logo );
+ p->drawImage( (width() - logo.width()) / 2, (height() - logo.height()) / 2, logo );
}
-#endif
+// #endif
@@ -79,8 +82,8 @@ void PlayListSelection::contentsMouseMoveEvent( QMouseEvent *event ) {
if ( event->state() == QMouseEvent::LeftButton ) {
- QListViewItem *currentItem = selectedItem();
- QListViewItem *itemUnder = itemAt( QPoint( event->pos().x(), event->pos().y() - contentsY() ) );
- if ( currentItem && currentItem->itemAbove() == itemUnder )
- moveSelectedUp();
- else if ( currentItem && currentItem->itemBelow() == itemUnder )
- moveSelectedDown();
+ QListViewItem *currentItem = selectedItem();
+ QListViewItem *itemUnder = itemAt( QPoint( event->pos().x(), event->pos().y() - contentsY() ) );
+ if ( currentItem && currentItem->itemAbove() == itemUnder )
+ moveSelectedUp();
+ else if ( currentItem && currentItem->itemBelow() == itemUnder )
+ moveSelectedDown();
}
@@ -92,3 +95,3 @@ const DocLnk *PlayListSelection::current() {
if ( item )
- return item->file();
+ return item->file();
return NULL;
@@ -110,3 +113,3 @@ void PlayListSelection::removeSelected() {
if ( item )
- delete item;
+ delete item;
setSelected( currentItem(), TRUE );
@@ -119,3 +122,3 @@ void PlayListSelection::moveSelectedUp() {
if ( item && item->itemAbove() )
- item->itemAbove()->moveItem( item );
+ item->itemAbove()->moveItem( item );
ensureItemVisible( selectedItem() );
@@ -137,3 +140,3 @@ bool PlayListSelection::prev() {
else
- return FALSE;
+ return FALSE;
ensureItemVisible( selectedItem() );
@@ -148,3 +151,3 @@ bool PlayListSelection::next() {
else
- return FALSE;
+ return FALSE;
ensureItemVisible( selectedItem() );
@@ -159,3 +162,3 @@ bool PlayListSelection::first() {
else
- return FALSE;
+ return FALSE;
ensureItemVisible( selectedItem() );
@@ -169,3 +172,3 @@ bool PlayListSelection::last() {
while ( ( item = item->nextSibling() ) )
- prevItem = item;
+ prevItem = item;
if ( prevItem )
@@ -173,3 +176,3 @@ bool PlayListSelection::last() {
else
- return FALSE;
+ return FALSE;
ensureItemVisible( selectedItem() );
diff --git a/core/multimedia/opieplayer/playlistselection.h b/core/multimedia/opieplayer/playlistselection.h
index 22d3c74..57e10f1 100644
--- a/core/multimedia/opieplayer/playlistselection.h
+++ b/core/multimedia/opieplayer/playlistselection.h
@@ -22,4 +22,2 @@
-
-
#include <qlist.h>
@@ -49,6 +47,6 @@ protected:
virtual void contentsMouseMoveEvent(QMouseEvent *);
-#ifdef USE_PLAYLIST_BACKGROUND
+/* #ifdef USE_PLAYLIST_BACKGROUND */
virtual void drawBackground( QPainter *p, const QRect &r );
virtual void paintEmptyArea( QPainter *p, const QRect &r ) { drawBackground( p, r ); };
-#endif
+/* #endif */
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index 0423e7a..202f351 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -23,2 +23,4 @@
#include <qpe/fileselector.h>
+#include <qpe/qpeapplication.h>
+
#include <qpe/applnk.h>
@@ -37,2 +39,6 @@
#include <qtoolbutton.h>
+#include <qtabwidget.h>
+#include <qlistview.h>
+#include <qpoint.h>
+//#include <qtimer.h>
@@ -44,2 +50,5 @@
+#define BUTTONS_ON_TOOLBAR
+#define SIDE_BUTTONS
+#define CAN_SAVE_LOAD_PLAYLISTS
@@ -47,11 +56,8 @@ extern MediaPlayerState *mediaPlayerState;
+// class myFileSelector {
+// };
class PlayListWidgetPrivate {
public:
- QToolButton *tbPlay;
- QToolButton *tbFull;
- QToolButton *tbLoop;
- QToolButton *tbScale;
- QToolButton *tbShuffle;
-
+ QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove;
QFrame *playListFrame;
@@ -67,10 +73,10 @@ public:
ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
- : QToolButton( parent, name ) {
- setTextLabel( name );
- setPixmap( Resource::loadPixmap( icon ) );
- setAutoRaise( TRUE );
- setFocusPolicy( QWidget::NoFocus );
- setToggleButton( t );
- connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
- QPEMenuToolFocusManager::manager()->addWidget( this );
+ : QToolButton( parent, name ) {
+ setTextLabel( name );
+ setPixmap( Resource::loadPixmap( icon ) );
+ setAutoRaise( TRUE );
+ setFocusPolicy( QWidget::NoFocus );
+ setToggleButton( t );
+ connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
+ QPEMenuToolFocusManager::manager()->addWidget( this );
}
@@ -82,5 +88,5 @@ public:
MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot )
- : QAction( text, QString::null, 0, 0 ) {
- connect( this, SIGNAL( activated() ), handler, slot );
- addTo( parent );
+ : QAction( text, QString::null, 0, 0 ) {
+ connect( this, SIGNAL( activated() ), handler, slot );
+ addTo( parent );
}
@@ -95,2 +101,4 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
d->current = NULL;
+// menuTimer = new QTimer( this ,"menu timer"),
+// connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) );
@@ -98,3 +106,3 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
- setCaption( tr("MediaPlayer") );
+ setCaption( tr("OpiePlayer") );
setIcon( Resource::loadPixmap( "MPEGPlayer" ) );
@@ -113,67 +121,129 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
bar->setLabel( tr( "Play Operations" ) );
-#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 );
+ 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 );
QPopupMenu *pmPlayList = new QPopupMenu( this );
- menu->insertItem( tr( "PlayList" ), pmPlayList );
- new MenuItem( pmPlayList, tr( "Toggle PlayList" ), mediaPlayerState, SLOT( togglePlaylist() ) );
+ menu->insertItem( tr( "File" ), pmPlayList );
new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
- new MenuItem( pmPlayList, tr( "Add all music files" ), this, SLOT( addAllMusicToList() ) );
+ new MenuItem( pmPlayList, tr( "Add all audio 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() ) );
-#endif
+
+ 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);
QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton );
+ QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton );
+
+ 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( vbox5 ); vbox3->setBackgroundMode( PaletteButton );
- d->playListFrame = vbox3;
- QLabel *plString = new QLabel( tr(" PlayList"), vbox3 );
- plString->setBackgroundMode( QButton::PaletteButton );
- plString->setFont( QFont( "Helvetica", 8, QFont::Bold ) );
+ QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton );
+ d->playListFrame = vbox3;
+ d->playListFrame ->setMinimumSize(235,260);
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
-#ifndef BUTTONS_ON_TOOLBAR
- d->tbShuffle = new ToolButton( vbox1, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE );
-#endif
+ d->selectedFiles = new PlayListSelection( hbox2);
+ QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton );
+ QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch
+ 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" ));
+ }
+ }
// add the library area
- QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton );
+ QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
- 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( playIt( QListViewItem *) ) );
+// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( playIt( 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( clicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
+ connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
+
+ 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( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) );
+ 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( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) );
@@ -181,7 +251,12 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( 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( 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( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) );
+ connect( d->selectedFiles, SIGNAL( clicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) );
+// connect( d->selectedFiles, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) );
+
setCentralWidget( vbox5 );
@@ -200,3 +275,3 @@ PlayListWidget::~PlayListWidget() {
if ( d->current )
- delete d->current;
+ delete d->current;
delete d;
@@ -206,2 +281,3 @@ PlayListWidget::~PlayListWidget() {
void PlayListWidget::initializeStates() {
+
d->tbPlay->setOn( mediaPlayerState->playing() );
@@ -209,6 +285,6 @@ void PlayListWidget::initializeStates() {
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() );
}
@@ -222,7 +298,7 @@ void PlayListWidget::readConfig( Config& cfg ) {
for ( int i = 0; i < noOfFiles; i++ ) {
- QString entryName;
- entryName.sprintf( "File%i", i + 1 );
- QString linkFile = cfg.readEntry( entryName );
- DocLnk lnk( linkFile );
- if ( lnk.isValid() )
+ QString entryName;
+ entryName.sprintf( "File%i", i + 1 );
+ QString linkFile = cfg.readEntry( entryName );
+ DocLnk lnk( linkFile );
+ if ( lnk.isValid() )
d->selectedFiles->addToSelection( lnk );
@@ -240,24 +316,24 @@ void PlayListWidget::writeConfig( Config& cfg ) const {
do {
- const DocLnk *lnk = d->selectedFiles->current();
- if ( lnk ) {
- QString entryName;
- entryName.sprintf( "File%i", noOfFiles + 1 );
- cfg.writeEntry( entryName, lnk->linkFile() );
- // if this link does exist, add it so we have the file
- // next time...
- if ( !QFile::exists( lnk->linkFile() ) ) {
- // the way writing lnks doesn't really check for out
- // of disk space, but check it anyway.
- if ( !lnk->writeLink() ) {
- QMessageBox::critical( 0, tr("Out of space"),
- tr( "There was a problem saving "
- "the playlist.\n"
- "Your playlist "
- "may be missing some entries\n"
- "the next time you start it." )
- );
- }
- }
- noOfFiles++;
- }
+ const DocLnk *lnk = d->selectedFiles->current();
+ if ( lnk ) {
+ QString entryName;
+ entryName.sprintf( "File%i", noOfFiles + 1 );
+ cfg.writeEntry( entryName, lnk->linkFile() );
+ // if this link does exist, add it so we have the file
+ // next time...
+ if ( !QFile::exists( lnk->linkFile() ) ) {
+ // the way writing lnks doesn't really check for out
+ // of disk space, but check it anyway.
+ if ( !lnk->writeLink() ) {
+ QMessageBox::critical( 0, tr("Out of space"),
+ tr( "There was a problem saving "
+ "the playlist.\n"
+ "Your playlist "
+ "may be missing some entries\n"
+ "the next time you start it." )
+ );
+ }
+ }
+ noOfFiles++;
+ }
} while ( d->selectedFiles->next() );
@@ -269,3 +345,3 @@ void PlayListWidget::writeConfig( Config& cfg ) const {
void PlayListWidget::addToSelection( const DocLnk& lnk ) {
- d->setDocumentUsed = FALSE;
+ d->setDocumentUsed = FALSE;
if ( mediaPlayerState->playlist() )
@@ -273,3 +349,13 @@ void PlayListWidget::addToSelection( const DocLnk& lnk ) {
else
- mediaPlayerState->setPlaying( TRUE );
+ mediaPlayerState->setPlaying( TRUE );
+}
+
+
+void PlayListWidget::addToSelection( QListViewItem *it ,const QPoint & p, int index) {
+ qDebug("add");
+// d->selectedFiles->addToSelection( lnk );
+ // }
+// else
+// mediaPlayerState->setPlaying( TRUE );
+//
}
@@ -279,3 +365,3 @@ void PlayListWidget::clearList() {
while ( first() )
- d->selectedFiles->removeSelected();
+ d->selectedFiles->removeSelected();
}
@@ -312,12 +398,12 @@ void PlayListWidget::setDocument(const QString& fileref) {
if ( fileref.isNull() ) {
- QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) );
- return;
+ QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) );
+ return;
}
if ( mediaPlayerState->playlist() )
- addToSelection( DocLnk( fileref ) );
+ addToSelection( DocLnk( fileref ) );
else {
- d->setDocumentUsed = TRUE;
- if ( d->current )
- delete d->current;
- d->current = new DocLnk( fileref );
+ d->setDocumentUsed = TRUE;
+ if ( d->current )
+ delete d->current;
+ d->current = new DocLnk( fileref );
}
@@ -343,7 +429,7 @@ const DocLnk *PlayListWidget::current() {
if ( mediaPlayerState->playlist() )
- return d->selectedFiles->current();
+ return d->selectedFiles->current();
else if ( d->setDocumentUsed && d->current ) {
- return d->current;
+ return d->current;
} else
- return d->files->selected();
+ return d->files->selected();
}
@@ -353,25 +439,25 @@ bool PlayListWidget::prev() {
if ( mediaPlayerState->playlist() ) {
- if ( mediaPlayerState->shuffled() ) {
- const DocLnk *cur = current();
- int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0));
- for ( int i = 0; i < j; i++ ) {
- if ( !d->selectedFiles->next() )
- d->selectedFiles->first();
- }
- if ( cur == current() )
- if ( !d->selectedFiles->next() )
- d->selectedFiles->first();
- return TRUE;
- } else {
- if ( !d->selectedFiles->prev() ) {
- if ( mediaPlayerState->looping() ) {
- return d->selectedFiles->last();
- } else {
- return FALSE;
- }
- }
- return TRUE;
- }
+ if ( mediaPlayerState->shuffled() ) {
+ const DocLnk *cur = current();
+ int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0));
+ for ( int i = 0; i < j; i++ ) {
+ if ( !d->selectedFiles->next() )
+ d->selectedFiles->first();
+ }
+ if ( cur == current() )
+ if ( !d->selectedFiles->next() )
+ d->selectedFiles->first();
+ return TRUE;
+ } else {
+ if ( !d->selectedFiles->prev() ) {
+ if ( mediaPlayerState->looping() ) {
+ return d->selectedFiles->last();
+ } else {
+ return FALSE;
+ }
+ }
+ return TRUE;
+ }
} else {
- return mediaPlayerState->looping();
+ return mediaPlayerState->looping();
}
@@ -382,16 +468,16 @@ bool PlayListWidget::next() {
if ( mediaPlayerState->playlist() ) {
- if ( mediaPlayerState->shuffled() ) {
- return prev();
- } else {
- if ( !d->selectedFiles->next() ) {
- if ( mediaPlayerState->looping() ) {
- return d->selectedFiles->first();
- } else {
- return FALSE;
- }
- }
- return TRUE;
- }
+ if ( mediaPlayerState->shuffled() ) {
+ return prev();
+ } else {
+ if ( !d->selectedFiles->next() ) {
+ if ( mediaPlayerState->looping() ) {
+ return d->selectedFiles->first();
+ } else {
+ return FALSE;
+ }
+ }
+ return TRUE;
+ }
} else {
- return mediaPlayerState->looping();
+ return mediaPlayerState->looping();
}
@@ -402,5 +488,5 @@ bool PlayListWidget::first() {
if ( mediaPlayerState->playlist() )
- return d->selectedFiles->first();
+ return d->selectedFiles->first();
else
- return mediaPlayerState->looping();
+ return mediaPlayerState->looping();
}
@@ -410,5 +496,5 @@ bool PlayListWidget::last() {
if ( mediaPlayerState->playlist() )
- return d->selectedFiles->last();
+ return d->selectedFiles->last();
else
- return mediaPlayerState->looping();
+ return mediaPlayerState->looping();
}
@@ -436,5 +522,5 @@ void PlayListWidget::setPlaylist( bool shown ) {
if ( shown )
- d->playListFrame->show();
+ d->playListFrame->show();
else
- d->playListFrame->hide();
+ d->playListFrame->hide();
}
@@ -444,6 +530,120 @@ void PlayListWidget::setView( char view ) {
if ( view == 'l' )
- showMaximized();
+ showMaximized();
else
- hide();
+ 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;
+ mediaPlayerState->setPlaying(true);
+}
+
+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 819adb1..5b05f11 100644
--- a/core/multimedia/opieplayer/playlistwidget.h
+++ b/core/multimedia/opieplayer/playlistwidget.h
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -24,2 +24,4 @@
#include <qpe/applnk.h>
+#include <qtabwidget.h>
+/* #include <qtimer.h> */
@@ -28,3 +30,7 @@ class PlayListWidgetPrivate;
class Config;
-
+class QListViewItem;
+class QListView;
+class QPoint;
+class QAction;
+class QLabel;
@@ -35,3 +41,8 @@ public:
~PlayListWidget();
-
+ QTabWidget * tabWidget;
+ QAction *fullScreenButton, *scaleButton;
+ DocLnkSet files;
+ DocLnkSet vFiles;
+ QListView *audioView, *videoView, *playlistView;
+ QLabel *libString;
// retrieve the current playlist entry (media file link)
@@ -39,2 +50,3 @@ public:
void useSelectedDocument();
+/* QTimer * menuTimer; */
@@ -43,2 +55,4 @@ public slots:
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
@@ -52,2 +66,3 @@ public slots:
void loadList(); // Load a playlist
+ void playIt( QListViewItem *);
bool first();
@@ -56,2 +71,10 @@ public slots:
bool prev();
+ void addSelected();
+ void removeSelected();
+ void tabChanged(QWidget*);
+/* void setFullScreen(); */
+/* void setScaled(); */
+protected:
+/* void contentsMousePressEvent( QMouseEvent * e ); */
+/* void contentsMouseReleaseEvent( QMouseEvent * e ); */
@@ -62,2 +85,8 @@ private:
PlayListWidgetPrivate *d; // Private implementation data
+
+protected slots:
+/* void cancelMenuTimer(); */
+/* void showFileMenu(); */
+
+
};
diff --git a/core/multimedia/opieplayer/videowidget.cpp b/core/multimedia/opieplayer/videowidget.cpp
index 12ae4fd..1f128a4 100644
--- a/core/multimedia/opieplayer/videowidget.cpp
+++ b/core/multimedia/opieplayer/videowidget.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of the Qtopia Environment.
+** This file is part of Qtopia Environment.
**
@@ -19,5 +19,4 @@
**********************************************************************/
-
#include <qpe/resource.h>
-#include <qpe/mediaplayerplugininterface.h>
+#include "mediaplayerplugininterface.h"
#include <qwidget.h>
@@ -69,3 +68,3 @@ VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) :
QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) {
- setCaption( tr("MediaPlayer") );
+ setCaption( tr("OpiePlayer") );
setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/metalFinish" ) );
@@ -83,4 +82,4 @@ VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) :
- connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
- connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
+ connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
+ connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
@@ -104,3 +103,3 @@ VideoWidget::~VideoWidget() {
for ( int i = 0; i < 3; i++ )
- delete pixmaps[i];
+ delete pixmaps[i];
delete currentFrame;
@@ -120,3 +119,3 @@ void VideoWidget::sliderReleased() {
if ( slider->width() == 0 )
- return;
+ return;
long val = long((double)slider->value() * mediaPlayerState->length() / slider->width());
@@ -138,8 +137,8 @@ void VideoWidget::setView( char view ) {
if ( view == 'v' ) {
- makeVisible();
+ makeVisible();
} else {
- // Effectively blank the view next time we show it so it looks nicer
- scaledWidth = 0;
- scaledHeight = 0;
- hide();
+ // Effectively blank the view next time we show it so it looks nicer
+ scaledWidth = 0;
+ scaledHeight = 0;
+ hide();
}
@@ -151,3 +150,3 @@ void VideoWidget::updateSlider( long i, long max ) {
if ( max == 0 )
- return;
+ return;
int width = slider->width();
@@ -155,6 +154,6 @@ void VideoWidget::updateSlider( long i, long max ) {
if ( !mediaPlayerState->fullscreen() && !videoSliderBeingMoved ) {
- if ( slider->value() != val )
- slider->setValue( val );
- if ( slider->maxValue() != width )
- slider->setMaxValue( width );
+ if ( slider->value() != val )
+ slider->setValue( val );
+ if ( slider->maxValue() != width )
+ slider->setMaxValue( width );
}
@@ -165,3 +164,3 @@ void VideoWidget::setToggleButton( int i, bool down ) {
if ( down != videoButtons[i].isDown )
- toggleButton( i );
+ toggleButton( i );
}
@@ -187,32 +186,32 @@ void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
for ( int i = 0; i < numButtons; i++ ) {
- int x = videoButtons[i].xPos;
- int y = videoButtons[i].yPos;
- if ( event->state() == QMouseEvent::LeftButton ) {
- // The test to see if the mouse click is inside the circular button or not
- // (compared with the radius squared to avoid a square-root of our distance)
- int radius = 16;
- QPoint center = QPoint( x + radius, y + radius );
- QPoint dXY = center - event->pos();
- int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y();
- bool isOnButton = dist <= (radius * radius);
- if ( isOnButton != videoButtons[i].isHeld ) {
- videoButtons[i].isHeld = isOnButton;
- toggleButton(i);
- }
- } else {
- if ( videoButtons[i].isHeld ) {
- videoButtons[i].isHeld = FALSE;
- if ( !videoButtons[i].isToggle )
- setToggleButton( i, FALSE );
- switch (i) {
- case VideoPlay: mediaPlayerState->setPlaying(videoButtons[i].isDown); return;
- case VideoStop: mediaPlayerState->setPlaying(FALSE); return;
- case VideoPause: mediaPlayerState->setPaused(videoButtons[i].isDown); return;
- case VideoNext: mediaPlayerState->setNext(); return;
- case VideoPrevious: mediaPlayerState->setPrev(); return;
- case VideoPlayList: mediaPlayerState->setList(); return;
- case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return;
- }
- }
- }
+ int x = videoButtons[i].xPos;
+ int y = videoButtons[i].yPos;
+ if ( event->state() == QMouseEvent::LeftButton ) {
+ // The test to see if the mouse click is inside the circular button or not
+ // (compared with the radius squared to avoid a square-root of our distance)
+ int radius = 16;
+ QPoint center = QPoint( x + radius, y + radius );
+ QPoint dXY = center - event->pos();
+ int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y();
+ bool isOnButton = dist <= (radius * radius);
+ if ( isOnButton != videoButtons[i].isHeld ) {
+ videoButtons[i].isHeld = isOnButton;
+ toggleButton(i);
+ }
+ } else {
+ if ( videoButtons[i].isHeld ) {
+ videoButtons[i].isHeld = FALSE;
+ if ( !videoButtons[i].isToggle )
+ setToggleButton( i, FALSE );
+ switch (i) {
+ case VideoPlay: mediaPlayerState->setPlaying(videoButtons[i].isDown); return;
+ case VideoStop: mediaPlayerState->setPlaying(FALSE); return;
+ case VideoPause: mediaPlayerState->setPaused(videoButtons[i].isDown); return;
+ case VideoNext: mediaPlayerState->setNext(); return;
+ case VideoPrevious: mediaPlayerState->setPrev(); return;
+ case VideoPlayList: mediaPlayerState->setList(); return;
+ case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return;
+ }
+ }
+ }
}
@@ -228,6 +227,6 @@ void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) {
if ( mediaPlayerState->fullscreen() ) {
- mediaPlayerState->setFullscreen( FALSE );
- makeVisible();
+ mediaPlayerState->setFullscreen( FALSE );
+ makeVisible();
} else {
- mouseMoveEvent( event );
+ mouseMoveEvent( event );
}
@@ -238,11 +237,11 @@ void VideoWidget::makeVisible() {
if ( mediaPlayerState->fullscreen() ) {
- setBackgroundMode( QWidget::NoBackground );
- showFullScreen();
- resize( qApp->desktop()->size() );
- slider->hide();
+ setBackgroundMode( QWidget::NoBackground );
+ showFullScreen();
+ resize( qApp->desktop()->size() );
+ slider->hide();
} else {
- setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/metalFinish" ) );
- showNormal();
- showMaximized();
- slider->show();
+ setBackgroundPixmap( Resource::loadPixmap( "mpegplayer/metalFinish" ) );
+ showNormal();
+ showMaximized();
+ slider->show();
}
@@ -255,25 +254,25 @@ void VideoWidget::paintEvent( QPaintEvent * ) {
if ( mediaPlayerState->fullscreen() ) {
- // Clear the background
- p.setBrush( QBrush( Qt::black ) );
- p.drawRect( rect() );
+ // Clear the background
+ p.setBrush( QBrush( Qt::black ) );
+ p.drawRect( rect() );
- // Draw the current frame
- //p.drawImage( ); // If using directpainter we won't have a copy except whats on the screen
+ // Draw the current frame
+ //p.drawImage( ); // If using directpainter we won't have a copy except whats on the screen
} else {
- // draw border
- qDrawShadePanel( &p, 4, 15, 230, 170, colorGroup(), TRUE, 5, NULL );
+ // draw border
+ qDrawShadePanel( &p, 4, 15, 230, 170, colorGroup(), TRUE, 5, NULL );
- // Clear the movie screen first
- p.setBrush( QBrush( Qt::black ) );
- p.drawRect( 9, 20, 220, 160 );
+ // Clear the movie screen first
+ p.setBrush( QBrush( Qt::black ) );
+ p.drawRect( 9, 20, 220, 160 );
- // draw current frame (centrally positioned from scaling to maintain aspect ratio)
- p.drawImage( 9 + (220 - scaledWidth) / 2, 20 + (160 - scaledHeight) / 2, *currentFrame, 0, 0, scaledWidth, scaledHeight );
+ // draw current frame (centrally positioned from scaling to maintain aspect ratio)
+ p.drawImage( 9 + (220 - scaledWidth) / 2, 20 + (160 - scaledHeight) / 2, *currentFrame, 0, 0, scaledWidth, scaledHeight );
- // draw the buttons
- for ( int i = 0; i < numButtons; i++ )
- paintButton( &p, i );
+ // draw the buttons
+ for ( int i = 0; i < numButtons; i++ )
+ paintButton( &p, i );
- // draw the slider
- slider->repaint( TRUE );
+ // draw the slider
+ slider->repaint( TRUE );
}
@@ -302,89 +301,89 @@ bool VideoWidget::playVideo() {
#ifdef USE_DIRECT_PAINTER
- QDirectPainter p(this);
-
- if ( ( qt_screen->transformOrientation() == 3 ) &&
- ( ( dd == 16 ) || ( dd == 32 ) ) && ( p.numRects() == 1 ) ) {
-
- w = 320;
- h = 240;
-
- if ( mediaPlayerState->scaled() ) {
- // maintain aspect ratio
- if ( w * sh > sw * h )
- w = sw * h / sh;
- else
- h = sh * w / sw;
- } else {
- w = sw;
- h = sh;
- }
-
- w--; // we can't allow libmpeg to overwrite.
- QPoint roff = qt_screen->mapToDevice( p.offset(), QSize( qt_screen->width(), qt_screen->height() ) );
-
- int ox = roff.x() - height() + 2 + (height() - w) / 2;
- int oy = roff.y() + (width() - h) / 2;
- int sx = 0, sy = 0;
-
- uchar* fp = p.frameBuffer() + p.lineStep() * oy;
- fp += dd * ox / 8;
- uchar **jt = new uchar*[h];
- for ( int i = h; i; i-- ) {
- jt[h - i] = fp;
- fp += p.lineStep();
- }
-
- result = mediaPlayerState->curDecoder()->videoReadScaledFrame( jt, sx, sy, sw, sh, w, h, format, 0) == 0;
-
- delete [] jt;
- } else {
+ QDirectPainter p(this);
+
+ if ( ( qt_screen->transformOrientation() == 3 ) &&
+ ( ( dd == 16 ) || ( dd == 32 ) ) && ( p.numRects() == 1 ) ) {
+
+ w = 320;
+ h = 240;
+
+ if ( mediaPlayerState->scaled() ) {
+ // maintain aspect ratio
+ if ( w * sh > sw * h )
+ w = sw * h / sh;
+ else
+ h = sh * w / sw;
+ } else {
+ w = sw;
+ h = sh;
+ }
+
+ w--; // we can't allow libmpeg to overwrite.
+ QPoint roff = qt_screen->mapToDevice( p.offset(), QSize( qt_screen->width(), qt_screen->height() ) );
+
+ int ox = roff.x() - height() + 2 + (height() - w) / 2;
+ int oy = roff.y() + (width() - h) / 2;
+ int sx = 0, sy = 0;
+
+ uchar* fp = p.frameBuffer() + p.lineStep() * oy;
+ fp += dd * ox / 8;
+ uchar **jt = new uchar*[h];
+ for ( int i = h; i; i-- ) {
+ jt[h - i] = fp;
+ fp += p.lineStep();
+ }
+
+ result = mediaPlayerState->curDecoder()->videoReadScaledFrame( jt, sx, sy, sw, sh, w, h, format, 0) == 0;
+
+ delete [] jt;
+ } else {
#endif
- QPainter p(this);
-
- w = 320;
- h = 240;
-
- if ( mediaPlayerState->scaled() ) {
- // maintain aspect ratio
- if ( w * sh > sw * h )
- w = sw * h / sh;
- else
- h = sh * w / sw;
- } else {
- w = sw;
- h = sh;
- }
-
- int bytes = ( dd == 16 ) ? 2 : 4;
- QImage tempFrame( w, h, bytes << 3 );
- result = mediaPlayerState->curDecoder()->videoReadScaledFrame( tempFrame.jumpTable(),
- 0, 0, sw, sh, w, h, format, 0) == 0;
- if ( result && mediaPlayerState->fullscreen() ) {
-
- int rw = h, rh = w;
- QImage rotatedFrame( rw, rh, bytes << 3 );
-
- ushort* in = (ushort*)tempFrame.bits();
- ushort* out = (ushort*)rotatedFrame.bits();
- int spl = rotatedFrame.bytesPerLine() / bytes;
- for (int x=0; x<h; x++) {
- if ( bytes == 2 ) {
- ushort* lout = out++ + (w - 1)*spl;
- for (int y=0; y<w; y++) {
- *lout=*in++;
- lout-=spl;
- }
- } else {
- ulong* lout = ((ulong *)out)++ + (w - 1)*spl;
- for (int y=0; y<w; y++) {
- *lout=*((ulong*)in)++;
- lout-=spl;
- }
- }
- }
-
- p.drawImage( (240 - rw) / 2, (320 - rh) / 2, rotatedFrame, 0, 0, rw, rh );
- }
+ QPainter p(this);
+
+ w = 320;
+ h = 240;
+
+ if ( mediaPlayerState->scaled() ) {
+ // maintain aspect ratio
+ if ( w * sh > sw * h )
+ w = sw * h / sh;
+ else
+ h = sh * w / sw;
+ } else {
+ w = sw;
+ h = sh;
+ }
+
+ int bytes = ( dd == 16 ) ? 2 : 4;
+ QImage tempFrame( w, h, bytes << 3 );
+ result = mediaPlayerState->curDecoder()->videoReadScaledFrame( tempFrame.jumpTable(),
+ 0, 0, sw, sh, w, h, format, 0) == 0;
+ if ( result && mediaPlayerState->fullscreen() ) {
+
+ int rw = h, rh = w;
+ QImage rotatedFrame( rw, rh, bytes << 3 );
+
+ ushort* in = (ushort*)tempFrame.bits();
+ ushort* out = (ushort*)rotatedFrame.bits();
+ int spl = rotatedFrame.bytesPerLine() / bytes;
+ for (int x=0; x<h; x++) {
+ if ( bytes == 2 ) {
+ ushort* lout = out++ + (w - 1)*spl;
+ for (int y=0; y<w; y++) {
+ *lout=*in++;
+ lout-=spl;
+ }
+ } else {
+ ulong* lout = ((ulong *)out)++ + (w - 1)*spl;
+ for (int y=0; y<w; y++) {
+ *lout=*((ulong*)in)++;
+ lout-=spl;
+ }
+ }
+ }
+
+ p.drawImage( (240 - rw) / 2, (320 - rh) / 2, rotatedFrame, 0, 0, rw, rh );
+ }
#ifdef USE_DIRECT_PAINTER
- }
+ }
#endif
@@ -392,27 +391,27 @@ bool VideoWidget::playVideo() {
- w = 220;
- h = 160;
+ w = 220;
+ h = 160;
- // maintain aspect ratio
- if ( w * sh > sw * h )
- w = sw * h / sh;
- else
- h = sh * w / sw;
+ // maintain aspect ratio
+ if ( w * sh > sw * h )
+ w = sw * h / sh;
+ else
+ h = sh * w / sw;
- result = mediaPlayerState->curDecoder()->videoReadScaledFrame( currentFrame->jumpTable(), 0, 0, sw, sh, w, h, format, 0) == 0;
+ result = mediaPlayerState->curDecoder()->videoReadScaledFrame( currentFrame->jumpTable(), 0, 0, sw, sh, w, h, format, 0) == 0;
- QPainter p( this );
+ QPainter p( this );
- // Image changed size, therefore need to blank the possibly unpainted regions first
- if ( scaledWidth != w || scaledHeight != h ) {
- p.setBrush( QBrush( Qt::black ) );
- p.drawRect( 9, 20, 220, 160 );
- }
+ // Image changed size, therefore need to blank the possibly unpainted regions first
+ if ( scaledWidth != w || scaledHeight != h ) {
+ p.setBrush( QBrush( Qt::black ) );
+ p.drawRect( 9, 20, 220, 160 );
+ }
- scaledWidth = w;
- scaledHeight = h;
+ scaledWidth = w;
+ scaledHeight = h;
- if ( result ) {
- p.drawImage( 9 + (220 - scaledWidth) / 2, 20 + (160 - scaledHeight) / 2, *currentFrame, 0, 0, scaledWidth, scaledHeight );
- }
+ if ( result ) {
+ p.drawImage( 9 + (220 - scaledWidth) / 2, 20 + (160 - scaledHeight) / 2, *currentFrame, 0, 0, scaledWidth, scaledHeight );
+ }
diff --git a/core/multimedia/opieplayer/wavplugin/Makefile.in b/core/multimedia/opieplayer/wavplugin/Makefile.in
index bcbe7f2..a46b925 100644
--- a/core/multimedia/opieplayer/wavplugin/Makefile.in
+++ b/core/multimedia/opieplayer/wavplugin/Makefile.in
@@ -102,3 +102,4 @@ REQUIRES=
wavplugin.o: wavplugin.cpp \
- wavplugin.h
+ wavplugin.h \
+ ../mediaplayerplugininterface.h
@@ -106,2 +107,3 @@ wavpluginimpl.o: wavpluginimpl.cpp \
wavplugin.h \
+ ../mediaplayerplugininterface.h \
wavpluginimpl.h