summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/audiodevice.cpp15
-rw-r--r--core/multimedia/opieplayer/libflash/libflashplugin.cpp4
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp6
3 files changed, 21 insertions, 4 deletions
diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp
index d01d2ba..6a38fc9 100644
--- a/core/multimedia/opieplayer/audiodevice.cpp
+++ b/core/multimedia/opieplayer/audiodevice.cpp
@@ -30,214 +30,223 @@
30 30
31 31
32#include <errno.h> 32#include <errno.h>
33 33
34#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) 34#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
35#include "qpe/qcopenvelope_qws.h" 35#include "qpe/qcopenvelope_qws.h"
36#endif 36#endif
37 37
38#if defined(Q_WS_X11) || defined(Q_WS_QWS) 38#if defined(Q_WS_X11) || defined(Q_WS_QWS)
39#include <fcntl.h> 39#include <fcntl.h>
40#include <sys/ioctl.h> 40#include <sys/ioctl.h>
41#include <sys/soundcard.h> 41#include <sys/soundcard.h>
42#include <sys/stat.h> 42#include <sys/stat.h>
43#include <sys/time.h> 43#include <sys/time.h>
44#include <sys/types.h> 44#include <sys/types.h>
45#include <unistd.h> 45#include <unistd.h>
46#endif 46#endif
47 47
48# if defined(QT_QWS_IPAQ) 48# if defined(QT_QWS_IPAQ)
49static const int sound_fragment_shift = 14; 49static const int sound_fragment_shift = 14;
50# else 50# else
51static const int sound_fragment_shift = 16; 51static const int sound_fragment_shift = 16;
52# endif 52# endif
53static const int sound_fragment_bytes = (1<<sound_fragment_shift); 53static const int sound_fragment_bytes = (1<<sound_fragment_shift);
54//#endif 54//#endif
55 55
56 56
57class AudioDevicePrivate { 57class AudioDevicePrivate {
58public: 58public:
59 int handle; 59 int handle;
60 unsigned int frequency; 60 unsigned int frequency;
61 unsigned int channels; 61 unsigned int channels;
62 unsigned int bytesPerSample; 62 unsigned int bytesPerSample;
63 unsigned int bufferSize; 63 unsigned int bufferSize;
64//#ifndef Q_OS_WIN32 64//#ifndef Q_OS_WIN32
65 bool can_GETOSPACE; 65 bool can_GETOSPACE;
66 char* unwrittenBuffer; 66 char* unwrittenBuffer;
67 unsigned int unwritten; 67 unsigned int unwritten;
68//#endif 68//#endif
69 69
70 static int dspFd; 70 static int dspFd;
71 static bool muted; 71 static bool muted;
72 static unsigned int leftVolume; 72 static unsigned int leftVolume;
73 static unsigned int rightVolume; 73 static unsigned int rightVolume;
74}; 74};
75 75
76 76
77#ifdef Q_WS_QWS 77#ifdef Q_WS_QWS
78// This is for keeping the device open in-between playing files when 78// This is for keeping the device open in-between playing files when
79// the device makes clicks and it starts to drive you insane! :) 79// the device makes clicks and it starts to drive you insane! :)
80// Best to have the device not open when not using it though 80// Best to have the device not open when not using it though
81//#define KEEP_DEVICE_OPEN 81//#define KEEP_DEVICE_OPEN
82#endif 82#endif
83 83
84 84
85int AudioDevicePrivate::dspFd = 0; 85int AudioDevicePrivate::dspFd = 0;
86bool AudioDevicePrivate::muted = FALSE; 86bool AudioDevicePrivate::muted = FALSE;
87unsigned int AudioDevicePrivate::leftVolume = 0; 87unsigned int AudioDevicePrivate::leftVolume = 0;
88unsigned int AudioDevicePrivate::rightVolume = 0; 88unsigned int AudioDevicePrivate::rightVolume = 0;
89 89
90 90
91void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume, bool &muted ) { 91void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume, bool &muted ) {
92 muted = AudioDevicePrivate::muted; 92 muted = AudioDevicePrivate::muted;
93 unsigned int volume; 93 unsigned int volume;
94#ifdef QT_QWS_DEVFS
95 int mixerHandle = open( "/dev/sound/mixer", O_RDWR );
96#else
94 int mixerHandle = open( "/dev/mixer", O_RDWR ); 97 int mixerHandle = open( "/dev/mixer", O_RDWR );
98#endif
95 if ( mixerHandle >= 0 ) { 99 if ( mixerHandle >= 0 ) {
96 if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1) 100 if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1)
97 perror("ioctl(\"MIXER_READ\")"); 101 perror("ioctl(\"MIXER_READ\")");
98 close( mixerHandle ); 102 close( mixerHandle );
99 } else 103 } else
100 perror("open(\"/dev/mixer\")"); 104 perror("open(\"/dev/mixer\")");
101 leftVolume = ((volume & 0x00FF) << 16) / 101; 105 leftVolume = ((volume & 0x00FF) << 16) / 101;
102 rightVolume = ((volume & 0xFF00) << 8) / 101; 106 rightVolume = ((volume & 0xFF00) << 8) / 101;
103} 107}
104 108
105 109
106void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, bool muted ) { 110void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, bool muted ) {
107 AudioDevicePrivate::muted = muted; 111 AudioDevicePrivate::muted = muted;
108 if ( muted ) { 112 if ( muted ) {
109 AudioDevicePrivate::leftVolume = leftVolume; 113 AudioDevicePrivate::leftVolume = leftVolume;
110 AudioDevicePrivate::rightVolume = rightVolume; 114 AudioDevicePrivate::rightVolume = rightVolume;
111 leftVolume = 0; 115 leftVolume = 0;
112 rightVolume = 0; 116 rightVolume = 0;
113 } else { 117 } else {
114 leftVolume = ( (int) leftVolume < 0 ) ? 0 : (( leftVolume > 0xFFFF ) ? 0xFFFF : leftVolume ); 118 leftVolume = ( (int) leftVolume < 0 ) ? 0 : (( leftVolume > 0xFFFF ) ? 0xFFFF : leftVolume );
115 rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume ); 119 rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume );
116 } 120 }
117 // Volume can be from 0 to 100 which is 101 distinct values 121 // Volume can be from 0 to 100 which is 101 distinct values
118 unsigned int rV = (rightVolume * 101) >> 16; 122 unsigned int rV = (rightVolume * 101) >> 16;
119 123
120# if 0 124# if 0
121 unsigned int lV = (leftVolume * 101) >> 16; 125 unsigned int lV = (leftVolume * 101) >> 16;
122 unsigned int volume = ((rV << 8) & 0xFF00) | (lV & 0x00FF); 126 unsigned int volume = ((rV << 8) & 0xFF00) | (lV & 0x00FF);
123 int mixerHandle = 0; 127 int mixerHandle = 0;
128#ifdef QT_QWS_DEVFS
129 if ( ( mixerHandle = open( "/dev/sound/mixer", O_RDWR ) ) >= 0 ) {
130#else
124 if ( ( mixerHandle = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 131 if ( ( mixerHandle = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
132#endif
125 if(ioctl( mixerHandle, MIXER_WRITE(0), &volume ) ==-1) 133 if(ioctl( mixerHandle, MIXER_WRITE(0), &volume ) ==-1)
126 perror("ioctl(\"MIXER_WRITE\")"); 134 perror("ioctl(\"MIXER_WRITE\")");
127 close( mixerHandle ); 135 close( mixerHandle );
128 } else 136 } else
129 perror("open(\"/dev/mixer\")"); 137 perror("open(\"/dev/mixer\")");
130 138
131# else 139# else
132 // This is the way this has to be done now I guess, doesn't allow for 140 // This is the way this has to be done now I guess, doesn't allow for
133 // independant right and left channel setting, or setting for different outputs 141 // independant right and left channel setting, or setting for different outputs
134 Config cfg("qpe"); // qtopia is "Sound" 142 Config cfg("qpe"); // qtopia is "Sound"
135 cfg.setGroup("Volume"); // qtopia is "Settings" 143 cfg.setGroup("Volume"); // qtopia is "Settings"
136 cfg.writeEntry("VolumePercent",(int)rV); //qtopia is Volume 144 cfg.writeEntry("VolumePercent",(int)rV); //qtopia is Volume
137# endif 145# endif
138 146
139//#endif 147//#endif
140// qDebug( "setting volume to: 0x%x", volume ); 148// qDebug( "setting volume to: 0x%x", volume );
141#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) 149#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
142 // Send notification that the volume has changed 150 // Send notification that the volume has changed
143 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted; 151 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted;
144#endif 152#endif
145} 153}
146 154
147 155
148 156
149AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { 157AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
150 // qDebug("creating new audio device"); 158 // qDebug("creating new audio device");
151// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; 159// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
152 d = new AudioDevicePrivate; 160 d = new AudioDevicePrivate;
153 d->frequency = f; 161 d->frequency = f;
154 d->channels = chs; 162 d->channels = chs;
155 d->bytesPerSample = bps; 163 d->bytesPerSample = bps;
156 // qDebug("%d",bps); 164 // qDebug("%d",bps);
157 int format=0; 165 int format=0;
158 if( bps == 8) format = AFMT_U8; 166 if( bps == 8) format = AFMT_U8;
159 else if( bps <= 0) format = AFMT_S16_LE; 167 else if( bps <= 0) format = AFMT_S16_LE;
160 else format = AFMT_S16_LE; 168 else format = AFMT_S16_LE;
161 // qDebug("AD- freq %d, channels %d, b/sample %d, bitrate %d",f,chs,bps,format); 169 // qDebug("AD- freq %d, channels %d, b/sample %d, bitrate %d",f,chs,bps,format);
162 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) ); 170 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) );
163 171
164 int fragments = 0x10000 * 8 + sound_fragment_shift; 172 int fragments = 0x10000 * 8 + sound_fragment_shift;
165 int capabilities = 0; 173 int capabilities = 0;
166 174
167 175
168#ifdef KEEP_DEVICE_OPEN 176#ifdef KEEP_DEVICE_OPEN
169 if ( AudioDevicePrivate::dspFd == 0 ) { 177 if ( AudioDevicePrivate::dspFd == 0 ) {
170#endif 178#endif
179#ifdef QT_QWS_DEVFS
180 if ( ( d->handle = ::open( "/dev/sound/dsp", O_WRONLY ) ) < 0 ) {
181#else
171 if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) { 182 if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) {
183#endif
172 184
173// perror("open(\"/dev/dsp\") sending to /dev/null instead");
174 perror("open(\"/dev/dsp\")"); 185 perror("open(\"/dev/dsp\")");
175 QString errorMsg=tr("Somethin's wrong with\nyour sound device.\nopen(\"/dev/dsp\")\n")+(QString)strerror(errno)+tr("\n\nClosing player now."); 186 QString errorMsg=tr("Somethin's wrong with\nyour sound device.\nopen(\"/dev/dsp\")\n")+(QString)strerror(errno)+tr("\n\nClosing player now.");
176 QMessageBox::critical(0, "Vmemo", errorMsg, tr("Abort")); 187 QMessageBox::critical(0, "Vmemo", errorMsg, tr("Abort"));
177 exit(-1); //harsh? 188 exit(-1); //harsh?
178// d->handle = ::open( "/dev/null", O_WRONLY );
179 // WTF?!?!
180 } 189 }
181#ifdef KEEP_DEVICE_OPEN 190#ifdef KEEP_DEVICE_OPEN
182 AudioDevicePrivate::dspFd = d->handle; 191 AudioDevicePrivate::dspFd = d->handle;
183 } else { 192 } else {
184 d->handle = AudioDevicePrivate::dspFd; 193 d->handle = AudioDevicePrivate::dspFd;
185 } 194 }
186#endif 195#endif
187 196
188 if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1) 197 if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1)
189 perror("ioctl(\"SNDCTL_DSP_GETCAPS\")"); 198 perror("ioctl(\"SNDCTL_DSP_GETCAPS\")");
190 if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1) 199 if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1)
191 perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")"); 200 perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")");
192 if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1) 201 if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1)
193 perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); 202 perror("ioctl(\"SNDCTL_DSP_SETFMT\")");
194 // qDebug("freq %d", d->frequency); 203 // qDebug("freq %d", d->frequency);
195 if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1) 204 if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1)
196 perror("ioctl(\"SNDCTL_DSP_SPEED\")"); 205 perror("ioctl(\"SNDCTL_DSP_SPEED\")");
197 // qDebug("channels %d",d->channels); 206 // qDebug("channels %d",d->channels);
198 if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) { 207 if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) {
199 d->channels = ( d->channels == 1 ) ? 2 : d->channels; 208 d->channels = ( d->channels == 1 ) ? 2 : d->channels;
200 if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1) 209 if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1)
201 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); 210 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")");
202 } 211 }
203// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; 212// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
204 213
205 d->bufferSize = sound_fragment_bytes; 214 d->bufferSize = sound_fragment_bytes;
206 d->unwrittenBuffer = new char[d->bufferSize]; 215 d->unwrittenBuffer = new char[d->bufferSize];
207 d->unwritten = 0; 216 d->unwritten = 0;
208 d->can_GETOSPACE = TRUE; // until we find otherwise 217 d->can_GETOSPACE = TRUE; // until we find otherwise
209 218
210 //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels ); 219 //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels );
211 //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency ); 220 //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency );
212 //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" ); 221 //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" );
213 //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" ); 222 //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" );
214 //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" ); 223 //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" );
215 //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" ); 224 //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" );
216 225
217} 226}
218 227
219 228
220AudioDevice::~AudioDevice() { 229AudioDevice::~AudioDevice() {
221 // qDebug("destryo audiodevice"); 230 // qDebug("destryo audiodevice");
222// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; 231// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
223 232
224# ifndef KEEP_DEVICE_OPEN 233# ifndef KEEP_DEVICE_OPEN
225 close( d->handle ); // Now it should be safe to shut the handle 234 close( d->handle ); // Now it should be safe to shut the handle
226# endif 235# endif
227 delete d->unwrittenBuffer; 236 delete d->unwrittenBuffer;
228 delete d; 237 delete d;
229// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; 238// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
230 239
231} 240}
232 241
233 242
234void AudioDevice::volumeChanged( bool muted ) 243void AudioDevice::volumeChanged( bool muted )
235{ 244{
236 AudioDevicePrivate::muted = muted; 245 AudioDevicePrivate::muted = muted;
237} 246}
238 247
239 248
240void AudioDevice::write( char *buffer, unsigned int length ) 249void AudioDevice::write( char *buffer, unsigned int length )
241{ 250{
242 int t = ::write( d->handle, buffer, length ); 251 int t = ::write( d->handle, buffer, length );
243 if ( t<0 ) t = 0; 252 if ( t<0 ) t = 0;
diff --git a/core/multimedia/opieplayer/libflash/libflashplugin.cpp b/core/multimedia/opieplayer/libflash/libflashplugin.cpp
index 538c695..78cf555 100644
--- a/core/multimedia/opieplayer/libflash/libflashplugin.cpp
+++ b/core/multimedia/opieplayer/libflash/libflashplugin.cpp
@@ -90,129 +90,133 @@ static int readFile(const char *filename, char **buffer, long *size)
90 fread(buf,length,1,in); 90 fread(buf,length,1,in);
91 fclose(in); 91 fclose(in);
92 92
93 *size = length; 93 *size = length;
94 *buffer = buf; 94 *buffer = buf;
95 95
96 return length; 96 return length;
97} 97}
98 98
99static void showUrl(char *url, char * /*target*/, void * /*client_data*/) { 99static void showUrl(char *url, char * /*target*/, void * /*client_data*/) {
100 printf("get url\n"); 100 printf("get url\n");
101 printf("GetURL : %s\n", url); 101 printf("GetURL : %s\n", url);
102} 102}
103 103
104static void getSwf(char *url, int level, void *client_data) { 104static void getSwf(char *url, int level, void *client_data) {
105 FlashHandle flashHandle = (FlashHandle) client_data; 105 FlashHandle flashHandle = (FlashHandle) client_data;
106 char *buffer; 106 char *buffer;
107 long size; 107 long size;
108 108
109 printf("get swf\n"); 109 printf("get swf\n");
110 110
111 printf("LoadMovie: %s @ %d\n", url, level); 111 printf("LoadMovie: %s @ %d\n", url, level);
112 if (readFile(url, &buffer, &size) > 0) { 112 if (readFile(url, &buffer, &size) > 0) {
113 FlashParse(flashHandle, level, buffer, size); 113 FlashParse(flashHandle, level, buffer, size);
114 } 114 }
115} 115}
116 116
117bool LibFlashPlugin::open( const QString& fileName ) { 117bool LibFlashPlugin::open( const QString& fileName ) {
118 118
119 printf("opening file\n"); 119 printf("opening file\n");
120 120
121 delete fd; 121 delete fd;
122 fd = new FlashDisplay; 122 fd = new FlashDisplay;
123 fd->pixels = new int[320*240*4]; 123 fd->pixels = new int[320*240*4];
124 fd->width = 200; 124 fd->width = 200;
125 fd->bpl = 320*2; 125 fd->bpl = 320*2;
126 fd->height = 300; 126 fd->height = 300;
127 fd->depth = 16; 127 fd->depth = 16;
128 fd->bpp = 2; 128 fd->bpp = 2;
129 fd->flash_refresh = 25; 129 fd->flash_refresh = 25;
130 fd->clip_x = 0; 130 fd->clip_x = 0;
131 fd->clip_y = 0; 131 fd->clip_y = 0;
132 fd->clip_width = 0; 132 fd->clip_width = 0;
133 fd->clip_height = 0; 133 fd->clip_height = 0;
134 134
135 char *buffer; 135 char *buffer;
136 long size; 136 long size;
137 int status; 137 int status;
138 struct FlashInfo fi; 138 struct FlashInfo fi;
139 139
140 if (readFile(fileName.latin1(), &buffer, &size) < 0) 140 if (readFile(fileName.latin1(), &buffer, &size) < 0)
141 exit(2); 141 exit(2);
142 142
143 if (!(file = FlashNew())) 143 if (!(file = FlashNew()))
144 exit(1); 144 exit(1);
145 145
146 do 146 do
147 status = FlashParse(file, 0, buffer, size); 147 status = FlashParse(file, 0, buffer, size);
148 while (status & FLASH_PARSE_NEED_DATA); 148 while (status & FLASH_PARSE_NEED_DATA);
149 149
150 free(buffer); 150 free(buffer);
151 FlashGetInfo(file, &fi); 151 FlashGetInfo(file, &fi);
152 //FlashSettings(flashHandle, PLAYER_LOOP); 152 //FlashSettings(flashHandle, PLAYER_LOOP);
153 FlashGraphicInit(file, fd); 153 FlashGraphicInit(file, fd);
154#ifdef QT_QWS_DEVFS
155 FlashSoundInit(file, "/dev/sound/dsp");
156#else
154 FlashSoundInit(file, "/dev/dsp"); 157 FlashSoundInit(file, "/dev/dsp");
158#endif
155 FlashSetGetUrlMethod(file, showUrl, 0); 159 FlashSetGetUrlMethod(file, showUrl, 0);
156 FlashSetGetSwfMethod(file, getSwf, (void*)file); 160 FlashSetGetSwfMethod(file, getSwf, (void*)file);
157 161
158 printf("opened file\n"); 162 printf("opened file\n");
159} 163}
160 164
161// If decoder doesn't support audio then return 0 here 165// If decoder doesn't support audio then return 0 here
162bool LibFlashPlugin::audioSetSample( long sample, int stream ) { return TRUE; } 166bool LibFlashPlugin::audioSetSample( long sample, int stream ) { return TRUE; }
163long LibFlashPlugin::audioGetSample( int stream ) { return 0; } 167long LibFlashPlugin::audioGetSample( int stream ) { return 0; }
164//bool LibFlashPlugin::audioReadMonoSamples( short *output, long samples, long& samplesRead, int stream ) { return TRUE; } 168//bool LibFlashPlugin::audioReadMonoSamples( short *output, long samples, long& samplesRead, int stream ) { return TRUE; }
165//bool LibFlashPlugin::audioReadStereoSamples( short *output, long samples, long& samplesRead, int stream ) { return FALSE; } 169//bool LibFlashPlugin::audioReadStereoSamples( short *output, long samples, long& samplesRead, int stream ) { return FALSE; }
166bool LibFlashPlugin::audioReadSamples( short *output, int channels, long samples, long& samplesRead, int stream ) { return FALSE; } 170bool LibFlashPlugin::audioReadSamples( short *output, int channels, long samples, long& samplesRead, int stream ) { return FALSE; }
167//bool LibFlashPlugin::audioReadSamples( short *output, int channel, long samples, int stream ) { return TRUE; } 171//bool LibFlashPlugin::audioReadSamples( short *output, int channel, long samples, int stream ) { return TRUE; }
168//bool LibFlashPlugin::audioReReadSamples( short *output, int channel, long samples, int stream ) { return TRUE; } 172//bool LibFlashPlugin::audioReReadSamples( short *output, int channel, long samples, int stream ) { return TRUE; }
169 173
170// If decoder doesn't support video then return 0 here 174// If decoder doesn't support video then return 0 here
171int LibFlashPlugin::videoStreams() { return 1; } 175int LibFlashPlugin::videoStreams() { return 1; }
172int LibFlashPlugin::videoWidth( int stream ) { return 300; } 176int LibFlashPlugin::videoWidth( int stream ) { return 300; }
173int LibFlashPlugin::videoHeight( int stream ) { return 200; } 177int LibFlashPlugin::videoHeight( int stream ) { return 200; }
174double LibFlashPlugin::videoFrameRate( int stream ) { return 25.0; } 178double LibFlashPlugin::videoFrameRate( int stream ) { return 25.0; }
175int LibFlashPlugin::videoFrames( int stream ) { return 1000000; } 179int LibFlashPlugin::videoFrames( int stream ) { return 1000000; }
176bool LibFlashPlugin::videoSetFrame( long frame, int stream ) { return TRUE; } 180bool LibFlashPlugin::videoSetFrame( long frame, int stream ) { return TRUE; }
177long LibFlashPlugin::videoGetFrame( int stream ) { return 0; } 181long LibFlashPlugin::videoGetFrame( int stream ) { return 0; }
178bool LibFlashPlugin::videoReadFrame( unsigned char **output_rows, int in_x, int in_y, int in_w, int in_h, ColorFormat color_model, int stream ) { return TRUE; } 182bool LibFlashPlugin::videoReadFrame( unsigned char **output_rows, int in_x, int in_y, int in_w, int in_h, ColorFormat color_model, int stream ) { return TRUE; }
179#include <time.h> 183#include <time.h>
180bool LibFlashPlugin::videoReadScaledFrame( unsigned char **output_rows, int in_x, int in_y, int in_w, int in_h, int out_w, int out_h, ColorFormat color_model, int stream ) { 184bool LibFlashPlugin::videoReadScaledFrame( unsigned char **output_rows, int in_x, int in_y, int in_w, int in_h, int out_w, int out_h, ColorFormat color_model, int stream ) {
181 struct timeval wd; 185 struct timeval wd;
182 FlashEvent fe; 186 FlashEvent fe;
183 187
184/* 188/*
185 delete fd; 189 delete fd;
186 fd = new FlashDisplay; 190 fd = new FlashDisplay;
187 fd->pixels = output_rows[0]; 191 fd->pixels = output_rows[0];
188 fd->width = 300; // out_w; 192 fd->width = 300; // out_w;
189 fd->bpl = 640; // out_w*2; 193 fd->bpl = 640; // out_w*2;
190 fd->height = 200;//out_h; 194 fd->height = 200;//out_h;
191 fd->depth = 16; 195 fd->depth = 16;
192 fd->bpp = 2; 196 fd->bpp = 2;
193 fd->flash_refresh = 50; 197 fd->flash_refresh = 50;
194 fd->clip_x = 0;//in_x; 198 fd->clip_x = 0;//in_x;
195 fd->clip_y = 0;//in_y; 199 fd->clip_y = 0;//in_y;
196 fd->clip_width = 300;//in_w; 200 fd->clip_width = 300;//in_w;
197 fd->clip_height = 200;//in_h; 201 fd->clip_height = 200;//in_h;
198 FlashGraphicInit(file, fd); 202 FlashGraphicInit(file, fd);
199*/ 203*/
200 204
201 long cmd = FLASH_WAKEUP; 205 long cmd = FLASH_WAKEUP;
202 FlashExec(file, cmd, 0, &wd); 206 FlashExec(file, cmd, 0, &wd);
203 207
204 fe.type = FeRefresh; 208 fe.type = FeRefresh;
205 cmd = FLASH_EVENT; 209 cmd = FLASH_EVENT;
206 FlashExec(file, cmd, &fe, &wd); 210 FlashExec(file, cmd, &fe, &wd);
207/* 211/*
208 for (int i = 0; i < out_h; i++) 212 for (int i = 0; i < out_h; i++)
209 memcpy( output_rows[i], (char*)fd->pixels + i*fd->bpl, QMIN( fd->width * fd->bpp, out_w * fd->bpp ) ); 213 memcpy( output_rows[i], (char*)fd->pixels + i*fd->bpl, QMIN( fd->width * fd->bpp, out_w * fd->bpp ) );
210 */ 214 */
211 memcpy( output_rows[0], (char*)fd->pixels, out_w * out_h * 2 ); 215 memcpy( output_rows[0], (char*)fd->pixels, out_w * out_h * 2 );
212} 216}
213 217
214bool LibFlashPlugin::videoReadYUVFrame( char *y_output, char *u_output, char *v_output, int in_x, int in_y, int in_w, int in_h, int stream ) { return TRUE; } 218bool LibFlashPlugin::videoReadYUVFrame( char *y_output, char *u_output, char *v_output, int in_x, int in_y, int in_w, int in_h, int stream ) { return TRUE; }
215 219
216// Profiling 220// Profiling
217double LibFlashPlugin::getTime() { return 0.0; } 221double LibFlashPlugin::getTime() { return 0.0; }
218 222
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index efea385..b393230 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -1311,130 +1311,134 @@ void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
1311 break; 1311 break;
1312 case Key_Q: //add to playlist 1312 case Key_Q: //add to playlist
1313 addSelected(); 1313 addSelected();
1314 break; 1314 break;
1315 case Key_R: //remove from playlist 1315 case Key_R: //remove from playlist
1316 removeSelected(); 1316 removeSelected();
1317 break; 1317 break;
1318// case Key_P: //play 1318// case Key_P: //play
1319// qDebug("Play"); 1319// qDebug("Play");
1320// playSelected(); 1320// playSelected();
1321// break; 1321// break;
1322 case Key_Space: 1322 case Key_Space:
1323// playSelected(); puh 1323// playSelected(); puh
1324 break; 1324 break;
1325 case Key_1: 1325 case Key_1:
1326 tabWidget->setCurrentPage(0); 1326 tabWidget->setCurrentPage(0);
1327 break; 1327 break;
1328 case Key_2: 1328 case Key_2:
1329 tabWidget->setCurrentPage(1); 1329 tabWidget->setCurrentPage(1);
1330 break; 1330 break;
1331 case Key_3: 1331 case Key_3:
1332 tabWidget->setCurrentPage(2); 1332 tabWidget->setCurrentPage(2);
1333 break; 1333 break;
1334 case Key_4: 1334 case Key_4:
1335 tabWidget->setCurrentPage(3); 1335 tabWidget->setCurrentPage(3);
1336 break; 1336 break;
1337 case Key_Down: 1337 case Key_Down:
1338 if ( !d->selectedFiles->next() ) 1338 if ( !d->selectedFiles->next() )
1339 d->selectedFiles->first(); 1339 d->selectedFiles->first();
1340 1340
1341 break; 1341 break;
1342 case Key_Up: 1342 case Key_Up:
1343 if ( !d->selectedFiles->prev() ) 1343 if ( !d->selectedFiles->prev() )
1344 // d->selectedFiles->last(); 1344 // d->selectedFiles->last();
1345 1345
1346 break; 1346 break;
1347 1347
1348 } 1348 }
1349} 1349}
1350 1350
1351void PlayListWidget::keyPressEvent( QKeyEvent *) 1351void PlayListWidget::keyPressEvent( QKeyEvent *)
1352{ 1352{
1353// qDebug("Key press"); 1353// qDebug("Key press");
1354// switch ( e->key() ) { 1354// switch ( e->key() ) {
1355// ////////////////////////////// Zaurus keys 1355// ////////////////////////////// Zaurus keys
1356// case Key_A: //add to playlist 1356// case Key_A: //add to playlist
1357// qDebug("Add"); 1357// qDebug("Add");
1358// addSelected(); 1358// addSelected();
1359// break; 1359// break;
1360// case Key_R: //remove from playlist 1360// case Key_R: //remove from playlist
1361// removeSelected(); 1361// removeSelected();
1362// break; 1362// break;
1363// case Key_P: //play 1363// case Key_P: //play
1364// qDebug("Play"); 1364// qDebug("Play");
1365// playSelected(); 1365// playSelected();
1366// break; 1366// break;
1367// case Key_Space: 1367// case Key_Space:
1368// qDebug("Play"); 1368// qDebug("Play");
1369// playSelected(); 1369// playSelected();
1370// break; 1370// break;
1371// } 1371// }
1372} 1372}
1373 1373
1374void PlayListWidget::doBlank() { 1374void PlayListWidget::doBlank() {
1375 // qDebug("do blanking"); 1375 // TODO: why do we blank this way, why don't we use ODevice or ScreenSaver?
1376#ifdef QT_QWS_DEVFS
1377 fd=open("/dev/fb/0",O_RDWR);
1378#else
1376 fd=open("/dev/fb0",O_RDWR); 1379 fd=open("/dev/fb0",O_RDWR);
1380#endif
1377 if (fd != -1) { 1381 if (fd != -1) {
1378 ioctl(fd,FBIOBLANK,1); 1382 ioctl(fd,FBIOBLANK,1);
1379 // close(fd); 1383 // close(fd);
1380 } 1384 }
1381} 1385}
1382 1386
1383void PlayListWidget::doUnblank() { 1387void PlayListWidget::doUnblank() {
1384 // this crashes opieplayer with a segfault 1388 // this crashes opieplayer with a segfault
1385 // int fd; 1389 // int fd;
1386 // fd=open("/dev/fb0",O_RDWR); 1390 // fd=open("/dev/fb0",O_RDWR);
1387 // qDebug("do unblanking"); 1391 // qDebug("do unblanking");
1388 if (fd != -1) { 1392 if (fd != -1) {
1389 ioctl(fd,FBIOBLANK,0); 1393 ioctl(fd,FBIOBLANK,0);
1390 close(fd); 1394 close(fd);
1391 } 1395 }
1392 QCopEnvelope h("QPE/System", "setBacklight(int)"); 1396 QCopEnvelope h("QPE/System", "setBacklight(int)");
1393 h <<-3;// v[1]; // -3 Force on 1397 h <<-3;// v[1]; // -3 Force on
1394} 1398}
1395 1399
1396void PlayListWidget::populateSkinsMenu() { 1400void PlayListWidget::populateSkinsMenu() {
1397 int item = 0; 1401 int item = 0;
1398 defaultSkinIndex = 0; 1402 defaultSkinIndex = 0;
1399 QString skinName; 1403 QString skinName;
1400 Config cfg( "OpiePlayer" ); 1404 Config cfg( "OpiePlayer" );
1401 cfg.setGroup("Options" ); 1405 cfg.setGroup("Options" );
1402 QString skin = cfg.readEntry( "Skin", "default" ); 1406 QString skin = cfg.readEntry( "Skin", "default" );
1403 1407
1404 QDir skinsDir( QPEApplication::qpeDir() + "/pics/opieplayer2/skins" ); 1408 QDir skinsDir( QPEApplication::qpeDir() + "/pics/opieplayer2/skins" );
1405 skinsDir.setFilter( QDir::Dirs ); 1409 skinsDir.setFilter( QDir::Dirs );
1406 skinsDir.setSorting(QDir::Name ); 1410 skinsDir.setSorting(QDir::Name );
1407 const QFileInfoList *skinslist = skinsDir.entryInfoList(); 1411 const QFileInfoList *skinslist = skinsDir.entryInfoList();
1408 QFileInfoListIterator it( *skinslist ); 1412 QFileInfoListIterator it( *skinslist );
1409 QFileInfo *fi; 1413 QFileInfo *fi;
1410 while ( ( fi = it.current() ) ) { 1414 while ( ( fi = it.current() ) ) {
1411 skinName = fi->fileName(); 1415 skinName = fi->fileName();
1412 // qDebug( fi->fileName() ); 1416 // qDebug( fi->fileName() );
1413 if( skinName != "." && skinName != ".." && skinName !="CVS" ) { 1417 if( skinName != "." && skinName != ".." && skinName !="CVS" ) {
1414 item = skinsMenu->insertItem( fi->fileName() ) ; 1418 item = skinsMenu->insertItem( fi->fileName() ) ;
1415 } 1419 }
1416 if( skinName == "default" ) { 1420 if( skinName == "default" ) {
1417 defaultSkinIndex = item; 1421 defaultSkinIndex = item;
1418 } 1422 }
1419 if( skinName == skin ) { 1423 if( skinName == skin ) {
1420 skinsMenu->setItemChecked( item, TRUE ); 1424 skinsMenu->setItemChecked( item, TRUE );
1421 } 1425 }
1422 ++it; 1426 ++it;
1423 } 1427 }
1424} 1428}
1425 1429
1426void PlayListWidget::skinsMenuActivated( int item ) { 1430void PlayListWidget::skinsMenuActivated( int item ) {
1427 for( int i = defaultSkinIndex; i > defaultSkinIndex - skinsMenu->count(); i-- ) { 1431 for( int i = defaultSkinIndex; i > defaultSkinIndex - skinsMenu->count(); i-- ) {
1428 skinsMenu->setItemChecked( i, FALSE ); 1432 skinsMenu->setItemChecked( i, FALSE );
1429 } 1433 }
1430 skinsMenu->setItemChecked( item, TRUE ); 1434 skinsMenu->setItemChecked( item, TRUE );
1431 1435
1432 Config cfg( "OpiePlayer" ); 1436 Config cfg( "OpiePlayer" );
1433 cfg.setGroup("Options"); 1437 cfg.setGroup("Options");
1434 cfg.writeEntry("Skin", skinsMenu->text( item ) ); 1438 cfg.writeEntry("Skin", skinsMenu->text( item ) );
1435} 1439}
1436 1440
1437void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) { 1441void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) {
1438 // qDebug("qcop message "+msg ); 1442 // qDebug("qcop message "+msg );
1439 QDataStream stream ( data, IO_ReadOnly ); 1443 QDataStream stream ( data, IO_ReadOnly );
1440 if ( msg == "play()" ) { //plays current selection 1444 if ( msg == "play()" ) { //plays current selection