diff --git a/src/mux/anim_encode.c b/src/mux/anim_encode.c index 2f6b1fc0..610531b5 100644 --- a/src/mux/anim_encode.c +++ b/src/mux/anim_encode.c @@ -150,6 +150,16 @@ static void DefaultEncoderOptions(WebPAnimEncoderOptions* const enc_options) { enc_options->verbose = 0; } +int WebPAnimEncoderOptionsInitInternal(WebPAnimEncoderOptions* enc_options, + int abi_version) { + if (enc_options == NULL || + WEBP_ABI_IS_INCOMPATIBLE(abi_version, WEBP_MUX_ABI_VERSION)) { + return 0; + } + DefaultEncoderOptions(enc_options); + return 1; +} + #define TRANSPARENT_COLOR 0x00ffffff static void ClearRectangle(WebPPicture* const picture, diff --git a/src/webp/mux.h b/src/webp/mux.h index 74927b1f..40ae239f 100644 --- a/src/webp/mux.h +++ b/src/webp/mux.h @@ -399,9 +399,11 @@ WEBP_EXTERN(WebPMuxError) WebPMuxAssemble(WebPMux* mux, // // Code Example: /* - WebPAnimEncoder* enc = WebPAnimEncoderNew(width, height, enc_options); + WebPAnimEncoderOptions enc_options; + WebPAnimEncoderOptionsInit(&enc_options); + WebPAnimEncoder* enc = WebPAnimEncoderNew(width, height, &enc_options); while() { - WebPAnimEncoderAdd(enc, frame, duration, config); + WebPAnimEncoderAdd(enc, frame, duration, &config); } WebPAnimEncoderAssemble(enc, webp_data); WebPAnimEncoderDelete(enc); @@ -431,6 +433,19 @@ typedef struct { uint32_t padding[4]; // Padding for later use. } WebPAnimEncoderOptions; +// Internal, version-checked, entry point. +WEBP_EXTERN(int) WebPAnimEncoderOptionsInitInternal( + WebPAnimEncoderOptions*, int); + +// Should always be called, to initialize a fresh WebPAnimEncoderOptions +// structure before modification. Returns false in case of version mismatch. +// WebPAnimEncoderOptionsInit() must have succeeded before using the 'options' +// object. +static WEBP_INLINE int WebPAnimEncoderOptionsInit( + WebPAnimEncoderOptions* enc_options) { + return WebPAnimEncoderOptionsInitInternal(enc_options, WEBP_MUX_ABI_VERSION); +} + // Internal, version-checked, entry point. WEBP_EXTERN(WebPAnimEncoder*) WebPAnimEncoderNewInternal( int, int, const WebPAnimEncoderOptions*, int);