Lines Matching refs:ps

72  * @param ps    pointer to the Parametric Stereo context \
77 static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCommonContext *ps, \
80 int b, num = ps->nr_ ## PAR ## _par; \
83 int e_prev = e ? e - 1 : ps->num_env_old - 1; \
108 READ_PAR_DATA(iid, huff_offset[table_idx], 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant, 9, 3)
109 READ_PAR_DATA(icc, huff_offset[table_idx], 0, ps->icc_par[e][b] > 7U, 9, 2)
112 static int ps_read_extension_data(GetBitContext *gb, PSCommonContext *ps,
121 ps->enable_ipdopd = get_bits1(gb);
122 if (ps->enable_ipdopd) {
123 for (e = 0; e < ps->num_env; e++) {
125 read_ipdopd_data(NULL, gb, ps, ps->ipd_par, dt ? huff_ipd_dt : huff_ipd_df, e, dt);
127 read_ipdopd_data(NULL, gb, ps, ps->opd_par, dt ? huff_opd_dt : huff_opd_df, e, dt);
135 PSCommonContext *ps, int bits_left)
145 ps->enable_iid = get_bits1(gb);
146 if (ps->enable_iid) {
153 ps->nr_iid_par = nr_iidicc_par_tab[iid_mode];
154 ps->iid_quant = iid_mode > 2;
155 ps->nr_ipdopd_par = nr_iidopd_par_tab[iid_mode];
157 ps->enable_icc = get_bits1(gb);
158 if (ps->enable_icc) {
159 ps->icc_mode = get_bits(gb, 3);
160 if (ps->icc_mode > 5) {
162 ps->icc_mode);
165 ps->nr_icc_par = nr_iidicc_par_tab[ps->icc_mode];
167 ps->enable_ext = get_bits1(gb);
170 ps->frame_class = get_bits1(gb);
171 ps->num_env_old = ps->num_env;
172 ps->num_env = num_env_tab[ps->frame_class][get_bits(gb, 2)];
174 ps->border_position[0] = -1;
175 if (ps->frame_class) {
176 for (e = 1; e <= ps->num_env; e++) {
177 ps->border_position[e] = get_bits(gb, 5);
178 if (ps->border_position[e] < ps->border_position[e-1]) {
184 for (e = 1; e <= ps->num_env; e++)
185 ps->border_position[e] = (e * numQMFSlots >> ff_log2_tab[ps->num_env]) - 1;
187 if (ps->enable_iid) {
188 for (e = 0; e < ps->num_env; e++) {
190 if (read_iid_data(avctx, gb, ps, ps->iid_par, huff_iid[2*dt+ps->iid_quant], e, dt))
194 memset(ps->iid_par, 0, sizeof(ps->iid_par));
196 if (ps->enable_icc)
197 for (e = 0; e < ps->num_env; e++) {
199 if (read_icc_data(avctx, gb, ps, ps->icc_par, dt ? huff_icc_dt : huff_icc_df, e, dt))
203 memset(ps->icc_par, 0, sizeof(ps->icc_par));
205 if (ps->enable_ext) {
213 cnt -= 2 + ps_read_extension_data(gb, ps, ps_extension_id);
216 av_log(avctx, AV_LOG_ERROR, "ps extension overflow %d\n", cnt);
222 ps->enable_ipdopd &= !PS_BASELINE;
225 if (!ps->num_env || ps->border_position[ps->num_env] < numQMFSlots - 1) {
227 int source = ps->num_env ? ps->num_env - 1 : ps->num_env_old - 1;
229 if (source >= 0 && source != ps->num_env) {
230 if (ps->enable_iid) {
231 memcpy(ps->iid_par+ps->num_env, ps->iid_par+source, sizeof(ps->iid_par[0]));
233 if (ps->enable_icc) {
234 memcpy(ps->icc_par+ps->num_env, ps->icc_par+source, sizeof(ps->icc_par[0]));
236 if (ps->enable_ipdopd) {
237 memcpy(ps->ipd_par+ps->num_env, ps->ipd_par+source, sizeof(ps->ipd_par[0]));
238 memcpy(ps->opd_par+ps->num_env, ps->opd_par+source, sizeof(ps->opd_par[0]));
241 if (ps->enable_iid){
242 for (b = 0; b < ps->nr_iid_par; b++) {
243 if (FFABS(ps->iid_par[ps->num_env][b]) > 7 + 8 * ps->iid_quant) {
249 if (ps->enable_icc){
250 for (b = 0; b < ps->nr_iid_par; b++) {
251 if (ps->icc_par[ps->num_env][b] > 7U) {
257 ps->num_env++;
258 ps->border_position[ps->num_env] = numQMFSlots - 1;
262 ps->is34bands_old = ps->is34bands;
263 if (!PS_BASELINE && (ps->enable_iid || ps->enable_icc))
264 ps->is34bands = (ps->enable_iid && ps->nr_iid_par == 34) ||
265 (ps->enable_icc && ps->nr_icc_par == 34);
268 if (!ps->enable_ipdopd) {
269 memset(ps->ipd_par, 0, sizeof(ps->ipd_par));
270 memset(ps->opd_par, 0, sizeof(ps->opd_par));
274 ps->start = 1;
283 ps->start = 0;
285 memset(ps->iid_par, 0, sizeof(ps->iid_par));
286 memset(ps->icc_par, 0, sizeof(ps->icc_par));
287 memset(ps->ipd_par, 0, sizeof(ps->ipd_par));
288 memset(ps->opd_par, 0, sizeof(ps->opd_par));