home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / unix / convrtrs / riff-for < prev    next >
Text File  |  1994-04-11  |  28KB  |  776 lines

  1. RIFF WAVE (.WAV) file format
  2. ----------------------------
  3.  
  4. From: Rob Ryan <ST802200@brownvm.brown.edu>
  5. Organization: Brown University
  6.  
  7. I found the following lengthy excerpt in a document rmrtf.zrt (it is actually
  8. a .zip file) in the vendor/microsoft/multimedia subdirectory at the ftp.uu.net
  9. ftp site.  It is presumably beyond the scope (in terms of the amount of
  10. detail) of your document, but nevertheless, I thought that it may help you
  11. in including references to the Windows .WAV format in the future.
  12.  
  13. Let me know if you have any questions/comments.  Again, thank you for your
  14. helpful summary.  Keep it up!
  15.  
  16.  
  17. The following is taken from RIFFMCI.RTF, "Multimedia Programming Interface
  18. and Data Specification v1.0", a Windows RTF (Rich Text Format) file contained
  19. in the .zip file, RMRTF.ZRT.  The original document is quite long and this
  20. constitutes pages 83-95 of the text format version (starting on roughly
  21. page 58 of the RTF version).  If you would like a PostScript version, let
  22. me know and I can make one up for you.
  23.  
  24.  
  25.           Waveform Audio File Format (WAVE)
  26.  
  27.  
  28.                This section describes the Waveform format, which is used to
  29.                represent digitized sound.
  30.  
  31.                The WAVE form is defined as follows. Programs must expect
  32.                (and ignore) any unknown chunks encountered, as with all
  33.                RIFF forms. However, <fmt-ck> must always occur before
  34.                <wave-data>, and both of these chunks are mandatory in a
  35.                WAVE file.
  36.  
  37.                 <WAVE-form> ->
  38.                       RIFF( 'WAVE'
  39.                            <fmt-ck>               // Format
  40.                            [<fact-ck>]                 // Fact chunk
  41.                            [<cue-ck>]             // Cue points
  42.                            [<playlist-ck>]             // Playlist
  43.                            [<assoc-data-list>]              // Associated
  44.                 data list
  45.                            <wave-data>   )             // Wave data
  46.  
  47.                The WAVE chunks are described in the following sections.
  48.  
  49.  
  50.           WAVE Format Chunk
  51.  
  52.  
  53.                The WAVE format chunk <fmt-ck> specifies the format of the
  54.                <wave-data>. The <fmt-ck> is defined as follows:
  55.  
  56.                 <fmt-ck> ->   fmt( <common-fields>
  57.                                  <format-specific-fields> )
  58.  
  59.                 <common-fields> ->
  60.                       struct
  61.                       {
  62.                          WORD wFormatTag;              // Format category
  63.                          WORD wChannels;          // Number of channels
  64.                          DWORDdwSamplesPerSec;         // Sampling rate
  65.                          DWORDdwAvgBytesPerSec;        // For buffer
  66.                 estimation
  67.                          WORD wBlockAlign;        // Data block size
  68.                       }
  69.  
  70.                The fields in the <common-fields> chunk are as follows:
  71.  
  72.  
  73.  
  74.                Field          Description
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.                wFormatTag     A number indicating the WAVE format
  82.                               category of the file. The content of
  83.                               the <format-specific-fields> portion
  84.                               of the `fmt' chunk, and the
  85.                               interpretation of the waveform data,
  86.                               depend on this value.
  87.  
  88.                               You must register any new WAVE format
  89.                               categories. See ``Registering
  90.                               Multimedia Formats'' in Chapter 1,
  91.                               ``Overview of Multimedia
  92.                               Specifications,'' for information on
  93.                               registering WAVE format categories.
  94.  
  95.                               ``Wave Format Categories,'' following
  96.                               this section, lists the currently
  97.                               defined WAVE format categories.
  98.  
  99.                wChannels      The number of channels represented in
  100.                               the waveform data, such as 1 for mono
  101.                               or 2 for stereo.
  102.  
  103.                dwSamplesPerSe The sampling rate (in samples per
  104.                c              second) at which each channel should
  105.                               be played.
  106.  
  107.                dwAvgBytesPerS The average number of bytes per second
  108.                ec             at which the waveform data should be
  109.                               transferred. Playback software can
  110.                               estimate the buffer size using this
  111.                               value.
  112.  
  113.                wBlockAlign    The block alignment (in bytes) of the
  114.                               waveform data. Playback software needs
  115.                               to process a multiple of wBlockAlign
  116.                               bytes of data at a time, so the value
  117.                               of wBlockAlign can be used for buffer
  118.                               alignment.
  119.  
  120.  
  121.  
  122.                The <format-specific-fields> consists of zero or more bytes
  123.                of parameters. Which parameters occur depends on the WAVE
  124.                format category-see the following section for details.
  125.                Playback software should be written to allow for (and
  126.                ignore) any unknown <format-specific-fields> parameters that
  127.                occur at the end of this field.
  128.  
  129.  
  130.  
  131.           WAVE Format Categories
  132.  
  133.  
  134.                The format category of a WAVE file is specified by the value
  135.                of the wFormatTag field of the `fmt' chunk. The
  136.  
  137.  
  138.  
  139.  
  140.                representation of data in <wave-data>, and the content of
  141.                the <format-specific-fields> of the `fmt' chunk, depend on
  142.                the format category.
  143.  
  144.                The currently defined open non-proprietary WAVE format
  145.                categories are as follows:
  146.  
  147.  
  148.  
  149.                wFormatTag Value         Format Category
  150.  
  151.  
  152.                WAVE_FORMAT_PCM (0x0001) Microsoft Pulse Code
  153.                                         Modulation (PCM) format
  154.  
  155.  
  156.  
  157.                The following are the registered proprietary WAVE format
  158.                categories:
  159.  
  160.  
  161.  
  162.                wFormatTag Value         Format Category
  163.  
  164.  
  165.                IBM_FORMAT_MULAW         IBM mu-law format
  166.                (0x0101)
  167.  
  168.                IBM_FORMAT_ALAW (0x0102) IBM a-law format
  169.  
  170.                IBM_FORMAT_ADPCM         IBM AVC Adaptive
  171.                (0x0103)                 Differential Pulse Code
  172.                                         Modulation format
  173.  
  174.  
  175.  
  176.                The following sections describe the Microsoft
  177.                WAVE_FORMAT_PCM format.
  178.  
  179.  
  180.                Pulse Code Modulation (PCM) Format
  181.  
  182.  
  183.                If the wFormatTag field of the <fmt-ck> is set to
  184.                WAVE_FORMAT_PCM, then the waveform data consists of samples
  185.                represented in pulse code modulation (PCM) format. For PCM
  186.                waveform data, the <format-specific-fields> is defined as
  187.                follows:
  188.  
  189.                 <PCM-format-specific> ->
  190.                       struct
  191.                       {
  192.                          WORD wBitsPerSample;      // Sample size
  193.                       }
  194.  
  195.                The wBitsPerSample field specifies the number of bits of
  196.                data used to represent each sample of each channel. If there
  197.  
  198.  
  199.  
  200.  
  201.                are multiple channels, the sample size is the same for each
  202.                channel.
  203.  
  204.                For PCM data, the wAvgBytesPerSec field of the `fmt' chunk
  205.                should be equal to the following formula rounded up to the
  206.                next whole number:
  207.  
  208.                                               wBitsPerSample
  209.                  wChannels x wBitsPerSecond x --------------
  210.                                                      8
  211.  
  212.                The wBlockAlign field should be equal to the following
  213.                formula, rounded to the next whole number:
  214.  
  215.                              wBitsPerSample
  216.                  wChannels x --------------
  217.                                     8
  218.  
  219.                Data Packing for PCM WAVE Files
  220.  
  221.                In a single-channel WAVE file, samples are stored
  222.                consecutively. For stereo WAVE files, channel 0 represents
  223.                the left channel, and channel 1 represents the right
  224.                channel. The speaker position mapping for more than two
  225.                channels is currently undefined. In multiple-channel WAVE
  226.                files, samples are interleaved.
  227.  
  228.                The following diagrams show the data packing for a 8-bit
  229.                mono and stereo WAVE files:
  230.  
  231.  
  232.                      Sample 1     Sample 2     Sample 3    Sample 4
  233.  
  234.  
  235.                      Channel 0    Channel 0   Channel 0    Channel 0
  236.  
  237.  
  238.  
  239.                              Data Packing for 8-Bit Mono PCM
  240.  
  241.  
  242.  
  243.                             Sample 1                 Sample 2
  244.  
  245.                      Channel 0    Channel 1   Channel 0    Channel 0
  246.                       (left)       (right)      (left)      (right)
  247.  
  248.  
  249.  
  250.                             Data Packing for 8-Bit Stereo PCM
  251.  
  252.  
  253.  
  254.                The following diagrams show the data packing for 16-bit mono
  255.                and stereo WAVE files:
  256.  
  257.  
  258.                             Sample 1                 Sample 2
  259.  
  260.  
  261.  
  262.  
  263.  
  264.                      Channel 0    Channel 0   Channel 0    Channel 0
  265.  
  266.                      low-order   high-order   low-order   high-order
  267.                        byte         byte         byte        byte
  268.  
  269.  
  270.                              Data Packing for 16-Bit Mono PCM
  271.  
  272.  
  273.  
  274.                                         Sample 1
  275.  
  276.                      Channel 0    Channel 0   Channel 1    Channel 1
  277.                       (left)       (left)      (right)      (right)
  278.                      low-order   high-order   low-order   high-order
  279.                        byte         byte         byte        byte
  280.  
  281.  
  282.                             Data Packing for 16-Bit Stereo PCM
  283.  
  284.  
  285.  
  286.                Data Format of the Samples
  287.  
  288.                Each sample is contained in an integer i. The size of i is
  289.                the smallest number of bytes required to contain the
  290.                specified sample size. The least significant byte is stored
  291.                first. The bits that represent the sample amplitude are
  292.                stored in the most significant bits of i, and the remaining
  293.                bits are set to zero.
  294.  
  295.                For example, if the sample size (recorded in nBitsPerSample)
  296.                is 12 bits, then each sample is stored in a two-byte
  297.                integer. The least significant four bits of the first (least
  298.                significant) byte is set to zero.
  299.  
  300.                The data format and maximum and minimums values for PCM
  301.                waveform samples of various sizes are as follows:
  302.  
  303.  
  304.  
  305.                Sample Size  Data Format Maximum Value  Minimum Value
  306.  
  307.  
  308.                One to       Unsigned    255 (0xFF)     0
  309.                eight bits   integer
  310.  
  311.                Nine or      Signed      Largest        Most negative
  312.                more bits    integer i   positive       value of i
  313.                                         value of i
  314.  
  315.  
  316.                For example, the maximum, minimum, and midpoint values for
  317.                8-bit and 16-bit PCM waveform data are as follows:
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.                Format       Maximum     Minimum Value  Midpoint
  325.                             Value                      Value
  326.  
  327.  
  328.                8-bit PCM    255 (0xFF)  0              128 (0x80)
  329.  
  330.                16-bit PCM   32767       -32768         0
  331.                             (0x7FFF)    (-0x8000)
  332.  
  333.  
  334.                Examples of PCM WAVE Files
  335.  
  336.                Example of a PCM WAVE file with 11.025 kHz sampling rate,
  337.                mono, 8 bits per sample:
  338.  
  339.                 RIFF( 'WAVE'     fmt(1, 1, 11025, 11025, 1, 8)
  340.                               data( <wave-data> ) )
  341.  
  342.                Example of a PCM WAVE file with 22.05 kHz sampling rate,
  343.                stereo, 8 bits per sample:
  344.  
  345.                 RIFF( 'WAVE'     fmt(1, 2, 22050, 44100, 2, 8)
  346.                               data( <wave-data> ) )
  347.  
  348.                Example of a PCM WAVE file with 44.1 kHz sampling rate,
  349.                mono, 20 bits per sample:
  350.  
  351.                 RIFF( 'WAVE'     INFO(INAM("O Canada"Z))
  352.                               fmt(1, 1, 44100, 132300, 3, 20)
  353.                               data( <wave-data> ) )
  354.  
  355.  
  356.           Storage of WAVE Data
  357.  
  358.  
  359.                The <wave-data> contains the waveform data. It is defined as
  360.                follows:
  361.  
  362.                 <wave-data> ->   { <data-ck> : <data-list> }
  363.  
  364.                 <data-ck>  ->    data( <wave-data> )
  365.  
  366.                 <wave-list> ->   LIST( 'wavl' {        <data-ck> :
  367.                     // Wave samples
  368.                                            <silence-ck> }... )   // Silence
  369.  
  370.                 <silence-ck> ->  slnt( <dwSamples:DWORD> )       // Count
  371.                 of
  372.                                                        // silent samples
  373.  
  374.                Note:  The `slnt' chunk represents silence, not necessarily
  375.                a repeated zero volume or baseline sample. In 16-bit PCM
  376.                data, if the last sample value played before the silence
  377.                section is a 10000, then if data is still output to the D to
  378.                A converter, it must maintain the 10000 value. If a zero
  379.  
  380.  
  381.  
  382.  
  383.                value is used, a click may be heard at the start and end of
  384.                the silence section. If play begins at a silence section,
  385.                then a zero value might be used since no other information
  386.                is available. A click might be created if the data following
  387.                the silent section starts with a nonzero value.
  388.  
  389.  
  390.           FACT Chunk
  391.  
  392.  
  393.                The <fact-ck> fact chunk stores important information about
  394.                the contents of the WAVE file. This chunk is defined as
  395.                follows:
  396.  
  397.                 <fact-ck> -> fact( <dwFileSize:DWORD> )            // Number
  398.                 of samples
  399.  
  400.                The `fact'' chunk is required if the waveform data is
  401.                contained in a `wavl'' LIST chunk and for all compressed
  402.                audio formats. The chunk is not required for PCM files using
  403.                the `data'' chunk format.
  404.  
  405.                The "fact" chunk will be expanded to include any other
  406.                information required by future WAVE formats. Added fields
  407.                will appear following the <dwFileSize> field. Applications
  408.                can use the chunk size field to determine which fields are
  409.                present.
  410.  
  411.  
  412.           Cue-Points Chunk
  413.  
  414.  
  415.                The <cue-ck> cue-points chunk identifies a series of
  416.                positions in the waveform data stream. The <cue-ck> is
  417.                defined as follows:
  418.  
  419.                 <cue-ck> ->   cue( <dwCuePoints:DWORD>      // Count of cue
  420.                 points
  421.                                    <cue-point>... )         // Cue-point
  422.                 table
  423.  
  424.                 <cue-point> ->   struct {
  425.                                  DWORD  dwName;
  426.                                  DWORD  dwPosition;
  427.                                  FOURCC fccChunk;
  428.                                  DWORD  dwChunkStart;
  429.                                  DWORD  dwBlockStart;
  430.                                  DWORD  dwSampleOffset;
  431.                               }
  432.  
  433.                The <cue-point> fields are as follows:
  434.  
  435.  
  436.  
  437.                Field          Description
  438.  
  439.  
  440.  
  441.  
  442.  
  443.                dwName         Specifies the cue point name. Each
  444.                               <cue-point> record must have a unique
  445.                               dwName field.
  446.  
  447.                dwPosition     Specifies the sample position of the
  448.                               cue point. This is the sequential
  449.                               sample number within the play order.
  450.                               See ``Playlist Chunk,'' later in this
  451.                               document, for a discussion of the play
  452.                               order.
  453.  
  454.                fccChunk       Specifies the name or chunk ID of the
  455.                               chunk containing the cue point.
  456.  
  457.                dwChunkStart   Specifies the file position of the
  458.                               start of the chunk containing the cue
  459.                               point. This is a byte offset relative
  460.                               to the start of the data section of
  461.                               the `wavl' LIST chunk.
  462.  
  463.                dwBlockStart   Specifies the file position of the
  464.                               start of the block containing the
  465.                               position. This is a byte offset
  466.                               relative to the start of the data
  467.                               section of the `wavl' LIST chunk.
  468.  
  469.                dwSampleOffset Specifies the sample offset of the cue
  470.                               point relative to the start of the
  471.                               block.
  472.  
  473.  
  474.  
  475.  
  476.                Examples of File Position Values
  477.  
  478.  
  479.                The following table describes the <cue-point> field values
  480.                for a WAVE file containing multiple `data' and `slnt' chunks
  481.                enclosed in a `wavl' LIST chunk:
  482.  
  483.  
  484.  
  485.                Cue Point     Field         Value
  486.                Location
  487.  
  488.  
  489.                In a `slnt'   fccChunk      FOURCC value `slnt'.
  490.                chunk
  491.  
  492.                              dwChunkStart  File position of the
  493.                                            `slnt' chunk relative to
  494.                                            the start of the data
  495.                                            section in the `wavl' LIST
  496.                                            chunk.
  497.  
  498.  
  499.  
  500.  
  501.  
  502.                              dwBlockStart  File position of the data
  503.                                            section of the `slnt'
  504.                                            chunk relative to the
  505.                                            start of the data section
  506.                                            of the `wavl' LIST chunk.
  507.  
  508.                              dwSampleOffs  Sample position of the cue
  509.                              et            point relative to the
  510.                                            start of the `slnt' chunk.
  511.  
  512.                In a PCM      fccChunk      FOURCC value `data'.
  513.                `data' chunk
  514.  
  515.                              dwChunkStart  File position of the
  516.                                            `data' chunk relative to
  517.                                            the start of the data
  518.                                            section in the `wavl' LIST
  519.                                            chunk.
  520.  
  521.                              dwBlockStart  File position of the cue
  522.                                            point relative to the
  523.                                            start of the data section
  524.                                            of the `wavl' LIST chunk.
  525.  
  526.                              dwSampleOffs  Zero value.
  527.                              et
  528.  
  529.                In a          fccChunk      FOURCC value `data'.
  530.                compressed
  531.                `data' chunk
  532.  
  533.                              dwChunkStart  File position of the start
  534.                                            of the `data' chunk
  535.                                            relative to the start of
  536.                                            the data section of the
  537.                                            `wavl' LIST chunk.
  538.  
  539.                              dwBlockStart  File position of the
  540.                                            enclosing block relative
  541.                                            to the start of the data
  542.                                            section of the `wavl' LIST
  543.                                            chunk. The software can
  544.                                            begin the decompression at
  545.                                            this point.
  546.  
  547.                              dwSampleOffs  Sample position of the cue
  548.                              et            point relative to the
  549.                                            start of the block.
  550.  
  551.  
  552.  
  553.                The following table describes the <cue-point> field values
  554.                for a WAVE file containing a single `data' chunk:
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.                Cue Point     Field         Value
  562.                Location
  563.  
  564.  
  565.                Within PCM    fccChunk      FOURCC value `data'.
  566.                data
  567.  
  568.                              dwChunkStart  Zero value.
  569.  
  570.                              dwBlockStart  Zero value.
  571.  
  572.                              dwSampleOffs  Sample position of the cue
  573.                              et            point relative to the
  574.                                            start of the `data' chunk.
  575.  
  576.                In a          fccChunk      FOURCC value `data'.
  577.                compressed
  578.                `data' chunk
  579.  
  580.                              dwChunkStart  Zero value.
  581.  
  582.                              dwBlockStart  File position of the
  583.                                            enclosing block relative
  584.                                            to the start of the `data'
  585.                                            chunk. The software can
  586.                                            begin the decompression at
  587.                                            this point.
  588.  
  589.                              dwSampleOffs  Sample position of the cue
  590.                              et            point relative to the
  591.                                            start of the block.
  592.  
  593.  
  594.  
  595.           Playlist Chunk
  596.  
  597.  
  598.                The <playlist-ck> playlist chunk specifies a play order for
  599.                a series of cue points. The <playlist-ck> is defined as
  600.                follows:
  601.  
  602.                 <playlist-ck> ->   plst(
  603.                                  <dwSegments:DWORD>    // Count of play
  604.                 segments
  605.                                  <play-segment>... )   // Play-segment
  606.                 table
  607.  
  608.                 <play-segment> ->  struct {
  609.                                    DWORD dwName;
  610.                                    DWORD dwLength;
  611.                                    DWORD dwLoops;
  612.                                  }
  613.  
  614.                The <play-segment> fields are as follows:
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.                Field          Description
  622.  
  623.  
  624.                dwName         Specifies the cue point name. This
  625.                               value must match one of the names
  626.                               listed in the <cue-ck> cue-point
  627.                               table.
  628.  
  629.                dwLength       Specifies the length of the section in
  630.                               samples.
  631.  
  632.                dwLoops        Specifies the number of times to play
  633.                               the section.
  634.  
  635.  
  636.  
  637.  
  638.           Associated Data Chunk
  639.  
  640.  
  641.                The <assoc-data-list> associated data list provides the
  642.                ability to attach information like labels to sections of the
  643.                waveform data stream. The <assoc-data-list> is defined as
  644.                follows:
  645.  
  646.                 <assoc-data-list> ->  LIST('adtl'
  647.                                         <labl-ck>                // Label
  648.                                         <note-ck>                // Note
  649.                                         <ltxt-ck>                // Text
  650.                 with data length
  651.                                         <file-ck> )              // Media
  652.                 file
  653.  
  654.                 <labl-ck> ->       labl(<dwName:DWORD>
  655.                                         <data:ZSTR> )
  656.  
  657.                 <note-ck> ->       note(<dwName:DWORD>
  658.                                         <data:ZSTR> )
  659.  
  660.                 <ltxt-ck> ->       ltxt(<dwName:DWORD>
  661.                                         <dwSampleLength:DWORD>
  662.                                         <dwPurpose:DWORD>
  663.                                         <wCountry:WORD>
  664.                                         <wLanguage:WORD>
  665.                                         <wDialect:WORD>
  666.                                         <wCodePage:WORD>
  667.                                         <data:BYTE>... )
  668.  
  669.                 <file-ck> ->       file(<dwName:DWORD>
  670.                                         <dwMedType:DWORD>
  671.                                         <fileData:BYTE>...)
  672.  
  673.  
  674.  
  675.  
  676.                Label and Note Information
  677.  
  678.  
  679.                The `labl' and `note' chunks have similar fields. The `labl'
  680.                chunk contains a label, or title, to associate with a cue
  681.                point. The `note' chunk contains comment text for a cue
  682.                point. The fields are as follows:
  683.  
  684.  
  685.  
  686.                Field          Description
  687.  
  688.  
  689.                dwName         Specifies the cue point name.  This
  690.                               value must match one of the names
  691.                               listed in the <cue-ck> cue-point
  692.                               table.
  693.  
  694.                data           Specifies a NULL-terminated string
  695.                               containing a text label (for the
  696.                               `labl' chunk) or comment text (for the
  697.                               `note' chunk).
  698.  
  699.  
  700.  
  701.  
  702.                Text with Data Length Information
  703.  
  704.  
  705.                The `ltxt'' chunk contains text that is associated with a
  706.                data segment of specific length. The chunk fields are as
  707.                follows:
  708.  
  709.  
  710.  
  711.                Field          Description
  712.  
  713.  
  714.                dwName         Specifies the cue point name.  This
  715.                               value must match one of the names
  716.                               listed in the <cue-ck> cue-point
  717.                               table.
  718.  
  719.                dwSampleLength Specifies the number of samples in the
  720.                               segment of waveform data.
  721.  
  722.                dwPurpose      Specifies the type or purpose of the
  723.                               text. For example, dwPurpose can
  724.                               specify a FOURCC code like `scrp' for
  725.                               script text or `capt' for close-
  726.                               caption text.
  727.  
  728.                wCountry       Specifies the country code for the
  729.                               text. See ``Country Codes'' in Chapter
  730.                               2, ``Resource Interchange File
  731.                               Format,'' for a current list of
  732.                               country codes.
  733.  
  734.  
  735.  
  736.  
  737.  
  738.                wLanguage,     Specify the language and dialect codes
  739.                wDialect       for the text. See ``Language and
  740.                               Dialect Codes'' in Chapter 2,
  741.                               ``Resource Interchange File Format,''
  742.                               for a current list of language and
  743.                               dialect codes.
  744.  
  745.                wCodePage      Specifies the code page for the text.
  746.  
  747.  
  748.  
  749.  
  750.                Embedded File Information
  751.  
  752.  
  753.                The `file' chunk contains information described in other
  754.                file formats (for example, an `RDIB' file or an ASCII text
  755.                file). The chunk fields are as follows:
  756.  
  757.  
  758.  
  759.                Field          Description
  760.  
  761.  
  762.                dwName         Specifies the cue point name.  This
  763.                               value must match one of the names
  764.                               listed in the <cue-ck> cue-point
  765.                               table.
  766.  
  767.                dwMedType      Specifies the file type contained in
  768.                               the fileData field. If the fileData
  769.                               section contains a RIFF form, the
  770.                               dwMedType field is the same as the
  771.                               RIFF form type for the file.
  772.  
  773.                               This field can contain a zero value.
  774.  
  775.                fileData       Contains the media file.
  776.