diff options
-rw-r--r-- | libavcodec/vorbis_enc_data.h | 216 | ||||
-rw-r--r-- | libavcodec/vorbisenc.c | 8 |
2 files changed, 100 insertions, 124 deletions
diff --git a/libavcodec/vorbis_enc_data.h b/libavcodec/vorbis_enc_data.h index a51aaec978..eab8adbb76 100644 --- a/libavcodec/vorbis_enc_data.h +++ b/libavcodec/vorbis_enc_data.h @@ -23,15 +23,12 @@ #include <stdint.h> -static const uint8_t codebook0[] = { +static const uint8_t codebooks[] = { + /* Codebook 0 - 16 elements */ 2, 10, 8, 14, 7, 12, 11, 14, 1, 5, 3, 7, 4, 9, 7, 13, -}; - -static const uint8_t codebook1[] = { + /* Codebook 1 - 8 elements */ 1, 4, 2, 6, 3, 7, 5, 7, -}; - -static const uint8_t codebook2[] = { + /* Codebook 2 - 256 elements */ 1, 5, 7, 21, 5, 8, 9, 21, 10, 9, 12, 20, 20, 16, 20, 20, 4, 8, 9, 20, 6, 8, 9, 20, 11, 11, 13, 20, 20, 15, 17, 20, 9, 11, 14, 20, 8, 10, 15, 20, 11, 13, 15, 20, 20, @@ -50,17 +47,13 @@ static const uint8_t codebook2[] = { 19, 18, 20, 15, 16, 20, 20, 17, 17, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -}; - -static const uint8_t codebook3[] = { + /* Codebook 3 - 64 elements */ 2, 3, 7, 13, 4, 4, 7, 15, 8, 6, 9, 17, 21, 16, 15, 21, 2, 5, 7, 11, 5, 5, 7, 14, 9, 7, 10, 16, 17, 15, 16, 21, 4, 7, 10, 17, 7, 7, 9, 15, 11, 9, 11, 16, 21, 18, 15, 21, 18, 21, 21, 21, 15, 17, 17, 19, 21, 19, 18, 20, 21, 21, 21, 20, -}; - -static const uint8_t codebook4[] = { + /* Codebook 4 - 128 elements */ 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, 10, 6, 10, @@ -70,15 +63,11 @@ static const uint8_t codebook4[] = { 14, 11, 14, 12, 14, 13, 14, 13, 14, 14, 15, 16, 15, 15, 15, 14, 15, 17, 21, 22, 22, 21, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -}; - -static const uint8_t codebook5[] = { + /* Codebook 5 - 32 elements */ 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, -}; - -static const uint8_t codebook6[] = { + /* Codebook 6 - 96 elements */ 8, 5, 8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 8, 4, 8, 4, 9, 5, 9, 5, 9, 5, 9, 5, 9, 6, 10, 6, 10, 7, 10, 8, 11, 9, 11, @@ -86,15 +75,11 @@ static const uint8_t codebook6[] = { 15, 15, 16, 16, 15, 16, 16, 16, 15, 18, 16, 15, 17, 17, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, -}; - -static const uint8_t codebook7[] = { + /* Codebook 7 - 32 elements */ 1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 9, 8, 10, 9, 10, 9, -}; - -static const uint8_t codebook8[] = { + /* Codebook 8 - 96 elements */ 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 5, 5, 6, 5, 6, 5, 7, 5, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 9, 8, 9, 9, 9, 9, 10, 10, 10, 11, 9, 12, 9, 12, 9, 15, 10, @@ -102,49 +87,35 @@ static const uint8_t codebook8[] = { 11, 14, 12, 13, 13, 14, 14, 13, 14, 15, 14, 16, 13, 13, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, -}; - -static const uint8_t codebook9[] = { + /* Codebook 9 - 17 elements */ 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 4, 5, 5, 5, -}; - -static const uint8_t codebook10[] = { + /* Codebook 10 - 32 elements */ 3, 3, 4, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 5, 7, 5, 8, 6, 8, 6, 9, 7, 10, 7, 10, 8, 10, 8, 11, 9, 11, -}; - -static const uint8_t codebook11[] = { - 3, 7, 3, 8, 3, 10, 3, 8, 3, 9, 3, 8, 4, 9, 4, - 9, 5, 9, 6, 10, 6, 9, 7, 11, 7, 12, 9, 13, 10, 13, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, -}; - -static const uint8_t codebook12[] = { + /* Codebook 11 - 78 elements */ + 3, 7, 3, 8, 3, 10, 3, 8, 3, 9, 3, 8, 4, 9, 4, + 9, 5, 9, 6, 10, 6, 9, 7, 11, 7, 12, 9, 13, 10, 13, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, + /* Codebook 12 - 17 elements */ 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 5, 4, -}; - -static const uint8_t codebook13[] = { + /* Codebook 13 - 32 elements */ 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 7, 7, 8, 7, 8, 7, 8, 7, 9, 8, 9, 8, 9, 8, 10, 8, 11, 9, 12, 9, 12, -}; - -static const uint8_t codebook14[] = { + /* Codebook 14 - 78 elements */ 2, 5, 2, 6, 3, 6, 4, 7, 4, 7, 5, 9, 5, 11, 6, 11, 6, 11, 7, 11, 6, 11, 6, 11, 9, 11, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, -}; - -static const uint8_t codebook15[] = { + /* Codebook 15 - 100 elements */ 5, 6, 11, 11, 11, 11, 10, 10, 12, 11, 5, 2, 11, 5, 6, 6, 7, 9, 11, 13, 13, 10, 7, 11, 6, 7, 8, 9, 10, 12, 11, 5, 11, 6, 8, 7, 9, 11, 14, 15, 11, 6, 6, 8, 4, @@ -152,9 +123,7 @@ static const uint8_t codebook15[] = { 10, 7, 7, 8, 6, 5, 5, 7, 9, 9, 11, 8, 8, 11, 8, 7, 6, 6, 7, 9, 12, 11, 10, 13, 9, 9, 7, 7, 7, 9, 11, 13, 12, 15, 12, 11, 9, 8, 8, 8, -}; - -static const uint8_t codebook16[] = { + /* Codebook 16 - 1641 elements, real length 6561 */ 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -265,9 +234,7 @@ static const uint8_t codebook16[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 8, -}; - -static const uint8_t codebook17[] = { + /* Codebook 17 - 443 elements, real length 625 */ 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 10, 10, 0, 0, @@ -298,9 +265,7 @@ static const uint8_t codebook17[] = { 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 8, 10, 10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0, 10, 10, -}; - -static const uint8_t codebook18[] = { + /* Codebook 18 - 105 elements, real length 625 */ 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -308,26 +273,20 @@ static const uint8_t codebook18[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 9, 9, -}; - -static const uint8_t codebook19[] = { + /* Codebook 19 - 68 elements, real length 81 */ 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 9, 9, -}; - -static const uint8_t codebook20[] = { + /* Codebook 20 - 81 elements */ 1, 3, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 7, 8, 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8, 8, 8, 10, 10, 0, 0, 0, 8, 8, 8, 8, 10, 10, 0, 0, 0, 9, 9, 9, 9, 10, 10, 0, 0, 0, 9, 9, 9, 9, 10, 10, 0, 0, 0, 10, 10, 10, 10, 11, 11, 0, 0, 0, 0, 0, 10, 10, 11, 11, -}; - -static const uint8_t codebook21[] = { + /* Codebook 21 - 289 elements */ 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 10, 10, 11, 10, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9, @@ -348,18 +307,14 @@ static const uint8_t codebook21[] = { 0, 0, 0, 0, 0, 0, 0, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 13, 13, 13, 13, -}; - -static const uint8_t codebook22[] = { + /* Codebook 22 - 81 elements */ 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7, 10, 9, 9, 11, 9, 9, 4, 7, 7, 10, 9, 9, 11, 9, 9, 7, 10, 10, 11, 11, 10, 12, 11, 11, 6, 9, 9, 11, 10, 10, 11, 10, 10, 6, 9, 9, 11, 10, 10, 11, 10, 10, 7, 11, 11, 11, 11, 11, 12, 11, 11, 6, 9, 9, 11, 10, 10, 11, 10, 10, 6, 9, 9, 11, 10, 10, 11, 10, 10, -}; - -static const uint8_t codebook23[] = { + /* Codebook 23 - 121 elements */ 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 10, @@ -369,9 +324,7 @@ static const uint8_t codebook23[] = { 10, 10, 10, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 9, 9, 8, 8, 9, 8, 10, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, -}; - -static const uint8_t codebook24[] = { + /* Codebook 24 - 169 elements */ 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 6, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9, 10, 10, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9, 11, 10, 0, 8, 8, 8, 8, 9, @@ -384,14 +337,10 @@ static const uint8_t codebook24[] = { 11, 11, 11, 11, 12, 12, 13, 13, 0, 0, 0, 0, 0, 12, 12, 12, 12, 13, 13, 14, 13, 0, 0, 0, 0, 0, 13, 13, 12, 12, 13, 12, 14, 13, -}; - -static const uint8_t codebook25[] = { + /* Codebook 25 - 25 elements */ 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, -}; - -static const uint8_t codebook26[] = { + /* Codebook 26 - 169 elements */ 1, 4, 4, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 9, 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 9, 7, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, @@ -404,9 +353,7 @@ static const uint8_t codebook26[] = { 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, -}; - -static const uint8_t codebook27[] = { + /* Codebook 27 - 225 elements */ 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9, 10, 10, 10, 10, 6, 5, 5, 7, 7, 8, 8, 10, 8, 11, 10, 12, 12, 13, 13, 6, 5, 5, 7, 7, 8, 8, 10, 9, 11, 11, 12, 12, 13, 12, @@ -422,9 +369,7 @@ static const uint8_t codebook27[] = { 17, 18, 18, 17, 18, 13, 12, 13, 10, 12, 11, 14, 14, 14, 14, 17, 18, 18, 18, 18, 15, 16, 12, 12, 13, 10, 14, 12, 14, 15, 18, 18, 18, 16, 17, 16, 14, 12, 11, 13, 10, 13, 13, 14, 15, -}; - -static const uint8_t codebook28[] = { + /* Codebook 28 - 289 elements */ 2, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, @@ -447,45 +392,72 @@ static const uint8_t codebook28[] = { 9, 10, 10, 10, }; +static const uint8_t quant_tables[] = { + /* Codebook 16 */ + 1, 0, 2, + /* Codebook 17 */ + 2, 1, 3, 0, 4, + /* Codebook 18 */ + 2, 1, 3, 0, 4, + /* Codebook 19 */ + 4, 3, 5, 2, 6, 1, 7, 0, 8, + /* Codebook 20 */ + 4, 3, 5, 2, 6, 1, 7, 0, 8, + /* Codebook 21 */ + 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, 0, 16, + /* Codebook 22 */ + 1, 0, 2, + /* Codebook 23 */ + 5, 4, 6, 3, 7, 2, 8, 1, 9, 0, 10, + /* Codebook 24 */ + 6, 5, 7, 4, 8, 3, 9, 2, 10, 1, 11, 0, 12, + /* Codebook 25 */ + 2, 1, 3, 0, 4, + /* Codebook 26 */ + 6, 5, 7, 4, 8, 3, 9, 2, 10, 1, 11, 0, 12, + /* Codebook 27 */ + 7, 6, 8, 5, 9, 4, 10, 3, 11, 2, 12, 1, 13, 0, 14, + /* Codebook 28 */ + 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, 0, 16, +}; + static const struct { int dim; int len; int real_len; - const uint8_t *clens; int lookup; float min; float delta; - const uint8_t *quant; } cvectors[] = { - { 2, 16, 16, codebook0, 0 }, - { 2, 8, 8, codebook1, 0 }, - { 2, 256, 256, codebook2, 0 }, - { 2, 64, 64, codebook3, 0 }, - { 2, 128, 128, codebook4, 0 }, - { 2, 32, 32, codebook5, 0 }, - { 2, 96, 96, codebook6, 0 }, - { 2, 32, 32, codebook7, 0 }, - { 2, 96, 96, codebook8, 0 }, - { 2, 17, 17, codebook9, 0 }, - { 2, 32, 32, codebook10, 0 }, - { 2, 78, 78, codebook11, 0 }, - { 2, 17, 17, codebook12, 0 }, - { 2, 32, 32, codebook13, 0 }, - { 2, 78, 78, codebook14, 0 }, - { 2, 100, 100, codebook15, 0 }, - { 8, 1641, 6561, codebook16, 1, -1.0, 1.0, (const uint8_t[]){ 1, 0, 2, } }, - { 4, 443, 625, codebook17, 1, -2.0, 1.0, (const uint8_t[]){ 2, 1, 3, 0, 4, } }, - { 4, 105, 625, codebook18, 1, -2.0, 1.0, (const uint8_t[]){ 2, 1, 3, 0, 4, } }, - { 2, 68, 81, codebook19, 1, -4.0, 1.0, (const uint8_t[]){ 4, 3, 5, 2, 6, 1, 7, 0, 8, } }, - { 2, 81, 81, codebook20, 1, -4.0, 1.0, (const uint8_t[]){ 4, 3, 5, 2, 6, 1, 7, 0, 8, } }, - { 2, 289, 289, codebook21, 1, -8.0, 1.0, (const uint8_t[]){ 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, 0, 16, } }, - { 4, 81, 81, codebook22, 1, -11.0, 11.0, (const uint8_t[]){ 1, 0, 2, } }, - { 2, 121, 121, codebook23, 1, -5.0, 1.0, (const uint8_t[]){ 5, 4, 6, 3, 7, 2, 8, 1, 9, 0, 10, } }, - { 2, 169, 169, codebook24, 1, -30.0, 5.0, (const uint8_t[]){ 6, 5, 7, 4, 8, 3, 9, 2, 10, 1, 11, 0, 12, } }, - { 2, 25, 25, codebook25, 1, -2.0, 1.0, (const uint8_t[]){ 2, 1, 3, 0, 4, } }, - { 2, 169, 169, codebook26, 1, -1530.0, 255.0, (const uint8_t[]){ 6, 5, 7, 4, 8, 3, 9, 2, 10, 1, 11, 0, 12, } }, - { 2, 225, 225, codebook27, 1, -119.0, 17.0, (const uint8_t[]){ 7, 6, 8, 5, 9, 4, 10, 3, 11, 2, 12, 1, 13, 0, 14, } }, - { 2, 289, 289, codebook28, 1, -8.0, 1.0, (const uint8_t[]){ 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, 0, 16, } }, + { 2, 16, 16, 0 }, + { 2, 8, 8, 0 }, + { 2, 256, 256, 0 }, + { 2, 64, 64, 0 }, + { 2, 128, 128, 0 }, + { 2, 32, 32, 0 }, + { 2, 96, 96, 0 }, + { 2, 32, 32, 0 }, + { 2, 96, 96, 0 }, + { 2, 17, 17, 0 }, + { 2, 32, 32, 0 }, + { 2, 78, 78, 0 }, + { 2, 17, 17, 0 }, + { 2, 32, 32, 0 }, + { 2, 78, 78, 0 }, + { 2, 100, 100, 0 }, + { 8, 1641, 6561, 1, -1.0, 1.0 }, + { 4, 443, 625, 1, -2.0, 1.0 }, + { 4, 105, 625, 1, -2.0, 1.0 }, + { 2, 68, 81, 1, -4.0, 1.0 }, + { 2, 81, 81, 1, -4.0, 1.0 }, + { 2, 289, 289, 1, -8.0, 1.0 }, + { 4, 81, 81, 1, -11.0, 11.0 }, + { 2, 121, 121, 1, -5.0, 1.0 }, + { 2, 169, 169, 1, -30.0, 5.0 }, + { 2, 25, 25, 1, -2.0, 1.0 }, + { 2, 169, 169, 1, -1530.0, 255.0 }, + { 2, 225, 225, 1, -119.0, 17.0 }, + { 2, 289, 289, 1, -8.0, 1.0 }, }; static const struct { 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; } |