summaryrefslogtreecommitdiff
path: root/core/multimedia/opieplayer/loopcontrol_threaded.cpp
Unidiff
Diffstat (limited to 'core/multimedia/opieplayer/loopcontrol_threaded.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/loopcontrol_threaded.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.cpp b/core/multimedia/opieplayer/loopcontrol_threaded.cpp
index 364e77b..3796549 100644
--- a/core/multimedia/opieplayer/loopcontrol_threaded.cpp
+++ b/core/multimedia/opieplayer/loopcontrol_threaded.cpp
@@ -19,11 +19,12 @@
19**********************************************************************/ 19**********************************************************************/
20#define _REENTRANT 20#define _REENTRANT
21 21
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include <qpe/custom.h>
23#include <qimage.h> 24#include <qimage.h>
24#include <qpainter.h> 25#include <qpainter.h>
25#ifdef Q_WS_QWS 26#if !defined(QT_NO_COP)
26#include <qpe/qcopenvelope_qws.h> 27#include <qpe/qcopenvelope_qws.h>
27#endif 28#endif
28#include "mediaplayerplugininterface.h" 29#include "mediaplayerplugininterface.h"
29#include <stdio.h> 30#include <stdio.h>
@@ -38,11 +39,9 @@
38#include "audiowidget.h" 39#include "audiowidget.h"
39#include "mediaplayerstate.h" 40#include "mediaplayerstate.h"
40 41
41 42
42#if defined(QT_QWS_SL5XXX) || defined(QT_QWS_IPAQ) || defined(QT_QWS_RAMSES) 43
43#define USE_REALTIME_AUDIO_THREAD
44#endif
45 44
46 45
47extern VideoWidget *videoUI; // now only needed to tell it to play a frame 46extern VideoWidget *videoUI; // now only needed to tell it to play a frame
48extern MediaPlayerState *mediaPlayerState; 47extern MediaPlayerState *mediaPlayerState;
@@ -255,9 +254,9 @@ void LoopControl::startVideo() {
255/* 254/*
256 videoMutex->lock(); 255 videoMutex->lock();
257 current_frame = int( (double)playtime.elapsed() * (double)framerate / 1000.0 ); 256 current_frame = int( (double)playtime.elapsed() * (double)framerate / 1000.0 );
258 //current_frame = ( clock() - begin ) * (double)framerate / CLOCKS_PER_SEC; 257 //current_frame = ( clock() - begin ) * (double)framerate / CLOCKS_PER_SEC;
259 258
260 // Sync to Audio 259 // Sync to Audio
261// current_frame = (long)((double)(audioSampleCounter - 1000) * framerate / (double)freq); 260// current_frame = (long)((double)(audioSampleCounter - 1000) * framerate / (double)freq);
262 261
263 long mSecsToNextFrame = 0; 262 long mSecsToNextFrame = 0;
@@ -311,27 +310,27 @@ void LoopControl::startVideo() {
311 // qDebug("skipped a frame"); 310 // qDebug("skipped a frame");
312 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); 311 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
313 } 312 }
314 prev_frame = current_frame; 313 prev_frame = current_frame;
315 if ( moreVideo = videoUI->playVideo() ) 314 if ( moreVideo = videoUI->playVideo() )
316 emitChangePos = TRUE; 315 emitChangePos = TRUE;
317 videoMutex->unlock(); 316 videoMutex->unlock();
318 } 317 }
319 318
320 } else 319 } else
321 moreVideo = FALSE; 320 moreVideo = FALSE;
322 321
323 } 322 }
324 323
325 if ( !moreVideo && !moreAudio ) 324 if ( !moreVideo && !moreAudio )
326 emitPlayFinished = TRUE; 325 emitPlayFinished = TRUE;
327 326
328 pthread_exit(NULL); 327 pthread_exit(NULL);
329} 328}
330 329
331void LoopControl::startAudio() { 330void LoopControl::startAudio() {
332 moreAudio = TRUE; 331 moreAudio = TRUE;
333 332
334 while ( moreAudio ) { 333 while ( moreAudio ) {
335 334
336 if ( !isMuted && mediaPlayerState->curDecoder() && hasAudioChannel ) { 335 if ( !isMuted && mediaPlayerState->curDecoder() && hasAudioChannel ) {
337 336
@@ -403,9 +402,9 @@ void LoopControl::startAudio() {
403 } 402 }
404 403
405 // qDebug( "End of file" ); 404 // qDebug( "End of file" );
406 405
407 if ( !moreVideo && !moreAudio ) 406 if ( !moreVideo && !moreAudio )
408 emitPlayFinished = TRUE; 407 emitPlayFinished = TRUE;
409 408
410 pthread_exit(NULL); 409 pthread_exit(NULL);
411} 410}
@@ -483,9 +482,9 @@ void LoopControl::setPaused( bool pause ) {
483void LoopControl::stop( bool willPlayAgainShortly ) { 482void LoopControl::stop( bool willPlayAgainShortly ) {
484 483
485#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 484#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
486 if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) { 485 if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) {
487 disabledSuspendScreenSaver = FALSE; 486 disabledSuspendScreenSaver = FALSE;
488 // Re-enable the suspend mode 487 // Re-enable the suspend mode
489 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 488 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
490 } 489 }
491#endif 490#endif
@@ -511,11 +510,11 @@ bool LoopControl::init( const QString& filename ) {
511 stop(); 510 stop();
512 fileName = filename; 511 fileName = filename;
513 stream = 0; // only play stream 0 for now 512 stream = 0; // only play stream 0 for now
514 current_frame = total_video_frames = total_audio_samples = 0; 513 current_frame = total_video_frames = total_audio_samples = 0;
515 514
516 // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); 515 // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() );
517 516
518 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin 517 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin
519 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { 518 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) {
520 if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) { 519 if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) {
521 total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); 520 total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 );
@@ -533,14 +532,14 @@ bool LoopControl::init( const QString& filename ) {
533 int astream = 0; 532 int astream = 0;
534 533
535 channels = mediaPlayerState->curDecoder()->audioChannels( astream ); 534 channels = mediaPlayerState->curDecoder()->audioChannels( astream );
536 DecodeLoopDebug(( "channels = %d\n", channels )); 535 DecodeLoopDebug(( "channels = %d\n", channels ));
537 536
538 if ( !total_audio_samples ) 537 if ( !total_audio_samples )
539 total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); 538 total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream );
540 539
541 mediaPlayerState->setLength( total_audio_samples ); 540 mediaPlayerState->setLength( total_audio_samples );
542 541
543 freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); 542 freq = mediaPlayerState->curDecoder()->audioFrequency( astream );
544 DecodeLoopDebug(( "frequency = %d\n", freq )); 543 DecodeLoopDebug(( "frequency = %d\n", freq ));
545 544
546 audioSampleCounter = 0; 545 audioSampleCounter = 0;
@@ -593,11 +592,11 @@ bool LoopControl::init( const QString& filename ) {
593void LoopControl::play() { 592void LoopControl::play() {
594 593
595#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 594#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
596 if ( !disabledSuspendScreenSaver ) { 595 if ( !disabledSuspendScreenSaver ) {
597 disabledSuspendScreenSaver = TRUE; 596 disabledSuspendScreenSaver = TRUE;
598 // Stop the screen from blanking and power saving state 597 // Stop the screen from blanking and power saving state
599 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) 598 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" )
600 << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); 599 << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend );
601 } 600 }
602#endif 601#endif
603 602