Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Opus 1.1.1 is out (Read 48818 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Opus 1.1.1 is out

Reply #25
I've tried  the snapshot "Quality: removes VBR attenuation at low bitrate"  at 48 kbps.

This change  produces 2 kbps(4%) extra on average comparing to 1.1.1 48 kbps on my set of albums which are fairly representative like the compilation of different music genres (SoundProLab Absolute  Sampler, Chesky Records - The Ultimate Demonstration Disc, etc ). 

As this changes removes constrain on VBR so it does go higher on difficult parts, this part is predictable. But it doesn't go low enough. Not sure if it's good thing but monish speech samples still get high enough bitrates. Stereo savings probably could justify a few-several kbps to save there (?) or speech in the other hand requires this bitrate because of its tonal parts (?). 
Or this rather can be fixed by bitrate calibration.
Sample The speech sample

I've compared Opus 1.1.1 48 kbps vs 4806de 46 kbps  on 7 samples in this moment. Yes, it has wider VBR bitrates but it doesn't necesary translate to higher audible quality. The average scores for both builds were the same.

Opus 1.1.1 is out

Reply #26
Interesting. Is there any way I could update the decoder on android (building from source or something?).

I think it's better to ask to developers of  particular software player

Currently, opus still seems to be using more processing power than vorbis on my Helio X10, resulting in worse battery life.

Uhm.  Opus decoder (1.0-1.1 versions) may use somewhere around ~30-50 MHz on Cortex-A ARM processors (1-2 GHz) so it can't cause worse battery life on a smartphones unless something is really broken.  It's not easy to perform apples-to-apples comparison on battery life because real usage of smarthpone varies a lot (background apps, updates, wifi, display etc..).  However I've performed battery life test on Moto G (1st gen) which has Cortex-A7 1.2 GHz  with Android Rockbox. The battery has lasted 35 hours 32 minutes (with headphones turned on realistic volume). It's a lot.

Good job, guys.

it's reported that  Opus 1.1.1 decoder is even faster than Vorbis on ARM9E   
https://www.hydrogenaud.io/forums/index.php...st&p=909049

Opus 1.1.1 beta
Quote
Clip Zip in rockbox (ARM9E):

opus111b_128k.opus   490.68% realtime   Decode time - 35.85s   48.91MHz
vorbis_128k.ogg   475.53% realtime   Decode time - 36.99s   50.47MHz
nero_lc_128k.m4a   525.56% realtime   Decode time - 33.48s   45.66MHz




That is actually synced to a Jan 2014 version of libopus, not 1.1.1.

Oh, then 1.1.1 should be even faster

Opus 1.1.1 is out

Reply #27
Thanks, thought you'd given up on Opus for Daala, nice to see some new things happening 

Opus 1.1.1 is out

Reply #28
Interesting. Is there any way I could update the decoder on android (building from source or something?).

I think it's better to ask to developers of  particular software player

I'm talking about the built-in android decoder, android (kind of) supports opus since version 5. Of course, players using a custom decoder can update it, but waiting for an OS update, especially on a non-nexus device is an exercise in futility.

Quote
Currently, opus still seems to be using more processing power than vorbis on my Helio X10, resulting in worse battery life.

Uhm.  Opus decoder (1.0-1.1 versions) may use somewhere around ~30-50 MHz on Cortex-A ARM processors (1-2 GHz) so it can't cause worse battery life on a smartphones unless something is really broken.  It's not easy to perform apples-to-apples comparison on battery life because real usage of smarthpone varies a lot (background apps, updates, wifi, display etc..).  However I've performed battery life test on Moto G (1st gen) which has Cortex-A7 1.2 GHz  with Android Rockbox. The battery has lasted 35 hours 32 minutes (with headphones turned on realistic volume). It's a lot.

It's not a question of being "a lot" or not, but a question of which of them performs better 

I haven't done a proper benchmark yet, mostly because I'm constantly using my phone at the moment, but judging by short-term running tests in airplane mode, the CPU spikes to higher states much often with opus than it does with vorbis, and stays in higher CPU usage state overall. (opus: 1.1GHz - 1.4GHz, vorbis: 800MHz - 1.3GHz on a Helio X10 SoC). However, this is using a BT headset, so it probably has some overhead for transcoding opus/ogg to sbc. The question would be, if this overhead is larger than driving regular wired headphones and if it's different between opus and vorbis. I'll probably do a proper benchmark sometime, just to be sure. I can rule out any bias against opus on my part at least, as I find the codec awesome and would like to use it as my lossy codec of choice.

edit: as for android rockbox, it has been and still is a crashfest on several phones I tried it on - maybe it just hates me.

Opus 1.1.1 is out

Reply #29
Does Opus still use phase inverted intensity stereo? I ask because I use FM wireless headphones that downmix to mono when I go too far from the reciever and a person here on HA stated to have warbling artifacts caused by phase cancellation https://www.hydrogenaud.io/forums/index.php...st&p=840503 . This was confirmed below as a known issue https://www.hydrogenaud.io/forums/index.php...st&p=840586 . So was the stereo model improved to not exhibit this artifact or is the stated "hack" of the encoder/decoder to not invert phase by 180 degrees easily available?

Opus 1.1.1 is out

Reply #30
Does Opus still use phase inverted intensity stereo? I ask because I use FM wireless headphones that downmix to mono when I go too far from the reciever and a person here on HA stated to have warbling artifacts caused by phase cancellation https://www.hydrogenaud.io/forums/index.php...st&p=840503 . This was confirmed below as a known issue https://www.hydrogenaud.io/forums/index.php...st&p=840586 . So was the stereo model improved to not exhibit this artifact or is the stated "hack" of the encoder/decoder to not invert phase by 180 degrees easily available?


Opus still uses phase-inverted stereo. However, in an update (not yet available), I'm planning on making it optional, both on the encoder side and on the decoder side for an already encoded stream. Keep in mind that it's a feature that generally improves quality in cases where you're not down-mixing.

Opus 1.1.1 is out

Reply #31
I've tried  the snapshot "Quality: removes VBR attenuation at low bitrate"  at 48 kbps.

This change  produces 2 kbps(4%) extra on average comparing to 1.1.1 48 kbps on my set of albums which are fairly representative like the compilation of different music genres (SoundProLab Absolute  Sampler, Chesky Records - The Ultimate Demonstration Disc, etc ). 

As this changes removes constrain on VBR so it does go higher on difficult parts, this part is predictable. But it doesn't go low enough. Not sure if it's good thing but monish speech samples still get high enough bitrates. Stereo savings probably could justify a few-several kbps to save there (?) or speech in the other hand requires this bitrate because of its tonal parts (?). 
Or this rather can be fixed by bitrate calibration.
Sample The speech sample

I've compared Opus 1.1.1 48 kbps vs 4806de 46 kbps  on 7 samples in this moment. Yes, it has wider VBR bitrates but it doesn't necesary translate to higher audible quality. The average scores for both builds were the same.


Interesting. On my own calibrating set, the bitrate is the same for 1.1.1 and the new VBR work. What does the quality look like if you compare 48 kbps to 48 kbps? Also, any areas where the new encoder sounds worse than 1.1.1?

Opus 1.1.1 is out

Reply #32
When will the update that makes phase inverted intensity stereo optional be available? Also, at what bitrates it is generally used, how does it make sense psychoacoustically (I understand regular intensity stereo destroys phase information, but I fail to see how does inverting one channel by 180 degrees alleviate this to any extend as I don't think any natural signal has 2 channels phase inverted from each other) and can you somehow view how many frames of a file are phase-inverted IS encoded?

Thanks for responding and apart from this issue, your codec astounded me by quality, even at very low bitrates.

Opus 1.1.1 is out

Reply #33
When will the update that makes phase inverted intensity stereo optional be available?


When I have time. There's many things that need to be addressed in Opus. This is one of them and it's being addressed in this Opus update draft.

Quote
Also, at what bitrates it is generally used, how does it make sense psychoacoustically (I understand regular intensity stereo destroys phase information, but I fail to see how does inverting one channel by 180 degrees alleviate this to any extend as I don't think any natural signal has 2 channels phase inverted from each other) and can you somehow view how many frames of a file are phase-inverted IS encoded?


Essentially, intensity stereo destroys relative phase between the channels. In some cases, the original phase of one channel is more than 90 degrees from the other channel (diffuse noise), so inverted phase is a way to (slightly) help with this kind of signal.

Opus 1.1.1 is out

Reply #34
Does it always invert the phase on intensity stereo bands or only when it decides so? How much lower will the quality be without that?

Opus 1.1.1 is out

Reply #35
Does it always invert the phase on intensity stereo bands or only when it decides so? How much lower will the quality be without that?


There's a per-band flag to invert the phase, so the encoder chooses whether it sets the flag on each band of each frame. Right now, choosing not to do so is just a one-line hack in the encoder, but I also want to make it an option, and make it an option for the decoder to ignore that flag and never invert phase. In terms of quality, the difference is small, but (when tested several years ago) measurable.

Opus 1.1.1 is out

Reply #36
Interesting. On my own calibrating set, the bitrate is the same for 1.1.1 and the new VBR work. What does the quality look like if you compare 48 kbps to 48 kbps? Also, any areas where the new encoder sounds worse than 1.1.1?

Some results. The logs of number of trials weren't recorded because I tested in a training mode.  The results (both 1.1.1 and wide VBR at 48 kbps)

The bitrate on relatively easy sample of french speech confirms that wider VBR has bitrate bias. Alright, I buy the increase of bitrate on a difficult samples but the bitrate doesn't go lower and in fact a tiny fraction is higher for this easy sample. Conclusion: there is a bitrate bias and no real audible quality improvement as the scores are the same for 1.1.1. 48 kbps vs wider VBR 46 kbps. I really like the idea of very wide VBR and want to hear any kind of improvement. It's  just not there yet .

Opus 1.1.1 is out

Reply #37
..., in an update (not yet available), I'm planning on making it optional, both on the encoder side and on the decoder side for an already encoded stream.

This statement confuses me. Wouldn't making something optional in the DEcoder move away from full compliance to the IETF specification of Opus? I assume that the band-wise inverted-intensity bit already exists (I.e. has been specified since the first version but might not be set to 1 by current ENcoders)?

Chris
If I don't reply to your reply, it means I agree with you.

Opus 1.1.1 is out

Reply #38
..., in an update (not yet available), I'm planning on making it optional, both on the encoder side and on the decoder side for an already encoded stream.

This statement confuses me. Wouldn't making something optional in the DEcoder move away from full compliance to the IETF specification of Opus? I assume that the band-wise inverted-intensity bit already exists (I.e. has been specified since the first version but might not be set to 1 by current ENcoders)?


The decoder part of the change -- despite nor affecting compatibility in any way -- indeed has implications with respect to the spec. This is why it needs to go through the full IETF process for approval. This is in part to ensure that there is no negative impact of making that (optional) change.


Opus 1.1.1 is out

Reply #40
I parsed the results and I'd like to share it.
Code: [Select]
wider normal
3.0 2.8 01.castanets
2.5 2.5 02.fatboy_30sec
3.7 3.4 03.EIG
2.7 2.7 05.Enola
4.0 4.0 11.female_speech
5.0 3.0 05.Linchpin


Unless I missed something, the Linchpin score for "wider" was 2.8 and not 5.0.

Opus 1.1.1 is out

Reply #41
I assumed it was the ranked reference, because only it had the different filename.
Code: [Select]
1R = C:\Audio\Samples\Opus wider VBR 48 kbps\Linchpin.wav
2R = C:\Audio\Samples\Opus 1.1.1 VBR 48 kbps\05. Linchpin Opus 1.1.1 48 kbps VBR.wav

---------------------------------------
General Comments:

---------------------------------------
1R File: C:\Audio\Samples\Opus wider VBR 48 kbps\Linchpin.wav
1R Rating: 2.8
1R Comment:
---------------------------------------
2R File: C:\Audio\Samples\Opus 1.1.1 VBR 48 kbps\05. Linchpin Opus 1.1.1 48 kbps VBR.wav
2R Rating: 3.0
2R Comment:
---------------------------------------

 

Opus 1.1.1 is out

Reply #42
Agree, it wasn't clear. Artifacts are easy to spot at 48 kbps.  The correct rank for Linchpin encoded by wider VBR is 2.8 (the path is "Opus wider VBR 48 kbps")

Opus 1.1.1 is out

Reply #43
I would like to share my opus-tools build too: https://github.com/Chocobo1/opus-tools_win32-build

Seems a bit faster, probably VS2015 has some better optimizations... not sure.
Code: [Select]
    mine-x64
Encoder stream format: 44100Hz / 2ch / 16bps
Command line: "C:\Audio Encoder\opusenc.exe" --bitrate 128 --vbr --comp 10 --ignorelength --quiet - "mine-x64.opus"
Total encoding time: 0:06.532, 49.42x realtime

    2012-x64
Encoder stream format: 44100Hz / 2ch / 16bps
Command line: "C:\Audio Encoder\opusenc.exe" --bitrate 128 --vbr --comp 10 --ignorelength --quiet - "2012-x64.opus"
Total encoding time: 0:07.094, 45.51x realtime

    lvqcl-x64
Encoder stream format: 44100Hz / 2ch / 16bps
Command line: "C:\Audio Encoder\opusenc.exe" --bitrate 128 --vbr --comp 10 --ignorelength --quiet - "lvqcl-x64.opus"
Total encoding time: 0:07.140, 45.21x realtime


As of bit-compare, mine is identical with lvqcl build but found difference with 2012 build.
Code: [Select]
"C:\Users\USMC\Desktop\mine-x64.opus"
"C:\Users\USMC\Desktop\2012-x64.opus"
Compared 15497600 samples.
Differences found: 848271 values, starting at 0:03.792583, peak: 0.0308494 at 0:19.797688, 1ch
Detected offset as 0 samples.


Opus 1.1.1 is out

Reply #44
In order to draw some picture of what Opus is capable at 48 kbps  I’ve compared it to other codecs to figure out what quality have different formats, weak and strong parts at this bitrate.

Two most obvious and popular formats which bring  acceptable quality at 48 kbps: HE-AAC and Vorbis.  According to my tests Nero and Fraunhofer HE-AAC encoders has the best quality at 48 kbps. I finally choosed Fraunhofer because despite it has only CBR (AAC’s CBR is actually short window ABR) but quality is still the highest and bitrate is predictable (always 48 kbps).

Opus was better on transient samples, worse on tonal.  On speech samples it was HE-AAC>Opus>Vorbis at that bitrate.
There were also two critical samples (“Bachpsichord” and “Spill the Blood”, both are highly tonal) for Opus where it performed even worse than Vorbis.  All extra bitrate of  a wider VBR helped somewhat but it wasn’t enough to do better than Vorbis on these two samples.

Tests
original .WAV files

Opus 1.1.1 is out

Reply #45
Opus was better on transient samples, worse on tonal.  On speech samples it was HE-AAC>Opus>Vorbis at that bitrate.
There were also two critical samples (“Bachpsichord” and “Spill the Blood”, both are highly tonal) for Opus where it performed even worse than Vorbis.  All extra bitrate of  a wider VBR helped somewhat but it wasn’t enough to do better than Vorbis on these two samples.

Thanks for the feedback Igor. Keep in mind that Opus 1.1.1 is essentially the same as (two year old) Opus 1.1 when it comes to quality. I only just started looking at quality improvements again. I'm not yet sure what will be possible. Extreme tonal samples will likely remain an issue at rates like 48 kb/s simply because Vorbis and HE-AAC use windows of ~80 ms at that rate, whereas Opus is still using 22.5 ms windows.

That being said, here's some samples I just generated at 32 kb/s VBR nominal (actual rate 38 kb/s on this file): http://www.jmvalin.ca/misc_stuff/tune_32kbps1/
I'd be interested in comments on which of these sounds best (comp_stereo48.wav is the original). I expect the Dire Straights segment to be the one most affected.

Opus 1.1.1 is out

Reply #46
I only just started looking at quality improvements again.

Speaking of quality improvements of Opus, in the 2014 public listening test (beta), the rate control of one tonal and silent sample 35_SQAM_glockenspiel_cut.wav was significantly different from other encoders.
I know Opus need to boost bitrates on tonal samples, but even after your commit "Makes tonality boost less aggressive" (Thu, 13 Dec 2012), the tonality boost may have room for some extra improvements.

Opus 1.1.1 is out

Reply #47
I'd be interested in comments on which of these sounds best (comp_stereo48.wav is the original). I expect the Dire Straights segment to be the one most affected.


For me comp_orig_t14.wav seems a little bit better than the others, but just a very little. Transients are still annoying with headphones on.

I have some questions on my mind, not completely related to the current improvements:

- Are you planning to resurrect the variable framesize encoding branch in the future or that was completely a dead end?

- How does band folding works in Opus? Can it only fold low frequency bands to higher ones only, or is it possible to encode higher frequency bands and fold them down to lower ones (i don't know if it would result in any gain actually, I'm just curious)?

- I know you don't want to implement anything similar to HE-AACv2's Parametric Stereo for legal reasons, but how different is Intensity Stereo from Parametric Stereo? I think at or below 48kbps it's acceptable to simulate the Stereo image and spend most bits to a single audio channel instead. Can the encoder use IS to emulate Stereo like PS do or it's too dumb for that?

Opus 1.1.1 is out

Reply #48
For me comp_orig_t14.wav seems a little bit better than the others, but just a very little. Transients are still annoying with headphones on.

Thanks. So it looks like you like less intensity stereo...

Quote
I have some questions on my mind, not completely related to the current improvements:

- Are you planning to resurrect the variable framesize encoding branch in the future or that was completely a dead end?

I'm not ruling it out, but it would probably require a non-trivial amount of work to understand why the previous attempt (i.e. what's in git now) didn't work.

Quote
- How does band folding works in Opus? Can it only fold low frequency bands to higher ones only, or is it possible to encode higher frequency bands and fold them down to lower ones (i don't know if it would result in any gain actually, I'm just curious)?

Folding is only from low to high. It's pretty rudimentary, but effective. High to low wouldn't bring anything and add a lot of complexity.

Quote
- I know you don't want to implement anything similar to HE-AACv2's Parametric Stereo for legal reasons, but how different is Intensity Stereo from Parametric Stereo?

Intensity stereo is just having the same audio on both channels with different intensity. Combined with the CELT principles, it's a bit more powerful than what MP3 has. Parametric stereo includes intensity stereo, but also controlling inter-channel phase difference (time of arrival), and inter-channel coherence (diffuse vs directional sound). I think the phase difference part is a stupid idea, so the main thing Opus doesn't have is the coherence part. It's not only because of patents, but also because it typically requires an additional filter that adds delay.

Quote
I think at or below 48kbps it's acceptable to simulate the Stereo image and spend most bits to a single audio channel instead. Can the encoder use IS to emulate Stereo like PS do or it's too dumb for that?

Well, the t14 file you said you preferred is actually the one with the least amount of intensity stereo and other stereo tricks.

Opus 1.1.1 is out

Reply #49
Quote
That being said, here's some samples I just generated at 32 kb/s VBR nominal (actual rate 38 kb/s on this file): http://www.jmvalin.ca/misc_stuff/tune_32kbps1/
I'd be interested in comments on which of these sounds best (comp_stereo48.wav is the original). I expect the Dire Straights segment to be the one most affected.


I couldn't hear any differences between the 32Kbps encoded files.