Add a VectorFeatures to force usage of the library OpusEncoder
This commit is contained in:
parent
e3b3617b1a
commit
9a059ead44
|
@ -19,6 +19,7 @@ package im.vector.app.features.voice
|
|||
import android.os.Build
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import im.vector.app.AndroidVersionTestOverrider
|
||||
import im.vector.app.features.DefaultVectorFeatures
|
||||
import org.amshove.kluent.shouldBeInstanceOf
|
||||
import org.junit.After
|
||||
import org.junit.Test
|
||||
|
@ -26,7 +27,7 @@ import org.junit.Test
|
|||
class VoiceRecorderProviderTests {
|
||||
|
||||
private val context = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
private val provider = VoiceRecorderProvider(context)
|
||||
private val provider = VoiceRecorderProvider(context, DefaultVectorFeatures())
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
|
|
|
@ -70,6 +70,11 @@ class DebugFeaturesStateFactory @Inject constructor(
|
|||
key = DebugFeatureKeys.allowExternalUnifiedPushDistributors,
|
||||
factory = VectorFeatures::allowExternalUnifiedPushDistributors
|
||||
),
|
||||
createBooleanFeature(
|
||||
label = "Force usage of OpusEncoder library",
|
||||
key = DebugFeatureKeys.forceUsageOfOpusEncoder,
|
||||
factory = VectorFeatures::forceUsageOfOpusEncoder
|
||||
),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -66,6 +66,9 @@ class DebugVectorFeatures(
|
|||
override fun isScreenSharingEnabled(): Boolean = read(DebugFeatureKeys.screenSharing)
|
||||
?: vectorFeatures.isScreenSharingEnabled()
|
||||
|
||||
override fun forceUsageOfOpusEncoder(): Boolean = read(DebugFeatureKeys.forceUsageOfOpusEncoder)
|
||||
?: vectorFeatures.forceUsageOfOpusEncoder()
|
||||
|
||||
fun <T> override(value: T?, key: Preferences.Key<T>) = updatePreferences {
|
||||
if (value == null) {
|
||||
it.remove(key)
|
||||
|
@ -123,4 +126,5 @@ object DebugFeatureKeys {
|
|||
val allowExternalUnifiedPushDistributors = booleanPreferencesKey("allow-external-unified-push-distributors")
|
||||
val liveLocationSharing = booleanPreferencesKey("live-location-sharing")
|
||||
val screenSharing = booleanPreferencesKey("screen-sharing")
|
||||
val forceUsageOfOpusEncoder = booleanPreferencesKey("force-usage-of-opus-encoder")
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ interface VectorFeatures {
|
|||
fun isOnboardingCombinedLoginEnabled(): Boolean
|
||||
fun allowExternalUnifiedPushDistributors(): Boolean
|
||||
fun isScreenSharingEnabled(): Boolean
|
||||
fun forceUsageOfOpusEncoder(): Boolean
|
||||
|
||||
enum class OnboardingVariant {
|
||||
LEGACY,
|
||||
|
@ -48,4 +49,5 @@ class DefaultVectorFeatures : VectorFeatures {
|
|||
override fun isOnboardingCombinedLoginEnabled() = false
|
||||
override fun allowExternalUnifiedPushDistributors(): Boolean = Config.ALLOW_EXTERNAL_UNIFIED_PUSH_DISTRIBUTORS
|
||||
override fun isScreenSharingEnabled(): Boolean = true
|
||||
override fun forceUsageOfOpusEncoder(): Boolean = false
|
||||
}
|
||||
|
|
|
@ -18,14 +18,16 @@ package im.vector.app.features.voice
|
|||
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import im.vector.app.features.VectorFeatures
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import javax.inject.Inject
|
||||
|
||||
class VoiceRecorderProvider @Inject constructor(
|
||||
private val context: Context,
|
||||
private val vectorFeatures: VectorFeatures,
|
||||
) {
|
||||
fun provideVoiceRecorder(): VoiceRecorder {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && vectorFeatures.forceUsageOfOpusEncoder().not()) {
|
||||
VoiceRecorderQ(context)
|
||||
} else {
|
||||
VoiceRecorderL(context, Dispatchers.IO)
|
||||
|
|
Loading…
Reference in New Issue