summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Worley <connorbworley@gmail.com>2024-02-08 11:07:09 -0800
committerLynne <dev@lynne.ee>2024-02-08 20:36:04 +0100
commit3b6a515c5f8f97c9cc4e2cd7a99e12658813a512 (patch)
tree536c05fcd6a6c8a0ebe2fef7c68c700f6df76c81
parentc4e9556cf54609b9182dfb1766d3e2c43299a9d6 (diff)
lavc/dxv: treat DXT5-tagged files as DXT4
DXV files seem to misnomer DXT5 and really encode DXT4 with premultiplied alpha. At least, this is what Resolume alley does. To check, encode some input with alpha as "Normal Quality, With Alpha" in Alley, then decode the output with this change -- results are true to the original input compared to git-master. Signed-off-by: Connor Worley <connorbworley@gmail.com>
-rw-r--r--libavcodec/dxv.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/dxv.c b/libavcodec/dxv.c
index 5923811b29..1e6791e63f 100644
--- a/libavcodec/dxv.c
+++ b/libavcodec/dxv.c
@@ -1074,7 +1074,8 @@ static int dxv_decode(AVCodecContext *avctx, AVFrame *frame,
break;
case MKBETAG('D', 'X', 'T', '5'):
decompress_tex = dxv_decompress_dxt5;
- ctx->tex_funct = ctx->texdsp.dxt5_block;
+ /* DXV misnomers DXT5, alpha is premultiplied so use DXT4 instead */
+ ctx->tex_funct = ctx->texdsp.dxt4_block;
ctx->tex_rat = 4;
ctx->tex_step = 16;
msgcomp = "DXTR5";