Mercurial > libavcodec.hg
changeset 3814:464eca766731 libavcodec
Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
floor header syntax
author | ods15 |
---|---|
date | Mon, 02 Oct 2006 05:55:24 +0000 |
parents | 95b70f8bc29e |
children | 3fa081422f78 |
files | vorbis_enc.c |
diffstat | 1 files changed, 42 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/vorbis_enc.c Mon Oct 02 05:55:22 2006 +0000 +++ b/vorbis_enc.c Mon Oct 02 05:55:24 2006 +0000 @@ -52,6 +52,21 @@ } codebook_t; typedef struct { + int dim; + int subclass; + int masterbook; + int * books; +} floor_class_t; + +typedef struct { + int partitions; + int * partition_to_class; + int nclasses; + floor_class_t * classes; + int multiplier; + int rangebits; + int values; + struct { int x; } * list; } floor_t; typedef struct { @@ -154,10 +169,35 @@ } } -static void put_floor_header(PutBitContext * pb, floor_t * fl) { +static void put_floor_header(PutBitContext * pb, floor_t * fc) { + int i; + + put_bits(pb, 16, 1); // type, only floor1 is supported + + put_bits(pb, 5, fc->partitions); + + for (i = 0; i < fc->partitions; i++) put_bits(pb, 4, fc->partition_to_class[i]); + + for (i = 0; i < fc->nclasses; i++) { + int j, books; + + put_bits(pb, 3, fc->classes[i].dim - 1); + put_bits(pb, 2, fc->classes[i].subclass); + + if (fc->classes[i].subclass) put_bits(pb, 8, fc->classes[i].masterbook); + + books = (1 << fc->classes[i].subclass); + + for (j = 0; j < books; j++) put_bits(pb, 8, fc->classes[i].books[j] + 1); + } + + put_bits(pb, 2, fc->multiplier - 1); + put_bits(pb, 4, fc->rangebits); + + for (i = 2; i < fc->values; i++) put_bits(pb, fc->rangebits, fc->list[i].x); } -static void put_residue_header(PutBitContext * pb, residue_t * r) { +static void put_residue_header(PutBitContext * pb, residue_t * rc) { } static int put_main_header(venc_context_t * venc, uint8_t ** out) {