Initial port of RIFF-WAVE (.wav) sound datatype (v50.3) by Fredrik Wikstrom <fredrik...
[AROS.git] / workbench / classes / datatypes / wav / include / decoders.h
blob8400fc2ddbfb2f18ee6e3febdf94560620819bf9
1 /*
2 * wave.datatype by Fredrik Wikstrom
4 */
6 #ifndef WAVE_DECODERS_H
7 #define WAVE_DECODERS_H
9 #include <sys/types.h>
11 #define DEC_SETUPPROTO(NAME) \
12 LONG NAME (struct DecoderData *data)
14 #define DEC_CLEANUPPROTO(NAME) \
15 void NAME (struct DecoderData *data)
17 #define DECODERPROTO(NAME) \
18 LONG NAME (struct DecoderData *data, struct WaveFormatEx *fmt, UBYTE *Src, BYTE **Dst, LONG numBlocks, LONG numFrames)
20 #define DECODERPROTO_v2(NAME) \
21 LONG NAME (struct DecoderData *data, BPTR file, BYTE **Dst, LONG totalFrames, LONG *decFrames)
23 struct DecoderData {
24 struct ClassBase *libBase;
25 struct RIFFChunk chunk;
26 struct WaveFormatEx *fmt;
27 LONG blockFrames;
28 void * state; // decoder-specific data
29 DECODERPROTO((*Decode));
30 DECODERPROTO((*DecodeFrames));
33 struct Decoder {
34 UWORD formatTag;
35 UWORD pad;
36 DEC_SETUPPROTO((*Setup));
37 DEC_CLEANUPPROTO((*Cleanup));
38 DECODERPROTO((*Decode));
39 DECODERPROTO((*DecodeFrames));
42 struct Decoder * GetDecoder(UWORD fmtTag);
44 #endif