summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-05-05 18:09:38 (UTC)
committer llornkcor <llornkcor>2002-05-05 18:09:38 (UTC)
commit4cd02e41953be5b271c877197cf9c12ad4785bef (patch) (unidiff)
treef530836dc741188e869c64d29c73df0142b01f11
parenta68eb5375bd8dc5f9cb3ea9b1785d923a4412edc (diff)
downloadopie-4cd02e41953be5b271c877197cf9c12ad4785bef.zip
opie-4cd02e41953be5b271c877197cf9c12ad4785bef.tar.gz
opie-4cd02e41953be5b271c877197cf9c12ad4785bef.tar.bz2
bug fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/loopcontrol.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp
index faa8e56..310d512 100644
--- a/core/multimedia/opieplayer/loopcontrol.cpp
+++ b/core/multimedia/opieplayer/loopcontrol.cpp
@@ -270,208 +270,208 @@ void LoopControl::killTimers() {
270 audioMutex->lock(); 270 audioMutex->lock();
271 271
272 if ( hasVideoChannel ) 272 if ( hasVideoChannel )
273 killTimer( videoId ); 273 killTimer( videoId );
274 killTimer( sliderId ); 274 killTimer( sliderId );
275 threadOkToGo = FALSE; 275 threadOkToGo = FALSE;
276 276
277 audioMutex->unlock(); 277 audioMutex->unlock();
278} 278}
279 279
280 280
281void LoopControl::startTimers() { 281void LoopControl::startTimers() {
282 282
283 audioMutex->lock(); 283 audioMutex->lock();
284 284
285 moreVideo = FALSE; 285 moreVideo = FALSE;
286 moreAudio = FALSE; 286 moreAudio = FALSE;
287 287
288 if ( hasVideoChannel ) { 288 if ( hasVideoChannel ) {
289 moreVideo = TRUE; 289 moreVideo = TRUE;
290 int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value 290 int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value
291 videoId = startTimer( mSecsBetweenFrames ); 291 videoId = startTimer( mSecsBetweenFrames );
292 } 292 }
293 293
294 if ( hasAudioChannel ) { 294 if ( hasAudioChannel ) {
295 moreAudio = TRUE; 295 moreAudio = TRUE;
296 threadOkToGo = TRUE; 296 threadOkToGo = TRUE;
297 } 297 }
298 298
299 sliderId = startTimer( 300 ); // update slider every 1/3 second 299 sliderId = startTimer( 300 ); // update slider every 1/3 second
300 300
301 audioMutex->unlock(); 301 audioMutex->unlock();
302} 302}
303 303
304 304
305void LoopControl::setPaused( bool pause ) { 305void LoopControl::setPaused( bool pause ) {
306 306
307 if ( !mediaPlayerState->curDecoder() || !mediaPlayerState->curDecoder()->isOpen() ) 307 if ( !mediaPlayerState->curDecoder() || !mediaPlayerState->curDecoder()->isOpen() )
308 return; 308 return;
309 309
310 if ( pause ) { 310 if ( pause ) {
311 killTimers(); 311 killTimers();
312 } else { 312 } else {
313 // Force an update of the position 313 // Force an update of the position
314 mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); 314 mediaPlayerState->setPosition( mediaPlayerState->position() + 1 );
315 mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); 315 mediaPlayerState->setPosition( mediaPlayerState->position() - 1 );
316 // Just like we never stopped 316 // Just like we never stopped
317 startTimers(); 317 startTimers();
318 } 318 }
319} 319}
320 320
321 321
322void LoopControl::stop( bool willPlayAgainShortly ) { 322void LoopControl::stop( bool willPlayAgainShortly ) {
323 323
324#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 324#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
325 if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) { 325 if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) {
326 disabledSuspendScreenSaver = FALSE; 326 disabledSuspendScreenSaver = FALSE;
327 // Re-enable the suspend mode 327 // Re-enable the suspend mode
328 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 328 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
329 } 329 }
330#endif 330#endif
331 331
332 if ( mediaPlayerState->curDecoder() && mediaPlayerState->curDecoder()->isOpen() ) { 332 if ( mediaPlayerState->curDecoder() && mediaPlayerState->curDecoder()->isOpen() ) {
333 333
334 killTimers(); 334 killTimers();
335 335
336 audioMutex->lock(); 336 audioMutex->lock();
337 337
338 mediaPlayerState->curDecoder()->close(); 338 mediaPlayerState->curDecoder()->close();
339 339
340 if ( audioDevice ) { 340 if ( audioDevice ) {
341 delete audioDevice; 341 delete audioDevice;
342 delete audioBuffer; 342 delete audioBuffer;
343 audioDevice = 0; 343 audioDevice = 0;
344 audioBuffer = 0; 344 audioBuffer = 0;
345 } 345 }
346 346
347 audioMutex->unlock(); 347 audioMutex->unlock();
348 348
349 } 349 }
350} 350}
351 351
352 352
353bool LoopControl::init( const QString& filename ) { 353bool LoopControl::init( const QString& filename ) {
354 stop(); 354 stop();
355 355
356 audioMutex->lock(); 356 audioMutex->lock();
357 357
358 fileName = filename; 358 fileName = filename;
359 stream = 0; // only play stream 0 for now 359 stream = 0; // only play stream 0 for now
360 current_frame = total_video_frames = total_audio_samples = 0; 360 current_frame = total_video_frames = total_audio_samples = 0;
361 361
362 qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); 362 qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() );
363 363
364 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin 364 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin
365 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { 365 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) {
366 if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) { 366 if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename )) {
367 total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); 367 total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 );
368 mediaPlayerState->libMpeg3Decoder()->close(); 368 mediaPlayerState->libMpeg3Decoder()->close();
369 } 369 }
370 } 370 }
371 371
372 if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) { 372 if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) {
373 audioMutex->unlock(); 373 audioMutex->unlock();
374 return FALSE; 374 return FALSE;
375 } 375 }
376 376
377 hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0; 377 hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0;
378 hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0; 378 hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0;
379 379
380 if ( hasAudioChannel ) { 380 if ( hasAudioChannel ) {
381 int astream = 0; 381 int astream = 0;
382 382
383 channels = mediaPlayerState->curDecoder()->audioChannels( astream ); 383 channels = mediaPlayerState->curDecoder()->audioChannels( astream );
384 qDebug( "LC- channels = %d", channels ); 384 qDebug( "LC- channels = %d", channels );
385 385
386 if ( !total_audio_samples ) 386 if ( !total_audio_samples )
387 total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); 387 total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream );
388 388
389// total_audio_samples += 1000; 389 total_audio_samples += 1000;
390 390
391 mediaPlayerState->setLength( total_audio_samples ); 391 mediaPlayerState->setLength( total_audio_samples );
392 392
393 freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); 393 freq = mediaPlayerState->curDecoder()->audioFrequency( astream );
394 qDebug( "LC- frequency = %d", freq ); 394 qDebug( "LC- frequency = %d", freq );
395 395
396 audioSampleCounter = 0; 396 audioSampleCounter = 0;
397 int bits_per_sample; 397 int bits_per_sample;
398 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { 398 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) {
399 bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); 399 bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime();
400 qDebug("using stupid hack"); 400 qDebug("using stupid hack");
401 } else { 401 } else {
402 bits_per_sample=0; 402 bits_per_sample=0;
403 } 403 }
404 404
405 audioDevice = new AudioDevice( freq, channels, bits_per_sample); 405 audioDevice = new AudioDevice( freq, channels, bits_per_sample);
406 audioBuffer = new char[ audioDevice->bufferSize() ]; 406 audioBuffer = new char[ audioDevice->bufferSize() ];
407 channels = audioDevice->channels(); 407 channels = audioDevice->channels();
408 408
409 //### must check which frequency is actually used. 409 //### must check which frequency is actually used.
410 static const int size = 1; 410 static const int size = 1;
411 short int buf[size]; 411 short int buf[size];
412 long samplesRead = 0; 412 long samplesRead = 0;
413 mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); 413 mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream );
414 } 414 }
415 415
416 if ( hasVideoChannel ) { 416 if ( hasVideoChannel ) {
417 total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); 417 total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream );
418 418
419 mediaPlayerState->setLength( total_video_frames ); 419 mediaPlayerState->setLength( total_video_frames );
420 420
421 framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); 421 framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream );
422 DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); 422 DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames ));
423 423
424 if ( framerate <= 1.0 ) { 424 if ( framerate <= 1.0 ) {
425 DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); 425 DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" ));
426 framerate = 25; 426 framerate = 25;
427 } 427 }
428 428
429 if ( total_video_frames == 1 ) { 429 if ( total_video_frames == 1 ) {
430 DecodeLoopDebug(( "Cannot seek to frame" )); 430 DecodeLoopDebug(( "Cannot seek to frame" ));
431 } 431 }
432 432
433 } 433 }
434 434
435 current_frame = 0; 435 current_frame = 0;
436 prev_frame = -1; 436 prev_frame = -1;
437 437
438 connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( setPosition( long ) ) ); 438 connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( setPosition( long ) ) );
439 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( setPaused( bool ) ) ); 439 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( setPaused( bool ) ) );
440 440
441 audioMutex->unlock(); 441 audioMutex->unlock();
442 442
443 return TRUE; 443 return TRUE;
444} 444}
445 445
446 446
447void LoopControl::play() { 447void LoopControl::play() {
448 qDebug("LC- play"); 448 qDebug("LC- play");
449#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 449#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
450 if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { 450 if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) {
451 disabledSuspendScreenSaver = TRUE; 451 disabledSuspendScreenSaver = TRUE;
452 previousSuspendMode = hasVideoChannel; 452 previousSuspendMode = hasVideoChannel;
453 // Stop the screen from blanking and power saving state 453 // Stop the screen from blanking and power saving state
454 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) 454 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" )
455 << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); 455 << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend );
456 } 456 }
457#endif 457#endif
458 458
459 playtime.start(); 459 playtime.start();
460 startTimers(); 460 startTimers();
461} 461}
462 462
463 463
464void LoopControl::setMute( bool on ) { 464void LoopControl::setMute( bool on ) {
465 if ( on != isMuted ) { 465 if ( on != isMuted ) {
466 isMuted = on; 466 isMuted = on;
467 if ( !on ) { 467 if ( !on ) {
468 // Force an update of the position 468 // Force an update of the position
469 mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); 469 mediaPlayerState->setPosition( mediaPlayerState->position() + 1 );
470 mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); 470 mediaPlayerState->setPosition( mediaPlayerState->position() - 1 );
471 // Resume playing audio 471 // Resume playing audio
472 moreAudio = TRUE; 472 moreAudio = TRUE;
473 } 473 }
474 } 474 }
475} 475}
476 476
477 477