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

Function categorize

libavcodec/cook.c:425–517  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

423 */
424
425static void categorize(COOKContext *q, COOKSubpacket *p, int* quant_index_table,
426 int* category, int* category_index){
427 int exp_idx, bias, tmpbias1, tmpbias2, bits_left, num_bits, index, v, i, j;
428 int exp_index2[102];
429 int exp_index1[102];
430
431 int tmp_categorize_array[128*2];
432 int tmp_categorize_array1_idx=p->numvector_size;
433 int tmp_categorize_array2_idx=p->numvector_size;
434
435 bits_left = p->bits_per_subpacket - get_bits_count(&q->gb);
436
437 if(bits_left > q->samples_per_channel) {
438 bits_left = q->samples_per_channel +
439 ((bits_left - q->samples_per_channel)*5)/8;
440 //av_log(q->avctx, AV_LOG_ERROR, "bits_left = %d\n",bits_left);
441 }
442
443 memset(&exp_index1,0,102*sizeof(int));
444 memset(&exp_index2,0,102*sizeof(int));
445 memset(&tmp_categorize_array,0,128*2*sizeof(int));
446
447 bias=-32;
448
449 /* Estimate bias. */
450 for (i=32 ; i>0 ; i=i/2){
451 num_bits = 0;
452 index = 0;
453 for (j=p->total_subbands ; j>0 ; j--){
454 exp_idx = av_clip((i - quant_index_table[index] + bias) / 2, 0, 7);
455 index++;
456 num_bits+=expbits_tab[exp_idx];
457 }
458 if(num_bits >= bits_left - 32){
459 bias+=i;
460 }
461 }
462
463 /* Calculate total number of bits. */
464 num_bits=0;
465 for (i=0 ; i<p->total_subbands ; i++) {
466 exp_idx = av_clip((bias - quant_index_table[i]) / 2, 0, 7);
467 num_bits += expbits_tab[exp_idx];
468 exp_index1[i] = exp_idx;
469 exp_index2[i] = exp_idx;
470 }
471 tmpbias1 = tmpbias2 = num_bits;
472
473 for (j = 1 ; j < p->numvector_size ; j++) {
474 if (tmpbias1 + tmpbias2 > 2*bits_left) { /* ---> */
475 int max = -999999;
476 index=-1;
477 for (i=0 ; i<p->total_subbands ; i++){
478 if (exp_index1[i] < 7) {
479 v = (-2*exp_index1[i]) - quant_index_table[i] + bias;
480 if ( v >= max) {
481 max = v;
482 index = i;

Callers 1

mono_decodeFunction · 0.85

Calls 2

get_bits_countFunction · 0.85
av_clipFunction · 0.85

Tested by

no test coverage detected