Diffstat (limited to 'core/multimedia/opieplayer/loopcontrol.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/loopcontrol.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp index 1ae0059..dd466ed 100644 --- a/core/multimedia/opieplayer/loopcontrol.cpp +++ b/core/multimedia/opieplayer/loopcontrol.cpp @@ -1,6 +1,6 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the @@ -18,11 +18,10 @@ ** **********************************************************************/ -// L.J.Potter added changes Fri 02-15-2002 - #include <qpe/qpeapplication.h> - #ifdef Q_WS_QWS + #include <qpe/qcopenvelope_qws.h> #endif +#include <qpe/mediaplayerplugininterface.h> #include <stdio.h> #include <stdlib.h> @@ -34,5 +33,4 @@ #include "videowidget.h" #include "audiodevice.h" -#include "mediaplayerplugininterface.h" #include "mediaplayerstate.h" @@ -105,6 +103,8 @@ LoopControl::LoopControl( QObject *parent, const char *name ) pthread_attr_init(&audio_attr); -#define USE_REALTIME_AUDIO_THREAD -#ifdef USE_REALTIME_AUDIO_THREAD + + if ( getuid() == 0 ) { + printf("true, guid = %i\n", getuid()); + // Attempt to set it to real-time round robin if ( pthread_attr_setschedpolicy( &audio_attr, SCHED_RR ) == 0 ) { @@ -117,5 +117,8 @@ LoopControl::LoopControl( QObject *parent, const char *name ) pthread_attr_init(&audio_attr); } -#endif + } +// printf("false, guid = %i\n", getuid()); + usleep( 100 ); + pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this); } @@ -232,5 +235,5 @@ void LoopControl::startAudio() { long samplesRead = 0; - bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); + mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; long sampleWaitTime = currentSample - sampleWeShouldBeAt; @@ -238,6 +241,5 @@ void LoopControl::startAudio() { if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); - } - else if ( sampleWaitTime <= -5000 ) { + } else if ( sampleWaitTime <= -5000 ) { qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); @@ -248,5 +250,5 @@ void LoopControl::startAudio() { audioSampleCounter = currentSample + samplesRead - 1; - moreAudio = readOk && (audioSampleCounter <= total_audio_samples); + moreAudio = audioSampleCounter <= total_audio_samples; } else { @@ -378,21 +380,21 @@ bool LoopControl::init( const QString& filename ) { channels = mediaPlayerState->curDecoder()->audioChannels( astream ); - qDebug( "LC- channels = %d", channels ); + DecodeLoopDebug(( "channels = %d\n", channels )); if ( !total_audio_samples ) total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); -// total_audio_samples += 1000; + total_audio_samples += 1000; mediaPlayerState->setLength( total_audio_samples ); freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); - qDebug( "LC- frequency = %d", freq ); + DecodeLoopDebug(( "frequency = %d\n", freq )); audioSampleCounter = 0; - int bits_per_sample = mediaPlayerState->curDecoder()->audioBitsPerSample( astream); + static const int bytes_per_sample = 2; //16 bit - audioDevice = new AudioDevice( freq, channels, bits_per_sample); + audioDevice = new AudioDevice( freq, channels, bytes_per_sample ); audioBuffer = new char[ audioDevice->bufferSize() ]; channels = audioDevice->channels(); |