summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp58
-rw-r--r--noncore/multimedia/opieplayer2/lib.h1
2 files changed, 58 insertions, 1 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 6431de7..9d4b1be 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -69,12 +69,13 @@ extern "C" {
69} 69}
70 70
71using namespace XINE; 71using namespace XINE;
72 72
73Lib::Lib( InitializationMode initMode, XineVideoWidget* widget ) 73Lib::Lib( InitializationMode initMode, XineVideoWidget* widget )
74{ 74{
75 m_initialized = false;
75 m_video = false; 76 m_video = false;
76 m_wid = widget; 77 m_wid = widget;
77 printf("Lib"); 78 printf("Lib");
78 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; 79 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf";
79 // get the configuration 80 // get the configuration
80 81
@@ -84,14 +85,16 @@ Lib::Lib( InitializationMode initMode, XineVideoWidget* widget )
84 f.open(IO_WriteOnly); 85 f.open(IO_WriteOnly);
85 QTextStream ts( &f ); 86 QTextStream ts( &f );
86 ts << "misc.memcpy_method:glibc\n"; 87 ts << "misc.memcpy_method:glibc\n";
87 f.close(); 88 f.close();
88 } 89 }
89 90
90 if ( initMode == InitializeImmediately ) 91 if ( initMode == InitializeImmediately ) {
91 initialize(); 92 initialize();
93 m_initialized = true;
94 }
92 else 95 else
93 assert( false ); 96 assert( false );
94} 97}
95 98
96void Lib::run() 99void Lib::run()
97{ 100{
@@ -131,12 +134,15 @@ void Lib::initialize()
131 m_queue = xine_event_new_queue (m_stream); 134 m_queue = xine_event_new_queue (m_stream);
132 135
133 xine_event_create_listener_thread (m_queue, xine_event_handler, this); 136 xine_event_create_listener_thread (m_queue, xine_event_handler, this);
134} 137}
135 138
136Lib::~Lib() { 139Lib::~Lib() {
140 assert( isRunning() == false )
141 assert( m_initialized );
142
137// free( m_config ); 143// free( m_config );
138 144
139 xine_close( m_stream ); 145 xine_close( m_stream );
140 146
141 xine_event_dispose_queue( m_queue ); 147 xine_event_dispose_queue( m_queue );
142 148
@@ -146,12 +152,14 @@ Lib::~Lib() {
146 /* FIXME either free or delete but valgrind bitches against both */ 152 /* FIXME either free or delete but valgrind bitches against both */
147 //free( m_videoOutput ); 153 //free( m_videoOutput );
148 //delete m_audioOutput; 154 //delete m_audioOutput;
149} 155}
150 156
151void Lib::resize ( const QSize &s ) { 157void Lib::resize ( const QSize &s ) {
158 assert( m_initialized );
159
152 if ( s. width ( ) && s. height ( ) ) { 160 if ( s. width ( ) && s. height ( ) ) {
153 ::null_set_gui_width( m_videoOutput, s. width() ); 161 ::null_set_gui_width( m_videoOutput, s. width() );
154 ::null_set_gui_height( m_videoOutput, s. height() ); 162 ::null_set_gui_height( m_videoOutput, s. height() );
155 } 163 }
156} 164}
157 165
@@ -171,79 +179,107 @@ int Lib::subVersion() {
171 int major, minor, sub; 179 int major, minor, sub;
172 xine_get_version ( &major, &minor, &sub ); 180 xine_get_version ( &major, &minor, &sub );
173 return sub; 181 return sub;
174} 182}
175 183
176int Lib::play( const QString& fileName, int startPos, int start_time ) { 184int Lib::play( const QString& fileName, int startPos, int start_time ) {
185 assert( m_initialized );
186
177 QString str = fileName.stripWhiteSpace(); 187 QString str = fileName.stripWhiteSpace();
178 if ( !xine_open( m_stream, QFile::encodeName(str.utf8() ).data() ) ) { 188 if ( !xine_open( m_stream, QFile::encodeName(str.utf8() ).data() ) ) {
179 return 0; 189 return 0;
180 } 190 }
181 return xine_play( m_stream, startPos, start_time); 191 return xine_play( m_stream, startPos, start_time);
182} 192}
183 193
184void Lib::stop() { 194void Lib::stop() {
195 assert( m_initialized );
196
185 qDebug("<<<<<<<< STOP IN LIB TRIGGERED >>>>>>>"); 197 qDebug("<<<<<<<< STOP IN LIB TRIGGERED >>>>>>>");
186 xine_stop( m_stream ); 198 xine_stop( m_stream );
187} 199}
188 200
189void Lib::pause( bool toggle ) { 201void Lib::pause( bool toggle ) {
202 assert( m_initialized );
203
190 xine_set_param( m_stream, XINE_PARAM_SPEED, toggle ? XINE_SPEED_PAUSE : XINE_SPEED_NORMAL ); 204 xine_set_param( m_stream, XINE_PARAM_SPEED, toggle ? XINE_SPEED_PAUSE : XINE_SPEED_NORMAL );
191} 205}
192 206
193int Lib::speed() const { 207int Lib::speed() const {
208 assert( m_initialized );
209
194 return xine_get_param ( m_stream, XINE_PARAM_SPEED ); 210 return xine_get_param ( m_stream, XINE_PARAM_SPEED );
195} 211}
196 212
197void Lib::setSpeed( int speed ) { 213void Lib::setSpeed( int speed ) {
214 assert( m_initialized );
215
198 xine_set_param ( m_stream, XINE_PARAM_SPEED, speed ); 216 xine_set_param ( m_stream, XINE_PARAM_SPEED, speed );
199} 217}
200 218
201int Lib::status() const { 219int Lib::status() const {
220 assert( m_initialized );
221
202 return xine_get_status( m_stream ); 222 return xine_get_status( m_stream );
203} 223}
204 224
205int Lib::currentPosition() const { 225int Lib::currentPosition() const {
226 assert( m_initialized );
227
206 int pos, time, length; 228 int pos, time, length;
207 xine_get_pos_length( m_stream, &pos, &time, &length ); 229 xine_get_pos_length( m_stream, &pos, &time, &length );
208 return pos; 230 return pos;
209} 231}
210 232
211int Lib::currentTime() const { 233int Lib::currentTime() const {
234 assert( m_initialized );
235
212 int pos, time, length; 236 int pos, time, length;
213 xine_get_pos_length( m_stream, &pos, &time, &length ); 237 xine_get_pos_length( m_stream, &pos, &time, &length );
214 return time/1000; 238 return time/1000;
215} 239}
216 240
217int Lib::length() const { 241int Lib::length() const {
242 assert( m_initialized );
243
218 int pos, time, length; 244 int pos, time, length;
219 xine_get_pos_length( m_stream, &pos, &time, &length ); 245 xine_get_pos_length( m_stream, &pos, &time, &length );
220 return length/1000; 246 return length/1000;
221} 247}
222 248
223bool Lib::isSeekable() const { 249bool Lib::isSeekable() const {
250 assert( m_initialized );
251
224 return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE ); 252 return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE );
225} 253}
226 254
227void Lib::seekTo( int time ) { 255void Lib::seekTo( int time ) {
256 assert( m_initialized );
257
228 //xine_trick_mode ( m_stream, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_( 258 //xine_trick_mode ( m_stream, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_(
229 // since its now milliseconds we need *1000 259 // since its now milliseconds we need *1000
230 xine_play( m_stream, 0, time*1000 ); 260 xine_play( m_stream, 0, time*1000 );
231} 261}
232 262
233 263
234Frame Lib::currentFrame() const { 264Frame Lib::currentFrame() const {
265 assert( m_initialized );
266
235 Frame frame; 267 Frame frame;
236 return frame; 268 return frame;
237}; 269};
238 270
239QString Lib::metaInfo( int number) const { 271QString Lib::metaInfo( int number) const {
272 assert( m_initialized );
273
240 return xine_get_meta_info( m_stream, number ); 274 return xine_get_meta_info( m_stream, number );
241} 275}
242 276
243int Lib::error() const { 277int Lib::error() const {
278 assert( m_initialized );
279
244 return xine_get_error( m_stream ); 280 return xine_get_error( m_stream );
245}; 281};
246 282
247void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ) 283void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType )
248{ 284{
249 assert( sendType == ThreadUtil::Channel::OneWay ); 285 assert( sendType == ThreadUtil::Channel::OneWay );
@@ -253,50 +289,68 @@ void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType )
253 289
254void Lib::handleXineEvent( const xine_event_t* t ) { 290void Lib::handleXineEvent( const xine_event_t* t ) {
255 send( new ThreadUtil::ChannelMessage( t->type ), OneWay ); 291 send( new ThreadUtil::ChannelMessage( t->type ), OneWay );
256} 292}
257 293
258void Lib::handleXineEvent( int type ) { 294void Lib::handleXineEvent( int type ) {
295 assert( m_initialized );
296
259 if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) { 297 if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) {
260 emit stopped(); 298 emit stopped();
261 } 299 }
262} 300}
263 301
264 302
265void Lib::setShowVideo( bool video ) { 303void Lib::setShowVideo( bool video ) {
304 assert( m_initialized );
305
266 m_video = video; 306 m_video = video;
267 ::null_set_show_video( m_videoOutput, video ); 307 ::null_set_show_video( m_videoOutput, video );
268} 308}
269 309
270bool Lib::isShowingVideo() const { 310bool Lib::isShowingVideo() const {
311 assert( m_initialized );
312
271 return ::null_is_showing_video( m_videoOutput ); 313 return ::null_is_showing_video( m_videoOutput );
272} 314}
273 315
274bool Lib::hasVideo() const { 316bool Lib::hasVideo() const {
317 assert( m_initialized );
318
275 return xine_get_stream_info( m_stream, 18 ); 319 return xine_get_stream_info( m_stream, 18 );
276} 320}
277 321
278void Lib::showVideoFullScreen( bool fullScreen ) { 322void Lib::showVideoFullScreen( bool fullScreen ) {
323 assert( m_initialized );
324
279 ::null_set_fullscreen( m_videoOutput, fullScreen ); 325 ::null_set_fullscreen( m_videoOutput, fullScreen );
280} 326}
281 327
282bool Lib::isVideoFullScreen() const { 328bool Lib::isVideoFullScreen() const {
329 assert( m_initialized );
330
283 return ::null_is_fullscreen( m_videoOutput ); 331 return ::null_is_fullscreen( m_videoOutput );
284} 332}
285 333
286void Lib::setScaling( bool scale ) { 334void Lib::setScaling( bool scale ) {
335 assert( m_initialized );
336
287 ::null_set_scaling( m_videoOutput, scale ); 337 ::null_set_scaling( m_videoOutput, scale );
288} 338}
289 339
290void Lib::setGamma( int value ) { 340void Lib::setGamma( int value ) {
341 assert( m_initialized );
342
291 //qDebug( QString( "%1").arg(value) ); 343 //qDebug( QString( "%1").arg(value) );
292 /* int gammaValue = ( 100 + value ); */ 344 /* int gammaValue = ( 100 + value ); */
293 ::null_set_videoGamma( m_videoOutput, value ); 345 ::null_set_videoGamma( m_videoOutput, value );
294} 346}
295 347
296bool Lib::isScaling() const { 348bool Lib::isScaling() const {
349 assert( m_initialized );
350
297 return ::null_is_scaling( m_videoOutput ); 351 return ::null_is_scaling( m_videoOutput );
298} 352}
299 353
300void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) { 354void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) {
301 ( (Lib*)user_data)->handleXineEvent( t ); 355 ( (Lib*)user_data)->handleXineEvent( t );
302} 356}
@@ -304,12 +358,14 @@ void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) {
304void Lib::xine_display_frame( void* user_data, uint8_t *frame, 358void Lib::xine_display_frame( void* user_data, uint8_t *frame,
305 int width, int height, int bytes ) { 359 int width, int height, int bytes ) {
306 ( (Lib*)user_data)->drawFrame( frame, width, height, bytes ); 360 ( (Lib*)user_data)->drawFrame( frame, width, height, bytes );
307} 361}
308 362
309void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) { 363void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) {
364 assert( m_initialized );
365
310 if ( !m_video ) { 366 if ( !m_video ) {
311 qWarning("not showing video now"); 367 qWarning("not showing video now");
312 return; 368 return;
313 } 369 }
314 m_wid-> setVideoFrame ( frame, width, height, bytes ); 370 m_wid-> setVideoFrame ( frame, width, height, bytes );
315} 371}
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h
index 6363918..7e3a912 100644
--- a/noncore/multimedia/opieplayer2/lib.h
+++ b/noncore/multimedia/opieplayer2/lib.h
@@ -189,12 +189,13 @@ namespace XINE {
189 virtual void run(); 189 virtual void run();
190 190
191 private: 191 private:
192 void initialize(); 192 void initialize();
193 193
194 int m_bytes_per_pixel; 194 int m_bytes_per_pixel;
195 bool m_initialized:1;
195 bool m_video:1; 196 bool m_video:1;
196 XineVideoWidget *m_wid; 197 XineVideoWidget *m_wid;
197 xine_t *m_xine; 198 xine_t *m_xine;
198 xine_stream_t *m_stream; 199 xine_stream_t *m_stream;
199 xine_cfg_entry_t *m_config; 200 xine_cfg_entry_t *m_config;
200 xine_vo_driver_t *m_videoOutput; 201 xine_vo_driver_t *m_videoOutput;