123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /*
- ===========================================================================
- Doom 3 BFG Edition GPL Source Code
- Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
- This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
- Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- Doom 3 BFG Edition Source Code 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 General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Doom 3 BFG Edition Source Code. If not, see <http://www.gnu.org/licenses/>.
- In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below.
- If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
- ===========================================================================
- */
- #ifndef __XA2_SOUNDSAMPLE_H__
- #define __XA2_SOUNDSAMPLE_H__
- /*
- ================================================
- idSoundSample_XAudio2
- ================================================
- */
- class idSampleInfo;
- class idSoundSample_XAudio2 {
- public:
- idSoundSample_XAudio2();
- // Loads and initializes the resource based on the name.
- virtual void LoadResource();
- void SetName( const char * n ) { name = n; }
- const char * GetName() const { return name; }
- ID_TIME_T GetTimestamp() const { return timestamp; }
- // turns it into a beep
- void MakeDefault();
- // frees all data
- void FreeData();
- int LengthInMsec() const { return SamplesToMsec( NumSamples(), SampleRate() ); }
- int SampleRate() const { return format.basic.samplesPerSec; }
- int NumSamples() const { return playLength; }
- int NumChannels() const { return format.basic.numChannels; }
- int BufferSize() const { return totalBufferSize; }
- bool IsCompressed() const { return ( format.basic.formatTag != idWaveFile::FORMAT_PCM ); }
- bool IsDefault() const { return timestamp == FILE_NOT_FOUND_TIMESTAMP; }
- bool IsLoaded() const { return loaded; }
- void SetNeverPurge() { neverPurge = true; }
- bool GetNeverPurge() const { return neverPurge; }
- void SetLevelLoadReferenced() { levelLoadReferenced = true; }
- void ResetLevelLoadReferenced() { levelLoadReferenced = false; }
- bool GetLevelLoadReferenced() const { return levelLoadReferenced; }
- int GetLastPlayedTime() const { return lastPlayedTime; }
- void SetLastPlayedTime( int t ) { lastPlayedTime = t; }
- float GetAmplitude( int timeMS ) const;
- protected:
- friend class idSoundHardware_XAudio2;
- friend class idSoundVoice_XAudio2;
- ~idSoundSample_XAudio2();
- bool LoadWav( const idStr & name );
- bool LoadAmplitude( const idStr & name );
- void WriteAllSamples( const idStr &sampleName );
- bool LoadGeneratedSample( const idStr &name );
- void WriteGeneratedSample( idFile *fileOut );
- struct sampleBuffer_t {
- void * buffer;
- int bufferSize;
- int numSamples;
- };
- idStr name;
- ID_TIME_T timestamp;
- bool loaded;
- bool neverPurge;
- bool levelLoadReferenced;
- bool usesMapHeap;
- uint32 lastPlayedTime;
- int totalBufferSize; // total size of all the buffers
- idList<sampleBuffer_t, TAG_AUDIO> buffers;
- int playBegin;
- int playLength;
- idWaveFile::waveFmt_t format;
- idList<byte, TAG_AMPLITUDE> amplitude;
- };
- /*
- ================================================
- idSoundSample
- This reverse-inheritance purportedly makes working on
- multiple platforms easier.
- ================================================
- */
- class idSoundSample : public idSoundSample_XAudio2 {
- public:
- };
- #endif
|