Lines Matching refs:mux
22 static void MuxInit(WebPMux* const mux) { in MuxInit() argument
23 assert(mux != NULL); in MuxInit()
24 memset(mux, 0, sizeof(*mux)); in MuxInit()
25 mux->canvas_width_ = 0; // just to be explicit in MuxInit()
26 mux->canvas_height_ = 0; in MuxInit()
33 WebPMux* const mux = (WebPMux*)WebPSafeMalloc(1ULL, sizeof(WebPMux)); in WebPNewInternal() local
34 if (mux != NULL) MuxInit(mux); in WebPNewInternal()
35 return mux; in WebPNewInternal()
46 static void MuxRelease(WebPMux* const mux) { in MuxRelease() argument
47 assert(mux != NULL); in MuxRelease()
48 DeleteAllImages(&mux->images_); in MuxRelease()
49 ChunkListDelete(&mux->vp8x_); in MuxRelease()
50 ChunkListDelete(&mux->iccp_); in MuxRelease()
51 ChunkListDelete(&mux->anim_); in MuxRelease()
52 ChunkListDelete(&mux->exif_); in MuxRelease()
53 ChunkListDelete(&mux->xmp_); in MuxRelease()
54 ChunkListDelete(&mux->unknown_); in MuxRelease()
57 void WebPMuxDelete(WebPMux* mux) { in WebPMuxDelete() argument
58 if (mux != NULL) { in WebPMuxDelete()
59 MuxRelease(mux); in WebPMuxDelete()
60 WebPSafeFree(mux); in WebPMuxDelete()
77 static WebPMuxError MuxSet(WebPMux* const mux, uint32_t tag, in MuxSet() argument
82 assert(mux != NULL); in MuxSet()
86 SWITCH_ID_LIST(IDX_VP8X, &mux->vp8x_); in MuxSet()
87 SWITCH_ID_LIST(IDX_ICCP, &mux->iccp_); in MuxSet()
88 SWITCH_ID_LIST(IDX_ANIM, &mux->anim_); in MuxSet()
89 SWITCH_ID_LIST(IDX_EXIF, &mux->exif_); in MuxSet()
90 SWITCH_ID_LIST(IDX_XMP, &mux->xmp_); in MuxSet()
91 SWITCH_ID_LIST(IDX_UNKNOWN, &mux->unknown_); in MuxSet()
139 WebPMux* const mux = WebPMuxCreate(bitstream, 0); in GetImageData() local
140 if (mux == NULL) return WEBP_MUX_BAD_DATA; in GetImageData()
141 wpi = mux->images_; in GetImageData()
147 WebPMuxDelete(mux); in GetImageData()
168 static WebPMuxError MuxDeleteAllNamedData(WebPMux* const mux, uint32_t tag) { in MuxDeleteAllNamedData() argument
170 assert(mux != NULL); in MuxDeleteAllNamedData()
172 return DeleteChunks(MuxGetChunkListFromId(mux, id), tag); in MuxDeleteAllNamedData()
178 WebPMuxError WebPMuxSetChunk(WebPMux* mux, const char fourcc[4], in WebPMuxSetChunk() argument
182 if (mux == NULL || fourcc == NULL || chunk_data == NULL || in WebPMuxSetChunk()
189 err = MuxDeleteAllNamedData(mux, tag); in WebPMuxSetChunk()
193 return MuxSet(mux, tag, chunk_data, copy_data); in WebPMuxSetChunk()
233 WebPMuxError WebPMuxSetImage(WebPMux* mux, const WebPData* bitstream, in WebPMuxSetImage() argument
239 if (mux == NULL || bitstream == NULL || bitstream->bytes == NULL || in WebPMuxSetImage()
244 if (mux->images_ != NULL) { in WebPMuxSetImage()
246 DeleteAllImages(&mux->images_); in WebPMuxSetImage()
254 err = MuxImagePush(&wpi, &mux->images_); in WebPMuxSetImage()
265 WebPMuxError WebPMuxPushFrame(WebPMux* mux, const WebPMuxFrameInfo* info, in WebPMuxPushFrame() argument
271 if (mux == NULL || info == NULL) return WEBP_MUX_INVALID_ARGUMENT; in WebPMuxPushFrame()
280 if (mux->images_ != NULL) { in WebPMuxPushFrame()
281 const WebPMuxImage* const image = mux->images_; in WebPMuxPushFrame()
316 err = MuxImagePush(&wpi, &mux->images_); in WebPMuxPushFrame()
327 WebPMuxError WebPMuxSetAnimationParams(WebPMux* mux, in WebPMuxSetAnimationParams() argument
333 if (mux == NULL || params == NULL) return WEBP_MUX_INVALID_ARGUMENT; in WebPMuxSetAnimationParams()
339 err = MuxDeleteAllNamedData(mux, kChunks[IDX_ANIM].tag); in WebPMuxSetAnimationParams()
345 return MuxSet(mux, kChunks[IDX_ANIM].tag, &anim, 1); in WebPMuxSetAnimationParams()
348 WebPMuxError WebPMuxSetCanvasSize(WebPMux* mux, in WebPMuxSetCanvasSize() argument
351 if (mux == NULL) { in WebPMuxSetCanvasSize()
366 err = MuxDeleteAllNamedData(mux, kChunks[IDX_VP8X].tag); in WebPMuxSetCanvasSize()
369 mux->canvas_width_ = width; in WebPMuxSetCanvasSize()
370 mux->canvas_height_ = height; in WebPMuxSetCanvasSize()
377 WebPMuxError WebPMuxDeleteChunk(WebPMux* mux, const char fourcc[4]) { in WebPMuxDeleteChunk() argument
378 if (mux == NULL || fourcc == NULL) return WEBP_MUX_INVALID_ARGUMENT; in WebPMuxDeleteChunk()
379 return MuxDeleteAllNamedData(mux, ChunkGetTagFromFourCC(fourcc)); in WebPMuxDeleteChunk()
382 WebPMuxError WebPMuxDeleteFrame(WebPMux* mux, uint32_t nth) { in WebPMuxDeleteFrame() argument
383 if (mux == NULL) return WEBP_MUX_INVALID_ARGUMENT; in WebPMuxDeleteFrame()
384 return MuxImageDeleteNth(&mux->images_, nth); in WebPMuxDeleteFrame()
425 static WebPMuxError GetAdjustedCanvasSize(const WebPMux* const mux, in GetAdjustedCanvasSize() argument
428 assert(mux != NULL); in GetAdjustedCanvasSize()
431 wpi = mux->images_; in GetAdjustedCanvasSize()
468 static WebPMuxError CreateVP8XChunk(WebPMux* const mux) { in CreateVP8XChunk() argument
477 assert(mux != NULL); in CreateVP8XChunk()
478 images = mux->images_; // First image. in CreateVP8XChunk()
486 err = MuxDeleteAllNamedData(mux, kChunks[IDX_VP8X].tag); in CreateVP8XChunk()
490 if (mux->iccp_ != NULL && mux->iccp_->data_.bytes != NULL) { in CreateVP8XChunk()
493 if (mux->exif_ != NULL && mux->exif_->data_.bytes != NULL) { in CreateVP8XChunk()
496 if (mux->xmp_ != NULL && mux->xmp_->data_.bytes != NULL) { in CreateVP8XChunk()
509 err = GetAdjustedCanvasSize(mux, &width, &height); in CreateVP8XChunk()
519 if (mux->canvas_width_ != 0 || mux->canvas_height_ != 0) { in CreateVP8XChunk()
520 if (width > mux->canvas_width_ || height > mux->canvas_height_) { in CreateVP8XChunk()
523 width = mux->canvas_width_; in CreateVP8XChunk()
524 height = mux->canvas_height_; in CreateVP8XChunk()
527 if (flags == 0 && mux->unknown_ == NULL) { in CreateVP8XChunk()
543 return MuxSet(mux, kChunks[IDX_VP8X].tag, &vp8x, 1); in CreateVP8XChunk()
547 static WebPMuxError MuxCleanup(WebPMux* const mux) { in MuxCleanup() argument
554 WebPMuxError err = WebPMuxNumChunks(mux, kChunks[IDX_ANMF].id, &num_frames); in MuxCleanup()
558 err = MuxImageGetNth((const WebPMuxImage**)&mux->images_, 1, &frame); in MuxCleanup()
562 ((mux->canvas_width_ == 0 && mux->canvas_height_ == 0) || in MuxCleanup()
563 (frame->width_ == mux->canvas_width_ && in MuxCleanup()
564 frame->height_ == mux->canvas_height_))) { in MuxCleanup()
572 err = WebPMuxNumChunks(mux, kChunks[IDX_ANIM].id, &num_anim_chunks); in MuxCleanup()
575 err = MuxDeleteAllNamedData(mux, kChunks[IDX_ANIM].tag); in MuxCleanup()
600 WebPMuxError WebPMuxAssemble(WebPMux* mux, WebPData* assembled_data) { in WebPMuxAssemble() argument
612 if (mux == NULL) { in WebPMuxAssemble()
617 err = MuxCleanup(mux); in WebPMuxAssemble()
619 err = CreateVP8XChunk(mux); in WebPMuxAssemble()
623 size = ChunkListDiskSize(mux->vp8x_) + ChunkListDiskSize(mux->iccp_) in WebPMuxAssemble()
624 + ChunkListDiskSize(mux->anim_) + ImageListDiskSize(mux->images_) in WebPMuxAssemble()
625 + ChunkListDiskSize(mux->exif_) + ChunkListDiskSize(mux->xmp_) in WebPMuxAssemble()
626 + ChunkListDiskSize(mux->unknown_) + RIFF_HEADER_SIZE; in WebPMuxAssemble()
633 dst = ChunkListEmit(mux->vp8x_, dst); in WebPMuxAssemble()
634 dst = ChunkListEmit(mux->iccp_, dst); in WebPMuxAssemble()
635 dst = ChunkListEmit(mux->anim_, dst); in WebPMuxAssemble()
636 dst = ImageListEmit(mux->images_, dst); in WebPMuxAssemble()
637 dst = ChunkListEmit(mux->exif_, dst); in WebPMuxAssemble()
638 dst = ChunkListEmit(mux->xmp_, dst); in WebPMuxAssemble()
639 dst = ChunkListEmit(mux->unknown_, dst); in WebPMuxAssemble()
643 err = MuxValidate(mux); in WebPMuxAssemble()