Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 35 |
1 files changed, 7 insertions, 28 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 | |||
@@ -130,21 +130,13 @@ void Lib::initialize() | |||
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 ); |
@@ -159,12 +151,10 @@ Lib::~Lib() { | |||
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; |
@@ -199,15 +189,9 @@ int Lib::subVersion() { | |||
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; |
@@ -217,8 +201,6 @@ int Lib::play( const QString& fileName, int startPos, int start_time ) { | |||
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 | ||
@@ -258,13 +240,13 @@ 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 | } | 249 | } |
267 | } | ||
268 | 250 | ||
269 | int Lib::length() const { | 251 | int Lib::length() const { |
270 | assert( m_initialized ); | 252 | assert( m_initialized ); |
@@ -300,8 +282,6 @@ bool Lib::isSeekable() const { | |||
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 | ||
@@ -425,7 +405,6 @@ 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 | ||