diff options
author | Oded Shimon <ods15@ods15.dyndns.org> | 2006-10-02 05:55:24 +0000 |
---|---|---|
committer | Oded Shimon <ods15@ods15.dyndns.org> | 2006-10-02 05:55:24 +0000 |
commit | d2d5c89d344a35a4f27fab8c7e8c039bfcb9b4e2 (patch) | |
tree | e86aa0e5bdb56d6a48405f35f6ec5e33ead7df58 /libavcodec/vorbis_enc.c | |
parent | d52480b40d1b98d03ec21ac2ef5c7780ea3d947d (diff) | |
download | ffmpeg-d2d5c89d344a35a4f27fab8c7e8c039bfcb9b4e2.tar.gz |
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.c | 44 |
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) { |