Привет, ЛОР.
Не секрет, что в библиотеках ffmpeg неоднократно ломали API. Поэтому важно проверять их версию на этапе компиляции.
В libavutil есть ffversion.h. Однако вместо понятных XXX_VER_MAJOR и XXX_VER_MINOR там определяется строка. Например, для старенького ffmpeg 3.2 написано:
#define FFMPEG_VERSION "3.2
А для более новых, так и вообще с буковками:
#define FFMPEG_VERSION "n4.4.5"
или
#define FFMPEG_VERSION "n7.1"
Как вы думаете, как в таких условиях написать #if
для препроцессора, что код ниже действителен, например, для ffmpeg 4 и выше? Например, в совсем древних ffmpeg-ах была функция avcodec_register_all()
, потом её выкинули, а потом выкинули и av_register_all()
. И это только одна из «мутаций».