xiph / vorbis

Reference implementation of the Ogg Vorbis audio format.
BSD 3-Clause "New" or "Revised" License
467 stars 188 forks source link

Merging aoTuV encoder improvements #102

Open FabioPedretti opened 11 months ago

FabioPedretti commented 11 months ago

It would be nice if you could merge aoTuV Encoder improvements inside xiph libvorbis.

aoTuV was extensively tested at hydrogenaud.io and found to be the best vorbis encoder.

tdaede commented 11 months ago

A considerable portion of the original aoTuV improvements have already been merged.

This would need some research about what remaining improvements (if any) are still outstanding.

FabioPedretti commented 11 months ago

According to the CHANGES file, previous aoTuV improvements were merged in 1.1.0 in 2004:

libvorbis 1.1.0 (2004-09-22) -- "Xiph.Org libVorbis I 20040629"

  • merges tuning improvements from Aoyumi's aoTuV with fixups

with a fixup in:

libvorbis 1.3.2 (2010-11-01) -- "Xiph.Org libVorbis I 20101101 (Schaufenugget)"

  • vorbisenc: Back out an [old] AoTuV HF weighting that was first enabled in 1.3.0; there are a few samples where I really don't like the effect it causes.

Since then in aoTuV there were the improvements listed in https://raw.githubusercontent.com/AO-Yumi/vorbis_aotuv/master/aoTuV_technical.txt

FabioPedretti commented 11 months ago

A considerable portion of the original aoTuV improvements have already been merged.

This would need some research about what remaining improvements (if any) are still outstanding.

For a easier review of the changes I opened pull request #103.

sergeevabc commented 5 months ago

Recent message from HydrogenAudio thread says:

There is something wrong about Lancer mod 2021-05-11 hosted on RareWares. It is unable to correctly encode WAV when its sampling rate is less or equal to 11025 Hz: SSE2 version outputs silence, SSE3 outputs heavily distorted sound. All other Vorbis encoders (original, Aotuv, Venc aka Aotuv 2021-03-20, FFMPEG's libvorbis) do the job as expected.

Samples: Lancer vs other Vorbis.zip

$ mediainfo in.wav

General
Complete name                            : in.wav
Format                                   : Wave
Format settings                          : PcmWaveformat
File size                                : 361 KiB
Duration                                 : 16 s 780 ms
Overall bit rate mode                    : Constant
Overall bit rate                         : 176 kb/s

Audio
Format                                   : PCM
Format settings                          : Little / Signed
Codec ID                                 : 1
Duration                                 : 16 s 780 ms
Bit rate mode                            : Constant
Bit rate                                 : 176.4 kb/s
Channel(s)                               : 1 channel
Sampling rate                            : 11.025 kHz
Bit depth                                : 16 bits
Stream size                              : 361 KiB (100%)

$ oggenc2 in.wav -q 1 -o out.ogg

  Bytes    Filename                 
 -------- --------------------------
  46 825   out.original.generic.ogg 
  51 187   out.original.x64.ogg     
  51 301   out.ffmpeg7.x64.ogg      
  51 301   out.ffmpeg7.x86.ogg      
  52 409   out.aotuv.generic.ogg    
  55 291   out.lancer.sse3.ogg      
  56 562   out.aotuv.x64.ogg        
  56 655   out.lancer.sse2.ogg      
  56 670   out.venc.x64.ogg         
  56 674   out.venc.x86.ogg

Question is if Aotuv patches are mostly imported, then what explains the difference in the size of the results?