1 /* 2 * Copyright 2025 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.camera.camera2.internal 18 19 import android.hardware.camera2.CameraCaptureSession 20 import android.hardware.camera2.CaptureFailure 21 import android.hardware.camera2.CaptureRequest 22 import android.hardware.camera2.CaptureResult 23 import android.hardware.camera2.TotalCaptureResult 24 import android.os.Build 25 import android.view.Surface 26 import androidx.annotation.RequiresApi 27 28 /** 29 * A `CaptureCallback` that forwards all callbacks to another `CaptureCallback` with a specific 30 * `CaptureRequest`. 31 */ 32 public class RequestForwardingCaptureCallback( 33 private val forwardedRequest: CaptureRequest, 34 private val delegate: CameraCaptureSession.CaptureCallback 35 ) : CameraCaptureSession.CaptureCallback() { 36 onCaptureStartednull37 override fun onCaptureStarted( 38 session: CameraCaptureSession, 39 request: CaptureRequest, 40 timestamp: Long, 41 frameNumber: Long 42 ) { 43 delegate.onCaptureStarted(session, forwardedRequest, timestamp, frameNumber) 44 } 45 46 @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) onReadoutStartednull47 override fun onReadoutStarted( 48 session: CameraCaptureSession, 49 request: CaptureRequest, 50 timestamp: Long, 51 frameNumber: Long 52 ) { 53 delegate.onReadoutStarted(session, forwardedRequest, timestamp, frameNumber) 54 } 55 onCaptureProgressednull56 override fun onCaptureProgressed( 57 session: CameraCaptureSession, 58 request: CaptureRequest, 59 partialResult: CaptureResult 60 ) { 61 delegate.onCaptureProgressed(session, forwardedRequest, partialResult) 62 } 63 onCaptureCompletednull64 override fun onCaptureCompleted( 65 session: CameraCaptureSession, 66 request: CaptureRequest, 67 result: TotalCaptureResult 68 ) { 69 delegate.onCaptureCompleted(session, forwardedRequest, result) 70 } 71 onCaptureFailednull72 override fun onCaptureFailed( 73 session: CameraCaptureSession, 74 request: CaptureRequest, 75 failure: CaptureFailure 76 ) { 77 delegate.onCaptureFailed(session, forwardedRequest, failure) 78 } 79 onCaptureSequenceCompletednull80 override fun onCaptureSequenceCompleted( 81 session: CameraCaptureSession, 82 sequenceId: Int, 83 frameNumber: Long 84 ) { 85 delegate.onCaptureSequenceCompleted(session, sequenceId, frameNumber) 86 } 87 onCaptureSequenceAbortednull88 override fun onCaptureSequenceAborted(session: CameraCaptureSession, sequenceId: Int) { 89 delegate.onCaptureSequenceAborted(session, sequenceId) 90 } 91 92 @RequiresApi(Build.VERSION_CODES.N) onCaptureBufferLostnull93 override fun onCaptureBufferLost( 94 session: CameraCaptureSession, 95 request: CaptureRequest, 96 target: Surface, 97 frameNumber: Long 98 ) { 99 delegate.onCaptureBufferLost(session, forwardedRequest, target, frameNumber) 100 } 101 } 102