mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-22 20:43:02 +01:00
Add config settings for audio channels
This commit is contained in:
parent
f882fdf608
commit
31f36318a2
@ -2,12 +2,12 @@
|
|||||||
.\" Title: toxic.conf
|
.\" Title: toxic.conf
|
||||||
.\" Author: [see the "AUTHORS" section]
|
.\" Author: [see the "AUTHORS" section]
|
||||||
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
|
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
|
||||||
.\" Date: 2018-10-27
|
.\" Date: 2020-05-07
|
||||||
.\" Manual: Toxic Manual
|
.\" Manual: Toxic Manual
|
||||||
.\" Source: toxic __VERSION__
|
.\" Source: toxic __VERSION__
|
||||||
.\" Language: English
|
.\" Language: English
|
||||||
.\"
|
.\"
|
||||||
.TH "TOXIC\&.CONF" "5" "2018\-10\-27" "toxic __VERSION__" "Toxic Manual"
|
.TH "TOXIC\&.CONF" "5" "2020\-05\-07" "toxic __VERSION__" "Toxic Manual"
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
.\" * Define some portability stuff
|
.\" * Define some portability stuff
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
@ -135,7 +135,7 @@ Maximum lines for chat window history\&. Integer value\&. (for example: 700)
|
|||||||
.PP
|
.PP
|
||||||
\fBnotification_timeout\fR
|
\fBnotification_timeout\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Time in milliseconds to display a notification\&. (for example: 3000)
|
Time in milliseconds to display a notification\&. Integer value\&. (for example: 3000)
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fBline_join\fR
|
\fBline_join\fR
|
||||||
@ -219,7 +219,17 @@ Audio output device\&. Integer value\&. Number corresponds to
|
|||||||
.PP
|
.PP
|
||||||
\fBVAD_threshold\fR
|
\fBVAD_threshold\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Voice Activity Detection threshold\&. Float value\&. Recommended values are 1\&.0-40\&.0
|
Voice Activity Detection threshold\&. Float value\&. Recommended values are 1\&.0\-40\&.0
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\fBconference_audio_channels\fR
|
||||||
|
.RS 4
|
||||||
|
Number of channels for conference audio broadcast\&. Integer value\&. 1 (mono) or 2 (stereo)
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\fBchat_audio_channels\fR
|
||||||
|
.RS 4
|
||||||
|
Number of channels for 1\-on\-1 audio broadcast\&. Integer value\&. 1 (mono) or 2 (stereo)
|
||||||
.RE
|
.RE
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
@ -139,6 +139,12 @@ OPTIONS
|
|||||||
Voice Activity Detection threshold. Float value. Recommended values are
|
Voice Activity Detection threshold. Float value. Recommended values are
|
||||||
1.0-40.0
|
1.0-40.0
|
||||||
|
|
||||||
|
*conference_audio_channels*;;
|
||||||
|
Number of channels for conference audio broadcast. Integer value. 1 (mono) or 2 (stereo)
|
||||||
|
|
||||||
|
*chat_audio_channels*;;
|
||||||
|
Number of channels for 1-on-1 audio broadcast. Integer value. 1 (mono) or 2 (stereo)
|
||||||
|
|
||||||
*tox*::
|
*tox*::
|
||||||
Configuration related to paths.
|
Configuration related to paths.
|
||||||
|
|
||||||
|
@ -84,6 +84,12 @@ audio = {
|
|||||||
|
|
||||||
// default VAD threshold; float (recommended values are 1.0-40.0)
|
// default VAD threshold; float (recommended values are 1.0-40.0)
|
||||||
VAD_threshold=5.0;
|
VAD_threshold=5.0;
|
||||||
|
|
||||||
|
// Number of channels to use for conference audio broadcasts; 1 for mono, 2 for stereo.
|
||||||
|
conference_audio_channels=1;
|
||||||
|
|
||||||
|
// Number of channels to use for 1-on-1 audio broadcasts; 1 for mono, 2 for stereo.
|
||||||
|
chat_audio_channels=2;
|
||||||
};
|
};
|
||||||
|
|
||||||
tox = {
|
tox = {
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "line_info.h"
|
#include "line_info.h"
|
||||||
#include "misc_tools.h"
|
#include "misc_tools.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
#include "settings.h"
|
||||||
#include "toxic.h"
|
#include "toxic.h"
|
||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
|
|
||||||
@ -64,6 +65,7 @@ extern ToxWindow *windows[MAX_WINDOWS_NUM];
|
|||||||
|
|
||||||
struct CallControl CallControl;
|
struct CallControl CallControl;
|
||||||
|
|
||||||
|
extern struct user_settings *user_settings;
|
||||||
extern struct Winthread Winthread;
|
extern struct Winthread Winthread;
|
||||||
|
|
||||||
void on_call(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled,
|
void on_call(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled,
|
||||||
@ -103,7 +105,7 @@ ToxAV *init_audio(ToxWindow *self, Tox *tox)
|
|||||||
CallControl.default_audio_bit_rate = 64;
|
CallControl.default_audio_bit_rate = 64;
|
||||||
CallControl.audio_sample_rate = 48000;
|
CallControl.audio_sample_rate = 48000;
|
||||||
CallControl.audio_frame_duration = 20;
|
CallControl.audio_frame_duration = 20;
|
||||||
CallControl.audio_channels = 1;
|
CallControl.audio_channels = user_settings->chat_audio_channels;
|
||||||
|
|
||||||
CallControl.video_enabled = false;
|
CallControl.video_enabled = false;
|
||||||
CallControl.default_video_bit_rate = 0;
|
CallControl.default_video_bit_rate = 0;
|
||||||
|
@ -1159,7 +1159,6 @@ static ToxWindow *new_conference_chat(uint32_t conferencenum)
|
|||||||
|
|
||||||
#define CONFAV_SAMPLE_RATE 48000
|
#define CONFAV_SAMPLE_RATE 48000
|
||||||
#define CONFAV_FRAME_DURATION 20
|
#define CONFAV_FRAME_DURATION 20
|
||||||
#define CONFAV_AUDIO_CHANNELS 2
|
|
||||||
#define CONFAV_SAMPLES_PER_FRAME (CONFAV_SAMPLE_RATE * CONFAV_FRAME_DURATION / 1000)
|
#define CONFAV_SAMPLES_PER_FRAME (CONFAV_SAMPLE_RATE * CONFAV_FRAME_DURATION / 1000)
|
||||||
|
|
||||||
void audio_conference_callback(void *tox, uint32_t conferencenum, uint32_t peernum, const int16_t *pcm,
|
void audio_conference_callback(void *tox, uint32_t conferencenum, uint32_t peernum, const int16_t *pcm,
|
||||||
@ -1198,10 +1197,12 @@ static void conference_read_device_callback(const int16_t *captured, uint32_t si
|
|||||||
|
|
||||||
conferences[audio_input_callback_data->conferencenum].last_sent_audio = get_unix_time();
|
conferences[audio_input_callback_data->conferencenum].last_sent_audio = get_unix_time();
|
||||||
|
|
||||||
|
int channels = user_settings->conference_audio_channels;
|
||||||
|
|
||||||
toxav_group_send_audio(audio_input_callback_data->tox,
|
toxav_group_send_audio(audio_input_callback_data->tox,
|
||||||
audio_input_callback_data->conferencenum,
|
audio_input_callback_data->conferencenum,
|
||||||
captured, CONFAV_SAMPLES_PER_FRAME,
|
captured, CONFAV_SAMPLES_PER_FRAME,
|
||||||
CONFAV_AUDIO_CHANNELS, CONFAV_SAMPLE_RATE);
|
channels, CONFAV_SAMPLE_RATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool init_conference_audio_input(Tox *tox, uint32_t conferencenum)
|
bool init_conference_audio_input(Tox *tox, uint32_t conferencenum)
|
||||||
@ -1215,9 +1216,11 @@ bool init_conference_audio_input(Tox *tox, uint32_t conferencenum)
|
|||||||
const AudioInputCallbackData audio_input_callback_data = { tox, conferencenum };
|
const AudioInputCallbackData audio_input_callback_data = { tox, conferencenum };
|
||||||
chat->audio_input_callback_data = audio_input_callback_data;
|
chat->audio_input_callback_data = audio_input_callback_data;
|
||||||
|
|
||||||
|
int channels = user_settings->conference_audio_channels;
|
||||||
|
|
||||||
bool success = (open_input_device(&chat->audio_in_idx,
|
bool success = (open_input_device(&chat->audio_in_idx,
|
||||||
conference_read_device_callback, &chat->audio_input_callback_data, true,
|
conference_read_device_callback, &chat->audio_input_callback_data, true,
|
||||||
CONFAV_SAMPLE_RATE, CONFAV_FRAME_DURATION, CONFAV_AUDIO_CHANNELS)
|
CONFAV_SAMPLE_RATE, CONFAV_FRAME_DURATION, channels)
|
||||||
== de_None);
|
== de_None);
|
||||||
|
|
||||||
chat->audio_enabled = success;
|
chat->audio_enabled = success;
|
||||||
|
@ -205,11 +205,15 @@ static const struct audio_strings {
|
|||||||
const char *input_device;
|
const char *input_device;
|
||||||
const char *output_device;
|
const char *output_device;
|
||||||
const char *VAD_threshold;
|
const char *VAD_threshold;
|
||||||
|
const char *conference_audio_channels;
|
||||||
|
const char *chat_audio_channels;
|
||||||
} audio_strings = {
|
} audio_strings = {
|
||||||
"audio",
|
"audio",
|
||||||
"input_device",
|
"input_device",
|
||||||
"output_device",
|
"output_device",
|
||||||
"VAD_threshold",
|
"VAD_threshold",
|
||||||
|
"conference_audio_channels",
|
||||||
|
"chat_audio_channels",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void audio_defaults(struct user_settings *settings)
|
static void audio_defaults(struct user_settings *settings)
|
||||||
@ -217,6 +221,8 @@ static void audio_defaults(struct user_settings *settings)
|
|||||||
settings->audio_in_dev = 0;
|
settings->audio_in_dev = 0;
|
||||||
settings->audio_out_dev = 0;
|
settings->audio_out_dev = 0;
|
||||||
settings->VAD_threshold = 5.0;
|
settings->VAD_threshold = 5.0;
|
||||||
|
settings->conference_audio_channels = 1;
|
||||||
|
settings->chat_audio_channels = 2;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -506,6 +512,13 @@ int settings_load(struct user_settings *s, const char *patharg)
|
|||||||
s->audio_out_dev = s->audio_out_dev < 0 || s->audio_out_dev > MAX_DEVICES ? 0 : s->audio_out_dev;
|
s->audio_out_dev = s->audio_out_dev < 0 || s->audio_out_dev > MAX_DEVICES ? 0 : s->audio_out_dev;
|
||||||
|
|
||||||
config_setting_lookup_float(setting, audio_strings.VAD_threshold, &s->VAD_threshold);
|
config_setting_lookup_float(setting, audio_strings.VAD_threshold, &s->VAD_threshold);
|
||||||
|
|
||||||
|
config_setting_lookup_int(setting, audio_strings.conference_audio_channels, &s->conference_audio_channels);
|
||||||
|
s->conference_audio_channels = s->conference_audio_channels <= 0
|
||||||
|
|| s->conference_audio_channels > 2 ? 1 : s->conference_audio_channels;
|
||||||
|
|
||||||
|
config_setting_lookup_int(setting, audio_strings.chat_audio_channels, &s->chat_audio_channels);
|
||||||
|
s->chat_audio_channels = s->chat_audio_channels <= 0 || s->chat_audio_channels > 2 ? 2 : s->chat_audio_channels;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -85,6 +85,8 @@ struct user_settings {
|
|||||||
int audio_in_dev;
|
int audio_in_dev;
|
||||||
int audio_out_dev;
|
int audio_out_dev;
|
||||||
double VAD_threshold;
|
double VAD_threshold;
|
||||||
|
int conference_audio_channels;
|
||||||
|
int chat_audio_channels;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user