| // Copyright 2019 Joe Drago. All rights reserved. | |
| // SPDX-License-Identifier: BSD-2-Clause | |
| #include "avif/avif.h" | |
| #include <string.h> | |
| void avifRWDataRealloc(avifRWData * raw, size_t newSize) | |
| { | |
| if (raw->size != newSize) { | |
| uint8_t * old = raw->data; | |
| size_t oldSize = raw->size; | |
| raw->data = avifAlloc(newSize); | |
| raw->size = newSize; | |
| if (oldSize) { | |
| size_t bytesToCopy = (oldSize < raw->size) ? oldSize : raw->size; | |
| memcpy(raw->data, old, bytesToCopy); | |
| avifFree(old); | |
| } | |
| } | |
| } | |
| void avifRWDataSet(avifRWData * raw, const uint8_t * data, size_t len) | |
| { | |
| if (len) { | |
| avifRWDataRealloc(raw, len); | |
| memcpy(raw->data, data, len); | |
| } else { | |
| avifRWDataFree(raw); | |
| } | |
| } | |
| void avifRWDataFree(avifRWData * raw) | |
| { | |
| avifFree(raw->data); | |
| raw->data = NULL; | |
| raw->size = 0; | |
| } |