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 310464 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

Re: exhale - Open Source USAC encoder

Reply #75
Would it be possible for you to recollect your statistics for modes 2 - 4 with the latest Git master version? If you're short on time, doing that only for mode 3 would also be fine.

Hi, thank you for your reply. I have no problem with measuring the bitrate evolution.
I add mode 1 and mode 6 in the table (with exhale 1.03, before change) :

Code: [Select]
ENCODER   PRESET            |   BITRATE    |                 STEREO
                            |   FULL SET   |    MONO       LOW BITRATE    HIGH BITRATE
                            |   (91 CD)    |   (3 CD)         (4 CD)        (3 CD)
------------------------------------------------------------------------------------
FLAC CUEtools       -8      |  580.2 kbps  |   467.7 kbps   264.0 kbps   1028.7 kbps
------------------------------------------------------------------------------------
exhale 1.0.3 x64    mode 1  |   61.1 kbps  |    61.7 kbps    38.3 kbps     72.0 kbps
exhale 1.0.3 x64    mode 2  |   80.6 kbps  |    85.7 kbps    54.3 kbps     96.0 kbps
exhale 1.0.3 x64    mode 3  |   99.3 kbps  |   100.7 kbps    62.8 kbps    115.0 kbps
exhale 1.0.3 x64    mode 4  |  110.5 kbps  |   110.0 kbps    67.5 kbps    126.7 kbps
exhale 1.0.3 x64    mode 5  |  131.2 kbps  |   123.7 kbps    77.3 kbps    145.3 kbps
exhale 1.0.3 x64    mode 6  |  143.4 kbps  |   130.7 kbps    82.5 kbps    157.3 kbps

I'm currently running a batch encoding for mode 3. Twenty albums are already encoded. The trend is that stereo discs are now slightly smaller (-3 kbps on average for the first discs) and mono discs drop from 100.7 kbps to 81 kbps. It's still a bit higher than all competitor I tested but it's way better :)
I'll continue the test :)


Re: exhale - Open Source USAC encoder

Reply #77
Few words: my previous post is totally wrong. I still had 24 KHz resampling enabled (from my mode #1 test) so it explains why bitrate was also lower on stereo on the modified exhale version. I just launched a bew batch… Sorry

Re: exhale - Open Source USAC encoder

Reply #78
Quote
So it wont be bad idea to keep 44.1 kHz even for mode 2.
That's actually something I'm trying to figure out currently: What sounds better with mode 2 on average, 44.1 or 32 kHz sampling rate?
I think it would be useful to arrange a test in this topic with multiple listeners to test  CVBR mode 2 (~ 80 kbps) -  32 kHz vs 44.1 kHz on these samples

If somebody is interested feel free to comment  :) . Later I'll upload encoded and lossless samples.  Even a single result from one particular participant will be useful.



Re: exhale - Open Source USAC encoder

Reply #79
Here is a table for mode #2 to mode #4, comparing exhale 1.03 and the modified version with mono patch compiled by kode54:

Code: [Select]
                            |   BITRATE    |                 STEREO
ENCODER            PRESET   |   FULL SET   |    MONO       LOW BITRATE    HIGH BITRATE
                            |   (91 CD)    |   (3 CD)         (4 CD)        (3 CD)
------------------------------------------------------------------------------------
FLAC CUEtools       -8      |  580.2 kbps  |   467.7 kbps   264.0 kbps   1028.7 kbps
------------------------------------------------------------------------------------
exhale 1.0.3 x64    mode 2  |   80.6 kbps  |    85.7 kbps    54.3 kbps     96.0 kbps
exhale 1.0.3 mod    mode 2  |   78.5 kbps  |    65.0 kbps    51.0 kbps    102.0 kbps

exhale 1.0.3 x64    mode 3  |   99.3 kbps  |   100.7 kbps    62.8 kbps    115.0 kbps
exhale 1.0.3 mod    mode 3  |   97.8 kbps  |    84.7 kbps    61.8 kbps    119.7 kbps

exhale 1.0.3 x64    mode 4  |  110.5 kbps  |   110.0 kbps    67.5 kbps    126.7 kbps
exhale 1.0.3 mod    mode 4  |  108.9 kbps  |    92.3 kbps    66.5 kbps    132.0 kbps

Monophonic recordings seem now much more efficiently encoded. Most discs are marginally smaller with this patched version. Curiosity: the three “high bitrate discs” (which are three pure harpsichord recordings with exceptionnally high bitrate when encoded with FLAC) are now significantly bigger.

Re: exhale - Open Source USAC encoder

Reply #80
Hi, guruboolez

As of harpsichord, it was mentioned here.
https://hydrogenaud.io/index.php?topic=118888.msg982817#msg982817
Longer one: The CVBR algorithm already spends 25% more or less than the target bit-rate on some samples, see, e.g., AiZ's statistics above (Bachpsichord sample). That's already more than the ±20% range I initially planned for.


Re: exhale - Open Source USAC encoder

