Skip to content
This repository has been archived by the owner on Feb 12, 2023. It is now read-only.

Commit

Permalink
feat(settings): Add audio quality setting
Browse files Browse the repository at this point in the history
Fixes #4693
  • Loading branch information
tox-user committed Sep 28, 2017
1 parent ce0c102 commit 61eddc1
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 5 deletions.
6 changes: 3 additions & 3 deletions src/core/coreav.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
* @brief Sent when a call was ended by the peer.
* @param friendId Id of friend in call list.
*
* @var CoreAV::AUDIO_DEFAULT_BITRATE
* @var CoreAV::audioBitrate
* @brief In kb/s. More than enough for Opus.
*
* @var CoreAV::VIDEO_DEFAULT_BITRATE
Expand Down Expand Up @@ -236,7 +236,7 @@ bool CoreAV::answerCall(uint32_t friendNum)
qDebug() << QString("answering call %1").arg(friendNum);
assert(calls.contains(friendNum));
TOXAV_ERR_ANSWER err;
if (toxav_answer(toxav, friendNum, AUDIO_DEFAULT_BITRATE, VIDEO_DEFAULT_BITRATE, &err)) {
if (toxav_answer(toxav, friendNum, audioBitrate, VIDEO_DEFAULT_BITRATE, &err)) {
calls[friendNum].inactive = false;
return true;
} else {
Expand Down Expand Up @@ -271,7 +271,7 @@ bool CoreAV::startCall(uint32_t friendNum, bool video)
}

uint32_t videoBitrate = video ? VIDEO_DEFAULT_BITRATE : 0;
if (!toxav_call(toxav, friendNum, AUDIO_DEFAULT_BITRATE, videoBitrate, nullptr))
if (!toxav_call(toxav, friendNum, audioBitrate, videoBitrate, nullptr))
return false;

auto call = calls.insert({friendNum, video, *this});
Expand Down
2 changes: 1 addition & 1 deletion src/core/coreav.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ class CoreAV : public QObject
uint8_t channels, unsigned sample_rate, void* core);
static void invalidateGroupCallPeerSource(int group, int peer);

uint32_t audioBitrate = 64;
public slots:
bool startCall(uint32_t friendNum, bool video = false);
bool answerCall(uint32_t friendNum);
Expand Down Expand Up @@ -111,7 +112,6 @@ private slots:
int32_t ystride, int32_t ustride, int32_t vstride, void* self);

private:
static constexpr uint32_t AUDIO_DEFAULT_BITRATE = 64;
static constexpr uint32_t VIDEO_DEFAULT_BITRATE = 6144;

private:
Expand Down
40 changes: 40 additions & 0 deletions src/widget/form/settings/avform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ void AVForm::showEvent(QShowEvent* event)
getAudioInDevices();
createVideoSurface();
getVideoDevices();
fillAudioQualityComboBox();

if (!subscribedToAudioIn) {
// TODO: This should not be done in show/hide events
Expand Down Expand Up @@ -333,6 +334,24 @@ void AVForm::fillScreenModesComboBox()
videoModescomboBox->blockSignals(previouslyBlocked);
}

void AVForm::fillAudioQualityComboBox()
{
bool previouslyBlocked = audioQualityComboBox->blockSignals(true);
audioQualityComboBox->clear();

QString name;
name = tr("High (64 kbps)");
audioQualityComboBox->addItem(name);
name = tr("Medium (32 kbps)");
audioQualityComboBox->addItem(name);
name = tr("Low (16 kbps)");
audioQualityComboBox->addItem(name);
name = tr("Very Low (8 kbps)");
audioQualityComboBox->addItem(name);

audioQualityComboBox->blockSignals(previouslyBlocked);
}

void AVForm::updateVideoModes(int curIndex)
{
if (curIndex < 0 || curIndex >= videoDeviceList.size()) {
Expand Down Expand Up @@ -408,6 +427,27 @@ void AVForm::on_videoDevCombobox_currentIndexChanged(int index)
Core::getInstance()->getAv()->sendNoVideo();
}

void AVForm::on_audioQualityComboBox_currentIndexChanged(int index)
{
uint32_t bitrate;
switch (index) {
case 1:
bitrate = 32;
break;
case 2:
bitrate = 16;
break;
case 3:
bitrate = 8;
break;
default:
bitrate = 64;
break;
}

Core::getInstance()->getAv()->audioBitrate = bitrate;
}

void AVForm::getVideoDevices()
{
QString settingsInDev = Settings::getInstance().getVideoDev();
Expand Down
2 changes: 2 additions & 0 deletions src/widget/form/settings/avform.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class AVForm : public GenericForm, private Ui::AVForm
void selectBestModes(QVector<VideoMode>& allVideoModes);
void fillCameraModesComboBox();
void fillScreenModesComboBox();
void fillAudioQualityComboBox();
int searchPreferredIndex();

void createVideoSurface();
Expand All @@ -66,6 +67,7 @@ private slots:
void on_playbackSlider_valueChanged(int value);
void on_cbEnableTestSound_stateChanged();
void on_microphoneSlider_valueChanged(int value);
void on_audioQualityComboBox_currentIndexChanged(int index);

// camera
void on_videoDevCombobox_currentIndexChanged(int index);
Expand Down
22 changes: 21 additions & 1 deletion src/widget/form/settings/avform.ui
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,27 @@
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<item row="4" column="0">
<widget class="QLabel" name="audioQualityLabel">
<property name="text">
<string>Audio Quality</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2">
<widget class="QComboBox" name="audioQualityComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Transmitted audio quality. Lower this setting if your bandwidth is not high enough or if you want to lower the internet usage.</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="3">
<widget class="QCheckBox" name="cbEnableBackend2">
<property name="enabled">
<bool>true</bool>
Expand Down

0 comments on commit 61eddc1

Please sign in to comment.