Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -528,6 +528,7 @@ java_library { "android.hardware.vibrator-V1.3-java", "android.system.keystore2-java", "android.system.suspend.control.internal-java", "cameraprotosnano", "devicepolicyprotosnano", "com.android.sysprop.apex", Loading cmds/statsd/src/atoms.proto +55 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import "frameworks/base/core/proto/android/server/job/enums.proto"; import "frameworks/base/core/proto/android/server/location/enums.proto"; import "frameworks/base/core/proto/android/service/procstats_enum.proto"; import "frameworks/base/core/proto/android/service/usb.proto"; import "frameworks/base/core/proto/android/stats/camera/camera.proto"; import "frameworks/base/core/proto/android/stats/connectivity/network_stack.proto"; import "frameworks/base/core/proto/android/stats/connectivity/tethering.proto"; import "frameworks/base/core/proto/android/stats/dnsresolver/dns_resolver.proto"; Loading Loading @@ -9950,10 +9951,12 @@ message DisplayJankReported { * frameworks/base/services/core/java/com/android/server/camera/CameraServiceProxy.java */ message CameraActionEvent { // Camera session duration // Camera session duration in milliseconds if action is SESSION. // 0 if action is OPEN or CLOSE. optional int64 duration_millis = 1; // Camera API level used // Camera API level used. // 1 for camera1 API, and 2 for camera2 API. optional int32 api_level = 2; // Name of client package Loading @@ -9967,6 +9970,56 @@ message CameraActionEvent { EXTERNAL = 3; } optional Facing facing = 4; // Camera ID optional string camera_id = 5; // Camera action type enum Action { UNKNOWN_ACTION = 0; OPEN = 1; CLOSE = 2; SESSION = 3; } optional Action action = 6; // Whether the client is accessing camera using ndk optional bool is_ndk = 7; // Action OPEN: Open latency // Action CLOSE: Close latency // Action SESSION: Camera session creation duration. // If this entry is reusing an existing session, the value is -1. optional int32 latency_millis = 8; // session type: 0 for normal mode, 1 for constrained high speed mode optional int32 operating_mode = 9; // If actioh is SESSION: number of internal reconfigurations // Else: 0 optional int32 internal_reconfig = 10; // Number of requests for this capture session. Only applicable to SESSION // action. optional int64 request_count = 11; // Number of result errors. Only applicable to SESSION action. optional int64 result_error_count = 12; // Whether the device runs into error state. optional bool device_error = 13; // If action is SESSION: Stream states // Else: stream_count = 0 optional int32 stream_count = 14; optional android.stats.camera.CameraStreamProto stream_1 = 15 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_2 = 16 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_3 = 17 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_4 = 18 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_5 = 19 [(android.os.statsd.log_mode) = MODE_BYTES]; } /** Loading config/preloaded-classes +1 −0 Original line number Diff line number Diff line Loading @@ -6749,6 +6749,7 @@ android.sysprop.-$$Lambda$TelephonyProperties$illdaSIVv8AlxP9uc8NqC3Ta1tA android.sysprop.-$$Lambda$TelephonyProperties$klELuV5zVSqFveC5l6c3FSJmLAU android.sysprop.-$$Lambda$TelephonyProperties$pFU8zg4eHAdooeRLJg1WBG52cKk android.sysprop.-$$Lambda$TelephonyProperties$sXc3eBCFirzHWb9pvClH7EsiM_Q android.stats.camera.nano.CameraStreamProto android.sysprop.AdbProperties android.sysprop.ApexProperties android.sysprop.ContactsProperties Loading core/java/android/hardware/CameraSessionStats.java 0 → 100644 +202 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * The camera action state used for passing camera usage information from * camera service to camera service proxy . * * Include camera id, facing, state, client apk name, apiLevel, isNdk, * and session/stream statistics. * * @hide */ public class CameraSessionStats implements Parcelable { public static final int CAMERA_STATE_OPEN = 0; public static final int CAMERA_STATE_ACTIVE = 1; public static final int CAMERA_STATE_IDLE = 2; public static final int CAMERA_STATE_CLOSED = 3; /** * Values for notifyCameraState facing */ public static final int CAMERA_FACING_BACK = 0; public static final int CAMERA_FACING_FRONT = 1; public static final int CAMERA_FACING_EXTERNAL = 2; /** * Values for notifyCameraState api level */ public static final int CAMERA_API_LEVEL_1 = 1; public static final int CAMERA_API_LEVEL_2 = 2; private String mCameraId; private int mFacing; private int mNewCameraState; private String mClientName; private int mApiLevel; private boolean mIsNdk; private int mLatencyMs; private int mSessionType; private int mInternalReconfigure; private long mRequestCount; private long mResultErrorCount; private boolean mDeviceError; private ArrayList<CameraStreamStats> mStreamStats; public CameraSessionStats() { mFacing = -1; mNewCameraState = -1; mApiLevel = -1; mIsNdk = false; mLatencyMs = -1; mSessionType = -1; mInternalReconfigure = -1; mRequestCount = 0; mResultErrorCount = 0; mDeviceError = false; mStreamStats = new ArrayList<CameraStreamStats>(); } public CameraSessionStats(String cameraId, int facing, int newCameraState, String clientName, int apiLevel, boolean isNdk, int creationDuration, int sessionType, int internalReconfigure) { mCameraId = cameraId; mFacing = facing; mNewCameraState = newCameraState; mClientName = clientName; mApiLevel = apiLevel; mIsNdk = isNdk; mLatencyMs = creationDuration; mSessionType = sessionType; mInternalReconfigure = internalReconfigure; mStreamStats = new ArrayList<CameraStreamStats>(); } public static final @android.annotation.NonNull Parcelable.Creator<CameraSessionStats> CREATOR = new Parcelable.Creator<CameraSessionStats>() { @Override public CameraSessionStats createFromParcel(Parcel in) { return new CameraSessionStats(in); } @Override public CameraSessionStats[] newArray(int size) { return new CameraSessionStats[size]; } }; private CameraSessionStats(Parcel in) { readFromParcel(in); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mCameraId); dest.writeInt(mFacing); dest.writeInt(mNewCameraState); dest.writeString(mClientName); dest.writeInt(mApiLevel); dest.writeBoolean(mIsNdk); dest.writeInt(mLatencyMs); dest.writeInt(mSessionType); dest.writeInt(mInternalReconfigure); dest.writeLong(mRequestCount); dest.writeLong(mResultErrorCount); dest.writeBoolean(mDeviceError); dest.writeTypedList(mStreamStats); } public void readFromParcel(Parcel in) { mCameraId = in.readString(); mFacing = in.readInt(); mNewCameraState = in.readInt(); mClientName = in.readString(); mApiLevel = in.readInt(); mIsNdk = in.readBoolean(); mLatencyMs = in.readInt(); mSessionType = in.readInt(); mInternalReconfigure = in.readInt(); mRequestCount = in.readLong(); mResultErrorCount = in.readLong(); mDeviceError = in.readBoolean(); ArrayList<CameraStreamStats> streamStats = new ArrayList<CameraStreamStats>(); in.readTypedList(streamStats, CameraStreamStats.CREATOR); mStreamStats = streamStats; } public String getCameraId() { return mCameraId; } public int getFacing() { return mFacing; } public int getNewCameraState() { return mNewCameraState; } public String getClientName() { return mClientName; } public int getApiLevel() { return mApiLevel; } public boolean isNdk() { return mIsNdk; } public int getLatencyMs() { return mLatencyMs; } public int getSessionType() { return mSessionType; } public int getInternalReconfigureCount() { return mInternalReconfigure; } public long getRequestCount() { return mRequestCount; } public long getResultErrorCount() { return mResultErrorCount; } public boolean getDeviceErrorFlag() { return mDeviceError; } public List<CameraStreamStats> getStreamStats() { return mStreamStats; } } core/java/android/hardware/CameraStreamStats.java 0 → 100644 +169 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; import java.util.ArrayList; /** * The camera stream statistics used for passing camera stream information from * camera service to camera service proxy. * * Include camera stream configuration, request/error counts, startup latency, * and latency/jitter histograms. * * @hide */ public class CameraStreamStats implements Parcelable { private int mWidth; private int mHeight; private int mFormat; private int mDataSpace; private long mUsage; private long mRequestCount; private long mErrorCount; private int mStartLatencyMs; private int mMaxHalBuffers; private int mMaxAppBuffers; private static final String TAG = "CameraStreamStats"; public CameraStreamStats() { mWidth = 0; mHeight = 0; mFormat = 0; mDataSpace = 0; mUsage = 0; mRequestCount = 0; mErrorCount = 0; mStartLatencyMs = 0; mMaxHalBuffers = 0; mMaxAppBuffers = 0; } public CameraStreamStats(int width, int height, int format, int dataSpace, long usage, long requestCount, long errorCount, int startLatencyMs, int maxHalBuffers, int maxAppBuffers) { mWidth = width; mHeight = height; mFormat = format; mDataSpace = dataSpace; mUsage = usage; mRequestCount = requestCount; mErrorCount = errorCount; mStartLatencyMs = startLatencyMs; mMaxHalBuffers = maxHalBuffers; mMaxAppBuffers = maxAppBuffers; } public static final @android.annotation.NonNull Parcelable.Creator<CameraStreamStats> CREATOR = new Parcelable.Creator<CameraStreamStats>() { @Override public CameraStreamStats createFromParcel(Parcel in) { try { CameraStreamStats streamStats = new CameraStreamStats(in); return streamStats; } catch (Exception e) { Log.e(TAG, "Exception creating CameraStreamStats from parcel", e); return null; } } @Override public CameraStreamStats[] newArray(int size) { return new CameraStreamStats[size]; } }; private CameraStreamStats(Parcel in) { readFromParcel(in); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mWidth); dest.writeInt(mHeight); dest.writeInt(mFormat); dest.writeInt(mDataSpace); dest.writeLong(mUsage); dest.writeLong(mRequestCount); dest.writeLong(mErrorCount); dest.writeInt(mStartLatencyMs); dest.writeInt(mMaxHalBuffers); dest.writeInt(mMaxAppBuffers); } public void readFromParcel(Parcel in) { mWidth = in.readInt(); mHeight = in.readInt(); mFormat = in.readInt(); mDataSpace = in.readInt(); mUsage = in.readLong(); mRequestCount = in.readLong(); mErrorCount = in.readLong(); mStartLatencyMs = in.readInt(); mMaxHalBuffers = in.readInt(); mMaxAppBuffers = in.readInt(); } public int getWidth() { return mWidth; } public int getHeight() { return mHeight; } public int getFormat() { return mFormat; } public int getDataSpace() { return mDataSpace; } public long getUsage() { return mUsage; } public long getRequestCount() { return mRequestCount; } public long getErrorCount() { return mErrorCount; } public int getStartLatencyMs() { return mStartLatencyMs; } public int getMaxHalBuffers() { return mMaxHalBuffers; } public int getMaxAppBuffers() { return mMaxAppBuffers; } } Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -528,6 +528,7 @@ java_library { "android.hardware.vibrator-V1.3-java", "android.system.keystore2-java", "android.system.suspend.control.internal-java", "cameraprotosnano", "devicepolicyprotosnano", "com.android.sysprop.apex", Loading
cmds/statsd/src/atoms.proto +55 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import "frameworks/base/core/proto/android/server/job/enums.proto"; import "frameworks/base/core/proto/android/server/location/enums.proto"; import "frameworks/base/core/proto/android/service/procstats_enum.proto"; import "frameworks/base/core/proto/android/service/usb.proto"; import "frameworks/base/core/proto/android/stats/camera/camera.proto"; import "frameworks/base/core/proto/android/stats/connectivity/network_stack.proto"; import "frameworks/base/core/proto/android/stats/connectivity/tethering.proto"; import "frameworks/base/core/proto/android/stats/dnsresolver/dns_resolver.proto"; Loading Loading @@ -9950,10 +9951,12 @@ message DisplayJankReported { * frameworks/base/services/core/java/com/android/server/camera/CameraServiceProxy.java */ message CameraActionEvent { // Camera session duration // Camera session duration in milliseconds if action is SESSION. // 0 if action is OPEN or CLOSE. optional int64 duration_millis = 1; // Camera API level used // Camera API level used. // 1 for camera1 API, and 2 for camera2 API. optional int32 api_level = 2; // Name of client package Loading @@ -9967,6 +9970,56 @@ message CameraActionEvent { EXTERNAL = 3; } optional Facing facing = 4; // Camera ID optional string camera_id = 5; // Camera action type enum Action { UNKNOWN_ACTION = 0; OPEN = 1; CLOSE = 2; SESSION = 3; } optional Action action = 6; // Whether the client is accessing camera using ndk optional bool is_ndk = 7; // Action OPEN: Open latency // Action CLOSE: Close latency // Action SESSION: Camera session creation duration. // If this entry is reusing an existing session, the value is -1. optional int32 latency_millis = 8; // session type: 0 for normal mode, 1 for constrained high speed mode optional int32 operating_mode = 9; // If actioh is SESSION: number of internal reconfigurations // Else: 0 optional int32 internal_reconfig = 10; // Number of requests for this capture session. Only applicable to SESSION // action. optional int64 request_count = 11; // Number of result errors. Only applicable to SESSION action. optional int64 result_error_count = 12; // Whether the device runs into error state. optional bool device_error = 13; // If action is SESSION: Stream states // Else: stream_count = 0 optional int32 stream_count = 14; optional android.stats.camera.CameraStreamProto stream_1 = 15 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_2 = 16 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_3 = 17 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_4 = 18 [(android.os.statsd.log_mode) = MODE_BYTES]; optional android.stats.camera.CameraStreamProto stream_5 = 19 [(android.os.statsd.log_mode) = MODE_BYTES]; } /** Loading
config/preloaded-classes +1 −0 Original line number Diff line number Diff line Loading @@ -6749,6 +6749,7 @@ android.sysprop.-$$Lambda$TelephonyProperties$illdaSIVv8AlxP9uc8NqC3Ta1tA android.sysprop.-$$Lambda$TelephonyProperties$klELuV5zVSqFveC5l6c3FSJmLAU android.sysprop.-$$Lambda$TelephonyProperties$pFU8zg4eHAdooeRLJg1WBG52cKk android.sysprop.-$$Lambda$TelephonyProperties$sXc3eBCFirzHWb9pvClH7EsiM_Q android.stats.camera.nano.CameraStreamProto android.sysprop.AdbProperties android.sysprop.ApexProperties android.sysprop.ContactsProperties Loading
core/java/android/hardware/CameraSessionStats.java 0 → 100644 +202 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * The camera action state used for passing camera usage information from * camera service to camera service proxy . * * Include camera id, facing, state, client apk name, apiLevel, isNdk, * and session/stream statistics. * * @hide */ public class CameraSessionStats implements Parcelable { public static final int CAMERA_STATE_OPEN = 0; public static final int CAMERA_STATE_ACTIVE = 1; public static final int CAMERA_STATE_IDLE = 2; public static final int CAMERA_STATE_CLOSED = 3; /** * Values for notifyCameraState facing */ public static final int CAMERA_FACING_BACK = 0; public static final int CAMERA_FACING_FRONT = 1; public static final int CAMERA_FACING_EXTERNAL = 2; /** * Values for notifyCameraState api level */ public static final int CAMERA_API_LEVEL_1 = 1; public static final int CAMERA_API_LEVEL_2 = 2; private String mCameraId; private int mFacing; private int mNewCameraState; private String mClientName; private int mApiLevel; private boolean mIsNdk; private int mLatencyMs; private int mSessionType; private int mInternalReconfigure; private long mRequestCount; private long mResultErrorCount; private boolean mDeviceError; private ArrayList<CameraStreamStats> mStreamStats; public CameraSessionStats() { mFacing = -1; mNewCameraState = -1; mApiLevel = -1; mIsNdk = false; mLatencyMs = -1; mSessionType = -1; mInternalReconfigure = -1; mRequestCount = 0; mResultErrorCount = 0; mDeviceError = false; mStreamStats = new ArrayList<CameraStreamStats>(); } public CameraSessionStats(String cameraId, int facing, int newCameraState, String clientName, int apiLevel, boolean isNdk, int creationDuration, int sessionType, int internalReconfigure) { mCameraId = cameraId; mFacing = facing; mNewCameraState = newCameraState; mClientName = clientName; mApiLevel = apiLevel; mIsNdk = isNdk; mLatencyMs = creationDuration; mSessionType = sessionType; mInternalReconfigure = internalReconfigure; mStreamStats = new ArrayList<CameraStreamStats>(); } public static final @android.annotation.NonNull Parcelable.Creator<CameraSessionStats> CREATOR = new Parcelable.Creator<CameraSessionStats>() { @Override public CameraSessionStats createFromParcel(Parcel in) { return new CameraSessionStats(in); } @Override public CameraSessionStats[] newArray(int size) { return new CameraSessionStats[size]; } }; private CameraSessionStats(Parcel in) { readFromParcel(in); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mCameraId); dest.writeInt(mFacing); dest.writeInt(mNewCameraState); dest.writeString(mClientName); dest.writeInt(mApiLevel); dest.writeBoolean(mIsNdk); dest.writeInt(mLatencyMs); dest.writeInt(mSessionType); dest.writeInt(mInternalReconfigure); dest.writeLong(mRequestCount); dest.writeLong(mResultErrorCount); dest.writeBoolean(mDeviceError); dest.writeTypedList(mStreamStats); } public void readFromParcel(Parcel in) { mCameraId = in.readString(); mFacing = in.readInt(); mNewCameraState = in.readInt(); mClientName = in.readString(); mApiLevel = in.readInt(); mIsNdk = in.readBoolean(); mLatencyMs = in.readInt(); mSessionType = in.readInt(); mInternalReconfigure = in.readInt(); mRequestCount = in.readLong(); mResultErrorCount = in.readLong(); mDeviceError = in.readBoolean(); ArrayList<CameraStreamStats> streamStats = new ArrayList<CameraStreamStats>(); in.readTypedList(streamStats, CameraStreamStats.CREATOR); mStreamStats = streamStats; } public String getCameraId() { return mCameraId; } public int getFacing() { return mFacing; } public int getNewCameraState() { return mNewCameraState; } public String getClientName() { return mClientName; } public int getApiLevel() { return mApiLevel; } public boolean isNdk() { return mIsNdk; } public int getLatencyMs() { return mLatencyMs; } public int getSessionType() { return mSessionType; } public int getInternalReconfigureCount() { return mInternalReconfigure; } public long getRequestCount() { return mRequestCount; } public long getResultErrorCount() { return mResultErrorCount; } public boolean getDeviceErrorFlag() { return mDeviceError; } public List<CameraStreamStats> getStreamStats() { return mStreamStats; } }
core/java/android/hardware/CameraStreamStats.java 0 → 100644 +169 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; import java.util.ArrayList; /** * The camera stream statistics used for passing camera stream information from * camera service to camera service proxy. * * Include camera stream configuration, request/error counts, startup latency, * and latency/jitter histograms. * * @hide */ public class CameraStreamStats implements Parcelable { private int mWidth; private int mHeight; private int mFormat; private int mDataSpace; private long mUsage; private long mRequestCount; private long mErrorCount; private int mStartLatencyMs; private int mMaxHalBuffers; private int mMaxAppBuffers; private static final String TAG = "CameraStreamStats"; public CameraStreamStats() { mWidth = 0; mHeight = 0; mFormat = 0; mDataSpace = 0; mUsage = 0; mRequestCount = 0; mErrorCount = 0; mStartLatencyMs = 0; mMaxHalBuffers = 0; mMaxAppBuffers = 0; } public CameraStreamStats(int width, int height, int format, int dataSpace, long usage, long requestCount, long errorCount, int startLatencyMs, int maxHalBuffers, int maxAppBuffers) { mWidth = width; mHeight = height; mFormat = format; mDataSpace = dataSpace; mUsage = usage; mRequestCount = requestCount; mErrorCount = errorCount; mStartLatencyMs = startLatencyMs; mMaxHalBuffers = maxHalBuffers; mMaxAppBuffers = maxAppBuffers; } public static final @android.annotation.NonNull Parcelable.Creator<CameraStreamStats> CREATOR = new Parcelable.Creator<CameraStreamStats>() { @Override public CameraStreamStats createFromParcel(Parcel in) { try { CameraStreamStats streamStats = new CameraStreamStats(in); return streamStats; } catch (Exception e) { Log.e(TAG, "Exception creating CameraStreamStats from parcel", e); return null; } } @Override public CameraStreamStats[] newArray(int size) { return new CameraStreamStats[size]; } }; private CameraStreamStats(Parcel in) { readFromParcel(in); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mWidth); dest.writeInt(mHeight); dest.writeInt(mFormat); dest.writeInt(mDataSpace); dest.writeLong(mUsage); dest.writeLong(mRequestCount); dest.writeLong(mErrorCount); dest.writeInt(mStartLatencyMs); dest.writeInt(mMaxHalBuffers); dest.writeInt(mMaxAppBuffers); } public void readFromParcel(Parcel in) { mWidth = in.readInt(); mHeight = in.readInt(); mFormat = in.readInt(); mDataSpace = in.readInt(); mUsage = in.readLong(); mRequestCount = in.readLong(); mErrorCount = in.readLong(); mStartLatencyMs = in.readInt(); mMaxHalBuffers = in.readInt(); mMaxAppBuffers = in.readInt(); } public int getWidth() { return mWidth; } public int getHeight() { return mHeight; } public int getFormat() { return mFormat; } public int getDataSpace() { return mDataSpace; } public long getUsage() { return mUsage; } public long getRequestCount() { return mRequestCount; } public long getErrorCount() { return mErrorCount; } public int getStartLatencyMs() { return mStartLatencyMs; } public int getMaxHalBuffers() { return mMaxHalBuffers; } public int getMaxAppBuffers() { return mMaxAppBuffers; } }