Skip to content

Commit 4d19c00

Browse files
committed
refactor(core): camera: pass the camera characteristics to the camera controller
1 parent d6a8f7c commit 4d19c00

File tree

3 files changed

+12
-19
lines changed

3 files changed

+12
-19
lines changed

core/src/main/java/io/github/thibaultbee/streampack/core/elements/sources/video/camera/CameraSource.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,18 @@ internal class CameraSource(
5757
) : ICameraSourceInternal, ICameraSource, AbstractPreviewableSource() {
5858
private val coroutineScope = CoroutineScope(dispatcherProvider.default)
5959

60+
private val characteristics = manager.getCameraCharacteristics(cameraId)
61+
6062
private val controller = CameraController(
61-
manager, dispatcherProvider, cameraId,
63+
manager,
64+
characteristics,
65+
dispatcherProvider,
66+
cameraId,
6267
captureRequestBuilder = {
6368
defaultCaptureRequest(this)
6469
}
6570
)
6671

67-
private val characteristics = manager.getCameraCharacteristics(cameraId)
68-
6972
override val settings by lazy {
7073
CameraSettings(
7174
coroutineScope,

core/src/main/java/io/github/thibaultbee/streampack/core/elements/sources/video/camera/controllers/CameraController.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package io.github.thibaultbee.streampack.core.elements.sources.video.camera.cont
1717

1818
import android.Manifest
1919
import android.hardware.camera2.CameraCaptureSession
20+
import android.hardware.camera2.CameraCharacteristics
2021
import android.hardware.camera2.CameraManager
2122
import android.hardware.camera2.CaptureFailure
2223
import android.hardware.camera2.CaptureRequest
@@ -43,6 +44,7 @@ import kotlinx.coroutines.sync.withLock
4344
*/
4445
internal class CameraController(
4546
private val manager: CameraManager,
47+
private val characteristics: CameraCharacteristics,
4648
dispatcherProvider: CameraDispatcherProvider,
4749
val cameraId: String,
4850
val captureRequestBuilder: CaptureRequestWithTargetsBuilder.() -> Unit = {}
@@ -64,7 +66,7 @@ internal class CameraController(
6466
val isActiveFlow = _isActiveFlow.asStateFlow()
6567

6668
private val fpsRange: Range<Int>
67-
get() = CameraUtils.getClosestFpsRange(manager, cameraId, fps)
69+
get() = CameraUtils.getClosestFpsRange(characteristics, fps)
6870
private var fps: Int = 30
6971
private var dynamicRangeProfile: DynamicRangeProfile = DynamicRangeProfile.sdr
7072

@@ -308,18 +310,6 @@ internal class CameraController(
308310
}
309311
}
310312

311-
/**
312-
* A default capture callback that logs the failure reason.
313-
*/
314-
private val captureCallback = object : CameraCaptureSession.CaptureCallback() {
315-
override fun onCaptureFailed(
316-
session: CameraCaptureSession, request: CaptureRequest, failure: CaptureFailure
317-
) {
318-
super.onCaptureFailed(session, request, failure)
319-
Logger.e(TAG, "Capture failed with code ${failure.reason}")
320-
}
321-
}
322-
323313
/**
324314
* Gets a setting from the current capture request.
325315
*/

core/src/main/java/io/github/thibaultbee/streampack/core/elements/sources/video/camera/utils/CameraUtils.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package io.github.thibaultbee.streampack.core.elements.sources.video.camera.util
1717

1818
import android.Manifest
1919
import android.hardware.camera2.CameraCaptureSession
20+
import android.hardware.camera2.CameraCharacteristics
2021
import android.hardware.camera2.CameraDevice
2122
import android.hardware.camera2.CameraManager
2223
import android.hardware.camera2.params.OutputConfiguration
@@ -152,11 +153,10 @@ internal object CameraUtils {
152153
}
153154

154155
internal fun getClosestFpsRange(
155-
cameraManager: CameraManager,
156-
cameraId: String,
156+
characteristics: CameraCharacteristics,
157157
fps: Int
158158
): Range<Int> {
159-
var fpsRangeList = cameraManager.getCameraCharacteristics(cameraId).targetFps
159+
var fpsRangeList = characteristics.targetFps
160160
Logger.i(TAG, "Supported FPS range list: $fpsRangeList")
161161

162162
// Get range that contains FPS

0 commit comments

Comments
 (0)