IPB

Welcome Guest ( Log In | Register )

IETF Opus codec now ready for testing, That's CELT 0.11
jmvalin
post Feb 4 2011, 17:36
Post #1


Xiph.org Speex developer


Group: Developer
Posts: 481
Joined: 21-August 02
Member No.: 3134



We'd like to announce that the Opus codec is now ready for testing. The bit-stream is now is a "pseudo-freeze", which means that unless a problem is found during testing/review, there are no longer any changes planned. The only exception to this are the SILK-mode FEC and the stereo SILK mode, which should be landing in the next few days. Considering that these are not critical features, we felt like the testing phase could already begin.

You can get the source code in two different ways. There is a release tarball at http://jmvalin.ca/opus/opus-0.9.0.tar.gz . You can also extract the source directly from the I-D ( http://www.ietf.org/id/draft-ietf-codec-opus-02.txt ) with the following command:

cat draft-ietf-codec-opus-02.txt | grep '^\ \ \ ###' |
sed 's/\s\s\s###//' | base64 -d > opus_source.tar.gz

Now the Opus codec supports three mores, one of which is identical to CELT 0.11, which was just released (not announced officially yet).

It would be nice if the HA community could help test this codec. Opus targets a very wide range of bit-rates, from 6 kb/s narrowband speech up to 510 kb/s stereo music. Perhaps a 64-96 kb/s stereo music test would be interesting to do. Anyone would like to help?
Go to the top of the page
+Quote Post
 
Start new topic
Replies
Caroliano
post Jan 20 2012, 05:48
Post #2





Group: Members
Posts: 67
Joined: 21-December 05
Member No.: 26559



I saw the IETF draft, and, as expected, the final word on the specification will be reference implementation itself. I suppose that it means that, like VP8 and others, any bug or quirky platform dependent behavior in the reference implementation will become the standard itself. This is specially worrying because SILK was closed source for a long time.

So, I would like to know if the IEFT specification was tested. That is: if someone has tried to write at least a decoder based on it. I haven't found any other opus implementation besides the reference one. You guys maybe should talk with ffmpeg/libav people, that will probably write their own opus implementation sooner or latter anyway, to do that. They may even give some useful advice on the codec specification.

And is there any plans for an "Opus-HD" (high delay) in the future? laugh.gif

Or the low-delay design is too fundamental to the codec design, and some additional bigger window overlaps and frame sizes will be too difficult to implement/not make enough difference? I guess that with the economy in signaling bits, there is no bits left to extend the codec... right?

Anyway, Opus is looking great as it is. I hope to see it everywhere soon! wink.gif

This post has been edited by Caroliano: Jan 20 2012, 05:49
Go to the top of the page
+Quote Post
NullC
post Jan 24 2012, 00:28
Post #3





Group: Developer
Posts: 200
Joined: 8-July 03
Member No.: 7653



QUOTE (Caroliano @ Jan 19 2012, 20:48) *
I saw the IETF draft, and, as expected, the final word on the specification will be reference implementation itself. I suppose that it means that, like VP8 and others, any bug or quirky platform dependent behavior in the reference implementation will become the standard itself. This is specially worrying because SILK was closed source for a long time.


The silk part of the codebase has seen a year and a half of open source development along with substantial rewriting and many boneheaded mistakes being fixed by the original developers and the folks from the CELT development team as well as other participants. The silk part of bitstream isn't even remotely compatible with the original due to the fixes, redesigns, etc.

