WebP-Mux (RIFF based container) framework

922 views
Skip to first unread message

Vikas Arora

unread,
Oct 3, 2011, 1:10:16 PM10/3/11
to webp-d...@webmproject.org, Pascal Massimino, urvang, Vikas Arora
Hi,

The initial launch of WebP focused on demonstrating a smaller file size. Since then we’ve clearly heard the community ask for more than just that - a full featured image codec that can serve as a true alternative for your needs on the web. Today we are happy to announce a framework for adding such features through a RIFF based container, WebP-Mux. A draft specification and initial implementation of the following features - Color profile, XMP metadata, Animation & Tiling - has been pushed to the chromium Git repository. Following are the detailed contents included in this push:
  • A working draft of the WebP-Mux container specification (defining RIFF chunks for these features) is provided in the 'docs/' folder.
  • WebP-Mux code library to create RIFF container object for implementing these features.
    • Color-profile & XMP Metadata are supported as in other popular image formats. The data for Color-profile & Metadata are represented as separate RIFF chunks and handled as transparent binary blob by the Mux library. Appropriate Mux API can be used to associate these to container corresponding to the VP8 (WebP) data image.
    • Animated images are supported as in other popular image formats like GIF. The individual animation frames along with intra-frame duration & LOOP control variable are represented as separate RIFF chunks. Appropriate Mux API can be used to construct the container by adding individual animation frames. The corresponding animation player (browser or any other client App) needs to extract individual animation frames and adhere to the intra-frame duration & LOOP semantics.
    • Tiling: A single VP8 data-frame has an inherent limitation for width or height of 2^14 pixels and a 512kB limit on the size of first compressed partition. To support larger images, we support images that are composed of multiple tiles, each encoded as a separate VP8 frame. All tiles logically represent a single image and they have common metadata, color profile etc.
  • README.mux file containing reference pseudo-code example for using WebP-Mux library.
  • A reference command line tool ('examples/webpmux') for manipulating the WebP Mux file and man help page for the same. webpmux tool can be used to create a WebP container file and to extract or strip relevant data from the container file. This command line tool can be build using single step (make -f makefile.unix).

The container specification is meant to be flexible and is still evolving. We hope this scheme will allow us to support more features like Thumbnails, 3D (Stereoscopic) and transparency (alpha) in subsequent iterations. Early-adopters are encouraged to play with the command line tool. Of course, nothing is carved in stone (not even the chunk names!) so please voice your comments. Afterward, the next step will be to implement an intermediate decoding layer to actually handle the new features. By connecting together the webp-mux library and the core webp-codec, it will be easy to handle seamlessly animations, tiling, etc.

Regards,
Vikas & Urvang

Vikas Arora

unread,
Jan 2, 2012, 10:32:20 PM1/2/12
to Yoav, webp-d...@webmproject.org
+cc: webp-discuss

Yoav -


On Mon, Jan 2, 2012 at 8:23 PM, Yoav <yoav.w...@gmail.com> wrote:
Hi,

I have a few questions if I may:
Sure
 
Is WebP-mux already supported in some current browser? (Chrome Dev
channel/nightlies?)
 
No, WebP-Mux is currently not supported in Chrome. WebP-Mux & Alpha features are available in the Git code repo and we are planning to roll out next version (V0.1.4) for libwebp with these features this month. We expect Chrome to pick this latest version (0.1.4) in another few (2-3) months.
 
Are there some content samples that demonstrate the various features?

Even though there's no client implementation (like Chrome) to exhibit these features, one can use webpmux binary to create Mux container with these features. File mux.h have  documentation on the Mux (read/write) APIs.
 
Also, why is there a need to add an alpha channel in WebP-mux and as
part of the WebP codec?

Alpha support was initially added (under EXPERIMENTAL flag) as a part of WebP codec.  This initial design had some limitations and would not work for big images (WxH). 
The latest code (git repo) have Alpha represented as a separate RIFF chunk in WebP-Mux container and doesn't have any such limitation. We have removed the EXPERIMENTAL Alpha supported within WebP codec.

