3rdparty/licenseReport: Add seperate LGPL checks
[haiku.git] / src / add-ons / media / plugins / wav_reader / wav.h
bloba22e35aa2dbc5fcfe78403545466ecf50177cc5b
1 /*
2 * Copyright (c) 2003, Marcus Overhagen
3 * All rights reserved.
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
18 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
22 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
23 * OF THE POSSIBILITY OF SUCH DAMAGE.
25 #ifndef _WAV_H
26 #define _WAV_H
28 struct riff_struct
30 uint32 riff_id; // 'RIFF'
31 uint32 len;
32 uint32 wave_id; // 'WAVE'
33 };
35 struct chunk_struct
37 uint32 fourcc;
38 uint32 len;
41 struct format_struct
43 uint16 format_tag;
44 uint16 channels;
45 uint32 samples_per_sec;
46 uint32 avg_bytes_per_sec;
47 uint16 block_align;
48 uint16 bits_per_sample;
49 };
51 struct wave_format_ex {
52 uint16 format_tag;
53 uint16 channels;
54 uint32 samples_per_sec;
55 uint32 avg_bytes_per_sec;
56 uint16 block_align;
57 uint16 bits_per_sample;
58 uint16 extra_size;
59 uint8 extra_data[64]; // allow for 64 bytes of extra data
62 struct mpeg3_wav_format {
63 uint16 format_tag;
64 uint16 channels;
65 uint32 samples_per_sec;
66 uint32 avg_bytes_per_sec;
67 uint16 block_align;
68 uint16 bits_per_sample;
69 uint16 extra_size;
70 uint16 id;
71 uint32 flags;
72 uint16 block_size;
73 uint16 frames_per_block;
74 uint16 codec_delay;
77 struct mpeg1_wav_format {
78 uint16 format_tag;
79 uint16 channels;
80 uint32 samples_per_sec;
81 uint32 avg_bytes_per_sec;
82 uint16 block_align;
83 uint16 bits_per_sample;
84 uint16 extra_size;
85 uint16 head_layer;
86 uint32 head_bitrate;
87 uint16 head_mode;
88 uint16 head_mode_ext;
89 uint16 head_emphasis;
90 uint16 head_flags;
91 uint32 pts_low;
92 uint32 pts_high;
95 struct format_struct_extensible
97 uint16 format_tag; // 0xfffe for extensible format
98 uint16 channels;
99 uint32 samples_per_sec;
100 uint32 avg_bytes_per_sec;
101 uint16 block_align;
102 uint16 bits_per_sample;
103 uint16 ext_size;
104 uint16 valid_bits_per_sample;
105 uint32 channel_mask;
106 uint8 guid[16]; // first two bytes are format code
109 struct fact_struct
111 uint32 sample_length;
114 #endif