summaryrefslogtreecommitdiff
path: root/libavcodec/vorbis_enc.c
diff options
context:
space:
mode:
authorOded Shimon <ods15@ods15.dyndns.org>2006-10-02 05:55:24 +0000
committerOded Shimon <ods15@ods15.dyndns.org>2006-10-02 05:55:24 +0000
commitd2d5c89d344a35a4f27fab8c7e8c039bfcb9b4e2 (patch)
treee86aa0e5bdb56d6a48405f35f6ec5e33ead7df58 /libavcodec/vorbis_enc.c
parentd52480b40d1b98d03ec21ac2ef5c7780ea3d947d (diff)
Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
floor header syntax Originally committed as revision 6419 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/vorbis_enc.c')
-rw-r--r--libavcodec/vorbis_enc.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c
index 3a9d5860f4..6d82a44671 100644
--- a/libavcodec/vorbis_enc.c
+++ b/libavcodec/vorbis_enc.c
@@ -52,6 +52,21 @@ typedef struct {
} 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_codebook_header(PutBitContext * pb, codebook_t * cb) {
}
}
-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) {