[FFmpeg-devel] [PATCH v2 10/13] avcodec/sanm: codec37: reimplement comp4
Manuel Lauss
manuel.lauss at gmail.com
Sat Mar 15 11:32:17 EET 2025
Compression 4 code 0 means copy from delta buffer without mv,
AND start of a skip run. This gets rid of the extra case and column
index manipulation and implements this as it is implemented in the
original game exe, i.e. as a special case for after mv copy.
Signed-off-by: Manuel Lauss <manuel.lauss at gmail.com>
---
libavcodec/sanm.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/libavcodec/sanm.c b/libavcodec/sanm.c
index eecfefd43b..2d7a0eeb32 100644
--- a/libavcodec/sanm.c
+++ b/libavcodec/sanm.c
@@ -1106,16 +1106,14 @@ static int old_codec37(SANMVideoContext *ctx, int width, int height)
t = bytestream2_get_byteu(&ctx->gb);
for (k = 0; k < 4; k++)
memset(dst + i + k * stride, t, 4);
- } else if ((compr == 4) && (code == 0)) {
- if (bytestream2_get_bytes_left(&ctx->gb) < 1)
- return AVERROR_INVALIDDATA;
- skip_run = bytestream2_get_byteu(&ctx->gb) + 1;
- i -= 4;
} else {
mx = c37_mv[(mvoff * 255 + code) * 2];
my = c37_mv[(mvoff * 255 + code) * 2 + 1];
codec37_mv(dst + i, prev + i + mx + my * stride,
ctx->height, stride, i + mx, j + my);
+
+ if ((compr == 4) && (code == 0))
+ skip_run = bytestream2_get_byteu(&ctx->gb);
}
}
dst += stride * 4;
--
2.48.1
More information about the ffmpeg-devel
mailing list