diff options
author | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-10-03 22:23:26 +0000 |
---|---|---|
committer | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-10-03 22:23:26 +0000 |
commit | e24087509a752d8f4dcc679b304fc1745ff768b0 (patch) | |
tree | 60bbaca1e13f268df83d5d88c1daa49debacc541 /libfaad2/sbr_tf_grid.c | |
parent | 22c9bcf82417c33258c74104704f196f6672f696 (diff) | |
download | mpv-e24087509a752d8f4dcc679b304fc1745ff768b0.tar.bz2 mpv-e24087509a752d8f4dcc679b304fc1745ff768b0.tar.xz |
synced with current cvs
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10990 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libfaad2/sbr_tf_grid.c')
-rw-r--r-- | libfaad2/sbr_tf_grid.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/libfaad2/sbr_tf_grid.c b/libfaad2/sbr_tf_grid.c index 2e021940de..49b6e28e92 100644 --- a/libfaad2/sbr_tf_grid.c +++ b/libfaad2/sbr_tf_grid.c @@ -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.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_tf_grid.c,v 1.4 2003/09/30 16:32:02 menno Exp $ **/ /* Time/Frequency grid */ @@ -37,9 +37,9 @@ #include "sbr_syntax.h" #include "sbr_tf_grid.h" -void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) +uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch) { - uint8_t l, border; + uint8_t l, border, temp; for (l = 0; l <= sbr->L_E[ch]; l++) { @@ -55,12 +55,13 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) switch (sbr->L_E[ch]) { case 4: - sbr->t_E[ch][3] = sbr->rate * 12; - sbr->t_E[ch][2] = sbr->rate * 8; - sbr->t_E[ch][1] = sbr->rate * 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; break; case 2: - sbr->t_E[ch][1] = sbr->rate * 8; + sbr->t_E[ch][1] = sbr->rate * (int) (sbr->numTimeSlots / 2); break; default: break; @@ -75,6 +76,9 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < (sbr->L_E[ch] - 1); l++) { + if (border < sbr->bs_rel_bord[ch][l]) + return 1; + border -= sbr->bs_rel_bord[ch][l]; sbr->t_E[ch][--i] = sbr->rate * border; } @@ -90,6 +94,10 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < (sbr->L_E[ch] - 1); l++) { border += sbr->bs_rel_bord[ch][l]; + + if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) + return 1; + sbr->t_E[ch][i++] = sbr->rate * border; } } @@ -104,6 +112,10 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < sbr->bs_num_rel_0[ch]; l++) { border += sbr->bs_rel_bord_0[ch][l]; + + if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) + return 1; + sbr->t_E[ch][i++] = sbr->rate * border; } } @@ -115,12 +127,17 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < sbr->bs_num_rel_1[ch]; l++) { + if (border < sbr->bs_rel_bord_1[ch][l]) + return 1; + border -= sbr->bs_rel_bord_1[ch][l]; sbr->t_E[ch][--i] = sbr->rate * border; } } break; } + + return 0; } void noise_floor_time_border_vector(sbr_info *sbr, uint8_t ch) @@ -146,7 +163,7 @@ static int16_t rel_bord_lead(sbr_info *sbr, uint8_t ch, uint8_t l) switch (sbr->bs_frame_class[ch]) { case FIXFIX: - return NO_TIME_SLOTS/sbr->L_E[ch]; + return sbr->numTimeSlots/sbr->L_E[ch]; case FIXVAR: return 0; case VARFIX: |