summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-08-15 22:33:24 +0200
committerwm4 <wm4@nowhere>2012-08-16 00:00:58 +0200
commit43bd4ab3a26c8034ea0bd05a2ae3a9a45c9d52da (patch)
tree76ea3db403276ff7319b22c081d743b58587cd67
parent0e7cf9518ae00e47f95762ead0c173fd6ac5f71d (diff)
downloadmpv-43bd4ab3a26c8034ea0bd05a2ae3a9a45c9d52da.tar.bz2
mpv-43bd4ab3a26c8034ea0bd05a2ae3a9a45c9d52da.tar.xz
vf_expand: remove OSD support
It's not clear why this video filter supported OSD rendering. The manpage says: "Can be used for placing subtitles/OSD in the resulting black bands." But every single VO already does this if vf_expand adds black borders. This feature is 100% pointless.
-rw-r--r--DOCS/man/en/vf.rst43
-rw-r--r--libmpcodecs/vf_expand.c99
-rw-r--r--mplayer.c2
3 files changed, 4 insertions, 140 deletions
diff --git a/DOCS/man/en/vf.rst b/DOCS/man/en/vf.rst
index 56bb32571a..2a93e8ec78 100644
--- a/DOCS/man/en/vf.rst
+++ b/DOCS/man/en/vf.rst
@@ -53,42 +53,9 @@ crop[=w:h:x:y]
<x>,<y>
Position of the cropped picture, defaults to center.
-cropdetect[=limit:round[:reset]]
- Calculates necessary cropping parameters and prints the recommended
- parameters to stdout.
-
- <limit>
- Threshold, which can be optionally specified from nothing (0) to
- everything (255) (default: 24).
- <round>
- Value which the width/height should be divisible by (default: 16). The
- offset is automatically adjusted to center the video. Use 2 to get
- only even dimensions (needed for 4:2:2 video). 16 is best when
- encoding to most video codecs.
- <reset>
- Counter that determines after how many frames cropdetect will reset
- the previously detected largest video area and start over to detect
- the current optimal crop area (default: 0). This can be useful when
- channel logos distort the video area. 0 indicates never reset and
- return the largest area encountered during playback.
-
-rectangle[=w:h:x:y]
- Draws a rectangle of the requested width and height at the specified
- coordinates over the image and prints current rectangle parameters to the
- console. This can be used to find optimal cropping parameters. If you bind
- the ``input.conf`` directive 'change_rectangle' to keystrokes, you can
- move and resize the rectangle on the fly.
-
- <w>,<h>
- width and height (default: -1, maximum possible width where boundaries
- are still visible.)
- <x>,<y>
- top left corner position (default: -1, uppermost leftmost)
-
-expand[=w:h:x:y:osd:aspect:round]
+expand[=w:h:x:y:aspect:round]
Expands (not scales) movie resolution to the given value and places the
- unscaled original at coordinates x, y. Can be used for placing
- subtitles/OSD in the resulting black bands.
+ unscaled original at coordinates x, y.
<w>,<h>
Expanded width,height (default: original width,height). Negative
@@ -102,12 +69,6 @@ expand[=w:h:x:y:osd:aspect:round]
<x>,<y>
position of original image on the expanded image (default: center)
- <osd>
- OSD/subtitle rendering
-
- :0: disable (default)
- :1: enable
-
<aspect>
Expands to fit an aspect instead of a resolution (default: 0).
diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c
index a5ce57fa98..0ff40d4652 100644
--- a/libmpcodecs/vf_expand.c
+++ b/libmpcodecs/vf_expand.c
@@ -16,8 +16,6 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define OSD_SUPPORT
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -34,11 +32,6 @@
#include "libvo/fastmemcpy.h"
#include "libavutil/avutil.h"
-#ifdef OSD_SUPPORT
-#include "sub/sub.h"
-#include "libvo/osd.h"
-#endif
-
#include "m_option.h"
#include "m_struct.h"
@@ -52,18 +45,15 @@ static struct vf_priv_s {
int cfg_exp_x, cfg_exp_y;
int exp_w,exp_h;
int exp_x,exp_y;
- int osd_enabled;
double aspect;
int round;
int passthrough;
int first_slice;
- struct osd_state *osd;
} const vf_priv_dflt = {
-1,-1,
-1,-1,
-1,-1,
-1,-1,
- 0,
0.,
1,
0,
@@ -71,61 +61,6 @@ static struct vf_priv_s {
};
//===========================================================================//
-#ifdef OSD_SUPPORT
-
-static void draw_func(void *ctx, int x0,int y0, int w,int h,unsigned char* src, unsigned char *srca, int stride){
- struct vf_instance *vf = ctx;
- unsigned char* dst;
- if(w<=0 || h<=0) return; // nothing to do...
-// printf("OSD redraw: %d;%d %dx%d \n",x0,y0,w,h);
- dst=vf->dmpi->planes[0]+
- vf->dmpi->stride[0]*y0+
- (vf->dmpi->bpp>>3)*x0;
- switch(vf->dmpi->imgfmt){
- case IMGFMT_BGR12:
- case IMGFMT_RGB12:
- vo_draw_alpha_rgb12(w, h, src, srca, stride, dst, vf->dmpi->stride[0]);
- break;
- case IMGFMT_BGR15:
- case IMGFMT_RGB15:
- vo_draw_alpha_rgb15(w,h,src,srca,stride,dst,vf->dmpi->stride[0]);
- break;
- case IMGFMT_BGR16:
- case IMGFMT_RGB16:
- vo_draw_alpha_rgb16(w,h,src,srca,stride,dst,vf->dmpi->stride[0]);
- break;
- case IMGFMT_BGR24:
- case IMGFMT_RGB24:
- vo_draw_alpha_rgb24(w,h,src,srca,stride,dst,vf->dmpi->stride[0]);
- break;
- case IMGFMT_BGR32:
- case IMGFMT_RGB32:
- vo_draw_alpha_rgb32(w,h,src,srca,stride,dst,vf->dmpi->stride[0]);
- break;
- case IMGFMT_YV12:
- case IMGFMT_I420:
- case IMGFMT_IYUV:
- case IMGFMT_YVU9:
- case IMGFMT_IF09:
- case IMGFMT_Y800:
- case IMGFMT_Y8:
- vo_draw_alpha_yv12(w,h,src,srca,stride,dst,vf->dmpi->stride[0]);
- break;
- case IMGFMT_YUY2:
- vo_draw_alpha_yuy2(w,h,src,srca,stride,dst,vf->dmpi->stride[0]);
- break;
- case IMGFMT_UYVY:
- vo_draw_alpha_yuy2(w,h,src,srca,stride,dst+1,vf->dmpi->stride[0]);
- break;
- }
-}
-
-static void draw_osd(struct vf_instance *vf,int w,int h){
- osd_draw_text(vf->priv->osd, vf->priv->exp_w,vf->priv->exp_h,draw_func,vf);
-}
-
-#endif
-//===========================================================================//
static int config(struct vf_instance *vf,
int width, int height, int d_width, int d_height,
@@ -204,14 +139,6 @@ static int config(struct vf_instance *vf,
static void get_image(struct vf_instance *vf, mp_image_t *mpi){
// if(mpi->type==MP_IMGTYPE_IPB) return; // not yet working
-#ifdef OSD_SUPPORT
- if(vf->priv->osd_enabled && (mpi->flags&MP_IMGFLAG_PRESERVE)){
- // check if we have to render osd!
- osd_update(vf->priv->osd, vf->priv->exp_w, vf->priv->exp_h);
- if(vo_osd_check_range_update(vf->priv->exp_x,vf->priv->exp_y,
- vf->priv->exp_x+mpi->w,vf->priv->exp_y+mpi->h)) return;
- }
-#endif
if(vf->priv->exp_w==mpi->width ||
(mpi->flags&(MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_ACCEPT_WIDTH)) ){
// try full DR !
@@ -345,9 +272,6 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
if(!vf->dmpi) { mp_tmsg(MSGT_VFILTER, MSGL_WARN, "Why do we get NULL??\n"); return 0; }
mpi->priv=NULL;
clear_borders(vf,mpi->w,mpi->h);
-#ifdef OSD_SUPPORT
- if(vf->priv->osd_enabled) draw_osd(vf,mpi->w,mpi->h);
-#endif
// we've used DR, so we're ready...
if(!(mpi->flags&MP_IMGFLAG_PLANAR))
vf->dmpi->planes[1] = mpi->planes[1]; // passthrough rgb8 palette
@@ -381,25 +305,12 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
vf->dmpi->planes[1] = mpi->planes[1]; // passthrough rgb8 palette
}
clear_borders(vf,mpi->w,mpi->h);
-#ifdef OSD_SUPPORT
- if(vf->priv->osd_enabled) draw_osd(vf,mpi->w,mpi->h);
-#endif
return vf_next_put_image(vf,vf->dmpi, pts);
}
//===========================================================================//
static int control(struct vf_instance *vf, int request, void* data){
-#ifdef OSD_SUPPORT
- switch(request){
- case VFCTRL_SET_OSD_OBJ:
- vf->priv->osd = data;
- break;
- case VFCTRL_DRAW_OSD:
- if(vf->priv->osd_enabled) return CONTROL_TRUE;
- break;
- }
-#endif
return vf_next_control(vf,request,data);
}
@@ -415,16 +326,13 @@ static int vf_open(vf_instance_t *vf, char *args){
vf->draw_slice=draw_slice;
vf->get_image=get_image;
vf->put_image=put_image;
- mp_msg(MSGT_VFILTER, MSGL_INFO, "Expand: %d x %d, %d ; %d, osd: %d, aspect: %f, round: %d\n",
+ mp_msg(MSGT_VFILTER, MSGL_INFO, "Expand: %d x %d, %d ; %d, aspect: %f, round: %d\n",
vf->priv->cfg_exp_w,
vf->priv->cfg_exp_h,
vf->priv->cfg_exp_x,
vf->priv->cfg_exp_y,
- vf->priv->osd_enabled,
vf->priv->aspect,
vf->priv->round);
- if (vf->priv->osd_enabled)
- vf->default_caps = VFCAP_OSD_FILTER;
return 1;
}
@@ -434,7 +342,6 @@ static m_option_t vf_opts_fields[] = {
{"h", ST_OFF(cfg_exp_h), CONF_TYPE_INT, 0, 0 ,0, NULL},
{"x", ST_OFF(cfg_exp_x), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL},
{"y", ST_OFF(cfg_exp_y), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL},
- {"osd", ST_OFF(osd_enabled), CONF_TYPE_FLAG, 0 , 0, 1, NULL},
{"aspect", ST_OFF(aspect), CONF_TYPE_DOUBLE, M_OPT_MIN, 0, 0, NULL},
{"round", ST_OFF(round), CONF_TYPE_INT, M_OPT_MIN, 1, 0, NULL},
{ NULL, NULL, 0, 0, 0, 0, NULL }
@@ -450,11 +357,7 @@ static const m_struct_t vf_opts = {
const vf_info_t vf_info_expand = {
-#ifdef OSD_SUPPORT
- "expanding & osd",
-#else
"expanding",
-#endif
"expand",
"A'rpi",
"",
diff --git a/mplayer.c b/mplayer.c
index f99b645494..306ca3d1da 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -2443,7 +2443,7 @@ static double update_video(struct MPContext *mpctx)
struct sh_video *sh_video = mpctx->sh_video;
struct vo *video_out = mpctx->video_out;
sh_video->vfilter->control(sh_video->vfilter, VFCTRL_SET_OSD_OBJ,
- mpctx->osd); // hack for vf_expand
+ mpctx->osd); // for vf_ass
if (!mpctx->opts.correct_pts)
return update_video_nocorrect_pts(mpctx);