diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-08-04 03:47:09 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-08-04 03:47:09 +0000 |
commit | ed3497a1e20f74c28afc2124480c60fbdbf37fab (patch) | |
tree | 6ae75337cac3aa191151001085ed21d12e11385c /src/video_out | |
parent | b0f659b58e295ab3c4b1bac9ed59e9cb3f29f308 (diff) | |
download | xine-lib-ed3497a1e20f74c28afc2124480c60fbdbf37fab.tar.gz xine-lib-ed3497a1e20f74c28afc2124480c60fbdbf37fab.tar.bz2 |
support for arbitrary aspect ratios
patch by Philip Jgenstedt
CVS patchset: 5243
CVS date: 2003/08/04 03:47:09
Diffstat (limited to 'src/video_out')
-rw-r--r-- | src/video_out/video_out_aa.c | 18 | ||||
-rw-r--r-- | src/video_out/video_out_directfb.c | 30 | ||||
-rwxr-xr-x | src/video_out/video_out_directx.c | 27 | ||||
-rw-r--r-- | src/video_out/video_out_fb.c | 34 | ||||
-rw-r--r-- | src/video_out/video_out_none.c | 16 | ||||
-rw-r--r-- | src/video_out/video_out_opengl.c | 39 | ||||
-rw-r--r-- | src/video_out/video_out_pgx64.c | 31 | ||||
-rw-r--r-- | src/video_out/video_out_sdl.c | 23 | ||||
-rw-r--r-- | src/video_out/video_out_syncfb.c | 25 | ||||
-rw-r--r-- | src/video_out/video_out_vidix.c | 31 | ||||
-rw-r--r-- | src/video_out/video_out_xshm.c | 30 | ||||
-rw-r--r-- | src/video_out/video_out_xv.c | 29 |
12 files changed, 161 insertions, 172 deletions
diff --git a/src/video_out/video_out_aa.c b/src/video_out/video_out_aa.c index 363793abc..77a28ce72 100644 --- a/src/video_out/video_out_aa.c +++ b/src/video_out/video_out_aa.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_aa.c,v 1.35 2003/05/31 18:33:30 miguelfreitas Exp $ + * $Id: video_out_aa.c,v 1.36 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_aa.c, ascii-art output plugin for xine * @@ -56,7 +56,7 @@ typedef struct aa_frame_s { int width, height; uint8_t *mem[3]; - int ratio_code; + double ratio; int format; @@ -119,7 +119,7 @@ static vo_frame_t *aa_alloc_frame(vo_driver_t *this) { static void aa_update_frame_format (vo_driver_t *this, vo_frame_t *img, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { aa_frame_t *frame = (aa_frame_t *) img; @@ -165,7 +165,7 @@ static void aa_update_frame_format (vo_driver_t *this, vo_frame_t *img, abort(); } - frame->ratio_code = ratio_code; + frame->ratio = ratio; } @@ -231,7 +231,7 @@ static int aa_get_property (vo_driver_t *this_gen, int property) { if ( property == VO_PROP_ASPECT_RATIO) { return this->user_ratio ; } else { - printf ("video_out_xshm: tried to get unsupported property %d\n", property); + printf ("video_out_aa: tried to get unsupported property %d\n", property); } return 0; @@ -242,12 +242,12 @@ static int aa_set_property (vo_driver_t *this_gen, aa_driver_t *this = (aa_driver_t*) this_gen; if ( property == VO_PROP_ASPECT_RATIO) { - if (value>=NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if (value>=XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->user_ratio = value; } else { - printf ("video_out_xshm: tried to set unsupported property %d\n", property); + printf ("video_out_aa: tried to set unsupported property %d\n", property); } return value; @@ -328,6 +328,6 @@ static vo_info_t vo_info_aa = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "aa", XINE_VERSION_CODE, &vo_info_aa, init_class }, + { PLUGIN_VIDEO_OUT, 16, "aa", XINE_VERSION_CODE, &vo_info_aa, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_directfb.c b/src/video_out/video_out_directfb.c index 92ff0b1a4..81e450ab6 100644 --- a/src/video_out/video_out_directfb.c +++ b/src/video_out/video_out_directfb.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_directfb.c,v 1.17 2003/05/31 18:33:30 miguelfreitas Exp $ + * $Id: video_out_directfb.c,v 1.18 2003/08/04 03:47:11 miguelfreitas Exp $ * * DirectFB based output plugin. * Rich Wareham <richwareham@users.sourceforge.net> @@ -71,7 +71,7 @@ typedef struct directfb_frame_s { vo_frame_t vo_frame; int width, height; - int ratio_code; + double ratio; int format; int locked; @@ -98,7 +98,7 @@ typedef struct directfb_driver_s { /* last displayed frame */ int last_frame_width; /* original size */ int last_frame_height; /* original size */ - int last_frame_ratio_code; + double last_frame_ratio; /* display anatomy */ double display_ratio; /* given by visual parameter from init function */ @@ -212,7 +212,7 @@ static void directfb_adapt_to_output_area (directfb_driver_t *this, static void directfb_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { directfb_driver_t *this = (directfb_driver_t *) this_gen; directfb_frame_t *frame = (directfb_frame_t *) frame_gen; @@ -301,7 +301,7 @@ static void directfb_update_frame_format (vo_driver_t *this_gen, break; } - frame->ratio_code = ratio_code; + frame->ratio = ratio; directfb_frame_field ((vo_frame_t *)frame, flags); } @@ -390,9 +390,9 @@ static void directfb_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen if ( (frame->width != this->last_frame_width) || (frame->height != this->last_frame_height)) { - this->last_frame_width = frame->width; - this->last_frame_height = frame->height; - this->last_frame_ratio_code = frame->ratio_code; + this->last_frame_width = frame->width; + this->last_frame_height = frame->height; + this->last_frame_ratio = frame->ratio; fprintf (stderr, "video_out_directfb: frame size %d x %d\n", this->frame_width, this->frame_height); @@ -422,15 +422,15 @@ static int directfb_get_property (vo_driver_t *this_gen, int property) { static char *aspect_ratio_name(int a) { switch (a) { - case ASPECT_AUTO: + case XINE_VO_ASPECT_AUTO: return "auto"; - case ASPECT_SQUARE: + case XINE_VO_ASPECT_SQUARE: return "square"; - case ASPECT_FULL: + case XINE_VO_ASPECT_4_3: return "4:3"; - case ASPECT_ANAMORPHIC: + case XINE_VO_ASPECT_ANAMORPHIC: return "16:9"; - case ASPECT_DVB: + case XINE_VO_ASPECT_DVB: return "2:1"; default: return "unknown"; @@ -443,8 +443,8 @@ static int directfb_set_property (vo_driver_t *this_gen, /* directfb_driver_t *this = (directfb_driver_t *) this_gen; */ if ( property == VO_PROP_ASPECT_RATIO) { - if (value>=NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if (value>=XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; /* this->user_ratio = value; */ printf("video_out_directfb: aspect ratio changed to %s\n", aspect_ratio_name(value)); diff --git a/src/video_out/video_out_directx.c b/src/video_out/video_out_directx.c index 9d7e44a94..0f8e78c71 100755 --- a/src/video_out/video_out_directx.c +++ b/src/video_out/video_out_directx.c @@ -60,7 +60,7 @@ typedef struct win32_frame_s int width; int height; int size; - int rcode; + double ratio; }win32_frame_t; @@ -863,7 +863,7 @@ static vo_frame_t * win32_alloc_frame( vo_driver_t * vo_driver ) static void win32_update_frame_format( vo_driver_t * vo_driver, vo_frame_t * vo_frame, uint32_t width, - uint32_t height, int ratio_code, int format, int flags ) + uint32_t height, double ratio, int format, int flags ) { win32_driver_t * win32_driver = ( win32_driver_t * ) vo_driver; win32_frame_t * win32_frame = ( win32_frame_t * ) vo_frame; @@ -918,7 +918,7 @@ static void win32_update_frame_format( vo_driver_t * vo_driver, vo_frame_t * vo_ win32_frame->format = format; win32_frame->width = width; win32_frame->height = height; - win32_frame->rcode = ratio_code; + win32_frame->ratio = ratio; } } @@ -941,24 +941,7 @@ static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame // determine desired ratio - switch( win32_frame->rcode ) - { - case ASPECT_ANAMORPHIC: - win32_driver->ratio = 16.0 / 9.0; - break; - - case ASPECT_DVB: - win32_driver->ratio = 2.0 / 1.0; - break; - - case ASPECT_SQUARE: - win32_driver->ratio = win32_frame->width / win32_frame->height; - break; - - case ASPECT_FULL: - default: - win32_driver->ratio = 4.0 / 3.0; - } + win32_driver->ratio = win32_frame->ratio; // lock our surface to update its contents @@ -1279,6 +1262,6 @@ static vo_info_t vo_info_win32 = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "vo_directx", XINE_VERSION_CODE, &vo_info_win32, init_class }, + { PLUGIN_VIDEO_OUT, 16, "vo_directx", XINE_VERSION_CODE, &vo_info_win32, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c index aa63a3381..a9d4f364e 100644 --- a/src/video_out/video_out_fb.c +++ b/src/video_out/video_out_fb.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_fb.c,v 1.26 2003/05/31 18:33:30 miguelfreitas Exp $ + * $Id: video_out_fb.c,v 1.27 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_fb.c, frame buffer xine driver by Miguel Freitas * @@ -417,7 +417,7 @@ static void frame_reallocate(fb_driver_t *this, fb_frame_t *frame, static void fb_update_frame_format(vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) + double ratio, int format, int flags) { fb_driver_t *this = (fb_driver_t *)this_gen; fb_frame_t *frame = (fb_frame_t *)frame_gen; @@ -425,11 +425,11 @@ static void fb_update_frame_format(vo_driver_t *this_gen, flags &= VO_BOTH_FIELDS; /* Find out if we need to adapt this frame. */ - if (width != frame->sc.delivered_width || - height != frame->sc.delivered_height || - ratio_code != frame->sc.delivered_ratio_code || - flags != frame->flags || - format != frame->format || + if (width != frame->sc.delivered_width || + height != frame->sc.delivered_height || + ratio != frame->sc.delivered_ratio || + flags != frame->flags || + format != frame->format || this->sc.user_ratio != frame->sc.user_ratio) { #ifdef LOG @@ -437,12 +437,12 @@ static void fb_update_frame_format(vo_driver_t *this_gen, "has changed => adapt\n"); #endif - frame->sc.delivered_width = width; - frame->sc.delivered_height = height; - frame->sc.delivered_ratio_code = ratio_code; - frame->flags = flags; - frame->format = format; - frame->sc.user_ratio = this->sc.user_ratio; + frame->sc.delivered_width = width; + frame->sc.delivered_height = height; + frame->sc.delivered_ratio = ratio; + frame->flags = flags; + frame->format = format; + frame->sc.user_ratio = this->sc.user_ratio; fb_compute_ideal_size(this, frame); fb_compute_rgb_size(this, frame); @@ -636,8 +636,8 @@ static int fb_set_property(vo_driver_t *this_gen, int property, int value) switch(property) { case VO_PROP_ASPECT_RATIO: - if(value>=NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if(value>=XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->sc.user_ratio = value; printf("video_out_fb: aspect ratio changed to %s\n", vo_scale_aspect_ratio_name(value)); @@ -968,7 +968,7 @@ static vo_driver_t *fb_open_plugin(video_driver_class_t *class_gen, vo_scale_init(&this->sc, 0, 0, config); this->sc.gui_width = this->fb_var.xres; this->sc.gui_height = this->fb_var.yres; - this->sc.user_ratio = ASPECT_AUTO; + this->sc.user_ratio = XINE_VO_ASPECT_AUTO; if (visual) { this->sc.frame_output_cb = visual->frame_output_cb; @@ -1053,7 +1053,7 @@ plugin_info_t xine_plugin_info[] = /* type, API, "name", version, special_info, init_function */ { PLUGIN_VIDEO_OUT, - 15, + 16, "fb", XINE_VERSION_CODE, &vo_info_fb, fb_init_class diff --git a/src/video_out/video_out_none.c b/src/video_out/video_out_none.c index 2cb01977b..14dfdde57 100644 --- a/src/video_out/video_out_none.c +++ b/src/video_out/video_out_none.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_none.c,v 1.14 2003/05/31 18:33:31 miguelfreitas Exp $ + * $Id: video_out_none.c,v 1.15 2003/08/04 03:47:11 miguelfreitas Exp $ * * Was originally part of toxine frontend. * ...but has now been adapted to xine coding style standards ;) @@ -45,7 +45,7 @@ typedef struct { vo_frame_t vo_frame; int width; int height; - int ratio_code; + double ratio; int format; } none_frame_t; @@ -109,7 +109,7 @@ static vo_frame_t *none_alloc_frame(vo_driver_t *vo_driver) { static void none_update_frame_format(vo_driver_t *vo_driver, vo_frame_t *vo_frame, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { none_frame_t *frame = (none_frame_t *)vo_frame; if((frame->width != width) || (frame->height != height) || (frame->format != format)) { @@ -162,7 +162,7 @@ static void none_update_frame_format(vo_driver_t *vo_driver, vo_frame_t *vo_fram } } - frame->ratio_code = ratio_code; + frame->ratio = ratio; } static void none_display_frame(vo_driver_t *vo_driver, vo_frame_t *vo_frame) { @@ -194,8 +194,8 @@ static int none_set_property(vo_driver_t *vo_driver, int property, int value) { switch(property) { case VO_PROP_ASPECT_RATIO: - if(value >= NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if(value >= XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; driver->ratio = value; break; @@ -244,7 +244,7 @@ static vo_driver_t *open_plugin(video_driver_class_t *driver_class, const void * driver = (none_driver_t *) malloc(sizeof(none_driver_t)); driver->config = class->config; - driver->ratio = ASPECT_AUTO; + driver->ratio = XINE_VO_ASPECT_AUTO; driver->vo_driver.get_capabilities = none_get_capabilities; driver->vo_driver.alloc_frame = none_alloc_frame ; @@ -302,6 +302,6 @@ static vo_info_t vo_info_none = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "none", XINE_VERSION_CODE, &vo_info_none, init_class }, + { PLUGIN_VIDEO_OUT, 16, "none", XINE_VERSION_CODE, &vo_info_none, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_opengl.c b/src/video_out/video_out_opengl.c index 8ec4447f7..3d1ba2095 100644 --- a/src/video_out/video_out_opengl.c +++ b/src/video_out/video_out_opengl.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_opengl.c,v 1.26 2003/05/31 18:33:31 miguelfreitas Exp $ + * $Id: video_out_opengl.c,v 1.27 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_glut.c, glut based OpenGL rendering interface for xine * Matthias Hopf <mat@mshopf.de> @@ -116,7 +116,8 @@ typedef struct opengl_frame_s { /* frame properties as delivered by the decoder: */ int width, height; - int ratio_code, format, flags; + double ratio; + int format, flags; /* opengl only data */ uint8_t *rgb_dst; @@ -151,7 +152,7 @@ typedef struct opengl_driver_s { /* last frame delivered from the decoder for frame change detection */ int last_width; int last_height; - int last_ratio_code; + double last_ratio; #if 0 /* ideal size */ @@ -207,7 +208,7 @@ static void opengl_frame_copy (vo_frame_t *vo_img, uint8_t **src) { * happen with corrupt MPEG streams * FIXME: Is there a way to ensure frame->rgb_dst validity? */ - DEBUGF ((stderr, "video_out_xshm: corrupt value of frame->rgb_dst -- skipping\n")); + DEBUGF ((stderr, "video_out_opengl: corrupt value of frame->rgb_dst -- skipping\n")); return; } if (frame->format == XINE_IMGFMT_YV12) { @@ -307,7 +308,7 @@ static void opengl_compute_ideal_size (opengl_driver_t *this) { static void opengl_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { opengl_driver_t *this = (opengl_driver_t *) this_gen; opengl_frame_t *frame = (opengl_frame_t *) frame_gen; @@ -322,8 +323,8 @@ static void opengl_update_frame_format (vo_driver_t *this_gen, int image_size = width * height; - DEBUGF ((stderr, "video_out_opengl: updating frame to %dx%d (ratio=%d, format=%c%c%c%c)\n", - width, height, ratio_code, format&0xff, (format>>8)&0xff, + DEBUGF ((stderr, "video_out_opengl: updating frame to %dx%d (ratio=%f, format=%c%c%c%c)\n", + width, height, ratio, format&0xff, (format>>8)&0xff, (format>>16)&0xff, (format>>24)&0xff)); /* update frame allocated data */ @@ -381,7 +382,7 @@ static void opengl_update_frame_format (vo_driver_t *this_gen, XUnlockDisplay (this->display); } - frame->ratio_code = ratio_code; + frame->ratio = ratio; opengl_frame_field ((vo_frame_t *)frame, flags); } @@ -508,13 +509,13 @@ static void opengl_render_image (opengl_driver_t *this, opengl_frame_t *frame, /* * check for size changes */ - if (frame->width != this->last_width || - frame->height != this->last_height || - frame->ratio_code != this->last_ratio_code) { + if (frame->width != this->last_width || + frame->height != this->last_height || + frame->ratio != this->last_ratio) { - this->last_width = frame->width; - this->last_height = frame->height; - this->last_ratio_code = frame->ratio_code; + this->last_width = frame->width; + this->last_height = frame->height; + this->last_ratio = frame->ratio; DEBUGF ((stderr, "video_out_opengl: display format changed\n")); opengl_compute_ideal_size (this); @@ -717,7 +718,7 @@ static void opengl_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) opengl_frame_t *frame = (opengl_frame_t *) frame_gen; DEBUGF ((stderr, "*** display_frame ***\n")); - DEBUGF ((stderr, "video_out_xshm: about to draw frame %d x %d...\n", frame->width, frame->height)); + DEBUGF ((stderr, "video_out_opengl: about to draw frame %d x %d...\n", frame->width, frame->height)); XLockDisplay (this->display); opengl_render_image (this, frame, NULL); XUnlockDisplay (this->display); @@ -764,8 +765,8 @@ static int opengl_set_property (vo_driver_t *this_gen, DEBUGF ((stderr, "*** set_property\n")); switch (property) { case VO_PROP_ASPECT_RATIO: - if (value >= NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if (value >= XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->sc.user_ratio = value; fprintf (stderr, "video_out_opengl: aspect ratio changed to %s\n", vo_scale_aspect_ratio_name (value)); @@ -924,7 +925,7 @@ static vo_driver_t *opengl_open_plugin (video_driver_class_t *class_gen, this->sc.frame_output_cb = visual->frame_output_cb; this->sc.dest_size_cb = visual->dest_size_cb; this->sc.user_data = visual->user_data; - this->sc.user_ratio = ASPECT_AUTO; + this->sc.user_ratio = XINE_VO_ASPECT_AUTO; this->sc.scaling_disabled = 0; /* We will not be able to use the current drawable... */ @@ -999,7 +1000,7 @@ static vo_info_t vo_info_opengl = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "opengl", XINE_VERSION_CODE, + { PLUGIN_VIDEO_OUT, 16, "opengl", XINE_VERSION_CODE, &vo_info_opengl, opengl_init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c index efc44b961..1d6e6f575 100644 --- a/src/video_out/video_out_pgx64.c +++ b/src/video_out/video_out_pgx64.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_pgx64.c,v 1.30 2003/06/15 20:04:35 komadori Exp $ + * $Id: video_out_pgx64.c,v 1.31 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_pgx64.c, Sun PGX64/PGX24 output plugin for xine * @@ -103,7 +103,8 @@ typedef struct { int lengths[3]; uint32_t buf_y, buf_u, buf_v; - int width, height, pitch, ratio_code, format; + int width, height, pitch, format; + double ratio; } pgx64_frame_t; typedef struct { @@ -254,17 +255,17 @@ static pgx64_frame_t* pgx64_alloc_frame(pgx64_driver_t *this) return frame; } -static void pgx64_update_frame_format(pgx64_driver_t *this, pgx64_frame_t *frame, uint32_t width, uint32_t height, int ratio_code, int format, int flags) +static void pgx64_update_frame_format(pgx64_driver_t *this, pgx64_frame_t *frame, uint32_t width, uint32_t height, double ratio, int format, int flags) { if ((width != frame->width) || (height != frame->height) || - (ratio_code != frame->ratio_code) || + (ratio != frame->ratio) || (format != frame->format)) { dispose_frame_internals(frame); frame->width = width; frame->height = height; - frame->ratio_code = ratio_code; + frame->ratio = ratio; frame->format = format; frame->pitch = ((width + 7) / 8) * 8; @@ -298,12 +299,12 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame) { if ((frame->width != this->vo_scale.delivered_width) || (frame->height != this->vo_scale.delivered_height) || - (frame->ratio_code != this->vo_scale.delivered_ratio_code)) { + (frame->ratio != this->vo_scale.delivered_ratio)) { - this->vo_scale.delivered_width = frame->width; - this->vo_scale.delivered_height = frame->height; - this->vo_scale.delivered_ratio_code = frame->ratio_code; - this->vo_scale.force_redraw = 1; + this->vo_scale.delivered_width = frame->width; + this->vo_scale.delivered_height = frame->height; + this->vo_scale.delivered_ratio = frame->ratio; + this->vo_scale.force_redraw = 1; vo_scale_compute_ideal_size(&this->vo_scale); } @@ -450,8 +451,8 @@ static int pgx64_set_property(pgx64_driver_t *this, int property, int value) break; case VO_PROP_ASPECT_RATIO: { - if (value >= NUM_ASPECT_RATIOS) { - value = ASPECT_AUTO; + if (value >= XINE_VO_ASPECT_NUM_RATIOS) { + value = XINE_VO_ASPECT_AUTO; } this->vo_scale.user_ratio = value; this->vo_scale.force_redraw = 1; @@ -669,7 +670,7 @@ static pgx64_driver_t* init_driver(pgx64_driver_class_t *class) this->depth_mask = 0xffffffff >> (32 - attr.fbtype.fb_depth); vo_scale_init(&this->vo_scale, 0, 0, this->class->config); - this->vo_scale.user_ratio = ASPECT_AUTO; + this->vo_scale.user_ratio = XINE_VO_ASPECT_AUTO; return this; } @@ -799,8 +800,8 @@ static pgx64_driver_class_t* pgx64fb_init_class(xine_t *xine, void *visual_gen) plugin_info_t xine_plugin_info[] = { #ifdef HAVE_X11 - {PLUGIN_VIDEO_OUT, 15, "pgx64", XINE_VERSION_CODE, &vo_info_pgx64, (void*)pgx64_init_class}, + {PLUGIN_VIDEO_OUT, 16, "pgx64", XINE_VERSION_CODE, &vo_info_pgx64, (void*)pgx64_init_class}, #endif - {PLUGIN_VIDEO_OUT, 15, "pgx64fb", XINE_VERSION_CODE, &vo_info_pgx64fb, (void*)pgx64fb_init_class}, + {PLUGIN_VIDEO_OUT, 16, "pgx64fb", XINE_VERSION_CODE, &vo_info_pgx64fb, (void*)pgx64fb_init_class}, {PLUGIN_NONE, 0, "", 0, NULL, NULL} }; diff --git a/src/video_out/video_out_sdl.c b/src/video_out/video_out_sdl.c index b83a18dec..8d6a3e6f5 100644 --- a/src/video_out/video_out_sdl.c +++ b/src/video_out/video_out_sdl.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_sdl.c,v 1.25 2003/05/31 18:33:31 miguelfreitas Exp $ + * $Id: video_out_sdl.c,v 1.26 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_sdl.c, Simple DirectMedia Layer * @@ -72,7 +72,8 @@ typedef struct sdl_driver_s sdl_driver_t; typedef struct sdl_frame_s { vo_frame_t vo_frame; - int width, height, ratio_code, format; + int width, height, format; + double ratio; SDL_Overlay * overlay; } sdl_frame_t; @@ -172,7 +173,7 @@ static void sdl_compute_output_size (sdl_driver_t *this) { static void sdl_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { sdl_driver_t *this = (sdl_driver_t *) this_gen; sdl_frame_t *frame = (sdl_frame_t *) frame_gen; @@ -230,7 +231,7 @@ static void sdl_update_frame_format (vo_driver_t *this_gen, SDL_LockYUVOverlay (frame->overlay); } - frame->ratio_code = ratio_code; + frame->ratio = ratio; } @@ -318,12 +319,12 @@ static void sdl_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio_code != this->sc.delivered_ratio_code) ) { + || (frame->ratio != this->sc.delivered_ratio) ) { printf("video_out_sdl: change frame format\n"); - this->sc.delivered_width = frame->width; - this->sc.delivered_height = frame->height; - this->sc.delivered_ratio_code = frame->ratio_code; + this->sc.delivered_width = frame->width; + this->sc.delivered_height = frame->height; + this->sc.delivered_ratio = frame->ratio; sdl_compute_ideal_size( this ); @@ -365,8 +366,8 @@ static int sdl_set_property (vo_driver_t *this_gen, sdl_driver_t *this = (sdl_driver_t *) this_gen; if ( property == VO_PROP_ASPECT_RATIO) { - if (value>=NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if (value>=XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->sc.user_ratio = value; printf("video_out_sdl: aspect ratio changed to %s\n", vo_scale_aspect_ratio_name(value)); @@ -595,6 +596,6 @@ static vo_info_t vo_info_sdl = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "sdl", XINE_VERSION_CODE, &vo_info_sdl, init_class }, + { PLUGIN_VIDEO_OUT, 16, "sdl", XINE_VERSION_CODE, &vo_info_sdl, init_class }, { PLUGIN_NONE, 0, "" , 0 , NULL, NULL} }; diff --git a/src/video_out/video_out_syncfb.c b/src/video_out/video_out_syncfb.c index 73bae6fd8..8b7b609bb 100644 --- a/src/video_out/video_out_syncfb.c +++ b/src/video_out/video_out_syncfb.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_syncfb.c,v 1.86 2003/08/04 02:14:12 miguelfreitas Exp $ + * $Id: video_out_syncfb.c,v 1.87 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_syncfb.c, SyncFB (for Matrox G200/G400 cards) interface for xine * @@ -72,7 +72,8 @@ typedef struct { typedef struct { vo_frame_t vo_frame; /* uint8_t* data_mem[3];*/ - int width, height, ratio_code, format; + int width, height, format; + double ratio; } syncfb_frame_t; struct syncfb_driver_s { @@ -498,7 +499,7 @@ static vo_frame_t* syncfb_alloc_frame(vo_driver_t* this_gen) static void syncfb_update_frame_format(vo_driver_t* this_gen, vo_frame_t* frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) + double ratio, int format, int flags) { syncfb_frame_t* frame = (syncfb_frame_t *) frame_gen; /* uint32_t frame_size = width*height; */ @@ -549,7 +550,7 @@ static void syncfb_update_frame_format(vo_driver_t* this_gen, } } - frame->ratio_code = ratio_code; + frame->ratio = ratio; } static void syncfb_overlay_blend(vo_driver_t* this_gen, vo_frame_t* frame_gen, vo_overlay_t* overlay) @@ -578,14 +579,14 @@ static void syncfb_display_frame(vo_driver_t* this_gen, vo_frame_t* frame_gen) */ if((frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio_code != this->sc.delivered_ratio_code)) { + || (frame->ratio != this->sc.delivered_ratio)) { #ifdef DEBUG_OUTPUT printf("video_out_syncfb: debug. (frame format changed)\n"); #endif - this->sc.delivered_width = frame->width; - this->sc.delivered_height = frame->height; - this->sc.delivered_ratio_code = frame->ratio_code; + this->sc.delivered_width = frame->width; + this->sc.delivered_height = frame->height; + this->sc.delivered_ratio = frame->ratio; syncfb_compute_ideal_size(this); @@ -664,8 +665,8 @@ static int syncfb_set_property(vo_driver_t* this_gen, int property, int value) break; case VO_PROP_ASPECT_RATIO: - if(value >= NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if(value >= XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->props[property].value = value; this->sc.user_ratio = value; @@ -876,7 +877,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi } this->props[VO_PROP_INTERLACED].value = 0; - this->sc.user_ratio = this->props[VO_PROP_ASPECT_RATIO].value = ASPECT_AUTO; + this->sc.user_ratio = this->props[VO_PROP_ASPECT_RATIO].value = XINE_VO_ASPECT_AUTO; this->props[VO_PROP_ZOOM_X].value = 100; this->props[VO_PROP_ZOOM_Y].value = 100; @@ -1056,7 +1057,7 @@ static vo_info_t vo_info_syncfb = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "SyncFB", XINE_VERSION_CODE, &vo_info_syncfb, init_class }, + { PLUGIN_VIDEO_OUT, 16, "SyncFB", XINE_VERSION_CODE, &vo_info_syncfb, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_vidix.c b/src/video_out/video_out_vidix.c index 551451aef..af37144f1 100644 --- a/src/video_out/video_out_vidix.c +++ b/src/video_out/video_out_vidix.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_vidix.c,v 1.44 2003/05/31 18:33:31 miguelfreitas Exp $ + * $Id: video_out_vidix.c,v 1.45 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_vidix.c * @@ -81,7 +81,8 @@ typedef struct vidix_property_s { typedef struct vidix_frame_s { vo_frame_t vo_frame; - int width, height, ratio_code, format; + int width, height, format; + double ratio; } vidix_frame_t; @@ -521,7 +522,7 @@ static void vidix_config_playback (vidix_driver_t *this) { static void vidix_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { vidix_frame_t *frame = (vidix_frame_t *) frame_gen; @@ -566,7 +567,7 @@ static void vidix_update_frame_format (vo_driver_t *this_gen, } } - frame->ratio_code = ratio_code; + frame->ratio = ratio; } @@ -612,16 +613,16 @@ static void vidix_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio_code != this->sc.delivered_ratio_code) + || (frame->ratio != this->sc.delivered_ratio) || (frame->format != this->delivered_format ) ) { #ifdef LOG printf("video_out_vidix: change frame format\n"); #endif - this->sc.delivered_width = frame->width; - this->sc.delivered_height = frame->height; - this->sc.delivered_ratio_code = frame->ratio_code; - this->delivered_format = frame->format; + this->sc.delivered_width = frame->width; + this->sc.delivered_height = frame->height; + this->sc.delivered_ratio = frame->ratio; + this->delivered_format = frame->format; vidix_compute_ideal_size( this ); this->sc.force_redraw = 1; @@ -677,8 +678,8 @@ static int vidix_set_property (vo_driver_t *this_gen, vo_scale_aspect_ratio_name(value)); #endif - if(value == NUM_ASPECT_RATIOS) - value = this->props[property].value = ASPECT_AUTO; + if(value == XINE_VO_ASPECT_NUM_RATIOS) + value = this->props[property].value = XINE_VO_ASPECT_AUTO; this->sc.user_ratio = value; vidix_compute_ideal_size (this); @@ -961,9 +962,9 @@ static vidix_driver_t *open_plugin (video_driver_class_t *class_gen) { (void*) vidix_db_callback, this); /* Set up remaining props */ - this->props[VO_PROP_ASPECT_RATIO].value = ASPECT_AUTO; + this->props[VO_PROP_ASPECT_RATIO].value = XINE_VO_ASPECT_AUTO; this->props[VO_PROP_ASPECT_RATIO].min = 0; - this->props[VO_PROP_ASPECT_RATIO].max = NUM_ASPECT_RATIOS; + this->props[VO_PROP_ASPECT_RATIO].max = XINE_VO_ASPECT_NUM_RATIOS; this->props[VO_PROP_ZOOM_X].value = 100; this->props[VO_PROP_ZOOM_X].min = VO_ZOOM_MIN; @@ -1228,10 +1229,10 @@ static vo_info_t vo_info_vidixfb = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ #ifdef HAVE_X11 - { PLUGIN_VIDEO_OUT, 15, "vidix", XINE_VERSION_CODE, &vo_info_vidix, vidix_init_class }, + { PLUGIN_VIDEO_OUT, 16, "vidix", XINE_VERSION_CODE, &vo_info_vidix, vidix_init_class }, #endif #ifdef HAVE_FB - { PLUGIN_VIDEO_OUT, 15, "vidixfb", XINE_VERSION_CODE, &vo_info_vidixfb, vidixfb_init_class }, + { PLUGIN_VIDEO_OUT, 16, "vidixfb", XINE_VERSION_CODE, &vo_info_vidixfb, vidixfb_init_class }, #endif { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c index b4bb0ec5d..dece34455 100644 --- a/src/video_out/video_out_xshm.c +++ b/src/video_out/video_out_xshm.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_xshm.c,v 1.111 2003/05/31 18:33:31 miguelfreitas Exp $ + * $Id: video_out_xshm.c,v 1.112 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_xshm.c, X11 shared memory extension interface for xine * @@ -447,7 +447,7 @@ static void xshm_compute_rgb_size (xshm_driver_t *this, xshm_frame_t *frame) { static void xshm_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { xshm_driver_t *this = (xshm_driver_t *) this_gen; xshm_frame_t *frame = (xshm_frame_t *) frame_gen; @@ -463,7 +463,7 @@ static void xshm_update_frame_format (vo_driver_t *this_gen, if ((width != frame->sc.delivered_width) || (height != frame->sc.delivered_height) - || (ratio_code != frame->sc.delivered_ratio_code) + || (ratio != frame->sc.delivered_ratio) || (flags != frame->flags) || (format != frame->format) || (this->sc.user_ratio != frame->sc.user_ratio) @@ -475,13 +475,13 @@ static void xshm_update_frame_format (vo_driver_t *this_gen, printf ("video_out_xshm: frame format (from decoder) has changed => adapt\n"); #endif - frame->sc.delivered_width = width; - frame->sc.delivered_height = height; - frame->sc.delivered_ratio_code = ratio_code; - frame->flags = flags; - frame->format = format; - frame->sc.user_ratio = this->sc.user_ratio; - frame->sc.gui_pixel_aspect = this->sc.gui_pixel_aspect; + frame->sc.delivered_width = width; + frame->sc.delivered_height = height; + frame->sc.delivered_ratio = ratio; + frame->flags = flags; + frame->format = format; + frame->sc.user_ratio = this->sc.user_ratio; + frame->sc.gui_pixel_aspect = this->sc.gui_pixel_aspect; xshm_compute_ideal_size (this, frame); } @@ -781,7 +781,7 @@ static int xshm_get_property (vo_driver_t *this_gen, int property) { switch (property) { case VO_PROP_ASPECT_RATIO: - return this->sc.user_ratio ; + return this->sc.user_ratio; case VO_PROP_MAX_NUM_FRAMES: return 15; case VO_PROP_BRIGHTNESS: @@ -807,8 +807,8 @@ static int xshm_set_property (vo_driver_t *this_gen, if ( property == VO_PROP_ASPECT_RATIO) { - if (value>=NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if (value>=XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->sc.user_ratio = value; if (this->xine->verbosity >= XINE_VERBOSITY_LOG) { printf ("video_out_xshm: aspect ratio changed to %s\n", @@ -1074,7 +1074,7 @@ static vo_driver_t *xshm_open_plugin (video_driver_class_t *class_gen, const voi this->sc.dest_size_cb = visual->dest_size_cb; this->sc.user_data = visual->user_data; - this->sc.user_ratio = ASPECT_AUTO; + this->sc.user_ratio = XINE_VO_ASPECT_AUTO; this->sc.scaling_disabled = config->register_bool (config, "video.disable_scaling", 0, _("disable all video scaling (faster!)"), @@ -1289,6 +1289,6 @@ static vo_info_t vo_info_xshm = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "xshm", XINE_VERSION_CODE, &vo_info_xshm, xshm_init_class }, + { PLUGIN_VIDEO_OUT, 16, "xshm", XINE_VERSION_CODE, &vo_info_xshm, xshm_init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c index 900d137fa..9b990ea9b 100644 --- a/src/video_out/video_out_xv.c +++ b/src/video_out/video_out_xv.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_xv.c,v 1.170 2003/07/12 12:31:14 mroi Exp $ + * $Id: video_out_xv.c,v 1.171 2003/08/04 03:47:11 miguelfreitas Exp $ * * video_out_xv.c, X11 video extension interface for xine * @@ -93,7 +93,8 @@ typedef struct { typedef struct { vo_frame_t vo_frame; - int width, height, ratio_code, format; + int width, height, format; + double ratio; XvImage *image; XShmSegmentInfo shminfo; @@ -408,7 +409,7 @@ static void dispose_ximage (xv_driver_t *this, static void xv_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - int ratio_code, int format, int flags) { + double ratio, int format, int flags) { xv_driver_t *this = (xv_driver_t *) this_gen; xv_frame_t *frame = (xv_frame_t *) frame_gen; @@ -456,7 +457,7 @@ static void xv_update_frame_format (vo_driver_t *this_gen, XUnlockDisplay (this->display); } - frame->ratio_code = ratio_code; + frame->ratio = ratio; } #define DEINTERLACE_CROMA @@ -473,7 +474,7 @@ static void xv_deinterlace_frame (xv_driver_t *this) { || (frame->width != this->deinterlace_frame.width) || (frame->height != this->deinterlace_frame.height ) || (frame->format != this->deinterlace_frame.format) - || (frame->ratio_code != this->deinterlace_frame.ratio_code)) { + || (frame->ratio != this->deinterlace_frame.ratio)) { XLockDisplay (this->display); if( this->deinterlace_frame.image ) @@ -486,7 +487,7 @@ static void xv_deinterlace_frame (xv_driver_t *this) { this->deinterlace_frame.width = frame->width; this->deinterlace_frame.height = frame->height; this->deinterlace_frame.format = frame->format; - this->deinterlace_frame.ratio_code = frame->ratio_code; + this->deinterlace_frame.ratio = frame->ratio; XUnlockDisplay (this->display); } @@ -673,9 +674,9 @@ static int xv_redraw_needed (vo_driver_t *this_gen) { if( this->cur_frame ) { - this->sc.delivered_height = this->cur_frame->height; - this->sc.delivered_width = this->cur_frame->width; - this->sc.delivered_ratio_code = this->cur_frame->ratio_code; + this->sc.delivered_height = this->cur_frame->height; + this->sc.delivered_width = this->cur_frame->width; + this->sc.delivered_ratio = this->cur_frame->ratio; xv_compute_ideal_size(this); @@ -717,7 +718,7 @@ static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { */ if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio_code != this->sc.delivered_ratio_code) ) { + || (frame->ratio != this->sc.delivered_ratio) ) { #ifdef LOG printf("video_out_xv: frame format changed\n"); #endif @@ -832,8 +833,8 @@ static int xv_set_property (vo_driver_t *this_gen, break; case VO_PROP_ASPECT_RATIO: - if (value>=NUM_ASPECT_RATIOS) - value = ASPECT_AUTO; + if (value>=XINE_VO_ASPECT_NUM_RATIOS) + value = XINE_VO_ASPECT_AUTO; this->props[property].value = value; if (this->xine->verbosity >= XINE_VERBOSITY_LOG) { @@ -1221,7 +1222,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi } this->props[VO_PROP_INTERLACED].value = 0; - this->sc.user_ratio = this->props[VO_PROP_ASPECT_RATIO].value = ASPECT_AUTO; + this->sc.user_ratio = this->props[VO_PROP_ASPECT_RATIO].value = XINE_VO_ASPECT_AUTO; this->props[VO_PROP_ZOOM_X].value = 100; this->props[VO_PROP_ZOOM_Y].value = 100; @@ -1472,7 +1473,7 @@ static vo_info_t vo_info_xv = { plugin_info_t xine_plugin_info[] = { /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_OUT, 15, "xv", XINE_VERSION_CODE, &vo_info_xv, init_class }, + { PLUGIN_VIDEO_OUT, 16, "xv", XINE_VERSION_CODE, &vo_info_xv, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; |