summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-03-01 11:16:01 +0100
committerwm4 <wm4@nowhere>2013-03-01 11:16:01 +0100
commitd511ef79a09fa9e42479e66f4837daaa68b7255b (patch)
tree9df1d56baf902583387317af3070152c6de40f0c /video/filter
parent6b3d510165201e5600e9ec25c37f33541c03f58a (diff)
downloadmpv-d511ef79a09fa9e42479e66f4837daaa68b7255b.tar.bz2
mpv-d511ef79a09fa9e42479e66f4837daaa68b7255b.tar.xz
core: simplify OSD capability handling, remove VFCAP_OSD
VFCAP_OSD was used to determine at runtime whether the VO supports OSD rendering. This was mostly unused. vo_direct3d had an option to disable OSD (was supposed to allow to force auto-insertion of vf_ass, but we removed that anyway). vo_opengl_old could disable OSD rendering when a very old OpenGL version was detected, and had an option to explicitly disable it as well. Remove VFCAP_OSD from everything (and some associated logic). Now the vo_driver.draw_osd callback can be set to NULL to indicate missing OSD support (important so that vo_null etc. don't single-step on OSD redraw), and if OSD support depends on runtime support, the VO's draw_osd should just do nothing if OSD is not available. Also, do not access vo->want_redraw directly. Change the want_redraw reset logic for this purpose, too. (Probably unneeded, vo_flip_page resets it already.)
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf.c5
-rw-r--r--video/filter/vf.h2
-rw-r--r--video/filter/vf_pp.c8
-rw-r--r--video/filter/vf_sub.c1
-rw-r--r--video/filter/vf_vo.c3
5 files changed, 6 insertions, 13 deletions
diff --git a/video/filter/vf.c b/video/filter/vf.c
index 719ec395fb..aa1de0848b 100644
--- a/video/filter/vf.c
+++ b/video/filter/vf.c
@@ -463,10 +463,7 @@ int vf_next_control(struct vf_instance *vf, int request, void *data)
int vf_next_query_format(struct vf_instance *vf, unsigned int fmt)
{
- int flags = vf->next->query_format(vf->next, fmt);
- if (flags)
- flags |= vf->default_caps;
- return flags;
+ return vf->next->query_format(vf->next, fmt);
}
//============================================================================
diff --git a/video/filter/vf.h b/video/filter/vf.h
index 1bc0d5121c..3ff4b5ea87 100644
--- a/video/filter/vf.h
+++ b/video/filter/vf.h
@@ -66,8 +66,6 @@ typedef struct vf_instance {
void (*uninit)(struct vf_instance *vf);
- // caps:
- unsigned int default_caps; // used by default query_format()
// data:
struct vf_format fmt_in, fmt_out;
struct vf_instance *next;
diff --git a/video/filter/vf_pp.c b/video/filter/vf_pp.c
index 157dc3e068..372fc81cad 100644
--- a/video/filter/vf_pp.c
+++ b/video/filter/vf_pp.c
@@ -75,8 +75,11 @@ static int query_format(struct vf_instance *vf, unsigned int fmt){
case IMGFMT_444P:
case IMGFMT_422P:
case IMGFMT_420P:
- case IMGFMT_411P:
- return vf_next_query_format(vf,fmt);
+ case IMGFMT_411P: ;
+ int caps = vf_next_query_format(vf,fmt);
+ if (caps)
+ caps |= VFCAP_POSTPROC;
+ return caps;
}
return 0;
}
@@ -146,7 +149,6 @@ static int vf_open(vf_instance_t *vf, char *args){
vf->config=config;
vf->filter=filter;
vf->uninit=uninit;
- vf->default_caps=VFCAP_POSTPROC;
vf->priv=malloc(sizeof(struct vf_priv_s));
vf->priv->context=NULL;
diff --git a/video/filter/vf_sub.c b/video/filter/vf_sub.c
index a1f25efd6d..ae1390b6e9 100644
--- a/video/filter/vf_sub.c
+++ b/video/filter/vf_sub.c
@@ -153,7 +153,6 @@ static int vf_open(vf_instance_t *vf, char *args)
vf->uninit = uninit;
vf->control = control;
vf->filter = filter;
- vf->default_caps = VFCAP_OSD;
return 1;
}
diff --git a/video/filter/vf_vo.c b/video/filter/vf_vo.c
index d8d00130d7..922229aa53 100644
--- a/video/filter/vf_vo.c
+++ b/video/filter/vf_vo.c
@@ -63,9 +63,6 @@ static int config(struct vf_instance *vf,
if (vo_config(video_out, width, height, d_width, d_height, flags, outfmt))
return 0;
- // save vo's stride capability for the wanted colorspace:
- vf->default_caps = video_out->default_caps;
-
return 1;
}