diff options
author | Gregory Maxwell <greg@xiph.org> | 2011-02-14 23:27:52 +0300 |
---|---|---|
committer | Jean-Marc Valin <jean-marc.valin@octasic.com> | 2011-02-14 23:44:31 +0300 |
commit | 5b236756a3243b5ea71f8910bbb09f319c5e4e15 (patch) | |
tree | 913cf84270a9b4fdcbf6d6d13718ce899f172e42 | |
parent | b3c05b6be2a6579af55a625903e9e70687a4d77f (diff) |
Correct a number of uninitialized value problems when end!=nbEBands. Now 8khz/20ms audio can be decoded at 48kHz and vice versa (with the PF turned off).
-rw-r--r-- | libcelt/bands.c | 2 | ||||
-rw-r--r-- | libcelt/quant_bands.c | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/libcelt/bands.c b/libcelt/bands.c index 1c8fe25..1948bae 100644 --- a/libcelt/bands.c +++ b/libcelt/bands.c @@ -202,7 +202,7 @@ void denormalise_bands(const CELTMode *m, const celt_norm * restrict X, celt_sig x++; } while (++j<band_end); } - for (i=M*eBands[m->nbEBands];i<N;i++) + for (i=M*eBands[end];i<N;i++) *f++ = 0; } while (++c<C); } diff --git a/libcelt/quant_bands.c b/libcelt/quant_bands.c index 1de7d67..9aa05fe 100644 --- a/libcelt/quant_bands.c +++ b/libcelt/quant_bands.c @@ -272,7 +272,7 @@ void quant_coarse_energy(const CELTMode *m, int start, int end, int effEnd, int badness1=0; SAVE_STACK; - intra = force_intra || (*delayedIntra && nbAvailableBytes > end*C); + intra = force_intra || (*delayedIntra && nbAvailableBytes > (end-start)*C); if (/*shortBlocks || */intra_decision(eBands, oldEBands, start, effEnd, m->nbEBands, C)) *delayedIntra = 1; else @@ -295,7 +295,7 @@ void quant_coarse_energy(const CELTMode *m, int start, int end, int effEnd, ALLOC(oldEBands_intra, C*m->nbEBands, celt_word16); ALLOC(error_intra, C*m->nbEBands, celt_word16); - CELT_COPY(oldEBands_intra, oldEBands, C*end); + CELT_COPY(oldEBands_intra, oldEBands, C*m->nbEBands); if (two_pass || intra) { @@ -335,12 +335,12 @@ void quant_coarse_energy(const CELTMode *m, int start, int end, int effEnd, /* Copy intra bits to bit-stream */ CELT_COPY(ec_get_buffer(&enc_intra_state) + nstart_bytes, intra_bits, nintra_bytes - nstart_bytes); - CELT_COPY(oldEBands, oldEBands_intra, C*end); - CELT_COPY(error, error_intra, C*end); + CELT_COPY(oldEBands, oldEBands_intra, C*m->nbEBands); + CELT_COPY(error, error_intra, C*m->nbEBands); } } else { - CELT_COPY(oldEBands, oldEBands_intra, C*end); - CELT_COPY(error, error_intra, C*end); + CELT_COPY(oldEBands, oldEBands_intra, C*m->nbEBands); + CELT_COPY(error, error_intra, C*m->nbEBands); } RESTORE_STACK; } |