summaryrefslogtreecommitdiffstats
path: root/video/out/gpu/ra.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-05-09 17:57:48 +0200
committerwm4 <wm4@nowhere>2020-05-09 18:02:57 +0200
commit9e480850432c05e20bcb4c6d296bb08e5c757d18 (patch)
tree3ded761c41ae8793b3a2e1fc426e5b2daea51906 /video/out/gpu/ra.h
parent4019c113140ff4841607c84598f2ce5912464f9b (diff)
downloadmpv-9e480850432c05e20bcb4c6d296bb08e5c757d18.tar.bz2
mpv-9e480850432c05e20bcb4c6d296bb08e5c757d18.tar.xz
vo_gpu: fix green shit with float yuv input
This was incorrect at least because the colorspace matrix attempted to center chroma at (conceptually) 0.5, instead of 0. Also, it tried to apply the fixed point shift logic for component sizes > 8 bit. There is no float yuv format in mpv/ffmpeg yet, but see next commit, which enables zimg to output it. I'm assuming zimg defines this format such that luma is in range [0,1] and chroma in range [-0.5,0.5], with the levels flag being ignored. This is consistent with H264/5 Annex E (I think...), and it sort of seems to look right, so that's it.
Diffstat (limited to 'video/out/gpu/ra.h')
-rw-r--r--video/out/gpu/ra.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/video/out/gpu/ra.h b/video/out/gpu/ra.h
index 58bf55357b..4067b52425 100644
--- a/video/out/gpu/ra.h
+++ b/video/out/gpu/ra.h
@@ -531,6 +531,8 @@ struct ra_imgfmt_desc {
int component_bits;
// Like mp_regular_imgfmt.component_pad.
int component_pad;
+ // == planes[n].ctype (RA_CTYPE_UNKNOWN if not applicable)
+ enum ra_ctype component_type;
// For each texture and each texture output (rgba order) describe what
// component it returns.
// The values are like the values in mp_regular_imgfmt_plane.components[].