AnimDecoder API: Add a GetDemuxer() method.

Change-Id: Ic6a86e8788f1a3e21d1287ece36d80d1153b8f5a
This commit is contained in:
Urvang Joshi 2015-11-11 10:36:17 -08:00
parent 1aa4e3d6ba
commit 688b265d5e
2 changed files with 19 additions and 1 deletions

View File

@ -427,6 +427,11 @@ void WebPAnimDecoderReset(WebPAnimDecoder* dec) {
} }
} }
const WebPDemuxer* WebPAnimDecoderGetDemuxer(const WebPAnimDecoder* dec) {
if (dec == NULL) return NULL;
return dec->demux_;
}
void WebPAnimDecoderDelete(WebPAnimDecoder* dec) { void WebPAnimDecoderDelete(WebPAnimDecoder* dec) {
if (dec != NULL) { if (dec != NULL) {
WebPDemuxDelete(dec->demux_); WebPDemuxDelete(dec->demux_);

View File

@ -55,7 +55,7 @@
extern "C" { extern "C" {
#endif #endif
#define WEBP_DEMUX_ABI_VERSION 0x0104 // MAJOR(8b) + MINOR(8b) #define WEBP_DEMUX_ABI_VERSION 0x0105 // MAJOR(8b) + MINOR(8b)
// Note: forward declaring enumerations is not allowed in (strict) C and C++, // Note: forward declaring enumerations is not allowed in (strict) C and C++,
// the types are left here for reference. // the types are left here for reference.
@ -241,6 +241,8 @@ WEBP_EXTERN(void) WebPDemuxReleaseChunkIterator(WebPChunkIterator* iter);
} }
WebPAnimDecoderReset(dec); WebPAnimDecoderReset(dec);
} }
const WebPDemuxer* demuxer = WebPAnimDecoderGetDemuxer(dec);
// ... (Do something using 'demuxer'; e.g. get EXIF/XMP/ICC data).
WebPAnimDecoderDelete(dec); WebPAnimDecoderDelete(dec);
*/ */
@ -339,6 +341,17 @@ WEBP_EXTERN(int) WebPAnimDecoderHasMoreFrames(const WebPAnimDecoder* dec);
// dec - (in/out) decoder instance to be reset // dec - (in/out) decoder instance to be reset
WEBP_EXTERN(void) WebPAnimDecoderReset(WebPAnimDecoder* dec); WEBP_EXTERN(void) WebPAnimDecoderReset(WebPAnimDecoder* dec);
// Grab the internal demuxer object.
// Getting the demuxer object can be useful if one wants to use operations only
// available through demuxer; e.g. to get XMP/EXIF/ICC metadata. The returned
// demuxer object is owned by 'dec' and is valid only until the next call to
// WebPAnimDecoderDelete().
//
// Parameters:
// dec - (in) decoder instance from which the demuxer object is to be fetched.
WEBP_EXTERN(const WebPDemuxer*) WebPAnimDecoderGetDemuxer(
const WebPAnimDecoder* dec);
// Deletes the WebPAnimDecoder object. // Deletes the WebPAnimDecoder object.
// Parameters: // Parameters:
// dec - (in/out) decoder instance to be deleted // dec - (in/out) decoder instance to be deleted