[opus] encode/decode with Opus

Ian Malone ibmalone at gmail.com
Mon Jun 9 02:56:17 PDT 2014

On 1 June 2014 21:39, Didier Nkalla <didnkallaehawe at yahoo.fr> wrote:
>  Hi to everybody.
> I have data in a buffer. when i encode it and decode it i does not obtain
> the same data. i think encode(decode(data)) = decode(encode(data)) = data.
> I also try it with trivial example in opus boundle downloded on the official
> website. My probleme is that how can i write two function myencode and
> mydecode such as myencode(mydecode(data)) = mydecode(myencode(data)) = data?


Neither of these identities is true. Opus is a lossy perceptual
encoding, this means
decode(encode(data)) != data
As information is discarded. (It also means that simple measures such
as sum of square difference do not tell you how similar the two
streams will sound to a listener.)

encode(decode(data)) != decode(encode(data))
Assumes the two operations commute, which they don't. The encode
operation reduces the data to a representation using a variety of
encodings, I sounds like you are expecting it to be a simple operation
like a Fourier transform, which it isn't, even if it was, information
is discarded (again, lossy) and the encoded data is additionally
compressed I'm not sure there are any non-trivial compression
algorithms where the encode and decode can commute like that.


More information about the opus mailing list