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: exhale - Open Source USAC encoder (Read 137466 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: exhale - Open Source USAC encoder

Reply #1050
Meanwhile I tried Windows 10 with Snapdragon 850 and the error doesn't show up, it seems confined to Windows for Intel processors. I'll try with 32-bit processors later.

Re: exhale - Open Source USAC encoder

Reply #1051
Meanwhile I tried Windows 10 with Snapdragon 850 and the error doesn't show up, it seems confined to Windows for Intel processors. I'll try with 32-bit processors later. The executable was compiled for x86.

Re: exhale - Open Source USAC encoder

Reply #1052
Sorry, Ziengaze, I cannot reproduce the phenomenon you're observing. All Windows compiles I tried (John's from post 1025 and my own), from the most recent commit on GitLab, produced 145.7 kbps on that 2L-125_stereo... audio file. Which Windows compiler are you using exactly, and on which Windows version exactly?

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

Re: exhale - Open Source USAC encoder

Reply #1053
Built on windows 10 21h1 using msys2 with gcc 11.3.0.

Re: exhale - Open Source USAC encoder

Reply #1054
So Ziengaze and I have done several other tests. All other compilers mentioned above, plus clang 14, have no problem compiling exhale. Also, the faulty compile only has problems with CVBR modes 5 and higher (non-SBR) as well as f and higher (SBR), which allowed us to trace the issue to very few changes made in exhale's source file lib/exhaleEnc.cpp. The strange thing is that NetRanger's last compile in this post seems to be fine, while Ziengaze's compile with the same gcc version seems faulty.

We just can't figure out what the problem is. Any help is greatly appreciated.

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

Re: exhale - Open Source USAC encoder

Reply #1055
Also, the faulty compile only has problems with CVBR modes 5 and higher (non-SBR) as well as f and higher (SBR), which allowed us to trace the issue to very few changes made in exhale's source file lib/exhaleEnc.cpp.

That sounds like a job for unit testing.

Re: exhale - Open Source USAC encoder

Reply #1056
Do decode from the command-line, you can use an FFmpeg build with the latest FDK-AAC included. If you know how to compile FFmpeg yourself with the "non-free" extensions enabled, I recommend you do that. If not, I found the following page which links to precompiled binaries for Windows:

https://www.reddit.com/user/VeritablePornocopium/comments/ccilei/ffmpeg_with_libfdk_aac_for_windows_x64/

Under "Static builds - ffmpeg.exe" you can find a still working Mega.nz link. I haven't tried the downloaded executable yet and I'm not responsible for it (so use it at your own risk!), but it shows it was built with --enable-libfdk-aac when run without arguments from the command prompt.

The official ISO/MPEG reference decoder for USAC is closed-source and not publicly available.

Chris

Is there any option to include the exhale source encoder in ffmpeg as a non-free FDK-AAC build?
This would prove very useful since ffmpeg is the most convenient transcoder tool out there.

Re: exhale - Open Source USAC encoder

Reply #1057
In the early days of exhale development, someone already mentioned this in FFmpeg ticket #8411, but I decided this is too much work for me, and the FFmpeg developers don't seem to be interested very much (judging from the response to that ticket). Others would have to write exhale wrapper code for FFmpeg.

It's also not trivial since I believe exhale would have to be run in a two-pass fashion, with the first pass required to collect frame loudness information and the second pass for the actual audio encoding using the loudness data from the first pass. The only other xHE-AAC encoding plug-in available for FFmpeg that I'm aware of, the one by MainConcept and Fraunhofer IIS, requires such a two-step approach, as shown in Sec. 4. Plugin Usage of their User Guide.

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

Re: exhale - Open Source USAC encoder

Reply #1058
Are there any more updates planned regarding quality?
Would you consider it almost transparent at 192kbps? I think in the forum test. the Apple LC-AAC had a score around 4.94

 

Re: exhale - Open Source USAC encoder

Reply #1059
There are no updates planned, the latest exhale version achieves a mean opinion score of about 4.9 with CVBR preset 9, see this post and the following one for a blind test of a fix which was published in exhale later. And 4.9 was my goal from the start.

There is, however, an undocumented command-line which you can use to turn off the USAC noise filling functionality at CVBR preset 9 (it doesn't make any sense at lower-bitrate presets):

For 22 and 44.1 kHz input: exhale.exe 9 n 43 input.wav output.m4a
For 24 and 48.0 kHz input: exhale.exe 9 n 50 input.wav output.m4a

My ears aren't good enough anymore to tell a difference at ~192 kbps, but if someone is really interested in getting the maximum audio quality out of exhale at this bit-rate, feel free blind-test the default command-line against the above one and report whether there is any improvement by the latter on any audio content. If so, I might change CVBR preset 9 accordingly.

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