Skip to content

Commit 021ece1

Browse files
authored
Merge pull request #2370 from fastfetch-cli/dev
Release: v2.64.1
2 parents d48bd73 + 9787b56 commit 021ece1

20 files changed

Lines changed: 237 additions & 182 deletions

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
# 2.64.1
2+
3+
Features:
4+
* Adds a CMake option `-DPACKAGES_REMOVE_DISABLED` to remove detection code of disabled packages (`-DPACKAGES_DISABLE_<PACKAGE_NAME>`) for slightly smaller binary size (Packages)
5+
6+
Bugfixes:
7+
* Fixes compatibility issues with Lua 5.3
8+
* Avoid possible infinite recursion in `encode_json` when encoding deeply nested tables or circular references
9+
* Fixes compilation issues when building with old macOS SDKs
10+
111
# 2.64.0
212

313
New **optional build** dependencies:

CMakeLists.txt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url
22

33
project(fastfetch
4-
VERSION 2.64.0
4+
VERSION 2.64.1
55
LANGUAGES C
66
DESCRIPTION "Fast neofetch-like system information tool"
77
HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch"
@@ -134,14 +134,33 @@ if(NOT BINARY_LINK_TYPE IN_LIST BINARY_LINK_TYPE_OPTIONS)
134134
message(FATAL_ERROR "BINARY_LINK_TYPE must be one of ${BINARY_LINK_TYPE_OPTIONS}")
135135
endif()
136136

137-
set(PACKAGE_MANAGERS AM APPIMAGE APK BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS)
137+
set(PACKAGE_MANAGERS
138+
AM APK APPIMAGE
139+
BREW
140+
CARDS CHOCO
141+
DPKG
142+
EMERGE EOPKG
143+
FLATPAK
144+
GUIX
145+
HPKG
146+
KISS
147+
LINGLONG LPKG LPKGBUILD
148+
MACPORTS MOSS MPORT
149+
NIX
150+
OPKG
151+
PACMAN PACSTALL PALUDIS PISI PKG PKGSRC PKGTOOL
152+
RPM
153+
SCOOP SNAP SOAR SORCERY
154+
WINGET
155+
XBPS)
138156
foreach(package_manager ${PACKAGE_MANAGERS})
139157
if(package_manager STREQUAL "WINGET")
140158
option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" ON)
141159
else()
142160
option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" OFF)
143161
endif()
144162
endforeach()
163+
option(PACKAGES_REMOVE_DISABLED "Remove disabled package managers from the build entirely, instead of just skipping them at runtime" OFF)
145164

146165
if (LINUX)
147166
set(CUSTOM_PCI_IDS_PATH "" CACHE STRING "Custom path to file pci.ids, defaults to `/usr/share/hwdata/pci.ids`")
@@ -2021,7 +2040,10 @@ else()
20212040
list(TRANSFORM PACKAGES_DISABLE_LIST APPEND "_BIT")
20222041
list(JOIN PACKAGES_DISABLE_LIST " | " PACKAGES_DISABLE_LIST)
20232042
endif()
2024-
target_compile_definitions(libfastfetch PRIVATE FF_PACKAGES_DISABLE_LIST=${PACKAGES_DISABLE_LIST})
2043+
target_compile_definitions(libfastfetch PRIVATE "FF_PACKAGES_DISABLE_LIST=${PACKAGES_DISABLE_LIST}")
2044+
if(PACKAGES_REMOVE_DISABLED)
2045+
target_compile_definitions(libfastfetch PRIVATE FF_PACKAGES_REMOVE_DISABLED=1)
2046+
endif()
20252047

20262048
######################
20272049
# Executable targets #

src/common/impl/base64.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ void ffBase64EncodeRaw(uint32_t size, const char* str, uint32_t* out_size, char*
3434

3535
static uint8_t decode_table[256];
3636

37-
void init_decode_table() {
37+
static void init_decode_table() {
3838
uint8_t ch = 0;
3939
do {
4040
int32_t code = -1;

src/common/impl/format.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ static bool parseLuaString(FFstrbuf* buffer, const char* script, uint32_t script
191191
lua_pushboolean(L, *(bool*) arg->value);
192192
break;
193193
case FF_ARG_TYPE_STRING:
194-
lua_pushstring(L, (const char*) arg->value);
194+
lua_pushlstring(L, (const char*) arg->value, strlen((const char*) arg->value));
195195
break;
196196
case FF_ARG_TYPE_STRBUF: {
197197
const FFstrbuf* sb = (const FFstrbuf*) arg->value;
@@ -232,7 +232,6 @@ static bool parseLuaString(FFstrbuf* buffer, const char* script, uint32_t script
232232
if (res) {
233233
ffStrbufAppendS(buffer, res);
234234
} else {
235-
// Fallback: use luaL_tolstring to get a reasonable representation
236235
luaL_tolstring(L, 1, NULL);
237236
const char* sval = lua_tolstring(L, -1, NULL);
238237
if (sval) {

src/common/impl/lua.c

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,17 @@
55

66
struct FFLuaData luaData;
77

8-
static yyjson_mut_val* lua2yyjson(lua_State* L, int idx, yyjson_mut_doc* doc) {
8+
static yyjson_mut_val* lua2yyjson(lua_State* L, int idx, yyjson_mut_doc* doc, int depth) {
9+
if (__builtin_expect(depth > 15, false)) {
10+
yyjson_mut_doc_free(doc);
11+
lua_pushlstring(
12+
L, "yyjson: recursion depth exceeded; possible circular reference",
13+
strlen("yyjson: recursion depth exceeded; possible circular reference")
14+
);
15+
lua_error(L); // noreturn
16+
__builtin_unreachable();
17+
}
18+
919
if (idx < 0) {
1020
idx = lua_gettop(L) + idx + 1;
1121
}
@@ -66,7 +76,7 @@ static yyjson_mut_val* lua2yyjson(lua_State* L, int idx, yyjson_mut_doc* doc) {
6676
yyjson_mut_val* arr = yyjson_mut_arr(doc);
6777
for (lua_Unsigned i = 1; i <= len; i++) {
6878
lua_rawgeti(L, idx, (lua_Integer) i);
69-
yyjson_mut_val* val = lua2yyjson(L, -1, doc);
79+
yyjson_mut_val* val = lua2yyjson(L, -1, doc, depth + 1);
7080
yyjson_mut_arr_append(arr, val);
7181
lua_pop(L, 1);
7282
}
@@ -80,7 +90,7 @@ static yyjson_mut_val* lua2yyjson(lua_State* L, int idx, yyjson_mut_doc* doc) {
8090
yyjson_mut_val* key = yyjson_mut_strncpy(doc, key_str, klen);
8191
lua_pop(L, 1);
8292

83-
yyjson_mut_val* val = lua2yyjson(L, -1, doc);
93+
yyjson_mut_val* val = lua2yyjson(L, -1, doc, depth + 1);
8494
yyjson_mut_obj_add(obj, key, val);
8595
lua_pop(L, 1);
8696
}
@@ -102,24 +112,31 @@ static int yyjsonEncode(lua_State* L) {
102112
}
103113

104114
yyjson_mut_doc* doc = yyjson_mut_doc_new(NULL);
105-
if (!doc) {
106-
return luaL_error(L, "failed to create yyjson document");
115+
if (__builtin_expect(!doc, false)) {
116+
lua_pushlstring(L, "yyjson: yyjson_mut_doc_new() failed", strlen("yyjson: yyjson_mut_doc_new() failed"));
117+
return lua_error(L);
107118
}
108119

109-
yyjson_mut_val* root = lua2yyjson(L, 1, doc);
120+
yyjson_mut_val* root = lua2yyjson(L, 1, doc, 0);
110121
yyjson_mut_doc_set_root(doc, root);
111122

112123
size_t jsonLen;
113124
yyjson_write_err err = {};
114125
FF_AUTO_FREE const char* jsonStr = yyjson_mut_write_opts(doc, YYJSON_WRITE_ALLOW_INF_AND_NAN | (pretty ? YYJSON_WRITE_PRETTY_TWO_SPACES : 0), NULL, &jsonLen, &err);
115126

116-
if (jsonStr) {
127+
if (__builtin_expect(jsonStr != NULL, true)) {
117128
lua_pushlstring(L, jsonStr, jsonLen);
118129
yyjson_mut_doc_free(doc);
119130
return 1;
120131
} else {
121132
yyjson_mut_doc_free(doc);
122-
return luaL_error(L, "failed to encode JSON: %s", err.msg);
133+
{
134+
FF_STRBUF_AUTO_DESTROY errBuf = ffStrbufCreateStatic("yyjson: yyjson_mut_write_opts() failed: ");
135+
ffStrbufAppendS(&errBuf, err.msg);
136+
lua_pushlstring(L, errBuf.chars, errBuf.length);
137+
}
138+
139+
return lua_error(L); // longjmp
123140
}
124141
}
125142

@@ -163,33 +180,32 @@ const char* ffLuaLoadState() {
163180
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(liblua, luaopen_string)
164181
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(liblua, luaopen_table)
165182
#endif
166-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_settop)
183+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, luaL_checkany)
167184
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, luaL_loadbufferx)
168-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_tolstring)
169-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_createtable)
170-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushinteger)
171-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushnumber)
172-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushboolean)
173-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushstring)
174-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushlstring)
175-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushvalue)
176-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_seti)
177-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushnil)
178-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_setfield)
179-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pcallk)
180-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_gettop)
181185
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, luaL_tolstring)
182-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, luaL_error)
183-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushcclosure)
184-
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, luaL_checkany)
185186
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_callk)
187+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_createtable)
188+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_error)
189+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_gettop)
186190
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_isinteger)
187191
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_next)
192+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pcallk)
193+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushboolean)
194+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushcclosure)
195+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushinteger)
196+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushlstring)
197+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushnil)
198+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushnumber)
199+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_pushvalue)
188200
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_rawgeti)
189201
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_rawlen)
202+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_setfield)
190203
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_setglobal)
204+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_seti)
205+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_settop)
191206
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_toboolean)
192207
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_tointegerx)
208+
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_tolstring)
193209
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_tonumberx)
194210
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(liblua, luaData, lua_type)
195211

