@@ -236,8 +236,8 @@ static void compute_angular_endpoints_for_quant_levels(
236236 unsigned int weight_count,
237237 const float * dec_weight_ideal_value,
238238 unsigned int max_quant_level,
239- float low_value[12 ],
240- float high_value[12 ]
239+ float low_value[TUNE_MAX_ANGULAR_QUANT + 1 ],
240+ float high_value[TUNE_MAX_ANGULAR_QUANT + 1 ]
241241) {
242242 unsigned int max_quant_steps = steps_for_quant_level[max_quant_level];
243243 unsigned int max_angular_steps = steps_for_quant_level[max_quant_level];
@@ -414,8 +414,8 @@ static void compute_angular_endpoints_for_quant_levels_lwc(
414414 unsigned int weight_count,
415415 const float * dec_weight_ideal_value,
416416 unsigned int max_quant_level,
417- float low_value[12 ],
418- float high_value[12 ]
417+ float low_value[TUNE_MAX_ANGULAR_QUANT + 1 ],
418+ float high_value[TUNE_MAX_ANGULAR_QUANT + 1 ]
419419) {
420420 unsigned int max_quant_steps = steps_for_quant_level[max_quant_level];
421421 unsigned int max_angular_steps = steps_for_quant_level[max_quant_level];
@@ -493,8 +493,8 @@ void compute_angular_endpoints_1plane(
493493 float (&low_value)[WEIGHTS_MAX_BLOCK_MODES] = tmpbuf.weight_low_value1 ;
494494 float (&high_value)[WEIGHTS_MAX_BLOCK_MODES] = tmpbuf.weight_high_value1 ;
495495
496- float (&low_values)[WEIGHTS_MAX_DECIMATION_MODES][12 ] = tmpbuf.weight_low_values1 ;
497- float (&high_values)[WEIGHTS_MAX_DECIMATION_MODES][12 ] = tmpbuf.weight_high_values1 ;
496+ float (&low_values)[WEIGHTS_MAX_DECIMATION_MODES][TUNE_MAX_ANGULAR_QUANT + 1 ] = tmpbuf.weight_low_values1 ;
497+ float (&high_values)[WEIGHTS_MAX_DECIMATION_MODES][TUNE_MAX_ANGULAR_QUANT + 1 ] = tmpbuf.weight_high_values1 ;
498498
499499 unsigned int max_decimation_modes = only_always ? bsd.decimation_mode_count_always
500500 : bsd.decimation_mode_count_selected ;
@@ -509,19 +509,25 @@ void compute_angular_endpoints_1plane(
509509
510510 unsigned int weight_count = bsd.get_decimation_info (i).weight_count ;
511511
512+ unsigned int max_precision = dm.maxprec_1plane ;
513+ if (max_precision > TUNE_MAX_ANGULAR_QUANT)
514+ {
515+ max_precision = TUNE_MAX_ANGULAR_QUANT;
516+ }
517+
512518 if (weight_count < tune_low_weight_limit)
513519 {
514520 compute_angular_endpoints_for_quant_levels_lwc (
515521 weight_count,
516522 dec_weight_ideal_value + i * BLOCK_MAX_WEIGHTS,
517- dm. maxprec_1plane , low_values[i], high_values[i]);
523+ max_precision , low_values[i], high_values[i]);
518524 }
519525 else
520526 {
521527 compute_angular_endpoints_for_quant_levels (
522528 weight_count,
523529 dec_weight_ideal_value + i * BLOCK_MAX_WEIGHTS,
524- dm. maxprec_1plane , low_values[i], high_values[i]);
530+ max_precision , low_values[i], high_values[i]);
525531 }
526532 }
527533
@@ -536,8 +542,16 @@ void compute_angular_endpoints_1plane(
536542 unsigned int quant_mode = bm.quant_mode ;
537543 unsigned int decim_mode = bm.decimation_mode ;
538544
539- low_value[i] = low_values[decim_mode][quant_mode];
540- high_value[i] = high_values[decim_mode][quant_mode];
545+ if (quant_mode <= TUNE_MAX_ANGULAR_QUANT)
546+ {
547+ low_value[i] = low_values[decim_mode][quant_mode];
548+ high_value[i] = high_values[decim_mode][quant_mode];
549+ }
550+ else
551+ {
552+ low_value[i] = 0 .0f ;
553+ high_value[i] = 1 .0f ;
554+ }
541555 }
542556}
543557
@@ -553,10 +567,10 @@ void compute_angular_endpoints_2planes(
553567 float (&low_value2)[WEIGHTS_MAX_BLOCK_MODES] = tmpbuf.weight_low_value2 ;
554568 float (&high_value2)[WEIGHTS_MAX_BLOCK_MODES] = tmpbuf.weight_high_value2 ;
555569
556- float (&low_values1)[WEIGHTS_MAX_DECIMATION_MODES][12 ] = tmpbuf.weight_low_values1 ;
557- float (&high_values1)[WEIGHTS_MAX_DECIMATION_MODES][12 ] = tmpbuf.weight_high_values1 ;
558- float (&low_values2)[WEIGHTS_MAX_DECIMATION_MODES][12 ] = tmpbuf.weight_low_values2 ;
559- float (&high_values2)[WEIGHTS_MAX_DECIMATION_MODES][12 ] = tmpbuf.weight_high_values2 ;
570+ float (&low_values1)[WEIGHTS_MAX_DECIMATION_MODES][TUNE_MAX_ANGULAR_QUANT + 1 ] = tmpbuf.weight_low_values1 ;
571+ float (&high_values1)[WEIGHTS_MAX_DECIMATION_MODES][TUNE_MAX_ANGULAR_QUANT + 1 ] = tmpbuf.weight_high_values1 ;
572+ float (&low_values2)[WEIGHTS_MAX_DECIMATION_MODES][TUNE_MAX_ANGULAR_QUANT + 1 ] = tmpbuf.weight_low_values2 ;
573+ float (&high_values2)[WEIGHTS_MAX_DECIMATION_MODES][TUNE_MAX_ANGULAR_QUANT + 1 ] = tmpbuf.weight_high_values2 ;
560574
561575 promise (bsd.decimation_mode_count_selected > 0 );
562576 for (unsigned int i = 0 ; i < bsd.decimation_mode_count_selected ; i++)
@@ -569,29 +583,35 @@ void compute_angular_endpoints_2planes(
569583
570584 unsigned int weight_count = bsd.get_decimation_info (i).weight_count ;
571585
586+ unsigned int max_precision = dm.maxprec_2planes ;
587+ if (max_precision > TUNE_MAX_ANGULAR_QUANT)
588+ {
589+ max_precision = TUNE_MAX_ANGULAR_QUANT;
590+ }
591+
572592 if (weight_count < tune_low_weight_limit)
573593 {
574594 compute_angular_endpoints_for_quant_levels_lwc (
575595 weight_count,
576596 dec_weight_ideal_value + i * BLOCK_MAX_WEIGHTS,
577- dm. maxprec_2planes , low_values1[i], high_values1[i]);
597+ max_precision , low_values1[i], high_values1[i]);
578598
579599 compute_angular_endpoints_for_quant_levels_lwc (
580600 weight_count,
581601 dec_weight_ideal_value + i * BLOCK_MAX_WEIGHTS + WEIGHTS_PLANE2_OFFSET,
582- dm. maxprec_2planes , low_values2[i], high_values2[i]);
602+ max_precision , low_values2[i], high_values2[i]);
583603 }
584604 else
585605 {
586606 compute_angular_endpoints_for_quant_levels (
587607 weight_count,
588608 dec_weight_ideal_value + i * BLOCK_MAX_WEIGHTS,
589- dm. maxprec_2planes , low_values1[i], high_values1[i]);
609+ max_precision , low_values1[i], high_values1[i]);
590610
591611 compute_angular_endpoints_for_quant_levels (
592612 weight_count,
593613 dec_weight_ideal_value + i * BLOCK_MAX_WEIGHTS + WEIGHTS_PLANE2_OFFSET,
594- dm. maxprec_2planes , low_values2[i], high_values2[i]);
614+ max_precision , low_values2[i], high_values2[i]);
595615 }
596616 }
597617
@@ -603,10 +623,20 @@ void compute_angular_endpoints_2planes(
603623 unsigned int quant_mode = bm.quant_mode ;
604624 unsigned int decim_mode = bm.decimation_mode ;
605625
606- low_value1[i] = low_values1[decim_mode][quant_mode];
607- high_value1[i] = high_values1[decim_mode][quant_mode];
608- low_value2[i] = low_values2[decim_mode][quant_mode];
609- high_value2[i] = high_values2[decim_mode][quant_mode];
626+ if (quant_mode <= TUNE_MAX_ANGULAR_QUANT)
627+ {
628+ low_value1[i] = low_values1[decim_mode][quant_mode];
629+ high_value1[i] = high_values1[decim_mode][quant_mode];
630+ low_value2[i] = low_values2[decim_mode][quant_mode];
631+ high_value2[i] = high_values2[decim_mode][quant_mode];
632+ }
633+ else
634+ {
635+ low_value1[i] = 0 .0f ;
636+ high_value1[i] = 1 .0f ;
637+ low_value2[i] = 0 .0f ;
638+ high_value2[i] = 1 .0f ;
639+ }
610640 }
611641}
612642
0 commit comments