1 /*
    2   Reggae definitions for FLAC format.
    3 
    4   Reggae FLAC decoder and encoder give access to many format details and internals.
    5   This file contains definitions for FLAC specific attributes and methods.
    6 */
    7 
    8 #ifndef CLASSES_MULTIMEDIA_FLAC_H
    9 #define CLASSES_MULTIMEDIA_FLAC_H
   10 
   11 #include <classes/multimedia/multimedia.h>
   12 
   13 
   14 /* methods (to override) */
   15 
   16 #define MMM_Flac_AcceptBlock           (MMA_Dummy + 1100)
   17 
   18 struct mmopFlacAcceptBlock
   19 {
   20 	ULONG MethodID;
   21 	struct TagItem *BlockInfo;
   22 };
   23 
   24 
   25 /* Attributes provided as a taglist sent to MMM_Flac_AcceptBlock(). */
   26 
   27 #define MMA_Flac_BlockData             (MMA_Dummy + 1110)   /* UBYTE*, pointer to FLAC data */
   28 #define MMA_Flac_BlockLength           (MMA_Dummy + 1111)   /* LONG, block length in bytes */
   29 #define MMA_Flac_HeaderLength          (MMA_Dummy + 1112)   /* LONG, block header length in bytes */
   30 #define MMA_Flac_HeaderChecksum        (MMA_Dummy + 1113)   /* UBYTE, CRC-8 checksum of header */
   31 #define MMA_Flac_ChecksumLoaded        (MMA_Dummy + 1114)   /* UWORD, CRC-16 of block as read from stream */
   32 #define MMA_Flac_ChecksumComputed      (MMA_Dummy + 1115)   /* UWORD, CRC-16 of block as calculated from data */
   33 #define MMA_Flac_StreamPosition        (MMA_Dummy + 1116)   /* QUAD*, block position in (headerless) stream */
   34 #define MMA_Flac_AudioFrames           (MMA_Dummy + 1117)   /* LONG, number of audio frames in block */
   35 #define MMA_Flac_VariableBlock         (MMA_Dummy + 1118)   /* BOOL, TRUE if blocking mode flag set for the block */
   36 #define MMA_Flac_SampleRate            (MMA_Dummy + 1119)   /* LONG, sample rate of block in Hz */
   37 #define MMA_Flac_Channels              (MMA_Dummy + 1120)   /* LONG, number of audio channels in block */
   38 #define MMA_Flac_StereoMode            (MMA_Dummy + 1121)   /* LONG, stereo decorrelation mode (see values below) */
   39 #define MMA_Flac_BitsPerSample         (MMA_Dummy + 1122)   /* LONG, bits per sample (already taken from demuxer if needed) */
   40 #define MMA_Flac_FirstAudioFrame       (MMA_Dummy + 1123)   /* QUAD*, first audio frame of block */
   41 
   42 /* Stereo decorrelation modes. */
   43 
   44 #define MMV_Flac_StereoMode_None       0                    /* block is not stereo */
   45 #define MMV_Flac_StereoMode_LR         1                    /* channel 0: left, channel 1: right */
   46 #define MMV_Flac_StereoMode_LS         2                    /* channel 0: left, channel 1: side */
   47 #define MMV_Flac_StereoMode_SR         3                    /* channel 0: side, channel 1: right */
   48 #define MMV_Flac_StereoMode_MS         4                    /* channel 0: middle, channel 1: side */
   49 
   50 /* Subblock types. */
   51 
   52 #define MMV_Flac_SubType_Undefined     0
   53 #define MMV_Flac_SubType_Constant      1
   54 #define MMV_Flac_SubType_Verbatim      2
   55 #define MMV_Flac_SubType_Fixed         3
   56 #define MMV_Flac_SubType_LPC           4
   57 
   58 
   59 #endif /* CLASSES_MULTIMEDIA_FLAC_H */