Regards,
Vikas
 

Thanks in advance,
Yoav



On Oct 3 2011, 6:10 pm, Vikas Arora <vik...@google.com> wrote:
> Hi,
>
> The initial launch of WebP focused on demonstrating a smaller file size.
> Since then we’ve clearly heard the community ask for more than just that - a
> full featured image codec that can serve as a true alternative for your
> needs on the web. Today we are happy to announce a framework for adding such
> features through a RIFF based container, WebP-Mux. A draft specification and
> initial implementation of the following features - Color profile, XMP
> metadata, Animation & Tiling - has been pushed to the chromium Git
> repository. Following are the detailed contents included in this push:
>
>    - A working draft of the WebP-Mux container specification (defining RIFF

>    chunks for these features) is provided in the 'docs/' folder.
>    - WebP-Mux code library to create RIFF container object for implementing
>    these features.
>       - Color-profile & XMP Metadata are supported as in other popular image

>       formats. The data for Color-profile & Metadata are represented
> as separate
>       RIFF chunks and handled as transparent binary blob by the Mux library.
>       Appropriate Mux API can be used to associate these to container
>       corresponding to the VP8 (WebP) data image.
>       - Animated images are supported as in other popular image formats like

>       GIF. The individual animation frames along with intra-frame
> duration & LOOP
>       control variable are represented as separate RIFF chunks. Appropriate Mux
>       API can be used to construct the container by adding individual animation
>       frames. The corresponding animation player (browser or any other
> client App)
>       needs to extract individual animation frames and adhere to the
> intra-frame
>       duration & LOOP semantics.
>       - Tiling: A single VP8 data-frame has an inherent limitation for width

>       or height of 2^14 pixels and a 512kB limit on the size of first
> compressed
>       partition. To support larger images, we support images that are
> composed of
>       multiple tiles, each encoded as a separate VP8 frame. All tiles logically
>       represent a single image and they have common metadata, color profile etc.
>    - README.mux file containing reference pseudo-code example for using
>    WebP-Mux library.
>    - A reference command line tool ('examples/webpmux') for manipulating the

Yoav

unread,
Jan 3, 2012, 3:10:44 AM1/3/12
to WebP Discussion
One more question related to the Android support of WebP. (I'm not
sure it is the right forum to ask, but I'll ask anyway :) )
Will future WebP versions be backported to Android browser that
currently support WebP, such as Android 4.0?

Thanks,
Yoav

On Jan 3, 4:32 am, Vikas Arora <vik...@google.com> wrote:
> +cc: webp-discuss
>
> Yoav -
>

Vikas Arora

unread,
Jan 3, 2012, 3:24:37 AM1/3/12
to webp-d...@webmproject.org
On Tue, Jan 3, 2012 at 1:40 PM, Yoav <yoav.w...@gmail.com> wrote:
One more question related to the Android support of WebP. (I'm not
sure it is the right forum to ask, but I'll ask anyway :) )
Will future WebP versions be backported to Android browser that
currently support WebP, such as Android 4.0?

The new features like Alpha, Lossless, Color-profile may not be back-ported to current Android version (4.0).
 
--
You received this message because you are subscribed to the Google Groups "WebP Discussion" group.
To post to this group, send email to webp-d...@webmproject.org.
To unsubscribe from this group, send email to webp-discuss...@webmproject.org.
For more options, visit this group at http://groups.google.com/a/webmproject.org/group/webp-discuss/?hl=en.


pik...@gmail.com

unread,
Sep 2, 2013, 7:32:41 AM9/2/13
to webp-d...@webmproject.org, Yoav
Hi thanks for all the answers on this matter, may I ask about the status?

It's been a year and a half of the last answer.

Does chrome support webpmux images?

Is there any page with examples to try it?

Could you give me an example of muxing 2 files for later usage like this (sprite stack):

<img src="sprite.webp#image1"/>
<img src="sprite.webp#image2"/>

Thanks in advance.
Reply all
Reply to author
Forward
0 new messages