diff options
Diffstat (limited to 'apps/codecs/libfaad/sbr_qmf.c')
-rw-r--r-- | apps/codecs/libfaad/sbr_qmf.c | 100 |
1 files changed, 51 insertions, 49 deletions
diff --git a/apps/codecs/libfaad/sbr_qmf.c b/apps/codecs/libfaad/sbr_qmf.c index 7b70cc6a5e..3651eedf95 100644 --- a/apps/codecs/libfaad/sbr_qmf.c +++ b/apps/codecs/libfaad/sbr_qmf.c | |||
@@ -109,13 +109,13 @@ void sbr_qmf_analysis_32(sbr_info *sbr, qmfa_info *qmfa, const real_t *input, | |||
109 | /* window and summation to create array u */ | 109 | /* window and summation to create array u */ |
110 | for (n = 0; n < 64; n++) | 110 | for (n = 0; n < 64; n++) |
111 | { | 111 | { |
112 | idx0 = qmfa->x_index + n; idx1 = n * 2; | 112 | idx0 = qmfa->x_index + n; idx1 = n * 2 * 5; |
113 | u[n] = FAAD_ANALYSIS_SCALE1( | 113 | u[n] = FAAD_ANALYSIS_SCALE1( |
114 | MUL_F(qmfa->x[idx0 ], qmf_c[idx1]) + | 114 | MUL_F(qmfa->x[idx0 ], qmf_c[idx1 ]) + |
115 | MUL_F(qmfa->x[idx0 + 64], qmf_c[idx1 + 2 * 64]) + | 115 | MUL_F(qmfa->x[idx0 + 64], qmf_c[idx1 + 2]) + |
116 | MUL_F(qmfa->x[idx0 + 128], qmf_c[idx1 + 2 * 128]) + | 116 | MUL_F(qmfa->x[idx0 + 128], qmf_c[idx1 + 4]) + |
117 | MUL_F(qmfa->x[idx0 + 192], qmf_c[idx1 + 2 * 192]) + | 117 | MUL_F(qmfa->x[idx0 + 192], qmf_c[idx1 + 6]) + |
118 | MUL_F(qmfa->x[idx0 + 256], qmf_c[idx1 + 2 * 256])); | 118 | MUL_F(qmfa->x[idx0 + 256], qmf_c[idx1 + 8])); |
119 | } | 119 | } |
120 | 120 | ||
121 | /* update ringbuffer index */ | 121 | /* update ringbuffer index */ |
@@ -298,16 +298,16 @@ void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 | |||
298 | /* calculate 32 output samples and window */ | 298 | /* calculate 32 output samples and window */ |
299 | for (k = 0; k < 32; k++) | 299 | for (k = 0; k < 32; k++) |
300 | { | 300 | { |
301 | output[out++] = MUL_F(qmfs->v[qmfs->v_index + k], qmf_c[2*k]) + | 301 | output[out++] = MUL_F(qmfs->v[qmfs->v_index + k], qmf_c[ 2*k*10]) + |
302 | MUL_F(qmfs->v[qmfs->v_index + 96 + k], qmf_c[ 64 + 2*k]) + | 302 | MUL_F(qmfs->v[qmfs->v_index + 96 + k], qmf_c[1 + 2*k*10]) + |
303 | MUL_F(qmfs->v[qmfs->v_index + 128 + k], qmf_c[128 + 2*k]) + | 303 | MUL_F(qmfs->v[qmfs->v_index + 128 + k], qmf_c[2 + 2*k*10]) + |
304 | MUL_F(qmfs->v[qmfs->v_index + 224 + k], qmf_c[192 + 2*k]) + | 304 | MUL_F(qmfs->v[qmfs->v_index + 224 + k], qmf_c[3 + 2*k*10]) + |
305 | MUL_F(qmfs->v[qmfs->v_index + 256 + k], qmf_c[256 + 2*k]) + | 305 | MUL_F(qmfs->v[qmfs->v_index + 256 + k], qmf_c[4 + 2*k*10]) + |
306 | MUL_F(qmfs->v[qmfs->v_index + 352 + k], qmf_c[320 + 2*k]) + | 306 | MUL_F(qmfs->v[qmfs->v_index + 352 + k], qmf_c[5 + 2*k*10]) + |
307 | MUL_F(qmfs->v[qmfs->v_index + 384 + k], qmf_c[384 + 2*k]) + | 307 | MUL_F(qmfs->v[qmfs->v_index + 384 + k], qmf_c[6 + 2*k*10]) + |
308 | MUL_F(qmfs->v[qmfs->v_index + 480 + k], qmf_c[448 + 2*k]) + | 308 | MUL_F(qmfs->v[qmfs->v_index + 480 + k], qmf_c[7 + 2*k*10]) + |
309 | MUL_F(qmfs->v[qmfs->v_index + 512 + k], qmf_c[512 + 2*k]) + | 309 | MUL_F(qmfs->v[qmfs->v_index + 512 + k], qmf_c[8 + 2*k*10]) + |
310 | MUL_F(qmfs->v[qmfs->v_index + 608 + k], qmf_c[576 + 2*k]); | 310 | MUL_F(qmfs->v[qmfs->v_index + 608 + k], qmf_c[9 + 2*k*10]); |
311 | } | 311 | } |
312 | 312 | ||
313 | /* update the ringbuffer index */ | 313 | /* update the ringbuffer index */ |
@@ -368,16 +368,16 @@ void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 | |||
368 | /* calculate 64 output samples and window */ | 368 | /* calculate 64 output samples and window */ |
369 | for (k = 0; k < 64; k++) | 369 | for (k = 0; k < 64; k++) |
370 | { | 370 | { |
371 | output[out++] = MUL_F(qmfs->v[qmfs->v_index + k], qmf_c[k]) + | 371 | output[out++] = MUL_F(qmfs->v[qmfs->v_index + k], qmf_c[ k*10]) + |
372 | MUL_F(qmfs->v[qmfs->v_index + 192 + k], qmf_c[64 + k]) + | 372 | MUL_F(qmfs->v[qmfs->v_index + 192 + k], qmf_c[1 + k*10]) + |
373 | MUL_F(qmfs->v[qmfs->v_index + 256 + k], qmf_c[128 + k]) + | 373 | MUL_F(qmfs->v[qmfs->v_index + 256 + k], qmf_c[2 + k*10]) + |
374 | MUL_F(qmfs->v[qmfs->v_index + 256 + 192 + k], qmf_c[128 + 64 + k]) + | 374 | MUL_F(qmfs->v[qmfs->v_index + 256 + 192 + k], qmf_c[3 + k*10]) + |
375 | MUL_F(qmfs->v[qmfs->v_index + 512 + k], qmf_c[256 + k]) + | 375 | MUL_F(qmfs->v[qmfs->v_index + 512 + k], qmf_c[4 + k*10]) + |
376 | MUL_F(qmfs->v[qmfs->v_index + 512 + 192 + k], qmf_c[256 + 64 + k]) + | 376 | MUL_F(qmfs->v[qmfs->v_index + 512 + 192 + k], qmf_c[5 + k*10]) + |
377 | MUL_F(qmfs->v[qmfs->v_index + 768 + k], qmf_c[384 + k]) + | 377 | MUL_F(qmfs->v[qmfs->v_index + 768 + k], qmf_c[6 + k*10]) + |
378 | MUL_F(qmfs->v[qmfs->v_index + 768 + 192 + k], qmf_c[384 + 64 + k]) + | 378 | MUL_F(qmfs->v[qmfs->v_index + 768 + 192 + k], qmf_c[7 + k*10]) + |
379 | MUL_F(qmfs->v[qmfs->v_index + 1024 + k], qmf_c[512 + k]) + | 379 | MUL_F(qmfs->v[qmfs->v_index + 1024 + k], qmf_c[8 + k*10]) + |
380 | MUL_F(qmfs->v[qmfs->v_index + 1024 + 192 + k], qmf_c[512 + 64 + k]); | 380 | MUL_F(qmfs->v[qmfs->v_index + 1024 + 192 + k], qmf_c[9 + k*10]); |
381 | } | 381 | } |
382 | 382 | ||
383 | /* update the ringbuffer index */ | 383 | /* update the ringbuffer index */ |
@@ -441,18 +441,18 @@ void sbr_qmf_synthesis_32(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 | |||
441 | /* calculate 32 output samples and window */ | 441 | /* calculate 32 output samples and window */ |
442 | for (k = 0; k < 32; k++) | 442 | for (k = 0; k < 32; k++) |
443 | { | 443 | { |
444 | idx0 = qmfs->v_index + k; idx1 = 2*k; | 444 | idx0 = qmfs->v_index + k; idx1 = 2*k*10; |
445 | output[out++] = FAAD_SYNTHESIS_SCALE( | 445 | output[out++] = FAAD_SYNTHESIS_SCALE( |
446 | MUL_F(qmfs->v[idx0 ], qmf_c[idx1 ]) + | 446 | MUL_F(qmfs->v[idx0 ], qmf_c[idx1 ]) + |
447 | MUL_F(qmfs->v[idx0 + 96], qmf_c[idx1 + 64]) + | 447 | MUL_F(qmfs->v[idx0 + 96], qmf_c[idx1+1]) + |
448 | MUL_F(qmfs->v[idx0 + 128], qmf_c[idx1 + 128]) + | 448 | MUL_F(qmfs->v[idx0 + 128], qmf_c[idx1+2]) + |
449 | MUL_F(qmfs->v[idx0 + 224], qmf_c[idx1 + 192]) + | 449 | MUL_F(qmfs->v[idx0 + 224], qmf_c[idx1+3]) + |
450 | MUL_F(qmfs->v[idx0 + 256], qmf_c[idx1 + 256]) + | 450 | MUL_F(qmfs->v[idx0 + 256], qmf_c[idx1+4]) + |
451 | MUL_F(qmfs->v[idx0 + 352], qmf_c[idx1 + 320]) + | 451 | MUL_F(qmfs->v[idx0 + 352], qmf_c[idx1+5]) + |
452 | MUL_F(qmfs->v[idx0 + 384], qmf_c[idx1 + 384]) + | 452 | MUL_F(qmfs->v[idx0 + 384], qmf_c[idx1+6]) + |
453 | MUL_F(qmfs->v[idx0 + 480], qmf_c[idx1 + 448]) + | 453 | MUL_F(qmfs->v[idx0 + 480], qmf_c[idx1+7]) + |
454 | MUL_F(qmfs->v[idx0 + 512], qmf_c[idx1 + 512]) + | 454 | MUL_F(qmfs->v[idx0 + 512], qmf_c[idx1+8]) + |
455 | MUL_F(qmfs->v[idx0 + 608], qmf_c[idx1 + 576])); | 455 | MUL_F(qmfs->v[idx0 + 608], qmf_c[idx1+9])); |
456 | } | 456 | } |
457 | 457 | ||
458 | /* update ringbuffer index */ | 458 | /* update ringbuffer index */ |
@@ -469,8 +469,8 @@ void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 | |||
469 | ALIGN real_t imag1[32]; | 469 | ALIGN real_t imag1[32]; |
470 | ALIGN real_t real2[32]; | 470 | ALIGN real_t real2[32]; |
471 | ALIGN real_t imag2[32]; | 471 | ALIGN real_t imag2[32]; |
472 | qmf_t * pX; | 472 | qmf_t *pX; |
473 | real_t * p_buf_1, * p_buf_3; | 473 | real_t *p_buf_1, *p_buf_3; |
474 | #ifndef FIXED_POINT | 474 | #ifndef FIXED_POINT |
475 | real_t scale = 1.f/64.f; | 475 | real_t scale = 1.f/64.f; |
476 | #endif | 476 | #endif |
@@ -512,19 +512,21 @@ void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, qmf_t X[MAX_NTSRHFG][6 | |||
512 | p_buf_1 = qmfs->v + qmfs->v_index; | 512 | p_buf_1 = qmfs->v + qmfs->v_index; |
513 | 513 | ||
514 | /* calculate 64 output samples and window */ | 514 | /* calculate 64 output samples and window */ |
515 | |||
515 | for (k = 0; k < 64; k++) | 516 | for (k = 0; k < 64; k++) |
516 | { | 517 | { |
518 | idx0 = k*10; | ||
517 | output[out++] = FAAD_SYNTHESIS_SCALE( | 519 | output[out++] = FAAD_SYNTHESIS_SCALE( |
518 | MUL_F(p_buf_1[k ], qmf_c[k ]) + | 520 | MUL_F(p_buf_1[k ], qmf_c[idx0 ]) + |
519 | MUL_F(p_buf_1[k+ 192 ], qmf_c[k+ 64]) + | 521 | MUL_F(p_buf_1[k+ 192 ], qmf_c[idx0+1]) + |
520 | MUL_F(p_buf_1[k+ 256 ], qmf_c[k+128]) + | 522 | MUL_F(p_buf_1[k+ 256 ], qmf_c[idx0+2]) + |
521 | MUL_F(p_buf_1[k+ 256+192], qmf_c[k+192]) + | 523 | MUL_F(p_buf_1[k+ 256+192], qmf_c[idx0+3]) + |
522 | MUL_F(p_buf_1[k+ 512 ], qmf_c[k+256]) + | 524 | MUL_F(p_buf_1[k+ 512 ], qmf_c[idx0+4]) + |
523 | MUL_F(p_buf_1[k+ 512+192], qmf_c[k+320]) + | 525 | MUL_F(p_buf_1[k+ 512+192], qmf_c[idx0+5]) + |
524 | MUL_F(p_buf_1[k+ 768 ], qmf_c[k+384]) + | 526 | MUL_F(p_buf_1[k+ 768 ], qmf_c[idx0+6]) + |
525 | MUL_F(p_buf_1[k+ 768+192], qmf_c[k+448]) + | 527 | MUL_F(p_buf_1[k+ 768+192], qmf_c[idx0+7]) + |
526 | MUL_F(p_buf_1[k+1024 ], qmf_c[k+512]) + | 528 | MUL_F(p_buf_1[k+1024 ], qmf_c[idx0+8]) + |
527 | MUL_F(p_buf_1[k+1024+192], qmf_c[k+576])); | 529 | MUL_F(p_buf_1[k+1024+192], qmf_c[idx0+9])); |
528 | } | 530 | } |
529 | 531 | ||
530 | /* update ringbuffer index */ | 532 | /* update ringbuffer index */ |