mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2024-12-13 13:40:56 +00:00
VoIP: client can now specify targets for voice transmission.
This commit is contained in:
parent
b9a9727689
commit
cc18323a99
4 changed files with 21 additions and 1 deletions
|
@ -928,6 +928,7 @@ void CL_FirstSnapshot( void ) {
|
||||||
speex_bits_reset(&clc.speexDecoderBits[i]);
|
speex_bits_reset(&clc.speexDecoderBits[i]);
|
||||||
clc.speexDecoder[i] = speex_decoder_init(&speex_nb_mode);
|
clc.speexDecoder[i] = speex_decoder_init(&speex_nb_mode);
|
||||||
clc.voipIgnore[i] = qfalse;
|
clc.voipIgnore[i] = qfalse;
|
||||||
|
clc.voipGain[i] = 1.0f;
|
||||||
}
|
}
|
||||||
speex_encoder_ctl(clc.speexEncoder, SPEEX_GET_FRAME_SIZE,
|
speex_encoder_ctl(clc.speexEncoder, SPEEX_GET_FRAME_SIZE,
|
||||||
&clc.speexFrameSize);
|
&clc.speexFrameSize);
|
||||||
|
|
|
@ -190,6 +190,20 @@ void CL_UpdateVoipIgnore(const char *idstr, qboolean ignore)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void CL_UpdateVoipGain(const char *idstr, float gain)
|
||||||
|
{
|
||||||
|
if ((*idstr >= '0') && (*idstr <= '9')) {
|
||||||
|
const int id = atoi(idstr);
|
||||||
|
if (gain < 0.0f)
|
||||||
|
gain = 0.0f;
|
||||||
|
if ((id >= 0) && (id < MAX_CLIENTS)) {
|
||||||
|
clc.voipGain[id] = gain;
|
||||||
|
Com_Printf("VoIP: player #%d gain now set to %f\n", id, gain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CL_Voip_f( void )
|
void CL_Voip_f( void )
|
||||||
{
|
{
|
||||||
const char *cmd = Cmd_Argv(1);
|
const char *cmd = Cmd_Argv(1);
|
||||||
|
@ -213,6 +227,8 @@ void CL_Voip_f( void )
|
||||||
CL_UpdateVoipIgnore(Cmd_Argv(2), qtrue);
|
CL_UpdateVoipIgnore(Cmd_Argv(2), qtrue);
|
||||||
} else if (strcmp(cmd, "unignore") == 0) {
|
} else if (strcmp(cmd, "unignore") == 0) {
|
||||||
CL_UpdateVoipIgnore(Cmd_Argv(2), qfalse);
|
CL_UpdateVoipIgnore(Cmd_Argv(2), qfalse);
|
||||||
|
} else if (strcmp(cmd, "gain") == 0) {
|
||||||
|
CL_UpdateVoipGain(Cmd_Argv(2), atof(Cmd_Argv(3)));
|
||||||
} else if (strcmp(cmd, "muteall") == 0) {
|
} else if (strcmp(cmd, "muteall") == 0) {
|
||||||
Com_Printf("VoIP: muting incoming voice\n");
|
Com_Printf("VoIP: muting incoming voice\n");
|
||||||
CL_AddReliableCommand("voip muteall");
|
CL_AddReliableCommand("voip muteall");
|
||||||
|
|
|
@ -647,6 +647,8 @@ qboolean CL_ShouldIgnoreVoipSender(int sender)
|
||||||
return qtrue; // all channels are muted with extreme prejudice.
|
return qtrue; // all channels are muted with extreme prejudice.
|
||||||
else if (clc.voipIgnore[sender])
|
else if (clc.voipIgnore[sender])
|
||||||
return qtrue; // just ignoring this guy.
|
return qtrue; // just ignoring this guy.
|
||||||
|
else if (clc.voipGain[sender] == 0.0f)
|
||||||
|
return qtrue; // too quiet to play.
|
||||||
|
|
||||||
return qfalse; // !!! FIXME: implement per-channel muting.
|
return qfalse; // !!! FIXME: implement per-channel muting.
|
||||||
}
|
}
|
||||||
|
@ -758,7 +760,7 @@ void CL_ParseVoip ( msg_t *msg ) {
|
||||||
Com_DPrintf("VoIP: playback %d bytes, %d samples, %d frames\n",
|
Com_DPrintf("VoIP: playback %d bytes, %d samples, %d frames\n",
|
||||||
written * 2, written, i);
|
written * 2, written, i);
|
||||||
S_RawSamples(sender + 1, written, 8000, 2, 1,
|
S_RawSamples(sender + 1, written, 8000, 2, 1,
|
||||||
(const byte *) decoded, 1.0f); // !!! FIXME: hardcoding!
|
(const byte *) decoded, clc.voipGain[sender]); // !!! FIXME: hardcoding!
|
||||||
written = 0;
|
written = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -239,6 +239,7 @@ typedef struct {
|
||||||
void *speexDecoder[MAX_CLIENTS];
|
void *speexDecoder[MAX_CLIENTS];
|
||||||
byte voipIncomingGeneration[MAX_CLIENTS];
|
byte voipIncomingGeneration[MAX_CLIENTS];
|
||||||
int voipIncomingSequence[MAX_CLIENTS];
|
int voipIncomingSequence[MAX_CLIENTS];
|
||||||
|
float voipGain[MAX_CLIENTS];
|
||||||
qboolean voipIgnore[MAX_CLIENTS];
|
qboolean voipIgnore[MAX_CLIENTS];
|
||||||
qboolean voipMuteAll;
|
qboolean voipMuteAll;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue