Fixes an encoder bugg when requesting a CBR rate over the allowable limit

This commit is contained in:
Jean-Marc Valin 2011-08-15 14:08:57 -04:00
parent 11785e92c3
commit 66c612ef43
4 changed files with 4 additions and 4 deletions

View file

@ -99,6 +99,7 @@ void clt_mdct_clear(mdct_lookup *l)
#endif /* CUSTOM_MODES */ #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, 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) const opus_val16 *window, int overlap, int shift, int stride)
{ {

View file

@ -55,7 +55,7 @@ typedef struct {
int clt_mdct_init(mdct_lookup *l,int N, int maxshift); int clt_mdct_init(mdct_lookup *l,int N, int maxshift);
void clt_mdct_clear(mdct_lookup *l); 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, 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); const opus_val16 *window, int overlap, int shift, int stride);

View file

@ -39,8 +39,6 @@
#include "modes.h" #include "modes.h"
#include "silk_API.h" #include "silk_API.h"
#define MAX_PACKET (1275)
/* Make sure everything's aligned to 4 bytes (this may need to be increased /* Make sure everything's aligned to 4 bytes (this may need to be increased
on really weird architectures) */ on really weird architectures) */
static inline int align(int i) static inline int align(int i)

View file

@ -425,7 +425,7 @@ int opus_encode(OpusEncoder *st, const opus_int16 *pcm, int frame_size,
st->silk_mode.maxInternalSampleRate = 16000; st->silk_mode.maxInternalSampleRate = 16000;
/* Call SILK encoder for the low band */ /* Call SILK encoder for the low band */
nBytes = max_data_bytes-1; nBytes = IMIN(1275, max_data_bytes-1);
if (prefill) if (prefill)
{ {
int zero=0; int zero=0;
@ -515,6 +515,7 @@ int opus_encode(OpusEncoder *st, const opus_int16 *pcm, int frame_size,
} }
} }
nb_compr_bytes = IMIN(1275, nb_compr_bytes);
ec_enc_shrink(&enc, nb_compr_bytes); ec_enc_shrink(&enc, nb_compr_bytes);
} else { } else {
nb_compr_bytes = 0; nb_compr_bytes = 0;