# HG changeset patch # User ods15 # Date 1159768530 0 # Node ID 3ca15f0d4882502370645d26b49e59ab7dad4fb6 # Parent 6eba53afa0b0fc9e01668c4f41f4c7987abd632c 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 diff -r 6eba53afa0b0 -r 3ca15f0d4882 vorbis_enc.c --- a/vorbis_enc.c Mon Oct 02 05:55:28 2006 +0000 +++ b/vorbis_enc.c Mon Oct 02 05:55:30 2006 +0000 @@ -87,6 +87,11 @@ } mapping_t; typedef struct { + int blockflag; + int mapping; +} vorbis_mode_t; + +typedef struct { int channels; int sample_rate; int blocksize[2]; @@ -102,6 +107,9 @@ 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 @@ } } + // 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;