From 9cae7f94502b7d8dca7f3458b02b8f3ef2b1a324 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Tue, 15 Mar 2022 17:56:38 +0100 Subject: [PATCH] avcodec/zlib_wrapper: Add wrapper for deflateInit() The rationale is the same as for the wrappers for inflateInit(), although the case for it is admittedly not so strong because there are less users of deflateInit(). Also remove an unnecessary inclusion of config.h in libavformat/protocols.c in order to trigger a request for reconfigure (which is needed for CONFIG_DEFLATE_WRAPPER to take effect). Signed-off-by: Andreas Rheinhardt --- configure | 2 ++ libavcodec/Makefile | 1 + libavcodec/zlib_wrapper.c | 34 ++++++++++++++++++++++++++++++++++ libavcodec/zlib_wrapper.h | 10 ++++++++++ libavformat/protocols.c | 2 -- 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/configure b/configure index f26e99ba71..3ec604d467 100755 --- a/configure +++ b/configure @@ -2433,6 +2433,7 @@ CONFIG_EXTRA=" cbs_jpeg cbs_mpeg2 cbs_vp9 + deflate_wrapper dirac_parse dnn dovi_rpu @@ -2711,6 +2712,7 @@ cbs_jpeg_select="cbs" cbs_mpeg2_select="cbs" cbs_vp9_select="cbs" dct_select="rdft" +deflate_wrapper_deps="zlib" dirac_parse_select="golomb" dovi_rpu_select="golomb" dnn_suggest="libtensorflow libopenvino" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 7810528559..dc6dc8a4bb 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -78,6 +78,7 @@ OBJS-$(CONFIG_CBS_MPEG2) += cbs_mpeg2.o OBJS-$(CONFIG_CBS_VP9) += cbs_vp9.o OBJS-$(CONFIG_CRYSTALHD) += crystalhd.o OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o +OBJS-$(CONFIG_DEFLATE_WRAPPER) += zlib_wrapper.o OBJS-$(CONFIG_DOVI_RPU) += dovi_rpu.o OBJS-$(CONFIG_ERROR_RESILIENCE) += error_resilience.o OBJS-$(CONFIG_EXIF) += exif.o tiff_common.o diff --git a/libavcodec/zlib_wrapper.c b/libavcodec/zlib_wrapper.c index 5b93c2c74f..e86c83940d 100644 --- a/libavcodec/zlib_wrapper.c +++ b/libavcodec/zlib_wrapper.c @@ -21,6 +21,7 @@ #include +#include "config.h" #include "libavutil/error.h" #include "libavutil/log.h" #include "libavutil/mem.h" @@ -36,6 +37,7 @@ static void free_wrapper(void *opaque, void *ptr) av_free(ptr); } +#if CONFIG_INFLATE_WRAPPER int ff_inflate_init(FFZStream *z, void *logctx) { z_stream *const zstream = &z->zstream; @@ -66,3 +68,35 @@ void ff_inflate_end(FFZStream *z) inflateEnd(&z->zstream); } } +#endif + +#if CONFIG_DEFLATE_WRAPPER +int ff_deflate_init(FFZStream *z, int level, void *logctx) +{ + z_stream *const zstream = &z->zstream; + int zret; + + z->inited = 0; + zstream->zalloc = alloc_wrapper; + zstream->zfree = free_wrapper; + zstream->opaque = Z_NULL; + + zret = deflateInit(zstream, level); + if (zret == Z_OK) { + z->inited = 1; + } else { + av_log(logctx, AV_LOG_ERROR, "deflateInit error %d, message: %s\n", + zret, zstream->msg ? zstream->msg : ""); + return AVERROR_EXTERNAL; + } + return 0; +} + +void ff_deflate_end(FFZStream *z) +{ + if (z->inited) { + z->inited = 0; + deflateEnd(&z->zstream); + } +} +#endif diff --git a/libavcodec/zlib_wrapper.h b/libavcodec/zlib_wrapper.h index 0e91713b25..fa8ee654fd 100644 --- a/libavcodec/zlib_wrapper.h +++ b/libavcodec/zlib_wrapper.h @@ -48,4 +48,14 @@ int ff_inflate_init(FFZStream *zstream, void *logctx); */ void ff_inflate_end(FFZStream *zstream); +/** + * Wrapper around deflateInit(). It works analogously to ff_inflate_init(). + */ +int ff_deflate_init(FFZStream *zstream, int level, void *logctx); + +/** + * Wrapper around deflateEnd(). It works analogously to ff_inflate_end(). + */ +void ff_deflate_end(FFZStream *zstream); + #endif /* AVCODEC_ZLIB_WRAPPER_H */ diff --git a/libavformat/protocols.c b/libavformat/protocols.c index 948fae411f..d07563cd0c 100644 --- a/libavformat/protocols.c +++ b/libavformat/protocols.c @@ -16,8 +16,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "config.h" - #include "libavutil/avstring.h" #include "libavutil/mem.h"