Mercurial > mplayer.hg
diff libfaad2/sbr_tf_grid.c @ 13453:6d50ef45a058
Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
patch by adland <adland123 at yahoo dot com>
author | diego |
---|---|
date | Fri, 24 Sep 2004 17:31:36 +0000 |
parents | d81145997036 |
children | 2ae5ab4331ca |
line wrap: on
line diff
--- a/libfaad2/sbr_tf_grid.c Fri Sep 24 17:03:03 2004 +0000 +++ b/libfaad2/sbr_tf_grid.c Fri Sep 24 17:31:36 2004 +0000 @@ -23,7 +23,7 @@ ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** ** Initially modified for use with MPlayer by Arpad Gereöffy on 2003/08/30 -** $Id: sbr_tf_grid.c,v 1.3 2004/06/02 22:59:03 diego Exp $ +** $Id: sbr_tf_grid.c,v 1.4 2004/06/23 13:50:52 diego Exp $ ** detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ **/ @@ -48,17 +48,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]) { @@ -67,12 +65,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; @@ -91,7 +89,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; @@ -109,7 +107,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; @@ -127,7 +125,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; } } @@ -142,12 +140,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; }