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.
61 lines
2.2 KiB
61 lines
2.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Define the IVoiceCodec interface. |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef IVOICECODEC_H |
|
#define IVOICECODEC_H |
|
#pragma once |
|
|
|
|
|
#include "interface.h" |
|
|
|
|
|
#define BYTES_PER_SAMPLE 2 |
|
|
|
|
|
// This interface is for voice codecs to implement. |
|
|
|
// Codecs are guaranteed to be called with the exact output from Compress into Decompress (ie: |
|
// data won't be stuck together and sent to Decompress). |
|
|
|
// Decompress is not guaranteed to be called in any specific order relative to Compress, but |
|
// Codecs maintain state between calls, so it is best to call Compress with consecutive voice data |
|
// and decompress likewise. If you call it out of order, it will sound wierd. |
|
|
|
// In the same vein, calling Decompress twice with the same data is a bad idea since the state will be |
|
// expecting the next block of data, not the same block. |
|
|
|
class IVoiceCodec |
|
{ |
|
protected: |
|
virtual ~IVoiceCodec() {} |
|
|
|
public: |
|
// Initialize the object. The uncompressed format is always 8-bit signed mono. |
|
virtual bool Init( int quality )=0; |
|
|
|
// Use this to delete the object. |
|
virtual void Release()=0; |
|
|
|
|
|
// Compress the voice data. |
|
// pUncompressed - 16-bit signed mono voice data. |
|
// maxCompressedBytes - The length of the pCompressed buffer. Don't exceed this. |
|
// bFinal - Set to true on the last call to Compress (the user stopped talking). |
|
// Some codecs like big block sizes and will hang onto data you give them in Compress calls. |
|
// When you call with bFinal, the codec will give you compressed data no matter what. |
|
// Return the number of bytes you filled into pCompressed. |
|
virtual int Compress(const char *pUncompressed, int nSamples, char *pCompressed, int maxCompressedBytes, bool bFinal)=0; |
|
|
|
// Decompress voice data. pUncompressed is 16-bit signed mono. |
|
virtual int Decompress(const char *pCompressed, int compressedBytes, char *pUncompressed, int maxUncompressedBytes)=0; |
|
|
|
// Some codecs maintain state between Compress and Decompress calls. This should clear that state. |
|
virtual bool ResetState()=0; |
|
}; |
|
|
|
|
|
#endif // IVOICECODEC_H
|
|
|