[FFmpeg-cvslog] avcodec/sanm: ignore codec45
Manuel Lauss
git at videolan.org
Wed Mar 19 22:06:28 EET 2025
ffmpeg | branch: master | Manuel Lauss <manuel.lauss at gmail.com> | Fri Mar 14 22:26:46 2025 +0100| [fd6bfaab55148a7e016fb77f31cf177d31e5568f] | committer: Manuel Lauss
avcodec/sanm: ignore codec45
Codec45 is used in some RA2 videos on top of codec37.
It consists of 2 tables (768 and 32768 bytes), and datapackets
like codec2 (delta-x, delta-y) with a pixel counter instead of a color value.
It then reads the 4 surrounding pixels, looks up 3 separate values
for each in table1, adds them together to form an index into
table2 for a new pixel value, in a row.
The data coming in gets the x/y coordinates out of the visible
area very quickly (2-3 iterations); I don't see any visual
difference between the ffmpeg-produced frames and ones captured
with dosbox from rebel assault 2, which leads me to believe this
codec never worked as intended.
Signed-off-by: Manuel Lauss <manuel.lauss at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fd6bfaab55148a7e016fb77f31cf177d31e5568f
---
libavcodec/sanm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libavcodec/sanm.c b/libavcodec/sanm.c
index e3f4112756..91be83029f 100644
--- a/libavcodec/sanm.c
+++ b/libavcodec/sanm.c
@@ -1673,6 +1673,8 @@ static int process_frame_obj(SANMVideoContext *ctx, GetByteContext *gb)
return old_codec23(ctx, gb, top, left, w, h, param, parm2);
case 37:
return old_codec37(ctx, w, h);
+ case 45:
+ return 0;
case 47:
return old_codec47(ctx, w, h);
case 48:
More information about the ffmpeg-cvslog
mailing list