[Scummvm-git-logs] scummvm master -> a06885758c0922ab9fe705f748419e21e05b8197
bluegr
noreply at scummvm.org
Sun Feb 1 15:12:12 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
a06885758c IMAGE: Make more codecs into optional components
Commit: a06885758c0922ab9fe705f748419e21e05b8197
https://github.com/scummvm/scummvm/commit/a06885758c0922ab9fe705f748419e21e05b8197
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2026-02-01T17:12:07+02:00
Commit Message:
IMAGE: Make more codecs into optional components
Changed paths:
configure
engines/mohawk/configure.engine
engines/sci/configure.engine
engines/testbed/configure.engine
engines/ultima/configure.engine
engines/zvision/configure.engine
image/codecs/codec.cpp
image/codecs/mpeg.h
image/codecs/svq1.cpp
image/codecs/svq1.h
image/codecs/truemotion1.cpp
image/codecs/truemotion1.h
image/module.mk
diff --git a/configure b/configure
index 7fe2f7c0cc5..0c97cea0cfb 100755
--- a/configure
+++ b/configure
@@ -297,14 +297,18 @@ _need_memalign=yes
_have_x86=no
_have_amd64=no
_imgui=yes
+_cdtoons=auto
_indeo3=auto
_indeo45=auto
_hnm=auto
+_jyv1=auto
_qdm2=auto
_fmtowns_pc98_audio=auto
_sid_audio=auto
_svq1=auto
+_truemotion1=auto
_vgmtrans_audio=auto
+_xan=auto
_midi=auto
_universaltracker=auto
@@ -328,6 +332,7 @@ add_feature zlib "zlib" "_zlib"
add_feature test_cxx11 "Test C++11" "_test_cxx11"
# Components are features which may be disabled if unused by the engines
+add_component cdtoons "CDTOONS" "_cdtoons" "USE_CDTOONS"
add_component enet "ENet" "_enet" "USE_ENET"
add_component fmtowns_pc98_audio "FM-TOWNS/PC98 audio" "_fmtowns_pc98_audio" "USE_FMTOWNS_PC98_AUDIO"
add_component gif "GIF" "_gif" "USE_GIF"
@@ -335,6 +340,7 @@ add_component hnm "HNM" "_hnm" "USE_HNM"
add_component imgui "Dear ImGui based debugger" "_imgui" "USE_IMGUI"
add_component indeo3 "Indeo 3" "_indeo3" "USE_INDEO3"
add_component indeo45 "Indeo 4&5" "_indeo45" "USE_INDEO45"
+add_component jyv1 "JYV1" "_jyv1" "USE_JYV1"
add_component lua "Lua" "_lua" "USE_LUA"
add_component vpx "libvpx" "_vpx" "USE_VPX"
add_component theoradec "libtheoradec" "_theoradec" "USE_THEORADEC"
@@ -345,8 +351,10 @@ add_component qdm2 "QDM2" "_qdm2" "USE_QDM2"
add_component sid_audio "SID audio" "_sid_audio" "USE_SID_AUDIO"
add_component svq1 "Sorenson Video 1" "_svq1" "USE_SVQ1"
add_component tinygl "TinyGL" "_tinygl" "USE_TINYGL"
+add_component truemotion1 "TrueMotion 1" "_truemotion1" "USE_SVQ1"
add_component universaltracker "External Tracker Libraries" "_universaltracker" "USE_UNIVERSALTRACKER"
add_component vgmtrans_audio "VGMTrans Soundfont audio" "_vgmtrans_audio" "USE_VGMTRANS_AUDIO"
+add_component xan "XAN" "_xan" "USE_XAN"
# The following list of features cannot be declared as components
# because they are used in the common code:
diff --git a/engines/mohawk/configure.engine b/engines/mohawk/configure.engine
index cddd05034b6..78db3d8a988 100644
--- a/engines/mohawk/configure.engine
+++ b/engines/mohawk/configure.engine
@@ -1,7 +1,7 @@
# This file is included from the main "configure" script
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] [components]
add_engine mohawk "Mohawk" yes "cstime myst mystme riven" "Living Books" "highres" ""
-add_engine cstime "Where in Time is Carmen Sandiego?" no
+add_engine cstime "Where in Time is Carmen Sandiego?" no "" "" "" "cdtoons"
add_engine riven "Riven: The Sequel to Myst" yes "" "" "16bit"
add_engine myst "Myst" yes
add_engine mystme "Myst ME" yes "" "" "16bit jpeg" "qdm2 svq1"
diff --git a/engines/sci/configure.engine b/engines/sci/configure.engine
index 9f0816f5fcf..b5178f98c47 100644
--- a/engines/sci/configure.engine
+++ b/engines/sci/configure.engine
@@ -1,4 +1,4 @@
# This file is included from the main "configure" script
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] [components]
add_engine sci "SCI" yes "sci32" "SCI 0-1.1 games" "" "midi fmtowns_pc98_audio"
-add_engine sci32 "SCI32 games" yes "" "" "highres" "indeo3"
+add_engine sci32 "SCI32 games" yes "" "" "highres" "indeo3 truemotion1"
diff --git a/engines/testbed/configure.engine b/engines/testbed/configure.engine
index 1fce680a777..2d2a2e394a2 100644
--- a/engines/testbed/configure.engine
+++ b/engines/testbed/configure.engine
@@ -1,3 +1,3 @@
# This file is included from the main "configure" script
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] [components]
-add_engine testbed "TestBed: the Testing framework" no "" "" "" "imgui midi universaltracker indeo3 indeo45 vpx mpc hnm mpeg2 qdm2 svq1 tinygl"
+add_engine testbed "TestBed: the Testing framework" no "" "" "" "imgui midi universaltracker cdtoons indeo3 indeo45 vpx mpc hnm jyv1 mpeg2 qdm2 svq1 truemotion1 xan tinygl"
diff --git a/engines/ultima/configure.engine b/engines/ultima/configure.engine
index 3be6c69e0bb..3a7037f6b88 100644
--- a/engines/ultima/configure.engine
+++ b/engines/ultima/configure.engine
@@ -5,4 +5,4 @@ add_engine akalabeth "Akalabeth" no "" "" ""
add_engine ultima1 "Ultima I - The First Age of Darkness" no "" "" ""
add_engine ultima4 "Ultima IV - Quest of the Avatar" yes "" "" "16bit"
add_engine ultima6 "Ultima VI = The False Prophet" yes "" "" "highres 16bit lua"
-add_engine ultima8 "Ultima VIII - Pagan" yes "" "" "highres 16bit" "imgui"
+add_engine ultima8 "Ultima VIII - Pagan" yes "" "" "highres 16bit" "imgui jyv1 xan"
diff --git a/engines/zvision/configure.engine b/engines/zvision/configure.engine
index 6ac360c20ff..6cbdc079106 100644
--- a/engines/zvision/configure.engine
+++ b/engines/zvision/configure.engine
@@ -1,3 +1,3 @@
# This file is included from the main "configure" script
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] [components]
-add_engine zvision "Z-Vision" yes "" "" "freetype2 16bit highres" "midi mpeg2"
+add_engine zvision "Z-Vision" yes "" "" "freetype2 16bit highres" "midi truemotion1 mpeg2"
diff --git a/image/codecs/codec.cpp b/image/codecs/codec.cpp
index cf0280edc79..bce8ba524a9 100644
--- a/image/codecs/codec.cpp
+++ b/image/codecs/codec.cpp
@@ -25,15 +25,9 @@
#include "image/codecs/bmp_raw.h"
#include "image/codecs/cdtoons.h"
#include "image/codecs/cinepak.h"
-
-#ifdef USE_INDEO3
#include "image/codecs/indeo3.h"
-#endif
-#ifdef USE_INDEO45
#include "image/codecs/indeo4.h"
#include "image/codecs/indeo5.h"
-#endif
-
#include "image/codecs/jyv1.h"
#include "image/codecs/mjpeg.h"
#include "image/codecs/mpeg.h"
@@ -64,12 +58,16 @@ Graphics::PixelFormat Codec::getDefaultYUVFormat() {
}
Codec *createBitmapCodec(uint32 tag, uint32 streamTag, int width, int height, int bitsPerPixel) {
+#ifdef USE_JYV1
// Crusader videos are special cased here because the frame type is not in the "compression"
// tag but in the "stream handler" tag for these files
if (JYV1Decoder::isJYV1StreamTag(streamTag)) {
assert(bitsPerPixel == 8);
return new JYV1Decoder(width, height, streamTag);
}
+#endif
+
+ const char *missingCodec = nullptr;
switch (tag) {
case SWAP_CONSTANT_32(0):
@@ -92,50 +90,71 @@ Codec *createBitmapCodec(uint32 tag, uint32 streamTag, int width, int height, in
#ifdef USE_INDEO3
return new Indeo3Decoder(width, height, bitsPerPixel);
#else
- warning("createBitmapCodec(): Indeo 3 codec is not compiled");
- return 0;
+ missingCodec = "Indeo 3";
+ break;
#endif
case MKTAG('I', 'V', '4', '1'):
case MKTAG('I', 'V', '4', '2'):
#ifdef USE_INDEO45
return new Indeo4Decoder(width, height, bitsPerPixel);
#else
- warning("createBitmapCodec(): Indeo 4 & 5 codecs are not compiled");
- return 0;
+ missingCodec = "Indeo 4";
+ break;
#endif
case MKTAG('I', 'V', '5', '0'):
#ifdef USE_INDEO45
return new Indeo5Decoder(width, height, bitsPerPixel);
#else
- warning("createBitmapCodec(): Indeo 4 & 5 codecs are not compiled");
- return 0;
+ missingCodec = "Indeo 5";
+ break;
#endif
case MKTAG('X', 'x', 'a', 'n'):
+#ifdef USE_XAN
return new XanDecoder(width, height, bitsPerPixel);
-#ifdef IMAGE_CODECS_TRUEMOTION1_H
+#else
+ missingCodec = "Xan";
+ break;
+#endif
case MKTAG('D','U','C','K'):
case MKTAG('d','u','c','k'):
+#ifdef USE_TRUEMOTION1
return new TrueMotion1Decoder();
+#else
+ missingCodec = "TrueMotion1";
+ break;
#endif
-#ifdef USE_MPEG2
case MKTAG('m','p','g','2'):
+#ifdef USE_MPEG2
return new MPEGDecoder();
+#else
+ missingCodec = "MPEG2";
+ break;
#endif
case MKTAG('M','J','P','G'):
case MKTAG('m','j','p','g'):
+#ifdef USE_MJPEG
return new MJPEGDecoder();
+#else
+ missingCodec = "MJPEG";
+ break;
+#endif
default:
if (tag & 0x00FFFFFF)
warning("Unknown BMP/AVI compression format \'%s\'", tag2str(tag));
else
warning("Unknown BMP/AVI compression format %d", SWAP_BYTES_32(tag));
+ return 0;
}
+ assert(missingCodec);
+ warning("createBitmapCodec(): %s codec is not compiled", missingCodec);
return 0;
}
Codec *createQuickTimeCodec(uint32 tag, int width, int height, int bitsPerPixel) {
+ const char *missingCodec = nullptr;
+
switch (tag) {
case MKTAG('c','v','i','d'):
// Cinepak: As used by most Myst and all Riven videos as well as some Myst ME videos. "The Chief" videos also use this. Very popular for Director titles.
@@ -154,19 +173,29 @@ Codec *createQuickTimeCodec(uint32 tag, int width, int height, int bitsPerPixel)
// Sorenson Video 1: Used by some Myst ME videos.
return new SVQ1Decoder(width, height);
#else
- warning("createQuickTimeCodec(): Sorenson Video 1 codec is not compiled");
- return 0;
+ missingCodec = "Sorenson Video 1";
+ break;
#endif
case MKTAG('S','V','Q','3'):
// Sorenson Video 3: Used by some Myst ME videos.
warning("Sorenson Video 3 not yet supported");
- break;
+ return 0;
case MKTAG('j','p','e','g'):
+#ifdef USE_JPEG
// JPEG: Used by some Myst ME 10th Anniversary videos.
return new JPEGDecoder();
+#else
+ missingCodec = "JPEG";
+ break;
+#endif
case MKTAG('Q','k','B','k'):
+#ifdef USE_CDTOONS
// CDToons: Used by most of the Broderbund games.
return new CDToonsDecoder(width, height);
+#else
+ missingCodec = "CDToons";
+ break;
+#endif
case MKTAG('r','a','w',' '):
// Used my L-Zone-mac (Director game)
return new BitmapRawDecoder(width, height, bitsPerPixel, true, true);
@@ -175,13 +204,16 @@ Codec *createQuickTimeCodec(uint32 tag, int width, int height, int bitsPerPixel)
// Indeo 3: Used by Team Xtreme: Operation Weather Disaster (Spanish)
return new Indeo3Decoder(width, height, bitsPerPixel);
#else
- warning("createQuickTimeCodec(): Indeo 3 codec is not compiled");
- return 0;
+ missingCodec = "Indeo 3";
+ break;
#endif
default:
warning("Unsupported QuickTime codec \'%s\'", tag2str(tag));
+ return 0;
}
+ assert(missingCodec);
+ warning("createBitmapCodec(): %s codec is not compiled", missingCodec);
return 0;
}
diff --git a/image/codecs/mpeg.h b/image/codecs/mpeg.h
index cb648c2ae92..b56a852253b 100644
--- a/image/codecs/mpeg.h
+++ b/image/codecs/mpeg.h
@@ -25,8 +25,6 @@
#include "image/codecs/codec.h"
#include "graphics/pixelformat.h"
-#ifdef USE_MPEG2
-
typedef struct mpeg2dec_s mpeg2dec_t;
typedef struct mpeg2_info_s mpeg2_info_t;
@@ -79,5 +77,3 @@ private:
} // End of namespace Image
#endif // IMAGE_CODECS_MPEG_H
-
-#endif // USE_MPEG2
diff --git a/image/codecs/svq1.cpp b/image/codecs/svq1.cpp
index 72b993bbe20..60ab8b3ce05 100644
--- a/image/codecs/svq1.cpp
+++ b/image/codecs/svq1.cpp
@@ -22,10 +22,6 @@
// Sorenson Video 1 Codec
// Based off FFmpeg's SVQ1 decoder (written by Arpi and Nick Kurshev)
-#include "common/scummsys.h"
-
-#ifdef USE_SVQ1
-
#include "image/codecs/svq1.h"
#include "image/codecs/svq1_cb.h"
#include "image/codecs/svq1_vlc.h"
@@ -806,5 +802,3 @@ bool SVQ1Decoder::svq1DecodeDeltaBlock(Common::BitStream32BEMSB *ss, byte *curre
}
} // End of namespace Image
-
-#endif
diff --git a/image/codecs/svq1.h b/image/codecs/svq1.h
index cc222f825ad..a4ea80e9d57 100644
--- a/image/codecs/svq1.h
+++ b/image/codecs/svq1.h
@@ -24,8 +24,6 @@
#include "common/scummsys.h"
-#ifdef USE_SVQ1
-
#include "common/bitstream.h"
#include "image/codecs/codec.h"
@@ -98,5 +96,3 @@ private:
} // End of namespace Image
#endif
-
-#endif
diff --git a/image/codecs/truemotion1.cpp b/image/codecs/truemotion1.cpp
index 9895919135d..a90dfc52cd2 100644
--- a/image/codecs/truemotion1.cpp
+++ b/image/codecs/truemotion1.cpp
@@ -21,11 +21,7 @@
// Based on the TrueMotion 1 decoder by Alex Beregszaszi & Mike Melanson in FFmpeg
-#include "common/scummsys.h"
#include "image/codecs/truemotion1.h"
-
-#ifdef IMAGE_CODECS_TRUEMOTION1_H
-
#include "image/codecs/truemotion1data.h"
#include "common/stream.h"
#include "common/textconsole.h"
@@ -427,5 +423,3 @@ const Graphics::Surface *TrueMotion1Decoder::decodeFrame(Common::SeekableReadStr
}
} // End of namespace Image
-
-#endif
diff --git a/image/codecs/truemotion1.h b/image/codecs/truemotion1.h
index 7fe42247cc4..e22138bc24b 100644
--- a/image/codecs/truemotion1.h
+++ b/image/codecs/truemotion1.h
@@ -21,9 +21,6 @@
// Based on the TrueMotion 1 decoder by Alex Beregszaszi & Mike Melanson in FFmpeg
-// Only compile if SCI32 is enabled, TESTBED is enabled, ZVISION is enabled, or if we're building dynamic modules
-#if defined(ENABLE_SCI32) || defined(ENABLE_TESTBED) || defined(ENABLE_ZVISION) || defined(DYNAMIC_MODULES)
-
#ifndef IMAGE_CODECS_TRUEMOTION1_H
#define IMAGE_CODECS_TRUEMOTION1_H
@@ -103,4 +100,3 @@ private:
} // End of namespace Image
#endif // IMAGE_CODECS_TRUEMOTION1_H
-#endif // SCI32/Plugins guard
diff --git a/image/module.mk b/image/module.mk
index 67d0c733c13..813ae6f63bb 100644
--- a/image/module.mk
+++ b/image/module.mk
@@ -16,33 +16,37 @@ MODULE_OBJS := \
tga.o \
xbm.o \
codecs/bmp_raw.o \
- codecs/cdtoons.o \
codecs/cinepak.o \
codecs/codec.o \
codecs/dither.o \
codecs/hlz.o \
- codecs/jyv1.o \
- codecs/mjpeg.o \
codecs/msrle.o \
codecs/msrle4.o \
codecs/msvideo1.o \
codecs/qtrle.o \
codecs/rpza.o \
- codecs/smc.o \
- codecs/svq1.o \
- codecs/truemotion1.o \
- codecs/xan.o
+ codecs/smc.o
ifdef USE_GIF
MODULE_OBJS += \
gif.o
endif
+ifdef USE_JPEG
+MODULE_OBJS += \
+ codecs/mjpeg.o
+endif
+
ifdef USE_MPEG2
MODULE_OBJS += \
codecs/mpeg.o
endif
+ifdef USE_CDTOONS
+MODULE_OBJS += \
+ codecs/cdtoons.o
+endif
+
ifdef USE_INDEO3
MODULE_OBJS += \
codecs/indeo3.o
@@ -63,5 +67,25 @@ MODULE_OBJS += \
codecs/hnm.o
endif
+ifdef USE_JYV1
+MODULE_OBJS += \
+ codecs/jyv1.o
+endif
+
+ifdef USE_SVQ1
+MODULE_OBJS += \
+ codecs/svq1.o
+endif
+
+ifdef USE_TRUEMOTION1
+MODULE_OBJS += \
+ codecs/truemotion1.o
+endif
+
+ifdef USE_XAN
+MODULE_OBJS += \
+ codecs/xan.o
+endif
+
# Include common rules
include $(srcdir)/rules.mk
More information about the Scummvm-git-logs
mailing list