Skip to content

Commit

Permalink
Introduce media file tab for controlling playback
Browse files Browse the repository at this point in the history
Set C++17 for QtTeamTalk using Qt 5 to allow std::optional.
  • Loading branch information
bear101 committed Sep 28, 2024
1 parent 707ec4e commit 9bff74d
Show file tree
Hide file tree
Showing 14 changed files with 808 additions and 303 deletions.
7 changes: 4 additions & 3 deletions ChangeLog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@

Version 5.17.1, unreleased
Default Qt Client
- Media tab in main window for controlling media file streaming
- Support "{username}" variable for majority of TTS and status events related to user action
- Option to use TeamTalk Sound Output device for default sound event playback mode
- Option to choose bitween text or emoji for user and channel info in channel list
- Indication when user is sharing desktop in channel list
- Ability to restore all custom TTS and status bar events to default values
- All byte sizes converted to local format
- Option to use TeamTalk Sound Output device for default sound event playback mode
- Option to choose bitween text or emoji for user and channel info in channel list
- Fixed gender changed from female to male when migrating to 5.17 release
- Fixed sound events disabled when migrating to 5.17 release
- All size converted to local format
Android Client
-
iOS Client
Expand Down
7 changes: 4 additions & 3 deletions Client/qtTeamTalk/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ if (Qt5_FOUND OR Qt6_FOUND)
set (CMAKE_CXX_STANDARD 17)
set (CMAKE_OSX_DEPLOYMENT_TARGET 11.0) # Qt 6.5.0 requires
else()
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD 17)
endif()