src/common/lua.h

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,39 +24,32 @@
2424
#include "common/library.h"
2525

2626
extern struct FFLuaData {
27-
FF_LIBRARY_SYMBOL(luaL_newstate)
28-
#if LUA_VERSION_NUM >= 505
29-
FF_LIBRARY_SYMBOL(luaL_openselectedlibs)
30-
#else
31-
FF_LIBRARY_SYMBOL(luaL_openlibs)
32-
#endif
33-
FF_LIBRARY_SYMBOL(lua_settop)
27+
FF_LIBRARY_SYMBOL(luaL_checkany)
3428
FF_LIBRARY_SYMBOL(luaL_loadbufferx)
35-
FF_LIBRARY_SYMBOL(lua_tolstring)
36-
FF_LIBRARY_SYMBOL(lua_createtable)
37-
FF_LIBRARY_SYMBOL(lua_pushinteger)
38-
FF_LIBRARY_SYMBOL(lua_pushnumber)
39-
FF_LIBRARY_SYMBOL(lua_pushboolean)
40-
FF_LIBRARY_SYMBOL(lua_pushstring)
41-
FF_LIBRARY_SYMBOL(lua_pushlstring)
42-
FF_LIBRARY_SYMBOL(lua_pushvalue)
43-
FF_LIBRARY_SYMBOL(lua_seti)
44-
FF_LIBRARY_SYMBOL(lua_pushnil)
45-
FF_LIBRARY_SYMBOL(lua_setfield)
46-
FF_LIBRARY_SYMBOL(lua_pcallk)
47-
FF_LIBRARY_SYMBOL(lua_gettop)
4829
FF_LIBRARY_SYMBOL(luaL_tolstring)
49-
FF_LIBRARY_SYMBOL(luaL_error)
50-
FF_LIBRARY_SYMBOL(lua_pushcclosure)
51-
FF_LIBRARY_SYMBOL(luaL_checkany)
5230
FF_LIBRARY_SYMBOL(lua_callk)
31+
FF_LIBRARY_SYMBOL(lua_createtable)
32+
FF_LIBRARY_SYMBOL(lua_error)
33+
FF_LIBRARY_SYMBOL(lua_gettop)
5334
FF_LIBRARY_SYMBOL(lua_isinteger)
5435
FF_LIBRARY_SYMBOL(lua_next)
36+
FF_LIBRARY_SYMBOL(lua_pcallk)
37+
FF_LIBRARY_SYMBOL(lua_pushboolean)
38+
FF_LIBRARY_SYMBOL(lua_pushcclosure)
39+
FF_LIBRARY_SYMBOL(lua_pushinteger)
40+
FF_LIBRARY_SYMBOL(lua_pushlstring)
41+
FF_LIBRARY_SYMBOL(lua_pushnil)
42+
FF_LIBRARY_SYMBOL(lua_pushnumber)
43+
FF_LIBRARY_SYMBOL(lua_pushvalue)
5544
FF_LIBRARY_SYMBOL(lua_rawgeti)
5645
FF_LIBRARY_SYMBOL(lua_rawlen)
46+
FF_LIBRARY_SYMBOL(lua_setfield)
5747
FF_LIBRARY_SYMBOL(lua_setglobal)
48+
FF_LIBRARY_SYMBOL(lua_seti)
49+
FF_LIBRARY_SYMBOL(lua_settop)
5850
FF_LIBRARY_SYMBOL(lua_toboolean)
5951
FF_LIBRARY_SYMBOL(lua_tointegerx)
52+
FF_LIBRARY_SYMBOL(lua_tolstring)
6053
FF_LIBRARY_SYMBOL(lua_tonumberx)
6154
FF_LIBRARY_SYMBOL(lua_type)
6255

@@ -94,10 +87,6 @@ FF_A_ALWAYS_INLINE void(lua_pushboolean)(lua_State* L, int b) {
9487
return luaData.fflua_pushboolean(L, b);
9588
}
9689

97-
FF_A_ALWAYS_INLINE const char*(lua_pushstring) (lua_State * L, const char* s) {
98-
return luaData.fflua_pushstring(L, s);
99-
}
100-
10190
FF_A_ALWAYS_INLINE const char*(lua_pushlstring) (lua_State * L, const char* s, size_t len) {
10291
return luaData.fflua_pushlstring(L, s, len);
10392
}
@@ -130,7 +119,9 @@ FF_A_ALWAYS_INLINE const char*(luaL_tolstring) (lua_State * L, int idx, size_t*
130119
return luaData.ffluaL_tolstring(L, idx, len);
131120
}
132121

133-
#define luaL_error(L, fmt, ...) luaData.ffluaL_error(L, fmt, ##__VA_ARGS__)
122+
FF_A_ALWAYS_INLINE int(lua_error)(lua_State* L) {
123+
return luaData.fflua_error(L);
124+
}
134125

135126
FF_A_ALWAYS_INLINE void(lua_pushcclosure)(lua_State* L, lua_CFunction fn, int n) {
136127
return luaData.fflua_pushcclosure(L, fn, n);
@@ -156,7 +147,13 @@ FF_A_ALWAYS_INLINE int(lua_rawgeti)(lua_State* L, int idx, lua_Integer n) {
156147
return luaData.fflua_rawgeti(L, idx, n);
157148
}
158149

159-
FF_A_ALWAYS_INLINE lua_Unsigned(lua_rawlen)(lua_State* L, int idx) {
150+
FF_A_ALWAYS_INLINE
151+
#if LUA_VERSION_NUM > 503
152+
lua_Unsigned
153+
#else
154+
size_t
155+
#endif
156+
(lua_rawlen)(lua_State* L, int idx) {
160157
return luaData.fflua_rawlen(L, idx);
161158
}
162159

src/detection/codec/codec.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ typedef enum FF_A_PACKED FFCodecType {
2424
FF_CODEC_TYPE_DOLBY_VISION_HEVC = UINT32_C(1) << 16,
2525
FF_CODEC_TYPE_PRORES = UINT32_C(1) << 17,
2626
FF_CODEC_TYPE_PRORES_RAW = UINT32_C(1) << 18,
27-
FF_CODEC_TYPE_JPEG_XL = UINT32_C(1) << 19,
28-
FF_CODEC_TYPE_MAX = FF_CODEC_TYPE_JPEG_XL,
27+
FF_CODEC_TYPE_MAX = FF_CODEC_TYPE_PRORES_RAW,
2928
FF_CODEC_TYPE_FORCE_UNSIGNED = UINT32_MAX,
3029
} FFCodecType;
3130

src/detection/codec/codec_apple.c

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,28 @@ static const struct {
77
CMVideoCodecType codec;
88
FFCodecType type;
99
} FF_CODEC_CODECS[] = {
10-
{ kCMVideoCodecType_H263, FF_CODEC_TYPE_H263 },
11-
{ kCMVideoCodecType_JPEG, FF_CODEC_TYPE_MJPEG },
12-
{ kCMVideoCodecType_JPEG_XL, FF_CODEC_TYPE_JPEG_XL },
13-
{ kCMVideoCodecType_MPEG1Video, FF_CODEC_TYPE_MPEG1 },
14-
{ kCMVideoCodecType_MPEG2Video, FF_CODEC_TYPE_MPEG2 },
15-
{ kCMVideoCodecType_MPEG4Video, FF_CODEC_TYPE_DIVX_XVID },
16-
{ kCMVideoCodecType_H264, FF_CODEC_TYPE_H264 },
17-
{ kCMVideoCodecType_HEVC, FF_CODEC_TYPE_HEVC },
18-
{ kCMVideoCodecType_HEVCWithAlpha, FF_CODEC_TYPE_HEVC },
19-
{ kCMVideoCodecType_DolbyVisionHEVC, FF_CODEC_TYPE_DOLBY_VISION_HEVC },
20-
{ kCMVideoCodecType_DisparityHEVC, FF_CODEC_TYPE_HEVC },
21-
{ kCMVideoCodecType_DepthHEVC, FF_CODEC_TYPE_HEVC },
22-
{ kCMVideoCodecType_VP9, FF_CODEC_TYPE_VP9 },
23-
{ kCMVideoCodecType_AV1, FF_CODEC_TYPE_AV1 },
24-
{ kCMVideoCodecType_AppleProRes4444XQ, FF_CODEC_TYPE_PRORES },
25-
{ kCMVideoCodecType_AppleProRes4444, FF_CODEC_TYPE_PRORES },
26-
{ kCMVideoCodecType_AppleProRes422HQ, FF_CODEC_TYPE_PRORES },
27-
{ kCMVideoCodecType_AppleProRes422, FF_CODEC_TYPE_PRORES },
28-
{ kCMVideoCodecType_AppleProRes422LT, FF_CODEC_TYPE_PRORES },
29-
{ kCMVideoCodecType_AppleProRes422Proxy, FF_CODEC_TYPE_PRORES },
30-
{ kCMVideoCodecType_AppleProResRAW, FF_CODEC_TYPE_PRORES_RAW },
31-
{ kCMVideoCodecType_AppleProResRAWHQ, FF_CODEC_TYPE_PRORES_RAW },
10+
{ 'h263', FF_CODEC_TYPE_H263 }, // kCMVideoCodecType_H263
11+
{ 'jpeg', FF_CODEC_TYPE_MJPEG }, // kCMVideoCodecType_JPEG
12+
{ 'dmb1', FF_CODEC_TYPE_MJPEG }, // kCMVideoCodecType_JPEG_OpenDML
13+
{ 'mp1v', FF_CODEC_TYPE_MPEG1 }, // kCMVideoCodecType_MPEG1Video
14+
{ 'mp2v', FF_CODEC_TYPE_MPEG2 }, // kCMVideoCodecType_MPEG2Video
15+
{ 'mp4v', FF_CODEC_TYPE_DIVX_XVID }, // kCMVideoCodecType_MPEG4Video
16+
{ 'avc1', FF_CODEC_TYPE_H264 }, // kCMVideoCodecType_H264
17+
{ 'hvc1', FF_CODEC_TYPE_HEVC }, // kCMVideoCodecType_HEVC
18+
{ 'muxa', FF_CODEC_TYPE_HEVC }, // kCMVideoCodecType_HEVCWithAlpha
19+
{ 'dvh1', FF_CODEC_TYPE_DOLBY_VISION_HEVC }, // kCMVideoCodecType_DolbyVisionHEVC
20+
{ 'dish', FF_CODEC_TYPE_HEVC }, // kCMVideoCodecType_DisparityHEVC
21+
{ 'deph', FF_CODEC_TYPE_HEVC }, // kCMVideoCodecType_DepthHEVC
22+
{ 'vp09', FF_CODEC_TYPE_VP9 }, // kCMVideoCodecType_VP9
23+
{ 'av01', FF_CODEC_TYPE_AV1 }, // kCMVideoCodecType_AV1
24+
{ 'ap4x', FF_CODEC_TYPE_PRORES }, // kCMVideoCodecType_AppleProRes4444XQ
25+
{ 'ap4h', FF_CODEC_TYPE_PRORES }, // kCMVideoCodecType_AppleProRes4444
26+
{ 'apch', FF_CODEC_TYPE_PRORES }, // kCMVideoCodecType_AppleProRes422HQ
27+
{ 'apcn', FF_CODEC_TYPE_PRORES }, // kCMVideoCodecType_AppleProRes422
28+
{ 'apcs', FF_CODEC_TYPE_PRORES }, // kCMVideoCodecType_AppleProRes422LT
29+
{ 'apco', FF_CODEC_TYPE_PRORES }, // kCMVideoCodecType_AppleProRes422Proxy
30+
{ 'aprn', FF_CODEC_TYPE_PRORES_RAW }, // kCMVideoCodecType_AppleProResRAW
31+
{ 'aprh', FF_CODEC_TYPE_PRORES_RAW }, // kCMVideoCodecType_AppleProResRAWHQ
3232
};
3333

3434
static FFCodecType ffCodecCodecToType(CMVideoCodecType codec) {

src/detection/packages/packages.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ typedef struct FFPackagesResult {
5454
FFstrbuf pacmanBranch;
5555
} FFPackagesResult;
5656

57+
#if FF_PACKAGES_REMOVE_DISABLED
58+
#define FF_PACKAGES_IS_ENABLED(options, pkgName) ({ (void) options; !((FF_PACKAGES_DISABLE_LIST) & (FF_PACKAGES_FLAG_ ## pkgName ## _BIT)); })
59+
#else
60+
#define FF_PACKAGES_IS_ENABLED(options, pkgName) (!((options)->disabled & (FF_PACKAGES_FLAG_ ## pkgName ## _BIT)))
61+
#endif
62+
5763
const char* ffDetectPackages(FFPackagesResult* result, FFPackagesOptions* options);
5864
bool ffPackagesReadCache(FFstrbuf* cacheDir, FFstrbuf* cacheContent, const char* filePath, const char* packageId, uint32_t* result);
5965
bool ffPackagesWriteCache(FFstrbuf* cacheDir, FFstrbuf* cacheContent, uint32_t num_elements);

0 commit comments

Comments
 (0)