OggOpusImplementation: Difference between revisions
(→Google Chrome: Call a chrome a chrome.) |
(→Implementation Status: Update 'running code' draft link to published rfc.) |
||
Line 4: | Line 4: | ||
What follows is a brief summary of major implementations of the draft, and their status. | What follows is a brief summary of major implementations of the draft, and their status. | ||
This is intended to help understand the status of each portion of the draft, per [ | This is intended to help understand the status of each portion of the draft, per [https://tools.ietf.org/html/rfc6982 RFC 6982]. | ||
=== opus-tools === | === opus-tools === |
Revision as of 11:49, 23 January 2014
Implementation Status
Implementation status of the Ogg Opus draft. This draft describes encapsulation of Opus audio in the Ogg container to make .opus files and streams.
What follows is a brief summary of major implementations of the draft, and their status. This is intended to help understand the status of each portion of the draft, per RFC 6982.
opus-tools
The initial development implementation of this draft was in the opusenc, opusdec, and opusinfo command-line utilties, part of the opus-tools package and repository. While still 'development' status (pre-1.0) these utilities are in active public use, and have shipped with some recent Linux distributions and in homebrew. Together they implement basic read, write and playback support of Ogg Opus files including metadata, multichannel, start and end trimming, the gain field, live streams, and chained files, but currently do not support seeking.
This implementation is open source.
opusfile
The opusfile library is a separate implementation of this draft as a helper library for demuxing and decoding. Like opus-tools, it supports metadata, multichannel, start and end trimming, the gain field, live streams, and chained files. Its primary focus is efficient seeking, including over HTTP(S) and in chained streams. It currently does not create Ogg Opus files. This library is in early development and is not widely deployed, though several projects are currently using it, including xmms2, taglib, and cmus, and it is shipped in some Linux distributions and in homebrew.
This implementation is open source.
Firefox
The Firefox web browser is a widely deployed implementation of this draft. Basic playback support with the HTML5 <audio> element, including start and end trimming, the gain field, live streams, multiplexing with other streams (for, e.g., the <video> tag), and seeking, was added in Firefox 15, in production release starting August 28, 2012. Multichannel support was added in Firefox 17, in production release starting November 20, 2012. Metadata support was added in Firefox 18, in production release starting January 8, 2013. Chained file support (as streams only, with seeking disabled) was added in Firefox 20, in production release starting April 2, 2013.
This implementation is open source.
- https://mozilla.org/firefox/
- https://hacks.mozilla.org/2012/08/opus-support-for-webrtc/
- https://bugzilla.mozilla.org/show_bug.cgi?id=674225
- https://bugzilla.mozilla.org/show_bug.cgi?id=748144
- https://bugzilla.mozilla.org/show_bug.cgi?id=778050
- https://bugzilla.mozilla.org/show_bug.cgi?id=455165
Chrome
Google's Chrome web browser has support for this draft with the HTML5 <audio> element in M25 and M26, the dev and canary channels respectively as of January, 2013. This implementation currently does not support end trimming, the gain tag, chained files, or the .opus extension. Both M25 and M26 require passing --enable-opus-playback to the executable to enable support at the time of this writing.
This implementation is based on open source code in Chromium and WebKit.
- https://www.google.com/intl/en/chrome/browser/
- https://www.google.com/intl/en/chrome/browser/canary.html
- http://code.google.com/p/chromium/issues/detail?id=104241
GStreamer
The GStreamer media framework includes an implementation of this draft. It supports metadata, multichannel, start and end trimming, the gain field, live streams, chained files, multiplexing with other streams (e.g., video), and seeking. Support was first added in early 2011, and is part of the 0.11 and 1.0.x releases. The code implementing this draft is in the gst-plugins-bad collection, which generally indicates unsupported and/or experimental code, despite its release status.
This implementation is open source.
FFmpeg
The popular media framework and conversion tool FFmpeg implements some of this draft. End trimming is not implemented, so file durations are not exactly preserved.
This implementation is open source.
libav
The development repository for libav implements this draft, similar to FFmpeg.
This implementation is open source.
VLC
VLC is another widely deployed implementation of demuxing, decoding, and playback support for this draft. It supports metadata, multichannel, start and end trimming, the gain field, live streams, seeking, chained files (though seeking does not work correctly with chained files), and multiplexing with other streams (e.g., video). Opus support was added in version 2.0.4, released on October 18, 2012.
This implementation is open source.
- http://www.videolan.org/vlc/"
- http://git.videolan.org/?p=vlc.git"
- http://trac.videolan.org/vlc/ticket/7185"
foobar2000
A popular Windows application, foobar2000 implements read, write, and playback support for this draft. It supports metadata, multichannel, start and end trimming, the gain field, live streams, chained files, and seeking. Opus support was added in version 1.1.14, released on August 17, 2012. Encoding support is implemented using opusenc from opus-tools.
This implementation is closed source.
Rockbox
Rockbox is an established alternative firmware for portable music players (typically small, embedded devices) that implements demuxing, decoding, and playback support for this draft. It supports metadata, start and end trimming, the gain field, and seeking. It does not currently support multichannel or chained files. Opus is currently only supported in development builds, though it is scheduled to be included in the next stable release (3.13).
This implementation is open source.