Blame TODO

Packit 47f805
1.  bug in resample code:  downsampling from 44101 to 44100 causes
Packit 47f805
    a seg fault.  Workaround in place for now:  resampling disabled 
Packit 47f805
    if input/output samplerates agree to 4 digits.  
Packit 47f805
Packit 47f805
Packit 47f805
2.  high bitrate encodings have trouble on some hardware players.
Packit 47f805
    Track this down.  Probably caused by --strictly-enforce-ISO and
Packit 47f805
    IXMAX_VAL.  Try setting IXMAX_VAL back to 8191 and/or
Packit 47f805
    maxmp3buf=8*960 to see if there is a working combination.
Packit 47f805
Packit 47f805
    note: one of the decoder bugs was identified. It is caused by using
Packit 47f805
    different block sizes on both channels. A parameter need to be
Packit 47f805
    added to Lame to handle workarounds.
Packit 47f805
Packit 47f805
Packit 47f805
3   frontend: code is a complete mess. But it has so many debugged
Packit 47f805
    features it will be a lot of work to re-write.
Packit 47f805
Packit 47f805
Packit 47f805
4.  MSVC project files.  It would be nice to create a working
Packit 47f805
    MSVC6 workspace, which included all the projects as possible
Packit 47f805
    targets:
Packit 47f805
          lame.exe
Packit 47f805
          mp3x.exe   (require GTK libs)
Packit 47f805
          lame_enc.dll   
Packit 47f805
          ACM codec
Packit 47f805
          directshow codec
Packit 47f805
Packit 47f805
    I think the only MSVC5 project that we need to preserve is
Packit 47f805
    for lame_enc.dll, since Albert Faber (still?) doesn't use VC6?
Packit 47f805
    But no reason we cant have VC5 and VC6 project files for the dll.
Packit 47f805
Packit 47f805
Packit 47f805
5.  NOGAP encoding:
Packit 47f805
Packit 47f805
    -nogap:  more testing, fix options, test id3 tags?
Packit 47f805
    Can we change id3 tags without reseting the encoder??
Packit 47f805
    At the end of encoding 1.wav, call lame_get_mf_samples_to_encode()
Packit 47f805
    to find the number of non encoded buffered PCM samples.  Then
Packit 47f805
    encode samples from 2.wav until these PCM samples have been
Packit 47f805
    encoded, *THEN* call lame_encode_flush_nogap() and close
Packit 47f805
    out file 1.mp3.
Packit 47f805
    
Packit 47f805
    
Packit 47f805
    NOGAP decoding:  
Packit 47f805
    lame --decode --nogap file1.mp3 file2.mp3 file3.mp3
Packit 47f805
    should also work.  What needs to be done:
Packit 47f805
    get_audio.c:  We need a way to open a second mp3 file, without
Packit 47f805
                  calling lame_decode_init() and reinitializing mpglib.
Packit 47f805
                  And the mpglib needs to know to look for new Xing
Packit 47f805
                  tags at the beginning of file2.mp3 and file3.mp3.
Packit 47f805
Packit 47f805
Packit 47f805
6.  Does stdin work when LAME is compiled to use libsndfile? 
Packit 47f805
    (new version of libsndfile will support this - try this out)
Packit 47f805
Packit 47f805
Packit 47f805
7.  LAME has problems with pure DC input.  i.e. a square wave with
Packit 47f805
    a frequency well below 20 Hz.  Not very important, but it should
Packit 47f805
    be fixed.
Packit 47f805
Packit 47f805
Packit 47f805
8.  mgplib has bugs with i-stereo.  flag denoting invalid
Packit 47f805
    i-stereo value (= frame is m/s stereo) is not correct.  
Packit 47f805
Packit 47f805
Packit 47f805
9.  lowpass filter: for M/S stereo, use more filtering for the side
Packit 47f805
    channel, less filtering for mid channel.  We need to first replace
Packit 47f805
    the polyphase filter with an FIR lowpass filter with finer frequency
Packit 47f805
    resolution before implementing this. 
Packit 47f805
Packit 47f805
Packit 47f805
10. LAME has a 31 point FIR filter used for resampling, which
Packit 47f805
    can also be used as a lowpass.  When resampling is done, 
Packit 47f805
    use that filter to also lowpass instead of the polyphase filter.
Packit 47f805
Packit 47f805
Packit 47f805
11. Even when resampling is not needed, should we use an FIR filter
Packit 47f805
    for the lowpass?  If it is not too much slower, yes.  If it
Packit 47f805
    is slower, then it should be an option since it will produce
Packit 47f805
    higher quality.  
Packit 47f805
Packit 47f805
Packit 47f805
12. We should consider moving the experts options from the *long
Packit 47f805
    help* text into an *experts only* help text. The average Joe gets
Packit 47f805
    knocked down by the huge number of possibilities to setup lame.
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
50. Better tonality estimation.
Packit 47f805
    Gpsycho uses predictability, and so needs a delay to detect the tonality
Packit 47f805
    of a sound.
Packit 47f805
    Nspsytune seems to miss tonals when several of them are too narrow.
Packit 47f805
    We would probably need the best of both.
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
60. Different ATH handling for sfb21. We are using the minimum value of ath
Packit 47f805
    in each whole sfb. in sfb21 this leads to very high bitrates.
Packit 47f805
    We could perhaps use 2 or 3 ath partitions in sfb21
Packit 47f805
Packit 47f805
    note: partially done
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
70. Use mixed blocks.
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
90. Use intensity stereo. This is a must-have for low bitrates, but if the
Packit 47f805
    algorythm is very good it could also be used in every case.
Packit 47f805
    Note: mpg123 (and all derivatives, like xmms and lame/mpglib)
Packit 47f805
    have bugs in the intensity stereo decoding.  Bugs have been there
Packit 47f805
    for years since there are very few intensity stereo mp3's out there.
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
95. Merge GOGO's fast assembler routines.
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
96. It would be nice to save some information whilst encoding
Packit 47f805
    a: wave -> mp3
Packit 47f805
        a RIFF/wave can contain LIST chunks with information
Packit 47f805
        about author, title, etc. 
Packit 47f805
        ==> could go into TAG fields of resulting mp3
Packit 47f805
    b: mp3 -> mp3
Packit 47f805
        ==> we could copy the TAG directly
Packit 47f805
    c: mp3 -> wave
Packit 47f805
        ==> copy TAG into LIST chunk
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
97. Integrate plusV extensions
Packit 47f805
Packit 47f805
Packit 47f805
Packit 47f805
99. To be able to encode as fast as FastEnc