Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#ifndef XWVFILE_H
#define XWVFILE_H
#ifdef _WIN32
#pragma once
#endif
#pragma pack(1)
#define XWV_ID (('X'<<24)|('W'<<16)|('V'<<8)|(' '<<0))
#define XWV_VERSION 4
enum xwvSampleRate_t { XWV_RATE_11025 = 0, XWV_RATE_22050 = 1, XWV_RATE_44100 = 2, };
enum xwvFormat_t { XWV_FORMAT_PCM = 0, XWV_FORMAT_XMA = 1, XWV_FORMAT_ADPCM = 2, };
// generated in big-endian
struct xwvHeader_t { unsigned int id; unsigned int version; unsigned int headerSize; // header only
unsigned int staticDataSize; // follows header
unsigned int dataOffset; // start of samples, possibly sector aligned
unsigned int dataSize; // length of samples in bytes
unsigned int numDecodedSamples; // for duration calcs
int loopStart; // -1 = no loop, offset of loop in samples
unsigned short loopBlock; // the xma block where the loop starts
unsigned short numLeadingSamples; // number of leading samples in the loop block to discard
unsigned short numTrailingSamples; // number of trailing samples at the final block to discard
unsigned short vdatSize; // follows seek table
byte format; byte bitsPerSample; byte sampleRate; byte channels; byte quality; byte bHasSeekTable; // indicates presence, follows header
byte padding[2]; // created as 0
inline unsigned int GetPreloadSize() { return headerSize + staticDataSize; }
inline int GetBitsPerSample() const { return bitsPerSample; }
int GetSampleRate() const { int rates[] = {11025, 22050, 44100}; int rate = sampleRate; return rates[rate]; } inline int GetChannels() const { return channels; }
void SetSampleRate( int sampleRateIn ) { byte rate = ( sampleRateIn == 11025 ) ? XWV_RATE_11025 : ( sampleRateIn==22050 )? XWV_RATE_22050 : XWV_RATE_44100; sampleRate = rate; }
inline void SetChannels( int channelsIn ) { channels = channelsIn; }
inline int GetSeekTableSize() { // seek table is indexed by packets
return bHasSeekTable ? ( dataSize / 2048 ) * sizeof( int ) : 0; } };
#pragma pack()
#endif // XWVFILE_H
|