__ __ ____ ____ ____ __ __ _ __ __ / \\/ \/ _ \/ _ \/ _ \/ \ \/ \___/_ / _\ \ / __/ _ \ __/ / / (_/ /__ \__\__/\_____/_____/__/ \__//_/\_____/__/___/ Description: ============ WebP Mux: library to create a WebP container object for features like color profile, XMP metadata, animation & tiling. A reference command line tool 'webpmux' and WebP container specification 'doc/webp-container-spec.txt' are also provided in this package. WebP Mux tool: ============== The examples/ directory contains a tool (webpmux) for manipulating WebP files. The webpmux tool can be used to create a WebP container file and to extract or strip relevant data from the container file. A list of options is available using the -help command line flag: > webpmux -help Usage: webpmux -get GET_OPTIONS INPUT -o OUTPUT webpmux -set SET_OPTIONS INPUT -o OUTPUT webpmux -strip STRIP_OPTIONS INPUT -o OUTPUT webpmux -tile TILE_OPTIONS [-tile...] -o OUTPUT webpmux -frame FRAME_OPTIONS [-frame...] -loop LOOP_COUNT -o OUTPUT webpmux -info INPUT webpmux [-h|-help] GET_OPTIONS: Extract relevant data. icc Get ICCP Color profile. xmp Get XMP metadata. tile n Get nth tile. frame n Get nth frame. SET_OPTIONS: Set color profile/metadata. icc Set ICC Color profile. xmp Set XMP metadata. STRIP_OPTIONS: Strip color profile/metadata. icc Strip ICCP color profile. xmp Strip XMP metadata. TILE_OPTIONS(i): Create tiled image. file_i +xi+yi where: 'file_i' is the i'th tile (webp format), 'xi','yi' specify the image offset for this tile. FRAME_OPTIONS(i): Create animation. file_i +xi+yi+di where: 'file_i' is the i'th animation frame (webp format), 'xi','yi' specify the image offset for this frame. 'di' is the pause duration before next frame. INPUT & OUTPUT are in webp format. WebP Mux API: ============== The WebP Mux API contains methods for adding data to and reading data from WebPMux (a WebP container object). This API currently supports XMP metadata, color profile, animation & tiling. Other features will be added in subsequent releases. Example#1 (pseudo code): Creating a WebPMux object with image data, color profile & XMP metadata. int copy_data = 0; WebPMux* mux = WebPMuxNew(); // ... (Prepare image data). WebPMuxSetImage(mux, &image, copy_data); // ... (Prepare ICCP color profile data). WebPMuxSetChunk(mux, "ICCP", &icc_profile, copy_data); // ... (Prepare XMP metadata). WebPMuxSetChunk(mux, "META", &xmp, copy_data); // Get data from mux in WebP RIFF format. WebPMuxAssemble(mux, &output_data); WebPMuxDelete(mux); // ... (Consume output_data; e.g. write output_data.bytes_ to file). WebPDataClear(&output_data); Example#2 (pseudo code): Get image & color profile data from a WebP file. int copy_data = 0; // ... (Read data from file). WebPMux* mux = WebPMuxCreate(&data, copy_data); WebPMuxGetImage(mux, &image); // ... (Consume image; e.g. call WebPDecode() to decode the data). WebPMuxGetChunk(mux, "ICCP", &icc_profile); // ... (Consume icc_profile). WebPMuxDelete(mux); free(data); For detailed Mux API reference, please refer to the header file (src/webp/mux.h) Bugs: ===== Please report all bugs to our issue tracker: http://code.google.com/p/webp/issues Patches welcome! See this page to get started: http://www.webmproject.org/code/contribute/submitting-patches/ Discuss: ======== Email: webp-discuss@webmproject.org Web: http://groups.google.com/a/webmproject.org/group/webp-discuss