[FFmpeg-cvslog] lavc/dxv: fix incorrect back-reference index calculation in DXT5 decoding

Connor Worley git at videolan.org
Thu Feb 8 21:36:38 EET 2024


ffmpeg | branch: master | Connor Worley <connorbworley at gmail.com> | Mon Jan 29 22:26:26 2024 -0800| [1eeee68d8eb678665730bdd7862598be15867028] | committer: Lynne

lavc/dxv: fix incorrect back-reference index calculation in DXT5 decoding

This bug causes the DXT5 decoder to produce incorrect block texture data.
After the fix, textures are visually correct and match data decoded by
Resolume Alley (extracted with Nvida Nsight for comparison). Current FATE DXT5
samples did not cover this case.

Signed-off-by: Connor Worley <connorbworley at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1eeee68d8eb678665730bdd7862598be15867028
---

 libavcodec/dxv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/dxv.c b/libavcodec/dxv.c
index 1e6791e63f..e1c7cee3e8 100644
--- a/libavcodec/dxv.c
+++ b/libavcodec/dxv.c
@@ -955,7 +955,7 @@ static int dxv_decompress_dxt5(AVCodecContext *avctx)
                 break;
             case 2:
                 /* Copy two dwords from a previous index */
-                idx = 8 + bytestream2_get_le16(gbc);
+                idx = 8 + 4 * bytestream2_get_le16(gbc);
                 if (idx > pos || (unsigned int)(pos - idx) + 2 > ctx->tex_size / 4)
                     return AVERROR_INVALIDDATA;
                 prev = AV_RL32(ctx->tex_data + 4 * (pos - idx));



More information about the ffmpeg-cvslog mailing list