summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/lib.cpp
Side-by-side diff
Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp39
1 files changed, 9 insertions, 30 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;
+ 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,18 +237,18 @@ 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;
@@ -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 );