aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorOded Shimon <ods15@ods15.dyndns.org>2006-10-02 05:55:26 +0000
committerOded Shimon <ods15@ods15.dyndns.org>2006-10-02 05:55:26 +0000
commit6f133df1ea7a0d5362e1a779335b45a6a92015fc (patch)
treee9aa38e63a19f31cb99984addef09fc648e071a8 /libavcodec
parentd2d5c89d344a35a4f27fab8c7e8c039bfcb9b4e2 (diff)
downloadffmpeg-6f133df1ea7a0d5362e1a779335b45a6a92015fc.tar.gz
Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
add residue header syntax Originally committed as revision 6420 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/vorbis_enc.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c
index 6d82a44671..7f441b3be2 100644
--- a/libavcodec/vorbis_enc.c
+++ b/libavcodec/vorbis_enc.c
@@ -70,6 +70,13 @@ typedef struct {
} floor_t;
typedef struct {
+ int type;
+ int begin;
+ int end;
+ int partition_size;
+ int classifications;
+ int classbook;
+ int (*books)[8];
} residue_t;
typedef struct {
@@ -198,6 +205,32 @@ static void put_floor_header(PutBitContext * pb, floor_t * fc) {
}
static void put_residue_header(PutBitContext * pb, residue_t * rc) {
+ int i;
+
+ put_bits(pb, 16, rc->type);
+
+ put_bits(pb, 24, rc->begin);
+ put_bits(pb, 24, rc->end);
+ put_bits(pb, 24, rc->partition_size - 1);
+ put_bits(pb, 6, rc->classifications);
+ put_bits(pb, 8, rc->classbook);
+
+ for (i = 0; i < rc->classifications; i++) {
+ int j, tmp = 0;
+ for (j = 0; j < 8; j++) tmp |= (!!rc->books[i][j]) << j;
+
+ put_bits(pb, 3, tmp & 7);
+ put_bits(pb, 1, tmp > 7);
+
+ if (tmp > 7) put_bits(pb, 5, tmp >> 3);
+ }
+
+ for (i = 0; i < rc->classifications; i++) {
+ int j;
+ for (j = 0; j < 8; j++)
+ if (rc->books[i][j])
+ put_bits(pb, 8, rc->books[i][j]);
+ }
}
static int put_main_header(venc_context_t * venc, uint8_t ** out) {