set (CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down Expand Up @@ -90,7 +90,8 @@ if (Qt5_FOUND OR Qt6_FOUND)
serverlogeventsmodel.h textmessagecontainer.h
useraccountsmodel.h encryptionsetupdlg.h utiltt.h utilxml.h
utilos.h serverdlg.h moveusersdlg.h useraccountdlg.h soundeventsmodel.h
mytableview.h mytabwidget.h shortcutsmodel.h
mytableview.h mytabwidget.h shortcutsmodel.h utilmedia.h

main.cpp mainwindow.cpp preferencesdlg.cpp uservideowidget.cpp
channelstree.cpp channeldlg.cpp userinfodlg.cpp
bannedusersdlg.cpp useraccountsdlg.cpp videogridwidget.cpp
Expand All @@ -110,7 +111,7 @@ if (Qt5_FOUND OR Qt6_FOUND)
serverlogeventsmodel.cpp textmessagecontainer.cpp
useraccountsmodel.cpp encryptionsetupdlg.cpp utiltt.cpp utilxml.cpp
utilos.cpp serverdlg.cpp moveusersdlg.cpp useraccountdlg.cpp soundeventsmodel.cpp
mytableview.cpp mytabwidget.cpp shortcutsmodel.cpp
mytableview.cpp mytabwidget.cpp shortcutsmodel.cpp utilmedia.cpp
mainwindow.ui channel.ui preferences.ui
serverlist.ui userinfo.ui bannedusers.ui useraccounts.ui
serverproperties.ui uservideo.ui keycomp.ui textmessage.ui
Expand Down
2 changes: 1 addition & 1 deletion Client/qtTeamTalk/audiopreprocessordlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ AudioPreprocessorDlg::AudioPreprocessorDlg(AudioPreprocessor preprocess, QWidget
ui.gainlevelSlider->setRange(SOUND_GAIN_MIN, SOUND_GAIN_MAX);

// SpeexDSP audio preprocessor
ui.gainlevelSpinBox->setRange(0, 0x7FFF);
ui.gainlevelSpinBox->setRange(SPEEXDSP_AGC_GAINLEVEL_MIN, SPEEXDSP_AGC_GAINLEVEL_MAX);
ui.maxdecSpinBox->setRange(-100, 0);
ui.maxdenoiseSpinBox->setRange(-100, 0);

Expand Down
35 changes: 35 additions & 0 deletions Client/qtTeamTalk/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,41 @@ AudioPreprocessor loadAudioPreprocessor(AudioPreprocessorType preprocessortype)
return preprocessor;
}

void saveAudioPreprocessor(const AudioPreprocessor& preprocessor)
{
ttSettings->setValue(SETTINGS_STREAMMEDIA_AUDIOPREPROCESSOR, preprocessor.nPreprocessor);
switch (preprocessor.nPreprocessor)
{
case NO_AUDIOPREPROCESSOR:
break;
case SPEEXDSP_AUDIOPREPROCESSOR:
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_AGC_ENABLE, preprocessor.speexdsp.bEnableAGC);
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_AGC_GAINLEVEL, preprocessor.speexdsp.nGainLevel);
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_AGC_INC_MAXDB, preprocessor.speexdsp.nMaxIncDBSec);
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_AGC_DEC_MAXDB, preprocessor.speexdsp.nMaxDecDBSec);
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_AGC_GAINMAXDB, preprocessor.speexdsp.nMaxGainDB);
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_DENOISE_ENABLE, preprocessor.speexdsp.bEnableDenoise);
ttSettings->setValue(SETTINGS_STREAMMEDIA_SPX_DENOISE_SUPPRESS, preprocessor.speexdsp.nMaxNoiseSuppressDB);
break;
case TEAMTALK_AUDIOPREPROCESSOR:
ttSettings->setValue(SETTINGS_STREAMMEDIA_TTAP_MUTELEFT, preprocessor.ttpreprocessor.bMuteLeftSpeaker);
ttSettings->setValue(SETTINGS_STREAMMEDIA_TTAP_MUTERIGHT, preprocessor.ttpreprocessor.bMuteRightSpeaker);
ttSettings->setValue(SETTINGS_STREAMMEDIA_TTAP_GAINLEVEL, preprocessor.ttpreprocessor.nGainLevel);
break;
case WEBRTC_AUDIOPREPROCESSOR :
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_GAINCTL_ENABLE, preprocessor.webrtc.gaincontroller2.bEnable);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_GAINDB, preprocessor.webrtc.gaincontroller2.fixeddigital.fGainDB);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_SAT_PROT_ENABLE, preprocessor.webrtc.gaincontroller2.adaptivedigital.bEnable );
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_INIT_SAT_MARGIN_DB, preprocessor.webrtc.gaincontroller2.adaptivedigital.fInitialSaturationMarginDB);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_EXTRA_SAT_MARGIN_DB, preprocessor.webrtc.gaincontroller2.adaptivedigital.fExtraSaturationMarginDB);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_MAXGAIN_DBSEC, preprocessor.webrtc.gaincontroller2.adaptivedigital.fMaxGainChangeDBPerSecond);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_MAX_OUT_NOISE, preprocessor.webrtc.gaincontroller2.adaptivedigital.fMaxOutputNoiseLevelDBFS);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_NOISESUPPRESS_ENABLE, preprocessor.webrtc.noisesuppression.bEnable);
ttSettings->setValue(SETTINGS_STREAMMEDIA_WEBRTC_NOISESUPPRESS_LEVEL, preprocessor.webrtc.noisesuppression.nLevel);
break;
}
}

bool isWebLogin(const QString& username, bool includeParentLoginName)
{
if (username.endsWith(WEBLOGIN_BEARWARE_USERNAMEPOSTFIX, Qt::CaseInsensitive))
Expand Down
1 change: 1 addition & 0 deletions Client/qtTeamTalk/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ bool hasDesktopAccess(const QVector<DesktopAccessEntry>& entries,
void deleteDesktopAccessEntries();

AudioPreprocessor loadAudioPreprocessor(AudioPreprocessorType preprocessortype);
void saveAudioPreprocessor(const AudioPreprocessor& preprocess);

bool isWebLogin(const QString& username, bool includeParentLoginName);
QString userCacheID(const User& user);
Expand Down
Loading

0 comments on commit 9bff74d

Please sign in to comment.