mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
lavc/libopenh264: Drop openh264 runtime version checks
With the way the runtime checks are currently set up, every single openh264 release, no matter how minor, is considered an ABI break and requires ffmpeg recompilation. This is unnecessarily strict because it doesn't allow downstream distributions to ship any openh264 bug fix version updates without breaking ffmpeg's openh264 support. Years ago, at the time when ffmpeg's openh264 support was merged, openh264 releases were done without a versioned soname (the library was just libopenh264.so, unversioned). Since then, starting with version 1.3.0, openh264 has started using versioned sonames and the intent has been to bump the soname every time there's a new release with an ABI change. This patch drops the exact version check and instead adds a minimum requirement on 1.3.0 to the configure script. Signed-off-by: Kalev Lember <klember@redhat.com> Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
25835e2593
commit
b391fdbf1a
2
configure
vendored
2
configure
vendored
@ -6800,7 +6800,7 @@ enabled libopencv && { check_headers opencv2/core/core_c.h &&
|
||||
{ check_pkg_config libopencv opencv opencv2/core/core_c.h cvCreateImageHeader ||
|
||||
require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
|
||||
require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
|
||||
enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
|
||||
enabled libopenh264 && require_pkg_config libopenh264 "openh264 >= 1.3.0" wels/codec_api.h WelsGetCodecVersion
|
||||
enabled libopenjpeg && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
|
||||
{ require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
|
||||
enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
|
||||
|
@ -46,18 +46,3 @@ void ff_libopenh264_trace_callback(void *ctx, int level, const char *msg)
|
||||
int equiv_ffmpeg_log_level = libopenh264_to_ffmpeg_log_level(level);
|
||||
av_log(ctx, equiv_ffmpeg_log_level, "%s\n", msg);
|
||||
}
|
||||
|
||||
int ff_libopenh264_check_version(void *logctx)
|
||||
{
|
||||
// Mingw GCC < 4.7 on x86_32 uses an incorrect/buggy ABI for the WelsGetCodecVersion
|
||||
// function (for functions returning larger structs), thus skip the check in those
|
||||
// configurations.
|
||||
#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7)
|
||||
OpenH264Version libver = WelsGetCodecVersion();
|
||||
if (memcmp(&libver, &g_stCodecVersion, sizeof(libver))) {
|
||||
av_log(logctx, AV_LOG_ERROR, "Incorrect library version loaded\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
@ -34,6 +34,4 @@
|
||||
|
||||
void ff_libopenh264_trace_callback(void *ctx, int level, const char *msg);
|
||||
|
||||
int ff_libopenh264_check_version(void *logctx);
|
||||
|
||||
#endif /* AVCODEC_LIBOPENH264_H */
|
||||
|
@ -52,13 +52,9 @@ static av_cold int svc_decode_init(AVCodecContext *avctx)
|
||||
{
|
||||
SVCContext *s = avctx->priv_data;
|
||||
SDecodingParam param = { 0 };
|
||||
int err;
|
||||
int log_level;
|
||||
WelsTraceCallback callback_function;
|
||||
|
||||
if ((err = ff_libopenh264_check_version(avctx)) < 0)
|
||||
return AVERROR_DECODER_NOT_FOUND;
|
||||
|
||||
if (WelsCreateDecoder(&s->decoder)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Unable to create decoder\n");
|
||||
return AVERROR_UNKNOWN;
|
||||
|
@ -110,14 +110,10 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
|
||||
{
|
||||
SVCContext *s = avctx->priv_data;
|
||||
SEncParamExt param = { 0 };
|
||||
int err;
|
||||
int log_level;
|
||||
WelsTraceCallback callback_function;
|
||||
AVCPBProperties *props;
|
||||
|
||||
if ((err = ff_libopenh264_check_version(avctx)) < 0)
|
||||
return AVERROR_ENCODER_NOT_FOUND;
|
||||
|
||||
if (WelsCreateSVCEncoder(&s->encoder)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n");
|
||||
return AVERROR_UNKNOWN;
|
||||
|
Loading…
x
Reference in New Issue
Block a user