~siretart/xine-lib/ubuntu

« back to all changes in this revision

Viewing changes to src/libfaad/sbr_tf_grid.c

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2005-12-15 13:13:45 UTC
  • mto: (40.2.1 squeeze) (0.1.19 upstream)
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: james.westby@ubuntu.com-20051215131345-x3rwu3clsnn3v4dv
ImportĀ upstreamĀ versionĀ 1.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
** Commercial non-GPL licensing of this software is possible.
23
23
** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
24
24
**
25
 
** $Id: sbr_tf_grid.c,v 1.4 2004/12/03 01:15:30 tmattern Exp $
 
25
** $Id: sbr_tf_grid.c,v 1.5 2005/10/29 23:57:07 tmmm Exp $
26
26
**/
27
27
 
28
28
/* Time/Frequency grid */
46
46
static uint8_t middleBorder(sbr_info *sbr, uint8_t ch);
47
47
 
48
48
 
 
49
/* function constructs new time border vector */
 
50
/* first build into temp vector to be able to use previous vector on error */
49
51
uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch)
50
52
{
51
53
    uint8_t l, border, temp;
52
 
 
53
 
    for (l = 0; l <= sbr->L_E[ch]; l++)
54
 
    {
55
 
        sbr->t_E[ch][l] = 0;
56
 
    }
57
 
 
58
 
    sbr->t_E[ch][0] = sbr->rate * sbr->abs_bord_lead[ch];
59
 
    sbr->t_E[ch][sbr->L_E[ch]] = sbr->rate * sbr->abs_bord_trail[ch];
 
54
    uint8_t t_E_temp[6] = {0};
 
55
 
 
56
    t_E_temp[0] = sbr->rate * sbr->abs_bord_lead[ch];
 
57
    t_E_temp[sbr->L_E[ch]] = sbr->rate * sbr->abs_bord_trail[ch];
60
58
 
61
59
    switch (sbr->bs_frame_class[ch])
62
60
    {
65
63
        {
66
64
        case 4:
67
65
            temp = (int) (sbr->numTimeSlots / 4);
68
 
            sbr->t_E[ch][3] = sbr->rate * 3 * temp;
69
 
            sbr->t_E[ch][2] = sbr->rate * 2 * temp;
70
 
            sbr->t_E[ch][1] = sbr->rate * temp;
 
66
            t_E_temp[3] = sbr->rate * 3 * temp;
 
67
            t_E_temp[2] = sbr->rate * 2 * temp;
 
68
            t_E_temp[1] = sbr->rate * temp;
71
69
            break;
72
70
        case 2:
73
 
            sbr->t_E[ch][1] = sbr->rate * (int) (sbr->numTimeSlots / 2);
 
71
            t_E_temp[1] = sbr->rate * (int) (sbr->numTimeSlots / 2);
74
72
            break;
75
73
        default:
76
74
            break;
89
87
                    return 1;
90
88
 
91
89
                border -= sbr->bs_rel_bord[ch][l];
92
 
                sbr->t_E[ch][--i] = sbr->rate * border;
 
90
                t_E_temp[--i] = sbr->rate * border;
93
91
            }
94
92
        }
95
93
        break;
107
105
                if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen)
108
106
                    return 1;
109
107
 
110
 
                sbr->t_E[ch][i++] = sbr->rate * border;
 
108
                t_E_temp[i++] = sbr->rate * border;
111
109
            }
112
110
        }
113
111
        break;
125
123
                if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen)
126
124
                    return 1;
127
125
 
128
 
                sbr->t_E[ch][i++] = sbr->rate * border;
 
126
                t_E_temp[i++] = sbr->rate * border;
129
127
            }
130
128
        }
131
129
 
140
138
                    return 1;
141
139
 
142
140
                border -= sbr->bs_rel_bord_1[ch][l];
143
 
                sbr->t_E[ch][--i] = sbr->rate * border;
 
141
                t_E_temp[--i] = sbr->rate * border;
144
142
            }
145
143
        }
146
144
        break;
147
145
    }
148
146
 
 
147
    /* no error occured, we can safely use this t_E vector */
 
148
    for (l = 0; l < 6; l++)
 
149
    {
 
150
        sbr->t_E[ch][l] = t_E_temp[l];
 
151
    }
 
152
 
149
153
    return 0;
150
154
}
151
155