Reply #81
Quote
So it wont be bad idea to keep 44.1 kHz even for mode 2.
That's actually something I'm trying to figure out currently: What sounds better with mode 2 on average, 44.1 or 32 kHz sampling rate?
I think it would be useful to arrange a test in this topic with multiple listeners to test  CVBR mode 2 (~ 80 kbps) -  32 kHz vs 44.1 kHz on these samples

If somebody is interested feel free to comment  :) . Later I'll upload encoded and lossless samples.  Even a single result from one particular participant will be useful.
Indeed, since the two encoder configurations seem to sound almost identical to my ears and I'm not as sensitive to pre-echo artifacts as some other people on this forum, some "further ears" would be great. But before you start encoding, Igor, please use the same exhale code version as guruboolez to avoid confusion, and please wait for some more results on the following topic:

Here is a table for mode #2 to mode #4, comparing exhale 1.03 and the modified version with mono patch compiled by kode54:
Thanks very much! So it seems for 44.1 kHz sampling rate, the version you tested gets the bit allocation right now (on a 10-hour collection of rockish Genesis songs, I get e.g. 80-81 kbit/s on average with mode 2). Now, since Igor proposed to compare 44.1 and 32 kHz sampling rate for mode 2, would you be so kind and run a final batch to collect statisticcs for mode 2 with 32 kHz input sampling rate?  O:) Just to verify that the bit-rate statistics are roughly the same.

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

Re: exhale - Open Source USAC encoder

Reply #82
would you be so kind and run a final batch to collect statisticcs for mode 2 with 32 kHz input sampling rate?  O:) Just to verify that the bit-rate statistics are roughly the same.
I'll do this! Expect partial results in two hours (then I'll leave)  and final later today.

N.B. I'm in for the listening test :)

Re: exhale - Open Source USAC encoder

Reply #83
The batch is still running. On average bitrate is 1 kbps lower by using 32 KHz resampling. Final results later.



Re: exhale - Open Source USAC encoder

Reply #86
I have the results for the 32KHz resampled mod2. Bitrate is 0.8 kbps higher on 32 KHz.
Resampling was done with Sox mod on foobar2000, mode normal, with 95% passband.
Weird thing: many files are unlistenable on fb2k. Good files are labeled as AAC / USAC while "corrupted" ones appear as M4A. No codec found on property box. I encoded some files again: one is cured (bitrate unchanged), the other not. I also had 3 or four blue screen. Maybe faulty RAM?

I'll try with john33 Compiles.

Re: exhale - Open Source USAC encoder

Reply #87
Thanks, m14u and guruboolez! Strange, I haven't observed a single blue screen on Windows 7-10 since 2010 or so. And the exhale application shouldn't cause such severe issues. True, sounds like a hardware defect. But for testing, have you tried this Wiki fix?

Anyway, your reported 0.8 kbit/s bit-rate increase when switching from 44.1 to 32 kHz sampling rate is consistent with m14u's and my own findings, on average the three of us get almost exactly 1 kbit/s bit-rate difference. Which is small enough for me to give the comparative listening test a go.

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

Re: exhale - Open Source USAC encoder

Reply #88
N.B. I'm in for the listening test :)
Great.

Folks,
I have following points in my mind for this exhale@80 kbps '32 kHz  vs 44.1kHz' test :

- 12-15 samples
- No stricts rules and listener is free to  submit his/her own results in format he/she wants while it's a valid result of a blind test.  There is no strict need for statistical significance ( p<0.05 or any other) , just  ratings of codecs as a result of a blind test would be already fine.
- ABC/HR  Java  of any other suitable application for such purpose.  Choose yours

Suggestions...



Re: exhale - Open Source USAC encoder

Reply #90
I have the results for the 32KHz resampled mod2. Bitrate is 0.8 kbps higher on 32 KHz.
Resampling was done with Sox mod on foobar2000, mode normal, with 95% passband.
I have the same issue with exhale on 32 kHz material.
Also, when SoX 32 kHz passband is gradually increased from 95% to 99% the amount of files on which exhale produces broken output increases too.


Chris,
I will PM to you some of these files which exhale can't digest  .WAV produced with SoX 32 kHz,  99% passband. ( other encoders don't have this issue)

SoX  with parameters 32 kHz, passband 95% is more stable for exhale but also a bit  'too lowpassed' as exhale capable to code ~98-99% passband of 32 kHz sampling rate.
Let us know whether we can proceed with 32 kHz/44.1 kHz test or should we wait for a fix. If an answer is to proceed then I guess we should go with  SoX 98-99% passband for 32 kHz resampling.

Re: exhale - Open Source USAC encoder

Reply #91
Ouch, that's not good. Then we should definitely wait with the 32-vs-44.1 test until we have a solution (or at least an explanation) for this.

Thanks for PMing some files to reproduce this. For clarification, are you guys using SoX on-the-fly in foobar2000 while converting to xHE-AAC? And Igor, m14u, do you also observe crashes like guruboolez did?

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

