Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
davidliu
2022-05-07 02:00:14 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2022-05-07 02:00:14 +0900
Commit
09f58a152e016d8173ea5b82d595a0d12ac48dc9
09f58a15
1 parent
0711b10f
Add more audio and video overrides (#82)
隐藏空白字符变更
内嵌
并排对比
正在显示
7 个修改的文件
包含
105 行增加
和
29 行删除
livekit-android-sdk/src/main/java/io/livekit/android/LiveKit.kt
livekit-android-sdk/src/main/java/io/livekit/android/LiveKitOverrides.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/LiveKitComponent.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/OverridesModule.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/RTCModule.kt
video-encode-decode-test/src/main/java/io/livekit/android/videoencodedecode/CallViewModel.kt
livekit-android-sdk/src/main/java/io/livekit/android/LiveKit.kt
查看文件 @
09f58a1
...
...
@@ -2,7 +2,6 @@ package io.livekit.android
import android.content.Context
import io.livekit.android.dagger.DaggerLiveKitComponent
import io.livekit.android.dagger.LiveKitOverrides
import io.livekit.android.dagger.create
import io.livekit.android.room.Room
import io.livekit.android.room.RoomListener
...
...
livekit-android-sdk/src/main/java/io/livekit/android/LiveKitOverrides.kt
0 → 100644
查看文件 @
09f58a1
package io.livekit.android
import okhttp3.OkHttpClient
import org.webrtc.VideoDecoderFactory
import org.webrtc.VideoEncoderFactory
import org.webrtc.audio.AudioDeviceModule
import org.webrtc.audio.JavaAudioDeviceModule
/**
* Overrides to replace LiveKit internally used component with custom implementations.
*/
data class LiveKitOverrides(
/**
* Override the [OkHttpClient] used by the library.
*/
val okHttpClient: OkHttpClient? = null,
/**
* Override the default [AudioDeviceModule].
*/
val audioDeviceModule: AudioDeviceModule? = null,
/**
* Called after default setup to allow for customizations on the [JavaAudioDeviceModule].
*
* Not used if [audioDeviceModule] is provided.
*/
val javaAudioDeviceModuleCustomizer: ((builder: JavaAudioDeviceModule.Builder) -> Unit)? = null,
/**
* Override the [VideoEncoderFactory] used by the library.
*/
val videoEncoderFactory: VideoEncoderFactory? = null,
/**
* Override the [VideoDecoderFactory] used by the library.
*/
val videoDecoderFactory: VideoDecoderFactory? = null,
)
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
查看文件 @
09f58a1
...
...
@@ -26,5 +26,8 @@ object InjectionNames {
// Overrides
internal const val OVERRIDE_OKHTTP = "override_okhttp"
internal const val OVERRIDE_AUDIO_DEVICE_MODULE = "override_audio_device_module"
internal const val OVERRIDE_JAVA_AUDIO_DEVICE_MODULE_CUSTOMIZER = "override_java_audio_device_module_customizer"
internal const val OVERRIDE_VIDEO_ENCODER_FACTORY = "override_video_encoder_factory"
internal const val OVERRIDE_VIDEO_DECODER_FACTORY = "override_video_decoder_factory"
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/LiveKitComponent.kt
查看文件 @
09f58a1
package io.livekit.android.dagger
import android.content.Context
import androidx.annotation.Nullable
import dagger.BindsInstance
import dagger.Component
import io.livekit.android.LiveKitOverrides
import io.livekit.android.room.Room
import okhttp3.OkHttpClient
import org.webrtc.EglBase
import org.webrtc.PeerConnectionFactory
import org.webrtc.VideoEncoderFactory
import javax.inject.Named
import javax.inject.Singleton
@Singleton
...
...
@@ -19,6 +16,7 @@ import javax.inject.Singleton
RTCModule::class,
WebModule::class,
JsonFormatModule::class,
OverridesModule::class,
]
)
internal interface LiveKitComponent {
...
...
@@ -33,16 +31,7 @@ internal interface LiveKitComponent {
interface Factory {
fun create(
@BindsInstance appContext: Context,
@BindsInstance
@Named(InjectionNames.OVERRIDE_OKHTTP)
@Nullable
okHttpClientOverride: OkHttpClient?,
@BindsInstance
@Named(InjectionNames.OVERRIDE_VIDEO_ENCODER_FACTORY)
@Nullable
videoEncoderFactory: VideoEncoderFactory?,
overridesModule: OverridesModule
): LiveKitComponent
}
}
...
...
@@ -53,15 +42,7 @@ internal fun LiveKitComponent.Factory.create(
): LiveKitComponent {
return create(
appContext = context,
okHttpClientOverride = overrides.okHttpClient,
videoEncoderFactory = overrides.videoEncoderFactory,
overridesModule = OverridesModule(overrides)
)
}
/**
* Overrides to replace LiveKit internally used component with custom implementations.
*/
data class LiveKitOverrides(
val okHttpClient: OkHttpClient? = null,
val videoEncoderFactory: VideoEncoderFactory? = null,
)
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/OverridesModule.kt
0 → 100644
查看文件 @
09f58a1
package io.livekit.android.dagger
import androidx.annotation.Nullable
import dagger.Module
import dagger.Provides
import io.livekit.android.LiveKitOverrides
import javax.inject.Named
@Module
class OverridesModule(private val overrides: LiveKitOverrides) {
@Provides
@Named(InjectionNames.OVERRIDE_OKHTTP)
@Nullable
fun okHttpClient() = overrides.okHttpClient
@Provides
@Named(InjectionNames.OVERRIDE_AUDIO_DEVICE_MODULE)
@Nullable
fun audioDeviceModule() = overrides.audioDeviceModule
@Provides
@Named(InjectionNames.OVERRIDE_JAVA_AUDIO_DEVICE_MODULE_CUSTOMIZER)
@Nullable
fun javaAudioDeviceModuleCustomizer() = overrides.javaAudioDeviceModuleCustomizer
@Provides
@Named(InjectionNames.OVERRIDE_VIDEO_ENCODER_FACTORY)
@Nullable
fun videoEncoderFactory() = overrides.videoEncoderFactory
@Provides
@Named(InjectionNames.OVERRIDE_VIDEO_DECODER_FACTORY)
@Nullable
fun videoDecoderFactory() = overrides.videoDecoderFactory
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/RTCModule.kt
查看文件 @
09f58a1
...
...
@@ -20,7 +20,19 @@ import javax.inject.Singleton
object RTCModule {
@Provides
@Singleton
fun audioModule(appContext: Context): AudioDeviceModule {
@JvmSuppressWildcards
fun audioModule(
@Named(InjectionNames.OVERRIDE_AUDIO_DEVICE_MODULE)
@Nullable
audioDeviceModuleOverride: AudioDeviceModule?,
@Named(InjectionNames.OVERRIDE_JAVA_AUDIO_DEVICE_MODULE_CUSTOMIZER)
@Nullable
moduleCustomizer: ((builder: JavaAudioDeviceModule.Builder) -> Unit)?,
appContext: Context
): AudioDeviceModule {
if (audioDeviceModuleOverride != null) {
return audioDeviceModuleOverride
}
// Set audio record error callbacks.
val audioRecordErrorCallback = object : JavaAudioDeviceModule.AudioRecordErrorCallback {
...
...
@@ -80,14 +92,16 @@ object RTCModule {
}
}
return
JavaAudioDeviceModule.builder(appContext)
val builder =
JavaAudioDeviceModule.builder(appContext)
.setUseHardwareAcousticEchoCanceler(true)
.setUseHardwareNoiseSuppressor(true)
.setAudioRecordErrorCallback(audioRecordErrorCallback)
.setAudioTrackErrorCallback(audioTrackErrorCallback)
.setAudioRecordStateCallback(audioRecordStateCallback)
.setAudioTrackStateCallback(audioTrackStateCallback)
.createAudioDeviceModule()
moduleCustomizer?.invoke(builder)
return builder.createAudioDeviceModule()
}
@Provides
...
...
@@ -124,8 +138,11 @@ object RTCModule {
@Named(InjectionNames.OPTIONS_VIDEO_HW_ACCEL)
videoHwAccel: Boolean,
eglContext: EglBase.Context,
@Named(InjectionNames.OVERRIDE_VIDEO_DECODER_FACTORY)
@Nullable
videoDecoderFactoryOverride: VideoDecoderFactory?
): VideoDecoderFactory {
return if (videoHwAccel) {
return
videoDecoderFactoryOverride ?:
if (videoHwAccel) {
DefaultVideoDecoderFactory(eglContext)
} else {
SoftwareVideoDecoderFactory()
...
...
video-encode-decode-test/src/main/java/io/livekit/android/videoencodedecode/CallViewModel.kt
查看文件 @
09f58a1
...
...
@@ -8,7 +8,7 @@ import androidx.lifecycle.viewModelScope
import com.github.ajalt.timberkt.Timber
import io.livekit.android.LiveKit
import io.livekit.android.RoomOptions
import io.livekit.android.
dagger.
LiveKitOverrides
import io.livekit.android.LiveKitOverrides
import io.livekit.android.room.Room
import io.livekit.android.room.participant.Participant
import io.livekit.android.room.participant.VideoTrackPublishDefaults
...
...
请
注册
或
登录
后发表评论