diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-03-15 17:56:38 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-03-19 00:18:36 +0100 |
commit | 9cae7f94502b7d8dca7f3458b02b8f3ef2b1a324 (patch) | |
tree | 233ee31c0dabce869032bfe958d4d3b04fd1fdaf /libavcodec/zlib_wrapper.c | |
parent | e9d12766b2d3fdb72bd39fa3042a1d3cded81dde (diff) | |
download | ffmpeg-9cae7f94502b7d8dca7f3458b02b8f3ef2b1a324.tar.gz |
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 <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/zlib_wrapper.c')
-rw-r--r-- | libavcodec/zlib_wrapper.c | 34 |
1 files changed, 34 insertions, 0 deletions
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 <zlib.h> +#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 |