Mercurial > libavcodec.hg
comparison aac.c @ 7857:d7801471cd52 libavcodec
Apply pulses to unscaled coefficients rather than scaled.
Slight reworking of a patch by Alex Converse (alex converse gmail com)
author | superdump |
---|---|
date | Sat, 13 Sep 2008 20:51:36 +0000 |
parents | 0882c93a0c11 |
children | f75806078d46 |
comparison
equal
deleted
inserted
replaced
7856:0882c93a0c11 | 7857:d7801471cd52 |
---|---|
752 } | 752 } |
753 coef += ics->group_len[g]<<7; | 753 coef += ics->group_len[g]<<7; |
754 } | 754 } |
755 | 755 |
756 if (pulse_present) { | 756 if (pulse_present) { |
757 idx = 0; | |
757 for(i = 0; i < pulse->num_pulse; i++){ | 758 for(i = 0; i < pulse->num_pulse; i++){ |
758 float co = coef_base[ pulse->pos[i] ]; | 759 float co = coef_base[ pulse->pos[i] ]; |
760 while(offsets[idx + 1] <= pulse->pos[i]) | |
761 idx++; | |
762 if (band_type[idx] != NOISE_BT && sf[idx]) { | |
759 float ico = -pulse->amp[i]; | 763 float ico = -pulse->amp[i]; |
760 if (co) | 764 if (co) { |
765 co /= sf[idx]; | |
761 ico = co / sqrtf(sqrtf(fabsf(co))) + (co > 0 ? -ico : ico); | 766 ico = co / sqrtf(sqrtf(fabsf(co))) + (co > 0 ? -ico : ico); |
762 coef_base[ pulse->pos[i] ] = cbrtf(fabsf(ico)) * ico; | 767 } |
768 coef_base[ pulse->pos[i] ] = cbrtf(fabsf(ico)) * ico * sf[idx]; | |
769 } | |
763 } | 770 } |
764 } | 771 } |
765 return 0; | 772 return 0; |
766 } | 773 } |
767 | 774 |