diff --git a/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt b/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt
index 63684bcde..e9843e227 100644
--- a/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt
+++ b/app/src/main/java/live/hms/app2/ui/meeting/MeetingViewModel.kt
@@ -215,6 +215,8 @@ class MeetingViewModel(
.audio(
HMSAudioTrackSettings.Builder()
.setUseHardwareAcousticEchoCanceler(settings.enableHardwareAEC)
+ .useStereoOutput(settings.stereoOutput)
+ .useStereoInput(settings.stereoInput)
.initialState(getAudioTrackState())
.build()
)
diff --git a/app/src/main/java/live/hms/app2/ui/settings/SettingsFragment.kt b/app/src/main/java/live/hms/app2/ui/settings/SettingsFragment.kt
index 8ee36b6a6..3098fa3dd 100644
--- a/app/src/main/java/live/hms/app2/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/live/hms/app2/ui/settings/SettingsFragment.kt
@@ -480,6 +480,18 @@ class SettingsFragment : Fragment() {
forceSoftwareDecoder
) { commitHelper.setForceSoftwareDecoder(it) }
+ initSwitch(
+ EnumSet.of(SettingsMode.HOME),
+ settings.stereoOutput,
+ stereoOutput
+ ) { commitHelper.setStereoOutput(it) }
+
+ initSwitch(
+ EnumSet.of(SettingsMode.HOME),
+ settings.stereoInput,
+ stereoInput
+ ) { commitHelper.setStereoInput(it) }
+
initSwitch(
EnumSet.of(SettingsMode.HOME),
diff --git a/app/src/main/java/live/hms/app2/ui/settings/SettingsStore.kt b/app/src/main/java/live/hms/app2/ui/settings/SettingsStore.kt
index c96113f48..08c9bafa5 100644
--- a/app/src/main/java/live/hms/app2/ui/settings/SettingsStore.kt
+++ b/app/src/main/java/live/hms/app2/ui/settings/SettingsStore.kt
@@ -50,6 +50,8 @@ class SettingsStore(context: Context) {
const val SHOW_STATS = "show-video-stats"
const val DISABLE_AUTO_RESIZE = "disable-auto-resize"
const val FORCE_SOFTWARE_DECODER = "force-software-decoder"
+ const val STEREO_OUTPUT = "stereo-output"
+ const val STEREO_INPUT = "stereo-input"
val APPLY_CONSTRAINTS_KEYS = arrayOf(
VIDEO_FRAME_RATE,
@@ -134,6 +136,14 @@ class SettingsStore(context: Context) {
get() = sharedPreferences.getBoolean(FORCE_SOFTWARE_DECODER, false)
set(value) = putBoolean(FORCE_SOFTWARE_DECODER, value)
+ var stereoInput: Boolean
+ get() = sharedPreferences.getBoolean(STEREO_INPUT, false)
+ set(value) = putBoolean(STEREO_INPUT, value)
+
+ var stereoOutput: Boolean
+ get() = sharedPreferences.getBoolean(STEREO_OUTPUT, false)
+ set(value) = putBoolean(STEREO_OUTPUT, value)
+
var publishVideo: Boolean
get() = sharedPreferences.getBoolean(PUBLISH_VIDEO, true)
set(value) = putBoolean(PUBLISH_VIDEO, value)
@@ -316,6 +326,8 @@ class SettingsStore(context: Context) {
fun setShowStats(value: Boolean) = apply { editor.putBoolean(SHOW_STATS, value) }
fun setDisableAutoResize(value: Boolean) = apply { editor.putBoolean(DISABLE_AUTO_RESIZE, value) }
fun setForceSoftwareDecoder(value: Boolean) = apply { editor.putBoolean(FORCE_SOFTWARE_DECODER, value) }
+ fun setStereoOutput(value: Boolean) = apply { editor.putBoolean(STEREO_OUTPUT, value) }
+ fun setStereoInput(value: Boolean) = apply { editor.putBoolean(STEREO_INPUT, value) }
fun commit() {
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index c004c762c..a91012e68 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -247,6 +247,22 @@
android:text="@string/force_software_decoder"
android:visibility="visible" />
+
+
+
+
Show stats
Disable Auto Resize
Force Software Decoder
+ Stereo Output
+ Stereo Input
✋ Raise Hand
PIP mode
Lower Hand