-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 7 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/nullvideo.c | 62 |
2 files changed, 37 insertions, 32 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index 96bdb21..4a96408 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp @@ -45,17 +45,18 @@ #include <assert.h> #include "xinevideowidget.h" #include "frame.h" #include "lib.h" + typedef void (*display_xine_frame_t) (void *user_data, uint8_t* frame, int width, int height,int bytes ); extern "C" { - xine_vo_driver_t* init_video_out_plugin( xine_cfg_entry_t* conf, void* video); + xine_vo_driver_t* init_video_out_plugin( xine_t *xine, void* video, display_xine_frame_t, void * ); int null_is_showing_video( const xine_vo_driver_t* self ); void null_set_show_video( const xine_vo_driver_t* self, int show ); int null_is_fullscreen( const xine_vo_driver_t* self ); void null_set_fullscreen( const xine_vo_driver_t* self, int screen ); int null_is_scaling( const xine_vo_driver_t* self ); void null_set_scaling( const xine_vo_driver_t* self, int scale ); @@ -91,19 +92,19 @@ Lib::Lib( XineVideoWidget* widget ) { xine_init( m_xine ); // allocate oss for sound // and fb for framebuffer m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); - m_videoOutput = ::init_video_out_plugin( m_config, NULL ); + m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); //xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL); - null_display_handler( m_videoOutput, xine_display_frame, this ); +// null_display_handler( m_videoOutput, xine_display_frame, this ); m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); if (m_wid != 0 ) { printf( "!0\n" ); resize ( m_wid-> size ( ) ); diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c index 9c285a0..1ebb854 100644 --- a/noncore/multimedia/opieplayer2/nullvideo.c +++ b/noncore/multimedia/opieplayer2/nullvideo.c @@ -56,13 +56,13 @@ typedef void (*display_xine_frame_t) (void *user_data, uint8_t* frame, int width, int height,int bytes ); typedef struct null_driver_s null_driver_t; struct null_driver_s { - xine_vo_driver_t vo_driver; + vo_driver_t vo_driver; uint32_t m_capabilities; int m_show_video; int m_video_fullscreen; int m_is_scaling; @@ -104,13 +104,13 @@ struct opie_frame_s { int yuv_stride; int stripe_height, stripe_inc; null_driver_t *output; }; -static uint32_t null_get_capabilities( xine_vo_driver_t *self ){ +static uint32_t null_get_capabilities( vo_driver_t *self ){ null_driver_t* this = (null_driver_t*)self; return this->m_capabilities; } static void null_frame_copy (vo_frame_t *vo_img, uint8_t **src) { opie_frame_t *frame = (opie_frame_t *) vo_img ; @@ -160,13 +160,13 @@ static void null_frame_dispose( vo_frame_t* vo_img){ free( frame->data ); free (frame); } /* end take care of frames*/ -static vo_frame_t* null_alloc_frame( xine_vo_driver_t* self ){ +static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ null_driver_t* this = (null_driver_t*)self; opie_frame_t* frame; #ifdef LOG fprintf (stderr, "nullvideo: alloc_frame\n"); @@ -192,13 +192,13 @@ static vo_frame_t* null_alloc_frame( xine_vo_driver_t* self ){ */ frame->yuv2rgb = this->yuv2rgb_factory->create_converter (this->yuv2rgb_factory); return (vo_frame_t*) frame; } -static void null_update_frame_format( xine_vo_driver_t* self, vo_frame_t* img, +static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, uint32_t width, uint32_t height, int ratio_code, int format, int flags ){ null_driver_t* this = (null_driver_t*) self; opie_frame_t* frame = (opie_frame_t*)img; /* not needed now */ @@ -335,13 +335,13 @@ static void null_update_frame_format( xine_vo_driver_t* self, vo_frame_t* img, frame->stripe_inc = frame->stripe_height * frame->bytes_per_line; break; } } } -static void null_display_frame( xine_vo_driver_t* self, vo_frame_t *frame_gen ){ +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; if (!this->m_show_video) return; @@ -378,13 +378,13 @@ static void null_overlay_clut_yuv2rgb (null_driver_t *this, clut[i].y, clut[i].cb, clut[i].cr); } overlay->clip_rgb_clut++; } } -static void null_overlay_blend ( xine_vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) { +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; if(!this->m_show_video || frame->sc.output_width == 0 || frame->sc.output_height== 0) return; @@ -415,51 +415,51 @@ static void null_overlay_blend ( xine_vo_driver_t *this_gen, vo_frame_t *frame_g break; } } } -static int null_get_property( xine_vo_driver_t* self, +static int null_get_property( vo_driver_t* self, int property ){ return 0; } -static int null_set_property( xine_vo_driver_t* self, +static int null_set_property( vo_driver_t* self, int property, int value ){ return value; } -static void null_get_property_min_max( xine_vo_driver_t* self, +static void null_get_property_min_max( vo_driver_t* self, int property, int *min, int *max ){ *max = 0; *min = 0; } -static int null_gui_data_exchange( xine_vo_driver_t* self, +static int null_gui_data_exchange( vo_driver_t* self, int data_type, void *data ){ return 0; } -static void null_dispose ( xine_vo_driver_t* self ){ +static void null_dispose ( vo_driver_t* self ){ null_driver_t* this = (null_driver_t*)self; free ( this ); } -static int null_redraw_needed( xine_vo_driver_t* self ){ +static int null_redraw_needed( vo_driver_t* self ){ return 0; } -xine_vo_driver_t* init_video_out_plugin( config_values_t* conf, - void* video ){ +xine_vo_driver_t* init_video_out_plugin( xine_t *xine, + void* video, display_xine_frame_t frameDisplayFunc, void *userData ){ null_driver_t *vo; vo = (null_driver_t*)malloc( sizeof(null_driver_t ) ); /* memset? */ memset(vo,0, sizeof(null_driver_t ) ); - vo_scale_init (&vo->sc, 0, 0); + vo_scale_init (&vo->sc, 0, 0, xine->config); vo->sc.gui_pixel_aspect = 1.0; vo->m_show_video = 0; // false vo->m_video_fullscreen = 0; vo->m_is_scaling = 0; @@ -484,13 +484,17 @@ xine_vo_driver_t* init_video_out_plugin( config_values_t* conf, /* capabilities */ vo->m_capabilities = VO_CAP_COPIES_IMAGE | VO_CAP_YUY2 | VO_CAP_YV12; vo->yuv2rgb_factory = yuv2rgb_factory_init (MODE_16_RGB, vo->yuv2rgb_swap, vo->yuv2rgb_cmap); - return ( xine_vo_driver_t*) vo; + vo->caller = userData; + vo->frameDis = frameDisplayFunc; + + /* return ( vo_driver_t*) vo; */ + return vo_new_port( xine, ( vo_driver_t* )vo ); } #if 0 static vo_info_t vo_info_null = { 5, XINE_VISUAL_TYPE_FB @@ -509,48 +513,48 @@ vo_info_t *get_video_out_plugin_info(){ */ /** * */ int null_is_showing_video( xine_vo_driver_t* self ){ - null_driver_t* this = (null_driver_t*)self; + null_driver_t* this = (null_driver_t*)self->driver; return this->m_show_video; } void null_set_show_video( xine_vo_driver_t* self, int show ) { - ((null_driver_t*)self)->m_show_video = show; + ((null_driver_t*)self->driver)->m_show_video = show; } int null_is_fullscreen( xine_vo_driver_t* self ){ - return ((null_driver_t*)self)->m_video_fullscreen; + return ((null_driver_t*)self->driver)->m_video_fullscreen; } void null_set_fullscreen( xine_vo_driver_t* self, int screen ){ - ((null_driver_t*)self)->m_video_fullscreen = screen; + ((null_driver_t*)self->driver)->m_video_fullscreen = screen; } int null_is_scaling( xine_vo_driver_t* self ){ - return ((null_driver_t*)self)->m_is_scaling; + return ((null_driver_t*)self->driver)->m_is_scaling; } -void null_set_videoGamma( xine_vo_driver_t* self , int value ) { - ((null_driver_t*) self) ->yuv2rgb_gamma = value; - ((null_driver_t*) self) ->yuv2rgb_factory->set_gamma( ((null_driver_t*) self) ->yuv2rgb_factory, value ); +void null_set_videoGamma( xine_vo_driver_t* self , int value ) { + ((null_driver_t*) self->driver) ->yuv2rgb_gamma = value; + ((null_driver_t*) self->driver) ->yuv2rgb_factory->set_gamma( ((null_driver_t*) self) ->yuv2rgb_factory, value ); } void null_set_scaling( xine_vo_driver_t* self, int scale ) { - ((null_driver_t*)self)->m_is_scaling = scale; + ((null_driver_t*)self->driver)->m_is_scaling = scale; } void null_set_gui_width( xine_vo_driver_t* self, int width ) { - ((null_driver_t*)self)->gui_width = width; + ((null_driver_t*)self->driver)->gui_width = width; } void null_set_gui_height( xine_vo_driver_t* self, int height ) { - ((null_driver_t*)self)->gui_height = height; + ((null_driver_t*)self->driver)->gui_height = height; } void null_set_mode( xine_vo_driver_t* self, int depth, int rgb ) { - null_driver_t* this = (null_driver_t*)self; + null_driver_t* this = (null_driver_t*)self->driver; this->bytes_per_pixel = (depth + 7 ) / 8; this->bpp = this->bytes_per_pixel * 8; this->depth = depth; printf("depth %d %d\n", depth, this->bpp); printf("pixeltype %d\n", rgb ); @@ -600,11 +604,11 @@ void null_set_mode( xine_vo_driver_t* self, int depth, int rgb ) { // this->yuv2rgb_factory = yuv2rgb_factory_init (this->yuv2rgb_mode, this->yuv2rgb_swap, // this->yuv2rgb_cmap); }; void null_display_handler( xine_vo_driver_t* self, display_xine_frame_t t, void* user_data ) { - null_driver_t* this = (null_driver_t*) self; + null_driver_t* this = (null_driver_t*) self->driver; this->caller = user_data; this->frameDis = t; } |