summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-09-26 16:05:46 +0200
committerwm4 <wm4@nowhere>2013-09-26 16:09:08 +0200
commitf5bf6c0fb33fb6ff11f3250de708eb6e658772c9 (patch)
tree45b1cd109f782182b058dc2f45b2b5b406512a5c /video/filter
parent7eb13c4028f2eb9174f2f65d1cfc15e5186bfbbc (diff)
downloadmpv-f5bf6c0fb33fb6ff11f3250de708eb6e658772c9.tar.bz2
mpv-f5bf6c0fb33fb6ff11f3250de708eb6e658772c9.tar.xz
vd: move aspect calculation to a function
This function would probably be useful in other places too. I'm not sure why vd.c doesn't apply the aspect if it changes size by less than 4 pixels. Maybe it's supposed to avoid ugly results with bad scalers if the difference is too small to be noticed normally.
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf.c15
-rw-r--r--video/filter/vf.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/video/filter/vf.c b/video/filter/vf.c
index 216f3c42f4..1e27c043b5 100644
--- a/video/filter/vf.c
+++ b/video/filter/vf.c
@@ -587,6 +587,21 @@ void vf_rescale_dsize(int *d_width, int *d_height, int old_w, int old_h,
*d_height = *d_height * new_h / old_h;
}
+// Set *d_width/*d_height to display aspect ratio with the givem source size
+void vf_set_dar(int *d_w, int *d_h, int w, int h, double dar)
+{
+ *d_w = w;
+ *d_h = h;
+ if (dar > 0.01) {
+ *d_w = h * dar;
+ // we don't like horizontal downscale
+ if (*d_w < w) {
+ *d_w = w;
+ *d_h = w / dar;
+ }
+ }
+}
+
void vf_detc_init_pts_buf(struct vf_detc_pts_buf *p)
{
p->inpts_prev = MP_NOPTS_VALUE;
diff --git a/video/filter/vf.h b/video/filter/vf.h
index ea1246da17..f61bb8be80 100644
--- a/video/filter/vf.h
+++ b/video/filter/vf.h
@@ -150,6 +150,7 @@ void vf_print_filter_chain(int msglevel, struct vf_instance *vf);
void vf_rescale_dsize(int *d_width, int *d_height, int old_w, int old_h,
int new_w, int new_h);
+void vf_set_dar(int *d_width, int *d_height, int w, int h, double dar);
static inline int norm_qscale(int qscale, int type)
{