Sweden-Number/include/xact3wb.h

149 lines
4.3 KiB
C

/*
* Copyright (c) 2020 Alistair Leslie-Hughes
* Copyright (c) 2020 Vijay Kiran Kamuju
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __XACT3WB_H__
#define __XACT3WB_H__
#include <pshpack1.h>
typedef DWORD WAVEBANKOFFSET;
#define WAVEBANK_HEADER_SIGNATURE 0x444e4257 /* DNBW */
#define WAVEBANK_HEADER_VERSION 44
#define WAVEBANK_BANKNAME_LENGTH 64
#define WAVEBANK_ENTRYNAME_LENGTH 64
#define WAVEBANK_MAX_DATA_SEGMENT_SIZE 0xffffffff
#define WAVEBANK_COMPACT_DATA_SEGMENT_SIZE 0x001fffff
#define WAVEBANK_TYPE_BUFFER 0x00000000
#define WAVEBANK_TYPE_STREAMING 0x00000001
#define WAVEBANK_TYPE_MASK 0x00000001
#define WAVEBANK_FLAGS_ENTRYNAMES 0x00010000
#define WAVEBANK_FLAGS_COMPACT 0x00020000
#define WAVEBANK_FLAGS_SYNC_DISABLED 0x00040000
#define WAVEBANK_FLAGS_SEEKTABLES 0x00080000
#define WAVEBANK_FLAGS_MASK 0x000F0000
#define WAVEBANK_DVD_SECTOR_SIZE 2048
#define WAVEBANK_DVD_BLOCK_SIZE (WAVEBANK_DVD_SECTOR_SIZE * 16)
#define WAVEBANK_ALIGNMENT_MIN 4
#define WAVEBANK_ALIGNMENT_DVD WAVEBANK_DVD_SECTOR_SIZE
typedef enum WAVEBANKSEGIDX
{
WAVEBANK_SEGIDX_BANKDATA = 0,
WAVEBANK_SEGIDX_ENTRYMETADATA,
WAVEBANK_SEGIDX_SEEKTABLES,
WAVEBANK_SEGIDX_ENTRYNAMES,
WAVEBANK_SEGIDX_ENTRYWAVEDATA,
WAVEBANK_SEGIDX_COUNT
} WAVEBANKSEGIDX, *LPWAVEBANKSEGIDX;
typedef const WAVEBANKSEGIDX *LPCWAVEBANKSEGIDX;
#define WAVEBANKMINIFORMAT_TAG_PCM 0x0
#define WAVEBANKMINIFORMAT_TAG_XMA 0x1
#define WAVEBANKMINIFORMAT_TAG_ADPCM 0x2
#define WAVEBANKMINIFORMAT_TAG_WMA 0x3
#define WAVEBANKMINIFORMAT_BITDEPTH_8 0x0
#define WAVEBANKMINIFORMAT_BITDEPTH_16 0x1
typedef union WAVEBANKMINIWAVEFORMAT
{
struct
{
DWORD wFormatTag : 2;
DWORD nChannels : 3;
DWORD nSamplesPerSec : 18;
DWORD wBlockAlign : 8;
DWORD wBitsPerSample : 1;
} DUMMYSTRUCTNAME;
DWORD dwValue;
} WAVEBANKMINIWAVEFORMAT, *LPWAVEBANKMINIWAVEFORMAT;
typedef const WAVEBANKMINIWAVEFORMAT *LPCWAVEBANKMINIWAVEFORMAT;
typedef struct WAVEBANKREGION
{
DWORD dwOffset;
DWORD dwLength;
} WAVEBANKREGION, *LPWAVEBANKREGION;
typedef const WAVEBANKREGION *LPCWAVEBANKREGION;
typedef struct WAVEBANKSAMPLEREGION
{
DWORD dwStartSample;
DWORD dwTotalSamples;
} WAVEBANKSAMPLEREGION, *LPWAVEBANKSAMPLEREGION;
typedef const WAVEBANKSAMPLEREGION *LPCWAVEBANKSAMPLEREGION;
typedef struct WAVEBANKHEADER
{
DWORD dwSignature;
DWORD dwVersion;
DWORD dwHeaderVersion;
WAVEBANKREGION Segments[WAVEBANK_SEGIDX_COUNT];
} WAVEBANKHEADER, *LPWAVEBANKHEADER;
typedef const WAVEBANKHEADER *LPCWAVEBANKHEADER;
#define WAVEBANKENTRY_XMASTREAMS_MAX 3
#define WAVEBANKENTRY_XMACHANNELS_MAX 6
typedef struct WAVEBANKENTRY
{
union
{
struct
{
DWORD dwFlags : 4;
DWORD Duration : 28;
} DUMMYSTRUCTNAME;
DWORD dwFlagsAndDuration;
} DUMMYUNIONNAME;
WAVEBANKMINIWAVEFORMAT Format;
WAVEBANKREGION PlayRegion;
WAVEBANKSAMPLEREGION LoopRegion;
} WAVEBANKENTRY, *LPWAVEBANKENTRY;
typedef const WAVEBANKENTRY *LPCWAVEBANKENTRY;
typedef struct WAVEBANKENTRYCOMPACT
{
DWORD dwOffset : 21;
DWORD dwLengthDeviation : 11;
} WAVEBANKENTRYCOMPACT, *LPWAVEBANKENTRYCOMPACT;
typedef const WAVEBANKENTRYCOMPACT *LPCWAVEBANKENTRYCOMPACT;
typedef struct WAVEBANKDATA
{
DWORD dwFlags;
DWORD dwEntryCount;
CHAR szBankName[WAVEBANK_BANKNAME_LENGTH];
DWORD dwEntryMetaDataElementSize;
DWORD dwEntryNameElementSize;
DWORD dwAlignment;
WAVEBANKMINIWAVEFORMAT CompactFormat;
FILETIME BuildTime;
} WAVEBANKDATA, *LPWAVEBANKDATA;
typedef const WAVEBANKDATA *LPCWAVEBANKDATA;
#include <poppack.h>
#endif /* __XACT3WB_H__ */