mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2024-12-13 13:40:56 +00:00
VoIP: Initial work on adding Speex preprocessor.
This commit is contained in:
parent
26c706df15
commit
c50799fcf7
3 changed files with 14 additions and 2 deletions
|
@ -922,12 +922,20 @@ void CL_FirstSnapshot( void ) {
|
||||||
int i;
|
int i;
|
||||||
speex_bits_init(&clc.speexEncoderBits);
|
speex_bits_init(&clc.speexEncoderBits);
|
||||||
speex_bits_reset(&clc.speexEncoderBits);
|
speex_bits_reset(&clc.speexEncoderBits);
|
||||||
|
|
||||||
clc.speexEncoder = speex_encoder_init(&speex_nb_mode);
|
clc.speexEncoder = speex_encoder_init(&speex_nb_mode);
|
||||||
|
|
||||||
speex_encoder_ctl(clc.speexEncoder, SPEEX_GET_FRAME_SIZE,
|
speex_encoder_ctl(clc.speexEncoder, SPEEX_GET_FRAME_SIZE,
|
||||||
&clc.speexFrameSize);
|
&clc.speexFrameSize);
|
||||||
speex_encoder_ctl(clc.speexEncoder, SPEEX_GET_SAMPLING_RATE,
|
speex_encoder_ctl(clc.speexEncoder, SPEEX_GET_SAMPLING_RATE,
|
||||||
&clc.speexSamplingRate);
|
&clc.speexSampleRate);
|
||||||
|
|
||||||
|
clc.speexPreprocessor = speex_preprocess_state_init(clc.speexFrameSize,
|
||||||
|
clc.speexSampleRate);
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
speex_preprocess_ctl(clc.speexPreprocessor,
|
||||||
|
SPEEX_PREPROCESS_SET_DENOISE, &i);
|
||||||
|
|
||||||
for (i = 0; i < MAX_CLIENTS; i++) {
|
for (i = 0; i < MAX_CLIENTS; i++) {
|
||||||
speex_bits_init(&clc.speexDecoderBits[i]);
|
speex_bits_init(&clc.speexDecoderBits[i]);
|
||||||
|
|
|
@ -345,6 +345,8 @@ void CL_CaptureVoip(void)
|
||||||
voipPower = s; // !!! FIXME: this isn't very clever.
|
voipPower = s; // !!! FIXME: this isn't very clever.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
speex_preprocess_run(clc.speexPreprocessor, &sampbuffer[pos]);
|
||||||
|
|
||||||
// Encode raw audio samples into Speex data...
|
// Encode raw audio samples into Speex data...
|
||||||
speex_bits_reset(&clc.speexEncoderBits);
|
speex_bits_reset(&clc.speexEncoderBits);
|
||||||
speex_encode_int(clc.speexEncoder, &sampbuffer[pos],
|
speex_encode_int(clc.speexEncoder, &sampbuffer[pos],
|
||||||
|
@ -1136,12 +1138,12 @@ void CL_Disconnect( qboolean showMainMenu ) {
|
||||||
int i;
|
int i;
|
||||||
speex_bits_destroy(&clc.speexEncoderBits);
|
speex_bits_destroy(&clc.speexEncoderBits);
|
||||||
speex_encoder_destroy(clc.speexEncoder);
|
speex_encoder_destroy(clc.speexEncoder);
|
||||||
|
speex_preprocess_state_destroy(clc.speexPreprocessor);
|
||||||
for (i = 0; i < MAX_CLIENTS; i++) {
|
for (i = 0; i < MAX_CLIENTS; i++) {
|
||||||
speex_bits_destroy(&clc.speexDecoderBits[i]);
|
speex_bits_destroy(&clc.speexDecoderBits[i]);
|
||||||
speex_decoder_destroy(clc.speexDecoder[i]);
|
speex_decoder_destroy(clc.speexDecoder[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cmd_RemoveCommand ("voip");
|
Cmd_RemoveCommand ("voip");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
#if USE_VOIP
|
#if USE_VOIP
|
||||||
#include "speex/speex.h"
|
#include "speex/speex.h"
|
||||||
|
#include "speex/speex_preprocess.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// file full of random crap that gets used to create cl_guid
|
// file full of random crap that gets used to create cl_guid
|
||||||
|
@ -248,6 +249,7 @@ typedef struct {
|
||||||
int voipTarget1; // these three ints make up a bit mask of 92 bits.
|
int voipTarget1; // these three ints make up a bit mask of 92 bits.
|
||||||
int voipTarget2; // the bits say who a VoIP pack is addressed to:
|
int voipTarget2; // the bits say who a VoIP pack is addressed to:
|
||||||
int voipTarget3; // (1 << clientnum). See cl_voipSendTarget cvar.
|
int voipTarget3; // (1 << clientnum). See cl_voipSendTarget cvar.
|
||||||
|
SpeexPreprocessState *speexPreprocessor;
|
||||||
SpeexBits speexEncoderBits;
|
SpeexBits speexEncoderBits;
|
||||||
void *speexEncoder;
|
void *speexEncoder;
|
||||||
int voipOutgoingDataSize;
|
int voipOutgoingDataSize;
|
||||||
|
|
Loading…
Reference in a new issue