ref: 66c612ef43baa3e2d7094b4a057c1370ce629dbb
parent: 11785e92c3a4310caee80209beba5536ab4a4297
author: Jean-Marc Valin <[email protected]>
date: Mon Aug 15 10:08:57 EDT 2011
Fixes an encoder bugg when requesting a CBR rate over the allowable limit
--- a/libcelt/mdct.c
+++ b/libcelt/mdct.c
@@ -99,6 +99,7 @@
#endif /* CUSTOM_MODES */
+/* Forward MDCT trashes the input array */
void clt_mdct_forward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar * restrict out,
const opus_val16 *window, int overlap, int shift, int stride)
{
--- a/libcelt/mdct.h
+++ b/libcelt/mdct.h
@@ -55,7 +55,7 @@
int clt_mdct_init(mdct_lookup *l,int N, int maxshift);
void clt_mdct_clear(mdct_lookup *l);
-/** Compute a forward MDCT and scale by 4/N */
+/** Compute a forward MDCT and scale by 4/N, trashes the input array */
void clt_mdct_forward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar *out,
const opus_val16 *window, int overlap, int shift, int stride);
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -39,8 +39,6 @@
#include "modes.h"
#include "silk_API.h"
-#define MAX_PACKET (1275)
-
/* Make sure everything's aligned to 4 bytes (this may need to be increased
on really weird architectures) */
static inline int align(int i)
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -425,7 +425,7 @@
st->silk_mode.maxInternalSampleRate = 16000;
/* Call SILK encoder for the low band */
- nBytes = max_data_bytes-1;
+ nBytes = IMIN(1275, max_data_bytes-1);
if (prefill)
{
int zero=0;
@@ -515,6 +515,7 @@
}
}
+ nb_compr_bytes = IMIN(1275, nb_compr_bytes);
ec_enc_shrink(&enc, nb_compr_bytes);
} else {
nb_compr_bytes = 0;