Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 39 |
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() | |||
127 | 127 | ||
128 | // allocate oss for sound | 128 | // allocate oss for sound |
129 | // and fb for framebuffer | 129 | // and fb for framebuffer |
130 | m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); | 130 | m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); |
131 | m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); | 131 | m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); |
132 | 132 | ||
133 | |||
134 | //xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL); | ||
135 | |||
136 | |||
137 | // null_display_handler( m_videoOutput, xine_display_frame, this ); | ||
138 | |||
139 | m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); | 133 | m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); |
140 | 134 | ||
141 | if (m_wid != 0 ) { | 135 | if (m_wid != 0 ) |
142 | printf( "!0\n" ); | ||
143 | setWidget( m_wid ); | 136 | setWidget( m_wid ); |
144 | } | ||
145 | 137 | ||
146 | m_queue = xine_event_new_queue (m_stream); | ||
147 | 138 | ||
139 | m_queue = xine_event_new_queue (m_stream); | ||
148 | xine_event_create_listener_thread (m_queue, xine_event_handler, this); | 140 | xine_event_create_listener_thread (m_queue, xine_event_handler, this); |
149 | 141 | ||
150 | ::null_preload_decoders( m_stream ); | 142 | ::null_preload_decoders( m_stream ); |
151 | 143 | ||
152 | m_duringInitialization = false; | 144 | m_duringInitialization = false; |
153 | } | 145 | } |
@@ -156,18 +148,16 @@ Lib::~Lib() { | |||
156 | assert( isRunning() == false ); | 148 | assert( isRunning() == false ); |
157 | assert( m_initialized ); | 149 | assert( m_initialized ); |
158 | 150 | ||
159 | // free( m_config ); | 151 | // free( m_config ); |
160 | 152 | ||
161 | xine_close( m_stream ); | 153 | xine_close( m_stream ); |
162 | |||
163 | xine_event_dispose_queue( m_queue ); | 154 | xine_event_dispose_queue( m_queue ); |
164 | |||
165 | xine_dispose( m_stream ); | 155 | xine_dispose( m_stream ); |
166 | |||
167 | xine_exit( m_xine ); | 156 | xine_exit( m_xine ); |
157 | |||
168 | /* FIXME either free or delete but valgrind bitches against both */ | 158 | /* FIXME either free or delete but valgrind bitches against both */ |
169 | //free( m_videoOutput ); | 159 | //free( m_videoOutput ); |
170 | //delete m_audioOutput; | 160 | //delete m_audioOutput; |
171 | } | 161 | } |
172 | 162 | ||
173 | void Lib::resize ( const QSize &s ) { | 163 | void Lib::resize ( const QSize &s ) { |
@@ -196,32 +186,24 @@ int Lib::subVersion() { | |||
196 | xine_get_version ( &major, &minor, &sub ); | 186 | xine_get_version ( &major, &minor, &sub ); |
197 | return sub; | 187 | return sub; |
198 | } | 188 | } |
199 | 189 | ||
200 | int Lib::play( const QString& fileName, int startPos, int start_time ) { | 190 | int Lib::play( const QString& fileName, int startPos, int start_time ) { |
201 | assert( m_initialized ); | 191 | assert( m_initialized ); |
202 | // FIXME actually a hack imho. Should not be needed to dispose the whole stream | ||
203 | // but without we get wrong media length reads from libxine for the second media | ||
204 | //xine_dispose ( m_stream ); | ||
205 | 192 | ||
206 | QString str = fileName.stripWhiteSpace(); | 193 | QString str = fileName.stripWhiteSpace(); |
207 | 194 | ||
208 | //m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); | ||
209 | //m_queue = xine_event_new_queue (m_stream); | ||
210 | //xine_event_create_listener_thread (m_queue, xine_event_handler, this); | ||
211 | 195 | ||
212 | if ( !xine_open( m_stream, str.utf8().data() ) ) { | 196 | if ( !xine_open( m_stream, str.utf8().data() ) ) { |
213 | return 0; | 197 | return 0; |
214 | } | 198 | } |
215 | return xine_play( m_stream, startPos, start_time); | 199 | return xine_play( m_stream, startPos, start_time); |
216 | } | 200 | } |
217 | 201 | ||
218 | void Lib::stop() { | 202 | void Lib::stop() { |
219 | assert( m_initialized ); | 203 | assert( m_initialized ); |
220 | |||
221 | odebug << "<<<<<<<< STOP IN LIB TRIGGERED >>>>>>>" << oendl; | ||
222 | xine_stop( m_stream ); | 204 | xine_stop( m_stream ); |
223 | } | 205 | } |
224 | 206 | ||
225 | void Lib::pause( bool toggle ) { | 207 | void Lib::pause( bool toggle ) { |
226 | assert( m_initialized ); | 208 | assert( m_initialized ); |
227 | 209 | ||
@@ -255,18 +237,18 @@ int Lib::currentPosition() const { | |||
255 | } | 237 | } |
256 | 238 | ||
257 | int Lib::currentTime() const { | 239 | int Lib::currentTime() const { |
258 | assert( m_initialized ); | 240 | assert( m_initialized ); |
259 | 241 | ||
260 | int pos, time, length; | 242 | int pos, time, length; |
261 | xine_get_pos_length( m_stream, &pos, &time, &length ); | 243 | pos = time = length = 0; |
262 | if ( time > 0 ) { | 244 | |
245 | if ( xine_get_pos_length( m_stream, &pos, &time, &length ) ) | ||
263 | return time/1000; | 246 | return time/1000; |
264 | } else { | 247 | else |
265 | return 0; | 248 | return 0; |
266 | } | ||
267 | } | 249 | } |
268 | 250 | ||
269 | int Lib::length() const { | 251 | int Lib::length() const { |
270 | assert( m_initialized ); | 252 | assert( m_initialized ); |
271 | 253 | ||
272 | int pos, time, length; | 254 | int pos, time, length; |
@@ -297,14 +279,12 @@ bool Lib::isSeekable() const { | |||
297 | return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE ); | 279 | return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE ); |
298 | } | 280 | } |
299 | 281 | ||
300 | void Lib::seekTo( int time ) { | 282 | void Lib::seekTo( int time ) { |
301 | assert( m_initialized ); | 283 | assert( m_initialized ); |
302 | 284 | ||
303 | //xine_trick_mode ( m_stream, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_( | ||
304 | // since its now milliseconds we need *1000 | ||
305 | xine_play( m_stream, 0, time*1000 ); | 285 | xine_play( m_stream, 0, time*1000 ); |
306 | } | 286 | } |
307 | 287 | ||
308 | 288 | ||
309 | Frame Lib::currentFrame() const { | 289 | Frame Lib::currentFrame() const { |
310 | assert( m_initialized ); | 290 | assert( m_initialized ); |
@@ -422,13 +402,12 @@ void Lib::xine_display_frame( void* user_data, uint8_t *frame, | |||
422 | } | 402 | } |
423 | 403 | ||
424 | void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) { | 404 | void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) { |
425 | assert( m_initialized ); | 405 | assert( m_initialized ); |
426 | 406 | ||
427 | if ( !m_video ) { | 407 | if ( !m_video ) { |
428 | owarn << "not showing video now" << oendl; | ||
429 | return; | 408 | return; |
430 | } | 409 | } |
431 | 410 | ||
432 | assert( m_wid ); | 411 | assert( m_wid ); |
433 | 412 | ||
434 | m_wid-> setVideoFrame ( frame, width, height, bytes ); | 413 | m_wid-> setVideoFrame ( frame, width, height, bytes ); |