From 1cf229f4623ec302afb71ab93f44f273ffb1a515 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 21 Sep 2014 09:33:51 +0200 Subject: [PATCH] video: fix some vo_direct3d crashes due to FFmpeg nonsense For incomprehensible reasons, AV_PIX_FMT_GRAY8 (and some others) have a palette. This literally makes no sense and this issue has bitten us before, but it is how it is. This also caused a crash with vo_direct3d: this mapped a texture as IMGFMT_Y8 (i.e. AV_PIX_FMT_GRAY8), and when copying this, it tried to copy the non-existent palette. Fixes #1113. --- video/mp_image.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/video/mp_image.c b/video/mp_image.c index 7b430dfaf6..ea84bb4dbd 100644 --- a/video/mp_image.c +++ b/video/mp_image.c @@ -354,7 +354,8 @@ void mp_image_copy(struct mp_image *dst, struct mp_image *src) memcpy_pic(dst->planes[n], src->planes[n], line_bytes, dst->plane_h[n], dst->stride[n], src->stride[n]); } - if (dst->fmt.flags & MP_IMGFLAG_PAL) + // Watch out for AV_PIX_FMT_FLAG_PSEUDOPAL retardation + if ((dst->fmt.flags & MP_IMGFLAG_PAL) && dst->planes[1] && src->planes[1]) memcpy(dst->planes[1], src->planes[1], MP_PALETTE_SIZE); }