Fix poor calling audio on certain devices.
This commit is contained in:
parent
c41795e7f0
commit
3e001ddf1b
2 changed files with 10 additions and 14 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -82,7 +82,6 @@ public final class FeatureFlags {
|
|||
private static final String HARDWARE_AEC_BLOCKLIST_MODELS = "android.calling.hardwareAecBlockList";
|
||||
private static final String SOFTWARE_AEC_BLOCKLIST_MODELS = "android.calling.softwareAecBlockList";
|
||||
private static final String USE_HARDWARE_AEC_IF_OLD = "android.calling.useHardwareAecIfOlderThanApi29";
|
||||
private static final String USE_AEC3 = "android.calling.useAec3";
|
||||
private static final String PAYMENTS_COUNTRY_BLOCKLIST = "global.payments.disabledRegions";
|
||||
public static final String PHONE_NUMBER_PRIVACY = "android.pnp";
|
||||
public static final String BLOCK_SSE = "android.blockSessionSwitchoverEvents";
|
||||
|
@ -154,7 +153,6 @@ public final class FeatureFlags {
|
|||
HARDWARE_AEC_BLOCKLIST_MODELS,
|
||||
SOFTWARE_AEC_BLOCKLIST_MODELS,
|
||||
USE_HARDWARE_AEC_IF_OLD,
|
||||
USE_AEC3,
|
||||
PAYMENTS_COUNTRY_BLOCKLIST,
|
||||
STORIES_AUTO_DOWNLOAD_MAXIMUM,
|
||||
TELECOM_MANUFACTURER_ALLOWLIST,
|
||||
|
@ -240,7 +238,6 @@ public final class FeatureFlags {
|
|||
HARDWARE_AEC_BLOCKLIST_MODELS,
|
||||
SOFTWARE_AEC_BLOCKLIST_MODELS,
|
||||
USE_HARDWARE_AEC_IF_OLD,
|
||||
USE_AEC3,
|
||||
PAYMENTS_COUNTRY_BLOCKLIST,
|
||||
TELECOM_MANUFACTURER_ALLOWLIST,
|
||||
TELECOM_MODEL_BLOCKLIST,
|
||||
|
@ -517,11 +514,6 @@ public final class FeatureFlags {
|
|||
return getBoolean(USE_HARDWARE_AEC_IF_OLD, false);
|
||||
}
|
||||
|
||||
/** Whether or not {@link org.signal.ringrtc.CallManager.AudioProcessingMethod#ForceSoftwareAec3} can be used */
|
||||
public static boolean useAec3() {
|
||||
return getBoolean(USE_AEC3, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prefetch count for stories from a given user.
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue