Skip to content

Commit 3e9716a

Browse files
Merge pull request #496 from feelfreelinux/feat/camera-refactor
Octo4a 2.1.0 - Camera service refactor
2 parents 3b2bcd2 + 87637d4 commit 3e9716a

17 files changed

+953
-391
lines changed

app/app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
applicationId = "com.octo4a"
1414
minSdk = 17
1515
targetSdk = 28
16-
versionName = "2.0.0"
17-
versionCode = 2000000
16+
versionName = "2.1.0"
17+
versionCode = 2001000
1818
multiDexEnabled = true
1919

2020
ndk {

app/app/src/main/java/com/octo4a/camera/CameraEnumerationRepository.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import com.octo4a.utils.isServiceRunning
1616

1717
data class CameraSize(val width: Int, val height: Int)
1818

19-
data class CameraDescription(val id: String, val megapixels: Int, val lensFacing: Int, val sizes: List<CameraSize>)
19+
data class CameraDescription(val id: String, val megapixels: Int, val lensFacing: Int, val sizes: List<CameraSize>, val frameRates: List<Int>)
2020

2121
fun CameraSize.readableString(): String {
2222
return "${width}x${height}"
@@ -67,9 +67,11 @@ class CameraEnumerationRepository(val context: Context) {
6767
val configs = characteristics.get(
6868
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP
6969
)
70+
val fpsRanges = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES)
71+
val frameRates = fpsRanges?.map { it.upper }?.distinct()?.sorted() ?: emptyList()
7072
val sizes = configs?.getOutputSizes(ImageFormat.YUV_420_888)
7173
?.map { size -> CameraSize(size.width, size.height) }
72-
CameraDescription(it, megapixels, facing, sizes ?: emptyList())
74+
CameraDescription(it, megapixels, facing, sizes ?: emptyList(), frameRates)
7375
}.toMutableList()
7476
} else {
7577
val needToRestartService = context.isServiceRunning(LegacyCameraService::class.java)
@@ -84,7 +86,7 @@ class CameraEnumerationRepository(val context: Context) {
8486
Camera.getCameraInfo(i, cameraInfo)
8587

8688
val cam = Camera.open(i)
87-
89+
val supportedFrameRates = cam.parameters.supportedPreviewFrameRates.sorted()
8890
val pictureSize = cam.parameters.pictureSize
8991
val megaPixels = (pictureSize.width * pictureSize.height) / 1000000
9092
cams.add(CameraDescription(
@@ -93,7 +95,8 @@ class CameraEnumerationRepository(val context: Context) {
9395
cameraInfo.facing,
9496
cam.parameters.supportedPreviewSizes.map {
9597
CameraSize(it.width, it.height)
96-
}
98+
},
99+
supportedFrameRates
97100
))
98101

99102
cam.release()

0 commit comments

Comments
 (0)