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>
This commit is contained in:
parent
e9d12766b2
commit
9cae7f9450
2
configure
vendored
2
configure
vendored
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user