Properly check if an identical chunk has been written before. (#1956)
Basically reverting 295cab3 in https://github.com/AOMediaCodec/libavif/pull/463
diff --git a/src/write.c b/src/write.c
index 2c4ffc5..322f75b 100644
--- a/src/write.c
+++ b/src/write.c
@@ -1432,10 +1432,11 @@
size_t chunkOffset = 0;
// Deduplication - See if an identical chunk to this has already been written
- if (item->encodeOutput->samples.count > 0) {
+ // Doing it when item->encodeOutput->samples.count > 0 would require contiguous memory.
+ if (item->encodeOutput->samples.count == 1) {
avifEncodeSample * sample = &item->encodeOutput->samples.sample[0];
chunkOffset = avifEncoderFindExistingChunk(s, mdatStartOffset, sample->data.data, sample->data.size);
- } else {
+ } else if (item->encodeOutput->samples.count == 0) {
chunkOffset = avifEncoderFindExistingChunk(s, mdatStartOffset, item->metadataPayload.data, item->metadataPayload.size);
}