summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-07-18 04:36:33 (UTC)
committer llornkcor <llornkcor>2002-07-18 04:36:33 (UTC)
commit0559e149a7a07463a5eeab8bc6a5792bba14326b (patch) (side-by-side diff)
tree19de4cb910cbf0d6d49d19264172316a30b7e730
parent7fba4ce72b9201e3a04214c75a1031958090a618 (diff)
downloadopie-0559e149a7a07463a5eeab8bc6a5792bba14326b.zip
opie-0559e149a7a07463a5eeab8bc6a5792bba14326b.tar.gz
opie-0559e149a7a07463a5eeab8bc6a5792bba14326b.tar.bz2
change for video
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/loopcontrol.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp
index 70e4a78..ba14882 100644
--- a/core/multimedia/opieplayer/loopcontrol.cpp
+++ b/core/multimedia/opieplayer/loopcontrol.cpp
@@ -191,104 +191,106 @@ void LoopControl::startVideo() {
current_frame = long( playtime.elapsed() * framerate / 1000 );
if ( prev_frame != -1 && current_frame <= prev_frame )
return;
} else {
// Don't skip
current_frame++;
}
if ( prev_frame == -1 || current_frame > prev_frame ) {
if ( current_frame > prev_frame + 1 ) {
mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
}
moreVideo = videoUI->playVideo();
prev_frame = current_frame;
}
} else {
moreVideo = FALSE;
killTimer( videoId );
}
}
}
void LoopControl::startAudio() {
audioMutex->lock();
if ( moreAudio ) {
if ( !isMuted && mediaPlayerState->curDecoder() ) {
currentSample = audioSampleCounter + 1;
if ( currentSample != audioSampleCounter + 1 )
qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter);
long samplesRead = 0;
bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream );
long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000;
long sampleWaitTime = currentSample - sampleWeShouldBeAt;
// this causes drop outs not sure why its even here
-// if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) {
-// usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) );
-// }
-// else if ( sampleWaitTime <= -5000 ) {
-// qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt );
-// // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream );
-// currentSample = sampleWeShouldBeAt;
-// }
+ if ( hasVideoChannel ) {
+ if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) {
+ usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) );
+ }
+ else if ( sampleWaitTime <= -5000 ) {
+ qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt );
+ // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream );
+ currentSample = sampleWeShouldBeAt;
+ }
+}
audioDevice->write( audioBuffer, samplesRead * 2 * channels );
if( mediaPlayerState->isStreaming == FALSE)
audioSampleCounter = currentSample + samplesRead - 1;
moreAudio = readOk && (audioSampleCounter <= total_audio_samples);
} else {
moreAudio = FALSE;
}
}
audioMutex->unlock();
}
void LoopControl::killTimers() {
audioMutex->lock();
if ( hasVideoChannel )
killTimer( videoId );
killTimer( sliderId );
threadOkToGo = FALSE;
audioMutex->unlock();
}
void LoopControl::startTimers() {
audioMutex->lock();
moreVideo = FALSE;
moreAudio = FALSE;
if ( hasVideoChannel ) {
moreVideo = TRUE;
int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value
videoId = startTimer( mSecsBetweenFrames );
}
if ( hasAudioChannel ) {
moreAudio = TRUE;