The MMMULTITRACKREAD structure contains the following parameters:
The track map list is a list of valid track numbers for the current file and is used to map a track to a record table. Each track map list contains:
Each element of the record table contains a pointer to (pBuffer) and the length (ulLength) of the corresponding data in the buffer.
For example, if the number of track entries is two, the track map list will contain two track map tables, one for each track. There is a corresponding record table for each track. The number of entries in the track map table for each track is the number of entries in the record table for a particular track. The following figure illustrates the multitrack read data structure.
MMMULTITRACKREAD pBuffer ┌───────────────┐ ┌─────────────────────────────────────────┐ │ ulLength ├─┘ TRACKMAP RECORDTAB │ │ pBuffer │ TABLE AUDIO │ │ ulFlags │ ┌───────────────┐ ┌────────────┐ ┌───────┐ ┐ │ ulNumTracks │ │ ulTrackID │ │ pRecord 1 ├──── Audio │ │ │ pTrackMapList ├── ulNumEntries ├── ulLength │ │ Data 1 │ │ │ │ │ pRecordTabList│ │ ulParm1 │ ├────────┤ │ │ │ ├───────────────┤ │ ulParm2 │ ┌── Video │ │ │ ulBufferLength│ │ ulTrackID │ ├────────────┤ │ │ Data 1 │ │ │(extended mode)│ │ ulNumEntries ├┐ │ . 2 │ │ ├────────┤ │ └───────────────┘ │ pRecordTabList││ │ . ├─┼── Audio │ │ ├───────────────┤│ │ . │ │ │ Data 2 │ │ │ . ││ └────────────┘ │ ├────────┤ │ │ . ││ RECORDTAB │ │ Video │ │ │ . ││ VIDEO │┌─ Data 2 │ │ ulLength └───────────────┘│ ┌────────────┐ ││ ├────────┤ │ │ │ pRecord 1 │ ││ │ . │ │ └─ ulLength ├─┘│ │ . │ │ │ ulParm1 │ │ │ . │ │ │ ulParm2 │ │ ├────────┤ │ ├────────────┤ │ │ │ │ │ . 2 ├──┘ │ │ │ │ . │ │ │ │ │ . │ ├────────┤ │ └────────────┘ │ │ │ │ │ │ │ │ │ MMMULTITRACKREAD pBuffer ├────────┤ │ ┌───────────────┐ ┌──────────────────────────────────┐ │ │ │ │ ulLength ├─┘ TRACKMAP RECORDTAB │ │ │ │ │ pBuffer │ TABLE AUDIO │ │ │ ┘ │ ulFlags │ ┌───────────────┐ ┌────────────┐ └─├────────┤ ┐ │ ulNumTracks │ │ ulTrackID │ │ pRecord 1 ├──── Audio │ │ │ pTrackMapList ├── ulNumEntries ├── ulLength │ │ Data 1 │ │ │ │ │ pRecordTabList│ │ ulParm1 │ ├────────┤ │ │ │ ├───────────────┤ │ ulParm2 │ ┌── Video │ │ │ ulBufferLength│ │ ulTrackID │ ├────────────┤ │ │ Data 1 │ │ │(extended mode)│ │ ulNumEntries ├┐ │ . 2 │ │ ├────────┤ │ ulLength └───────────────┘ │ pRecordTabList││ │ . ├─┼── Audio │ │ ├───────────────┤│ │ . │ │ │ Data 2 │ │ │ . ││ └────────────┘ │ ├────────┤ │ │ . ││ RECORDTAB │ │ Video │ │ │ . ││ VIDEO │┌─ Data 2 │ │ └───────────────┘│ ┌────────────┐ ││ ├────────┤ │ │ │ pRecord 1 │ ││ │ . │ │ └─ ulLength ├─┘│ │ . │ │ │ ulParm1 │ │ │ . │ │ │ ulParm2 │ │ └────────┘ ┘ ├────────────┤ │ │ . 2 ├──┘ │ . │ │ . │ └────────────┘