mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-28 14:38:21 +01:00
use WebPDataCopy() instead of re-coding it.
also: fix some 0 vs NULL tests Change-Id: I2b6f65a1e658211e5b4a323c4f9f502744206ec7
This commit is contained in:
parent
e5af49e9c0
commit
a2a7b95916
@ -96,7 +96,7 @@ CHUNK_INDEX ChunkGetIndexFromFourCC(const char fourcc[4]) {
|
|||||||
|
|
||||||
// Returns next chunk in the chunk list with the given tag.
|
// Returns next chunk in the chunk list with the given tag.
|
||||||
static WebPChunk* ChunkSearchNextInList(WebPChunk* chunk, uint32_t tag) {
|
static WebPChunk* ChunkSearchNextInList(WebPChunk* chunk, uint32_t tag) {
|
||||||
while (chunk && chunk->tag_ != tag) {
|
while (chunk != NULL && chunk->tag_ != tag) {
|
||||||
chunk = chunk->next_;
|
chunk = chunk->next_;
|
||||||
}
|
}
|
||||||
return chunk;
|
return chunk;
|
||||||
@ -105,7 +105,7 @@ static WebPChunk* ChunkSearchNextInList(WebPChunk* chunk, uint32_t tag) {
|
|||||||
WebPChunk* ChunkSearchList(WebPChunk* first, uint32_t nth, uint32_t tag) {
|
WebPChunk* ChunkSearchList(WebPChunk* first, uint32_t nth, uint32_t tag) {
|
||||||
uint32_t iter = nth;
|
uint32_t iter = nth;
|
||||||
first = ChunkSearchNextInList(first, tag);
|
first = ChunkSearchNextInList(first, tag);
|
||||||
if (!first) return NULL;
|
if (first == NULL) return NULL;
|
||||||
|
|
||||||
while (--iter != 0) {
|
while (--iter != 0) {
|
||||||
WebPChunk* next_chunk = ChunkSearchNextInList(first->next_, tag);
|
WebPChunk* next_chunk = ChunkSearchNextInList(first->next_, tag);
|
||||||
@ -121,10 +121,10 @@ WebPChunk* ChunkSearchList(WebPChunk* first, uint32_t nth, uint32_t tag) {
|
|||||||
static int ChunkSearchListToSet(WebPChunk** chunk_list, uint32_t nth,
|
static int ChunkSearchListToSet(WebPChunk** chunk_list, uint32_t nth,
|
||||||
WebPChunk*** const location) {
|
WebPChunk*** const location) {
|
||||||
uint32_t count = 0;
|
uint32_t count = 0;
|
||||||
assert(chunk_list);
|
assert(chunk_list != NULL);
|
||||||
*location = chunk_list;
|
*location = chunk_list;
|
||||||
|
|
||||||
while (*chunk_list) {
|
while (*chunk_list != NULL) {
|
||||||
WebPChunk* const cur_chunk = *chunk_list;
|
WebPChunk* const cur_chunk = *chunk_list;
|
||||||
++count;
|
++count;
|
||||||
if (count == nth) return 1; // Found.
|
if (count == nth) return 1; // Found.
|
||||||
@ -149,23 +149,14 @@ WebPMuxError ChunkAssignData(WebPChunk* chunk, const WebPData* const data,
|
|||||||
ChunkRelease(chunk);
|
ChunkRelease(chunk);
|
||||||
|
|
||||||
if (data != NULL) {
|
if (data != NULL) {
|
||||||
if (copy_data) {
|
if (copy_data) { // Copy data.
|
||||||
// Copy data.
|
if (!WebPDataCopy(data, &chunk->data_)) return WEBP_MUX_MEMORY_ERROR;
|
||||||
chunk->data_.bytes = (uint8_t*)malloc(data->size);
|
chunk->owner_ = 1; // Chunk is owner of data.
|
||||||
if (chunk->data_.bytes == NULL) return WEBP_MUX_MEMORY_ERROR;
|
} else { // Don't copy data.
|
||||||
memcpy((uint8_t*)chunk->data_.bytes, data->bytes, data->size);
|
|
||||||
chunk->data_.size = data->size;
|
|
||||||
|
|
||||||
// Chunk is owner of data.
|
|
||||||
chunk->owner_ = 1;
|
|
||||||
} else {
|
|
||||||
// Don't copy data.
|
|
||||||
chunk->data_ = *data;
|
chunk->data_ = *data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
chunk->tag_ = tag;
|
chunk->tag_ = tag;
|
||||||
|
|
||||||
return WEBP_MUX_OK;
|
return WEBP_MUX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,7 +190,7 @@ WebPChunk* ChunkDelete(WebPChunk* const chunk) {
|
|||||||
|
|
||||||
size_t ChunksListDiskSize(const WebPChunk* chunk_list) {
|
size_t ChunksListDiskSize(const WebPChunk* chunk_list) {
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
while (chunk_list) {
|
while (chunk_list != NULL) {
|
||||||
size += ChunkDiskSize(chunk_list);
|
size += ChunkDiskSize(chunk_list);
|
||||||
chunk_list = chunk_list->next_;
|
chunk_list = chunk_list->next_;
|
||||||
}
|
}
|
||||||
@ -220,7 +211,7 @@ static uint8_t* ChunkEmit(const WebPChunk* const chunk, uint8_t* dst) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* ChunkListEmit(const WebPChunk* chunk_list, uint8_t* dst) {
|
uint8_t* ChunkListEmit(const WebPChunk* chunk_list, uint8_t* dst) {
|
||||||
while (chunk_list) {
|
while (chunk_list != NULL) {
|
||||||
dst = ChunkEmit(chunk_list, dst);
|
dst = ChunkEmit(chunk_list, dst);
|
||||||
chunk_list = chunk_list->next_;
|
chunk_list = chunk_list->next_;
|
||||||
}
|
}
|
||||||
@ -281,7 +272,7 @@ static int SearchImageToGetOrDelete(WebPMuxImage** wpi_list, uint32_t nth,
|
|||||||
if (nth == 0) return 0; // Not found.
|
if (nth == 0) return 0; // Not found.
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*wpi_list) {
|
while (*wpi_list != NULL) {
|
||||||
WebPMuxImage* const cur_wpi = *wpi_list;
|
WebPMuxImage* const cur_wpi = *wpi_list;
|
||||||
++count;
|
++count;
|
||||||
if (count == nth) return 1; // Found.
|
if (count == nth) return 1; // Found.
|
||||||
@ -327,7 +318,7 @@ WebPMuxImage* MuxImageDelete(WebPMuxImage* const wpi) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MuxImageDeleteAll(WebPMuxImage** const wpi_list) {
|
void MuxImageDeleteAll(WebPMuxImage** const wpi_list) {
|
||||||
while (*wpi_list) {
|
while (*wpi_list != NULL) {
|
||||||
*wpi_list = MuxImageDelete(*wpi_list);
|
*wpi_list = MuxImageDelete(*wpi_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -370,7 +361,7 @@ size_t MuxImageDiskSize(const WebPMuxImage* const wpi) {
|
|||||||
|
|
||||||
size_t MuxImageListDiskSize(const WebPMuxImage* wpi_list) {
|
size_t MuxImageListDiskSize(const WebPMuxImage* wpi_list) {
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
while (wpi_list) {
|
while (wpi_list != NULL) {
|
||||||
size += MuxImageDiskSize(wpi_list);
|
size += MuxImageDiskSize(wpi_list);
|
||||||
wpi_list = wpi_list->next_;
|
wpi_list = wpi_list->next_;
|
||||||
}
|
}
|
||||||
@ -409,7 +400,7 @@ uint8_t* MuxImageEmit(const WebPMuxImage* const wpi, uint8_t* dst) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* MuxImageListEmit(const WebPMuxImage* wpi_list, uint8_t* dst) {
|
uint8_t* MuxImageListEmit(const WebPMuxImage* wpi_list, uint8_t* dst) {
|
||||||
while (wpi_list) {
|
while (wpi_list != NULL) {
|
||||||
dst = MuxImageEmit(wpi_list, dst);
|
dst = MuxImageEmit(wpi_list, dst);
|
||||||
wpi_list = wpi_list->next_;
|
wpi_list = wpi_list->next_;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user