-rw-r--r-- | core/multimedia/opieplayer/loopcontrol.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp index 310d512..6f86b4a 100644 --- a/core/multimedia/opieplayer/loopcontrol.cpp +++ b/core/multimedia/opieplayer/loopcontrol.cpp | |||
@@ -351,66 +351,70 @@ void LoopControl::stop( bool willPlayAgainShortly ) { | |||
351 | 351 | ||
352 | 352 | ||
353 | bool LoopControl::init( const QString& filename ) { | 353 | bool 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 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") ) |
384 | qDebug( "LC- channels = %d", channels ); | 384 | channels = 2; //dont akx me why, but it needs this hack |
385 | else | ||
386 | channels = mediaPlayerState->curDecoder()->audioChannels( astream ); | ||
387 | |||
388 | qDebug( "LC- channels = %d", channels ); | ||
385 | 389 | ||
386 | if ( !total_audio_samples ) | 390 | if ( !total_audio_samples ) |
387 | total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); | 391 | total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); |
388 | 392 | ||
389 | total_audio_samples += 1000; | 393 | total_audio_samples += 1000; |
390 | 394 | ||
391 | mediaPlayerState->setLength( total_audio_samples ); | 395 | mediaPlayerState->setLength( total_audio_samples ); |
392 | 396 | ||
393 | freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); | 397 | freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); |
394 | qDebug( "LC- frequency = %d", freq ); | 398 | qDebug( "LC- frequency = %d", freq ); |
395 | 399 | ||
396 | audioSampleCounter = 0; | 400 | audioSampleCounter = 0; |
397 | int bits_per_sample; | 401 | int bits_per_sample; |
398 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { | 402 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { |
399 | bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); | 403 | bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); |
400 | qDebug("using stupid hack"); | 404 | qDebug("using stupid hack"); |
401 | } else { | 405 | } else { |
402 | bits_per_sample=0; | 406 | bits_per_sample=0; |
403 | } | 407 | } |
404 | 408 | ||
405 | audioDevice = new AudioDevice( freq, channels, bits_per_sample); | 409 | audioDevice = new AudioDevice( freq, channels, bits_per_sample); |
406 | audioBuffer = new char[ audioDevice->bufferSize() ]; | 410 | audioBuffer = new char[ audioDevice->bufferSize() ]; |
407 | channels = audioDevice->channels(); | 411 | channels = audioDevice->channels(); |
408 | 412 | ||
409 | //### must check which frequency is actually used. | 413 | //### must check which frequency is actually used. |
410 | static const int size = 1; | 414 | static const int size = 1; |
411 | short int buf[size]; | 415 | short int buf[size]; |
412 | long samplesRead = 0; | 416 | long samplesRead = 0; |
413 | mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); | 417 | mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); |
414 | } | 418 | } |
415 | 419 | ||
416 | if ( hasVideoChannel ) { | 420 | if ( hasVideoChannel ) { |