Diffstat (limited to 'core/multimedia/opieplayer/loopcontrol.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/loopcontrol.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp index 3171c4b..70e4a78 100644 --- a/core/multimedia/opieplayer/loopcontrol.cpp +++ b/core/multimedia/opieplayer/loopcontrol.cpp | |||
@@ -150,13 +150,13 @@ void LoopControl::timerEvent( QTimerEvent *te ) { | |||
150 | } | 150 | } |
151 | } | 151 | } |
152 | 152 | ||
153 | 153 | ||
154 | void LoopControl::setPosition( long pos ) { | 154 | void LoopControl::setPosition( long pos ) { |
155 | audioMutex->lock(); | 155 | audioMutex->lock(); |
156 | 156 | // qDebug("Loop control %d", pos); | |
157 | if ( hasVideoChannel && hasAudioChannel ) { | 157 | if ( hasVideoChannel && hasAudioChannel ) { |
158 | playtime.restart(); | 158 | playtime.restart(); |
159 | playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); | 159 | playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); |
160 | current_frame = pos + 1; | 160 | current_frame = pos + 1; |
161 | mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); | 161 | mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); |
162 | prev_frame = current_frame - 1; | 162 | prev_frame = current_frame - 1; |
@@ -217,13 +217,12 @@ void LoopControl::startVideo() { | |||
217 | } | 217 | } |
218 | } | 218 | } |
219 | 219 | ||
220 | 220 | ||
221 | void LoopControl::startAudio() { | 221 | void LoopControl::startAudio() { |
222 | 222 | ||
223 | //qDebug("start audio"); | ||
224 | audioMutex->lock(); | 223 | audioMutex->lock(); |
225 | if ( moreAudio ) { | 224 | if ( moreAudio ) { |
226 | 225 | ||
227 | if ( !isMuted && mediaPlayerState->curDecoder() ) { | 226 | if ( !isMuted && mediaPlayerState->curDecoder() ) { |
228 | 227 | ||
229 | currentSample = audioSampleCounter + 1; | 228 | currentSample = audioSampleCounter + 1; |
@@ -234,20 +233,20 @@ void LoopControl::startAudio() { | |||
234 | long samplesRead = 0; | 233 | long samplesRead = 0; |
235 | bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); | 234 | bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); |
236 | long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; | 235 | long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; |
237 | long sampleWaitTime = currentSample - sampleWeShouldBeAt; | 236 | long sampleWaitTime = currentSample - sampleWeShouldBeAt; |
238 | 237 | ||
239 | // this causes drop outs not sure why its even here | 238 | // this causes drop outs not sure why its even here |
240 | if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { | 239 | // if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { |
241 | usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); | 240 | // usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); |
242 | } | 241 | // } |
243 | else if ( sampleWaitTime <= -5000 ) { | 242 | // else if ( sampleWaitTime <= -5000 ) { |
244 | qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); | 243 | // qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); |
245 | // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); | 244 | // // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); |
246 | currentSample = sampleWeShouldBeAt; | 245 | // currentSample = sampleWeShouldBeAt; |
247 | } | 246 | // } |
248 | 247 | ||
249 | audioDevice->write( audioBuffer, samplesRead * 2 * channels ); | 248 | audioDevice->write( audioBuffer, samplesRead * 2 * channels ); |
250 | 249 | ||
251 | if( mediaPlayerState->isStreaming == FALSE) | 250 | if( mediaPlayerState->isStreaming == FALSE) |
252 | audioSampleCounter = currentSample + samplesRead - 1; | 251 | audioSampleCounter = currentSample + samplesRead - 1; |
253 | 252 | ||
@@ -342,20 +341,21 @@ void LoopControl::stop( bool willPlayAgainShortly ) { | |||
342 | delete audioBuffer; | 341 | delete audioBuffer; |
343 | audioDevice = 0; | 342 | audioDevice = 0; |
344 | audioBuffer = 0; | 343 | audioBuffer = 0; |
345 | } | 344 | } |
346 | 345 | ||
347 | audioMutex->unlock(); | 346 | audioMutex->unlock(); |
348 | |||
349 | } | 347 | } |
348 | audioSampleCounter=0; | ||
349 | current_frame=0; | ||
350 | total_audio_samples=0; | ||
350 | } | 351 | } |
351 | 352 | ||
352 | 353 | ||
353 | bool LoopControl::init( const QString& filename ) { | 354 | bool LoopControl::init( const QString& filename ) { |
354 | stop(); | 355 | stop(); |
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 | ||
@@ -447,12 +447,14 @@ bool LoopControl::init( const QString& filename ) { | |||
447 | return TRUE; | 447 | return TRUE; |
448 | } | 448 | } |
449 | 449 | ||
450 | 450 | ||
451 | void LoopControl::play() { | 451 | void LoopControl::play() { |
452 | qDebug("LC- play"); | 452 | qDebug("LC- play"); |
453 | mediaPlayerState->setPosition( 0); //uglyhack | ||
454 | |||
453 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 455 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
454 | if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { | 456 | if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { |
455 | disabledSuspendScreenSaver = TRUE; | 457 | disabledSuspendScreenSaver = TRUE; |
456 | previousSuspendMode = hasVideoChannel; | 458 | previousSuspendMode = hasVideoChannel; |
457 | // Stop the screen from blanking and power saving state | 459 | // Stop the screen from blanking and power saving state |
458 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) | 460 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) |