Browse Source

feat(settings): Add audio quality setting

Fixes #4693
reviewable/pr4697/r1
tox-user 8 years ago
parent
commit
61eddc1f6b
  1. 6
      src/core/coreav.cpp
  2. 2
      src/core/coreav.h
  3. 40
      src/widget/form/settings/avform.cpp
  4. 2
      src/widget/form/settings/avform.h
  5. 22
      src/widget/form/settings/avform.ui

6
src/core/coreav.cpp

@ -48,7 +48,7 @@
* @brief Sent when a call was ended by the peer. * @brief Sent when a call was ended by the peer.
* @param friendId Id of friend in call list. * @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. * @brief In kb/s. More than enough for Opus.
* *
* @var CoreAV::VIDEO_DEFAULT_BITRATE * @var CoreAV::VIDEO_DEFAULT_BITRATE
@ -236,7 +236,7 @@ bool CoreAV::answerCall(uint32_t friendNum)
qDebug() << QString("answering call %1").arg(friendNum); qDebug() << QString("answering call %1").arg(friendNum);
assert(calls.contains(friendNum)); assert(calls.contains(friendNum));
TOXAV_ERR_ANSWER err; 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; calls[friendNum].inactive = false;
return true; return true;
} else { } else {
@ -271,7 +271,7 @@ bool CoreAV::startCall(uint32_t friendNum, bool video)
} }
uint32_t videoBitrate = video ? VIDEO_DEFAULT_BITRATE : 0; 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; return false;
auto call = calls.insert({friendNum, video, *this}); auto call = calls.insert({friendNum, video, *this});

2
src/core/coreav.h

@ -81,6 +81,7 @@ public:
uint8_t channels, unsigned sample_rate, void* core); uint8_t channels, unsigned sample_rate, void* core);
static void invalidateGroupCallPeerSource(int group, int peer); static void invalidateGroupCallPeerSource(int group, int peer);
uint32_t audioBitrate = 64;
public slots: public slots:
bool startCall(uint32_t friendNum, bool video = false); bool startCall(uint32_t friendNum, bool video = false);
bool answerCall(uint32_t friendNum); bool answerCall(uint32_t friendNum);
@ -111,7 +112,6 @@ private:
int32_t ystride, int32_t ustride, int32_t vstride, void* self); int32_t ystride, int32_t ustride, int32_t vstride, void* self);
private: private:
static constexpr uint32_t AUDIO_DEFAULT_BITRATE = 64;
static constexpr uint32_t VIDEO_DEFAULT_BITRATE = 6144; static constexpr uint32_t VIDEO_DEFAULT_BITRATE = 6144;
private: private:

40
src/widget/form/settings/avform.cpp

@ -121,6 +121,7 @@ void AVForm::showEvent(QShowEvent* event)
getAudioInDevices(); getAudioInDevices();
createVideoSurface(); createVideoSurface();
getVideoDevices(); getVideoDevices();
fillAudioQualityComboBox();
if (!subscribedToAudioIn) { if (!subscribedToAudioIn) {
// TODO: This should not be done in show/hide events // TODO: This should not be done in show/hide events
@ -333,6 +334,24 @@ void AVForm::fillScreenModesComboBox()
videoModescomboBox->blockSignals(previouslyBlocked); 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) void AVForm::updateVideoModes(int curIndex)
{ {
if (curIndex < 0 || curIndex >= videoDeviceList.size()) { if (curIndex < 0 || curIndex >= videoDeviceList.size()) {
@ -408,6 +427,27 @@ void AVForm::on_videoDevCombobox_currentIndexChanged(int index)
Core::getInstance()->getAv()->sendNoVideo(); 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() void AVForm::getVideoDevices()
{ {
QString settingsInDev = Settings::getInstance().getVideoDev(); QString settingsInDev = Settings::getInstance().getVideoDev();

2
src/widget/form/settings/avform.h

@ -52,6 +52,7 @@ private:
void selectBestModes(QVector<VideoMode>& allVideoModes); void selectBestModes(QVector<VideoMode>& allVideoModes);
void fillCameraModesComboBox(); void fillCameraModesComboBox();
void fillScreenModesComboBox(); void fillScreenModesComboBox();
void fillAudioQualityComboBox();
int searchPreferredIndex(); int searchPreferredIndex();
void createVideoSurface(); void createVideoSurface();
@ -66,6 +67,7 @@ private slots:
void on_playbackSlider_valueChanged(int value); void on_playbackSlider_valueChanged(int value);
void on_cbEnableTestSound_stateChanged(); void on_cbEnableTestSound_stateChanged();
void on_microphoneSlider_valueChanged(int value); void on_microphoneSlider_valueChanged(int value);
void on_audioQualityComboBox_currentIndexChanged(int index);
// camera // camera
void on_videoDevCombobox_currentIndexChanged(int index); void on_videoDevCombobox_currentIndexChanged(int index);

22
src/widget/form/settings/avform.ui

@ -108,7 +108,27 @@
</property> </property>
</widget> </widget>
</item> </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"> <widget class="QCheckBox" name="cbEnableBackend2">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>

Loading…
Cancel
Save