comparison Plugins/Input/wma/libffwma/wmadec.c @ 1398:1ddaf20ab50e trunk

[svn] AltiVec support for WMA, by Luca "lu_zero" Barbato from Gentoo.
author chainsaw
date Thu, 13 Jul 2006 16:01:57 -0700
parents 62a33367a6cb
children f12d7e208b43
comparison
equal deleted inserted replaced
1397:86242883ddc7 1398:1ddaf20ab50e
176 const uint16_t *p; 176 const uint16_t *p;
177 int i, l, j, level; 177 int i, l, j, level;
178 178
179 init_vlc(vlc, 9, n, table_bits, 1, 1, table_codes, 4, 4); 179 init_vlc(vlc, 9, n, table_bits, 1, 1, table_codes, 4, 4);
180 180
181 run_table = malloc(n * sizeof(uint16_t)); 181 run_table = av_malloc(n * sizeof(uint16_t));
182 level_table = malloc(n * sizeof(uint16_t)); 182 level_table = av_malloc(n * sizeof(uint16_t));
183 p = levels_table; 183 p = levels_table;
184 i = 2; 184 i = 2;
185 level = 1; 185 level = 1;
186 while (i < n) { 186 while (i < n) {
187 l = *p++; 187 l = *p++;
451 /* init MDCT windows : simple sinus window */ 451 /* init MDCT windows : simple sinus window */
452 for(i = 0; i < s->nb_block_sizes; i++) { 452 for(i = 0; i < s->nb_block_sizes; i++) {
453 int n, j; 453 int n, j;
454 float alpha; 454 float alpha;
455 n = 1 << (s->frame_len_bits - i); 455 n = 1 << (s->frame_len_bits - i);
456 window = malloc(sizeof(float) * n); 456 window = av_malloc(sizeof(float) * n);
457 alpha = M_PI / (2.0 * n); 457 alpha = M_PI / (2.0 * n);
458 for(j=0;j<n;j++) { 458 for(j=0;j<n;j++) {
459 window[n - j - 1] = sin((j + 0.5) * alpha); 459 window[n - j - 1] = sin((j + 0.5) * alpha);
460 } 460 }
461 s->windows[i] = window; 461 s->windows[i] = window;
696 static int wma_decode_block(WMADecodeContext *s) 696 static int wma_decode_block(WMADecodeContext *s)
697 { 697 {
698 int n, v, a, ch, code, bsize; 698 int n, v, a, ch, code, bsize;
699 int coef_nb_bits, total_gain, parse_exponents; 699 int coef_nb_bits, total_gain, parse_exponents;
700 float window[BLOCK_MAX_SIZE * 2]; 700 float window[BLOCK_MAX_SIZE * 2];
701 // XXX: FIXME!! there's a bug somewhere which makes this mandatory under altivec 701
702 #ifdef BLAH_NO_ALTIVEC 702 #ifdef HAVE_ALTIVEC
703 volatile int nb_coefs[MAX_CHANNELS] __attribute__((aligned(16))); 703 volatile int nb_coefs[MAX_CHANNELS] __attribute__((aligned(16)));
704 #else 704 #else
705 int nb_coefs[MAX_CHANNELS]; 705 int nb_coefs[MAX_CHANNELS];
706 #endif 706 #endif
707 float mdct_norm; 707 float mdct_norm;