~x3lectric/xbmc/svn-trunk

22289 by wiso
copy lame-3.98.4 to trunk
1
1. bug in resample code:  downsampling from 44101 to 44100 causes
2
   a seg fault.  Workaround in place for now:  resampling disabled 
3
   if input/output samplerates agree to 4 digits.  
4
5
6
7
2.  high bitrate encodings have trouble on some hardware players.
8
Track this down.  Probably caused by --strictly-enforce-ISO and
9
IXMAX_VAL.  Try setting IXMAX_VAL back to 8191 and/or
10
maxmp3buf=8*960 to see if there is a working combination.
11
12
note: one of the decoder bugs was identified. It is caused by using
13
different block sizes on both channels. A parameter need to be
14
added to Lame to handle workarounds.
15
16
17
3 frontend: code is a complete mess. But it has so many debugged
18
  features it will be a lot of work to re-write.
19
20
21
4. MSVC project files.  It would be nice to create a working
22
   MSVC6 workspace, which included all the projects as possible
23
   targets:
24
          lame.exe
25
          mp3x.exe   (require GTK libs)
26
          lame_enc.dll   
27
          ACM codec
28
          directshow codec
29
30
   I think the only MSVC5 project that we need to preserve is
31
   for lame_enc.dll, since Albert Faber (still?) doesn't use VC6?
32
   But no reason we cant have VC5 and VC6 project files for the dll.
33
34
   
35
36
   
37
38
39
5.
40
NOGAP encoding:
41
42
-nogap:  more testing, fix options, test id3 tags?
43
Can we change id3 tags without reseting the encoder??
44
At the end of encoding 1.wav, call lame_get_mf_samples_to_encode()
45
to find the number of non encoded buffered PCM samples.  Then
46
encode samples from 2.wav until these PCM samples have been
47
encoded, *THEN* call lame_encode_flush_nogap() and close
48
out file 1.mp3.
49
50
51
NOGAP decoding:  
52
lame --decode --nogap file1.mp3 file2.mp3 file3.mp3
53
should also work.  What needs to be done:
54
get_audio.c:  We need a way to open a second mp3 file, without
55
              calling lame_decode_init() and reinitializing mpglib.
56
              And the mpglib needs to know to look for new Xing
57
              tags at the beginning of file2.mp3 and file3.mp3.
58
59
60
61
6.
62
Does stdin work when LAME is compiled to use libsndfile? 
63
(new version of libsndfile will support this - try this out)
64
65
66
7. 
67
LAME has problems with pure DC input.  i.e. a square wave with
68
a frequency well below 20 Hz.  Not very important, but it should
69
be fixed.
70
71
72
8.
73
mgplib has bugs with i-stereo.  flag denoting invalid
74
i-stereo value (= frame is m/s stereo) is not correct.  
75
76
9.
77
lowpass filter: for M/S stereo, use more filtering for the side
78
channel, less filtering for mid channel.  We need to first replace
79
the polyphase filter with an FIR lowpass filter with finer frequency
80
resolution before implementing this. 
81
82
10. 
83
LAME has a 31 point FIR filter used for resampling, which
84
can also be used as a lowpass.  When resampling is done, 
85
use that filter to also lowpass instead of the polyphase filter.
86
87
11.
88
Even when resampling is not needed, should we use an FIR filter
89
for the lowpass?  If it is not too much slower, yes.  If it
90
is slower, then it should be an option since it will produce
91
higher quality.  
92
93
12.
94
We should consider moving the experts options from the *long
95
help* text into an *experts only* help text. The average Joe gets
96
knocked down by the huge number of possibilities to setup lame.
97
98
99
100
101
50.
102
Better tonality estimation.
103
Gpsycho uses predictability, and so needs a delay to detect the tonality
104
of a sound.
105
Nspsytune seems to miss tonals when several of them are too narrow.
106
We would probably need the best of both.
107
108
109
110
111
60.
112
Different ATH handling for sfb21. We are using the minimum value of ath
113
in each whole sfb. in sfb21 this leads to very high bitrates.
114
We could perhaps use 2 or 3 ath partitions in sfb21
115
116
note: partially done
117
118
119
120
70.
121
Use mixed blocks.
122
123
124
125
126
90.
127
Use intensity stereo. This is a must-have for low bitrates, but if the
128
algorythm is very good it could also be used in every case.
129
Note: mpg123 (and all derivatives, like xmms and lame/mpglib)
130
have bugs in the intensity stereo decoding.  Bugs have been there
131
for years since there are very few intensity stereo mp3's out there.
132
133
134
135
136
137
998.
138
Merge GOGO's fast assembler routines.
139
140
141
142
143
999.
144
It would be nice to save some information whilst encoding
145
a: wave -> mp3
146
	a RIFF/wave can contain LIST chunks with information
147
	about author, title, etc. 
148
	==> could go into TAG fields of resulting mp3
149
b: mp3 -> mp3
150
	==> we could copy the TAG directly
151
c: mp3 -> wave
152
	==> copy TAG into LIST chunk
153
154
155
156
1500.
157
Integrate plusV extensions
158
159
160
161
2000.
162
To be able to encode as fast as FastEnc