summaryrefslogtreecommitdiff
authorbipolar <bipolar>2002-03-05 00:42:40 (UTC)
committer bipolar <bipolar>2002-03-05 00:42:40 (UTC)
commitdbc93b5de1b20489a05ce61e42874bf944165223 (patch) (unidiff)
tree97faa0273f33a873d2eaa266a2f1e2ad2c2b3a96
parent25be6fb98284dfa0c549d30db5b64c09798ee36d (diff)
downloadopie-dbc93b5de1b20489a05ce61e42874bf944165223.zip
opie-dbc93b5de1b20489a05ce61e42874bf944165223.tar.gz
opie-dbc93b5de1b20489a05ce61e42874bf944165223.tar.bz2
committed by ljp: fixed a problem opening files from docs tab being added to playlist.
fixed (hopefully) problem with player redraw when playing wavfiles
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp13
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.cpp2
2 files changed, 6 insertions, 9 deletions
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index 1a0c7ca..a6202bc 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -389,74 +389,71 @@ void PlayListWidget::clearList() {
389void PlayListWidget::addAllToList() { 389void PlayListWidget::addAllToList() {
390 DocLnkSet files; 390 DocLnkSet files;
391 Global::findDocuments(&files, "video/*;audio/*"); 391 Global::findDocuments(&files, "video/*;audio/*");
392 QListIterator<DocLnk> dit( files.children() ); 392 QListIterator<DocLnk> dit( files.children() );
393 for ( ; dit.current(); ++dit ) 393 for ( ; dit.current(); ++dit )
394 d->selectedFiles->addToSelection( **dit ); 394 d->selectedFiles->addToSelection( **dit );
395} 395}
396 396
397 397
398void PlayListWidget::addAllMusicToList() { 398void PlayListWidget::addAllMusicToList() {
399 DocLnkSet files; 399 DocLnkSet files;
400 Global::findDocuments(&files, "audio/*"); 400 Global::findDocuments(&files, "audio/*");
401 QListIterator<DocLnk> dit( files.children() ); 401 QListIterator<DocLnk> dit( files.children() );
402 for ( ; dit.current(); ++dit ) 402 for ( ; dit.current(); ++dit )
403 d->selectedFiles->addToSelection( **dit ); 403 d->selectedFiles->addToSelection( **dit );
404} 404}
405 405
406 406
407void PlayListWidget::addAllVideoToList() { 407void PlayListWidget::addAllVideoToList() {
408 DocLnkSet files; 408 DocLnkSet files;
409 Global::findDocuments(&files, "video/*"); 409 Global::findDocuments(&files, "video/*");
410 QListIterator<DocLnk> dit( files.children() ); 410 QListIterator<DocLnk> dit( files.children() );
411 for ( ; dit.current(); ++dit ) 411 for ( ; dit.current(); ++dit )
412 d->selectedFiles->addToSelection( **dit ); 412 d->selectedFiles->addToSelection( **dit );
413} 413}
414 414
415 415
416void PlayListWidget::setDocument(const QString& fileref) { 416void PlayListWidget::setDocument(const QString& fileref) {
417 if ( fileref.isNull() ) { 417 if ( fileref.isNull() ) {
418 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) ); 418 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) );
419 return; 419 return;
420 } 420 }
421 if ( mediaPlayerState->playlist() ) 421 addToSelection( DocLnk( fileref ) );
422 addToSelection( DocLnk( fileref ) ); 422 d->setDocumentUsed = TRUE;
423 else { 423 qApp->processEvents();
424 d->setDocumentUsed = TRUE;
425 if ( d->current )
426 delete d->current;
427 d->current = new DocLnk( fileref );
428 }
429 mediaPlayerState->setPlaying( FALSE ); 424 mediaPlayerState->setPlaying( FALSE );
425 qApp->processEvents();
430 mediaPlayerState->setPlaying( TRUE ); 426 mediaPlayerState->setPlaying( TRUE );
427 d->selectedFiles->removeSelected( );
431} 428}
432 429
433 430
434void PlayListWidget::setActiveWindow() { 431void PlayListWidget::setActiveWindow() {
435 // When we get raised we need to ensure that it switches views 432 // When we get raised we need to ensure that it switches views
436 char origView = mediaPlayerState->view(); 433 char origView = mediaPlayerState->view();
437 mediaPlayerState->setView( 'l' ); // invalidate 434 mediaPlayerState->setView( 'l' ); // invalidate
438 mediaPlayerState->setView( origView ); // now switch back 435 mediaPlayerState->setView( origView ); // now switch back
439} 436}
440 437
441 438
442void PlayListWidget::useSelectedDocument() { 439void PlayListWidget::useSelectedDocument() {
443 d->setDocumentUsed = FALSE; 440 d->setDocumentUsed = FALSE;
444} 441}
445 442
446 443
447const DocLnk *PlayListWidget::current() { 444const DocLnk *PlayListWidget::current() {
448 445
449// qDebug("in Playlist widget ::current"); 446// qDebug("in Playlist widget ::current");
450 if ( mediaPlayerState->playlist() ) { 447 if ( mediaPlayerState->playlist() ) {
451 return d->selectedFiles->current(); 448 return d->selectedFiles->current();
452 } 449 }
453 else if ( d->setDocumentUsed && d->current ) { 450 else if ( d->setDocumentUsed && d->current ) {
454 return d->current; 451 return d->current;
455 } else { 452 } else {
456 return d->files->selected(); 453 return d->files->selected();
457 } 454 }
458} 455}
459 456
460 457
461bool PlayListWidget::prev() { 458bool PlayListWidget::prev() {
462 if ( mediaPlayerState->playlist() ) { 459 if ( mediaPlayerState->playlist() ) {
diff --git a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
index 4a0da16..4e82900 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
@@ -45,65 +45,64 @@ struct ChunkData {
45 Q_INT32 avgBytesPerSec; 45 Q_INT32 avgBytesPerSec;
46 Q_INT16 blockAlign; 46 Q_INT16 blockAlign;
47 Q_INT16 wBitsPerSample; 47 Q_INT16 wBitsPerSample;
48}; 48};
49 49
50 50
51const int sound_buffer_size = 512; // 4096; // you got to be kidding right? 51const int sound_buffer_size = 512; // 4096; // you got to be kidding right?
52 52
53 53
54class WavPluginData { 54class WavPluginData {
55public: 55public:
56 QFile *input; 56 QFile *input;
57 57
58 int wavedata_remaining; 58 int wavedata_remaining;
59 ChunkData chunkdata; 59 ChunkData chunkdata;
60 RiffChunk chunk; 60 RiffChunk chunk;
61 uchar data[sound_buffer_size+32]; // +32 to handle badly aligned input data 61 uchar data[sound_buffer_size+32]; // +32 to handle badly aligned input data
62 int out,max; 62 int out,max;
63 int samples_due; 63 int samples_due;
64 int samples; 64 int samples;
65 65
66 WavPluginData() { 66 WavPluginData() {
67 max = out = sound_buffer_size; 67 max = out = sound_buffer_size;
68 wavedata_remaining = 0; 68 wavedata_remaining = 0;
69 samples_due = 0; 69 samples_due = 0;
70 samples = -1; 70 samples = -1;
71 } 71 }
72 72
73 // expands out samples to the frequency of 44kHz //not any more 73 // expands out samples to the frequency of 44kHz //not any more
74 bool add( short *output, long count, long& done, bool stereo ) 74 bool add( short *output, long count, long& done, bool stereo )
75 { 75 {
76 done = 0; 76 done = 0;
77 qApp->processEvents();
78 77
79 if ( input == 0 ) { 78 if ( input == 0 ) {
80 qDebug("no input"); 79 qDebug("no input");
81 return FALSE; 80 return FALSE;
82 } 81 }
83 82
84 while ( count ) { 83 while ( count ) {
85 int l,r; 84 int l,r;
86 if ( getSample(l, r) == FALSE ) { 85 if ( getSample(l, r) == FALSE ) {
87 qDebug("didn't get sample"); 86 qDebug("didn't get sample");
88 return FALSE; 87 return FALSE;
89 } 88 }
90 samples_due += chunkdata.samplesPerSec; 89 samples_due += chunkdata.samplesPerSec;
91 printf("samples due %d\r", samples_due); 90 printf("samples due %d\r", samples_due);
92 fflush(stdout); 91 fflush(stdout);
93 while ( count && (samples_due > chunkdata.samplesPerSec) ) { 92 while ( count && (samples_due > chunkdata.samplesPerSec) ) {
94 *output++ = l; 93 *output++ = l;
95 if ( stereo ) 94 if ( stereo )
96 *output++ = r; 95 *output++ = r;
97 samples_due -= chunkdata.samplesPerSec; 96 samples_due -= chunkdata.samplesPerSec;
98 count--; 97 count--;
99 done++; 98 done++;
100 } 99 }
101 } 100 }
102 return TRUE; 101 return TRUE;
103 } 102 }
104 103
105 bool initialise() { 104 bool initialise() {
106 if ( input == 0 ) 105 if ( input == 0 )
107 return FALSE; 106 return FALSE;
108 107
109 wavedata_remaining = -1; 108 wavedata_remaining = -1;
@@ -213,64 +212,65 @@ bool WavPlugin::isFileSupported( const QString& path ) {
213 char *ext = strrchr( path.latin1(), '.' ); 212 char *ext = strrchr( path.latin1(), '.' );
214 213
215 // Test file extension 214 // Test file extension
216 if ( ext ) { 215 if ( ext ) {
217 if ( strncasecmp(ext, ".raw", 4) == 0 ) 216 if ( strncasecmp(ext, ".raw", 4) == 0 )
218 return TRUE; 217 return TRUE;
219 if ( strncasecmp(ext, ".wav", 4) == 0 ) 218 if ( strncasecmp(ext, ".wav", 4) == 0 )
220 return TRUE; 219 return TRUE;
221 if ( strncasecmp(ext, ".wave", 4) == 0 ) 220 if ( strncasecmp(ext, ".wave", 4) == 0 )
222 return TRUE; 221 return TRUE;
223 } 222 }
224 223
225 return FALSE; 224 return FALSE;
226} 225}
227 226
228 227
229bool WavPlugin::open( const QString& path ) { 228bool WavPlugin::open( const QString& path ) {
230// qDebug( "WavPlugin::open" ); 229// qDebug( "WavPlugin::open" );
231 230
232 d->max = d->out = sound_buffer_size; 231 d->max = d->out = sound_buffer_size;
233 d->wavedata_remaining = 0; 232 d->wavedata_remaining = 0;
234 d->samples_due = 0; 233 d->samples_due = 0;
235 234
236 d->input = new QFile( path ); 235 d->input = new QFile( path );
237 if ( d->input->open(IO_ReadOnly) == FALSE ) { 236 if ( d->input->open(IO_ReadOnly) == FALSE ) {
238 qDebug("couldn't open file"); 237 qDebug("couldn't open file");
239 delete d->input; 238 delete d->input;
240 d->input = 0; 239 d->input = 0;
241 return FALSE; 240 return FALSE;
242 } 241 }
243 242
244 d->initialise(); 243 d->initialise();
244 qApp->processEvents();
245 245
246 return TRUE; 246 return TRUE;
247} 247}
248 248
249 249
250bool WavPlugin::close() { 250bool WavPlugin::close() {
251// qDebug( "WavPlugin::close" ); 251// qDebug( "WavPlugin::close" );
252 252
253 d->input->close(); 253 d->input->close();
254 delete d->input; 254 delete d->input;
255 d->input = 0; 255 d->input = 0;
256 return TRUE; 256 return TRUE;
257} 257}
258 258
259 259
260bool WavPlugin::isOpen() { 260bool WavPlugin::isOpen() {
261// qDebug( "WavPlugin::isOpen" ); 261// qDebug( "WavPlugin::isOpen" );
262 return ( d->input != 0 ); 262 return ( d->input != 0 );
263} 263}
264 264
265 265
266int WavPlugin::audioStreams() { 266int WavPlugin::audioStreams() {
267// qDebug( "WavPlugin::audioStreams" ); 267// qDebug( "WavPlugin::audioStreams" );
268 return 1; 268 return 1;
269} 269}
270 270
271 271
272int WavPlugin::audioChannels( int ) { 272int WavPlugin::audioChannels( int ) {
273// qDebug( "WavPlugin::audioChannels" ); 273// qDebug( "WavPlugin::audioChannels" );
274 return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples 274 return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples
275} 275}
276 276