Quirky platform dependent behavior was minimized by concurrent development on many platforms, and by simply producing a completely portable implementation. (Though, admittedly the silk code is influenced by the fast operators on ARM— though I don't think anyone would find much reason to complain about that— and its no accident).

QUOTE
So, I would like to know if the IEFT specification was tested. That is: if someone has tried to write at least a decoder based on it. I haven't found any other opus implementation besides the reference one. You guys maybe should talk with ffmpeg/libav people, that will probably write their own opus implementation sooner or latter anyway, to do that. They may even give some useful advice on the codec specification.


Tim has written an almost complete no-code-sharing reimplementation of the format (http://people.xiph.org/~tterribe/celt/opus...03-float.tar.gz), which in many places was designed to be maximally different in approach from the reference in order to validate that the implementation flexibility which we believed was there was actually there.

The MDCT (formally CELT modes) have been complete in it for a long time— almost a year— the LP/hybrid parts of it were only recently written and still have some cases incomplete. The reimplementation discovered a number of erroneous behaviors of the sort you're concerned about, and they've been corrected.

We asked the libav folks in the past and didn't get much interest— moreover, after working with their libvorbis implementation to fix some non-conformance a year or so ago, I think that if Opus was done in the same style it wouldn't provide a lot of spec validating reimplementation value, since a lot of the code was clearly copied from libvorbis and then just modified to meet libav conventions. (I don't say this to begrudge their efforts, they did a good job speeding up some parts— and the fact that it line for line duplicates libvorbis made it much easier to track down some cases where their type conversions caused overflows)

The reference implementation of Opus is also itself a bit more like one and a quarter implementations— because it includes both fixed and floating point (though with a healthy amount of code sharing).

The presentation from IETF 82 covers many of the things we did for testing, specifically with these concerns in mind http://www.ietf.org/proceedings/82/slides/codec-4.pdf

A point here is that the style of "the spec is not code" also means "the spec is not executable" which also means "the spec itself can never be completely tested", in those cases all you can do is test some implementations of the spec and hope that bugs in the spec carried through rather than being identically fixed by accident by the implementers. If it were to turn out that the implementations and spec did not agree, what would you do? "Fix" the implementations thus breaking the interoperability which is the whole point of a standard? or "Fix" the spec? which would really imply that the implementations were really the real specification all along. I'd argue that the value is in having multiple implementations, not in having the description of what the code should be doing in a form so precisely that someone could implement it cold but not precise or formal enough for it to be actually be executable itself. And we have evidence from multiple implementations— though it would be nice to have had more of it.

(In some hypothetical ideal world of unbounded resources, I'd love to have had a team writing a formal specification in Coq from which an executable version could be mechanically extracted and compared to a practical implementation— a solution which would address many concerns, but sadly on the list of priorities that kind of resource investment falls below many other things, below improving perceptual quality, below patent clearance auditing, below QA on the code that millions of people will actually be running and with which interop will be essential no matter what the spec says, etc)

QUOTE
And is there any plans for an "Opus-HD" (high delay) in the future? laugh.gif

Or the low-delay design is too fundamental to the codec design, and some additional bigger window overlaps and frame sizes will be too difficult to implement/not make enough difference? I guess that with the economy in signaling bits, there is no bits left to extend the codec... right?


No, no plans for high delay. There is plenty of room to improve things via a smarter encoder while remaining compatible. I don't see any value in incompatible extensions— if we're going to be incompatible we can do much better by throwing things out and without the low delay assumptions we'd do some things quite differently.
Go to the top of the page
+Quote Post

Posts in this topic
- jmvalin   IETF Opus codec now ready for testing   Feb 4 2011, 17:36
- - mudlord   Did some testing.... I noticed one particulary bad...   May 5 2011, 11:33
- - mudlord   Peter fixed this, now cant ABX the samples. Issue ...   May 7 2011, 15:01
- - Tom Servo   Sorry for looking like a tool for asking this, but...   Jun 19 2011, 00:46
|- - NullC   QUOTE (Tom Servo @ Jun 18 2011, 16:46) So...   Jul 27 2011, 20:04
- - mudlord   Oh, since your here, did jmvalin add the resampler...   Sep 4 2011, 23:13
- - romor   subscribe?   Sep 4 2011, 23:44
- - mudlord   ah yes, just noticed that, opusenc includes the re...   Sep 5 2011, 12:58
- - FreaqyFrequency   I'll go ahead and bump this thread as well, wh...   Oct 13 2011, 16:04
- - Speckmade   The codec's featureset sounds as if it could b...   Nov 26 2011, 15:05
- - FreaqyFrequency   I'm hoping that Opus will be used more widely ...   Nov 27 2011, 04:57
- - greensdrive   I was under the impression that low latency usuall...   Nov 27 2011, 16:20
- - Speckmade   QUOTE (FreaqyFrequency @ Nov 27 2011, 04...   Nov 28 2011, 03:11
|- - NullC   QUOTE (Speckmade @ Nov 27 2011, 18:11) Op...   Dec 1 2011, 04:08
|- - IgorC   Speaking about complexity the things are changing ...   Dec 1 2011, 15:44
- - greensdrive   QUOTE (Speckmade @ Nov 27 2011, 20:11) co...   Nov 28 2011, 04:46
|- - Speckmade   QUOTE (greensdrive @ Nov 28 2011, 04:46) ...   Dec 1 2011, 01:55
- - punkrockdude   Will the CELT encoder accept 24 bit wav files? I a...   Jan 15 2012, 11:45
- - Caroliano   I saw the IETF draft, and, as expected, the final ...   Jan 20 2012, 05:48
|- - rillian   QUOTE (Caroliano @ Jan 19 2012, 20:48) So...   Jan 23 2012, 23:49
|- - NullC   QUOTE (Caroliano @ Jan 19 2012, 20:48) I ...   Jan 24 2012, 00:28
|- - bawjaws   QUOTE (NullC @ Jan 23 2012, 16:28) The pr...   Mar 16 2012, 14:47
- - .alexander.   CELT/OPUS has been designed before 2/06/12 and I...   Mar 27 2012, 14:14
|- - NullC   QUOTE (.alexander. @ Mar 27 2012, 05:14) ...   Apr 10 2012, 00:29
- - polemon   Can we have some updates about OPUS? there isn...   May 4 2012, 14:42
|- - bawjaws   QUOTE (polemon @ May 4 2012, 06:42) Can w...   May 21 2012, 14:38
|- - NullC   QUOTE (polemon @ May 4 2012, 06:42) Can w...   May 24 2012, 04:49
|- - NullC   For any Windows users who are waiting on binaries ...   May 28 2012, 01:22
|- - mdefranc   Works on my Vista system, as well.   May 28 2012, 05:12
|- - bawjaws   QUOTE (NullC @ May 27 2012, 17:22) If any...   May 29 2012, 10:42
- - IgorC   Yes, encoder has a big room for improvements. Some...   May 21 2012, 21:16
|- - 2012   Indivisual/Average bitrates would have been great ...   May 22 2012, 12:26
- - IgorC   Bitrate calibration was done on 45 tracks of diffe...   May 22 2012, 14:05
|- - 2012   Thanks.   May 22 2012, 15:00
- - kode54   Plays audio on my Windows 7 system. Also decodes t...   May 28 2012, 02:30
- - Gainless   Can someone explain how to use the command line de...   May 28 2012, 12:53
- - dr.schanker   Works fine under WindowsXP SP3 32bit. However, i f...   May 28 2012, 15:38
- - naturfreak   @dr. schanker The Opus codec does not support mult...   May 28 2012, 16:25
|- - dr.schanker   QUOTE (naturfreak @ May 28 2012, 17:25) @...   May 28 2012, 21:11
|- - NullC   QUOTE (naturfreak @ May 28 2012, 08:25) @...   May 29 2012, 07:49
- - zerowalker   How can i get a compiled encoder of this codec:)? ...   May 28 2012, 17:27
- - naturfreak   QUOTE (NullC @ May 29 2012, 07:49) Multic...   May 29 2012, 10:38
- - dr.schanker   The inputfile: "test_wav.7z" (5 MB) The...   May 29 2012, 20:18
|- - NullC   QUOTE (dr.schanker @ May 29 2012, 12:18) ...   May 30 2012, 21:23
- - zerowalker   did som fast tests after finally getting it to wor...   May 30 2012, 22:17
- - rt87   a rough test is done here: test file: vocal only ...   May 31 2012, 05:13
- - LithosZA   QUOTE I:\>opusenc --music --bitrate 48 --f...   May 31 2012, 08:15
|- - rt87   QUOTE (LithosZA @ May 31 2012, 15:15) QUO...   May 31 2012, 08:29
- - LithosZA   QUOTE did som fast tests after finally getting it ...   May 31 2012, 08:33
|- - zerowalker   QUOTE (LithosZA @ May 31 2012, 09:33) QUO...   May 31 2012, 17:18
|- - NullC   QUOTE (zerowalker @ May 31 2012, 09:18) O...   Jun 1 2012, 04:28
- - LithosZA   QUOTE It's linked above— https://people....   May 31 2012, 19:13
|- - zerowalker   Had done something entirely else XD But got it wo...   Jun 1 2012, 00:41
|- - rt87   aoTuV Q -1 is 48kbps.   Jun 1 2012, 00:49
- - punkrockdude   I can't seem to playback an encoded opus file ...   May 31 2012, 20:27
- - LithosZA   QUOTE I can't seem to playback an encoded opus...   May 31 2012, 20:36
|- - punkrockdude   QUOTE (LithosZA @ May 31 2012, 20:36) foo...   May 31 2012, 20:41
|- - kode54   QUOTE (punkrockdude @ May 31 2012, 12:41)...   Jun 1 2012, 03:55
- - CoRoNe   Does Opus have, or will Opus get an option equival...   Jun 1 2012, 23:09
- - Gainless   Already found a sort of bug sample with a loud dis...   Jun 1 2012, 23:31
|- - 2012   QUOTE (Gainless @ Jun 1 2012, 23:31) Alre...   Jun 1 2012, 23:55
|- - 2012   QUOTE (2012 @ Jun 1 2012, 23:55) Opus ope...   Jun 2 2012, 00:08
- - Gainless   QUOTE (2012 @ Jun 2 2012, 00:55) QUOTE (G...   Jun 2 2012, 00:16
|- - NullC   QUOTE (Gainless @ Jun 1 2012, 16:16) Ok, ...   Jun 2 2012, 06:03
|- - 2012   QUOTE (NullC @ Jun 2 2012, 06:03) Based o...   Jun 2 2012, 10:17
|- - Gainless   QUOTE (NullC @ Jun 2 2012, 07:03) QUOTE (...   Jun 2 2012, 12:37
- - lvqcl   upper channel: opusenc --bitrate 128 --framesize 6...   Jun 2 2012, 10:46
|- - NullC   QUOTE (lvqcl @ Jun 2 2012, 02:46) upper c...   Jun 3 2012, 03:02
- - zerowalker   Maybe a stupid question, but can someone say, what...   Jun 3 2012, 02:19
|- - NullC   QUOTE (zerowalker @ Jun 2 2012, 18:19) Ma...   Jun 3 2012, 02:55
|- - zerowalker   QUOTE (NullC @ Jun 3 2012, 03:55) QUOTE (...   Jun 3 2012, 03:08
|- - NullC   QUOTE (zerowalker @ Jun 2 2012, 19:08) Ah...   Jun 3 2012, 04:25
- - NullC   Okay, the fix for the click on the opusdec 44.1kHz...   Jun 3 2012, 04:16
|- - rt87   QUOTE (NullC @ Jun 3 2012, 11:16) Okay, t...   Jun 3 2012, 09:42
|- - NullC   QUOTE (rt87 @ Jun 3 2012, 00:42) Cannot o...   Jun 3 2012, 14:22
- - lvqcl   CODEDecoding 44100 Hz audio (1 channel) Ca...   Jun 3 2012, 10:40
- - IgorC   Opus, AoTuV and Apple AAC at ~ 128 kbps http://d.h...   Jun 3 2012, 18:56
- - bawjaws   I notice the previous blog entry was them testing ...   Jun 3 2012, 21:49
- - darkbyte   Is somebody working on a foobar decoder plugin for...   Jun 5 2012, 16:02
- - greensdrive   not sure if this is a bug or if it's meant to ...   Jun 6 2012, 06:13
|- - NullC   QUOTE (greensdrive @ Jun 5 2012, 22:13) n...   Jun 11 2012, 14:57
- - lvqcl   I have a question about setup_resample() function....   Jun 11 2012, 16:32
|- - NullC   QUOTE (lvqcl @ Jun 11 2012, 08:32) I have...   Jun 11 2012, 16:51
- - lvqcl   get_output_latency() returns rounded value... For...   Jun 11 2012, 17:27
|- - NullC   QUOTE (lvqcl @ Jun 11 2012, 09:27) get_ou...   Jun 11 2012, 19:06
- - greensdrive   this first one doesn't work (I put --vbr just ...   Jun 11 2012, 20:29
|- - NullC   QUOTE (greensdrive @ Jun 11 2012, 12:29) ...   Jun 11 2012, 21:11
- - kode54   foobar2000 sends 0xFFFFFFFF for the length fields ...   Jun 11 2012, 23:42
- - greensdrive   QUOTE (NullC @ Jun 11 2012, 15:11) How lo...   Jun 12 2012, 04:01
|- - NullC   QUOTE (greensdrive @ Jun 11 2012, 19:01) ...   Jun 12 2012, 05:38
- - greensdrive   --ignorelength works like a charm.   Jun 12 2012, 14:47
|- - NullC   QUOTE (greensdrive @ Jun 12 2012, 05:47) ...   Jun 12 2012, 16:17
- - greensdrive   wow. no --ignorelength. no %s. opusenc.exe now ...   Jun 12 2012, 17:26
- - NullC   Just a minor update: The win32 builds of opus-to...   Jun 14 2012, 19:43
- - greensdrive   NullC: not directly related to opus, but it seems...   Jun 14 2012, 20:44
|- - NullC   QUOTE (greensdrive @ Jun 14 2012, 11:44) ...   Jun 14 2012, 21:11
- - Brazil2   Before I run anything, can you explain me why the ...   Jun 15 2012, 09:55
|- - NullC   QUOTE (Brazil2 @ Jun 15 2012, 01:55) Befo...   Jun 15 2012, 21:11
|- - Brazil2   QUOTE (NullC @ Jun 15 2012, 22:11) The Mo...   Jun 16 2012, 17:31
- - NullC   Opus has received the IETF's approval to becom...   Jul 3 2012, 14:21
6 Pages V   1 2 3 > » 


Closed TopicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 21st September 2014 - 01:03