author | zecke <zecke> | 2002-07-11 23:14:01 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-07-11 23:14:01 (UTC) |
commit | 5f010888acabe5d00504b05d159b2837ff115f05 (patch) (unidiff) | |
tree | 4c4b02679d0829d55e5b3ab02bf518cdadcf97c1 | |
parent | a7b8ef4096c17ba5e0ff96e9292a291390831e69 (diff) | |
download | opie-5f010888acabe5d00504b05d159b2837ff115f05.zip opie-5f010888acabe5d00504b05d159b2837ff115f05.tar.gz opie-5f010888acabe5d00504b05d159b2837ff115f05.tar.bz2 |
now play video
sandman saved my nite. Many thanks
-rw-r--r-- | noncore/multimedia/opieplayer2/nullvideo.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c index e50d7b5..f356e76 100644 --- a/noncore/multimedia/opieplayer2/nullvideo.c +++ b/noncore/multimedia/opieplayer2/nullvideo.c | |||
@@ -230,385 +230,385 @@ static void null_compute_ideal_size (null_driver_t *this, opie_frame_t *frame) { | |||
230 | } else { | 230 | } else { |
231 | frame->ideal_width = frame->width; | 231 | frame->ideal_width = frame->width; |
232 | frame->ideal_height = frame->height / corr_factor + 0.5; | 232 | frame->ideal_height = frame->height / corr_factor + 0.5; |
233 | } | 233 | } |
234 | 234 | ||
235 | } | 235 | } |
236 | } | 236 | } |
237 | printf("return from helper\n"); | 237 | printf("return from helper\n"); |
238 | } | 238 | } |
239 | 239 | ||
240 | static void null_compute_rgb_size (null_driver_t *this, opie_frame_t *frame) { | 240 | static void null_compute_rgb_size (null_driver_t *this, opie_frame_t *frame) { |
241 | 241 | ||
242 | double x_factor, y_factor; | 242 | double x_factor, y_factor; |
243 | 243 | ||
244 | /* | 244 | /* |
245 | * make the frame fit into the given destination area | 245 | * make the frame fit into the given destination area |
246 | */ | 246 | */ |
247 | 247 | ||
248 | x_factor = (double) this->gui_width / (double) frame->ideal_width; | 248 | x_factor = (double) this->gui_width / (double) frame->ideal_width; |
249 | y_factor = (double) this->gui_height / (double) frame->ideal_height; | 249 | y_factor = (double) this->gui_height / (double) frame->ideal_height; |
250 | 250 | ||
251 | if ( x_factor < y_factor ) { | 251 | if ( x_factor < y_factor ) { |
252 | frame->output_width = (double) frame->ideal_width * x_factor ; | 252 | frame->output_width = (double) frame->ideal_width * x_factor ; |
253 | frame->output_height = (double) frame->ideal_height * x_factor ; | 253 | frame->output_height = (double) frame->ideal_height * x_factor ; |
254 | } else { | 254 | } else { |
255 | frame->output_width = (double) frame->ideal_width * y_factor ; | 255 | frame->output_width = (double) frame->ideal_width * y_factor ; |
256 | frame->output_height = (double) frame->ideal_height * y_factor ; | 256 | frame->output_height = (double) frame->ideal_height * y_factor ; |
257 | } | 257 | } |
258 | 258 | ||
259 | #define LOG 1 | 259 | #define LOG 1 |
260 | #ifdef LOG | 260 | #ifdef LOG |
261 | printf("video_out_fb: frame source %d x %d => screen output %d x %d%s\n", | 261 | printf("video_out_fb: frame source %d x %d => screen output %d x %d%s\n", |
262 | frame->width, frame->height, | 262 | frame->width, frame->height, |
263 | frame->output_width, frame->output_height, | 263 | frame->output_width, frame->output_height, |
264 | ( frame->width != frame->output_width | 264 | ( frame->width != frame->output_width |
265 | || frame->height != frame->output_height | 265 | || frame->height != frame->output_height |
266 | ? ", software scaling" | 266 | ? ", software scaling" |
267 | : "" ) | 267 | : "" ) |
268 | ); | 268 | ); |
269 | #endif | 269 | #endif |
270 | } | 270 | } |
271 | 271 | ||
272 | 272 | ||
273 | // size specific | 273 | // size specific |
274 | 274 | ||
275 | 275 | ||
276 | static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, | 276 | static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, |
277 | uint32_t width, uint32_t height, | 277 | uint32_t width, uint32_t height, |
278 | int ratio_code, int format, int flags ){ | 278 | int ratio_code, int format, int flags ){ |
279 | null_driver_t* this = (null_driver_t*) self; | 279 | null_driver_t* this = (null_driver_t*) self; |
280 | opie_frame_t* frame = (opie_frame_t*)img; | 280 | opie_frame_t* frame = (opie_frame_t*)img; |
281 | /* not needed now */ | 281 | /* not needed now */ |
282 | printf("update_frame_format\n"); | 282 | printf("update_frame_format\n"); |
283 | printf("al crash aye?\n"); | 283 | printf("al crash aye?\n"); |
284 | 284 | ||
285 | flags &= VO_BOTH_FIELDS; | 285 | flags &= VO_BOTH_FIELDS; |
286 | 286 | ||
287 | /* find out if we need to adapt this frame */ | 287 | /* find out if we need to adapt this frame */ |
288 | 288 | ||
289 | if ((width != frame->width) | 289 | if ((width != frame->width) |
290 | || (height != frame->height) | 290 | || (height != frame->height) |
291 | || (ratio_code != frame->ratio_code) | 291 | || (ratio_code != frame->ratio_code) |
292 | || (flags != frame->flags) | 292 | || (flags != frame->flags) |
293 | || (format != frame->format) | 293 | || (format != frame->format) |
294 | || (this->user_ratio != frame->user_ratio) | 294 | || (this->user_ratio != frame->user_ratio) |
295 | || this->gui_changed ) { | 295 | || this->gui_changed ) { |
296 | 296 | ||
297 | frame->width = width; | 297 | frame->width = width; |
298 | frame->height = height; | 298 | frame->height = height; |
299 | frame->ratio_code = ratio_code; | 299 | frame->ratio_code = ratio_code; |
300 | frame->flags = flags; | 300 | frame->flags = flags; |
301 | frame->format = format; | 301 | frame->format = format; |
302 | frame->user_ratio = this->user_ratio; | 302 | frame->user_ratio = this->user_ratio; |
303 | this->gui_changed = 0; | 303 | this->gui_changed = 0; |
304 | frame->show_video = this->m_show_video; | 304 | frame->show_video = this->m_show_video; |
305 | 305 | ||
306 | 306 | ||
307 | null_compute_ideal_size (this, frame); | 307 | null_compute_ideal_size (this, frame); |
308 | null_compute_rgb_size (this, frame); | 308 | null_compute_rgb_size (this, frame); |
309 | 309 | ||
310 | /* | 310 | /* |
311 | * (re-) allocate | 311 | * (re-) allocate |
312 | */ | 312 | */ |
313 | if( frame->data ) { | 313 | if( frame->data ) { |
314 | if(frame->chunk[0] ){ | 314 | if(frame->chunk[0] ){ |
315 | free( frame->chunk[0] ); | 315 | free( frame->chunk[0] ); |
316 | frame->chunk[0] = NULL; | 316 | frame->chunk[0] = NULL; |
317 | } | 317 | } |
318 | if(frame->chunk[1] ){ | 318 | if(frame->chunk[1] ){ |
319 | free ( frame->chunk[1] ); | 319 | free ( frame->chunk[1] ); |
320 | frame->chunk[1] = NULL; | 320 | frame->chunk[1] = NULL; |
321 | } | 321 | } |
322 | if(frame->chunk[2] ){ | 322 | if(frame->chunk[2] ){ |
323 | free ( frame->chunk[2] ); | 323 | free ( frame->chunk[2] ); |
324 | frame->chunk[2] = NULL; | 324 | frame->chunk[2] = NULL; |
325 | } | 325 | } |
326 | free ( frame->data ); | 326 | free ( frame->data ); |
327 | } | 327 | } |
328 | printf("after freeing\n"); | 328 | printf("after freeing\n"); |
329 | frame->data = xine_xmalloc (frame->output_width * frame->output_height * | 329 | frame->data = xine_xmalloc (frame->output_width * frame->output_height * |
330 | this->bytes_per_pixel ); | 330 | this->bytes_per_pixel ); |
331 | 331 | ||
332 | if( format == IMGFMT_YV12 ) { | 332 | if( format == IMGFMT_YV12 ) { |
333 | int image_size = width * height; /* cast ouch*/ | 333 | int image_size = width * height; /* cast ouch*/ |
334 | frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, | 334 | frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, |
335 | (void **)&frame->chunk[0] ); | 335 | (void **)&frame->chunk[0] ); |
336 | frame->frame.base[1] = xine_xmalloc_aligned(16, image_size, | 336 | frame->frame.base[1] = xine_xmalloc_aligned(16, image_size, |
337 | (void **)&frame->chunk[1] ); | 337 | (void **)&frame->chunk[1] ); |
338 | frame->frame.base[2] = xine_xmalloc_aligned(16, image_size, | 338 | frame->frame.base[2] = xine_xmalloc_aligned(16, image_size, |
339 | (void **)&frame->chunk[2] ); | 339 | (void **)&frame->chunk[2] ); |
340 | }else{ | 340 | }else{ |
341 | int image_size = width * height; /* cast ouch*/ | 341 | int image_size = width * height; /* cast ouch*/ |
342 | frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, | 342 | frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, |
343 | (void **)&frame->chunk[0] ); | 343 | (void **)&frame->chunk[0] ); |
344 | frame->chunk[1] = NULL; | 344 | frame->chunk[1] = NULL; |
345 | frame->chunk[2] = NULL; | 345 | frame->chunk[2] = NULL; |
346 | } | 346 | } |
347 | 347 | ||
348 | frame->format = format; | 348 | frame->format = format; |
349 | frame->width = width; | 349 | frame->width = width; |
350 | frame->height = height; | 350 | frame->height = height; |
351 | 351 | ||
352 | frame->stripe_height = 16 * frame->output_height / frame->height; | 352 | frame->stripe_height = 16 * frame->output_height / frame->height; |
353 | frame->bytes_per_line = frame->output_width * this->bytes_per_pixel; | 353 | frame->bytes_per_line = frame->output_width * this->bytes_per_pixel; |
354 | 354 | ||
355 | /* | 355 | /* |
356 | * set up colorspace converter | 356 | * set up colorspace converter |
357 | */ | 357 | */ |
358 | if(this->m_show_video ){ | 358 | if(this->m_show_video ){ |
359 | printf("showing video\n"); | 359 | printf("showing video\n"); |
360 | 360 | ||
361 | switch (flags) { | 361 | switch (flags) { |
362 | case VO_TOP_FIELD: | 362 | case VO_TOP_FIELD: |
363 | case VO_BOTTOM_FIELD: | 363 | case VO_BOTTOM_FIELD: |
364 | frame->yuv2rgb->configure (frame->yuv2rgb, | 364 | frame->yuv2rgb->configure (frame->yuv2rgb, |
365 | frame->width, | 365 | frame->width, |
366 | 16, | 366 | 16, |
367 | frame->width*2, | 367 | frame->width*2, |
368 | frame->width, | 368 | frame->width, |
369 | frame->output_width, | 369 | frame->output_width, |
370 | frame->stripe_height, | 370 | frame->stripe_height, |
371 | frame->bytes_per_line*2); | 371 | frame->bytes_per_line*2); |
372 | frame->yuv_stride = frame->bytes_per_line*2; | 372 | frame->yuv_stride = frame->bytes_per_line*2; |
373 | break; | 373 | break; |
374 | case VO_BOTH_FIELDS: | 374 | case VO_BOTH_FIELDS: |
375 | frame->yuv2rgb->configure (frame->yuv2rgb, | 375 | frame->yuv2rgb->configure (frame->yuv2rgb, |
376 | frame->width, | 376 | frame->width, |
377 | 16, | 377 | 16, |
378 | frame->width, | 378 | frame->width, |
379 | frame->width/2, | 379 | frame->width/2, |
380 | frame->output_width, | 380 | frame->output_width, |
381 | frame->stripe_height, | 381 | frame->stripe_height, |
382 | frame->bytes_per_line); | 382 | frame->bytes_per_line); |
383 | frame->yuv_stride = frame->bytes_per_line; | 383 | frame->yuv_stride = frame->bytes_per_line; |
384 | break; | 384 | break; |
385 | } | 385 | } |
386 | } | 386 | } |
387 | } | 387 | } |
388 | printf("after gui changed\n"); | 388 | printf("after gui changed\n"); |
389 | /* | 389 | /* |
390 | * reset dest pointers | 390 | * reset dest pointers |
391 | */ | 391 | */ |
392 | 392 | ||
393 | if (frame->data) { | 393 | if (frame->data) { |
394 | switch (flags) { | 394 | switch (flags) { |
395 | case VO_TOP_FIELD: | 395 | case VO_TOP_FIELD: |
396 | frame->rgb_dst = (uint8_t *)frame->data; | 396 | frame->rgb_dst = (uint8_t *)frame->data; |
397 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; | 397 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; |
398 | break; | 398 | break; |
399 | case VO_BOTTOM_FIELD: | 399 | case VO_BOTTOM_FIELD: |
400 | frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ; | 400 | frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ; |
401 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; | 401 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; |
402 | break; | 402 | break; |
403 | case VO_BOTH_FIELDS: | 403 | case VO_BOTH_FIELDS: |
404 | frame->rgb_dst = (uint8_t *)frame->data; | 404 | frame->rgb_dst = (uint8_t *)frame->data; |
405 | frame->stripe_inc = frame->stripe_height * frame->bytes_per_line; | 405 | frame->stripe_inc = frame->stripe_height * frame->bytes_per_line; |
406 | break; | 406 | break; |
407 | } | 407 | } |
408 | } | 408 | } |
409 | printf("done\n"); | 409 | printf("done\n"); |
410 | } | 410 | } |
411 | static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ | 411 | static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ |
412 | null_driver_t* this = (null_driver_t*) self; | 412 | null_driver_t* this = (null_driver_t*) self; |
413 | opie_frame_t* frame = (opie_frame_t*)frame_gen; | 413 | opie_frame_t* frame = (opie_frame_t*)frame_gen; |
414 | display_xine_frame_t display = this->frameDis; | 414 | display_xine_frame_t display = this->frameDis; |
415 | 415 | ||
416 | printf("display frame\n"); | 416 | printf("display frame\n"); |
417 | // if( this->m_show_video ) { // return if not displaying | 417 | // if( this->m_show_video ) { // return if not displaying |
418 | printf("calling home aye\n" ); | 418 | printf("calling home aye\n" ); |
419 | if( display != NULL ) { | 419 | if( display != NULL ) { |
420 | (*display)(this->caller, frame->data, | 420 | (*display)(this->caller, frame->data, |
421 | frame->output_width, frame->output_height, | 421 | frame->output_width, frame->output_height, |
422 | this->bytes_per_pixel ); | 422 | frame->bytes_per_line ); |
423 | printf("display done hope you enyoyed the frame"); | 423 | printf("display done hope you enyoyed the frame"); |
424 | } | 424 | } |
425 | // } | 425 | // } |
426 | 426 | ||
427 | frame->frame.displayed (&frame->frame); | 427 | frame->frame.displayed (&frame->frame); |
428 | } | 428 | } |
429 | 429 | ||
430 | 430 | ||
431 | // blending related | 431 | // blending related |
432 | 432 | ||
433 | 433 | ||
434 | static void null_overlay_clut_yuv2rgb(null_driver_t *this, vo_overlay_t *overlay, | 434 | static void null_overlay_clut_yuv2rgb(null_driver_t *this, vo_overlay_t *overlay, |
435 | opie_frame_t *frame) { | 435 | opie_frame_t *frame) { |
436 | int i; | 436 | int i; |
437 | clut_t* clut = (clut_t*) overlay->color; | 437 | clut_t* clut = (clut_t*) overlay->color; |
438 | if (!overlay->rgb_clut) { | 438 | if (!overlay->rgb_clut) { |
439 | for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { | 439 | for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { |
440 | *((uint32_t *)&clut[i]) = | 440 | *((uint32_t *)&clut[i]) = |
441 | frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, | 441 | frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, |
442 | clut[i].y, clut[i].cb, clut[i].cr); | 442 | clut[i].y, clut[i].cb, clut[i].cr); |
443 | } | 443 | } |
444 | overlay->rgb_clut++; | 444 | overlay->rgb_clut++; |
445 | } | 445 | } |
446 | if (!overlay->clip_rgb_clut) { | 446 | if (!overlay->clip_rgb_clut) { |
447 | clut = (clut_t*) overlay->clip_color; | 447 | clut = (clut_t*) overlay->clip_color; |
448 | for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { | 448 | for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { |
449 | *((uint32_t *)&clut[i]) = | 449 | *((uint32_t *)&clut[i]) = |
450 | frame->yuv2rgb->yuv2rgb_single_pixel_fun(frame->yuv2rgb, | 450 | frame->yuv2rgb->yuv2rgb_single_pixel_fun(frame->yuv2rgb, |
451 | clut[i].y, clut[i].cb, clut[i].cr); | 451 | clut[i].y, clut[i].cb, clut[i].cr); |
452 | } | 452 | } |
453 | overlay->clip_rgb_clut++; | 453 | overlay->clip_rgb_clut++; |
454 | } | 454 | } |
455 | } | 455 | } |
456 | 456 | ||
457 | static void null_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) { | 457 | static void null_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) { |
458 | null_driver_t *this = (null_driver_t *) this_gen; | 458 | null_driver_t *this = (null_driver_t *) this_gen; |
459 | opie_frame_t *frame = (opie_frame_t *) frame_gen; | 459 | opie_frame_t *frame = (opie_frame_t *) frame_gen; |
460 | 460 | ||
461 | printf("overlay blend\n"); | 461 | printf("overlay blend\n"); |
462 | if(!this->m_show_video || frame->output_width == 0 || frame->output_height== 0) | 462 | if(!this->m_show_video || frame->output_width == 0 || frame->output_height== 0) |
463 | return; | 463 | return; |
464 | 464 | ||
465 | /* Alpha Blend here */ | 465 | /* Alpha Blend here */ |
466 | if (overlay->rle) { | 466 | if (overlay->rle) { |
467 | if( !overlay->rgb_clut || !overlay->clip_rgb_clut) | 467 | if( !overlay->rgb_clut || !overlay->clip_rgb_clut) |
468 | null_overlay_clut_yuv2rgb(this,overlay,frame); | 468 | null_overlay_clut_yuv2rgb(this,overlay,frame); |
469 | 469 | ||
470 | switch(this->bpp) { | 470 | switch(this->bpp) { |
471 | case 16: | 471 | case 16: |
472 | blend_rgb16( (uint8_t *)frame->data, overlay, | 472 | blend_rgb16( (uint8_t *)frame->data, overlay, |
473 | frame->output_width, frame->output_height, | 473 | frame->output_width, frame->output_height, |
474 | frame->width, frame->height); | 474 | frame->width, frame->height); |
475 | break; | 475 | break; |
476 | case 24: | 476 | case 24: |
477 | blend_rgb24( (uint8_t *)frame->data, overlay, | 477 | blend_rgb24( (uint8_t *)frame->data, overlay, |
478 | frame->output_width, frame->output_height, | 478 | frame->output_width, frame->output_height, |
479 | frame->width, frame->height); | 479 | frame->width, frame->height); |
480 | break; | 480 | break; |
481 | case 32: | 481 | case 32: |
482 | blend_rgb32( (uint8_t *)frame->data, overlay, | 482 | blend_rgb32( (uint8_t *)frame->data, overlay, |
483 | frame->output_width, frame->output_height, | 483 | frame->output_width, frame->output_height, |
484 | frame->width, frame->height); | 484 | frame->width, frame->height); |
485 | break; | 485 | break; |
486 | default: | 486 | default: |
487 | /* It should never get here */ | 487 | /* It should never get here */ |
488 | break; | 488 | break; |
489 | } | 489 | } |
490 | } | 490 | } |
491 | } | 491 | } |
492 | 492 | ||
493 | 493 | ||
494 | static int null_get_property( vo_driver_t* self, | 494 | static int null_get_property( vo_driver_t* self, |
495 | int property ){ | 495 | int property ){ |
496 | printf("property get\n"); | 496 | printf("property get\n"); |
497 | return 0; | 497 | return 0; |
498 | } | 498 | } |
499 | static int null_set_property( vo_driver_t* self, | 499 | static int null_set_property( vo_driver_t* self, |
500 | int property, | 500 | int property, |
501 | int value ){ | 501 | int value ){ |
502 | printf("set property\n"); | 502 | printf("set property\n"); |
503 | return value; | 503 | return value; |
504 | } | 504 | } |
505 | static void null_get_property_min_max( vo_driver_t* self, | 505 | static void null_get_property_min_max( vo_driver_t* self, |
506 | int property, int *min, | 506 | int property, int *min, |
507 | int *max ){ | 507 | int *max ){ |
508 | printf("min max\n"); | 508 | printf("min max\n"); |
509 | *max = 0; | 509 | *max = 0; |
510 | *min = 0; | 510 | *min = 0; |
511 | } | 511 | } |
512 | static int null_gui_data_exchange( vo_driver_t* self, | 512 | static int null_gui_data_exchange( vo_driver_t* self, |
513 | int data_type, | 513 | int data_type, |
514 | void *data ){ | 514 | void *data ){ |
515 | return 0; | 515 | return 0; |
516 | } | 516 | } |
517 | static void null_exit( vo_driver_t* self ){ | 517 | static void null_exit( vo_driver_t* self ){ |
518 | null_driver_t* this = (null_driver_t*)self; | 518 | null_driver_t* this = (null_driver_t*)self; |
519 | free ( this ); | 519 | free ( this ); |
520 | } | 520 | } |
521 | static int null_redraw_needed( vo_driver_t* self ){ | 521 | static int null_redraw_needed( vo_driver_t* self ){ |
522 | return 0; | 522 | return 0; |
523 | } | 523 | } |
524 | 524 | ||
525 | 525 | ||
526 | vo_driver_t* init_video_out_plugin( config_values_t* conf, | 526 | vo_driver_t* init_video_out_plugin( config_values_t* conf, |
527 | void* video ){ | 527 | void* video ){ |
528 | null_driver_t *vo; | 528 | null_driver_t *vo; |
529 | vo = (null_driver_t*)malloc( sizeof(null_driver_t ) ); | 529 | vo = (null_driver_t*)malloc( sizeof(null_driver_t ) ); |
530 | 530 | ||
531 | /* memset? */ | 531 | /* memset? */ |
532 | memset(vo,0, sizeof(null_driver_t ) ); | 532 | memset(vo,0, sizeof(null_driver_t ) ); |
533 | vo->m_show_video = 0; // false | 533 | vo->m_show_video = 0; // false |
534 | vo->m_video_fullscreen = 0; | 534 | vo->m_video_fullscreen = 0; |
535 | vo->m_is_scaling = 0; | 535 | vo->m_is_scaling = 0; |
536 | vo->user_ratio = ASPECT_AUTO; | 536 | vo->user_ratio = ASPECT_AUTO; |
537 | vo->display_ratio = 1.0; | 537 | vo->display_ratio = 1.0; |
538 | vo->gui_width = 200; | 538 | vo->gui_width = 200; |
539 | vo->gui_height = 150; | 539 | vo->gui_height = 150; |
540 | vo->frameDis = NULL; | 540 | vo->frameDis = NULL; |
541 | 541 | ||
542 | /* install callback handlers*/ | 542 | /* install callback handlers*/ |
543 | vo->vo_driver.get_capabilities = null_get_capabilities; | 543 | vo->vo_driver.get_capabilities = null_get_capabilities; |
544 | vo->vo_driver.alloc_frame = null_alloc_frame; | 544 | vo->vo_driver.alloc_frame = null_alloc_frame; |
545 | vo->vo_driver.update_frame_format = null_update_frame_format; | 545 | vo->vo_driver.update_frame_format = null_update_frame_format; |
546 | vo->vo_driver.display_frame = null_display_frame; | 546 | vo->vo_driver.display_frame = null_display_frame; |
547 | vo->vo_driver.overlay_blend = null_overlay_blend; | 547 | vo->vo_driver.overlay_blend = null_overlay_blend; |
548 | vo->vo_driver.get_property = null_get_property; | 548 | vo->vo_driver.get_property = null_get_property; |
549 | vo->vo_driver.set_property = null_set_property; | 549 | vo->vo_driver.set_property = null_set_property; |
550 | vo->vo_driver.get_property_min_max = null_get_property_min_max; | 550 | vo->vo_driver.get_property_min_max = null_get_property_min_max; |
551 | vo->vo_driver.gui_data_exchange = null_gui_data_exchange; | 551 | vo->vo_driver.gui_data_exchange = null_gui_data_exchange; |
552 | vo->vo_driver.exit = null_exit; | 552 | vo->vo_driver.exit = null_exit; |
553 | vo->vo_driver.redraw_needed = null_redraw_needed; | 553 | vo->vo_driver.redraw_needed = null_redraw_needed; |
554 | 554 | ||
555 | 555 | ||
556 | /* capabilities */ | 556 | /* capabilities */ |
557 | vo->m_capabilities = VO_CAP_COPIES_IMAGE | VO_CAP_YUY2 | VO_CAP_YV12; | 557 | vo->m_capabilities = VO_CAP_COPIES_IMAGE | VO_CAP_YUY2 | VO_CAP_YV12; |
558 | vo->yuv2rgb_factory = yuv2rgb_factory_init (MODE_16_RGB, vo->yuv2rgb_swap, | 558 | vo->yuv2rgb_factory = yuv2rgb_factory_init (MODE_16_RGB, vo->yuv2rgb_swap, |
559 | vo->yuv2rgb_cmap); | 559 | vo->yuv2rgb_cmap); |
560 | printf("done initialisation\n"); | 560 | printf("done initialisation\n"); |
561 | return (vo_driver_t*) vo; | 561 | return (vo_driver_t*) vo; |
562 | } | 562 | } |
563 | 563 | ||
564 | static vo_info_t vo_info_null = { | 564 | static vo_info_t vo_info_null = { |
565 | 5, | 565 | 5, |
566 | "null plugin", | 566 | "null plugin", |
567 | NULL, | 567 | NULL, |
568 | VISUAL_TYPE_FB, | 568 | VISUAL_TYPE_FB, |
569 | 5 | 569 | 5 |
570 | }; | 570 | }; |
571 | 571 | ||
572 | vo_info_t *get_video_out_plugin_info(){ | 572 | vo_info_t *get_video_out_plugin_info(){ |
573 | vo_info_null.description = _("xine video output plugin using null device"); | 573 | vo_info_null.description = _("xine video output plugin using null device"); |
574 | return &vo_info_null; | 574 | return &vo_info_null; |
575 | } | 575 | } |
576 | 576 | ||
577 | /* this is special for this device */ | 577 | /* this is special for this device */ |
578 | /** | 578 | /** |
579 | * We know that we will be controled by the XINE LIB++ | 579 | * We know that we will be controled by the XINE LIB++ |
580 | */ | 580 | */ |
581 | 581 | ||
582 | /** | 582 | /** |
583 | * | 583 | * |
584 | */ | 584 | */ |
585 | int null_is_showing_video( vo_driver_t* self ){ | 585 | int null_is_showing_video( vo_driver_t* self ){ |
586 | null_driver_t* this = (null_driver_t*)self; | 586 | null_driver_t* this = (null_driver_t*)self; |
587 | return this->m_show_video; | 587 | return this->m_show_video; |
588 | } | 588 | } |
589 | void null_set_show_video( vo_driver_t* self, int show ) { | 589 | void null_set_show_video( vo_driver_t* self, int show ) { |
590 | ((null_driver_t*)self)->m_show_video = show; | 590 | ((null_driver_t*)self)->m_show_video = show; |
591 | } | 591 | } |
592 | 592 | ||
593 | int null_is_fullscreen( vo_driver_t* self ){ | 593 | int null_is_fullscreen( vo_driver_t* self ){ |
594 | return ((null_driver_t*)self)->m_video_fullscreen; | 594 | return ((null_driver_t*)self)->m_video_fullscreen; |
595 | } | 595 | } |
596 | void null_set_fullscreen( vo_driver_t* self, int screen ){ | 596 | void null_set_fullscreen( vo_driver_t* self, int screen ){ |
597 | ((null_driver_t*)self)->m_video_fullscreen = screen; | 597 | ((null_driver_t*)self)->m_video_fullscreen = screen; |
598 | } | 598 | } |
599 | int null_is_scaling( vo_driver_t* self ){ | 599 | int null_is_scaling( vo_driver_t* self ){ |
600 | return ((null_driver_t*)self)->m_is_scaling; | 600 | return ((null_driver_t*)self)->m_is_scaling; |
601 | } | 601 | } |
602 | void null_set_scaling( vo_driver_t* self, int scale ){ | 602 | void null_set_scaling( vo_driver_t* self, int scale ){ |
603 | ((null_driver_t*)self)->m_is_scaling = scale; | 603 | ((null_driver_t*)self)->m_is_scaling = scale; |
604 | } | 604 | } |
605 | 605 | ||
606 | void null_set_gui_width( vo_driver_t* self, int width ){ | 606 | void null_set_gui_width( vo_driver_t* self, int width ){ |
607 | ((null_driver_t*)self)->gui_width = width; | 607 | ((null_driver_t*)self)->gui_width = width; |
608 | } | 608 | } |
609 | void null_set_gui_height( vo_driver_t* self, int height ){ | 609 | void null_set_gui_height( vo_driver_t* self, int height ){ |
610 | ((null_driver_t*)self)->gui_height = height; | 610 | ((null_driver_t*)self)->gui_height = height; |
611 | } | 611 | } |
612 | void null_set_mode( vo_driver_t* self, int depth, int rgb ){ | 612 | void null_set_mode( vo_driver_t* self, int depth, int rgb ){ |
613 | null_driver_t* this = (null_driver_t*)self; | 613 | null_driver_t* this = (null_driver_t*)self; |
614 | 614 | ||