Re: exhale - Open Source USAC encoder

Reply #92
Chris,

Yes, I was  using SoX on-the-fly. Issue is gone when SoX isn't used on-the-fly.
As of crashes, I haven't them on my laptop.

Cheers.

Re: exhale - Open Source USAC encoder

Reply #93
i am use ffmpeg -ar. linux x64.
failed to beat the sox in the matter of resampling... :)
add report "bit rate" and "maximum  bit rate" by mediainfo.

Re: exhale - Open Source USAC encoder

Reply #94
OK, thanks for the info. Not sure why this happens, but it seems to be related to exhale's way of handling stdin when the input is provided relatively slowly (I assume SoX runs slower when the passband is increased from 95 to 99%).

Anyway, I just commited another stereo cleanup (Git eceadce2) which hopefully completes the stereo code. I'm still in the process of re-encoding my 10-hour Genesis testset, but so far things seem OK for a listening test to start with that intermediate version. While it's running, I'll take a look into adding some automatic resampling to the exhale application for modes lower than 3.

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

Re: exhale - Open Source USAC encoder

Reply #95
Updated.

1.0.01.0.11.0.21.0.3eceadce2
41_30sec109110112115114
finalfantasy10110010098104
ATrain106106110114113
BigYellow109110109105106
FloorEssence105106105107109
macabre9695100107107
mybloodrusts97971019595
Quizas103104107110110
VelvetRealm106105108114113
Amefuribana100100101105105
Trust99100102101101
Waiting103103106109110
experiencia107108104101103
HearttoHeart105105108103102
Tom'sDiner115115102104110
1.0.01.0.11.0.21.0.3eceadce2
castanets106107100106105
fatboy_30sec111112111115115
eig99101102114113
Bachpsichord106105111117121
Enola110110108106107
trumpet101100106105105
applaud104106107107107
velvet108109109107107
Linchpin9394959293
spill_the_blood102102106108108
female_speech104105979786
French_Ad104104101103102


Re: exhale - Open Source USAC encoder

Reply #97
Thanks. I just fine-tuned the mean bit-rate constants for CVBR mode 1 so that, hopefully, both 22.05 and 24 kHz input should result in roughly the same average bit-rates (Git ea74e99). The change also affects modes 2-4, but very rarely. For example, in AiZ's two tables, the only samples for which the bit-rates change are Tom'sDiner (from 110 to 107) and female_speech (from 86 to 85). So no need for re-encoding.

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

Re: exhale - Open Source USAC encoder

Reply #98
I am now publicly listing my foobar2000 decoder component, which will always support USAC, and with a little hackery, should take priority for normal AAC as well, just to verify its decoder is sound for all purposes, except for the rare cases you may need peaks exceeding ±1.0.

This will effectively require foobar2000 version 1.5.4.

I'm also taking an opportunity to report on a possible bug, which won't affect exhale encoded files, but will affect anything encoded with FFmpeg.

The elst chunk is currently interpreted to always be in sample time scale, and disregards the time scale specified in the mvhd box. This is acceptable for exhale encoded files, as they always write a time scale equivalent to the sample rate.

This is unacceptable for FFmpeg encoded files, as FFmpeg always writes MP4/MOV time scale in units of 1000, or milliseconds. This also means that FFmpeg encoded files will not be perfectly gapless, either, as they'll either truncate or round all cue points to the nearest millisecond, even when writing audio files. This also goes for simply processing and rewriting your MOV/MP4 containers with FFmpeg, without doing any additional transcoding.

foobar2000 currently works around an issue with this by disregarding elst blocks when my packet decoder is missing, but this is not correct, either. Even if foobar2000 corrects this, FFmpeg is still doing something rather silly here, in not special casing audio-only streams in its MOV/MP4 container encoder.

Re: exhale - Open Source USAC encoder

Reply #99
Thanks very much, kode54, for the info! Since this thread has already gotten surprisingly long, let me try to summarize a few things for newly arriving readers. Let me know if I forgot anything.

The current stable version of exhale is still 1.0.3, but the new Git version mentioned in the previous post might result in slightly improved
audio quality at the lower bit-rates (CVBR modes 1-4). I also referenced this thread and another web page on the xHE-AAC format itself on
exhale's Wiki page now.

As reported by kode54 yesterday, version 1.5.4 of the audio playback and management software foobar2000 is now available at
https://www.foobar2000.org/download

kode54's AAC packet decoder, allowing gapless playback of xHE-AAC files in foobar2000 version 1.5.4 or newer, can be found at
https://www.foobar2000.org/components/view/foo_pd_aac

I also found an announcement of an exhale GUI, as an alternative to the foobar2000 solution, for easy file/folder-wise encoding:
https://moisescardona.me/collaborating-in-the-exhale-project-part-2

The above options are mostly for the Windows operating system. There are, however, also some options for Linux users, as summarized
by andrew.46 in this post.

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