• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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;
17 import android.os.Parcel;
18 import android.os.Parcelable;
19 
20 import java.util.ArrayList;
21 import java.util.List;
22 /**
23  * The camera action state used for passing camera usage information from
24  * camera service to camera service proxy .
25  *
26  * Include camera id, facing, state, client apk name, apiLevel, isNdk,
27  * and session/stream statistics.
28  *
29  * @hide
30  */
31 public class CameraSessionStats implements Parcelable {
32     public static final int CAMERA_STATE_OPEN = 0;
33     public static final int CAMERA_STATE_ACTIVE = 1;
34     public static final int CAMERA_STATE_IDLE = 2;
35     public static final int CAMERA_STATE_CLOSED = 3;
36 
37     /**
38      * Values for notifyCameraState facing
39      */
40     public static final int CAMERA_FACING_BACK = 0;
41     public static final int CAMERA_FACING_FRONT = 1;
42     public static final int CAMERA_FACING_EXTERNAL = 2;
43 
44     /**
45      * Values for notifyCameraState api level
46      */
47     public static final int CAMERA_API_LEVEL_1 = 1;
48     public static final int CAMERA_API_LEVEL_2 = 2;
49 
50     private String mCameraId;
51     private int mFacing;
52     private int mNewCameraState;
53     private String mClientName;
54     private int mApiLevel;
55     private boolean mIsNdk;
56     private int mLatencyMs;
57     private int mSessionType;
58     private int mInternalReconfigure;
59     private long mRequestCount;
60     private long mResultErrorCount;
61     private boolean mDeviceError;
62     private float mMaxPreviewFps;
63     private ArrayList<CameraStreamStats> mStreamStats;
64     private String mUserTag;
65     private int mVideoStabilizationMode;
66 
CameraSessionStats()67     public CameraSessionStats() {
68         mFacing = -1;
69         mNewCameraState = -1;
70         mApiLevel = -1;
71         mIsNdk = false;
72         mLatencyMs = -1;
73         mMaxPreviewFps = 0;
74         mSessionType = -1;
75         mInternalReconfigure = -1;
76         mRequestCount = 0;
77         mResultErrorCount = 0;
78         mDeviceError = false;
79         mStreamStats = new ArrayList<CameraStreamStats>();
80         mVideoStabilizationMode = -1;
81     }
82 
CameraSessionStats(String cameraId, int facing, int newCameraState, String clientName, int apiLevel, boolean isNdk, int creationDuration, float maxPreviewFps, int sessionType, int internalReconfigure)83     public CameraSessionStats(String cameraId, int facing, int newCameraState,
84             String clientName, int apiLevel, boolean isNdk, int creationDuration,
85             float maxPreviewFps, int sessionType, int internalReconfigure) {
86         mCameraId = cameraId;
87         mFacing = facing;
88         mNewCameraState = newCameraState;
89         mClientName = clientName;
90         mApiLevel = apiLevel;
91         mIsNdk = isNdk;
92         mLatencyMs = creationDuration;
93         mMaxPreviewFps = maxPreviewFps;
94         mSessionType = sessionType;
95         mInternalReconfigure = internalReconfigure;
96         mStreamStats = new ArrayList<CameraStreamStats>();
97     }
98 
99     public static final @android.annotation.NonNull Parcelable.Creator<CameraSessionStats> CREATOR =
100             new Parcelable.Creator<CameraSessionStats>() {
101         @Override
102         public CameraSessionStats createFromParcel(Parcel in) {
103             return new CameraSessionStats(in);
104         }
105 
106         @Override
107         public CameraSessionStats[] newArray(int size) {
108             return new CameraSessionStats[size];
109         }
110     };
111 
CameraSessionStats(Parcel in)112     private CameraSessionStats(Parcel in) {
113         readFromParcel(in);
114     }
115 
116     @Override
describeContents()117     public int describeContents() {
118         return 0;
119     }
120 
121     @Override
writeToParcel(Parcel dest, int flags)122     public void writeToParcel(Parcel dest, int flags) {
123         dest.writeString(mCameraId);
124         dest.writeInt(mFacing);
125         dest.writeInt(mNewCameraState);
126         dest.writeString(mClientName);
127         dest.writeInt(mApiLevel);
128         dest.writeBoolean(mIsNdk);
129         dest.writeInt(mLatencyMs);
130         dest.writeFloat(mMaxPreviewFps);
131         dest.writeInt(mSessionType);
132         dest.writeInt(mInternalReconfigure);
133         dest.writeLong(mRequestCount);
134         dest.writeLong(mResultErrorCount);
135         dest.writeBoolean(mDeviceError);
136         dest.writeTypedList(mStreamStats);
137         dest.writeString(mUserTag);
138         dest.writeInt(mVideoStabilizationMode);
139     }
140 
readFromParcel(Parcel in)141     public void readFromParcel(Parcel in) {
142         mCameraId = in.readString();
143         mFacing = in.readInt();
144         mNewCameraState = in.readInt();
145         mClientName = in.readString();
146         mApiLevel = in.readInt();
147         mIsNdk = in.readBoolean();
148         mLatencyMs = in.readInt();
149         mMaxPreviewFps = in.readFloat();
150         mSessionType = in.readInt();
151         mInternalReconfigure = in.readInt();
152         mRequestCount = in.readLong();
153         mResultErrorCount = in.readLong();
154         mDeviceError = in.readBoolean();
155 
156         ArrayList<CameraStreamStats> streamStats = new ArrayList<CameraStreamStats>();
157         in.readTypedList(streamStats, CameraStreamStats.CREATOR);
158         mStreamStats = streamStats;
159 
160         mUserTag = in.readString();
161         mVideoStabilizationMode = in.readInt();
162     }
163 
getCameraId()164     public String getCameraId() {
165         return mCameraId;
166     }
167 
getFacing()168     public int getFacing() {
169         return mFacing;
170     }
171 
getNewCameraState()172     public int getNewCameraState() {
173         return mNewCameraState;
174     }
175 
getClientName()176     public String getClientName() {
177         return mClientName;
178     }
179 
getApiLevel()180     public int getApiLevel() {
181         return mApiLevel;
182     }
183 
isNdk()184     public boolean isNdk() {
185         return mIsNdk;
186     }
187 
getLatencyMs()188     public int getLatencyMs() {
189         return mLatencyMs;
190     }
191 
getMaxPreviewFps()192     public float getMaxPreviewFps() {
193         return mMaxPreviewFps;
194     }
195 
getSessionType()196     public int getSessionType() {
197         return mSessionType;
198     }
199 
getInternalReconfigureCount()200     public int getInternalReconfigureCount() {
201         return mInternalReconfigure;
202     }
203 
getRequestCount()204     public long getRequestCount() {
205         return mRequestCount;
206     }
207 
getResultErrorCount()208     public long getResultErrorCount() {
209         return mResultErrorCount;
210     }
211 
getDeviceErrorFlag()212     public boolean getDeviceErrorFlag() {
213         return mDeviceError;
214     }
215 
getStreamStats()216     public List<CameraStreamStats> getStreamStats() {
217         return mStreamStats;
218     }
219 
getUserTag()220     public String getUserTag() {
221         return mUserTag;
222     }
223 
getVideoStabilizationMode()224     public int getVideoStabilizationMode() {
225         return mVideoStabilizationMode;
226     }
227 }
228