WebPMuxAssemble() returns WebPData*.

Also add an API 'WebPDataFree()'

Change-Id: I00dc4c67fd78a541a18aaf0e65b8ef62d9769803
This commit is contained in:
Urvang Joshi
2012-06-07 11:04:57 +05:30
parent 814a063925
commit f1df5587d9
5 changed files with 51 additions and 45 deletions

View File

@ -270,7 +270,8 @@ WebPMuxError WebPMuxSetImage(WebPMux* const mux,
// Add image chunk.
ChunkInit(&chunk);
err = ChunkAssignDataImageInfo(&chunk, &image_raw, NULL, copy_data, image_tag);
err = ChunkAssignDataImageInfo(&chunk, &image_raw, NULL, copy_data,
image_tag);
if (err != WEBP_MUX_OK) return err;
err = ChunkSetNth(&chunk, &wpi.img_, 1);
if (err != WEBP_MUX_OK) return err;
@ -645,7 +646,7 @@ static WebPMuxError CreateVP8XChunk(WebPMux* const mux) {
}
WebPMuxError WebPMuxAssemble(WebPMux* const mux,
uint8_t** output_data, size_t* output_size) {
WebPData* const assembled_data) {
size_t size = 0;
uint8_t* data = NULL;
uint8_t* dst = NULL;
@ -653,13 +654,10 @@ WebPMuxError WebPMuxAssemble(WebPMux* const mux,
int num_loop_chunks;
WebPMuxError err;
if (mux == NULL || output_data == NULL || output_size == NULL) {
if (mux == NULL || assembled_data == NULL) {
return WEBP_MUX_INVALID_ARGUMENT;
}
*output_data = NULL;
*output_size = 0;
// Remove LOOP chunk if unnecessary.
err = WebPMuxNumNamedElements(mux, kChunks[IDX_LOOP].name,
&num_loop_chunks);
@ -715,8 +713,8 @@ WebPMuxError WebPMuxAssemble(WebPMux* const mux,
}
// Finalize.
*output_data = data;
*output_size = size;
assembled_data->bytes_ = data;
assembled_data->size_ = size;
return err;
}

View File

@ -225,6 +225,16 @@ uint8_t* ChunkListEmit(const WebPChunk* chunk_list, uint8_t* dst) {
return dst;
}
//------------------------------------------------------------------------------
// Life of a WebPData object.
void WebPDataClear(WebPData* const webp_data) {
if (webp_data != NULL) {
free((void*)webp_data->bytes_);
memset(webp_data, 0, sizeof(*webp_data));
}
}
//------------------------------------------------------------------------------
// Life of a MuxImage object.