Mercurial > audlegacy
diff Plugins/Input/aac/libfaad2/sbr_tf_grid.c @ 1021:1e6c0a3f2d15 trunk
[svn] - 2.1 beta
author | nenolod |
---|---|
date | Wed, 10 May 2006 14:44:20 -0700 |
parents | 29feaace84d0 |
children | f12d7e208b43 |
line wrap: on
line diff
--- a/Plugins/Input/aac/libfaad2/sbr_tf_grid.c Wed May 10 14:41:23 2006 -0700 +++ b/Plugins/Input/aac/libfaad2/sbr_tf_grid.c Wed May 10 14:44:20 2006 -0700 @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_tf_grid.c,v 1.10 2004/01/05 14:05:12 menno Exp $ +** $Id: sbr_tf_grid.c,v 1.15 2004/09/04 14:56:28 menno Exp $ **/ /* Time/Frequency grid */ @@ -46,17 +46,15 @@ static uint8_t middleBorder(sbr_info *sbr, uint8_t ch); +/* function constructs new time border vector */ +/* first build into temp vector to be able to use previous vector on error */ uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch) { uint8_t l, border, temp; + uint8_t t_E_temp[6] = {0}; - for (l = 0; l <= sbr->L_E[ch]; l++) - { - sbr->t_E[ch][l] = 0; - } - - sbr->t_E[ch][0] = sbr->rate * sbr->abs_bord_lead[ch]; - sbr->t_E[ch][sbr->L_E[ch]] = sbr->rate * sbr->abs_bord_trail[ch]; + t_E_temp[0] = sbr->rate * sbr->abs_bord_lead[ch]; + t_E_temp[sbr->L_E[ch]] = sbr->rate * sbr->abs_bord_trail[ch]; switch (sbr->bs_frame_class[ch]) { @@ -65,12 +63,12 @@ { case 4: temp = (int) (sbr->numTimeSlots / 4); - sbr->t_E[ch][3] = sbr->rate * 3 * temp; - sbr->t_E[ch][2] = sbr->rate * 2 * temp; - sbr->t_E[ch][1] = sbr->rate * temp; + t_E_temp[3] = sbr->rate * 3 * temp; + t_E_temp[2] = sbr->rate * 2 * temp; + t_E_temp[1] = sbr->rate * temp; break; case 2: - sbr->t_E[ch][1] = sbr->rate * (int) (sbr->numTimeSlots / 2); + t_E_temp[1] = sbr->rate * (int) (sbr->numTimeSlots / 2); break; default: break; @@ -89,7 +87,7 @@ return 1; border -= sbr->bs_rel_bord[ch][l]; - sbr->t_E[ch][--i] = sbr->rate * border; + t_E_temp[--i] = sbr->rate * border; } } break; @@ -107,7 +105,7 @@ if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) return 1; - sbr->t_E[ch][i++] = sbr->rate * border; + t_E_temp[i++] = sbr->rate * border; } } break; @@ -125,7 +123,7 @@ if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) return 1; - sbr->t_E[ch][i++] = sbr->rate * border; + t_E_temp[i++] = sbr->rate * border; } } @@ -140,12 +138,18 @@ return 1; border -= sbr->bs_rel_bord_1[ch][l]; - sbr->t_E[ch][--i] = sbr->rate * border; + t_E_temp[--i] = sbr->rate * border; } } break; } + /* no error occured, we can safely use this t_E vector */ + for (l = 0; l < 6; l++) + { + sbr->t_E[ch][l] = t_E_temp[l]; + } + return 0; }