- Add alpha support in mux. - Remove WebPMuxAddNamedData() and WebPMuxGetNamedData() APIs. Add WebPMuxSetImage(), WebPmuxGetImage() and WebPMuxDeleteImage() APIs instead. - Refactor code using WebPImage struct. - Corresponding changes in webpmux binary. - WebPMuxSetImage()/AddFrame()/AddTile() can now work with data which starts from "RIFF...". This simplifies reading a single-image webp file and adding it as an image/frame/tile in mux. Change-Id: I7d98a6407dfe55c84a682ef7e46bc622f5a6f8d9
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
          __   __  ____  ____  ____  __ __  _     __ __
 | 
						|
         /  \\/  \/  _ \/  _ \/  _ \/  \  \/ \___/_ / _\
 | 
						|
         \       /   __/  _  \   __/      /  /  (_/  /__
 | 
						|
          \__\__/\_____/_____/__/  \__//_/\_____/__/___/
 | 
						|
 | 
						|
 | 
						|
Description:
 | 
						|
============
 | 
						|
 | 
						|
WebP Mux: library to create the MUX container object for features like
 | 
						|
Color profile, XMP metadata, Animation & Tiling. A reference command line
 | 
						|
tool 'webpmux' and Mux container specification 'MuxContainerSpec.pdf' are also
 | 
						|
provided in this package.
 | 
						|
 | 
						|
 | 
						|
WebP Mux tool:
 | 
						|
==============
 | 
						|
 | 
						|
The examples/ directory contains tool (webpmux) for manipulating the WebP Mux
 | 
						|
file. 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
 | 
						|
   or: webpmux -set SET_OPTIONS INPUT -o OUTPUT
 | 
						|
   or: webpmux -strip STRIP_OPTIONS INPUT -o OUTPUT
 | 
						|
   or: webpmux [-tile TILE_OPTIONS]... -o OUTPUT
 | 
						|
   or: webpmux [-frame FRAME_OPTIONS]... -loop LOOP_COUNT -o OUTPUT
 | 
						|
   or: webpmux -info INPUT
 | 
						|
   or: webpmux -help OR -h
 | 
						|
 | 
						|
GET_OPTIONS:
 | 
						|
   icc       Get ICCP Color profile.
 | 
						|
   xmp       Get XMP metadata.
 | 
						|
   tile n    Get nth tile.
 | 
						|
   frame n   Get nth frame.
 | 
						|
 | 
						|
SET_OPTIONS:
 | 
						|
   icc       Set ICC Color profile.
 | 
						|
   xmp       Set XMP metadata.
 | 
						|
 | 
						|
STRIP_OPTIONS:
 | 
						|
   icc       Strip ICCP color profile.
 | 
						|
   xmp       Strip XMP metadata.
 | 
						|
 | 
						|
TILE_OPTIONS(i):
 | 
						|
   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):
 | 
						|
   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:
 | 
						|
==============
 | 
						|
WebP Mux API contains methods for adding data to WebPMux (a MUX container object
 | 
						|
for a WebP file) and reading data from WebPMux. This API currently supports
 | 
						|
XMP metadata, Color profile, Animation & Tiling. Other features will be added
 | 
						|
in subsequent releases.
 | 
						|
 | 
						|
Example#1 (pseudo code): Creating a MUX with image data, color profile & XMP
 | 
						|
metadata.
 | 
						|
 | 
						|
  int copy_data = 0;
 | 
						|
  WebPMux* mux = WebPMuxNew();
 | 
						|
  // ... (Prepare image data).
 | 
						|
  WebPMuxSetImage(mux, image_data, image_data_size, alpha_data, alpha_size,
 | 
						|
                  copy_data);
 | 
						|
  // ... (Prepare ICCP color profile data).
 | 
						|
  WebPMuxSetColorProfile(mux, icc_data, icc_data_size, copy_data);
 | 
						|
  // ... (Prepare XMP metadata).
 | 
						|
  WebPMuxSetMetadata(mux, xmp_data, xmp_data_size, copy_data);
 | 
						|
  // Get data from mux in WebP RIFF format.
 | 
						|
  WebPMuxAssemble(mux, &output_data, &output_data_size);
 | 
						|
  WebPMuxDelete(mux);
 | 
						|
  // ... (Consume output_data; e.g. write output_data to file).
 | 
						|
  free(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, data_size, copy_data);
 | 
						|
  WebPMuxGetImage(mux, &image_data, &image_data_size,
 | 
						|
                  &alpha_data, &alpha_size);
 | 
						|
  // ... (Consume image_data; e.g. call WebPDecode() to decode the data).
 | 
						|
  WebPMuxGetColorProfile(mux, &icc_data, &icc_data_size);
 | 
						|
  // ... (Consume icc_data).
 | 
						|
  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
 |