| OLD | NEW |
| 1 /* Copyright (c) 2007-2008 CSIRO | 1 /* Copyright (c) 2007-2008 CSIRO |
| 2 Copyright (c) 2007-2009 Xiph.Org Foundation | 2 Copyright (c) 2007-2009 Xiph.Org Foundation |
| 3 Written by Jean-Marc Valin */ | 3 Written by Jean-Marc Valin */ |
| 4 /* | 4 /* |
| 5 Redistribution and use in source and binary forms, with or without | 5 Redistribution and use in source and binary forms, with or without |
| 6 modification, are permitted provided that the following conditions | 6 modification, are permitted provided that the following conditions |
| 7 are met: | 7 are met: |
| 8 | 8 |
| 9 - Redistributions of source code must retain the above copyright | 9 - Redistributions of source code must retain the above copyright |
| 10 notice, this list of conditions and the following disclaimer. | 10 notice, this list of conditions and the following disclaimer. |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 } | 241 } |
| 242 } | 242 } |
| 243 | 243 |
| 244 #endif /* CUSTOM_MODES */ | 244 #endif /* CUSTOM_MODES */ |
| 245 | 245 |
| 246 #define ALLOC_STEPS 6 | 246 #define ALLOC_STEPS 6 |
| 247 | 247 |
| 248 static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
skip_start, | 248 static inline int interp_bits2pulses(const CELTMode *m, int start, int end, int
skip_start, |
| 249 const int *bits1, const int *bits2, const int *thresh, const int *cap, opu
s_int32 total, opus_int32 *_balance, | 249 const int *bits1, const int *bits2, const int *thresh, const int *cap, opu
s_int32 total, opus_int32 *_balance, |
| 250 int skip_rsv, int *intensity, int intensity_rsv, int *dual_stereo, int dua
l_stereo_rsv, int *bits, | 250 int skip_rsv, int *intensity, int intensity_rsv, int *dual_stereo, int dua
l_stereo_rsv, int *bits, |
| 251 int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int
prev) | 251 int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int
prev, int signalBandwidth) |
| 252 { | 252 { |
| 253 opus_int32 psum; | 253 opus_int32 psum; |
| 254 int lo, hi; | 254 int lo, hi; |
| 255 int i, j; | 255 int i, j; |
| 256 int logM; | 256 int logM; |
| 257 int stereo; | 257 int stereo; |
| 258 int codedBands=-1; | 258 int codedBands=-1; |
| 259 int alloc_floor; | 259 int alloc_floor; |
| 260 opus_int32 left, percoeff; | 260 opus_int32 left, percoeff; |
| 261 int done; | 261 int done; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 if (encode) | 346 if (encode) |
| 347 { | 347 { |
| 348 /*This if() block is the only part of the allocation function that | 348 /*This if() block is the only part of the allocation function that |
| 349 is not a mandatory part of the bitstream: any bands we choose to | 349 is not a mandatory part of the bitstream: any bands we choose to |
| 350 skip here must be explicitly signaled.*/ | 350 skip here must be explicitly signaled.*/ |
| 351 /*Choose a threshold with some hysteresis to keep bands from | 351 /*Choose a threshold with some hysteresis to keep bands from |
| 352 fluctuating in and out.*/ | 352 fluctuating in and out.*/ |
| 353 #ifdef FUZZING | 353 #ifdef FUZZING |
| 354 if ((rand()&0x1) == 0) | 354 if ((rand()&0x1) == 0) |
| 355 #else | 355 #else |
| 356 if (codedBands<=start+2 || band_bits > ((j<prev?7:9)*band_width<<LM<
<BITRES)>>4) | 356 if (codedBands<=start+2 || (band_bits > ((j<prev?7:9)*band_width<<LM
<<BITRES)>>4 && j<=signalBandwidth)) |
| 357 #endif | 357 #endif |
| 358 { | 358 { |
| 359 ec_enc_bit_logp(ec, 1, 1); | 359 ec_enc_bit_logp(ec, 1, 1); |
| 360 break; | 360 break; |
| 361 } | 361 } |
| 362 ec_enc_bit_logp(ec, 0, 1); | 362 ec_enc_bit_logp(ec, 0, 1); |
| 363 } else if (ec_dec_bit_logp(ec, 1)) { | 363 } else if (ec_dec_bit_logp(ec, 1)) { |
| 364 break; | 364 break; |
| 365 } | 365 } |
| 366 /*We used a bit to skip this band.*/ | 366 /*We used a bit to skip this band.*/ |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 ebits[j] = bits[j] >> stereo >> BITRES; | 517 ebits[j] = bits[j] >> stereo >> BITRES; |
| 518 celt_assert(C*ebits[j]<<BITRES == bits[j]); | 518 celt_assert(C*ebits[j]<<BITRES == bits[j]); |
| 519 bits[j] = 0; | 519 bits[j] = 0; |
| 520 fine_priority[j] = ebits[j]<1; | 520 fine_priority[j] = ebits[j]<1; |
| 521 } | 521 } |
| 522 RESTORE_STACK; | 522 RESTORE_STACK; |
| 523 return codedBands; | 523 return codedBands; |
| 524 } | 524 } |
| 525 | 525 |
| 526 int compute_allocation(const CELTMode *m, int start, int end, const int *offsets
, const int *cap, int alloc_trim, int *intensity, int *dual_stereo, | 526 int compute_allocation(const CELTMode *m, int start, int end, const int *offsets
, const int *cap, int alloc_trim, int *intensity, int *dual_stereo, |
| 527 opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_
priority, int C, int LM, ec_ctx *ec, int encode, int prev) | 527 opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_
priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth) |
| 528 { | 528 { |
| 529 int lo, hi, len, j; | 529 int lo, hi, len, j; |
| 530 int codedBands; | 530 int codedBands; |
| 531 int skip_start; | 531 int skip_start; |
| 532 int skip_rsv; | 532 int skip_rsv; |
| 533 int intensity_rsv; | 533 int intensity_rsv; |
| 534 int dual_stereo_rsv; | 534 int dual_stereo_rsv; |
| 535 VARDECL(int, bits1); | 535 VARDECL(int, bits1); |
| 536 VARDECL(int, bits2); | 536 VARDECL(int, bits2); |
| 537 VARDECL(int, thresh); | 537 VARDECL(int, thresh); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 bits1j += offsets[j]; | 624 bits1j += offsets[j]; |
| 625 bits2j += offsets[j]; | 625 bits2j += offsets[j]; |
| 626 if (offsets[j]>0) | 626 if (offsets[j]>0) |
| 627 skip_start = j; | 627 skip_start = j; |
| 628 bits2j = IMAX(0,bits2j-bits1j); | 628 bits2j = IMAX(0,bits2j-bits1j); |
| 629 bits1[j] = bits1j; | 629 bits1[j] = bits1j; |
| 630 bits2[j] = bits2j; | 630 bits2[j] = bits2j; |
| 631 } | 631 } |
| 632 codedBands = interp_bits2pulses(m, start, end, skip_start, bits1, bits2, thre
sh, cap, | 632 codedBands = interp_bits2pulses(m, start, end, skip_start, bits1, bits2, thre
sh, cap, |
| 633 total, balance, skip_rsv, intensity, intensity_rsv, dual_stereo, dual_s
tereo_rsv, | 633 total, balance, skip_rsv, intensity, intensity_rsv, dual_stereo, dual_s
tereo_rsv, |
| 634 pulses, ebits, fine_priority, C, LM, ec, encode, prev); | 634 pulses, ebits, fine_priority, C, LM, ec, encode, prev, signalBandwidth)
; |
| 635 RESTORE_STACK; | 635 RESTORE_STACK; |
| 636 return codedBands; | 636 return codedBands; |
| 637 } | 637 } |
| 638 | 638 |
| OLD | NEW |