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