gshORTON / webm

Automatically exported from code.google.com/p/webm
0 stars 0 forks source link

Support Opus #453

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
There's a new, open codec which is finishing up development called opus. It's a 
very low delay audio codec with superior audio quality to vorbis, given the 
same amount of memory is used. It is optimized for music, voices, and 
telephony/real-time chat. This means that if added, it would help WebM and 
html5 become better than Flash in live video/audio streams, among other things.

http://www.opus-codec.org/

Original issue reported on code.google.com by prescien...@gmail.com on 8 Jun 2012 at 2:57

GoogleCodeExporter commented 9 years ago
In order to support Opus in WebM someone will need to figure out how to handle 
an asymptotically convergent audio codec properly in matroska.

Similar to rolling intra in video there are no keyframes in Opus (compared to 
to, say, Vorbis where frame is a keyframe), instead when seeking the decoder 
must seek 80ms (or so) before the intended point and decode and throw away the 
audio. File based Opus also needs the container to provide signaled amount of 
audio to throw away at the beginning to align with the encoder delay and allow 
for convergence on cropped files.  This is all apparently unsolved in matroska.

Original comment by gmaxw...@gmail.com on 13 Jun 2012 at 4:16

GoogleCodeExporter commented 9 years ago
We need to add this to matroska first and then we will try to add it to VPNext. 

Original comment by albe...@google.com on 19 Jul 2012 at 10:06

GoogleCodeExporter commented 9 years ago
There's a draft spec with a finished design up to the issues Greg mentions at 
https://wiki.xiph.org/MatroskaOpus

This was discussed on the mailing list thread at 
http://lists.matroska.org/pipermail/matroska-devel/2011-December/004153.html

One needs to define a new Track::TrackEntry::PreRoll element to signal the 
pre-roll/rolling-intra interval to use when seeking. That's straightforward, 
except for convincing players to implement the new semantics, since it affects 
all the seek and pipeline code. OTOH, it's useful for more than just Opus.

The initial skip at the beginning of the file (which can be less than 80ms, and 
is used to compensate for coding and resampling delay in file-based Opus) is a 
less serious spec change, since there are already a way to set a timestamp 
offset on a block, making some of the timestamps negative. It only supports 
half the range of fixed-file opus though, so some files might not round-trip. 
Of course, trimming negative-timestamped samples is also an invasive player 
change.

Original comment by rillian....@gmail.com on 21 Jul 2012 at 4:38