summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-01-24 07:58:16 +0100
committerLeo Izen <leo.izen@gmail.com>2023-03-02 09:37:06 -0500
commit40af0893a94d7effa31a31ef33555271b835c3ad (patch)
tree524598d7eb23a846b96c06822d4f9c1dff0e9fb4 /video
parent507d817f19d8fcaffd7aad0b6af6de4b36f1ce93 (diff)
downloadmpv-40af0893a94d7effa31a31ef33555271b835c3ad.tar.bz2
mpv-40af0893a94d7effa31a31ef33555271b835c3ad.tar.xz
mp_image: be less agressive with clearing color information
Diffstat (limited to 'video')
-rw-r--r--video/mp_image.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/video/mp_image.c b/video/mp_image.c
index bde0503df5..f39ecb5b79 100644
--- a/video/mp_image.c
+++ b/video/mp_image.c
@@ -529,10 +529,15 @@ void mp_image_copy_attributes(struct mp_image *dst, struct mp_image *src)
dst->params.chroma_location = src->params.chroma_location;
dst->params.alpha = src->params.alpha;
dst->nominal_fps = src->nominal_fps;
+
// ensure colorspace consistency
- if (mp_image_params_get_forced_csp(&dst->params) !=
- mp_image_params_get_forced_csp(&src->params))
- dst->params.color = (struct mp_colorspace){0};
+ enum mp_csp dst_forced_csp = mp_image_params_get_forced_csp(&dst->params);
+ if (mp_image_params_get_forced_csp(&src->params) != dst_forced_csp) {
+ dst->params.color.space = dst_forced_csp != MP_CSP_AUTO ?
+ dst_forced_csp :
+ mp_csp_guess_colorspace(src->w, src->h);
+ }
+
if ((dst->fmt.flags & MP_IMGFLAG_PAL) && (src->fmt.flags & MP_IMGFLAG_PAL)) {
if (dst->planes[1] && src->planes[1]) {
if (mp_image_make_writeable(dst))