• 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 ArrayList<CameraStreamStats> mStreamStats;
63 
CameraSessionStats()64     public CameraSessionStats() {
65         mFacing = -1;
66         mNewCameraState = -1;
67         mApiLevel = -1;
68         mIsNdk = false;
69         mLatencyMs = -1;
70         mSessionType = -1;
71         mInternalReconfigure = -1;
72         mRequestCount = 0;
73         mResultErrorCount = 0;
74         mDeviceError = false;
75         mStreamStats = new ArrayList<CameraStreamStats>();
76     }
77 
CameraSessionStats(String cameraId, int facing, int newCameraState, String clientName, int apiLevel, boolean isNdk, int creationDuration, int sessionType, int internalReconfigure)78     public CameraSessionStats(String cameraId, int facing, int newCameraState,
79             String clientName, int apiLevel, boolean isNdk, int creationDuration,
80             int sessionType, int internalReconfigure) {
81         mCameraId = cameraId;
82         mFacing = facing;
83         mNewCameraState = newCameraState;
84         mClientName = clientName;
85         mApiLevel = apiLevel;
86         mIsNdk = isNdk;
87         mLatencyMs = creationDuration;
88         mSessionType = sessionType;
89         mInternalReconfigure = internalReconfigure;
90         mStreamStats = new ArrayList<CameraStreamStats>();
91     }
92 
93     public static final @android.annotation.NonNull Parcelable.Creator<CameraSessionStats> CREATOR =
94             new Parcelable.Creator<CameraSessionStats>() {
95         @Override
96         public CameraSessionStats createFromParcel(Parcel in) {
97             return new CameraSessionStats(in);
98         }
99 
100         @Override
101         public CameraSessionStats[] newArray(int size) {
102             return new CameraSessionStats[size];
103         }
104     };
105 
CameraSessionStats(Parcel in)106     private CameraSessionStats(Parcel in) {
107         readFromParcel(in);
108     }
109 
110     @Override
describeContents()111     public int describeContents() {
112         return 0;
113     }
114 
115     @Override
writeToParcel(Parcel dest, int flags)116     public void writeToParcel(Parcel dest, int flags) {
117         dest.writeString(mCameraId);
118         dest.writeInt(mFacing);
119         dest.writeInt(mNewCameraState);
120         dest.writeString(mClientName);
121         dest.writeInt(mApiLevel);
122         dest.writeBoolean(mIsNdk);
123         dest.writeInt(mLatencyMs);
124         dest.writeInt(mSessionType);
125         dest.writeInt(mInternalReconfigure);
126         dest.writeLong(mRequestCount);
127         dest.writeLong(mResultErrorCount);
128         dest.writeBoolean(mDeviceError);
129         dest.writeTypedList(mStreamStats);
130     }
131 
readFromParcel(Parcel in)132     public void readFromParcel(Parcel in) {
133         mCameraId = in.readString();
134         mFacing = in.readInt();
135         mNewCameraState = in.readInt();
136         mClientName = in.readString();
137         mApiLevel = in.readInt();
138         mIsNdk = in.readBoolean();
139         mLatencyMs = in.readInt();
140         mSessionType = in.readInt();
141         mInternalReconfigure = in.readInt();
142         mRequestCount = in.readLong();
143         mResultErrorCount = in.readLong();
144         mDeviceError = in.readBoolean();
145 
146         ArrayList<CameraStreamStats> streamStats = new ArrayList<CameraStreamStats>();
147         in.readTypedList(streamStats, CameraStreamStats.CREATOR);
148         mStreamStats = streamStats;
149     }
150 
getCameraId()151     public String getCameraId() {
152         return mCameraId;
153     }
154 
getFacing()155     public int getFacing() {
156         return mFacing;
157     }
158 
getNewCameraState()159     public int getNewCameraState() {
160         return mNewCameraState;
161     }
162 
getClientName()163     public String getClientName() {
164         return mClientName;
165     }
166 
getApiLevel()167     public int getApiLevel() {
168         return mApiLevel;
169     }
170 
isNdk()171     public boolean isNdk() {
172         return mIsNdk;
173     }
174 
getLatencyMs()175     public int getLatencyMs() {
176         return mLatencyMs;
177     }
178 
getSessionType()179     public int getSessionType() {
180         return mSessionType;
181     }
182 
getInternalReconfigureCount()183     public int getInternalReconfigureCount() {
184         return mInternalReconfigure;
185     }
186 
getRequestCount()187     public long getRequestCount() {
188         return mRequestCount;
189     }
190 
getResultErrorCount()191     public long getResultErrorCount() {
192         return mResultErrorCount;
193     }
194 
getDeviceErrorFlag()195     public boolean getDeviceErrorFlag() {
196         return mDeviceError;
197     }
198 
getStreamStats()199     public List<CameraStreamStats> getStreamStats() {
200         return mStreamStats;
201     }
202 }
203