summaryrefslogtreecommitdiff
authorsimon <simon>2002-12-13 22:40:57 (UTC)
committer simon <simon>2002-12-13 22:40:57 (UTC)
commitd178168d0980e62d6ce1acb92b6b62c07b64ea34 (patch) (unidiff)
tree666c8db2a8351d64d9e3e9d16ca202be6a31a16b
parent24a30625ec822a7c55e4d4175c5fe40ba05c883e (diff)
downloadopie-d178168d0980e62d6ce1acb92b6b62c07b64ea34.zip
opie-d178168d0980e62d6ce1acb92b6b62c07b64ea34.tar.gz
opie-d178168d0980e62d6ce1acb92b6b62c07b64ea34.tar.bz2
- prepare the API for threaded initialization, step one
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp16
-rw-r--r--noncore/multimedia/opieplayer2/lib.h13
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp2
3 files changed, 26 insertions, 5 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 1e0dc21..6431de7 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -57,51 +57,65 @@ extern "C" {
57 xine_vo_driver_t* init_video_out_plugin( xine_t *xine, void* video, display_xine_frame_t, void * ); 57 xine_vo_driver_t* init_video_out_plugin( xine_t *xine, void* video, display_xine_frame_t, void * );
58 int null_is_showing_video( const xine_vo_driver_t* self ); 58 int null_is_showing_video( const xine_vo_driver_t* self );
59 void null_set_show_video( const xine_vo_driver_t* self, int show ); 59 void null_set_show_video( const xine_vo_driver_t* self, int show );
60 int null_is_fullscreen( const xine_vo_driver_t* self ); 60 int null_is_fullscreen( const xine_vo_driver_t* self );
61 void null_set_fullscreen( const xine_vo_driver_t* self, int screen ); 61 void null_set_fullscreen( const xine_vo_driver_t* self, int screen );
62 int null_is_scaling( const xine_vo_driver_t* self ); 62 int null_is_scaling( const xine_vo_driver_t* self );
63 void null_set_scaling( const xine_vo_driver_t* self, int scale ); 63 void null_set_scaling( const xine_vo_driver_t* self, int scale );
64 void null_set_gui_width( const xine_vo_driver_t* self, int width ); 64 void null_set_gui_width( const xine_vo_driver_t* self, int width );
65 void null_set_gui_height( const xine_vo_driver_t* self, int height ); 65 void null_set_gui_height( const xine_vo_driver_t* self, int height );
66 void null_set_mode( const xine_vo_driver_t* self, int depth, int rgb ); 66 void null_set_mode( const xine_vo_driver_t* self, int depth, int rgb );
67 void null_set_videoGamma( const xine_vo_driver_t* self , int value ); 67 void null_set_videoGamma( const xine_vo_driver_t* self , int value );
68 void null_display_handler( const xine_vo_driver_t* self, display_xine_frame_t t, void* user_data ); 68 void null_display_handler( const xine_vo_driver_t* self, display_xine_frame_t t, void* user_data );
69} 69}
70 70
71using namespace XINE; 71using namespace XINE;
72 72
73Lib::Lib( XineVideoWidget* widget ) 73Lib::Lib( InitializationMode initMode, XineVideoWidget* widget )
74{ 74{
75 m_video = false; 75 m_video = false;
76 m_wid = widget; 76 m_wid = widget;
77 printf("Lib"); 77 printf("Lib");
78 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; 78 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf";
79 // get the configuration 79 // get the configuration
80 80
81 // not really OO, should be an extra class, later 81 // not really OO, should be an extra class, later
82 if ( !QFile::exists(configPath) ) { 82 if ( !QFile::exists(configPath) ) {
83 QFile f(configPath); 83 QFile f(configPath);
84 f.open(IO_WriteOnly); 84 f.open(IO_WriteOnly);
85 QTextStream ts( &f ); 85 QTextStream ts( &f );
86 ts << "misc.memcpy_method:glibc\n"; 86 ts << "misc.memcpy_method:glibc\n";
87 f.close(); 87 f.close();
88 } 88 }
89 89
90 if ( initMode == InitializeImmediately )
91 initialize();
92 else
93 assert( false );
94}
95
96void Lib::run()
97{
98 assert( false );
99}
100
101void Lib::initialize()
102{
90 m_xine = xine_new( ); 103 m_xine = xine_new( );
91 104
105 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf";
92 xine_config_load( m_xine, QFile::encodeName( configPath ) ); 106 xine_config_load( m_xine, QFile::encodeName( configPath ) );
93 107
94 xine_init( m_xine ); 108 xine_init( m_xine );
95 109
96 // allocate oss for sound 110 // allocate oss for sound
97 // and fb for framebuffer 111 // and fb for framebuffer
98 m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); 112 m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL );
99 m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); 113 m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this );
100 114
101 115
102//xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL); 116//xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL);
103 117
104 118
105// null_display_handler( m_videoOutput, xine_display_frame, this ); 119// null_display_handler( m_videoOutput, xine_display_frame, this );
106 120
107 m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); 121 m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput );
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h
index aba2ec9..6363918 100644
--- a/noncore/multimedia/opieplayer2/lib.h
+++ b/noncore/multimedia/opieplayer2/lib.h
@@ -42,44 +42,47 @@
42//#include "xine.h" 42//#include "xine.h"
43 43
44#include "threadutil.h" 44#include "threadutil.h"
45 45
46class XineVideoWidget; 46class XineVideoWidget;
47 47
48namespace XINE { 48namespace XINE {
49 49
50 /** 50 /**
51 * Lib wrapps the simple interface 51 * Lib wrapps the simple interface
52 * of libxine for easy every day use 52 * of libxine for easy every day use
53 * This will become a full C++ Wrapper 53 * This will become a full C++ Wrapper
54 * It supports playing, pausing, info, 54 * It supports playing, pausing, info,
55 * stooping, seeking. 55 * stooping, seeking.
56 */ 56 */
57 class Frame; 57 class Frame;
58 class Lib : public ThreadUtil::Channel 58 class Lib : public ThreadUtil::Channel, private ThreadUtil::Thread
59 { 59 {
60 Q_OBJECT 60 Q_OBJECT
61 public: 61 public:
62 Lib(XineVideoWidget* = 0); 62 enum InitializationMode { InitializeImmediately, InitializeInThread };
63
64 Lib( InitializationMode initMode, XineVideoWidget* = 0);
65
63 ~Lib(); 66 ~Lib();
64 static int majorVersion(); 67 static int majorVersion();
65 static int minorVersion(); 68 static int minorVersion();
66 static int subVersion(); 69 static int subVersion();
67 70
68 71
69 void resize ( const QSize &s ); 72 void resize ( const QSize &s );
70 73
71 int play( const QString& fileName, 74 int play( const QString& fileName,
72 int startPos = 0, 75 int startPos = 0,
73 int start_time = 0 ); 76 int start_time = 0 );
74 void stop(); 77 void stop();
75 void pause( bool toggle ); 78 void pause( bool toggle );
76 79
77 int speed() const; 80 int speed() const;
78 81
79 /** 82 /**
80 * Set the speed of the stream, if codec supports it 83 * Set the speed of the stream, if codec supports it
81 * XINE_SPEED_PAUSE 0 84 * XINE_SPEED_PAUSE 0
82 * XINE_SPEED_SLOW_4 1 85 * XINE_SPEED_SLOW_4 1
83 * XINE_SPEED_SLOW_2 2 86 * XINE_SPEED_SLOW_2 2
84 * XINE_SPEED_NORMAL 4 87 * XINE_SPEED_NORMAL 4
85 * XINE_SPEED_FAST_2 8 88 * XINE_SPEED_FAST_2 8
@@ -170,33 +173,37 @@ namespace XINE {
170 * XINE_ERROR_NONE 0 173 * XINE_ERROR_NONE 0
171 * XINE_ERROR_NO_INPUT_PLUGIN 1 174 * XINE_ERROR_NO_INPUT_PLUGIN 1
172 * XINE_ERROR_NO_DEMUXER_PLUGIN 2 175 * XINE_ERROR_NO_DEMUXER_PLUGIN 2
173 * XINE_ERROR_DEMUXER_FAILED 3 176 * XINE_ERROR_DEMUXER_FAILED 3
174 */ 177 */
175 int error() const; 178 int error() const;
176 179
177 signals: 180 signals:
178 181
179 void stopped(); 182 void stopped();
180 183
181 void initialized(); 184 void initialized();
182 185
183 protected: 186 protected:
184 virtual void receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ); 187 virtual void receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType );
185 188
189 virtual void run();
190
186 private: 191 private:
192 void initialize();
193
187 int m_bytes_per_pixel; 194 int m_bytes_per_pixel;
188 bool m_video:1; 195 bool m_video:1;
189 XineVideoWidget *m_wid; 196 XineVideoWidget *m_wid;
190 xine_t *m_xine; 197 xine_t *m_xine;
191 xine_stream_t *m_stream; 198 xine_stream_t *m_stream;
192 xine_cfg_entry_t *m_config; 199 xine_cfg_entry_t *m_config;
193 xine_vo_driver_t *m_videoOutput; 200 xine_vo_driver_t *m_videoOutput;
194 xine_ao_driver_t* m_audioOutput; 201 xine_ao_driver_t* m_audioOutput;
195 xine_event_queue_t *m_queue; 202 xine_event_queue_t *m_queue;
196 203
197 void handleXineEvent( const xine_event_t* t ); 204 void handleXineEvent( const xine_event_t* t );
198 void handleXineEvent( int type ); 205 void handleXineEvent( int type );
199 void drawFrame( uint8_t* frame, int width, int height, int bytes ); 206 void drawFrame( uint8_t* frame, int width, int height, int bytes );
200 // C -> C++ bridge for the event system 207 // C -> C++ bridge for the event system
201 static void xine_event_handler( void* user_data, const xine_event_t* t); 208 static void xine_event_handler( void* user_data, const xine_event_t* t);
202 static void xine_display_frame( void* user_data, uint8_t* frame , 209 static void xine_display_frame( void* user_data, uint8_t* frame ,
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index efa9934..1aa3daa 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -33,33 +33,33 @@
33 33
34 34
35#include <qtimer.h> 35#include <qtimer.h>
36#include <qmessagebox.h> 36#include <qmessagebox.h>
37#include <qpe/qcopenvelope_qws.h> 37#include <qpe/qcopenvelope_qws.h>
38#include <qpe/qpeapplication.h> 38#include <qpe/qpeapplication.h>
39#include "xinecontrol.h" 39#include "xinecontrol.h"
40#include "mediaplayerstate.h" 40#include "mediaplayerstate.h"
41#include "xinevideowidget.h" 41#include "xinevideowidget.h"
42 42
43XineControl::XineControl( XineVideoWidget *xineWidget, 43XineControl::XineControl( XineVideoWidget *xineWidget,
44 MediaPlayerState &_mediaPlayerState, 44 MediaPlayerState &_mediaPlayerState,
45 QObject *parent, const char *name ) 45 QObject *parent, const char *name )
46 : QObject( parent, name ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget ) 46 : QObject( parent, name ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
47{ 47{
48 48
49 libXine = new XINE::Lib( xineWidget ); 49 libXine = new XINE::Lib( XINE::Lib::InitializeImmediately, xineWidget );
50 50
51 init(); 51 init();
52} 52}
53 53
54XineControl::XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget, 54XineControl::XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget,
55 MediaPlayerState &_mediaPlayerState, 55 MediaPlayerState &_mediaPlayerState,
56 QObject *parent, const char *name ) 56 QObject *parent, const char *name )
57 : QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget ) 57 : QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
58{ 58{
59 init(); 59 init();
60} 60}
61 61
62void XineControl::init() 62void XineControl::init()
63{ 63{
64 connect( &mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pause( bool ) ) ); 64 connect( &mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pause( bool ) ) );
65 connect( this, SIGNAL( positionChanged( long ) ), &mediaPlayerState, SLOT( updatePosition( long ) ) ); 65 connect( this, SIGNAL( positionChanged( long ) ), &mediaPlayerState, SLOT( updatePosition( long ) ) );