summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp63
-rw-r--r--noncore/multimedia/opieplayer2/lib.h6
2 files changed, 32 insertions, 37 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index c0e5acd..1ebbbd8 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -88,4 +88,5 @@ Lib::Lib( XineVideoWidget* widget ) {
xine_config_load( m_xine, str.data() );
+ xine_init( m_xine );
// allocate oss for sound
@@ -99,5 +100,6 @@ Lib::Lib( XineVideoWidget* widget ) {
null_display_handler( m_videoOutput, xine_display_frame, this );
- xine_init( m_xine, m_audioOutput, m_videoOutput );
+
+ m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput );
if (m_wid != 0 ) {
@@ -109,10 +111,11 @@ Lib::Lib( XineVideoWidget* widget ) {
}
- xine_register_event_listener( m_xine, xine_event_handler, this );
+ m_queue = xine_event_new_queue (m_stream);
+
+ xine_event_create_listener_thread (m_queue, xine_event_handler, this);
}
Lib::~Lib() {
// free( m_config );
- xine_remove_event_listener( m_xine, xine_event_handler );
xine_exit( m_xine );
/* FIXME either free or delete but valgrind bitches against both */
@@ -151,53 +154,53 @@ int Lib::subVersion() {
int Lib::play( const QString& fileName, int startPos, int start_time ) {
QString str = fileName.stripWhiteSpace();
- if ( !xine_open( m_xine, QFile::encodeName(str.utf8() ).data() ) ) {
+ if ( !xine_open( m_stream, QFile::encodeName(str.utf8() ).data() ) ) {
return 0;
}
- return xine_play( m_xine, startPos, start_time);
+ return xine_play( m_stream, startPos, start_time);
}
void Lib::stop() {
qDebug("<<<<<<<< STOP IN LIB TRIGGERED >>>>>>>");
- xine_stop( m_xine );
+ xine_stop( m_stream );
}
void Lib::pause() {
- xine_set_param( m_xine, XINE_PARAM_SPEED, XINE_SPEED_PAUSE );
+ xine_set_param( m_stream, XINE_PARAM_SPEED, XINE_SPEED_PAUSE );
}
int Lib::speed() {
- return xine_get_param ( m_xine, XINE_PARAM_SPEED );
+ return xine_get_param ( m_stream, XINE_PARAM_SPEED );
}
void Lib::setSpeed( int speed ) {
- xine_set_param ( m_xine, XINE_PARAM_SPEED, speed );
+ xine_set_param ( m_stream, XINE_PARAM_SPEED, speed );
}
int Lib::status() {
- return xine_get_status( m_xine );
+ return xine_get_status( m_stream );
}
int Lib::currentPosition() {
- xine_get_pos_length( m_xine, &m_pos, &m_time, &m_length );
+ xine_get_pos_length( m_stream, &m_pos, &m_time, &m_length );
return m_pos;
}
int Lib::currentTime() {
- xine_get_pos_length( m_xine, &m_pos, &m_time, &m_length );
+ xine_get_pos_length( m_stream, &m_pos, &m_time, &m_length );
return m_time/1000;
}
int Lib::length() {
- xine_get_pos_length( m_xine, &m_pos, &m_time, &m_length );
+ xine_get_pos_length( m_stream, &m_pos, &m_time, &m_length );
return m_length/1000;
}
bool Lib::isSeekable() {
- return xine_get_stream_info( m_xine, XINE_STREAM_INFO_SEEKABLE );
+ return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE );
}
void Lib::seekTo( int time ) {
-// xine_trick_mode ( m_xine, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_(
- xine_play( m_xine, 0, time );
+ //xine_trick_mode ( m_stream, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_(
+ xine_play( m_stream, 0, time );
}
@@ -209,13 +212,13 @@ Frame Lib::currentFrame() {
QString Lib::metaInfo( int number) {
- return xine_get_meta_info( m_xine, number );
+ return xine_get_meta_info( m_stream, number );
}
int Lib::error() {
- return xine_get_error( m_xine );
+ return xine_get_error( m_stream );
};
-void Lib::handleXineEvent( xine_event_t* t ) {
- if ( t->type == XINE_EVENT_PLAYBACK_FINISHED ) {
+void Lib::handleXineEvent( const xine_event_t* t ) {
+ if ( t->type == XINE_EVENT_UI_PLAYBACK_FINISHED ) {
emit stopped();
}
@@ -233,15 +236,5 @@ bool Lib::isShowingVideo() {
bool Lib::hasVideo() {
- //looks like it is not implemented yet
- //return xine_get_stream_info( m_xine, XINE_STREAM_INFO_VIDEO_CHANNELS );
- // ugly hack until xine is ready, look for the width of the video
- int test = xine_get_stream_info( m_xine, 2 );
- if( test > 0 ) {
- // qDebug( QString(" has video: %1").arg( test ) );
- return true;
- } else {
- //qDebug ( "does not have video ");
- return false;
- }
+ return xine_get_stream_info( m_stream, 18 );
}
@@ -259,7 +252,7 @@ void Lib::setScaling( bool scale ) {
void Lib::setGamma( int value ) {
- //qDebug( QString( "%1").arg(value) );
- int gammaValue = ( 100 + value );
- ::null_set_videoGamma( m_videoOutput, value );
+ //qDebug( QString( "%1").arg(value) );
+ /* int gammaValue = ( 100 + value ); */
+ ::null_set_videoGamma( m_videoOutput, value );
}
@@ -268,5 +261,5 @@ bool Lib::isScaling() {
}
-void Lib::xine_event_handler( void* user_data, xine_event_t* t ) {
+void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) {
( (Lib*)user_data)->handleXineEvent( t );
}
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h
index 6cdd9c6..191dbbd 100644
--- a/noncore/multimedia/opieplayer2/lib.h
+++ b/noncore/multimedia/opieplayer2/lib.h
@@ -181,12 +181,14 @@ namespace XINE {
XineVideoWidget *m_wid;
xine_t *m_xine;
+ xine_stream_t *m_stream;
xine_cfg_entry_t *m_config;
xine_vo_driver_t *m_videoOutput;
xine_ao_driver_t* m_audioOutput;
+ xine_event_queue_t *m_queue;
- void handleXineEvent( xine_event_t* t );
+ void handleXineEvent( const xine_event_t* t );
void drawFrame( uint8_t* frame, int width, int height, int bytes );
// C -> C++ bridge for the event system
- static void xine_event_handler( void* user_data, xine_event_t* t);
+ static void xine_event_handler( void* user_data, const xine_event_t* t);
static void xine_display_frame( void* user_data, uint8_t* frame ,
int width, int height, int bytes );