-rw-r--r-- | core/multimedia/opieplayer/audiodevice.cpp | 15 | ||||
-rw-r--r-- | core/multimedia/opieplayer/libflash/libflashplugin.cpp | 4 | ||||
-rw-r--r-- | core/multimedia/opieplayer/playlistwidget.cpp | 6 |
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) |
49 | static const int sound_fragment_shift = 14; | 49 | static const int sound_fragment_shift = 14; |
50 | # else | 50 | # else |
51 | static const int sound_fragment_shift = 16; | 51 | static const int sound_fragment_shift = 16; |
52 | # endif | 52 | # endif |
53 | static const int sound_fragment_bytes = (1<<sound_fragment_shift); | 53 | static const int sound_fragment_bytes = (1<<sound_fragment_shift); |
54 | //#endif | 54 | //#endif |
55 | 55 | ||
56 | 56 | ||
57 | class AudioDevicePrivate { | 57 | class AudioDevicePrivate { |
58 | public: | 58 | public: |
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 | ||
85 | int AudioDevicePrivate::dspFd = 0; | 85 | int AudioDevicePrivate::dspFd = 0; |
86 | bool AudioDevicePrivate::muted = FALSE; | 86 | bool AudioDevicePrivate::muted = FALSE; |
87 | unsigned int AudioDevicePrivate::leftVolume = 0; | 87 | unsigned int AudioDevicePrivate::leftVolume = 0; |
88 | unsigned int AudioDevicePrivate::rightVolume = 0; | 88 | unsigned int AudioDevicePrivate::rightVolume = 0; |
89 | 89 | ||
90 | 90 | ||
91 | void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume, bool &muted ) { | 91 | void 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 | ||
106 | void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, bool muted ) { | 110 | void 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 | ||
149 | AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { | 157 | AudioDevice::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 | ||
220 | AudioDevice::~AudioDevice() { | 229 | AudioDevice::~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 | ||
234 | void AudioDevice::volumeChanged( bool muted ) | 243 | void AudioDevice::volumeChanged( bool muted ) |
235 | { | 244 | { |
236 | AudioDevicePrivate::muted = muted; | 245 | AudioDevicePrivate::muted = muted; |
237 | } | 246 | } |
238 | 247 | ||
239 | 248 | ||
240 | void AudioDevice::write( char *buffer, unsigned int length ) | 249 | void 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 | ||
99 | static void showUrl(char *url, char * /*target*/, void * /*client_data*/) { | 99 | static 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 | ||
104 | static void getSwf(char *url, int level, void *client_data) { | 104 | static 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 | ||
117 | bool LibFlashPlugin::open( const QString& fileName ) { | 117 | bool 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 |
162 | bool LibFlashPlugin::audioSetSample( long sample, int stream ) { return TRUE; } | 166 | bool LibFlashPlugin::audioSetSample( long sample, int stream ) { return TRUE; } |
163 | long LibFlashPlugin::audioGetSample( int stream ) { return 0; } | 167 | long 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; } |
166 | bool LibFlashPlugin::audioReadSamples( short *output, int channels, long samples, long& samplesRead, int stream ) { return FALSE; } | 170 | bool 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 |
171 | int LibFlashPlugin::videoStreams() { return 1; } | 175 | int LibFlashPlugin::videoStreams() { return 1; } |
172 | int LibFlashPlugin::videoWidth( int stream ) { return 300; } | 176 | int LibFlashPlugin::videoWidth( int stream ) { return 300; } |
173 | int LibFlashPlugin::videoHeight( int stream ) { return 200; } | 177 | int LibFlashPlugin::videoHeight( int stream ) { return 200; } |
174 | double LibFlashPlugin::videoFrameRate( int stream ) { return 25.0; } | 178 | double LibFlashPlugin::videoFrameRate( int stream ) { return 25.0; } |
175 | int LibFlashPlugin::videoFrames( int stream ) { return 1000000; } | 179 | int LibFlashPlugin::videoFrames( int stream ) { return 1000000; } |
176 | bool LibFlashPlugin::videoSetFrame( long frame, int stream ) { return TRUE; } | 180 | bool LibFlashPlugin::videoSetFrame( long frame, int stream ) { return TRUE; } |
177 | long LibFlashPlugin::videoGetFrame( int stream ) { return 0; } | 181 | long LibFlashPlugin::videoGetFrame( int stream ) { return 0; } |
178 | bool 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; } | 182 | bool 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> |
180 | bool 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 ) { | 184 | bool 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 | ||
214 | bool 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; } | 218 | bool 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 |
217 | double LibFlashPlugin::getTime() { return 0.0; } | 221 | double 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 | ||
1351 | void PlayListWidget::keyPressEvent( QKeyEvent *) | 1351 | void 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 | ||
1374 | void PlayListWidget::doBlank() { | 1374 | void 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 | ||
1383 | void PlayListWidget::doUnblank() { | 1387 | void 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 | ||
1396 | void PlayListWidget::populateSkinsMenu() { | 1400 | void 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 | ||
1426 | void PlayListWidget::skinsMenuActivated( int item ) { | 1430 | void 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 | ||
1437 | void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) { | 1441 | void 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 |