diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2023-01-24 07:58:16 +0100 |
---|---|---|
committer | Leo Izen <leo.izen@gmail.com> | 2023-03-02 09:37:06 -0500 |
commit | 40af0893a94d7effa31a31ef33555271b835c3ad (patch) | |
tree | 524598d7eb23a846b96c06822d4f9c1dff0e9fb4 /video | |
parent | 507d817f19d8fcaffd7aad0b6af6de4b36f1ce93 (diff) | |
download | mpv-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.c | 11 |
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)) |