Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index 248221b..8afb318 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp @@ -127,27 +127,19 @@ void Lib::initialize() // allocate oss for sound // and fb for framebuffer m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); - -//xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL); - - -// null_display_handler( m_videoOutput, xine_display_frame, this ); - m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); - if (m_wid != 0 ) { - printf( "!0\n" ); + if (m_wid != 0 ) setWidget( m_wid ); - } - m_queue = xine_event_new_queue (m_stream); + m_queue = xine_event_new_queue (m_stream); xine_event_create_listener_thread (m_queue, xine_event_handler, this); ::null_preload_decoders( m_stream ); m_duringInitialization = false; } @@ -156,18 +148,16 @@ Lib::~Lib() { assert( isRunning() == false ); assert( m_initialized ); // free( m_config ); xine_close( m_stream ); - xine_event_dispose_queue( m_queue ); - xine_dispose( m_stream ); - xine_exit( m_xine ); + /* FIXME either free or delete but valgrind bitches against both */ //free( m_videoOutput ); //delete m_audioOutput; } void Lib::resize ( const QSize &s ) { @@ -196,32 +186,24 @@ 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, str.utf8().data() ) ) { return 0; } return xine_play( m_stream, startPos, start_time); } void Lib::stop() { assert( m_initialized ); - - odebug << "<<<<<<<< STOP IN LIB TRIGGERED >>>>>>>" << oendl; xine_stop( m_stream ); } void Lib::pause( bool toggle ) { assert( m_initialized ); @@ -255,19 +237,19 @@ 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 ) { + pos = time = length = 0; + + if ( xine_get_pos_length( m_stream, &pos, &time, &length ) ) return time/1000; - } else { + else return 0; } -} int Lib::length() const { assert( m_initialized ); int pos, time, length; /* dilb: patch to solve the wrong stream length reported to the GUI*/ @@ -297,14 +279,12 @@ bool Lib::isSeekable() const { return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE ); } void Lib::seekTo( int time ) { assert( m_initialized ); - //xine_trick_mode ( m_stream, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_( - // since its now milliseconds we need *1000 xine_play( m_stream, 0, time*1000 ); } Frame Lib::currentFrame() const { assert( m_initialized ); @@ -422,13 +402,12 @@ void Lib::xine_display_frame( void* user_data, uint8_t *frame, } void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) { assert( m_initialized ); if ( !m_video ) { - owarn << "not showing video now" << oendl; return; } assert( m_wid ); m_wid-> setVideoFrame ( frame, width, height, bytes ); |