Hydrogenaudio Forums

Lossy Audio Compression => Opus => Topic started by: jmvalin on 2019-04-13 02:41:44

Title: Opus 1.3.1
Post by: jmvalin on 2019-04-13 02:41:44
I'm happy to announce Opus 1.3.1. It is a minor release that fixes an issue with the analysis on files with digital silence (all zeros), especially on x87 builds (mostly affects 32-bit builds). It also includes two new features:

Source code: opus-1.3.1.tar.gz (https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz)
Win32 binaries: opus-tools-0.2-opus-1.3.1.zip (https://archive.mozilla.org/pub/opus/win32/opus-tools-0.2-opus-1.3.1.zip)

Please report any problem you encounter. Enjoy!
Title: Re: Opus 1.3.1
Post by: The Link on 2019-04-13 10:00:58
Has the gapless playback issue from here (https://hydrogenaud.io/index.php/topic,116605.0.html) also been taken care of?
Title: Re: Opus 1.3.1
Post by: magicgoose on 2019-04-13 13:48:33
Can anyone please elaborate a bit about the practical benefits brought by this new feature?
> A new OPUS_GET_IN_DTX query to know if the encoder is in DTX mode (last frame was either a comfort noise frame or not encoded at all)
Title: Re: Opus 1.3.1
Post by: Sajadi on 2019-04-13 14:21:05
Thanks for the update, great as usual :)
Title: Re: Opus 1.3.1
Post by: jmvalin on 2019-04-13 15:43:08
Can anyone please elaborate a bit about the practical benefits brought by this new feature?
> A new OPUS_GET_IN_DTX query to know if the encoder is in DTX mode (last frame was either a comfort noise frame or not encoded at all)

This is only useful is you're writing a VoIP/videoconferencing application and you've asked Opus to stop transmitting when there's no speech.
Title: Re: Opus 1.3.1
Post by: Makaki on 2019-04-14 06:32:36
No love for Windows 64-Bit?
Title: Re: Opus 1.3.1
Post by: Adzz on 2019-04-14 10:55:26
Win32 binaries: opus-tools-0.2-opus-1.3.1.zip (https://archive.mozilla.org/pub/opus/win32/opus-tools-0.2-opus-1.3.1.zip)
Tool: libopus 1.3-26-ge85ed772, libopusenc 0.2.1-2-g9cb17c6

Small issue but it looks kinda messy. Older version is fine: libopus 1.3, libopusenc 0.2.1
Title: Re: Opus 1.3.1
Post by: sveakul on 2019-04-14 18:22:22
No love for Windows 64-Bit?

There is a 64-bit (and 32-bit) alternate build in the package here:  https://github.com/Chocobo1/opus-tools_win32-build/releases (https://github.com/Chocobo1/opus-tools_win32-build/releases)
Title: Re: Opus 1.3.1
Post by: seventhstar on 2019-04-14 20:44:40
Thanks!!
Title: Re: Opus 1.3.1
Post by: Makaki on 2019-04-14 20:51:13
There is a 64-bit (and 32-bit) alternate build in the package here:  https://github.com/Chocobo1/opus-tools_win32-build/releases (https://github.com/Chocobo1/opus-tools_win32-build/releases)

IDK, if there's any advantage, but VS2019 is available.
Title: Re: Opus 1.3.1
Post by: kode54 on 2019-04-15 04:29:39
One advantage: It doesn't support compiling for XP.
Title: Re: Opus 1.3.1
Post by: VEG on 2019-04-16 20:30:16
Actually, it supports compiling for XP using VS2017 toolkit. Though it is deprecated in VS2019.
Title: Re: Opus 1.3.1
Post by: GeezerHz on 2019-04-18 18:47:37
There is a 64-bit (and 32-bit) alternate build in the package here:  https://github.com/Chocobo1/opus-tools_win32-build/releases (https://github.com/Chocobo1/opus-tools_win32-build/releases)
The 64-bit version crashes on Windows 7 x64 when trying to encode a file in all cases.
Code: [Select]
opusenc test.wav test.opus
Crash!
(https://i.imgur.com/dnpgH4R.png)
Title: Re: Opus 1.3.1
Post by: sveakul on 2019-04-18 19:10:38
Do you have the VS2017 redist installed?  You might also want to try the 64-bit build here:
https://moisescardona.me/wp-content/uploads/2019/04/opus-tools-x64-2019-04-13-using-libopus-1.3.1.zip (https://moisescardona.me/wp-content/uploads/2019/04/opus-tools-x64-2019-04-13-using-libopus-1.3.1.zip)

 
Title: Re: Opus 1.3.1
Post by: GeezerHz on 2019-04-18 19:28:55
Do you have the VS2017 redist installed?  You might also want to try the 64-bit build here:
https://moisescardona.me/wp-content/uploads/2019/04/opus-tools-x64-2019-04-13-using-libopus-1.3.1.zip (https://moisescardona.me/wp-content/uploads/2019/04/opus-tools-x64-2019-04-13-using-libopus-1.3.1.zip)
I do have the MSVC17 runtimes. Just downloaded and installed the latest just in case. Still crashes. I'll try building my own 64-bit.
Title: Re: Opus 1.3.1
Post by: lvqcl on 2019-04-18 21:24:41
Both 32-bit and 64-bit encoders from Chocobo1 crash here.
If you click on "Build Log" link on that github page, you'll see that it was compiled with "/arch:AVX" option to compile opus:

https://ci.appveyor.com/project/Chocobo1/opus-tools-win32-build/builds/23820862#L210
https://ci.appveyor.com/project/Chocobo1/opus-tools-win32-build/builds/23820862#L649

So it will crash on pre-AVX processors.
Title: Re: Opus 1.3.1
Post by: lvqcl on 2019-04-18 21:50:52
It seems that opus_functions.cmake from opus library is buggy...
This part doesn't make any sense for me:
Code: [Select]
  if(MSVC) # To avoid warning D9025 of overriding compiler options
    if(AVX_SUPPORTED) # on 64 bit and 32 bits
      add_definitions(/arch:AVX)
    elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # if AVX not supported then set SSE flag
      if(SSE4_1_SUPPORTED OR SSE2_SUPPORTED)
        add_definitions(/arch:SSE2)
      elseif(SSE1_SUPPORTED)
        add_definitions(/arch:SSE)
      endif()
    endif()
  endif() 
Title: Re: Opus 1.3.1
Post by: GeezerHz on 2019-04-18 21:56:12
I'm just trying to figure out how to make it. There is NO documentation. I have Visual Studio, and I can make opus-1.3.1, but that doesn't produce opusenc and opusdec. When I try to build opus-tools-0.2 I get errors that it can't find ogg/ogg.h, but there is no such file in any of the sources I can find.

Why can't they just document how to build it?
Title: Re: Opus 1.3.1
Post by: NetRanger on 2019-04-18 23:50:08
Opus-tools v0.2-3-gf5f571b (using libopus 1.3.1-1-g296d556d)
Built on April 18, 2019, GCC 7.4.0 (32bit)/8.3.0 (64bit)

https://git.xiph.org/?p=opus-tools.git;a=summary
https://git.xiph.org/?p=libopusenc.git;a=summary
https://git.xiph.org/?p=opus.git;a=summary
https://git.xiph.org/?p=opusfile.git;a=summary
Title: Re: Opus 1.3.1
Post by: Em on 2019-04-20 00:00:18
Why can't they just document how to build it?
The appveyor (rightmost build passing) on the opus-codec.org development page kinda is that, just not really what some imagine. To build opus-tools you need to also build the libraries for Flac, LibOgg, Opus, LibOpusEnc, Opusfile, and OpenSSL (1.0.2-stable). You'll also need perl and nasm for the OpenSSL libraries (it eventually also uses nmake on the command line) and to copy some of the code from other repositories into multiple other repositories' include folder (like ogg\ogg.h in LibOgg). It's a fun little adventure.
Title: Re: Opus 1.3.1
Post by: theislander on 2019-04-24 06:40:47
I'm having trouble building it with cmake. So I downloaded 1.3.1 source code, then "cd ~/Downloads/opus-1.3.1", "mkdir _cmake", "cd _cmake", "cmake .." - error, "CMake Error at CMakeLists.txt:19 (include): include could not find load file: opus_buildtype.cmake"
Title: Re: Opus 1.3.1
Post by: theislander on 2019-04-24 06:51:42
For some reason that file is in git, but not in tar.gz you can download from the release page. Just checked out v1.3.1 of xiph.org/opus.git and it built just fine (opus_buildtype.cmake is there)
Title: Re: Opus 1.3.1
Post by: jmvalin on 2019-04-26 16:18:47
For some reason that file is in git, but not in tar.gz you can download from the release page. Just checked out v1.3.1 of xiph.org/opus.git and it built just fine (opus_buildtype.cmake is there)

Yeah, that file was added at the last minute, but it didn't get added to the list of things to include in the tarball releases. That's now fixed for next time. Thanks for reporting the problem.
Title: Re: Opus 1.3.1
Post by: NetRanger on 2019-04-26 17:27:14
Opus-tools v0.2-3-gf5f571b (using libopus 1.3.1-2-g86e5f5ea)
Built on April 26, 2019, GCC 7.4.0 (32bit)/8.3.0 (64bit)

https://git.xiph.org/?p=opus-tools.git;a=summary
https://git.xiph.org/?p=libopusenc.git;a=summary
https://git.xiph.org/?p=opus.git;a=summary
https://git.xiph.org/?p=opusfile.git;a=summary
Title: Re: Opus 1.3.1
Post by: fabiorug on 2019-05-27 21:01:16
Opus encoder both the native ffmpeg and opusenc are improving fast. 24 kbps has little artifacts. Only bass a bit lacks punch at various bitrates, but they are nightly build, you can't pretend high quality on music. Do they import code from one encoder to another? Or is hard work only? How does it work? I don't know nothing other that open source developers run tests.
Title: Re: Opus 1.3.1
Post by: fabiorug on 2019-05-28 12:51:43
Opus encoder both the native ffmpeg and opusenc are improving fast. 24 kbps hasn't too artifacts. Only bass a bit lacks punch at various bitrates, but they are nightly build, you can't pretend high quality on music. Do they import code from one encoder to another? Or is hard work only? How does it work? I don't know nothing other that open source developers run tests.
Title: Re: Opus 1.3.1
Post by: Nott on 2019-06-07 10:07:42
If I want to run the latest opusenc, should I compile libopus 1.3.1 or libopus 1.3-rc2?

I'm looking to the one that can do the highest quality encoding :P
Title: Re: Opus 1.3.1
Post by: NetRanger on 2019-06-07 18:14:19
Opus-tools v0.2-4-g2e62a7c (using libopus 1.3.1-4-gad8fe90d)
Built on June 05, 2019, GCC 9.1.0

https://git.xiph.org/?p=opus-tools.git;a=summary
https://git.xiph.org/?p=libopusenc.git;a=summary
https://git.xiph.org/?p=opus.git;a=summary
https://git.xiph.org/?p=opusfile.git;a=summary
Title: Re: Opus 1.3.1
Post by: Nott on 2019-06-08 10:50:04
Opus-tools v0.2-4-g2e62a7c (using libopus 1.3.1-4-gad8fe90d)
Built on June 05, 2019, GCC 9.1.0

https://git.xiph.org/?p=opus-tools.git;a=summary
https://git.xiph.org/?p=libopusenc.git;a=summary
https://git.xiph.org/?p=opus.git;a=summary
https://git.xiph.org/?p=opusfile.git;a=summary

I'm using linux. I'm trying to compile it from source but I am struggling... I compiled both opus-1.3.1.tar.gz and opus-tools-0.2.tar.gz but opus-tools fails because of some kind of opusfile? Yeah I'm dumb :/

Shouldn't opus-tools be all I needed to compile?
Title: Re: Opus 1.3.1
Post by: lvqcl on 2019-06-08 15:00:38
Apparently opus-tools requires some additional libraries (opus-tools, libopusfile, libogg, ...).
Title: Re: Opus 1.3.1
Post by: foxyshadis on 2019-06-16 12:39:18
Why can't they just document how to build it?
The appveyor (rightmost build passing) on the opus-codec.org development page kinda is that, just not really what some imagine. To build opus-tools you need to also build the libraries for Flac, LibOgg, Opus, LibOpusEnc, Opusfile, and OpenSSL (1.0.2-stable). You'll also need perl and nasm for the OpenSSL libraries (it eventually also uses nmake on the command line) and to copy some of the code from other repositories into multiple other repositories' include folder (like ogg\ogg.h in LibOgg). It's a fun little adventure.
If you switch from Release-HTTP to Release you can avoid all the godawful OpenSSL crap. I have no intention of ever encoding from a URI, so that's my default.

I'm using linux. I'm trying to compile it from source but I am struggling... I compiled both opus-1.3.1.tar.gz and opus-tools-0.2.tar.gz but opus-tools fails because of some kind of opusfile? Yeah I'm dumb :/

Shouldn't opus-tools be all I needed to compile?
Opus-tools is just the final runtimes. Pretty much everything in Linux is structured with separate lib* vs *-tools, you always need the libs. I don't know what distro you run, but all of the major distros have the latest versions of the whole suite built in, so you shouldn't even need to build anything unless you need a bleeding edge feature (which there aren't any, Opus has been pretty quiet since the last release). Alternately, you can just yum install or apt-get opus-devel which will download all of its dependencies for an easy build.

Building from raw git is more for people who are modifying things in some way. Grabbing a release is the way to go if you aren't a developer.
Title: Re: Opus 1.3.1
Post by: foxyshadis on 2019-06-17 00:17:18
If you switch from Release-HTTP to Release you can avoid all the godawful OpenSSL crap. I have no intention of ever encoding from a URI, so that's my default.
My bad, in opusfile it's Release-NoHTTP rather than Release.
Title: Re: Opus 1.3.1
Post by: krcroft on 2019-06-17 00:51:09
Why can't they just document how to build it?
The appveyor (rightmost build passing) on the opus-codec.org development page kinda is that, just not really what some imagine. To build opus-tools you need to also build the libraries for Flac, LibOgg, Opus, LibOpusEnc, Opusfile, and OpenSSL (1.0.2-stable). You'll also need perl and nasm for the OpenSSL libraries (it eventually also uses nmake on the command line) and to copy some of the code from other repositories into multiple other repositories' include folder (like ogg\ogg.h in LibOgg). It's a fun little adventure.

Yes, I slammed into many of these, and tried to help the devs here:
https://github.com/xiph/opusfile/issues/10

If you skim the open issues for all of the opus, ogg, and vorbis stack of code you will see a common theme of build issues because of subtle problems like this. 

xiph really need someone focusing on integration and release, who can kick the tires on a handful of platforms and build tools (mingw, msys, latest gcc stack, older gcc stack, clang/osx, etc) andd wring out these issues.

Likewise, they could provide a script to build and link "latest and greatest" opus-tools and vorbis-tools.
Title: Re: Opus 1.3.1
Post by: SPV82 on 2019-06-22 17:16:19
I'm using linux. I'm trying to compile it from source but I am struggling... I compiled both opus-1.3.1.tar.gz and opus-tools-0.2.tar.gz but opus-tools fails because of some kind of opusfile? Yeah I'm dumb :/

Shouldn't opus-tools be all I needed to compile?

You can build statically linked opus-tools using this bash script: https://gist.github.com/spvkgn/60c12010d4cae1243dfee45b0821f692
SimplePortal 1.0.0 RC1 © 2008-2019