summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-08-24 16:33:13 +0200
committerwm4 <wm4@nowhere>2013-08-24 17:03:06 +0200
commitc3a0721d095969de1b86e7be8bce21854145e718 (patch)
tree7de912f39cdc3d40d83b86fa8d197addeb3f760d /video
parent086b37a830261adb4ecf816413f1fec1dda9bbd4 (diff)
downloadmpv-c3a0721d095969de1b86e7be8bce21854145e718.tar.bz2
mpv-c3a0721d095969de1b86e7be8bce21854145e718.tar.xz
video/out: don't require VOs to handle screenshot aspect specially
This affects VOs which just reuse the mp_image from draw_image() to return screenshots. The aspect of these images is never different from the aspect the screenshots should be, so there's no reason to adjust the aspect in these cases. Other VOs still need it in order to restore the original image attributes. This requires some changes to the video filter code to make sure that the aspect in the passed mp_images is consistent. The changes in mplayer.c and vd_lavc.c are (probably) not strictly needed for this commit, but contribute to consistency.
Diffstat (limited to 'video')
-rw-r--r--video/decode/vd_lavc.c4
-rw-r--r--video/filter/vf.c1
-rw-r--r--video/out/vo.c2
-rw-r--r--video/out/vo_x11.c4
-rw-r--r--video/out/vo_xv.c4
5 files changed, 4 insertions, 11 deletions
diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c
index 5303d1f748..838a3deab2 100644
--- a/video/decode/vd_lavc.c
+++ b/video/decode/vd_lavc.c
@@ -748,9 +748,7 @@ static int decode(struct sh_video *sh, struct demux_packet *packet,
if (ctx->hwdec && ctx->hwdec->process_image)
mpi = ctx->hwdec->process_image(ctx, mpi);
- mpi->colorspace = ctx->image_params.colorspace;
- mpi->levels = ctx->image_params.colorlevels;
- mpi->chroma_location = ctx->image_params.chroma_location;
+ mp_image_set_params(mpi, &ctx->image_params);
*out_image = mpi;
return 1;
diff --git a/video/filter/vf.c b/video/filter/vf.c
index f074c2059b..85a03cfa85 100644
--- a/video/filter/vf.c
+++ b/video/filter/vf.c
@@ -155,6 +155,7 @@ static void vf_fix_img_params(struct mp_image *img, struct mp_image_params *p)
img->colorspace = p->colorspace;
img->levels = p->colorlevels;
img->chroma_location = p->chroma_location;
+ mp_image_set_display_size(img, p->d_w, p->d_h);
}
// Get a new image for filter output, with size and pixel format according to
diff --git a/video/out/vo.c b/video/out/vo.c
index 1237ae0a23..f3fc4aca4d 100644
--- a/video/out/vo.c
+++ b/video/out/vo.c
@@ -404,8 +404,6 @@ int vo_reconfig(struct vo *vo, struct mp_image_params *params, int flags)
vo->dheight = d_height;
struct mp_image_params p2 = *params;
- p2.d_w = vo->aspdat.prew;
- p2.d_h = vo->aspdat.preh;
int ret;
if (vo->driver->reconfig) {
diff --git a/video/out/vo_x11.c b/video/out/vo_x11.c
index 21da245b2c..95f4ba299c 100644
--- a/video/out/vo_x11.c
+++ b/video/out/vo_x11.c
@@ -440,9 +440,7 @@ static mp_image_t *get_screenshot(struct vo *vo)
if (!p->original_image)
return NULL;
- struct mp_image *res = mp_image_new_ref(p->original_image);
- mp_image_set_display_size(res, vo->aspdat.prew, vo->aspdat.preh);
- return res;
+ return mp_image_new_ref(p->original_image);
}
static void wait_for_completion(struct vo *vo, int max_outstanding)
diff --git a/video/out/vo_xv.c b/video/out/vo_xv.c
index 8f652d991b..731710d0af 100644
--- a/video/out/vo_xv.c
+++ b/video/out/vo_xv.c
@@ -650,9 +650,7 @@ static mp_image_t *get_screenshot(struct vo *vo)
if (!ctx->original_image)
return NULL;
- struct mp_image *res = mp_image_new_ref(ctx->original_image);
- mp_image_set_display_size(res, vo->aspdat.prew, vo->aspdat.preh);
- return res;
+ return mp_image_new_ref(ctx->original_image);
}
static void draw_image(struct vo *vo, mp_image_t *mpi)