Fix poor calling audio on certain devices.

This commit is contained in:
Cody Henthorne
2024-01-17 12:38:05 -05:00
committed by Greyson Parrelli
parent c41795e7f0
commit 3e001ddf1b
2 changed files with 10 additions and 14 deletions

View File

@@ -11,21 +11,19 @@ import org.thoughtcrime.securesms.util.FeatureFlags
*/
object RingRtcDynamicConfiguration {
private val KNOWN_ISSUE_ROMS = "(lineage|calyxos)".toRegex(RegexOption.IGNORE_CASE)
@JvmStatic
fun getAudioProcessingMethod(): AudioProcessingMethod {
if (SignalStore.internalValues().callingAudioProcessingMethod() != AudioProcessingMethod.Default) {
return SignalStore.internalValues().callingAudioProcessingMethod()
}
val useAec3: Boolean = FeatureFlags.useAec3()
return when {
isHardwareBlocklisted() && useAec3 -> AudioProcessingMethod.ForceSoftwareAec3
isHardwareBlocklisted() -> AudioProcessingMethod.ForceSoftwareAecM
isHardwareBlocklisted() || isKnownFaultyHardwareImplementation() -> AudioProcessingMethod.ForceSoftwareAec3
isSoftwareBlocklisted() -> AudioProcessingMethod.ForceHardware
Build.VERSION.SDK_INT < 29 && FeatureFlags.useHardwareAecIfOlderThanApi29() -> AudioProcessingMethod.ForceHardware
Build.VERSION.SDK_INT < 29 && useAec3 -> AudioProcessingMethod.ForceSoftwareAec3
Build.VERSION.SDK_INT < 29 -> AudioProcessingMethod.ForceSoftwareAecM
Build.VERSION.SDK_INT < 29 -> AudioProcessingMethod.ForceSoftwareAec3
else -> AudioProcessingMethod.ForceHardware
}
}
@@ -39,6 +37,12 @@ object RingRtcDynamicConfiguration {
return FeatureFlags.hardwareAecBlocklistModels().asListContains(Build.MODEL)
}
fun isKnownFaultyHardwareImplementation(): Boolean {
return Build.PRODUCT.contains(KNOWN_ISSUE_ROMS) ||
Build.DISPLAY.contains(KNOWN_ISSUE_ROMS) ||
Build.HOST.contains(KNOWN_ISSUE_ROMS)
}
private fun isSoftwareBlocklisted(): Boolean {
return FeatureFlags.softwareAecBlocklistModels().asListContains(Build.MODEL)
}