aboutsummaryrefslogtreecommitdiff
path: root/sound/iff.h
diff options
context:
space:
mode:
authorNicola Mettifogo2007-05-01 15:39:40 +0000
committerNicola Mettifogo2007-05-01 15:39:40 +0000
commit008042ac2538bebfce013cb0ec4efa4a5600e4bb (patch)
tree3c1107a6a9323641201a6ebb11960214891c3cc9 /sound/iff.h
parentd520bdfcb8f70e8fd4448ea404d9e5fa993f23ca (diff)
downloadscummvm-rg350-008042ac2538bebfce013cb0ec4efa4a5600e4bb.tar.gz
scummvm-rg350-008042ac2538bebfce013cb0ec4efa4a5600e4bb.tar.bz2
scummvm-rg350-008042ac2538bebfce013cb0ec4efa4a5600e4bb.zip
Implemented a IFF (Interchange File Format) parser and added subclasses to parse graphics (ILBM, PBM) and audio (8SVX), thus replacing old decoding routines. SAGA and Parallaction have been adjusted to work with the new code.
svn-id: r26719
Diffstat (limited to 'sound/iff.h')
-rw-r--r--sound/iff.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/sound/iff.h b/sound/iff.h
new file mode 100644
index 0000000000..592cf9c2f0
--- /dev/null
+++ b/sound/iff.h
@@ -0,0 +1,73 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2001-2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef SOUND_IFF_H
+#define SOUND_IFF_H
+
+#include "common/iff_container.h"
+
+namespace Audio {
+
+struct Voice8Header {
+ uint32 oneShotHiSamples;
+ uint32 repeatHiSamples;
+ uint32 samplesPerHiCycle;
+ uint16 samplesPerSec;
+ byte octaves;
+ byte compression;
+ uint32 volume;
+
+ Voice8Header() {
+ memset(this, 0, sizeof(Voice8Header));
+ }
+};
+
+
+/*
+ A8SVX decoder reads 8SVX subtype of IFF files.
+
+ TODO: make a factory function for this kind of stream?
+ */
+class A8SVXDecoder : public Common::IFFParser {
+
+protected:
+ Voice8Header &_header;
+ byte* &_data;
+ uint32 &_dataSize;
+
+protected:
+ void readVHDR(Common::IFFChunk &chunk);
+ void readBODY(Common::IFFChunk &chunk);
+
+public:
+ A8SVXDecoder(Common::ReadStream &input, Voice8Header &header, byte *&data, uint32 &dataSize);
+ void decode();
+};
+
+
+/*
+ TODO: Implement a parser for AIFF subtype.
+ */
+
+}
+
+#endif