MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / fix_coding_method_array

Function fix_coding_method_array

libavcodec/qdm2.c:499–534  ·  view source on GitHub ↗

* 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] */

Source from the content-addressed store, hash-verified

497 * @param coding_method q->coding_method[0][0][0]
498 */
499static 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/**

Callers 2

fill_coding_method_arrayFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected