* Called while processing data from subpackets 11 and 12. * Used after making changes to coding_method array. * * @param sb subband index * @param channels number of channels * @param coding_method q->coding_method[0][0][0] */
| 497 | * @param coding_method q->coding_method[0][0][0] |
| 498 | */ |
| 499 | static void fix_coding_method_array (int sb, int channels, sb_int8_array coding_method) |
| 500 | { |
| 501 | int j,k; |
| 502 | int ch; |
| 503 | int run, case_val; |
| 504 | int switchtable[23] = {0,5,1,5,5,5,5,5,2,5,5,5,5,5,5,5,3,5,5,5,5,5,4}; |
| 505 | |
| 506 | for (ch = 0; ch < channels; ch++) { |
| 507 | for (j = 0; j < 64; ) { |
| 508 | if((coding_method[ch][sb][j] - 8) > 22) { |
| 509 | run = 1; |
| 510 | case_val = 8; |
| 511 | } else { |
| 512 | switch (switchtable[coding_method[ch][sb][j]-8]) { |
| 513 | case 0: run = 10; case_val = 10; break; |
| 514 | case 1: run = 1; case_val = 16; break; |
| 515 | case 2: run = 5; case_val = 24; break; |
| 516 | case 3: run = 3; case_val = 30; break; |
| 517 | case 4: run = 1; case_val = 30; break; |
| 518 | case 5: run = 1; case_val = 8; break; |
| 519 | default: run = 1; case_val = 8; break; |
| 520 | } |
| 521 | } |
| 522 | for (k = 0; k < run; k++) |
| 523 | if (j + k < 128) |
| 524 | if (coding_method[ch][sb + (j + k) / 64][(j + k) % 64] > coding_method[ch][sb][j]) |
| 525 | if (k > 0) { |
| 526 | SAMPLES_NEEDED |
| 527 | //not debugged, almost never used |
| 528 | memset(&coding_method[ch][sb][j + k], case_val, k * sizeof(int8_t)); |
| 529 | memset(&coding_method[ch][sb][j + k], case_val, 3 * sizeof(int8_t)); |
| 530 | } |
| 531 | j += run; |
| 532 | } |
| 533 | } |
| 534 | } |
| 535 | |
| 536 | |
| 537 | /** |
no outgoing calls
no test coverage detected