3#pragma warning (disable:4996)
9unsigned fourcc::make_id(
const std::string& ascii)
11 std::string s = ascii;
14 unsigned id = (
unsigned&)(s[0]);
20 return std::string((
char*)&
id, 4);
25 return id == make_id(s);
30 return id != make_id(s);
33std::ostream& operator << (std::ostream& os,
const fourcc& f)
47bool riff_reader::read_chunk_info(
fourcc&
id,
unsigned& size)
49 if (fread(&
id, 1, 4, fp) != 4) {
53 if (fread(&size, 1, 4, fp) != 4) {
60bool riff_reader::read_chunk_list(
unsigned list_size)
62 while (list_size > 0) {
66 if (!read_chunk_info(
id, size))
68 unsigned size_correct = size;
72 list_size -= 8+size_correct;
76 if (fread(&hdr, 1, 4, fp) != 4) {
81 if (!read_chunk_list(size-4))
86 if (fseek(fp, size-4, SEEK_CUR) != 0) {
97 data =
new unsigned char [size];
99 data = (
unsigned char*) data_ptr;
101 if (fread(data, 1, size, fp) != size) {
106 if (size_correct > size)
107 fseek(fp, 1, SEEK_CUR);
115 if (fseek(fp, size, SEEK_CUR) != 0) {
125void riff_reader::close()
136 fp = fopen(file_name.c_str(),
"rb");
142 if (!read_chunk_info(
id, size))
151 if (fread(&hdr, 1, 4, fp) != 4) {
161 if (read_chunk_list(size-4))