static WebPMuxError MuxAddChunk(WebPMux* const mux, uint32_t nth, uint32_t tag, const uint8_t* data, size_t size, int copy_data) { const CHUNK_INDEX idx = ChunkGetIndexFromTag(tag); const WebPData chunk_data = { data, size }; assert(mux != NULL); assert(size <= MAX_CHUNK_PAYLOAD); assert(idx != IDX_NIL); return MuxSet(mux, idx, nth, &chunk_data, copy_data); }
static WebPMuxError MuxSet(WebPMux* const mux, uint32_t tag, uint32_t nth, const WebPData* const data, int copy_data) { WebPChunk chunk; WebPMuxError err = WEBP_MUX_NOT_FOUND; const CHUNK_INDEX idx = ChunkGetIndexFromTag(tag); assert(mux != NULL); assert(!IsWPI(kChunks[idx].id)); ChunkInit(&chunk); SWITCH_ID_LIST(IDX_VP8X, &mux->vp8x_); SWITCH_ID_LIST(IDX_ICCP, &mux->iccp_); SWITCH_ID_LIST(IDX_ANIM, &mux->anim_); SWITCH_ID_LIST(IDX_EXIF, &mux->exif_); SWITCH_ID_LIST(IDX_XMP, &mux->xmp_); SWITCH_ID_LIST(IDX_UNKNOWN, &mux->unknown_); return err; }
CHUNK_INDEX ChunkGetIndexFromFourCC(const char fourcc[4]) { const uint32_t tag = ChunkGetTagFromFourCC(fourcc); return ChunkGetIndexFromTag(tag); }
CHUNK_INDEX ChunkGetIndexFromFourCC(const char fourcc[4]) { const uint32_t tag = ChunkGetTagFromFourCC(fourcc); const CHUNK_INDEX idx = ChunkGetIndexFromTag(tag); return (idx == IDX_NIL) ? IDX_UNKNOWN : idx; }