mirror of
https://github.com/mpv-player/mpv
synced 2024-12-23 23:32:26 +00:00
vf_format: add w, h parameters
Yes, this thing became vf_scale through the back door.
This commit is contained in:
parent
eb1d50ba20
commit
ee4a8f0d57
@ -321,6 +321,10 @@ Available mpv-only filters are:
|
|||||||
Set the rotation the video is assumed to be encoded with in degrees.
|
Set the rotation the video is assumed to be encoded with in degrees.
|
||||||
The special value ``-1`` uses the input format.
|
The special value ``-1`` uses the input format.
|
||||||
|
|
||||||
|
``<w>``, ``<h>``
|
||||||
|
If not 0, perform conversion to the given size. Ignored if
|
||||||
|
``convert=yes`` is not set.
|
||||||
|
|
||||||
``<dw>``, ``<dh>``
|
``<dw>``, ``<dh>``
|
||||||
Set the display size. Note that setting the display size such that
|
Set the display size. Note that setting the display size such that
|
||||||
the video is scaled in both directions instead of just changing the
|
the video is scaled in both directions instead of just changing the
|
||||||
|
@ -50,12 +50,14 @@ struct vf_format_opts {
|
|||||||
int chroma_location;
|
int chroma_location;
|
||||||
int stereo_in;
|
int stereo_in;
|
||||||
int rotate;
|
int rotate;
|
||||||
|
int w, h;
|
||||||
int dw, dh;
|
int dw, dh;
|
||||||
double dar;
|
double dar;
|
||||||
int convert;
|
int convert;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void set_params(struct vf_format_opts *p, struct mp_image_params *out)
|
static void set_params(struct vf_format_opts *p, struct mp_image_params *out,
|
||||||
|
bool set_size)
|
||||||
{
|
{
|
||||||
if (p->colormatrix)
|
if (p->colormatrix)
|
||||||
out->color.space = p->colormatrix;
|
out->color.space = p->colormatrix;
|
||||||
@ -85,6 +87,10 @@ static void set_params(struct vf_format_opts *p, struct mp_image_params *out)
|
|||||||
if (p->rotate >= 0)
|
if (p->rotate >= 0)
|
||||||
out->rotate = p->rotate;
|
out->rotate = p->rotate;
|
||||||
|
|
||||||
|
if (p->w > 0 && set_size)
|
||||||
|
out->w = p->w;
|
||||||
|
if (p->h > 0 && set_size)
|
||||||
|
out->h = p->h;
|
||||||
AVRational dsize;
|
AVRational dsize;
|
||||||
mp_image_params_get_dsize(out, &dsize.num, &dsize.den);
|
mp_image_params_get_dsize(out, &dsize.num, &dsize.den);
|
||||||
if (p->dw > 0)
|
if (p->dw > 0)
|
||||||
@ -115,7 +121,7 @@ static void vf_format_process(struct mp_filter *f)
|
|||||||
par.color.levels = MP_CSP_LEVELS_TV;
|
par.color.levels = MP_CSP_LEVELS_TV;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_params(priv->opts, &par);
|
set_params(priv->opts, &par, true);
|
||||||
|
|
||||||
if (par.imgfmt != outfmt) {
|
if (par.imgfmt != outfmt) {
|
||||||
par.imgfmt = outfmt;
|
par.imgfmt = outfmt;
|
||||||
@ -135,7 +141,7 @@ static void vf_format_process(struct mp_filter *f)
|
|||||||
if (!priv->opts->convert && frame.type == MP_FRAME_VIDEO) {
|
if (!priv->opts->convert && frame.type == MP_FRAME_VIDEO) {
|
||||||
struct mp_image *img = frame.data;
|
struct mp_image *img = frame.data;
|
||||||
|
|
||||||
set_params(priv->opts, &img->params);
|
set_params(priv->opts, &img->params, false);
|
||||||
mp_image_params_guess_csp(&img->params);
|
mp_image_params_guess_csp(&img->params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,6 +193,8 @@ static const m_option_t vf_opts_fields[] = {
|
|||||||
OPT_CHOICE_C("chroma-location", chroma_location, 0, mp_chroma_names),
|
OPT_CHOICE_C("chroma-location", chroma_location, 0, mp_chroma_names),
|
||||||
OPT_CHOICE_C("stereo-in", stereo_in, 0, mp_stereo3d_names),
|
OPT_CHOICE_C("stereo-in", stereo_in, 0, mp_stereo3d_names),
|
||||||
OPT_INTRANGE("rotate", rotate, 0, -1, 359),
|
OPT_INTRANGE("rotate", rotate, 0, -1, 359),
|
||||||
|
OPT_INT("w", w, 0),
|
||||||
|
OPT_INT("h", h, 0),
|
||||||
OPT_INT("dw", dw, 0),
|
OPT_INT("dw", dw, 0),
|
||||||
OPT_INT("dh", dh, 0),
|
OPT_INT("dh", dh, 0),
|
||||||
OPT_DOUBLE("dar", dar, 0),
|
OPT_DOUBLE("dar", dar, 0),
|
||||||
|
Loading…
Reference in New Issue
Block a user