1 /*
2  * Copyright (C) 2020 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 package android.hardware.camera2.params;
17 
18 import android.annotation.NonNull;
19 
20 import android.hardware.camera2.CameraExtensionCharacteristics.Extension;
21 import android.hardware.camera2.CameraExtensionSession;
22 
23 import java.util.List;
24 import java.util.concurrent.Executor;
25 
26 /**
27  * A class that aggregates all supported arguments for
28  * {@link CameraExtensionSession} initialization.
29  */
30 public final class ExtensionSessionConfiguration {
31     private static final String TAG = "ExtensionSessionConfiguration";
32 
33     private int mExtensionType;
34     private List<OutputConfiguration> mOutputs;
35     private Executor mExecutor = null;
36     private CameraExtensionSession.StateCallback mCallback = null;
37 
38     /**
39      * Create a new ExtensionSessionConfiguration
40      *
41      * @param extension to be used for processing
42      * @param outputs   a list of output configurations for the capture session
43      * @param executor  the executor which will be used for invoking the callbacks
44      * @param listener  callbacks to be invoked when the state of the
45      *                  CameraExtensionSession changes
46      */
ExtensionSessionConfiguration(@xtension int extension, @NonNull List<OutputConfiguration> outputs, @NonNull Executor executor, @NonNull CameraExtensionSession.StateCallback listener)47     public ExtensionSessionConfiguration(@Extension int extension,
48             @NonNull List<OutputConfiguration> outputs, @NonNull Executor executor,
49             @NonNull CameraExtensionSession.StateCallback listener) {
50         mExtensionType = extension;
51         mOutputs = outputs;
52         mExecutor = executor;
53         mCallback = listener;
54     }
55 
56     /**
57      * Retrieve the extension type.
58      *
59      * @return the extension type.
60      */
61     public @Extension
getExtension()62     int getExtension() {
63         return mExtensionType;
64     }
65 
66     /**
67      * Retrieve the {@link OutputConfiguration} list for the capture
68      * session.
69      *
70      * @return A list of output configurations for the capture session.
71      */
72     public @NonNull
getOutputConfigurations()73     List<OutputConfiguration> getOutputConfigurations() {
74         return mOutputs;
75     }
76 
77     /**
78      * Retrieve the CameraCaptureSession.StateCallback
79      * listener.
80      *
81      * @return A state callback interface implementation.
82      */
83     public @NonNull
getStateCallback()84     CameraExtensionSession.StateCallback getStateCallback() {
85         return mCallback;
86     }
87 
88     /**
89      * Retrieve the Executor for the CameraExtensionSession instance.
90      *
91      * @return The Executor on which the callback will be invoked.
92      */
93     public @NonNull
getExecutor()94     Executor getExecutor() {
95         return mExecutor;
96     }
97 }
98