summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2003-02-25 23:36:47 (UTC)
committer llornkcor <llornkcor>2003-02-25 23:36:47 (UTC)
commitbde9ed97c92b6f7eefa8a66d9f58aa4c78127733 (patch) (unidiff)
tree4a74c6083acd5d89e191aaa3629040fb4449ff71
parent689847f2dcaabdfca266efd3c99c81b833bf6e9f (diff)
downloadopie-bde9ed97c92b6f7eefa8a66d9f58aa4c78127733.zip
opie-bde9ed97c92b6f7eefa8a66d9f58aa4c78127733.tar.gz
opie-bde9ed97c92b6f7eefa8a66d9f58aa4c78127733.tar.bz2
add proper number of samples reporting
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/multimedia/opieplayer/libmad/libmadplugin.cpp48
1 files changed, 41 insertions, 7 deletions
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
index 9a1ab2a..9d1ff8c 100644
--- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp
+++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
@@ -75,6 +75,7 @@ public:
75#if defined(HAVE_MMAP) 75#if defined(HAVE_MMAP)
76 void *fdm; 76 void *fdm;
77#endif 77#endif
78 unsigned long fileLength;
78 unsigned char *data; 79 unsigned char *data;
79 unsigned long length; 80 unsigned long length;
80 int eof; 81 int eof;
@@ -453,11 +454,16 @@ bool LibMadPlugin::open( const QString& path ) {
453 return FALSE; 454 return FALSE;
454 } 455 }
455 456
456#if defined(HAVE_MMAP)
457 struct stat stat; 457 struct stat stat;
458 if (fstat(d->input.fd, &stat) == -1) { 458 if (fstat(d->input.fd, &stat) == -1) {
459 //qDebug("error calling fstat"); return FALSE; 459 qDebug("error calling fstat"); return FALSE;
460 } 460 }
461 if (S_ISREG(stat.st_mode) && stat.st_size > 0)
462 d->input.fileLength = stat.st_size;
463 else
464 d->input.fileLength = 0;
465
466#if defined(HAVE_MMAP)
461 if (S_ISREG(stat.st_mode) && stat.st_size > 0) { 467 if (S_ISREG(stat.st_mode) && stat.st_size > 0) {
462 d->input.length = stat.st_size; 468 d->input.length = stat.st_size;
463 d->input.fdm = map_file(d->input.fd, &d->input.length); 469 d->input.fdm = map_file(d->input.fd, &d->input.length);
@@ -557,17 +563,45 @@ int LibMadPlugin::audioFrequency( int ) {
557int LibMadPlugin::audioSamples( int ) { 563int LibMadPlugin::audioSamples( int ) {
558 debugMsg( "LibMadPlugin::audioSamples" ); 564 debugMsg( "LibMadPlugin::audioSamples" );
559 565
560 // long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 ); 566 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
561// mad_header_decode( (struct mad_header *)&d->frame.header, &d->stream ); 567 mad_header_decode( (struct mad_header *)&d->frame.header, &d->stream );
562// qDebug( "LibMadPlugin::audioSamples: %i*%i", d->frame.header.duration.seconds, d->frame.header.samplerate ); 568/*
563// return d->frame.header.duration.seconds * d->frame.header.samplerate; 569 qDebug( "LibMadPlugin::audioSamples: %i*%i", d->frame.header.duration.seconds,
570 d->frame.header.samplerate );
571 return d->frame.header.duration.seconds * d->frame.header.samplerate;
572*/
573 if ( d->frame.header.bitrate == 0 )
574 return 0;
575 int samples = (d->input.fileLength / (d->frame.header.bitrate/8)) * d->frame.header.samplerate;
564 576
565 return 10000000; 577 qDebug( "LibMadPlugin::audioSamples: %i * %i * 8 / %i", (int)d->input.fileLength,
578 (int)d->frame.header.samplerate, (int)d->frame.header.bitrate );
579 qDebug( "LibMadPlugin::audioSamples: %i", samples );
580
581 return samples;
582
583// return 10000000;
566} 584}
567 585
568 586
569bool LibMadPlugin::audioSetSample( long, int ) { 587bool LibMadPlugin::audioSetSample( long, int ) {
570 debugMsg( "LibMadPlugin::audioSetSample" ); 588 debugMsg( "LibMadPlugin::audioSetSample" );
589
590// long totalSamples = audioSamples(0);
591// if ( totalSamples <= 1 )
592// return FALSE;
593
594// // Seek to requested position
595// qDebug( "seek pos: %i", (int)((double)pos * d->input.fileLength / totalSamples) );
596// ::lseek( d->input.fd, (long)((double)pos * d->input.fileLength / totalSamples), SEEK_SET );
597// mad_stream_sync(&d->stream);
598
599// mad_stream_init(&d->stream);
600// mad_frame_init(&d->frame);
601// mad_synth_init(&d->synth);
602
603// return TRUE;
604 debugMsg( "LibMadPlugin::audioSetSample" );
571 return FALSE; 605 return FALSE;
572} 606}
573 607