From 1b1b2f03eaf46cf768ad8503609248eb8a51d866 Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Thu, 26 Jan 2017 17:42:12 +0100 Subject: [PATCH] gmio_amf: make z_stream alloc/free functions parametrizable --- src/gmio_amf/amf_io.c | 3 +++ src/gmio_core/zlib_compress.h | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/gmio_amf/amf_io.c b/src/gmio_amf/amf_io.c index 2051e51..6a0c339 100644 --- a/src/gmio_amf/amf_io.c +++ b/src/gmio_amf/amf_io.c @@ -898,6 +898,9 @@ int gmio_amf_write( mblock_halfsize, NULL); context.z_crc32 = gmio_zlib_crc32_initial(); + context.z_stream.zalloc = opts->z_compress_options.func_alloc; + context.z_stream.zfree = opts->z_compress_options.func_free; + context.z_stream.opaque = opts->z_compress_options.opaque; context.error = gmio_zlib_compress_init( &context.z_stream, &opts->z_compress_options); diff --git a/src/gmio_core/zlib_compress.h b/src/gmio_core/zlib_compress.h index 93e7af3..fe5d292 100644 --- a/src/gmio_core/zlib_compress.h +++ b/src/gmio_core/zlib_compress.h @@ -81,6 +81,20 @@ struct gmio_zlib_compress_options * \c 1 uses minimum memory but is slow and reduces compression ratio * \c 9 uses maximum memory for optimal speed */ uint8_t memory_usage; + + /*! Optional pointer to a function used to allocate the internal state + * within \c z_stream structure. + * \sa z_stream::zalloc */ + void* (*func_alloc)(void* opaque, unsigned int items, unsigned int size); + + /*! Optional pointer to a function used to free the internal state within + * \c z_stream structure. + * \sa z_stream::zfree */ + void (*func_free)(void* opaque, void* address); + + /*! Optional private data object passed to func_alloc and func_free. + * \sa z_stream::opaque */ + void* opaque; }; #endif /* GMIO_ZLIB_COMPRESS_H */