Mercurial > audlegacy-plugins
diff src/aac/libfaad2/sbr_dec.c @ 691:e6c5fdae6e88 trunk
[svn] - oh yes, commit mplayer patches as well
author | nenolod |
---|---|
date | Tue, 20 Feb 2007 06:38:03 -0800 |
parents | 1d8b08df98c3 |
children | f1b6f1b2cdb3 |
line wrap: on
line diff
--- a/src/aac/libfaad2/sbr_dec.c Tue Feb 20 06:31:29 2007 -0800 +++ b/src/aac/libfaad2/sbr_dec.c Tue Feb 20 06:38:03 2007 -0800 @@ -1,6 +1,6 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com +** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by @@ -19,15 +19,13 @@ ** Any non-GPL usage of this software or parts of this software is strictly ** forbidden. ** -** Software using this code must display the following message visibly in or -** on each copy of the software: -** "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com" -** in, for example, the about-box or help/startup screen. +** Commercial non-GPL licensing of this software is possible. +** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Nero AG through Mpeg4AAClicense@nero.com. -** -** $Id: sbr_dec.c,v 1.41 2006/05/07 18:09:01 menno Exp $ +** Initially modified for use with MPlayer on 2005/12/05 +** $Id: sbr_dec.c,v 1.39 2004/09/04 14:56:28 menno Exp $ +** detailed changelog at http://svn.mplayerhq.hu/mplayer/trunk/ +** local_changes.diff contains the exact changes to this file. **/ @@ -181,72 +179,6 @@ } } -void sbrReset(sbr_info *sbr) -{ - uint8_t j; - if (sbr->qmfa[0] != NULL) - memset(sbr->qmfa[0]->x, 0, 2 * sbr->qmfa[0]->channels * 10 * sizeof(real_t)); - if (sbr->qmfa[1] != NULL) - memset(sbr->qmfa[1]->x, 0, 2 * sbr->qmfa[1]->channels * 10 * sizeof(real_t)); - if (sbr->qmfs[0] != NULL) - memset(sbr->qmfs[0]->v, 0, 2 * sbr->qmfs[0]->channels * 20 * sizeof(real_t)); - if (sbr->qmfs[1] != NULL) - memset(sbr->qmfs[1]->v, 0, 2 * sbr->qmfs[1]->channels * 20 * sizeof(real_t)); - - for (j = 0; j < 5; j++) - { - if (sbr->G_temp_prev[0][j] != NULL) - memset(sbr->G_temp_prev[0][j], 0, 64*sizeof(real_t)); - if (sbr->G_temp_prev[1][j] != NULL) - memset(sbr->G_temp_prev[1][j], 0, 64*sizeof(real_t)); - if (sbr->Q_temp_prev[0][j] != NULL) - memset(sbr->Q_temp_prev[0][j], 0, 64*sizeof(real_t)); - if (sbr->Q_temp_prev[1][j] != NULL) - memset(sbr->Q_temp_prev[1][j], 0, 64*sizeof(real_t)); - } - - memset(sbr->Xsbr[0], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); - memset(sbr->Xsbr[1], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); - - sbr->GQ_ringbuf_index[0] = 0; - sbr->GQ_ringbuf_index[1] = 0; - sbr->header_count = 0; - sbr->Reset = 1; - - sbr->L_E_prev[0] = 0; - sbr->L_E_prev[1] = 0; - sbr->bs_freq_scale = 2; - sbr->bs_alter_scale = 1; - sbr->bs_noise_bands = 2; - sbr->bs_limiter_bands = 2; - sbr->bs_limiter_gains = 2; - sbr->bs_interpol_freq = 1; - sbr->bs_smoothing_mode = 1; - sbr->bs_start_freq = 5; - sbr->bs_amp_res = 1; - sbr->bs_samplerate_mode = 1; - sbr->prevEnvIsShort[0] = -1; - sbr->prevEnvIsShort[1] = -1; - sbr->bsco = 0; - sbr->bsco_prev = 0; - sbr->M_prev = 0; - sbr->bs_start_freq_prev = -1; - - sbr->f_prev[0] = 0; - sbr->f_prev[1] = 0; - for (j = 0; j < MAX_M; j++) - { - sbr->E_prev[0][j] = 0; - sbr->Q_prev[0][j] = 0; - sbr->E_prev[1][j] = 0; - sbr->Q_prev[1][j] = 0; - sbr->bs_add_harmonic_prev[0][j] = 0; - sbr->bs_add_harmonic_prev[1][j] = 0; - } - sbr->bs_add_harmonic_flag_prev[0] = 0; - sbr->bs_add_harmonic_flag_prev[1] = 0; -} - static uint8_t sbr_save_prev_data(sbr_info *sbr, uint8_t ch) { uint8_t i; @@ -297,12 +229,11 @@ } } -static uint8_t sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_NTSR][64], - uint8_t ch, uint8_t dont_process, - const uint8_t downSampledSBR) +static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_NTSR][64], + uint8_t ch, uint8_t dont_process, + const uint8_t downSampledSBR) { int16_t k, l; - uint8_t ret = 0; #ifdef SBR_LOW_POWER ALIGN real_t deg[64]; @@ -350,7 +281,7 @@ ,ch); #endif -#if 0 //def SBR_LOW_POWER +#ifdef SBR_LOW_POWER for (l = sbr->t_E[ch][0]; l < sbr->t_E[ch][sbr->L_E[ch]]; l++) { for (k = 0; k < sbr->kx; k++) @@ -362,16 +293,12 @@ #if 1 /* hf adjustment */ - ret = hf_adjustment(sbr, sbr->Xsbr[ch] + hf_adjustment(sbr, sbr->Xsbr[ch] #ifdef SBR_LOW_POWER ,deg #endif ,ch); #endif - if (ret > 0) - { - dont_process = 1; - } } if ((sbr->just_seeked != 0) || dont_process) @@ -443,8 +370,6 @@ #endif } } - - return ret; } uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, @@ -478,7 +403,7 @@ sbr->just_seeked = 0; } - sbr->ret += sbr_process_channel(sbr, left_chan, X, 0, dont_process, downSampledSBR); + sbr_process_channel(sbr, left_chan, X, 0, dont_process, downSampledSBR); /* subband synthesis */ if (downSampledSBR) { @@ -487,7 +412,7 @@ sbr_qmf_synthesis_64(sbr, sbr->qmfs[0], X, left_chan); } - sbr->ret += sbr_process_channel(sbr, right_chan, X, 1, dont_process, downSampledSBR); + sbr_process_channel(sbr, right_chan, X, 1, dont_process, downSampledSBR); /* subband synthesis */ if (downSampledSBR) { @@ -561,7 +486,7 @@ sbr->just_seeked = 0; } - sbr->ret += sbr_process_channel(sbr, channel, X, 0, dont_process, downSampledSBR); + sbr_process_channel(sbr, channel, X, 0, dont_process, downSampledSBR); /* subband synthesis */ if (downSampledSBR) { @@ -604,8 +529,8 @@ uint8_t l, k; uint8_t dont_process = 0; uint8_t ret = 0; - ALIGN qmf_t X_left[38][64] = {{0}}; - ALIGN qmf_t X_right[38][64] = {{0}}; /* must set this to 0 */ + ALIGN qmf_t X_left[38][64] = {{{0}}}; + ALIGN qmf_t X_right[38][64] = {{{0}}}; /* must set this to 0 */ if (sbr == NULL) return 20; @@ -636,7 +561,7 @@ sbr->qmfs[1] = qmfs_init((downSampledSBR)?32:64); } - sbr->ret += sbr_process_channel(sbr, left_channel, X_left, 0, dont_process, downSampledSBR); + sbr_process_channel(sbr, left_channel, X_left, 0, dont_process, downSampledSBR); /* copy some extra data for PS */ for (l = 32; l < 38; l++) @@ -652,7 +577,7 @@ #ifdef DRM_PS if (sbr->Is_DRM_SBR) { - drm_ps_decode(sbr->drm_ps, (sbr->ret > 0), X_left, X_right); + drm_ps_decode(sbr->drm_ps, (sbr->ret > 0), sbr->sample_rate, X_left, X_right); } else { #endif #ifdef PS_DEC