Merge "Camera: Allow clients to query for extra profile latency" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-02-24 00:27:29 +00:00
committed by Android (Google) Code Review
9 changed files with 107 additions and 88 deletions

View File

@@ -17398,7 +17398,7 @@ package android.hardware.camera2 {
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_RAW;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_PARTIAL_RESULT_COUNT;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> REQUEST_PIPELINE_MAX_DEPTH;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Long> REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> SCALER_AVAILABLE_MAX_DIGITAL_ZOOM;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SCALER_AVAILABLE_ROTATE_AND_CROP_MODES;
field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SCALER_AVAILABLE_STREAM_USE_CASES;
@@ -18118,22 +18118,23 @@ package android.hardware.camera2.params {
}
public final class DynamicRangeProfiles {
ctor public DynamicRangeProfiles(@NonNull int[]);
method @NonNull public java.util.Set<java.lang.Integer> getProfileCaptureRequestConstraints(int);
method @NonNull public java.util.Set<java.lang.Integer> getSupportedProfiles();
field public static final int DOLBY_VISION_10B_HDR_OEM = 64; // 0x40
field public static final int DOLBY_VISION_10B_HDR_OEM_PO = 128; // 0x80
field public static final int DOLBY_VISION_10B_HDR_REF = 16; // 0x10
field public static final int DOLBY_VISION_10B_HDR_REF_PO = 32; // 0x20
field public static final int DOLBY_VISION_8B_HDR_OEM = 1024; // 0x400
field public static final int DOLBY_VISION_8B_HDR_OEM_PO = 2048; // 0x800
field public static final int DOLBY_VISION_8B_HDR_REF = 256; // 0x100
field public static final int DOLBY_VISION_8B_HDR_REF_PO = 512; // 0x200
field public static final int HDR10 = 4; // 0x4
field public static final int HDR10_PLUS = 8; // 0x8
field public static final int HLG10 = 2; // 0x2
field public static final int PUBLIC_MAX = 4096; // 0x1000
field public static final int STANDARD = 1; // 0x1
ctor public DynamicRangeProfiles(@NonNull long[]);
method @NonNull public java.util.Set<java.lang.Long> getProfileCaptureRequestConstraints(long);
method @NonNull public java.util.Set<java.lang.Long> getSupportedProfiles();
method public boolean isExtraLatencyPresent(long);
field public static final long DOLBY_VISION_10B_HDR_OEM = 64L; // 0x40L
field public static final long DOLBY_VISION_10B_HDR_OEM_PO = 128L; // 0x80L
field public static final long DOLBY_VISION_10B_HDR_REF = 16L; // 0x10L
field public static final long DOLBY_VISION_10B_HDR_REF_PO = 32L; // 0x20L
field public static final long DOLBY_VISION_8B_HDR_OEM = 1024L; // 0x400L
field public static final long DOLBY_VISION_8B_HDR_OEM_PO = 2048L; // 0x800L
field public static final long DOLBY_VISION_8B_HDR_REF = 256L; // 0x100L
field public static final long DOLBY_VISION_8B_HDR_REF_PO = 512L; // 0x200L
field public static final long HDR10 = 4L; // 0x4L
field public static final long HDR10_PLUS = 8L; // 0x8L
field public static final long HLG10 = 2L; // 0x2L
field public static final long PUBLIC_MAX = 4096L; // 0x1000L
field public static final long STANDARD = 1L; // 0x1L
}
public final class ExtensionSessionConfiguration {
@@ -18240,7 +18241,7 @@ package android.hardware.camera2.params {
method @NonNull public static java.util.Collection<android.hardware.camera2.params.OutputConfiguration> createInstancesForMultiResolutionOutput(@NonNull android.hardware.camera2.MultiResolutionImageReader);
method public int describeContents();
method public void enableSurfaceSharing();
method public int getDynamicRangeProfile();
method public long getDynamicRangeProfile();
method public int getMaxSharedSurfaceCount();
method public int getMirrorMode();
method public int getStreamUseCase();
@@ -18250,7 +18251,7 @@ package android.hardware.camera2.params {
method public int getTimestampBase();
method public void removeSensorPixelModeUsed(int);
method public void removeSurface(@NonNull android.view.Surface);
method public void setDynamicRangeProfile(int);
method public void setDynamicRangeProfile(long);
method public void setMirrorMode(int);
method public void setPhysicalCameraId(@Nullable String);
method public void setStreamUseCase(int);

View File

@@ -47,7 +47,7 @@ public class CameraStreamStats implements Parcelable {
private int mHistogramType;
private float[] mHistogramBins;
private long[] mHistogramCounts;
private int mDynamicRangeProfile;
private long mDynamicRangeProfile;
private int mStreamUseCase;
private static final String TAG = "CameraStreamStats";
@@ -70,7 +70,7 @@ public class CameraStreamStats implements Parcelable {
public CameraStreamStats(int width, int height, int format,
int dataSpace, long usage, long requestCount, long errorCount,
int startLatencyMs, int maxHalBuffers, int maxAppBuffers, int dynamicRangeProfile,
int startLatencyMs, int maxHalBuffers, int maxAppBuffers, long dynamicRangeProfile,
int streamUseCase) {
mWidth = width;
mHeight = height;
@@ -130,7 +130,7 @@ public class CameraStreamStats implements Parcelable {
dest.writeInt(mHistogramType);
dest.writeFloatArray(mHistogramBins);
dest.writeLongArray(mHistogramCounts);
dest.writeInt(mDynamicRangeProfile);
dest.writeLong(mDynamicRangeProfile);
dest.writeInt(mStreamUseCase);
}
@@ -148,7 +148,7 @@ public class CameraStreamStats implements Parcelable {
mHistogramType = in.readInt();
mHistogramBins = in.createFloatArray();
mHistogramCounts = in.createLongArray();
mDynamicRangeProfile = in.readInt();
mDynamicRangeProfile = in.readLong();
mStreamUseCase = in.readInt();
}
@@ -204,7 +204,7 @@ public class CameraStreamStats implements Parcelable {
return mHistogramCounts;
}
public int getDynamicRangeProfile() {
public long getDynamicRangeProfile() {
return mDynamicRangeProfile;
}

View File

@@ -2448,8 +2448,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri
* @see #REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX
* @hide
*/
public static final Key<int[]> REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP =
new Key<int[]>("android.request.availableDynamicRangeProfilesMap", int[].class);
public static final Key<long[]> REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP =
new Key<long[]>("android.request.availableDynamicRangeProfilesMap", long[].class);
/**
* <p>Recommended 10-bit dynamic range profile.</p>
@@ -2464,8 +2464,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri
*/
@PublicKey
@NonNull
public static final Key<Integer> REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE =
new Key<Integer>("android.request.recommendedTenBitDynamicRangeProfile", int.class);
public static final Key<Long> REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE =
new Key<Long>("android.request.recommendedTenBitDynamicRangeProfile", long.class);
/**
* <p>The list of image formats that are supported by this

View File

@@ -990,7 +990,7 @@ public abstract class CameraDevice implements AutoCloseable {
* <p>Reprocessing with 10-bit output targets on 10-bit capable
* {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT} devices is
* not supported. Trying to initialize a repreocessable capture session with one ore more
* output configurations set {@link OutputConfiguration#setDynamicRangeProfile(int)} to use
* output configurations set {@link OutputConfiguration#setDynamicRangeProfile} to use
* a 10-bit dynamic range profile {@link android.hardware.camera2.params.DynamicRangeProfiles}
* will trigger {@link IllegalArgumentException}.</p>
*
@@ -1179,7 +1179,7 @@ public abstract class CameraDevice implements AutoCloseable {
* @see #createCaptureSessionByOutputConfigurations
* @see #createReprocessableCaptureSession
* @see #createConstrainedHighSpeedCaptureSession
* @see OutputConfiguration#setDynamicRangeProfile(int)
* @see OutputConfiguration#setDynamicRangeProfile
* @see android.hardware.camera2.params.DynamicRangeProfiles
*/
public void createCaptureSession(

View File

@@ -1058,7 +1058,7 @@ public class CameraMetadataNative implements Parcelable {
}
private DynamicRangeProfiles getDynamicRangeProfiles() {
int[] profileArray = getBase(
long[] profileArray = getBase(
CameraCharacteristics.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP);
if (profileArray == null) {

View File

@@ -16,7 +16,7 @@
package android.hardware.camera2.params;
import android.annotation.IntDef;
import android.annotation.LongDef;
import android.annotation.NonNull;
import android.hardware.camera2.CameraMetadata;
@@ -27,7 +27,6 @@ import java.lang.annotation.RetentionPolicy;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
@@ -44,20 +43,20 @@ import java.util.Set;
*
* <p>Some devices may not be able to support 8-bit and/or 10-bit output with different dynamic
* range profiles within the same capture request. Such device specific constraints can be queried
* by calling {@link #getProfileCaptureRequestConstraints(int)}. Do note that unsupported
* by calling {@link #getProfileCaptureRequestConstraints}. Do note that unsupported
* combinations will result in {@link IllegalArgumentException} when trying to submit a capture
* request. Capture requests that only reference outputs configured using the same dynamic range
* profile value will never fail due to such constraints.</p>
*
* @see OutputConfiguration#setDynamicRangeProfile(int)
* @see OutputConfiguration#setDynamicRangeProfile
*/
public final class DynamicRangeProfiles {
/**
* This the default 8-bit standard profile that will be used in case where camera clients do not
* explicitly configure a supported dynamic range profile by calling
* {@link OutputConfiguration#setDynamicRangeProfile(int)}.
* {@link OutputConfiguration#setDynamicRangeProfile}.
*/
public static final int STANDARD =
public static final long STANDARD =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD;
/**
@@ -65,7 +64,7 @@ public final class DynamicRangeProfiles {
*
* <p>All 10-bit output capable devices are required to support this profile.</p>
*/
public static final int HLG10 =
public static final long HLG10 =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10;
/**
@@ -74,7 +73,7 @@ public final class DynamicRangeProfiles {
* <p>This profile utilizes internal static metadata to increase the quality
* of the capture.</p>
*/
public static final int HDR10 =
public static final long HDR10 =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10;
/**
@@ -83,7 +82,7 @@ public final class DynamicRangeProfiles {
* <p>In contrast to HDR10, this profile uses internal per-frame metadata
* to further enhance the quality of the capture.</p>
*/
public static final int HDR10_PLUS =
public static final long HDR10_PLUS =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS;
/**
@@ -91,13 +90,13 @@ public final class DynamicRangeProfiles {
* accurate capture. This would typically differ from what a specific device
* might want to tune for a consumer optimized Dolby Vision general capture.</p>
*/
public static final int DOLBY_VISION_10B_HDR_REF =
public static final long DOLBY_VISION_10B_HDR_REF =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF;
/**
* <p>This is the power optimized mode for 10-bit Dolby Vision HDR Reference Mode.</p>
*/
public static final int DOLBY_VISION_10B_HDR_REF_PO =
public static final long DOLBY_VISION_10B_HDR_REF_PO =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO;
/**
@@ -107,52 +106,52 @@ public final class DynamicRangeProfiles {
* that each specific device would have a different look for their default
* Dolby Vision capture.</p>
*/
public static final int DOLBY_VISION_10B_HDR_OEM =
public static final long DOLBY_VISION_10B_HDR_OEM =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM;
/**
* <p>This is the power optimized mode for 10-bit Dolby Vision HDR device specific capture
* Mode.</p>
*/
public static final int DOLBY_VISION_10B_HDR_OEM_PO =
public static final long DOLBY_VISION_10B_HDR_OEM_PO =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO;
/**
* <p>This is the 8-bit version of the Dolby Vision reference capture mode optimized
* for scene accuracy.</p>
*/
public static final int DOLBY_VISION_8B_HDR_REF =
public static final long DOLBY_VISION_8B_HDR_REF =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF;
/**
* <p>This is the power optimized mode for 8-bit Dolby Vision HDR Reference Mode.</p>
*/
public static final int DOLBY_VISION_8B_HDR_REF_PO =
public static final long DOLBY_VISION_8B_HDR_REF_PO =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO;
/**
* <p>This is the 8-bit version of device specific tuned and optimized Dolby Vision
* capture mode.</p>
*/
public static final int DOLBY_VISION_8B_HDR_OEM =
public static final long DOLBY_VISION_8B_HDR_OEM =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM;
/**
* <p>This is the power optimized mode for 8-bit Dolby Vision HDR device specific
* capture Mode.</p>
*/
public static final int DOLBY_VISION_8B_HDR_OEM_PO =
public static final long DOLBY_VISION_8B_HDR_OEM_PO =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO;
/*
* @hide
*/
public static final int PUBLIC_MAX =
public static final long PUBLIC_MAX =
CameraMetadata.REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX;
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"PROFILE_"}, value =
@LongDef(prefix = {"PROFILE_"}, value =
{STANDARD,
HLG10,
HDR10,
@@ -168,7 +167,8 @@ public final class DynamicRangeProfiles {
public @interface Profile {
}
private final HashMap<Integer, Set<Integer>> mProfileMap = new HashMap<>();
private final HashMap<Long, Set<Long>> mProfileMap = new HashMap<>();
private final HashMap<Long, Boolean> mLookahedLatencyMap = new HashMap<>();
/**
* Create a new immutable DynamicRangeProfiles instance.
@@ -193,23 +193,23 @@ public final class DynamicRangeProfiles {
* if {@code elements} is {@code null}
*
*/
public DynamicRangeProfiles(@NonNull final int[] elements) {
if ((elements.length % 2) != 0) {
public DynamicRangeProfiles(@NonNull final long[] elements) {
if ((elements.length % 3) != 0) {
throw new IllegalArgumentException("Dynamic range profile map length " +
elements.length + " is not even!");
}
for (int i = 0; i < elements.length; i += 2) {
for (int i = 0; i < elements.length; i += 3) {
checkProfileValue(elements[i]);
// STANDARD is not expected to be included
if (elements[i] == STANDARD) {
throw new IllegalArgumentException("Dynamic range profile map must not include a"
+ " STANDARD profile entry!");
}
HashSet<Integer> profiles = new HashSet<>();
HashSet<Long> profiles = new HashSet<>();
if (elements[i+1] != 0) {
for (int profile = STANDARD; profile < PUBLIC_MAX; profile <<= 1) {
for (long profile = STANDARD; profile < PUBLIC_MAX; profile <<= 1) {
if ((elements[i+1] & profile) != 0) {
profiles.add(profile);
}
@@ -217,12 +217,13 @@ public final class DynamicRangeProfiles {
}
mProfileMap.put(elements[i], profiles);
mLookahedLatencyMap.put(elements[i], elements[i+2] != 0L);
}
// Build the STANDARD constraints depending on the advertised 10-bit limitations
HashSet<Integer> standardConstraints = new HashSet<>();
HashSet<Long> standardConstraints = new HashSet<>();
standardConstraints.add(STANDARD);
for(Integer profile : mProfileMap.keySet()) {
for(Long profile : mProfileMap.keySet()) {
if (mProfileMap.get(profile).isEmpty() || mProfileMap.get(profile).contains(STANDARD)) {
standardConstraints.add(profile);
}
@@ -235,24 +236,15 @@ public final class DynamicRangeProfiles {
/**
* @hide
*/
public static void checkProfileValue(int profile) {
switch (profile) {
case STANDARD:
case HLG10:
case HDR10:
case HDR10_PLUS:
case DOLBY_VISION_10B_HDR_REF:
case DOLBY_VISION_10B_HDR_REF_PO:
case DOLBY_VISION_10B_HDR_OEM:
case DOLBY_VISION_10B_HDR_OEM_PO:
case DOLBY_VISION_8B_HDR_REF:
case DOLBY_VISION_8B_HDR_REF_PO:
case DOLBY_VISION_8B_HDR_OEM:
case DOLBY_VISION_8B_HDR_OEM_PO:
//No-op
break;
default:
throw new IllegalArgumentException("Unknown profile " + profile);
public static void checkProfileValue(long profile) {
if (profile == STANDARD || profile == HLG10 || profile == HDR10 || profile == HDR10_PLUS
|| profile == DOLBY_VISION_10B_HDR_REF || profile == DOLBY_VISION_10B_HDR_REF_PO
|| profile == DOLBY_VISION_10B_HDR_OEM || profile == DOLBY_VISION_10B_HDR_OEM_PO
|| profile == DOLBY_VISION_8B_HDR_REF || profile == DOLBY_VISION_8B_HDR_REF_PO
|| profile == DOLBY_VISION_8B_HDR_OEM
|| profile == DOLBY_VISION_8B_HDR_OEM_PO) {//No-op
} else {
throw new IllegalArgumentException("Unknown profile " + profile);
}
}
@@ -261,7 +253,7 @@ public final class DynamicRangeProfiles {
*
* @return non-modifiable set of dynamic range profiles
*/
public @NonNull Set<Integer> getSupportedProfiles() {
public @NonNull Set<Long> getSupportedProfiles() {
return Collections.unmodifiableSet(mProfileMap.keySet());
}
@@ -272,7 +264,7 @@ public final class DynamicRangeProfiles {
*
* <p>For example if assume that a particular 10-bit output capable device
* returns ({@link #STANDARD}, {@link #HLG10}, {@link #HDR10}) as result from calling
* {@link #getSupportedProfiles()} and {@link #getProfileCaptureRequestConstraints(int)}
* {@link #getSupportedProfiles()} and {@link #getProfileCaptureRequestConstraints}
* returns ({@link #STANDARD}, {@link #HLG10}) when given an argument of {@link #STANDARD}.
* This means that the corresponding camera device will only accept and process capture requests
* that reference outputs configured using {@link #HDR10} dynamic profile or alternatively
@@ -288,14 +280,40 @@ public final class DynamicRangeProfiles {
* within the list returned by
* getSupportedProfiles()
*
* @see OutputConfiguration#setDynamicRangeProfile(int)
* @see OutputConfiguration#setDynamicRangeProfile
*/
public @NonNull Set<Integer> getProfileCaptureRequestConstraints(@Profile int profile) {
Set<Integer> ret = mProfileMap.get(profile);
public @NonNull Set<Long> getProfileCaptureRequestConstraints(@Profile long profile) {
Set<Long> ret = mProfileMap.get(profile);
if (ret == null) {
throw new IllegalArgumentException("Unsupported profile!");
}
return Collections.unmodifiableSet(ret);
}
/**
* Check whether a given dynamic range profile is suitable for latency sensitive use cases.
*
* <p>Due to internal lookahead logic, camera outputs configured with some dynamic range
* profiles may experience additional latency greater than 3 buffers. Using camera outputs
* with such profiles for latency sensitive use cases such as camera preview is not
* recommended. Profiles that have such extra streaming delay are typically utilized for
* scenarios such as offscreen video recording.</p>
*
* @return true if the given profile is not suitable for latency sensitive use cases, false
* otherwise
* @throws IllegalArgumentException - If the profile argument is not
* within the list returned by
* getSupportedProfiles()
*
* @see OutputConfiguration#setDynamicRangeProfile
*/
public boolean isExtraLatencyPresent(@Profile long profile) {
Boolean ret = mLookahedLatencyMap.get(profile);
if (ret == null) {
throw new IllegalArgumentException("Unsupported profile!");
}
return ret;
}
}

View File

@@ -246,7 +246,7 @@ public final class MandatoryStreamCombination {
* @return true if stream is able to output 10-bit pixels
*
* @see android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
* @see OutputConfiguration#setDynamicRangeProfile(int)
* @see OutputConfiguration#setDynamicRangeProfile
*/
public boolean is10BitCapable() {
return mIs10BitCapable;

View File

@@ -421,7 +421,7 @@ public final class OutputConfiguration implements Parcelable {
* {@link android.media.MediaCodec} etc.)
* or {@link ImageFormat#YCBCR_P010}.</p>
*/
public void setDynamicRangeProfile(@Profile int profile) {
public void setDynamicRangeProfile(@Profile long profile) {
mDynamicRangeProfile = profile;
}
@@ -430,7 +430,7 @@ public final class OutputConfiguration implements Parcelable {
*
* @return the currently set dynamic range profile
*/
public @Profile int getDynamicRangeProfile() {
public @Profile long getDynamicRangeProfile() {
return mDynamicRangeProfile;
}
@@ -1070,7 +1070,7 @@ public final class OutputConfiguration implements Parcelable {
int streamUseCase = source.readInt();
checkArgumentInRange(rotation, ROTATION_0, ROTATION_270, "Rotation constant");
int dynamicRangeProfile = source.readInt();
long dynamicRangeProfile = source.readLong();
DynamicRangeProfiles.checkProfileValue(dynamicRangeProfile);
int timestampBase = source.readInt();
@@ -1217,7 +1217,7 @@ public final class OutputConfiguration implements Parcelable {
dest.writeInt(mIsMultiResolution ? 1 : 0);
// writeList doesn't seem to work well with Integer list.
dest.writeIntArray(convertIntegerToIntList(mSensorPixelModesUsed));
dest.writeInt(mDynamicRangeProfile);
dest.writeLong(mDynamicRangeProfile);
dest.writeInt(mStreamUseCase);
dest.writeInt(mTimestampBase);
dest.writeInt(mMirrorMode);
@@ -1335,7 +1335,7 @@ public final class OutputConfiguration implements Parcelable {
// The sensor pixel modes that this OutputConfiguration will use
private ArrayList<Integer> mSensorPixelModesUsed;
// Dynamic range profile
private int mDynamicRangeProfile;
private long mDynamicRangeProfile;
// Stream use case
private int mStreamUseCase;
// Timestamp base

View File

@@ -64,7 +64,7 @@ message CameraStreamProto {
repeated int64 histogram_counts = 13;
// The dynamic range profile of the stream
optional int32 dynamic_range_profile = 14;
optional int64 dynamic_range_profile = 14;
// The stream use case
optional int32 stream_use_case = 15;
}