} residue_t;
typedef struct {
+ int submaps;
+ int * mux;
+ int * floor;
+ int * residue;
} mapping_t;
typedef struct {
// 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);