Skip to content

Commit 9509277

Browse files
bengris32Mashopy
authored andcommitted
Aperture: Enable MediaTek HFPS Mode for 60 FPS video recording
MediaTek devices need to pass this parameter in order to actually record 60 FPS videos. Tested on Xiaomi 12T, POCO X4 GT and OnePlus Nord 3 5G. Change-Id: I1e027dcacc48f139c067e4e3ae1d5750d29e65a5
1 parent 58d57e0 commit 9509277

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

app/src/main/java/org/lineageos/aperture/ext/CaptureRequestOptionsBuilder.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ import org.lineageos.aperture.models.NoiseReductionMode
1919
import org.lineageos.aperture.models.ShadingMode
2020
import org.lineageos.aperture.models.VideoStabilizationMode
2121

22+
private val FPS60_MTK_KEY_SESSION_PARAMETER = CaptureRequest.Key<Int>(
23+
"com.mediatek.streamingfeature.hfpsMode", Int::class.java
24+
)
25+
2226
@androidx.camera.camera2.interop.ExperimentalCamera2Interop
2327
fun <ValueT> CaptureRequestOptions.Builder.setOrClearCaptureRequestOption(
2428
key: CaptureRequest.Key<ValueT>,
@@ -30,11 +34,18 @@ fun <ValueT> CaptureRequestOptions.Builder.setOrClearCaptureRequestOption(
3034
@androidx.camera.camera2.interop.ExperimentalCamera2Interop
3135
fun CaptureRequestOptions.Builder.setFrameRate(
3236
frameRate: FrameRate?
33-
) = setOrClearCaptureRequestOption(
37+
) = apply {
38+
setOrClearCaptureRequestOption(
3439
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,
3540
frameRate?.range?.toRange(),
3641
)
3742

43+
// Enable MediaTek HFPS mode if needed
44+
if (frameRate == FrameRate.FPS_60) {
45+
setOrClearCaptureRequestOption(FPS60_MTK_KEY_SESSION_PARAMETER, 1)
46+
}
47+
}
48+
3849
@androidx.camera.camera2.interop.ExperimentalCamera2Interop
3950
fun CaptureRequestOptions.Builder.setVideoStabilizationMode(
4051
videoStabilizationMode: VideoStabilizationMode?

0 commit comments

Comments
 (0)