Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
authorOded Shimon <ods15@ods15.dyndns.org>
Mon, 2 Oct 2006 05:55:28 +0000 (05:55 +0000)
committerOded Shimon <ods15@ods15.dyndns.org>
Mon, 2 Oct 2006 05:55:28 +0000 (05:55 +0000)
mappings header syntax

Originally committed as revision 6421 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/vorbis_enc.c

index 7f441b3..50c3c2b 100644 (file)
@@ -80,6 +80,10 @@ typedef struct {
 } residue_t;
 
 typedef struct {
+    int submaps;
+    int * mux;
+    int * floor;
+    int * residue;
 } mapping_t;
 
 typedef struct {
@@ -296,6 +300,24 @@ static int put_main_header(venc_context_t * venc, uint8_t ** out) {
     // mappings
     put_bits(&pb, 6, venc->nmappings - 1);
     for (i = 0; i < venc->nmappings; i++) {
+        mapping_t * mc = &venc->mappings[i];
+        int j;
+        put_bits(&pb, 16, 0); // mapping type
+
+        put_bits(&pb, 1, mc->submaps > 1);
+        if (mc->submaps > 1) put_bits(&pb, 4, mc->submaps - 1);
+
+        put_bits(&pb, 1, 0); // channel coupling
+
+        put_bits(&pb, 2, 0); // reserved
+
+        if (mc->submaps > 1) for (j = 0; j < venc->channels; j++) put_bits(&pb, 4, mc->mux[j]);
+
+        for (j = 0; j < mc->submaps; j++) {
+            put_bits(&pb, 8, 0); // reserved time configuration
+            put_bits(&pb, 8, mc->floor[j]);
+            put_bits(&pb, 8, mc->residue[j]);
+        }
     }
 
     flush_put_bits(&pb);