8000 Fix simulcast factory not sending back EncoderInfo (#891) · flutter-robert/flutter-webrtc@24a75ca · GitHub
[go: up one dir, main page]

Skip to content

Commit 24a75ca

Browse files
authored
Fix simulcast factory not sending back EncoderInfo (flutter-webrtc#891)
1 parent f18e901 commit 24a75ca

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/SimulcastVideoEncoderFactoryWrapper.kt

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package com.cloudwebrtc.webrtc
22

33
import android.util.Log
44
import org.webrtc.*
5-
import java.util.concurrent.*
5+
import java.util.concurrent.Callable
6+
import java.util.concurrent.ExecutorService
7+
import java.util.concurrent.Executors
68

79
/*
810
Copyright 2017, Lyo Kato <lyo.kato at gmail.com> (Original Author)
@@ -49,7 +51,7 @@ internal class SimulcastVideoEncoderFactoryWrapper(
4951
* This results in HardwareVideoEncoderFactory being both the primary and fallback,
5052
* but there aren't any specific problems in doing so.
5153
*/
52-
private class Fallback(private val hardwareVideoEncoderFactory: VideoEncoderFactory) :
54+
private class FallbackFactory(private val hardwareVideoEncoderFactory: VideoEncoderFactory) :
5355
VideoEncoderFactory {
5456

5557
private val softwareVideoEncoderFactory: VideoEncoderFactory = SoftwareVideoEncoderFactory()
@@ -93,6 +95,7 @@ internal class SimulcastVideoEncoderFactoryWrapper(
9395
val future = executor.submit(Callable {
9496
// LKLog.i {
9597
// """initEncode() thread=${Thread.currentThread().name} [${Thread.currentThread().id}]
98+
// | encoder=${encoder.implementationName}
9699
// | streamSettings:
97100
// | numberOfCores=${settings.numberOfCores}
98101
// | width=${settings.width}
@@ -165,6 +168,31 @@ internal class SimulcastVideoEncoderFactoryWrapper(
165168
val future = executor.submit(Callable { return@Callable encoder.implementationName })
166169
return future.get()
167170
}
171+
172+
override fun createNativeVideoEncoder(): Long {
173+
val future = executor.submit(Callable { return@Callable encoder.createNativeVideoEncoder() })
174+
return future.get()
175+
}
176+
177+
override fun isHardwareEncoder(): Boolean {
178+
val future = executor.submit(Callable { return@Callable encoder.isHardwareEncoder })
179+
return future.get()
180+
}
181+
182+
override fun setRates(rcParameters: VideoEncoder.RateControlParameters?): VideoCodecStatus {
183+
val future = executor.submit(Callable { return@Callable encoder.setRates(rcParameters) })
184+
return future.get()
185+
}
186+
187+
override fun getResolutionBitrateLimits(): Array<VideoEncoder.ResolutionBitrateLimits> {
188+
val future = executor.submit(Callable { return@Callable encoder.resolutionBitrateLimits })
189+
return future.get()
190+
}
191+
192+
override fun getEncoderInfo(): VideoEncoder.EncoderInfo {
193+
val future = executor.submit(Callable { return@Callable encoder.encoderInfo })
194+
return future.get()
195+
}
168196
}
169197

170198
private class StreamEncoderWrapperFactory(private val factory: VideoEncoderFactory) :
@@ -195,7 +223,7 @@ internal class SimulcastVideoEncoderFactoryWrapper(
195223
sharedContext, enableIntelVp8Encoder, enableH264HighProfile
196224
)
197225
primary = StreamEncoderWrapperFactory(hardwareVideoEncoderFactory)
198-
fallback = StreamEncoderWrapperFactory(Fallback(primary))
226+
fallback = StreamEncoderWrapperFactory(FallbackFactory(primary))
199227
native = SimulcastVideoEncoderFactory(primary, fallback)
200228
}
201229

0 commit comments

Comments
 (0)
0