Lines Matching refs:dpp
549 int nb_samples, struct Decorr *dpp, int dir)
553 dpp->sumA = 0;
560 dpp->weightA = restore_weight(store_weight(dpp->weightA));
563 dpp->samplesA[i] = wp_exp2(log2s(dpp->samplesA[i]));
565 if (dpp->value > MAX_TERM) {
569 sam_A = ((3 - (dpp->value & 1)) * dpp->samplesA[0] - dpp->samplesA[1]) >> !(dpp->value & 1);
571 dpp->samplesA[1] = dpp->samplesA[0];
572 dpp->samplesA[0] = left = in_samples[0];
574 left -= APPLY_WEIGHT(dpp->weightA, sam_A);
575 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam_A, left);
576 dpp->sumA += dpp->weightA;
581 } else if (dpp->value > 0) {
583 int k = (m + dpp->value) & (MAX_TERM - 1);
586 sam_A = dpp->samplesA[m];
587 dpp->samplesA[k] = left = in_samples[0];
590 left -= APPLY_WEIGHT(dpp->weightA, sam_A);
591 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam_A, left);
592 dpp->sumA += dpp->weightA;
599 if (m && dpp->value > 0 && dpp->value <= MAX_TERM) {
602 memcpy(temp_A, dpp->samplesA, sizeof(dpp->samplesA));
605 dpp->samplesA[i] = temp_A[m];
611 static void reverse_mono_decorr(struct Decorr *dpp)
613 if (dpp->value > MAX_TERM) {
616 if (dpp->value & 1)
617 sam_A = 2 * dpp->samplesA[0] - dpp->samplesA[1];
619 sam_A = (3 * dpp->samplesA[0] - dpp->samplesA[1]) >> 1;
621 dpp->samplesA[1] = dpp->samplesA[0];
622 dpp->samplesA[0] = sam_A;
624 if (dpp->value & 1)
625 sam_A = 2 * dpp->samplesA[0] - dpp->samplesA[1];
627 sam_A = (3 * dpp->samplesA[0] - dpp->samplesA[1]) >> 1;
629 dpp->samplesA[1] = sam_A;
630 } else if (dpp->value > 1) {
633 for (i = 0, j = dpp->value - 1, k = 0; k < dpp->value / 2; i++, j--, k++) {
636 dpp->samplesA[i] ^= dpp->samplesA[j];
637 dpp->samplesA[j] ^= dpp->samplesA[i];
638 dpp->samplesA[i] ^= dpp->samplesA[j];
684 int nb_samples, struct Decorr *dpp,
687 struct Decorr dp, *dppi = dpp + tindex;
1127 int nb_samples, struct Decorr *dpp, int dir)
1131 dpp->sumA = dpp->sumB = 0;
1140 dpp->weightA = restore_weight(store_weight(dpp->weightA));
1141 dpp->weightB = restore_weight(store_weight(dpp->weightB));
1144 dpp->samplesA[i] = wp_exp2(log2s(dpp->samplesA[i]));
1145 dpp->samplesB[i] = wp_exp2(log2s(dpp->samplesB[i]));
1148 switch (dpp->value) {
1153 sam = dpp->samplesA[0];
1154 dpp->samplesA[0] = dpp->samplesA[1];
1155 out_left[0] = tmp = (dpp->samplesA[1] = in_left[0]) - APPLY_WEIGHT(dpp->weightA, sam);
1156 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1157 dpp->sumA += dpp->weightA;
1159 sam = dpp->samplesB[0];
1160 dpp->samplesB[0] = dpp->samplesB[1];
1161 out_right[0] = tmp = (dpp->samplesB[1] = in_right[0]) - APPLY_WEIGHT(dpp->weightB, sam);
1162 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1163 dpp->sumB += dpp->weightB;
1175 sam = 2 * dpp->samplesA[0] - dpp->samplesA[1];
1176 dpp->samplesA[1] = dpp->samplesA[0];
1177 out_left[0] = tmp = (dpp->samplesA[0] = in_left[0]) - APPLY_WEIGHT(dpp->weightA, sam);
1178 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1179 dpp->sumA += dpp->weightA;
1181 sam = 2 * dpp->samplesB[0] - dpp->samplesB[1];
1182 dpp->samplesB[1] = dpp->samplesB[0];
1183 out_right[0] = tmp = (dpp->samplesB[0] = in_right[0]) - APPLY_WEIGHT (dpp->weightB, sam);
1184 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1185 dpp->sumB += dpp->weightB;
1197 sam = dpp->samplesA[0] + ((dpp->samplesA[0] - dpp->samplesA[1]) >> 1);
1198 dpp->samplesA[1] = dpp->samplesA[0];
1199 out_left[0] = tmp = (dpp->samplesA[0] = in_left[0]) - APPLY_WEIGHT(dpp->weightA, sam);
1200 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1201 dpp->sumA += dpp->weightA;
1203 sam = dpp->samplesB[0] + ((dpp->samplesB[0] - dpp->samplesB[1]) >> 1);
1204 dpp->samplesB[1] = dpp->samplesB[0];
1205 out_right[0] = tmp = (dpp->samplesB[0] = in_right[0]) - APPLY_WEIGHT(dpp->weightB, sam);
1206 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1207 dpp->sumB += dpp->weightB;
1216 int k = dpp->value & (MAX_TERM - 1);
1221 sam = dpp->samplesA[m];
1222 out_left[0] = tmp = (dpp->samplesA[k] = in_left[0]) - APPLY_WEIGHT(dpp->weightA, sam);
1223 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1224 dpp->sumA += dpp->weightA;
1226 sam = dpp->samplesB[m];
1227 out_right[0] = tmp = (dpp->samplesB[k] = in_right[0]) - APPLY_WEIGHT(dpp->weightB, sam);
1228 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1229 dpp->sumB += dpp->weightB;
1243 memcpy(temp_A, dpp->samplesA, sizeof(dpp->samplesA));
1244 memcpy(temp_B, dpp->samplesB, sizeof(dpp->samplesB));
1247 dpp->samplesA[k] = temp_A[m];
1248 dpp->samplesB[k] = temp_B[m];
1258 sam_A = dpp->samplesA[0];
1259 out_left[0] = tmp = (sam_B = in_left[0]) - APPLY_WEIGHT(dpp->weightA, sam_A);
1260 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
1261 dpp->sumA += dpp->weightA;
1263 out_right[0] = tmp = (dpp->samplesA[0] = in_right[0]) - APPLY_WEIGHT(dpp->weightB, sam_B);
1264 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
1265 dpp->sumB += dpp->weightB;
1277 sam_B = dpp->samplesB[0];
1278 out_right[0] = tmp = (sam_A = in_right[0]) - APPLY_WEIGHT(dpp->weightB, sam_B);
1279 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
1280 dpp->sumB += dpp->weightB;
1282 out_left[0] = tmp = (dpp->samplesB[0] = in_left[0]) - APPLY_WEIGHT(dpp->weightA, sam_A);
1283 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
1284 dpp->sumA += dpp->weightA;
1296 sam_A = dpp->samplesA[0];
1297 sam_B = dpp->samplesB[0];
1299 dpp->samplesA[0] = tmp = in_right[0];
1300 out_right[0] = tmp -= APPLY_WEIGHT(dpp->weightB, sam_B);
1301 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
1302 dpp->sumB += dpp->weightB;
1304 dpp->samplesB[0] = tmp = in_left[0];
1305 out_left[0] = tmp -= APPLY_WEIGHT(dpp->weightA, sam_A);
1306 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
1307 dpp->sumA += dpp->weightA;
1318 static void reverse_decorr(struct Decorr *dpp)
1320 if (dpp->value > MAX_TERM) {
1323 if (dpp->value & 1) {
1324 sam_A = 2 * dpp->samplesA[0] - dpp->samplesA[1];
1325 sam_B = 2 * dpp->samplesB[0] - dpp->samplesB[1];
1327 sam_A = (3 * dpp->samplesA[0] - dpp->samplesA[1]) >> 1;
1328 sam_B = (3 * dpp->samplesB[0] - dpp->samplesB[1]) >> 1;
1331 dpp->samplesA[1] = dpp->samplesA[0];
1332 dpp->samplesB[1] = dpp->samplesB[0];
1333 dpp->samplesA[0] = sam_A;
1334 dpp->samplesB[0] = sam_B;
1336 if (dpp->value & 1) {
1337 sam_A = 2 * dpp->samplesA[0] - dpp->samplesA[1];
1338 sam_B = 2 * dpp->samplesB[0] - dpp->samplesB[1];
1340 sam_A = (3 * dpp->samplesA[0] - dpp->samplesA[1]) >> 1;
1341 sam_B = (3 * dpp->samplesB[0] - dpp->samplesB[1]) >> 1;
1344 dpp->samplesA[1] = sam_A;
1345 dpp->samplesB[1] = sam_B;
1346 } else if (dpp->value > 1) {
1349 for (i = 0, j = dpp->value - 1, k = 0; k < dpp->value / 2; i++, j--, k++) {
1352 dpp->samplesA[i] ^= dpp->samplesA[j];
1353 dpp->samplesA[j] ^= dpp->samplesA[i];
1354 dpp->samplesA[i] ^= dpp->samplesA[j];
1355 dpp->samplesB[i] ^= dpp->samplesB[j];
1356 dpp->samplesB[j] ^= dpp->samplesB[i];
1357 dpp->samplesB[i] ^= dpp->samplesB[j];
1364 int nb_samples, struct Decorr *dpp)
1368 dpp->weightA = restore_weight(store_weight(dpp->weightA));
1369 dpp->weightB = restore_weight(store_weight(dpp->weightB));
1372 dpp->samplesA[i] = wp_exp2(log2s(dpp->samplesA[i]));
1373 dpp->samplesB[i] = wp_exp2(log2s(dpp->samplesB[i]));
1376 switch (dpp->value) {
1381 sam = dpp->samplesA[0];
1382 dpp->samplesA[0] = dpp->samplesA[1];
1383 out_left[i] = tmp = (dpp->samplesA[1] = in_left[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
1384 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1386 sam = dpp->samplesB[0];
1387 dpp->samplesB[0] = dpp->samplesB[1];
1388 out_right[i] = tmp = (dpp->samplesB[1] = in_right[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
1389 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1396 sam = 2 * dpp->samplesA[0] - dpp->samplesA[1];
1397 dpp->samplesA[1] = dpp->samplesA[0];
1398 out_left[i] = tmp = (dpp->samplesA[0] = in_left[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
1399 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1401 sam = 2 * dpp->samplesB[0] - dpp->samplesB[1];
1402 dpp->samplesB[1] = dpp->samplesB[0];
1403 out_right[i] = tmp = (dpp->samplesB[0] = in_right[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
1404 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1411 sam = dpp->samplesA[0] + ((dpp->samplesA[0] - dpp->samplesA[1]) >> 1);
1412 dpp->samplesA[1] = dpp->samplesA[0];
1413 out_left[i] = tmp = (dpp->samplesA[0] = in_left[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
1414 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1416 sam = dpp->samplesB[0] + ((dpp->samplesB[0] - dpp->samplesB[1]) >> 1);
1417 dpp->samplesB[1] = dpp->samplesB[0];
1418 out_right[i] = tmp = (dpp->samplesB[0] = in_right[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
1419 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1423 int k = dpp->value & (MAX_TERM - 1);
1428 sam = dpp->samplesA[m];
1429 out_left[i] = tmp = (dpp->samplesA[k] = in_left[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
1430 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
1432 sam = dpp->samplesB[m];
1433 out_right[i] = tmp = (dpp->samplesB[k] = in_right[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
1434 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
1444 memcpy(temp_A, dpp->samplesA, sizeof(dpp->samplesA));
1445 memcpy(temp_B, dpp->samplesB, sizeof(dpp->samplesB));
1448 dpp->samplesA[k] = temp_A[m];
1449 dpp->samplesB[k] = temp_B[m];
1459 sam_A = dpp->samplesA[0];
1460 out_left[i] = tmp = (sam_B = in_left[i]) - APPLY_WEIGHT_I(dpp->weightA, sam_A);
1461 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
1463 out_right[i] = tmp = (dpp->samplesA[0] = in_right[i]) - APPLY_WEIGHT_I(dpp->weightB, sam_B);
1464 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
1471 sam_B = dpp->samplesB[0];
1472 out_right[i] = tmp = (sam_A = in_right[i]) - APPLY_WEIGHT_I(dpp->weightB, sam_B);
1473 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
1475 out_left[i] = tmp = (dpp->samplesB[0] = in_left[i]) - APPLY_WEIGHT_I(dpp->weightA, sam_A);
1476 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
1483 sam_A = dpp->samplesA[0];
1484 sam_B = dpp->samplesB[0];
1486 dpp->samplesA[0] = tmp = in_right[i];
1487 out_right[i] = tmp -= APPLY_WEIGHT_I(dpp->weightB, sam_B);
1488 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
1490 dpp->samplesB[0] = tmp = in_left[i];
1491 out_left[i] = tmp -= APPLY_WEIGHT_I(dpp->weightA, sam_A);
1492 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
2232 static void decorr_stereo_pass2(struct Decorr *dpp,
2238 switch (dpp->value) {
2243 sam = 2 * dpp->samplesA[0] - dpp->samplesA[1];
2244 dpp->samplesA[1] = dpp->samplesA[0];
2245 samples_l[i] = tmp = (dpp->samplesA[0] = samples_l[i]) - APPLY_WEIGHT(dpp->weightA, sam);
2246 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
2248 sam = 2 * dpp->samplesB[0] - dpp->samplesB[1];
2249 dpp->samplesB[1] = dpp->samplesB[0];
2250 samples_r[i] = tmp = (dpp->samplesB[0] = samples_r[i]) - APPLY_WEIGHT(dpp->weightB, sam);
2251 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
2258 sam = dpp->samplesA[0] + ((dpp->samplesA[0] - dpp->samplesA[1]) >> 1);
2259 dpp->samplesA[1] = dpp->samplesA[0];
2260 samples_l[i] = tmp = (dpp->samplesA[0] = samples_l[i]) - APPLY_WEIGHT(dpp->weightA, sam);
2261 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
2263 sam = dpp->samplesB[0] + ((dpp->samplesB[0] - dpp->samplesB[1]) >> 1);
2264 dpp->samplesB[1] = dpp->samplesB[0];
2265 samples_r[i] = tmp = (dpp->samplesB[0] = samples_r[i]) - APPLY_WEIGHT(dpp->weightB, sam);
2266 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
2270 for (m = 0, k = dpp->value & (MAX_TERM - 1), i = 0; i < nb_samples; i++) {
2273 sam = dpp->samplesA[m];
2274 samples_l[i] = tmp = (dpp->samplesA[k] = samples_l[i]) - APPLY_WEIGHT(dpp->weightA, sam);
2275 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, tmp);
2277 sam = dpp->samplesB[m];
2278 samples_r[i] = tmp = (dpp->samplesB[k] = samples_r[i]) - APPLY_WEIGHT(dpp->weightB, sam);
2279 UPDATE_WEIGHT(dpp->weightB, dpp->delta, sam, tmp);
2287 memcpy(temp_A, dpp->samplesA, sizeof (dpp->samplesA));
2288 memcpy(temp_B, dpp->samplesB, sizeof (dpp->samplesB));
2291 dpp->samplesA[k] = temp_A[m];
2292 dpp->samplesB[k] = temp_B[m];
2301 sam_A = dpp->samplesA[0];
2302 samples_l[i] = tmp = (sam_B = samples_l[i]) - APPLY_WEIGHT(dpp->weightA, sam_A);
2303 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
2305 samples_r[i] = tmp = (dpp->samplesA[0] = samples_r[i]) - APPLY_WEIGHT(dpp->weightB, sam_B);
2306 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
2313 sam_B = dpp->samplesB[0];
2314 samples_r[i] = tmp = (sam_A = samples_r[i]) - APPLY_WEIGHT(dpp->weightB, sam_B);
2315 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
2317 samples_l[i] = tmp = (dpp->samplesB[0] = samples_l[i]) - APPLY_WEIGHT(dpp->weightA, sam_A);
2318 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
2325 sam_A = dpp->samplesA[0];
2326 sam_B = dpp->samplesB[0];
2328 dpp->samplesA[0] = tmp = samples_r[i];
2329 samples_r[i] = tmp -= APPLY_WEIGHT(dpp->weightB, sam_B);
2330 UPDATE_WEIGHT_CLIP(dpp->weightB, dpp->delta, sam_B, tmp);
2332 dpp->samplesB[0] = tmp = samples_l[i];
2333 samples_l[i] = tmp -= APPLY_WEIGHT(dpp->weightA, sam_A);
2334 UPDATE_WEIGHT_CLIP(dpp->weightA, dpp->delta, sam_A, tmp);
2351 static void decorr_stereo_pass_id2(struct Decorr *dpp,
2357 switch (dpp->value) {
2362 sam = 2 * dpp->samplesA[0] - dpp->samplesA[1];
2363 dpp->samplesA[1] = dpp->samplesA[0];
2364 samples_l[i] = tmp = (dpp->samplesA[0] = samples_l[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
2365 update_weight_d2(dpp->weightA, dpp->delta, sam, tmp);
2367 sam = 2 * dpp->samplesB[0] - dpp->samplesB[1];
2368 dpp->samplesB[1] = dpp->samplesB[0];
2369 samples_r[i] = tmp = (dpp->samplesB[0] = samples_r[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
2370 update_weight_d2(dpp->weightB, dpp->delta, sam, tmp);
2377 sam = dpp->samplesA[0] + ((dpp->samplesA[0] - dpp->samplesA[1]) >> 1);
2378 dpp->samplesA[1] = dpp->samplesA[0];
2379 samples_l[i] = tmp = (dpp->samplesA[0] = samples_l[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
2380 update_weight_d2(dpp->weightA, dpp->delta, sam, tmp);
2382 sam = dpp->samplesB[0] + ((dpp->samplesB[0] - dpp->samplesB[1]) >> 1);
2383 dpp->samplesB[1] = dpp->samplesB[0];
2384 samples_r[i] = tmp = (dpp->samplesB[0] = samples_r[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
2385 update_weight_d2(dpp->weightB, dpp->delta, sam, tmp);
2389 for (m = 0, k = dpp->value & (MAX_TERM - 1), i = 0; i < nb_samples; i++) {
2392 sam = dpp->samplesA[m];
2393 samples_l[i] = tmp = (dpp->samplesA[k] = samples_l[i]) - APPLY_WEIGHT_I(dpp->weightA, sam);
2394 update_weight_d2(dpp->weightA, dpp->delta, sam, tmp);
2396 sam = dpp->samplesB[m];
2397 samples_r[i] = tmp = (dpp->samplesB[k] = samples_r[i]) - APPLY_WEIGHT_I(dpp->weightB, sam);
2398 update_weight_d2(dpp->weightB, dpp->delta, sam, tmp);
2407 memcpy(temp_A, dpp->samplesA, sizeof(dpp->samplesA));
2408 memcpy(temp_B, dpp->samplesB, sizeof(dpp->samplesB));
2411 dpp->samplesA[k] = temp_A[m];
2412 dpp->samplesB[k] = temp_B[m];
2421 sam_A = dpp->samplesA[0];
2422 samples_l[i] = tmp = (sam_B = samples_l[i]) - APPLY_WEIGHT_I(dpp->weightA, sam_A);
2423 update_weight_clip_d2(dpp->weightA, dpp->delta, sam_A, tmp);
2425 samples_r[i] = tmp = (dpp->samplesA[0] = samples_r[i]) - APPLY_WEIGHT_I(dpp->weightB, sam_B);
2426 update_weight_clip_d2(dpp->weightB, dpp->delta, sam_B, tmp);
2433 sam_B = dpp->samplesB[0];
2434 samples_r[i] = tmp = (sam_A = samples_r[i]) - APPLY_WEIGHT_I(dpp->weightB, sam_B);
2435 update_weight_clip_d2(dpp->weightB, dpp->delta, sam_B, tmp);
2437 samples_l[i] = tmp = (dpp->samplesB[0] = samples_l[i]) - APPLY_WEIGHT_I(dpp->weightA, sam_A);
2438 update_weight_clip_d2(dpp->weightA, dpp->delta, sam_A, tmp);
2445 sam_A = dpp->samplesA[0];
2446 sam_B = dpp->samplesB[0];
2448 dpp->samplesA[0] = tmp = samples_r[i];
2449 samples_r[i] = tmp -= APPLY_WEIGHT_I(dpp->weightB, sam_B);
2450 update_weight_clip_d2(dpp->weightB, dpp->delta, sam_B, tmp);
2452 dpp->samplesB[0] = tmp = samples_l[i];
2453 samples_l[i] = tmp -= APPLY_WEIGHT_I(dpp->weightA, sam_A);
2454 update_weight_clip_d2(dpp->weightA, dpp->delta, sam_A, tmp);
2476 struct Decorr *dpp;
2608 struct Decorr *dpp = &s->decorr_passes[i];
2609 bytestream2_put_byte(&pb, ((dpp->value + 5) & 0x1f) | ((dpp->delta << 5) & 0xe0));
2624 struct Decorr *dpp = &s->decorr_passes[i];
2626 if (store_weight(dpp->weightA) ||
2627 (!(s->flags & WV_MONO_DATA) && store_weight(dpp->weightB)))
2632 struct Decorr *dpp = &s->decorr_passes[i];
2634 WRITE_DECWEIGHT(dpp->weightA);
2636 WRITE_DECWEIGHT(dpp->weightB);
2638 dpp->weightA = dpp->weightB = 0;
2657 struct Decorr *dpp = &s->decorr_passes[i];
2659 if (dpp->value > MAX_TERM) {
2660 WRITE_DECSAMPLE(dpp->samplesA[0]);
2661 WRITE_DECSAMPLE(dpp->samplesA[1]);
2663 WRITE_DECSAMPLE(dpp->samplesB[0]);
2664 WRITE_DECSAMPLE(dpp->samplesB[1]);
2666 } else if (dpp->value < 0) {
2667 WRITE_DECSAMPLE(dpp->samplesA[0]);
2668 WRITE_DECSAMPLE(dpp->samplesB[0]);
2670 for (j = 0; j < dpp->value; j++) {
2671 WRITE_DECSAMPLE(dpp->samplesA[j]);
2673 WRITE_DECSAMPLE(dpp->samplesB[j]);
2677 CLEAR(dpp->samplesA);
2678 CLEAR(dpp->samplesB);
2717 for (tcount = s->num_terms, dpp = s->decorr_passes; tcount--; dpp++) {
2720 if (dpp->value > MAX_TERM) {
2721 if (dpp->value & 1)
2722 sam = 2 * dpp->samplesA[0] - dpp->samplesA[1];
2724 sam = (3 * dpp->samplesA[0] - dpp->samplesA[1]) >> 1;
2726 dpp->samplesA[1] = dpp->samplesA[0];
2727 dpp->samplesA[0] = code;
2729 sam = dpp->samplesA[m];
2730 dpp->samplesA[(m + dpp->value) & (MAX_TERM - 1)] = code;
2733 code -= APPLY_WEIGHT(dpp->weightA, sam);
2734 UPDATE_WEIGHT(dpp->weightA, dpp->delta, sam, code);
2741 for (tcount = s->num_terms, dpp = s->decorr_passes; tcount--; dpp++)
2742 if (dpp->value > 0 && dpp->value <= MAX_TERM) {
2746 memcpy(temp_A, dpp->samplesA, sizeof(dpp->samplesA));
2747 memcpy(temp_B, dpp->samplesB, sizeof(dpp->samplesB));
2750 dpp->samplesA[k] = temp_A[m];
2751 dpp->samplesB[k] = temp_B[m];
2763 struct Decorr *dpp = &s->decorr_passes[i];
2764 if (((s->flags & MAG_MASK) >> MAG_LSB) >= 16 || dpp->delta != 2)
2765 decorr_stereo_pass2(dpp, samples_l, samples_r, nb_samples);
2767 decorr_stereo_pass_id2(dpp, samples_l, samples_r, nb_samples);