summaryrefslogtreecommitdiff
path: root/apps/codecs/libfaad/sbr_qmf.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libfaad/sbr_qmf.c')
-rw-r--r--apps/codecs/libfaad/sbr_qmf.c100
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 */