Free and Open Multimedia
Ralph Giles
Xiph.org Foundation
Xiph.org Foundation
Not-for-profit, volunteer-based organization
Grew out of an open source project
Provides royalty- and licence-free multimedia technology
Xiph.org Foundation
We are a standards organization
Xiph.org Foundation
We are a standards organization
But you can't have standards without reference implementations
Xiph.org Standards
We are a standards organization
But you can't have standards without reference implementations
In a heterogeneous market you can't get adoption without good tools
We exist because of patents
Almost all multimedia compression formats are proprietary, patented, or both
MPEG licensing is "open" but not free
Why Free standards?
For the Free desktop we need Free standards
Free standards allow a commodity market
no proprietary standard has been successful on the internet
Xiph.org Standards
Layers of multimedia
Storage and streaming: file system, HTTP and RTP
Encapsulation and multiplexing: Ogg and RTP payloads
Codecs for specific compression
Frameworks: gstreamer wraps all of the above
Tools for creation and manipulation
Xiph Compression technology
Vorbis
for general-purpose audio
Theora
for general-purpose video
Speex
special-purpose for voice
FLAC
lossless audio compression
Multimedia Formats
Ogg
Multimedia container
File storage and transmission
Container like AVI, Quicktime MOV, MPEG PS
RFC
3533
,
3534
.
Also support RTP for conferencing and multicast
Other projects
Icecast
Streaming server application
XSPF
XML playlist interchange
CMML and
Annodex
Command-line tools and examples
Ogg Container
Native format for Xiph codecs
Designed for internet transfer
Simple, very flexible format
Ogg Container
Features and Bugs
optimized for streaming: strict interleave, no seek table
bounded overhead: 0.5% - 2% of bitrate
provides packet framing, seeking signposts, error detection
Ogg Container
Features and Bugs
Grouping (multiplexing) allows audio, video to be sent together
Chaining (concatenation) allows a sequence of Ogg streams to play back seamlessly
timestamp interpretation up to the codec
Simple Ogg stream
Codec provides a sequence of
packets
These are packed and/or fragmented into structures called
pages
Simple Ogg stream
Packets
are opaque codec data of any length
Pages
can be no more than 64 KB
Limits both overhead and resource use
Simple Ogg stream
Begin and End packets/pages are special
Simple (degenerate) stream is one codec's data
Multiplexed Ogg stream
Simple Ogg stream is valid on its own...
But also mixed with others
Pages are interleaved in temporal order
Complex Ogg stream
Sequence of multiplexed and simple streams is a valid stream
Send your whole catalog over one connection!
Ogg Theora
Free video compression format
Based on the VP3 codec donated by On2
Patented, but under a free license grant
Adapted to the Ogg container and extended by Xiph
Ogg Theora
Free video format
Theora just compresses video
Combine with Vorbis or Speex for audio
Combine with MNG or text subtitles
...everything but menus
Theora Overview
arbitrary frame size/aspect
'blurry' not 'blocky'
accurate colour
How does Theora work?
DCT + block motion compensation
prediction from previous and key frames
Huffman coding
Uniqueness is in the details
Theora Stream structure
Initial headers configure decoder
Followed by compressed data
Theora Info header
compresses planar Y'CrCb (YUV) image data
4:2:0 Chroma sampling
Also supports 4:2:2, 4:4:4
NTSC and PAL colour spaces defined
Theora Info header
Rational frame rate and aspect ratio
encoded image dimensions a multiple of 16
but
cropping allows arbitrary sizes
Theora Comment header
Same format as Vorbis and Speex
vendor string identifies the encoder
unordered list of 'key=value' pairs for rough metadata
Theora Table header
decoder configuration tables are always specified
Quantization matrices, Huffman tables, filter coeff
maximum encoder flexibility
Theora Data packets
one compressed packet per frame
Theora Data packets
one compressed packet per frame
keyframes
encode a stand-alone frame
Theora Data packets
one compressed packet per frame
keyframes
encode a stand-alone frame
they must occur periodically
Theora Data packets
one compressed packet per frame
delta frames
encode relative to previous data
Current status
Bitstream frozen 11 months ago
1.0alpha3 encoder will always be supported
reference implementation is alpha pending proposed API changes, but very stable and definitely appropriate to use
Decoder doesn't support some non-VP3 features
Current status
Good support on free operating systems
Filter set now available for MS Direct Show
Quicktime still needs to be done
Future work
Experimental implementation by Timothy "Derf" Terriberry
Decoder complete and apparently stable
Encoder with new psychovisual rate management
Supports all spec features
Optimization and multithreading work
In Summary
Content creation drives format adoption
We have a good suite of free codecs, use them by default in your software and when you distribute multimedia