diff options
Diffstat (limited to 'libavcodec/vorbisenc.c')
-rw-r--r-- | libavcodec/vorbisenc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/vorbisenc.c b/libavcodec/vorbisenc.c index 5c10e49b3f..d8d7d4d4eb 100644 --- a/libavcodec/vorbisenc.c +++ b/libavcodec/vorbisenc.c @@ -272,6 +272,7 @@ static int create_vorbis_context(vorbis_enc_context *venc, vorbis_enc_floor *fc; vorbis_enc_residue *rc; vorbis_enc_mapping *mc; + const uint8_t *clens, *quant; int i, book, ret; venc->channels = avctx->channels; @@ -286,6 +287,8 @@ static int create_vorbis_context(vorbis_enc_context *venc, // codebook 0..14 - floor1 book, values 0..255 // codebook 15 residue masterbook // codebook 16..29 residue + clens = codebooks; + quant = quant_tables; for (book = 0; book < venc->ncodebooks; book++) { vorbis_enc_codebook *cb = &venc->codebooks[book]; int vals; @@ -300,8 +303,9 @@ static int create_vorbis_context(vorbis_enc_context *venc, cb->codewords = av_malloc_array(cb->nentries, sizeof(uint32_t)); if (!cb->lens || !cb->codewords) return AVERROR(ENOMEM); - memcpy(cb->lens, cvectors[book].clens, cvectors[book].len); + memcpy(cb->lens, clens, cvectors[book].len); memset(cb->lens + cvectors[book].len, 0, cb->nentries - cvectors[book].len); + clens += cvectors[book].len; if (cb->lookup) { vals = cb_lookup_vals(cb->lookup, cb->ndimensions, cb->nentries); @@ -309,7 +313,7 @@ static int create_vorbis_context(vorbis_enc_context *venc, if (!cb->quantlist) return AVERROR(ENOMEM); for (i = 0; i < vals; i++) - cb->quantlist[i] = cvectors[book].quant[i]; + cb->quantlist[i] = *quant++; } else { cb->quantlist = NULL; } |