author | kergoth <kergoth> | 2003-08-09 16:24:58 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-08-09 16:24:58 (UTC) |
commit | e16d333ec2e8509fc665921ca106c25325bae9e0 (patch) (side-by-side diff) | |
tree | 9e9068190a15bc9b2a52ab33b40881128f732c0e /noncore/multimedia/opieplayer2/lib.cpp | |
parent | 1c58d1407f9584fedcdae390a04e2b37e5853361 (diff) | |
download | opie-e16d333ec2e8509fc665921ca106c25325bae9e0.zip opie-e16d333ec2e8509fc665921ca106c25325bae9e0.tar.gz opie-e16d333ec2e8509fc665921ca106c25325bae9e0.tar.bz2 |
Merge from BRANCH_1_0
Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index d04af08..11ad745 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp @@ -28,19 +28,15 @@ If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include <stdio.h> -#include <stdlib.h> -#include <qimage.h> + #include <qtextstream.h> -#include <qpe/resource.h> -#include <qfile.h> #include <qdir.h> #include <qgfx_qws.h> #include <qdirectpainter_qws.h> #include <assert.h> @@ -85,12 +81,22 @@ Lib::Lib( InitializationMode initMode, XineVideoWidget* widget ) // not really OO, should be an extra class, later if ( !QFile::exists(configPath) ) { QFile f(configPath); f.open(IO_WriteOnly); QTextStream ts( &f ); ts << "misc.memcpy_method:glibc\n"; + ts << "# uncomment if you experience double speed audio \n #audio.oss_sync_method:softsync\n"; + ts << "codec.ffmpeg_pp_quality:3\n"; + ts << "audio.num_buffers:50\n"; + ts << "audio.size_buffers:4160\n"; + ts << "video.num_buffers:20\n"; + ts << "video.size_buffers:4096\n"; + ts << "audio.out_num_audio_buf:16\n"; + ts << "audio.out_size_audio_buf:8096\n"; + ts << "audio.out_size_zero_buf:1024\n"; + ts << "audio.passthrough_offset:0\n"; f.close(); } if ( initMode == InitializeImmediately ) { initialize(); m_initialized = true; @@ -188,14 +194,22 @@ int Lib::subVersion() { xine_get_version ( &major, &minor, &sub ); return sub; } int Lib::play( const QString& fileName, int startPos, int start_time ) { assert( m_initialized ); + // FIXME actually a hack imho. Should not be needed to dispose the whole stream + // but without we get wrong media length reads from libxine for the second media + //xine_dispose ( m_stream ); QString str = fileName.stripWhiteSpace(); + + //m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); + //m_queue = xine_event_new_queue (m_stream); + //xine_event_create_listener_thread (m_queue, xine_event_handler, this); + if ( !xine_open( m_stream, QFile::encodeName(str.utf8() ).data() ) ) { return 0; } return xine_play( m_stream, startPos, start_time); } @@ -240,22 +254,43 @@ int Lib::currentPosition() const { int Lib::currentTime() const { assert( m_initialized ); int pos, time, length; xine_get_pos_length( m_stream, &pos, &time, &length ); + if ( time > 0 ) { return time/1000; + } else { + return 0; + } } int Lib::length() const { assert( m_initialized ); int pos, time, length; - xine_get_pos_length( m_stream, &pos, &time, &length ); +/* dilb: patch to solve the wrong stream length reported to the GUI*/ + int iRetVal=0, iTestLoop=0; + + do + { + iRetVal = xine_get_pos_length( m_stream, &pos, &time, &length ); + if (iRetVal) + {/* if the function didn't return 0, then pos, time and length are valid.*/ return length/1000; } + /*don't poll too much*/ + usleep(100000); + iTestLoop++; + } + while ( iTestLoop < 10 ); /* if after 1s, we still don't have any +valid stream, then return -1 (this value could be used to make the stream +unseekable, but it should never occur!! Mr. Murphy ? :) ) */ + + return -1; +} bool Lib::isSeekable() const { assert( m_initialized ); return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE ); } @@ -363,14 +398,12 @@ void Lib::setScaling( bool scale ) { ::null_set_scaling( m_videoOutput, scale ); } void Lib::setGamma( int value ) { assert( m_initialized ); - //qDebug( QString( "%1").arg(value) ); - /* int gammaValue = ( 100 + value ); */ ::null_set_videoGamma( m_videoOutput, value ); } bool Lib::isScaling() const { assert( m_initialized ); |