summaryrefslogtreecommitdiff
path: root/libavcodec/vorbisenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/vorbisenc.c')
-rw-r--r--libavcodec/vorbisenc.c8
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;
}