//------------------------------------------------------------------------------ // Advance decoding API int WebPInitDecoderConfigInternal(WebPDecoderConfig* config, int version) { if (version != WEBP_DECODER_ABI_VERSION) { return 0; // version mismatch } if (config == null) { return 0; } memset(config, 0, sizeof(*config)); DefaultFeatures(&config.input); WebPInitDecBuffer(&config.output); return 1; }
VP8StatusCode WebPDecode(byte* data, uint data_size, WebPDecoderConfig* config) { WebPDecParams params; VP8StatusCode status; if (config == null) { return VP8_STATUS_INVALID_PARAM; } status = GetFeatures(data, data_size, &config.input); if (status != VP8_STATUS_OK) { if (status == VP8_STATUS_NOT_ENOUGH_DATA) { return VP8_STATUS_BITSTREAM_ERROR; // Not-enough-data treated as error. } return status; } WebPResetDecParams(¶ms); params.output = &config.output; params.options = &config.options; status = DecodeInto(data, data_size, ¶ms); return status; }