|
Post by Kohlrabi on Apr 24, 2014 15:21:17 GMT
I think it would be better to resample everything to 48kHz (using SoX) first, and then send it to the encoders, to remove the performance of the Opus resampler from the equation.
OTOH, the "Opus resampler" is the one a normal user will use when encoding his files using opustools...
Any opinions?
|
|
IgorC
Administrator
Posts: 41
|
Post by IgorC on Apr 24, 2014 18:52:09 GMT
Kohlrabi,
Kamedo2 and me talked about it. Opus built-in resampler is what an average user will use. Some advanced users will go with SoX. In my opinion both resamplers are fine and won't make any measurable difference.
|
|
|
Post by kamedo2 on Apr 29, 2014 17:27:30 GMT
Decoding capabilities of MP3, AAC, Opus, Ogg decoders; Codec
| Decoders
| 16 bit
| 24 bit
| 32 bit
| Float 32 bit
| MP3
| Madplay 0.15.1
| OK
| OK
| OK
| NG
| AAC
| Faad2 V2.7
| OK
| OK
| OK
| OK
| Opus
| Opusdec 0.1.8
| OK
| NG
| NG
| OK
| Ogg
| Oggdec V1.9.7
| OK
| OK
| NG
| OK
|
OggDec's 32bit integer output is filled with 0x80000000. Only the latest version of opusdec supports float output. SoX cannot output real float wav and SoX actually works internally on int32. My current plan: 1. References Lossless source 44.1kHz/16bits -> SoX 48kHz/32bits (gain -3dB) 2. AAC/MP3/Vorbis source 44.1 kHz/16 bits -> lossy encoder -> lossy decoder .wav 44.1kHz/24 bits -> SoX 48kHz/32bits (gain -3dB) 3. Opus source 44.1 kHz/16 bits -> Opus (internal 48 kHz) -> lossy decoder .wav 48kHz/32 bits float -> SoX 48kHz/24bits -> SoX 48kHz/32bits (gain -3dB)
|
|
IgorC
Administrator
Posts: 41
|
Post by IgorC on May 1, 2014 17:47:42 GMT
Great, the chains are optimal.
The last step should be a bit depth reduction as 'ABC/HR for Java' supports 16 bits exclusively.
|
|
|
Post by kamedo2 on May 1, 2014 18:48:46 GMT
The comparison of three gain normalizer. The black bar on the left is the one used in ABC/HR (unweighted flat filter). The orange solid bar on the center is another unweighted flat filter. The blue bar on the right is the ReplayGain filter (Yulewalk filter). The bar length is the volume of the encoded sound, relative to the original sound in dB.  Like we can see, the differences of the normalization methods are very small. The commandline is; rem 1. Reference Lossless bin\sox "%InputWavFile%" -b 16 "%RawFile%.int16.wav" gain -3 rate -v 48000
rem 2. MP3/AAC/Opus/Ogg Vorbis bin\lame3.99.5\lame -V5 -S "%InputWavFile%" "%OutputFile%%MP3Name%" bin\madplay -q -b 24 -o "%TemporaryFile%.mp3.int44k.wav" "%OutputFile%%MP3Name%" bin\sox "%TemporaryFile%.mp3.int44k.wav" -b 16 "%MP3Decode%.int16.wav" trim 1105s gain -3 rate -v 48000
bin\qaac_2.36\qaac --cvbr 96 -o "%OutputFile%%AACName%" "%InputWavFile%" bin\faad -b 2 -q -o "%TemporaryFile%.aac.int44k.wav" "%OutputFile%%AACName%" bin\sox "%TemporaryFile%.aac.int44k.wav" -b 16 "%AACDecode%.int16.wav" trim 1088s gain -3 rate -v 48000
bin\opus-tools-0.1.8-win32\opusenc --bitrate 96 "%InputWavFile%" "%OutputFile%%OpusName%" bin\opusdec --rate 48000 --float --quiet "%OutputFile%%OpusName%" "%TemporaryFile%.opus.flo48k.wav" bin\sox "%TemporaryFile%.opus.flo48k.wav" -b 24 -e signed "%TemporaryFile%.opus.int48k.wav" bin\sox "%TemporaryFile%.opus.int48k.wav" -b 16 -e signed "%OpusDecode%.int16.wav" gain -3
bin\venc603 -q2.2 %InputWavFile% "%OutputFile%%OggName%" bin\oggdec -b 3 "%OutputFile%%OggName%" --wavout "%TemporaryFile%.ogg.int44k.wav" bin\sox "%TemporaryFile%.ogg.int44k.wav" -b 16 "%OggDecode%.int16.wav" gain -3 rate -v 48000
|
|
IgorC
Administrator
Posts: 41
|
Post by IgorC on May 1, 2014 20:11:24 GMT
All three gain normalizations have the differences of less than 0.1 dB. It's bellow of JND (just noticeable difference). Some related topic Just noticeable difference So it's safe to use any of those normalizers.
|
|
|
Post by kamedo2 on May 3, 2014 7:37:18 GMT
Another comparison of three gain normalizers.  Now, all decodes are in 24 bits accuracy. If no problem exists, I'll move on to the final stage of package preparations.
|
|
|
Post by kamedo2 on May 4, 2014 10:06:29 GMT
What should we do with the lowest anchor? FAAC cannot go below 64kbps, and the 64kbps have 5kHz LPF. Using -cutoff 11000 increases the bitrate. libvo_aacenc ignores cutoff option and uses 5kHz LPF.
|
|
|
Post by win32vb on May 6, 2014 2:31:46 GMT
How about using Opus for the low anchor? You can force Opus to have a 20 kHz high end at any bitrate, and it is quite conservative already about dropping the high end as you lower the bitrate.
|
|
|
Post by kamedo2 on May 6, 2014 13:39:08 GMT
It might be a good idea. I'll try that. Opus around 32kbps have 20kHz cutoff. If it's too good to be the lowest anchor, we can lower the bitrate so that the cutoff will be 12kHz.
Any other ideas about the lowest anchor? The mid-low anchor is FAAC 96kbps and have a 11kHz cutoff.
|
|
|
Post by Kron on May 7, 2014 22:57:41 GMT
you can use the option --set-ctl-int 4004=1104 to force max bandwidth to SWB (12kHz) in opusenc ...=1103 for wideband 8kHz if you want to push it. This way you prevent opus from using any higher bandwidth. It's still free to choose a lower one though.
|
|
|
Post by kron on May 8, 2014 17:42:30 GMT
--set-ctl-int 4008=1105 to force fullband even at low birates
|
|
|
Post by kamedo2 on May 10, 2014 0:07:45 GMT
I tried Opus 32 kbps and 28 kbps for the lowest anchor.
I think Opus 32 is bad enough for the lowest anchor if the sample is average music. However, Opus is too good for speech samples and some people will find it difficult to ABX. It's far better than FAAC 96 kbps. It has 20kHz cutoff. Opus 28 is bad enough too, and speech samples are somewhat degraded. It has 12kHz cutoff, which is comparable to the 10 kHz of FAAC 96 kbps.
Thank you Kron but I do not feel like we should use options many people do not use. Any other opinion for the lowest anchor?
|
|
|
Post by Kron on May 10, 2014 13:08:00 GMT
How about l3enc? For old times' sake
|
|
|
Post by kamedo2 on May 10, 2014 15:15:03 GMT
|
|