[prev in list] [next in list] [prev in thread] [next in thread]
List: xine-cvslog
Subject: [xine-cvs] HG: xine-lib-1.2: Add more VO_CAP_* to indicate support
From: Darren Salt <linux () youmustbejoking ! demon ! co ! uk>
Date: 2008-02-25 18:13:26
Message-ID: bc1842ea9acc2f300fb5.1203960231 () hg ! debian ! org
[Download RAW message or body]
# HG changeset patch
# User Darren Salt <linux@youmustbejoking.demon.co.uk>
# Date 1203960231 0
# Node ID bc1842ea9acc2f300fb57a047a6b2419655c88b5
# Parent ebb0d5507d3208f8e73af78f912230719d37830a
Add more VO_CAP_* to indicate support for colour controls & zoom properties.
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a ChangeLog
--- a/ChangeLog Mon Feb 25 17:23:51 2008 +0000
+++ b/ChangeLog Fri Feb 15 09:33:51 2008 +0100
@@ -57,6 +57,8 @@ xine-lib (1.1.90) (Unreleased)
please use DirectFB or VIDIX instead.
* The Xv and XxMC video output plugins now support Xv port selection.
(XvMC does not, at present.)
+ * Report more video output capabilities via (port)->get_capabilities():
+ colour controls, zooming, colour keying.
xine-lib (1.1.11) unreleased
* Reworked the plugin directory naming so that external plugins don't have
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a include/xine/video_out.h
--- a/include/xine/video_out.h Mon Feb 25 17:23:51 2008 +0000
+++ b/include/xine/video_out.h Fri Feb 15 09:33:51 2008 +0100
@@ -282,7 +282,14 @@ struct xine_video_port_s {
#define VO_CAP_UNSCALED_OVERLAY 0x00000010 /* driver can blend overlay at \
output resolution */ #define VO_CAP_CROP 0x00000020 /* driver can \
crop */ #define VO_CAP_XXMC 0x00000040 /* driver can use extended \
XvMC */
-
+#define VO_CAP_HUE 0x00010000
+#define VO_CAP_SATURATION 0x00020000
+#define VO_CAP_CONTRAST 0x00040000
+#define VO_CAP_BRIGHTNESS 0x00080000
+#define VO_CAP_COLORKEY 0x00100000
+#define VO_CAP_AUTOPAINT_COLORKEY 0x00200000
+#define VO_CAP_ZOOM_X 0x00400000
+#define VO_CAP_ZOOM_Y 0x00800000
/*
* vo_driver_s contains the functions every display driver
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_directfb.c
--- a/src/video_out/video_out_directfb.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_directfb.c Fri Feb 15 09:33:51 2008 +0100
@@ -1742,6 +1742,20 @@ static void directfb_frame_output_cb (vo
/*** DirectFB plugin functions ***/
+static inline int convert_caps (DFBDisplayLayerCapabilities caps)
+{
+ int vo = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
+ if (caps & DLCAPS_HUE)
+ vo |= VO_CAP_HUE;
+ if (caps & DLCAPS_SATURATION)
+ vo |= VO_CAP_SATURATION;
+ if (caps & DLCAPS_CONTRAST)
+ vo |= VO_CAP_CONTRAST;
+ if (caps & DLCAPS_BRIGHTNESS)
+ vo |= VO_CAP_BRIGHTNESS;
+ return vo;
+}
+
static vo_driver_t *open_plugin_fb (video_driver_class_t *class_gen, const void \
*visual_gen) { directfb_class_t *class = (directfb_class_t *) class_gen;
directfb_driver_t *this;
@@ -1821,7 +1835,7 @@ static vo_driver_t *open_plugin_fb (vide
return NULL;
}
- this->capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP;
+ this->capabilities = convert_caps (this->caps);
/* set default configuration */
this->buffermode = 1; // double
this->vsync = 0;
@@ -2000,7 +2014,7 @@ static vo_driver_t *open_plugin_x11 (vid
xprintf (this->xine, XINE_VERBOSITY_LOG,
_("video_out_directfb: using display layer #%d.\n"), id);
- this->capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_CROP;
+ this->capabilities = convert_caps (this->caps);
/* set default configuration */
this->buffermode = 1; // double
this->vsync = 0;
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a src/video_out/video_out_fb.c
--- a/src/video_out/video_out_fb.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_fb.c Fri Feb 15 09:33:51 2008 +0100
@@ -155,7 +155,7 @@ typedef struct
static uint32_t fb_get_capabilities(vo_driver_t *this_gen)
{
- return VO_CAP_YV12 | VO_CAP_YUY2;
+ return VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_CONTRAST | \
VO_CAP_SATURATION; }
static void fb_frame_proc_slice(vo_frame_t *vo_img, uint8_t **src)
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_opengl.c
--- a/src/video_out/video_out_opengl.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_opengl.c Fri Feb 15 09:33:51 2008 +0100
@@ -1200,7 +1200,7 @@ static void *render_run (opengl_driver_t
static uint32_t opengl_get_capabilities (vo_driver_t *this_gen) {
/* opengl_driver_t *this = (opengl_driver_t *) this_gen; */
- uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2;
+ uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | \
VO_CAP_CONTRAST | VO_CAP_SATURATION;
/* TODO: somehow performance goes down during the first few frames */
/* if (this->xoverlay) */
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_pgx64.c
--- a/src/video_out/video_out_pgx64.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_pgx64.c Fri Feb 15 09:33:51 2008 +0100
@@ -552,8 +552,7 @@ static uint32_t pgx64_get_capabilities(v
{
/*pgx64_driver_t *this = (pgx64_driver_t *)(void *)this_gen;*/
- return VO_CAP_YV12 |
- VO_CAP_YUY2;
+ return VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | VO_CAP_SATURATION;
}
static vo_frame_t *pgx64_alloc_frame(vo_driver_t *this_gen)
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_vidix.c
--- a/src/video_out/video_out_vidix.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_vidix.c Fri Feb 15 09:33:51 2008 +0100
@@ -964,7 +964,7 @@ static vidix_driver_t *open_plugin (vide
this->config = config;
this->got_frame_data = 0;
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
/* Find what equalizer flags are supported */
if(this->vidix_cap.flags & FLAG_EQUALIZER) {
@@ -973,24 +973,28 @@ static vidix_driver_t *open_plugin (vide
"video_out_vidix: couldn't get equalizer capabilities: %s\n", strerror(err));
} else {
if(this->vidix_eq.cap & VEQ_CAP_BRIGHTNESS) {
+ this->capabilities |= VO_CAP_BRIGHTNESS;
this->props[VO_PROP_BRIGHTNESS].value = 0;
this->props[VO_PROP_BRIGHTNESS].min = -1000;
this->props[VO_PROP_BRIGHTNESS].max = 1000;
}
if(this->vidix_eq.cap & VEQ_CAP_CONTRAST) {
+ this->capabilities |= VO_CAP_CONTRAST;
this->props[VO_PROP_CONTRAST].value = 0;
this->props[VO_PROP_CONTRAST].min = -1000;
this->props[VO_PROP_CONTRAST].max = 1000;
}
if(this->vidix_eq.cap & VEQ_CAP_SATURATION) {
+ this->capabilities |= VO_CAP_SATURATION;
this->props[VO_PROP_SATURATION].value = 0;
this->props[VO_PROP_SATURATION].min = -1000;
this->props[VO_PROP_SATURATION].max = 1000;
}
if(this->vidix_eq.cap & VEQ_CAP_HUE) {
+ this->capabilities |= VO_CAP_HUE;
this->props[VO_PROP_HUE].value = 0;
this->props[VO_PROP_HUE].min = -1000;
this->props[VO_PROP_HUE].max = 1000;
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_xcbshm.c
--- a/src/video_out/video_out_xcbshm.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_xcbshm.c Fri Feb 15 09:33:51 2008 +0100
@@ -221,7 +221,7 @@ static void dispose_ximage(xshm_driver_t
static uint32_t xshm_get_capabilities (vo_driver_t *this_gen) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
- uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2;
+ uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | \
VO_CAP_CONTRAST | VO_CAP_SATURATION;
if( this->xoverlay )
capabilities |= VO_CAP_UNSCALED_OVERLAY;
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_xcbxv.c
--- a/src/video_out/video_out_xcbxv.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_xcbxv.c Fri Feb 15 09:33:51 2008 +0100
@@ -1234,7 +1234,7 @@ static vo_driver_t *open_plugin(video_dr
this->gc = xcb_generate_id(this->connection);
xcb_create_gc(this->connection, this->gc, this->window, 0, NULL);
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->use_shm = 1;
this->use_colorkey = 0;
this->colorkey = 0;
@@ -1295,28 +1295,34 @@ static vo_driver_t *open_plugin(video_dr
if (!strncmp(xcb_xv_adaptor_info_name(adaptor_it.data), "NV", 2)) {
xprintf (this->xine, XINE_VERBOSITY_NONE, LOG_MODULE ": ignoring broken \
XV_HUE settings on NVidia cards\n"); } else {
+ this->capabilities |= VO_CAP_HUE;
xv_check_capability (this, VO_PROP_HUE, attribute_it.data,
adaptor_it.data->base_id,
NULL, NULL, NULL);
}
} else if(!strcmp(name, "XV_SATURATION")) {
+ this->capabilities |= VO_CAP_SATURATION;
xv_check_capability (this, VO_PROP_SATURATION, attribute_it.data,
adaptor_it.data->base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_BRIGHTNESS")) {
+ this->capabilities |= VO_CAP_BRIGHTNESS;
xv_check_capability (this, VO_PROP_BRIGHTNESS, attribute_it.data,
adaptor_it.data->base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_CONTRAST")) {
+ this->capabilities |= VO_CAP_CONTRAST;
xv_check_capability (this, VO_PROP_CONTRAST, attribute_it.data,
adaptor_it.data->base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_COLORKEY")) {
+ this->capabilities |= VO_CAP_COLORKEY;
xv_check_capability (this, VO_PROP_COLORKEY, attribute_it.data,
adaptor_it.data->base_id,
"video.device.xv_colorkey",
VIDEO_DEVICE_XV_COLORKEY_HELP);
} else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) {
+ this->capabilities |= VO_CAP_AUTOPAINT_COLORKEY;
xv_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attribute_it.data,
adaptor_it.data->base_id,
"video.device.xv_autopaint_colorkey",
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_xshm.c
--- a/src/video_out/video_out_xshm.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_xshm.c Fri Feb 15 09:33:51 2008 +0100
@@ -314,7 +314,7 @@ static void dispose_ximage (xshm_driver_
static uint32_t xshm_get_capabilities (vo_driver_t *this_gen) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
- uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2;
+ uint32_t capabilities = VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS | \
VO_CAP_CONTRAST | VO_CAP_SATURATION;
if( this->xoverlay )
capabilities |= VO_CAP_UNSCALED_OVERLAY;
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a src/video_out/video_out_xv.c
--- a/src/video_out/video_out_xv.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_xv.c Fri Feb 15 09:33:51 2008 +0100
@@ -1275,7 +1275,7 @@ static vo_driver_t *open_plugin_2 (video
LOCK_DISPLAY(this);
this->gc = XCreateGC (this->display, this->drawable, 0, \
NULL); UNLOCK_DISPLAY(this);
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->use_shm = 1;
this->use_colorkey = 0;
this->colorkey = 0;
@@ -1342,28 +1342,34 @@ static vo_driver_t *open_plugin_2 (video
if (!strncmp(adaptor_info[adaptor_num].name, "NV", 2)) {
xprintf (this->xine, XINE_VERBOSITY_NONE, LOG_MODULE ": ignoring broken \
XV_HUE settings on NVidia cards\n"); } else {
+ this->capabilities |= VO_CAP_HUE;
xv_check_capability (this, VO_PROP_HUE, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
}
} else if(!strcmp(name, "XV_SATURATION")) {
+ this->capabilities |= VO_CAP_SATURATION;
xv_check_capability (this, VO_PROP_SATURATION, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_BRIGHTNESS")) {
+ this->capabilities |= VO_CAP_BRIGHTNESS;
xv_check_capability (this, VO_PROP_BRIGHTNESS, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_CONTRAST")) {
+ this->capabilities |= VO_CAP_CONTRAST;
xv_check_capability (this, VO_PROP_CONTRAST, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_COLORKEY")) {
+ this->capabilities |= VO_CAP_COLORKEY;
xv_check_capability (this, VO_PROP_COLORKEY, attr[k],
adaptor_info[adaptor_num].base_id,
"video.device.xv_colorkey",
VIDEO_DEVICE_XV_COLORKEY_HELP);
} else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) {
+ this->capabilities |= VO_CAP_AUTOPAINT_COLORKEY;
xv_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k],
adaptor_info[adaptor_num].base_id,
"video.device.xv_autopaint_colorkey",
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_xvmc.c
--- a/src/video_out/video_out_xvmc.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_xvmc.c Fri Feb 15 09:33:51 2008 +0100
@@ -1332,7 +1332,7 @@ static vo_driver_t *open_plugin (video_d
XLockDisplay(this->display);
this->gc = XCreateGC(this->display, this->drawable, 0, NULL);
XUnlockDisplay(this->display);
- this->capabilities = VO_CAP_XVMC_MOCOMP | VO_CAP_CROP;
+ this->capabilities = VO_CAP_XVMC_MOCOMP | VO_CAP_CROP | VO_CAP_ZOOM_X | \
VO_CAP_ZOOM_Y;
this->surface_type_id = class->surface_type_id;
this->max_surface_width = class->max_surface_width;
@@ -1401,28 +1401,34 @@ static vo_driver_t *open_plugin (video_d
if (!strncmp(adaptor_info[adaptor_num].name, "NV", 2)) {
xprintf (this->xine, XINE_VERBOSITY_NONE, LOG_MODULE ": ignoring broken \
XV_HUE settings on NVidia cards\n"); } else {
+ this->capabilities |= VO_CAP_HUE;
xvmc_check_capability (this, VO_PROP_HUE, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
}
} else if(!strcmp(name, "XV_SATURATION")) {
+ this->capabilities |= VO_CAP_SATURATION;
xvmc_check_capability (this, VO_PROP_SATURATION, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_BRIGHTNESS")) {
+ this->capabilities |= VO_CAP_BRIGHTNESS;
xvmc_check_capability (this, VO_PROP_BRIGHTNESS, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_CONTRAST")) {
+ this->capabilities |= VO_CAP_CONTRAST;
xvmc_check_capability (this, VO_PROP_CONTRAST, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_COLORKEY")) {
+ this->capabilities |= VO_CAP_COLORKEY;
xvmc_check_capability (this, VO_PROP_COLORKEY, attr[k],
adaptor_info[adaptor_num].base_id,
"video.device.xv_colorkey",
VIDEO_DEVICE_XV_COLORKEY_HELP);
} else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) {
+ this->capabilities |= VO_CAP_AUTOPAINT_COLORKEY;
xvmc_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k],
adaptor_info[adaptor_num].base_id,
"video.device.xv_autopaint_colorkey",
diff -r bc1842ea9acc2f300fb57a047a6b2419655c88b5 -r \
ebb0d5507d3208f8e73af78f912230719d37830a \
src/video_out/video_out_xxmc.c
--- a/src/video_out/video_out_xxmc.c Mon Feb 25 17:23:51 2008 +0000
+++ b/src/video_out/video_out_xxmc.c Fri Feb 15 09:33:51 2008 +0100
@@ -2520,7 +2520,7 @@ static vo_driver_t *open_plugin (video_d
XLockDisplay (this->display);
this->gc = XCreateGC (this->display, this->drawable, 0, \
NULL); XUnlockDisplay (this->display);
- this->capabilities = VO_CAP_CROP;
+ this->capabilities = VO_CAP_CROP | VO_CAP_ZOOM_X | VO_CAP_ZOOM_Y;
this->use_shm = 1;
this->use_colorkey = 0;
this->colorkey = 0;
@@ -2584,28 +2584,34 @@ static vo_driver_t *open_plugin (video_d
if (!strncmp(adaptor_info[adaptor_num].name, "NV", 2)) {
xprintf (this->xine, XINE_VERBOSITY_NONE, LOG_MODULE ": ignoring broken \
XV_HUE settings on NVidia cards\n"); } else {
+ this->capabilities |= VO_CAP_HUE;
xxmc_check_capability (this, VO_PROP_HUE, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
}
} else if(!strcmp(name, "XV_SATURATION")) {
+ this->capabilities |= VO_CAP_SATURATION;
xxmc_check_capability (this, VO_PROP_SATURATION, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_BRIGHTNESS")) {
+ this->capabilities |= VO_CAP_BRIGHTNESS;
xxmc_check_capability (this, VO_PROP_BRIGHTNESS, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_CONTRAST")) {
+ this->capabilities |= VO_CAP_CONTRAST;
xxmc_check_capability (this, VO_PROP_CONTRAST, attr[k],
adaptor_info[adaptor_num].base_id,
NULL, NULL, NULL);
} else if(!strcmp(name, "XV_COLORKEY")) {
+ this->capabilities |= VO_CAP_COLORKEY;
xxmc_check_capability (this, VO_PROP_COLORKEY, attr[k],
adaptor_info[adaptor_num].base_id,
"video.device.xv_colorkey",
VIDEO_DEVICE_XV_COLORKEY_HELP);
} else if(!strcmp(name, "XV_AUTOPAINT_COLORKEY")) {
+ this->capabilities |= VO_CAP_AUTOPAINT_COLORKEY;
xxmc_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k],
adaptor_info[adaptor_num].base_id,
"video.device.xv_autopaint_colorkey",
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Xine-cvslog mailing list
Xine-cvslog@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xine-cvslog
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic