SVT-AV1 4.x binary incompatible but missed change of SONAME
SVT-AV1 4.0.0, despite having a changed ABI, still uses the SONAME libSvtAv1Enc.so.3. This is a bug on your behalf.
abidiff between 3.0.1/libSvtAv1Enc.so.3 and 4.0.0/libSvtAv1Enc.so.3:
Functions changes summary: 0 Removed, 1 Changed (2 filtered out), 1 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
1 Added function:
[A] 'function void svt_av1_set_log_callback(SvtAv1LogCallback, void*)' {svt_av1_set_log_callback}
1 function with some indirect sub-type change:
[C] 'function EbErrorType svt_av1_enc_init_handle(EbComponentType**, EbSvtAv1EncConfiguration*)' at enc_handle.c:2381:1 has some indirect sub-type changes:
parameter 2 of type 'EbSvtAv1EncConfiguration*' has sub-type changes:
in pointed to type 'typedef EbSvtAv1EncConfiguration' at EbSvtAv1Enc.h:969:1:
underlying type 'struct EbSvtAv1EncConfiguration' at EbSvtAv1Enc.h:217:1 changed:
type size changed from 4928 to 5312 (in bits)
6 data member deletions: [...]
12 data member insertions: [...]
...EbSvtAv1EncConfiguration is public API, because the member definition was exposed and ffmpeg-8 uses it (Hyrum's Law).
[ 99s] libavcodec/libsvtav1.c: In function ‘config_enc_params’:
[ 99s] libavcodec/libsvtav1.c:241:14: error: ‘EbSvtAv1EncConfiguration’ has no member named ‘enable_adaptive_quantization’Thus,
set(ENC_VERSION_MAJOR 3)this probably needs to be 4 or something, and
Source/API/EbSvtAv1Enc.h:#define SVT_AV1_ENC_ABI_VERSION 0needs to be 1 or something.
Edited by Jan Engelhardt