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) {