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 0

needs to be 1 or something.

Edited by Jan Engelhardt