author | zecke <zecke> | 2002-07-11 23:14:01 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-07-11 23:14:01 (UTC) |
commit | 5f010888acabe5d00504b05d159b2837ff115f05 (patch) (side-by-side diff) | |
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 @@ -294,257 +294,257 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, || (this->user_ratio != frame->user_ratio) || this->gui_changed ) { frame->width = width; frame->height = height; frame->ratio_code = ratio_code; frame->flags = flags; frame->format = format; frame->user_ratio = this->user_ratio; this->gui_changed = 0; frame->show_video = this->m_show_video; null_compute_ideal_size (this, frame); null_compute_rgb_size (this, frame); /* * (re-) allocate */ if( frame->data ) { if(frame->chunk[0] ){ free( frame->chunk[0] ); frame->chunk[0] = NULL; } if(frame->chunk[1] ){ free ( frame->chunk[1] ); frame->chunk[1] = NULL; } if(frame->chunk[2] ){ free ( frame->chunk[2] ); frame->chunk[2] = NULL; } free ( frame->data ); } printf("after freeing\n"); frame->data = xine_xmalloc (frame->output_width * frame->output_height * this->bytes_per_pixel ); if( format == IMGFMT_YV12 ) { int image_size = width * height; /* cast ouch*/ frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, (void **)&frame->chunk[0] ); frame->frame.base[1] = xine_xmalloc_aligned(16, image_size, (void **)&frame->chunk[1] ); frame->frame.base[2] = xine_xmalloc_aligned(16, image_size, (void **)&frame->chunk[2] ); }else{ int image_size = width * height; /* cast ouch*/ frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, (void **)&frame->chunk[0] ); frame->chunk[1] = NULL; frame->chunk[2] = NULL; } frame->format = format; frame->width = width; frame->height = height; frame->stripe_height = 16 * frame->output_height / frame->height; frame->bytes_per_line = frame->output_width * this->bytes_per_pixel; /* * set up colorspace converter */ if(this->m_show_video ){ printf("showing video\n"); switch (flags) { case VO_TOP_FIELD: case VO_BOTTOM_FIELD: frame->yuv2rgb->configure (frame->yuv2rgb, frame->width, 16, frame->width*2, frame->width, frame->output_width, frame->stripe_height, frame->bytes_per_line*2); frame->yuv_stride = frame->bytes_per_line*2; break; case VO_BOTH_FIELDS: frame->yuv2rgb->configure (frame->yuv2rgb, frame->width, 16, frame->width, frame->width/2, frame->output_width, frame->stripe_height, frame->bytes_per_line); frame->yuv_stride = frame->bytes_per_line; break; } } } printf("after gui changed\n"); /* * reset dest pointers */ if (frame->data) { switch (flags) { case VO_TOP_FIELD: frame->rgb_dst = (uint8_t *)frame->data; frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; break; case VO_BOTTOM_FIELD: frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ; frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; break; case VO_BOTH_FIELDS: frame->rgb_dst = (uint8_t *)frame->data; frame->stripe_inc = frame->stripe_height * frame->bytes_per_line; break; } } printf("done\n"); } static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ null_driver_t* this = (null_driver_t*) self; opie_frame_t* frame = (opie_frame_t*)frame_gen; display_xine_frame_t display = this->frameDis; printf("display frame\n"); // if( this->m_show_video ) { // return if not displaying printf("calling home aye\n" ); if( display != NULL ) { (*display)(this->caller, frame->data, frame->output_width, frame->output_height, - this->bytes_per_pixel ); + frame->bytes_per_line ); printf("display done hope you enyoyed the frame"); } // } frame->frame.displayed (&frame->frame); } // blending related static void null_overlay_clut_yuv2rgb(null_driver_t *this, vo_overlay_t *overlay, opie_frame_t *frame) { int i; clut_t* clut = (clut_t*) overlay->color; if (!overlay->rgb_clut) { for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { *((uint32_t *)&clut[i]) = frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, clut[i].y, clut[i].cb, clut[i].cr); } overlay->rgb_clut++; } if (!overlay->clip_rgb_clut) { clut = (clut_t*) overlay->clip_color; for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { *((uint32_t *)&clut[i]) = frame->yuv2rgb->yuv2rgb_single_pixel_fun(frame->yuv2rgb, clut[i].y, clut[i].cb, clut[i].cr); } overlay->clip_rgb_clut++; } } static void null_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) { null_driver_t *this = (null_driver_t *) this_gen; opie_frame_t *frame = (opie_frame_t *) frame_gen; printf("overlay blend\n"); if(!this->m_show_video || frame->output_width == 0 || frame->output_height== 0) return; /* Alpha Blend here */ if (overlay->rle) { if( !overlay->rgb_clut || !overlay->clip_rgb_clut) null_overlay_clut_yuv2rgb(this,overlay,frame); switch(this->bpp) { case 16: blend_rgb16( (uint8_t *)frame->data, overlay, frame->output_width, frame->output_height, frame->width, frame->height); break; case 24: blend_rgb24( (uint8_t *)frame->data, overlay, frame->output_width, frame->output_height, frame->width, frame->height); break; case 32: blend_rgb32( (uint8_t *)frame->data, overlay, frame->output_width, frame->output_height, frame->width, frame->height); break; default: /* It should never get here */ break; } } } static int null_get_property( vo_driver_t* self, int property ){ printf("property get\n"); return 0; } static int null_set_property( vo_driver_t* self, int property, int value ){ printf("set property\n"); return value; } static void null_get_property_min_max( vo_driver_t* self, int property, int *min, int *max ){ printf("min max\n"); *max = 0; *min = 0; } static int null_gui_data_exchange( vo_driver_t* self, int data_type, void *data ){ return 0; } static void null_exit( vo_driver_t* self ){ null_driver_t* this = (null_driver_t*)self; free ( this ); } static int null_redraw_needed( vo_driver_t* self ){ return 0; } vo_driver_t* init_video_out_plugin( config_values_t* conf, void* video ){ null_driver_t *vo; vo = (null_driver_t*)malloc( sizeof(null_driver_t ) ); /* memset? */ memset(vo,0, sizeof(null_driver_t ) ); vo->m_show_video = 0; // false vo->m_video_fullscreen = 0; vo->m_is_scaling = 0; vo->user_ratio = ASPECT_AUTO; vo->display_ratio = 1.0; vo->gui_width = 200; vo->gui_height = 150; vo->frameDis = NULL; /* install callback handlers*/ vo->vo_driver.get_capabilities = null_get_capabilities; vo->vo_driver.alloc_frame = null_alloc_frame; vo->vo_driver.update_frame_format = null_update_frame_format; vo->vo_driver.display_frame = null_display_frame; vo->vo_driver.overlay_blend = null_overlay_blend; vo->vo_driver.get_property = null_get_property; vo->vo_driver.set_property = null_set_property; vo->vo_driver.get_property_min_max = null_get_property_min_max; |