          __   __  ____  ____  ____  __ __  _     __ __
         /  \\/  \/  _ \/  _ \/  _ \/  \  \/ \___/_ / _\
         \       /   __/  _  \   __/      /  /  (_/  /__
          \__\__/\_____/_____/__/  \__//_/\_____/__/___/


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).
  WebPMuxSetColorProfile(mux, &icc_profile, copy_data);
  // ... (Prepare XMP metadata).
  WebPMuxSetMetadata(mux, &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).
  WebPMuxGetColorProfile(mux, &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
