audio/mp3: Remove global variables 'v_vec' and 'store'

This commit is contained in:
Hajime Hoshi 2017-06-18 17:13:38 +09:00
parent e0661a0ac6
commit 8efd0e725f
3 changed files with 12 additions and 10 deletions

View File

@ -375,8 +375,6 @@ func (f *frame) l3Antialias(gr int, ch int) {
} }
} }
var store = [2][32][18]float32{}
func (f *frame) l3HybridSynthesis(gr int, ch int) { func (f *frame) l3HybridSynthesis(gr int, ch int) {
// Loop through all 32 subbands // Loop through all 32 subbands
for sb := 0; sb < 32; sb++ { for sb := 0; sb < 32; sb++ {
@ -394,8 +392,8 @@ func (f *frame) l3HybridSynthesis(gr int, ch int) {
rawout := imdctWin(in, bt) rawout := imdctWin(in, bt)
// Overlapp add with stored vector into main_data vector // Overlapp add with stored vector into main_data vector
for i := 0; i < 18; i++ { for i := 0; i < 18; i++ {
f.mainData.is[gr][ch][sb*18+i] = rawout[i] + store[ch][sb][i] f.mainData.is[gr][ch][sb*18+i] = rawout[i] + f.store[ch][sb][i]
store[ch][sb][i] = rawout[i+18] f.store[ch][sb][i] = rawout[i+18]
} }
} }
} }
@ -550,8 +548,6 @@ var g_synth_dtbl = [512]float32{
0.000015259, 0.000015259, 0.000015259, 0.000015259, 0.000015259, 0.000015259, 0.000015259, 0.000015259,
} }
var v_vec = [2][1024]float32{}
func (f *frame) l3SubbandSynthesis(gr int, ch int, out []uint8) { func (f *frame) l3SubbandSynthesis(gr int, ch int, out []uint8) {
u_vec := make([]float32, 512) u_vec := make([]float32, 512)
s_vec := make([]float32, 32) s_vec := make([]float32, 32)
@ -560,7 +556,7 @@ func (f *frame) l3SubbandSynthesis(gr int, ch int, out []uint8) {
/* Setup the n_win windowing vector and the v_vec intermediate vector */ /* Setup the n_win windowing vector and the v_vec intermediate vector */
for ss := 0; ss < 18; ss++ { /* Loop through 18 samples in 32 subbands */ for ss := 0; ss < 18; ss++ { /* Loop through 18 samples in 32 subbands */
for i := 1023; i > 63; i-- { /* Shift up the V vector */ for i := 1023; i > 63; i-- { /* Shift up the V vector */
v_vec[ch][i] = v_vec[ch][i-64] f.v_vec[ch][i] = f.v_vec[ch][i-64]
} }
for i := 0; i < 32; i++ { /* Copy next 32 time samples to a temp vector */ for i := 0; i < 32; i++ { /* Copy next 32 time samples to a temp vector */
s_vec[i] = f.mainData.is[gr][ch][i*18+ss] s_vec[i] = f.mainData.is[gr][ch][i*18+ss]
@ -570,12 +566,12 @@ func (f *frame) l3SubbandSynthesis(gr int, ch int, out []uint8) {
for j := 0; j < 32; j++ { for j := 0; j < 32; j++ {
sum += g_synth_n_win[i][j] * s_vec[j] sum += g_synth_n_win[i][j] * s_vec[j]
} }
v_vec[ch][i] = sum f.v_vec[ch][i] = sum
} }
for i := 0; i < 8; i++ { /* Build the U vector */ for i := 0; i < 8; i++ { /* Build the U vector */
for j := 0; j < 32; j++ { /* <<7 == *128 */ for j := 0; j < 32; j++ { /* <<7 == *128 */
u_vec[(i<<6)+j] = v_vec[ch][(i<<7)+j] u_vec[(i<<6)+j] = f.v_vec[ch][(i<<7)+j]
u_vec[(i<<6)+j+32] = v_vec[ch][(i<<7)+j+96] u_vec[(i<<6)+j+32] = f.v_vec[ch][(i<<7)+j+96]
} }
} }
for i := 0; i < 512; i++ { /* Window by u_vec[i] with g_synth_dtbl[i] */ for i := 0; i < 512; i++ { /* Window by u_vec[i] with g_synth_dtbl[i] */

View File

@ -46,6 +46,10 @@ func (f *frame) readNextFrame() (*frame, error) {
nf := &frame{ nf := &frame{
prev: f, prev: f,
} }
if nf.prev != nil {
nf.store = nf.prev.store
nf.v_vec = nf.prev.v_vec
}
if err := nf.readHeader(); err != nil { if err := nf.readHeader(); err != nil {
return nil, err return nil, err
} }

View File

@ -91,4 +91,6 @@ type frame struct {
mainData mpeg1MainData mainData mpeg1MainData
mainDataBytes *mainDataBytes mainDataBytes *mainDataBytes
store [2][32][18]float32
v_vec [2][1024]float32
} }