From 8016c73f4c89176695b9e60fad51a26b3a5a76c2 Mon Sep 17 00:00:00 2001 From: Oded Shimon Date: Mon, 2 Oct 2006 05:55:30 +0000 Subject: [PATCH] Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines modes header syntax that's the last of the headers! woo Originally committed as revision 6422 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/vorbis_enc.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c index 50c3c2b6d4..1793b55c07 100644 --- a/libavcodec/vorbis_enc.c +++ b/libavcodec/vorbis_enc.c @@ -86,6 +86,11 @@ typedef struct { int * residue; } mapping_t; +typedef struct { + int blockflag; + int mapping; +} vorbis_mode_t; + typedef struct { int channels; int sample_rate; @@ -102,6 +107,9 @@ typedef struct { int nmappings; mapping_t * mappings; + + int nmodes; + vorbis_mode_t * modes; } venc_context_t; static inline int ilog(unsigned int a) { @@ -320,6 +328,15 @@ static int put_main_header(venc_context_t * venc, uint8_t ** out) { } } + // modes + put_bits(&pb, 6, venc->nmodes - 1); + for (i = 0; i < venc->nmodes; i++) { + put_bits(&pb, 1, venc->modes[i].blockflag); + put_bits(&pb, 16, 0); // reserved window type + put_bits(&pb, 16, 0); // reserved transform type + put_bits(&pb, 8, venc->modes[i].mapping); + } + flush_put_bits(&pb); hlens[2] = (put_bits_count(&pb) + 7) / 8;