author | zecke <zecke> | 2004-09-23 21:38:02 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-23 21:38:02 (UTC) |
commit | 97ab73d99688443d02086b4f00d1de7c81faa3c7 (patch) (unidiff) | |
tree | 63864e847abc41442d2ed88ca27a27ad1942c15a /noncore/multimedia/opieplayer2/lib.cpp | |
parent | 3080b2095fd9dddc4937cbf74037ce1dbc7fa6b2 (diff) | |
download | opie-97ab73d99688443d02086b4f00d1de7c81faa3c7.zip opie-97ab73d99688443d02086b4f00d1de7c81faa3c7.tar.gz opie-97ab73d99688443d02086b4f00d1de7c81faa3c7.tar.bz2 |
-Remove bogus whitespaces
-Remove stl dependency
-Make switching from fullscreen video to audio work
-Remove debug output
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 | |||
@@ -121,59 +121,49 @@ void Lib::initialize() | |||
121 | m_xine = xine_new( ); | 121 | m_xine = xine_new( ); |
122 | 122 | ||
123 | QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; | 123 | QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; |
124 | xine_config_load( m_xine, QFile::encodeName( configPath ) ); | 124 | xine_config_load( m_xine, QFile::encodeName( configPath ) ); |
125 | 125 | ||
126 | xine_init( m_xine ); | 126 | xine_init( m_xine ); |
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 | } |
154 | 146 | ||
155 | Lib::~Lib() { | 147 | 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 ) { |
174 | assert( m_initialized || m_duringInitialization ); | 164 | assert( m_initialized || m_duringInitialization ); |
175 | 165 | ||
176 | if ( s. width ( ) && s. height ( ) ) { | 166 | if ( s. width ( ) && s. height ( ) ) { |
177 | ::null_set_gui_width( m_videoOutput, s. width() ); | 167 | ::null_set_gui_width( m_videoOutput, s. width() ); |
178 | ::null_set_gui_height( m_videoOutput, s. height() ); | 168 | ::null_set_gui_height( m_videoOutput, s. height() ); |
179 | } | 169 | } |
@@ -190,44 +180,36 @@ int Lib::minorVersion() { | |||
190 | xine_get_version ( &major, &minor, &sub ); | 180 | xine_get_version ( &major, &minor, &sub ); |
191 | return minor; | 181 | return minor; |
192 | } | 182 | } |
193 | 183 | ||
194 | int Lib::subVersion() { | 184 | int Lib::subVersion() { |
195 | int major, minor, sub; | 185 | int major, minor, sub; |
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 | ||
228 | xine_set_param( m_stream, XINE_PARAM_SPEED, toggle ? XINE_SPEED_PAUSE : XINE_SPEED_NORMAL ); | 210 | xine_set_param( m_stream, XINE_PARAM_SPEED, toggle ? XINE_SPEED_PAUSE : XINE_SPEED_NORMAL ); |
229 | } | 211 | } |
230 | 212 | ||
231 | int Lib::speed() const { | 213 | int Lib::speed() const { |
232 | assert( m_initialized ); | 214 | assert( m_initialized ); |
233 | 215 | ||
@@ -249,30 +231,30 @@ int Lib::status() const { | |||
249 | int Lib::currentPosition() const { | 231 | int Lib::currentPosition() const { |
250 | assert( m_initialized ); | 232 | assert( m_initialized ); |
251 | 233 | ||
252 | int pos, time, length; | 234 | int pos, time, length; |
253 | xine_get_pos_length( m_stream, &pos, &time, &length ); | 235 | xine_get_pos_length( m_stream, &pos, &time, &length ); |
254 | return pos; | 236 | return pos; |
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; |
273 | /* dilb: patch to solve the wrong stream length reported to the GUI*/ | 255 | /* dilb: patch to solve the wrong stream length reported to the GUI*/ |
274 | int iRetVal=0, iTestLoop=0; | 256 | int iRetVal=0, iTestLoop=0; |
275 | 257 | ||
276 | do | 258 | do |
277 | { | 259 | { |
278 | iRetVal = xine_get_pos_length( m_stream, &pos, &time, &length ); | 260 | iRetVal = xine_get_pos_length( m_stream, &pos, &time, &length ); |
@@ -291,26 +273,24 @@ unseekable, but it should never occur!! Mr. Murphy ? :) ) */ | |||
291 | return -1; | 273 | return -1; |
292 | } | 274 | } |
293 | 275 | ||
294 | bool Lib::isSeekable() const { | 276 | bool Lib::isSeekable() const { |
295 | assert( m_initialized ); | 277 | assert( m_initialized ); |
296 | 278 | ||
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 ); |
311 | 291 | ||
312 | Frame frame; | 292 | Frame frame; |
313 | return frame; | 293 | return frame; |
314 | }; | 294 | }; |
315 | 295 | ||
316 | QString Lib::metaInfo( int number) const { | 296 | QString Lib::metaInfo( int number) const { |
@@ -416,20 +396,19 @@ void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) { | |||
416 | ( (Lib*)user_data)->handleXineEvent( t ); | 396 | ( (Lib*)user_data)->handleXineEvent( t ); |
417 | } | 397 | } |
418 | 398 | ||
419 | void Lib::xine_display_frame( void* user_data, uint8_t *frame, | 399 | void Lib::xine_display_frame( void* user_data, uint8_t *frame, |
420 | int width, int height, int bytes ) { | 400 | int width, int height, int bytes ) { |
421 | ( (Lib*)user_data)->drawFrame( frame, width, height, bytes ); | 401 | ( (Lib*)user_data)->drawFrame( frame, width, height, bytes ); |
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 ); |
435 | } | 414 | } |