summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-05-30 00:14:35 (UTC)
committer llornkcor <llornkcor>2002-05-30 00:14:35 (UTC)
commit738c08d921cc12c9f6f7846e80889908dce06cc8 (patch) (unidiff)
tree83f38f243388afb2312a46073f36e8fca5b32b5c
parent32e4668771e3fc4aad674796e20e4a24d1d09331 (diff)
downloadopie-738c08d921cc12c9f6f7846e80889908dce06cc8.zip
opie-738c08d921cc12c9f6f7846e80889908dce06cc8.tar.gz
opie-738c08d921cc12c9f6f7846e80889908dce06cc8.tar.bz2
fixed bug with mpeg3 not playing audio in videos
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/loopcontrol.cpp8
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
353bool LoopControl::init( const QString& filename ) { 353bool 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 ) {