# HG changeset patch # User ods15 # Date 1159768524 0 # Node ID 464eca766731b229a03d3cc5b9a88c1a0e16598f # Parent 95b70f8bc29eff55fc8e206cfcfd03291a27fe9c Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines floor header syntax diff -r 95b70f8bc29e -r 464eca766731 vorbis_enc.c --- 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) {