From 05cdff3abe82f3b79473df940c407881f5b09eea Mon Sep 17 00:00:00 2001 From: Vijay Kiran Kamuju Date: Wed, 12 Aug 2020 11:06:30 +0200 Subject: [PATCH 01/23] include: Add xact2wb.h Signed-off-by: Vijay Kiran Kamuju --- include/Makefile.in | 1 + include/xact2wb.h | 149 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 include/xact2wb.h diff --git a/include/Makefile.in b/include/Makefile.in index d32b0a225c1..9983d1151ca 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -818,6 +818,7 @@ SOURCES = \ wuapi.idl \ x3daudio.h \ xact3.h \ + xact2wb.h \ xact3wb.h \ xapo.idl \ xapofx.h \ diff --git a/include/xact2wb.h b/include/xact2wb.h new file mode 100644 index 00000000000..2bdc7f5c0dd --- /dev/null +++ b/include/xact2wb.h @@ -0,0 +1,149 @@ +/* + * 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 __XACT2WB_H__ +#define __XACT2WB_H__ + +#include + +typedef DWORD WAVEBANKOFFSET; + +#define WAVEBANK_HEADER_SIGNATURE 0x444e4257 /* DNBW */ +#define WAVEBANK_HEADER_VERSION 42 +#define WAVEBANK_BANKNAME_LENGTH 64 +#define WAVEBANK_ENTRYNAME_LENGTH 64 + +#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_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 + +#define WAVEBANKENTRY_FLAGS_READAHEAD 0x00000001 +#define WAVEBANKENTRY_FLAGS_LOOPCACHE 0x00000002 +#define WAVEBANKENTRY_FLAGS_REMOVELOOPTAIL 0x00000004 +#define WAVEBANKENTRY_FLAGS_IGNORELOOP 0x00000008 +#define WAVEBANKENTRY_FLAGS_MASK 0x00000008 + +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 + +#endif /* __XACT2WB_H__ */ -- 2.28.0