Add setDataSpace SurfaceControl API

Also change DataSpace from long to int (HAL & native are both ints)

Bug: 217776226
Fixes: 218320444
Test: make && SurfaceControlTest#testSurfaceTransaction_setDataSpace
Change-Id: Ic2b9ccb1d0ba3c1d049839310b4fef0881a3d2e2
diff --git a/core/api/current.txt b/core/api/current.txt
index 058861a..3614597 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -15459,7 +15459,7 @@
     ctor public SurfaceTexture(boolean);
     method public void attachToGLContext(int);
     method public void detachFromGLContext();
-    method public long getDataSpace();
+    method public int getDataSpace();
     method public long getTimestamp();
     method public void getTransformMatrix(float[]);
     method public boolean isReleased();
@@ -16694,49 +16694,49 @@
   }
 
   public final class DataSpace {
-    method public static long getRange(long);
-    method public static long getStandard(long);
-    method public static long getTransfer(long);
-    method public static long pack(long, long, long);
-    field public static final long DATASPACE_ADOBE_RGB = 151715840L; // 0x90b0000L
-    field public static final long DATASPACE_BT2020 = 147193856L; // 0x8c60000L
-    field public static final long DATASPACE_BT2020_PQ = 163971072L; // 0x9c60000L
-    field public static final long DATASPACE_BT601_525 = 281280512L; // 0x10c40000L
-    field public static final long DATASPACE_BT601_625 = 281149440L; // 0x10c20000L
-    field public static final long DATASPACE_BT709 = 281083904L; // 0x10c10000L
-    field public static final long DATASPACE_DCI_P3 = 155844608L; // 0x94a0000L
-    field public static final long DATASPACE_DISPLAY_P3 = 143261696L; // 0x88a0000L
-    field public static final long DATASPACE_JFIF = 146931712L; // 0x8c20000L
-    field public static final long DATASPACE_SCRGB = 411107328L; // 0x18810000L
-    field public static final long DATASPACE_SCRGB_LINEAR = 406913024L; // 0x18410000L
-    field public static final long DATASPACE_SRGB = 142671872L; // 0x8810000L
-    field public static final long DATASPACE_SRGB_LINEAR = 138477568L; // 0x8410000L
-    field public static final long DATASPACE_UNKNOWN = 0L; // 0x0L
-    field public static final long RANGE_EXTENDED = 402653184L; // 0x18000000L
-    field public static final long RANGE_FULL = 134217728L; // 0x8000000L
-    field public static final long RANGE_LIMITED = 268435456L; // 0x10000000L
-    field public static final long RANGE_UNSPECIFIED = 0L; // 0x0L
-    field public static final long STANDARD_ADOBE_RGB = 720896L; // 0xb0000L
-    field public static final long STANDARD_BT2020 = 393216L; // 0x60000L
-    field public static final long STANDARD_BT2020_CONSTANT_LUMINANCE = 458752L; // 0x70000L
-    field public static final long STANDARD_BT470M = 524288L; // 0x80000L
-    field public static final long STANDARD_BT601_525 = 262144L; // 0x40000L
-    field public static final long STANDARD_BT601_525_UNADJUSTED = 327680L; // 0x50000L
-    field public static final long STANDARD_BT601_625 = 131072L; // 0x20000L
-    field public static final long STANDARD_BT601_625_UNADJUSTED = 196608L; // 0x30000L
-    field public static final long STANDARD_BT709 = 65536L; // 0x10000L
-    field public static final long STANDARD_DCI_P3 = 655360L; // 0xa0000L
-    field public static final long STANDARD_FILM = 589824L; // 0x90000L
-    field public static final long STANDARD_UNSPECIFIED = 0L; // 0x0L
-    field public static final long TRANSFER_GAMMA2_2 = 16777216L; // 0x1000000L
-    field public static final long TRANSFER_GAMMA2_6 = 20971520L; // 0x1400000L
-    field public static final long TRANSFER_GAMMA2_8 = 25165824L; // 0x1800000L
-    field public static final long TRANSFER_HLG = 33554432L; // 0x2000000L
-    field public static final long TRANSFER_LINEAR = 4194304L; // 0x400000L
-    field public static final long TRANSFER_SMPTE_170M = 12582912L; // 0xc00000L
-    field public static final long TRANSFER_SRGB = 8388608L; // 0x800000L
-    field public static final long TRANSFER_ST2084 = 29360128L; // 0x1c00000L
-    field public static final long TRANSFER_UNSPECIFIED = 0L; // 0x0L
+    method public static int getRange(int);
+    method public static int getStandard(int);
+    method public static int getTransfer(int);
+    method public static int pack(int, int, int);
+    field public static final int DATASPACE_ADOBE_RGB = 151715840; // 0x90b0000
+    field public static final int DATASPACE_BT2020 = 147193856; // 0x8c60000
+    field public static final int DATASPACE_BT2020_PQ = 163971072; // 0x9c60000
+    field public static final int DATASPACE_BT601_525 = 281280512; // 0x10c40000
+    field public static final int DATASPACE_BT601_625 = 281149440; // 0x10c20000
+    field public static final int DATASPACE_BT709 = 281083904; // 0x10c10000
+    field public static final int DATASPACE_DCI_P3 = 155844608; // 0x94a0000
+    field public static final int DATASPACE_DISPLAY_P3 = 143261696; // 0x88a0000
+    field public static final int DATASPACE_JFIF = 146931712; // 0x8c20000
+    field public static final int DATASPACE_SCRGB = 411107328; // 0x18810000
+    field public static final int DATASPACE_SCRGB_LINEAR = 406913024; // 0x18410000
+    field public static final int DATASPACE_SRGB = 142671872; // 0x8810000
+    field public static final int DATASPACE_SRGB_LINEAR = 138477568; // 0x8410000
+    field public static final int DATASPACE_UNKNOWN = 0; // 0x0
+    field public static final int RANGE_EXTENDED = 402653184; // 0x18000000
+    field public static final int RANGE_FULL = 134217728; // 0x8000000
+    field public static final int RANGE_LIMITED = 268435456; // 0x10000000
+    field public static final int RANGE_UNSPECIFIED = 0; // 0x0
+    field public static final int STANDARD_ADOBE_RGB = 720896; // 0xb0000
+    field public static final int STANDARD_BT2020 = 393216; // 0x60000
+    field public static final int STANDARD_BT2020_CONSTANT_LUMINANCE = 458752; // 0x70000
+    field public static final int STANDARD_BT470M = 524288; // 0x80000
+    field public static final int STANDARD_BT601_525 = 262144; // 0x40000
+    field public static final int STANDARD_BT601_525_UNADJUSTED = 327680; // 0x50000
+    field public static final int STANDARD_BT601_625 = 131072; // 0x20000
+    field public static final int STANDARD_BT601_625_UNADJUSTED = 196608; // 0x30000
+    field public static final int STANDARD_BT709 = 65536; // 0x10000
+    field public static final int STANDARD_DCI_P3 = 655360; // 0xa0000
+    field public static final int STANDARD_FILM = 589824; // 0x90000
+    field public static final int STANDARD_UNSPECIFIED = 0; // 0x0
+    field public static final int TRANSFER_GAMMA2_2 = 16777216; // 0x1000000
+    field public static final int TRANSFER_GAMMA2_6 = 20971520; // 0x1400000
+    field public static final int TRANSFER_GAMMA2_8 = 25165824; // 0x1800000
+    field public static final int TRANSFER_HLG = 33554432; // 0x2000000
+    field public static final int TRANSFER_LINEAR = 4194304; // 0x400000
+    field public static final int TRANSFER_SMPTE_170M = 12582912; // 0xc00000
+    field public static final int TRANSFER_SRGB = 8388608; // 0x800000
+    field public static final int TRANSFER_ST2084 = 29360128; // 0x1c00000
+    field public static final int TRANSFER_UNSPECIFIED = 0; // 0x0
   }
 
   public class GeomagneticField {
@@ -20836,7 +20836,7 @@
   public abstract class Image implements java.lang.AutoCloseable {
     method public abstract void close();
     method public android.graphics.Rect getCropRect();
-    method public long getDataSpace();
+    method public int getDataSpace();
     method @NonNull public android.hardware.SyncFence getFence() throws java.io.IOException;
     method public abstract int getFormat();
     method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
@@ -20845,7 +20845,7 @@
     method public abstract long getTimestamp();
     method public abstract int getWidth();
     method public void setCropRect(android.graphics.Rect);
-    method public void setDataSpace(long);
+    method public void setDataSpace(int);
     method public void setFence(@NonNull android.hardware.SyncFence) throws java.io.IOException;
     method public void setTimestamp(long);
   }
@@ -20861,7 +20861,7 @@
     method public android.media.Image acquireNextImage();
     method public void close();
     method public void discardFreeBuffers();
-    method public long getDataSpace();
+    method public int getDataSpace();
     method public int getHardwareBufferFormat();
     method public int getHeight();
     method public int getImageFormat();
@@ -20877,7 +20877,7 @@
   public static final class ImageReader.Builder {
     ctor public ImageReader.Builder(@IntRange(from=1) int, @IntRange(from=1) int);
     method @NonNull public android.media.ImageReader build();
-    method @NonNull public android.media.ImageReader.Builder setDefaultDataSpace(long);
+    method @NonNull public android.media.ImageReader.Builder setDefaultDataSpace(int);
     method @NonNull public android.media.ImageReader.Builder setDefaultHardwareBufferFormat(int);
     method @NonNull public android.media.ImageReader.Builder setImageFormat(int);
     method @NonNull public android.media.ImageReader.Builder setMaxImages(int);
@@ -20891,7 +20891,7 @@
   public class ImageWriter implements java.lang.AutoCloseable {
     method public void close();
     method public android.media.Image dequeueInputImage();
-    method public long getDataSpace();
+    method public int getDataSpace();
     method public int getFormat();
     method public int getHardwareBufferFormat();
     method public int getHeight();
@@ -20907,7 +20907,7 @@
   public static final class ImageWriter.Builder {
     ctor public ImageWriter.Builder(@NonNull android.view.Surface);
     method @NonNull public android.media.ImageWriter build();
-    method @NonNull public android.media.ImageWriter.Builder setDataSpace(long);
+    method @NonNull public android.media.ImageWriter.Builder setDataSpace(int);
     method @NonNull public android.media.ImageWriter.Builder setHardwareBufferFormat(int);
     method @NonNull public android.media.ImageWriter.Builder setImageFormat(int);
     method @NonNull public android.media.ImageWriter.Builder setMaxImages(@IntRange(from=1) int);
@@ -49166,6 +49166,7 @@
     method @NonNull public android.view.SurfaceControl.Transaction setBufferTransform(@NonNull android.view.SurfaceControl, int);
     method @NonNull public android.view.SurfaceControl.Transaction setCrop(@NonNull android.view.SurfaceControl, @Nullable android.graphics.Rect);
     method @NonNull public android.view.SurfaceControl.Transaction setDamageRegion(@NonNull android.view.SurfaceControl, @Nullable android.graphics.Region);
+    method @NonNull public android.view.SurfaceControl.Transaction setDataSpace(@NonNull android.view.SurfaceControl, int);
     method @NonNull public android.view.SurfaceControl.Transaction setFrameRate(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0) float, int);
     method @NonNull public android.view.SurfaceControl.Transaction setFrameRate(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0) float, int, int);
     method @NonNull public android.view.SurfaceControl.Transaction setGeometry(@NonNull android.view.SurfaceControl, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, int);
diff --git a/core/java/android/hardware/DataSpace.java b/core/java/android/hardware/DataSpace.java
index 65383c5..4411918 100644
--- a/core/java/android/hardware/DataSpace.java
+++ b/core/java/android/hardware/DataSpace.java
@@ -15,7 +15,7 @@
  */
 package android.hardware;
 
-import android.annotation.LongDef;
+import android.annotation.IntDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -62,7 +62,7 @@
 public final class DataSpace {
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
-    @LongDef(flag = true, value = {
+    @IntDef(flag = true, value = {
         STANDARD_UNSPECIFIED,
         STANDARD_BT709,
         STANDARD_BT601_625,
@@ -78,12 +78,12 @@
     })
     public @interface DataSpaceStandard {};
 
-    private static final long STANDARD_MASK = 63 << 16;
+    private static final int STANDARD_MASK = 63 << 16;
 
     /**
      * Chromacity coordinates are unknown or are determined by the application.
      */
-    public static final long STANDARD_UNSPECIFIED  = 0 << 16;
+    public static final int STANDARD_UNSPECIFIED  = 0 << 16;
     /**
      * Use the unadjusted {@code KR = 0.2126}, {@code KB = 0.0722} luminance interpretation
      * for RGB conversion.
@@ -95,7 +95,7 @@
      *  red             0.640   0.330
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT709 = 1 << 16;
+    public static final int STANDARD_BT709 = 1 << 16;
     /**
      * Use the adjusted {@code KR = 0.299}, {@code KB = 0.114} luminance interpretation
      * for RGB conversion from the one purely determined by the primaries
@@ -109,7 +109,7 @@
      *  red             0.640   0.330
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT601_625 = 2 << 16;
+    public static final int STANDARD_BT601_625 = 2 << 16;
     /**
      * Use the unadjusted {@code KR = 0.222}, {@code KB = 0.071} luminance interpretation
      * for RGB conversion.
@@ -121,7 +121,7 @@
      *  red             0.640   0.330
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT601_625_UNADJUSTED = 3 << 16;
+    public static final int STANDARD_BT601_625_UNADJUSTED = 3 << 16;
     /**
      * Use the adjusted {@code KR = 0.299}, {@code KB = 0.114} luminance interpretation
      * for RGB conversion from the one purely determined by the primaries
@@ -135,7 +135,7 @@
      *  red             0.630   0.340
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT601_525 = 4 << 16;
+    public static final int STANDARD_BT601_525 = 4 << 16;
     /**
      * Use the unadjusted {@code KR = 0.212}, {@code KB = 0.087} luminance interpretation
      * for RGB conversion (as in SMPTE 240M).
@@ -147,7 +147,7 @@
      *  red             0.630   0.340
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT601_525_UNADJUSTED = 5 << 16;
+    public static final int STANDARD_BT601_525_UNADJUSTED = 5 << 16;
     /**
      * Use the unadjusted {@code KR = 0.2627}, {@code KB = 0.0593} luminance interpretation
      * for RGB conversion.
@@ -159,7 +159,7 @@
      *  red             0.708   0.292
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT2020 = 6 << 16;
+    public static final int STANDARD_BT2020 = 6 << 16;
     /**
      * Use the unadjusted {@code KR = 0.2627}, {@code KB = 0.0593} luminance interpretation
      * for RGB conversion using the linear domain.
@@ -171,7 +171,7 @@
      *  red             0.708   0.292
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_BT2020_CONSTANT_LUMINANCE = 7 << 16;
+    public static final int STANDARD_BT2020_CONSTANT_LUMINANCE = 7 << 16;
     /**
      * Use the unadjusted {@code KR = 0.30}, {@code KB = 0.11} luminance interpretation
      * for RGB conversion.
@@ -183,7 +183,7 @@
      *  red             0.67   0.33
      *  white (C)       0.310  0.316 </pre>
      */
-    public static final long STANDARD_BT470M = 8 << 16;
+    public static final int STANDARD_BT470M = 8 << 16;
     /**
      * Use the unadjusted {@code KR = 0.254}, {@code KB = 0.068} luminance interpretation
      * for RGB conversion.
@@ -195,7 +195,7 @@
      *  red             0.681   0.319
      *  white (C)       0.310   0.316 </pre>
      */
-    public static final long STANDARD_FILM = 9 << 16;
+    public static final int STANDARD_FILM = 9 << 16;
     /**
      * SMPTE EG 432-1 and SMPTE RP 431-2.
      *
@@ -206,7 +206,7 @@
      *  red             0.680   0.320
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_DCI_P3 = 10 << 16;
+    public static final int STANDARD_DCI_P3 = 10 << 16;
     /**
      * Adobe RGB primaries.
      *
@@ -217,11 +217,11 @@
      *  red             0.640   0.330
      *  white (D65)     0.3127  0.3290 </pre>
      */
-    public static final long STANDARD_ADOBE_RGB = 11 << 16;
+    public static final int STANDARD_ADOBE_RGB = 11 << 16;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
-    @LongDef(flag = true, value = {
+    @IntDef(flag = true, value = {
         TRANSFER_UNSPECIFIED,
         TRANSFER_LINEAR,
         TRANSFER_SRGB,
@@ -234,13 +234,13 @@
     })
     public @interface DataSpaceTransfer {};
 
-    private static final long TRANSFER_MASK = 31 << 22;
+    private static final int TRANSFER_MASK = 31 << 22;
 
     /**
      * Transfer characteristics are unknown or are determined by the
      * application.
      */
-    public static final long TRANSFER_UNSPECIFIED = 0 << 22;
+    public static final int TRANSFER_UNSPECIFIED = 0 << 22;
     /**
      * Linear transfer.
      *
@@ -250,7 +250,7 @@
      *      L - luminance of image 0 <= L <= 1 for conventional colorimetry
      *      E - corresponding electrical signal}</pre>
      */
-    public static final long TRANSFER_LINEAR = 1 << 22;
+    public static final int TRANSFER_LINEAR = 1 << 22;
     /**
      * sRGB transfer.
      *
@@ -263,7 +263,7 @@
      *
      * Use for RGB formats.
      */
-    public static final long TRANSFER_SRGB = 2 << 22;
+    public static final int TRANSFER_SRGB = 2 << 22;
     /**
      * SMPTE 170M transfer.
      *
@@ -276,7 +276,7 @@
      *
      * Use for YCbCr formats.
      */
-    public static final long TRANSFER_SMPTE_170M = 3 << 22;
+    public static final int TRANSFER_SMPTE_170M = 3 << 22;
     /**
      * Display gamma 2.2.
      *
@@ -286,7 +286,7 @@
      *     L - luminance of image 0 <= L <= 1 for conventional colorimetry
      *     E - corresponding electrical signal}</pre>
      */
-    public static final long TRANSFER_GAMMA2_2 = 4 << 22;
+    public static final int TRANSFER_GAMMA2_2 = 4 << 22;
     /**
      *  Display gamma 2.6.
      *
@@ -296,7 +296,7 @@
      *     L - luminance of image 0 <= L <= 1 for conventional colorimetry
      *     E - corresponding electrical signal}</pre>
      */
-    public static final long TRANSFER_GAMMA2_6 = 5 << 22;
+    public static final int TRANSFER_GAMMA2_6 = 5 << 22;
     /**
      *  Display gamma 2.8.
      *
@@ -306,7 +306,7 @@
      *     L - luminance of image 0 <= L <= 1 for conventional colorimetry
      *     E - corresponding electrical signal}</pre>
      */
-    public static final long TRANSFER_GAMMA2_8 = 6 << 22;
+    public static final int TRANSFER_GAMMA2_8 = 6 << 22;
     /**
      * SMPTE ST 2084 (Dolby Perceptual Quantizer).
      *
@@ -322,7 +322,7 @@
      *         L = 1 corresponds to 10000 cd/m2
      *     E - corresponding electrical signal}</pre>
      */
-    public static final long TRANSFER_ST2084 = 7 << 22;
+    public static final int TRANSFER_ST2084 = 7 << 22;
     /**
      * ARIB STD-B67 Hybrid Log Gamma.
      *
@@ -338,11 +338,11 @@
      *         to reference white level of 100 cd/m2
      *     E - corresponding electrical signal}</pre>
      */
-    public static final long TRANSFER_HLG = 8 << 22;
+    public static final int TRANSFER_HLG = 8 << 22;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
-    @LongDef(flag = true, value = {
+    @IntDef(flag = true, value = {
         RANGE_UNSPECIFIED,
         RANGE_FULL,
         RANGE_LIMITED,
@@ -350,17 +350,17 @@
     })
     public @interface DataSpaceRange {};
 
-    private static final long RANGE_MASK = 7 << 27;
+    private static final int RANGE_MASK = 7 << 27;
 
     /**
      * Range characteristics are unknown or are determined by the application.
      */
-    public static final long RANGE_UNSPECIFIED = 0 << 27;
+    public static final int RANGE_UNSPECIFIED = 0 << 27;
     /**
      * Full range uses all values for Y, Cb and Cr from
      * {@code 0} to {@code 2^b-1}, where b is the bit depth of the color format.
      */
-    public static final long RANGE_FULL = 1 << 27;
+    public static final int RANGE_FULL = 1 << 27;
     /**
      * Limited range uses values {@code 16/256*2^b} to {@code 235/256*2^b} for Y, and
      * {@code 1/16*2^b} to {@code 15/16*2^b} for Cb, Cr, R, G and B, where b is the bit depth of
@@ -374,7 +374,7 @@
      * Luma (Y) samples should range from 64 to 940, inclusive
      * Chroma (Cb, Cr) samples should range from 64 to 960, inclusive. </p>
      */
-    public static final long RANGE_LIMITED = 2 << 27;
+    public static final int RANGE_LIMITED = 2 << 27;
     /**
      * Extended range is used for scRGB only.
      *
@@ -383,11 +383,11 @@
      * color outside the sRGB gamut. [-0.5, 7.5] is the scRGB range.
      * Used to blend/merge multiple dataspaces on a single display.</p>
      */
-    public static final long RANGE_EXTENDED = 3 << 27;
+    public static final int RANGE_EXTENDED = 3 << 27;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
-    @LongDef(flag = true, value = {
+    @IntDef(flag = true, value = {
         DATASPACE_UNKNOWN,
         DATASPACE_SCRGB_LINEAR,
         DATASPACE_SRGB,
@@ -414,7 +414,7 @@
      * expected, except for a possible display gamma transform when drawn to a
      * screen.</p>
      */
-    public static final long DATASPACE_UNKNOWN = 0;
+    public static final int DATASPACE_UNKNOWN = 0;
     /**
      * scRGB linear encoding.
      *
@@ -429,7 +429,7 @@
      * Values beyond the range [0.0 - 1.0] would correspond to other colors
      * spaces and/or HDR content.
      */
-    public static final long DATASPACE_SCRGB_LINEAR = 406913024;
+    public static final int DATASPACE_SCRGB_LINEAR = 406913024;
     /**
      * sRGB gamma encoding.
      *
@@ -444,7 +444,7 @@
      * The alpha component, if present, is always stored in linear space and
      * is left unmodified when read or written.
      */
-    public static final long DATASPACE_SRGB = 142671872;
+    public static final int DATASPACE_SRGB = 142671872;
     /**
      * scRGB gamma encoding.
      *
@@ -460,7 +460,7 @@
      * Values beyond the range [0.0 - 1.0] would correspond to other colors
      * spaces and/or HDR content.
      */
-    public static final long DATASPACE_SCRGB = 411107328;
+    public static final int DATASPACE_SCRGB = 411107328;
     /**
      * Display P3 encoding.
      *
@@ -470,7 +470,7 @@
      *   Transfer: TRANSFER_SRGB
      *   Range: RANGE_FULL</pre>
      */
-    public static final long DATASPACE_DISPLAY_P3 = 143261696;
+    public static final int DATASPACE_DISPLAY_P3 = 143261696;
     /**
      * ITU-R Recommendation 2020 (BT.2020)
      *
@@ -482,7 +482,7 @@
      *   Transfer: TRANSFER_ST2084
      *   Range: RANGE_FULL</pre>
      */
-    public static final long DATASPACE_BT2020_PQ = 163971072;
+    public static final int DATASPACE_BT2020_PQ = 163971072;
     /**
      * Adobe RGB encoding.
      *
@@ -494,7 +494,7 @@
      *
      * Note: Application is responsible for gamma encoding the data.
      */
-    public static final long DATASPACE_ADOBE_RGB = 151715840;
+    public static final int DATASPACE_ADOBE_RGB = 151715840;
     /**
      * JPEG File Interchange Format (JFIF).
      *
@@ -506,7 +506,7 @@
      *
      * Same model as BT.601-625, but all values (Y, Cb, Cr) range from {@code 0} to {@code 255}
      */
-    public static final long DATASPACE_JFIF = 146931712;
+    public static final int DATASPACE_JFIF = 146931712;
     /**
      * ITU-R Recommendation 601 (BT.601) - 525-line
      *
@@ -518,7 +518,7 @@
      *   Transfer: TRANSFER_SMPTE_170M
      *   Range: RANGE_LIMITED</pre>
      */
-    public static final long DATASPACE_BT601_625 = 281149440;
+    public static final int DATASPACE_BT601_625 = 281149440;
     /**
      * ITU-R Recommendation 709 (BT.709)
      *
@@ -530,7 +530,7 @@
      *   Transfer: TRANSFER_SMPTE_170M
      *   Range: RANGE_LIMITED</pre>
      */
-    public static final long DATASPACE_BT601_525 = 281280512;
+    public static final int DATASPACE_BT601_525 = 281280512;
     /**
      * ITU-R Recommendation 2020 (BT.2020)
      *
@@ -542,7 +542,7 @@
      *   Transfer: TRANSFER_SMPTE_170M
      *   Range: RANGE_FULL</pre>
      */
-    public static final long DATASPACE_BT2020 = 147193856;
+    public static final int DATASPACE_BT2020 = 147193856;
     /**
      * ITU-R Recommendation 709 (BT.709)
      *
@@ -554,7 +554,7 @@
      *   Transfer: TRANSFER_SMPTE_170M
      *   Range: RANGE_LIMITED</pre>
      */
-    public static final long DATASPACE_BT709 = 281083904;
+    public static final int DATASPACE_BT709 = 281083904;
     /**
      * SMPTE EG 432-1 and SMPTE RP 431-2
      *
@@ -569,7 +569,7 @@
      * Note: Application is responsible for gamma encoding the data as
      * a 2.6 gamma encoding is not supported in HW.
      */
-    public static final long DATASPACE_DCI_P3 = 155844608;
+    public static final int DATASPACE_DCI_P3 = 155844608;
     /**
      * sRGB linear encoding.
      *
@@ -582,7 +582,7 @@
      * The values are encoded using the full range ([0,255] for 8-bit) for all
      * components.
      */
-    public static final long DATASPACE_SRGB_LINEAR = 138477568;
+    public static final int DATASPACE_SRGB_LINEAR = 138477568;
 
     private DataSpace() {}
 
@@ -594,11 +594,11 @@
      * @param transfer Opto-electronic transfer characteristic at the source
      * @param range The range of values
      *
-     * @return The long dataspace packed by standard, transfer and range value
+     * @return The int dataspace packed by standard, transfer and range value
      */
-    public static @NamedDataSpace long pack(@DataSpaceStandard long standard,
-                                        @DataSpaceTransfer long transfer,
-                                        @DataSpaceRange long range) {
+    public static @NamedDataSpace int pack(@DataSpaceStandard int standard,
+                                        @DataSpaceTransfer int transfer,
+                                        @DataSpaceRange int range) {
         if ((standard & STANDARD_MASK) != standard) {
             throw new IllegalArgumentException("Invalid standard " + standard);
         }
@@ -618,8 +618,8 @@
      *
      * @return The standard aspect
      */
-    public static @DataSpaceStandard long getStandard(@NamedDataSpace long dataSpace) {
-        @DataSpaceStandard long standard = dataSpace & STANDARD_MASK;
+    public static @DataSpaceStandard int getStandard(@NamedDataSpace int dataSpace) {
+        @DataSpaceStandard int standard = dataSpace & STANDARD_MASK;
         return standard;
     }
 
@@ -630,8 +630,8 @@
      *
      * @return The transfer aspect
      */
-    public static @DataSpaceTransfer long getTransfer(@NamedDataSpace long dataSpace) {
-        @DataSpaceTransfer long transfer = dataSpace & TRANSFER_MASK;
+    public static @DataSpaceTransfer int getTransfer(@NamedDataSpace int dataSpace) {
+        @DataSpaceTransfer int transfer = dataSpace & TRANSFER_MASK;
         return transfer;
     }
 
@@ -642,8 +642,8 @@
      *
      * @return The range aspect
      */
-    public static @DataSpaceRange long getRange(@NamedDataSpace long dataSpace) {
-        @DataSpaceRange long range = dataSpace & RANGE_MASK;
+    public static @DataSpaceRange int getRange(@NamedDataSpace int dataSpace) {
+        @DataSpaceRange int range = dataSpace & RANGE_MASK;
         return range;
     }
 }
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 8f8c5a9..7f115fa 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -44,6 +44,7 @@
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.gui.DropInputMode;
+import android.hardware.DataSpace;
 import android.hardware.HardwareBuffer;
 import android.hardware.display.DeviceProductInfo;
 import android.hardware.display.DisplayedContentSample;
@@ -210,8 +211,8 @@
             HardwareBuffer buffer);
     private static native void nativeSetBufferTransform(long transactionObj, long nativeObject,
             int transform);
-    private static native void nativeSetColorSpace(long transactionObj, long nativeObject,
-            int colorSpace);
+    private static native void nativeSetDataSpace(long transactionObj, long nativeObject,
+            @DataSpace.NamedDataSpace int dataSpace);
     private static native void nativeSetDamageRegion(long transactionObj, long nativeObject,
             Region region);
 
@@ -3719,10 +3720,31 @@
          * SurfaceControls that were created as type {@link #FX_SURFACE_BLAST}
          *
          * @hide
+         * @deprecated use {@link #setDataSpace(SurfaceControl, long)} instead
          */
+        @Deprecated
         public Transaction setColorSpace(SurfaceControl sc, ColorSpace colorSpace) {
             checkPreconditions(sc);
-            nativeSetColorSpace(mNativeObject, sc.mNativeObject, colorSpace.getId());
+            if (colorSpace.getId() == ColorSpace.Named.DCI_P3.ordinal()) {
+                setDataSpace(sc, DataSpace.DATASPACE_DCI_P3);
+            } else {
+                setDataSpace(sc, DataSpace.DATASPACE_SRGB);
+            }
+            return this;
+        }
+
+        /**
+         * Set the dataspace for the SurfaceControl. This will control how the buffer
+         * set with {@link #setBuffer(SurfaceControl, HardwareBuffer)} is displayed.
+         *
+         * @param sc The SurfaceControl to update
+         * @param dataspace The dataspace to set it to
+         * @return this
+         */
+        public @NonNull Transaction setDataSpace(@NonNull SurfaceControl sc,
+                @DataSpace.NamedDataSpace int dataspace) {
+            checkPreconditions(sc);
+            nativeSetDataSpace(mNativeObject, sc.mNativeObject, dataspace);
             return this;
         }
 
diff --git a/core/jni/android_graphics_SurfaceTexture.cpp b/core/jni/android_graphics_SurfaceTexture.cpp
index 0f647ea..21487ab 100644
--- a/core/jni/android_graphics_SurfaceTexture.cpp
+++ b/core/jni/android_graphics_SurfaceTexture.cpp
@@ -346,7 +346,7 @@
     return surfaceTexture->getTimestamp();
 }
 
-static jlong SurfaceTexture_getDataSpace(JNIEnv* env, jobject thiz) {
+static jint SurfaceTexture_getDataSpace(JNIEnv* env, jobject thiz) {
     sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
     return surfaceTexture->getCurrentDataSpace();
 }
@@ -375,7 +375,7 @@
         {"nativeAttachToGLContext", "(I)I", (void*)SurfaceTexture_attachToGLContext},
         {"nativeGetTransformMatrix", "([F)V", (void*)SurfaceTexture_getTransformMatrix},
         {"nativeGetTimestamp", "()J", (void*)SurfaceTexture_getTimestamp},
-        {"nativeGetDataSpace", "()J", (void*)SurfaceTexture_getDataSpace},
+        {"nativeGetDataSpace", "()I", (void*)SurfaceTexture_getDataSpace},
         {"nativeRelease", "()V", (void*)SurfaceTexture_release},
         {"nativeIsReleased", "()Z", (void*)SurfaceTexture_isReleased},
 };
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 1033efa5..2488b57 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -263,15 +263,6 @@
     }
 }
 
-constexpr ui::Dataspace fromNamedColorSpaceValueToDataspace(const jint colorSpace) {
-    switch (colorSpace) {
-        case JNamedColorSpace::DISPLAY_P3:
-            return ui::Dataspace::DISPLAY_P3;
-        default:
-            return ui::Dataspace::V0_SRGB;
-    }
-}
-
 constexpr ui::Dataspace pickDataspaceFromColorMode(const ui::ColorMode colorMode) {
     switch (colorMode) {
         case ui::ColorMode::DISPLAY_P3:
@@ -645,11 +636,11 @@
     transaction->setTransformToDisplayInverse(ctrl, transformToInverseDisplay);
 }
 
-static void nativeSetColorSpace(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject,
-                                jint colorSpace) {
+static void nativeSetDataSpace(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject,
+                               jint dataSpace) {
     auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
     SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject);
-    ui::Dataspace dataspace = fromNamedColorSpaceValueToDataspace(colorSpace);
+    ui::Dataspace dataspace = static_cast<ui::Dataspace>(dataSpace);
     transaction->setDataspace(ctrl, dataspace);
 }
 
@@ -2122,8 +2113,8 @@
     {"nativeSetBuffer", "(JJLandroid/hardware/HardwareBuffer;)V",
             (void*)nativeSetBuffer },
     {"nativeSetBufferTransform", "(JJI)V", (void*) nativeSetBufferTransform},
-    {"nativeSetColorSpace", "(JJI)V",
-            (void*)nativeSetColorSpace },
+    {"nativeSetDataSpace", "(JJI)V",
+            (void*)nativeSetDataSpace },
     {"nativeSyncInputWindows", "(J)V",
             (void*)nativeSyncInputWindows },
     {"nativeGetDisplayBrightnessSupport", "(Landroid/os/IBinder;)Z",
diff --git a/graphics/java/android/graphics/SurfaceTexture.java b/graphics/java/android/graphics/SurfaceTexture.java
index d84a24d..ee41148 100644
--- a/graphics/java/android/graphics/SurfaceTexture.java
+++ b/graphics/java/android/graphics/SurfaceTexture.java
@@ -353,7 +353,7 @@
      * Retrieve the dataspace associated with the texture image.
      */
     @SuppressLint("MethodNameUnits")
-    public @NamedDataSpace long getDataSpace() {
+    public @NamedDataSpace int getDataSpace() {
         return nativeGetDataSpace();
     }
 
@@ -426,7 +426,7 @@
     private native void nativeFinalize();
     private native void nativeGetTransformMatrix(float[] mtx);
     private native long nativeGetTimestamp();
-    private native long nativeGetDataSpace();
+    private native int nativeGetDataSpace();
     private native void nativeSetDefaultBufferSize(int width, int height);
     private native void nativeUpdateTexImage();
     private native void nativeReleaseTexImage();
diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java
index cf1aac0..8a03afb 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -302,13 +302,13 @@
         return;
     }
 
-    private @NamedDataSpace long mDataSpace = DataSpace.DATASPACE_UNKNOWN;
+    private @NamedDataSpace int mDataSpace = DataSpace.DATASPACE_UNKNOWN;
 
     /**
      * Get the dataspace associated with this frame.
      */
     @SuppressLint("MethodNameUnits")
-    public @NamedDataSpace long getDataSpace() {
+    public @NamedDataSpace int getDataSpace() {
         throwISEIfImageIsInvalid();
         return mDataSpace;
     }
@@ -322,7 +322,7 @@
      *
      * @param dataSpace The Dataspace to be set for this image
      */
-    public void setDataSpace(@NamedDataSpace long dataSpace) {
+    public void setDataSpace(@NamedDataSpace int dataSpace) {
         throwISEIfImageIsInvalid();
         mDataSpace = dataSpace;
     }
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index c9bda48..70d6810 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -277,7 +277,7 @@
     }
 
     private void initializeImageReader(int width, int height, int imageFormat, int maxImages,
-            long usage, int hardwareBufferFormat, long dataSpace, boolean useLegacyImageFormat) {
+            long usage, int hardwareBufferFormat, int dataSpace, boolean useLegacyImageFormat) {
         if (width < 1 || height < 1) {
             throw new IllegalArgumentException(
                 "The image dimensions must be positive");
@@ -330,7 +330,7 @@
     }
 
     private ImageReader(int width, int height, int maxImages, long usage,
-            MultiResolutionImageReader parent, int hardwareBufferFormat, long dataSpace) {
+            MultiResolutionImageReader parent, int hardwareBufferFormat, int dataSpace) {
         mWidth = width;
         mHeight = height;
         mFormat = ImageFormat.UNKNOWN; // set default image format value as UNKNOWN
@@ -417,7 +417,7 @@
      * @return the expected dataspace of an Image.
      */
     @SuppressLint("MethodNameUnits")
-    public @NamedDataSpace long getDataSpace() {
+    public @NamedDataSpace int getDataSpace() {
         return mDataSpace;
     }
 
@@ -925,7 +925,7 @@
         private int mMaxImages = 1;
         private int mImageFormat = ImageFormat.UNKNOWN;
         private int mHardwareBufferFormat = HardwareBuffer.RGBA_8888;
-        private long mDataSpace = DataSpace.DATASPACE_UNKNOWN;
+        private int mDataSpace = DataSpace.DATASPACE_UNKNOWN;
         private long mUsage = HardwareBuffer.USAGE_CPU_READ_OFTEN;
         private boolean mUseLegacyImageFormat = false;
 
@@ -1042,7 +1042,7 @@
          * @see #setDefaultHardwareBufferFormat
          */
         @SuppressLint("MissingGetterMatchingBuilder")
-        public @NonNull Builder setDefaultDataSpace(@NamedDataSpace long dataSpace) {
+        public @NonNull Builder setDefaultDataSpace(@NamedDataSpace int dataSpace) {
             mDataSpace = dataSpace;
             mUseLegacyImageFormat = false;
             mImageFormat = ImageFormat.UNKNOWN;
@@ -1089,7 +1089,7 @@
 
     private final int mHardwareBufferFormat;
 
-    private final long mDataSpace;
+    private final @NamedDataSpace int mDataSpace;
 
     private final boolean mUseLegacyImageFormat;
 
@@ -1131,7 +1131,7 @@
             mDataSpace = ImageReader.this.mDataSpace;
         }
 
-        SurfaceImage(int hardwareBufferFormat, long dataSpace) {
+        SurfaceImage(int hardwareBufferFormat, int dataSpace) {
             mHardwareBufferFormat = hardwareBufferFormat;
             mDataSpace = dataSpace;
             mFormat = PublicFormatUtils.getPublicFormat(mHardwareBufferFormat, mDataSpace);
@@ -1240,7 +1240,7 @@
         }
 
         @Override
-        public long getDataSpace() {
+        public @NamedDataSpace int getDataSpace() {
             throwISEIfImageIsInvalid();
             return mDataSpace;
         }
@@ -1383,7 +1383,7 @@
         private SurfacePlane[] mPlanes;
         private int mFormat = ImageFormat.UNKNOWN;
         private int mHardwareBufferFormat = HardwareBuffer.RGBA_8888;
-        private long mDataSpace = DataSpace.DATASPACE_UNKNOWN;
+        private int mDataSpace = DataSpace.DATASPACE_UNKNOWN;
         // If this image is detached from the ImageReader.
         private AtomicBoolean mIsDetached = new AtomicBoolean(false);
 
@@ -1397,7 +1397,7 @@
     }
 
     private synchronized native void nativeInit(Object weakSelf, int w, int h, int maxImgs,
-            long consumerUsage, int hardwareBufferFormat, long dataSpace);
+            long consumerUsage, int hardwareBufferFormat, int dataSpace);
     private synchronized native void nativeClose();
     private synchronized native void nativeReleaseImage(Image i);
     private synchronized native Surface nativeGetSurface();
diff --git a/media/java/android/media/ImageWriter.java b/media/java/android/media/ImageWriter.java
index 5c3f918..e0f04a1 100644
--- a/media/java/android/media/ImageWriter.java
+++ b/media/java/android/media/ImageWriter.java
@@ -107,7 +107,7 @@
     private final int mMaxImages;
     private long mUsage = HardwareBuffer.USAGE_CPU_WRITE_OFTEN;
     private @HardwareBuffer.Format int mHardwareBufferFormat;
-    private @NamedDataSpace long mDataSpace;
+    private @NamedDataSpace int mDataSpace;
     private boolean mUseLegacyImageFormat;
 
     // Field below is used by native code, do not access or modify.
@@ -251,7 +251,7 @@
 
     private void initializeImageWriter(Surface surface, int maxImages,
             boolean useSurfaceImageFormatInfo, boolean useLegacyImageFormat, int imageFormat,
-            int hardwareBufferFormat, long dataSpace, int width, int height, long usage) {
+            int hardwareBufferFormat, int dataSpace, int width, int height, long usage) {
         if (surface == null || maxImages < 1) {
             throw new IllegalArgumentException("Illegal input argument: surface " + surface
                 + ", maxImages: " + maxImages);
@@ -331,7 +331,7 @@
     }
 
     private ImageWriter(Surface surface, int maxImages, boolean useSurfaceImageFormatInfo,
-            int hardwareBufferFormat, long dataSpace, int width, int height, long usage) {
+            int hardwareBufferFormat, int dataSpace, int width, int height, long usage) {
         mMaxImages = maxImages;
         mUsage = usage;
         mHardwareBufferFormat = hardwareBufferFormat;
@@ -601,7 +601,7 @@
      * @return The ImageWriter dataspace.
      */
     @SuppressLint("MethodNameUnits")
-    public @NamedDataSpace long getDataSpace() {
+    public @NamedDataSpace int getDataSpace() {
         return mDataSpace;
     }
 
@@ -882,7 +882,7 @@
         private int mImageFormat = ImageFormat.UNKNOWN;
         private long mUsage = -1;
         private @HardwareBuffer.Format int mHardwareBufferFormat = HardwareBuffer.RGBA_8888;
-        private @NamedDataSpace long mDataSpace = DataSpace.DATASPACE_UNKNOWN;
+        private @NamedDataSpace int mDataSpace = DataSpace.DATASPACE_UNKNOWN;
         private boolean mUseSurfaceImageFormatInfo = true;
         // set this as true temporarily now as a workaround to get correct format
         // when using surface format by default without overriding the image format
@@ -993,7 +993,7 @@
          *
          * @see #setHardwareBufferFormat
          */
-        public @NonNull Builder setDataSpace(@NamedDataSpace long dataSpace) {
+        public @NonNull Builder setDataSpace(@NamedDataSpace int dataSpace) {
             mDataSpace = dataSpace;
             mImageFormat = ImageFormat.UNKNOWN;
             mUseLegacyImageFormat = false;
@@ -1044,7 +1044,7 @@
         private int mHeight = -1;
         private int mWidth = -1;
         private int mFormat = -1;
-        private @NamedDataSpace long mDataSpace = DataSpace.DATASPACE_UNKNOWN;
+        private @NamedDataSpace int mDataSpace = DataSpace.DATASPACE_UNKNOWN;
         // When this default timestamp is used, timestamp for the input Image
         // will be generated automatically when queueInputBuffer is called.
         private final long DEFAULT_TIMESTAMP = Long.MIN_VALUE;
@@ -1066,14 +1066,14 @@
         }
 
         @Override
-        public @NamedDataSpace long getDataSpace() {
+        public @NamedDataSpace int getDataSpace() {
             throwISEIfImageIsInvalid();
 
             return mDataSpace;
         }
 
         @Override
-        public void setDataSpace(@NamedDataSpace long dataSpace) {
+        public void setDataSpace(@NamedDataSpace int dataSpace) {
             throwISEIfImageIsInvalid();
 
             mDataSpace = dataSpace;
@@ -1279,13 +1279,13 @@
 
         // Create the SurfacePlane object and fill the information
         private synchronized native SurfacePlane[] nativeCreatePlanes(int numPlanes, int writerFmt,
-                long dataSpace);
+                int dataSpace);
 
         private synchronized native int nativeGetWidth();
 
         private synchronized native int nativeGetHeight();
 
-        private synchronized native int nativeGetFormat(long dataSpace);
+        private synchronized native int nativeGetFormat(int dataSpace);
 
         private synchronized native HardwareBuffer nativeGetHardwareBuffer();
 
@@ -1295,21 +1295,21 @@
     // Native implemented ImageWriter methods.
     private synchronized native long nativeInit(Object weakSelf, Surface surface, int maxImages,
             int width, int height, boolean useSurfaceImageFormatInfo, int hardwareBufferFormat,
-            long dataSpace, long usage);
+            int dataSpace, long usage);
 
     private synchronized native void nativeClose(long nativeCtx);
 
     private synchronized native void nativeDequeueInputImage(long nativeCtx, Image wi);
 
     private synchronized native void nativeQueueInputImage(long nativeCtx, Image image,
-            long timestampNs, long dataSpace, int left, int top, int right, int bottom,
+            long timestampNs, int dataSpace, int left, int top, int right, int bottom,
             int transform, int scalingMode);
 
     private synchronized native int nativeAttachAndQueueImage(long nativeCtx,
-            long imageNativeBuffer, int imageFormat, long timestampNs, long dataSpace,
+            long imageNativeBuffer, int imageFormat, long timestampNs, int dataSpace,
             int left, int top, int right, int bottom, int transform, int scalingMode);
     private synchronized native int nativeAttachAndQueueGraphicBuffer(long nativeCtx,
-            GraphicBuffer graphicBuffer, int imageFormat, long timestampNs, long dataSpace,
+            GraphicBuffer graphicBuffer, int imageFormat, long timestampNs, int dataSpace,
             int left, int top, int right, int bottom, int transform, int scalingMode);
 
     private synchronized native void cancelImage(long nativeCtx, Image image);
diff --git a/media/java/android/media/PublicFormatUtils.java b/media/java/android/media/PublicFormatUtils.java
index 6268804..209e1c8 100644
--- a/media/java/android/media/PublicFormatUtils.java
+++ b/media/java/android/media/PublicFormatUtils.java
@@ -15,6 +15,8 @@
  */
 package android.media;
 
+import android.hardware.DataSpace;
+
 /**
  * Package private utility class for PublicFormat related methods.
  */
@@ -22,13 +24,13 @@
     public static int getHalFormat(int imageFormat) {
         return nativeGetHalFormat(imageFormat);
     }
-    public static long getHalDataspace(int imageFormat) {
+    public static int getHalDataspace(int imageFormat) {
         return nativeGetHalDataspace(imageFormat);
     }
-    public static int getPublicFormat(int imageFormat, long dataspace) {
+    public static int getPublicFormat(int imageFormat, @DataSpace.NamedDataSpace int dataspace) {
         return nativeGetPublicFormat(imageFormat, dataspace);
     }
     private static native int nativeGetHalFormat(int imageFormat);
-    private static native long nativeGetHalDataspace(int imageFormat);
-    private static native int nativeGetPublicFormat(int imageFormat, long dataspace);
+    private static native int nativeGetHalDataspace(int imageFormat);
+    private static native int nativeGetPublicFormat(int imageFormat, int dataspace);
 }
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp
index 6002e28..4d6739e 100644
--- a/media/jni/android_media_ImageReader.cpp
+++ b/media/jni/android_media_ImageReader.cpp
@@ -322,7 +322,7 @@
                         ANDROID_MEDIA_SURFACEIMAGE_TS_JNI_ID);
 
     gSurfaceImageClassInfo.mDataSpace = env->GetFieldID(
-            imageClazz, ANDROID_MEDIA_SURFACEIMAGE_DS_JNI_ID, "J");
+            imageClazz, ANDROID_MEDIA_SURFACEIMAGE_DS_JNI_ID, "I");
     LOG_ALWAYS_FATAL_IF(gSurfaceImageClassInfo.mDataSpace == NULL,
                         "can't find android/graphics/ImageReader.%s",
                         ANDROID_MEDIA_SURFACEIMAGE_DS_JNI_ID);
@@ -375,7 +375,7 @@
 }
 
 static void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, jint width, jint height,
-                             jint maxImages, jlong ndkUsage, jint nativeFormat, jlong dataSpace) {
+                             jint maxImages, jlong ndkUsage, jint nativeFormat, jint dataSpace) {
     status_t res;
 
     ALOGV("%s: width:%d, height: %d, nativeFormat: %d, maxImages:%d",
@@ -624,7 +624,7 @@
     env->SetLongField(image, gSurfaceImageClassInfo.mTimestamp,
             static_cast<jlong>(buffer->mTimestamp));
     env->SetLongField(image, gSurfaceImageClassInfo.mDataSpace,
-            static_cast<jlong>(buffer->mDataSpace));
+            static_cast<jint>(buffer->mDataSpace));
     auto transform = buffer->mTransform;
     if (buffer->mTransformToDisplayInverse) {
         transform |= NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY;
@@ -954,7 +954,7 @@
 
 static const JNINativeMethod gImageReaderMethods[] = {
     {"nativeClassInit",        "()V",                        (void*)ImageReader_classInit },
-    {"nativeInit",             "(Ljava/lang/Object;IIIJIJ)V",   (void*)ImageReader_init },
+    {"nativeInit",             "(Ljava/lang/Object;IIIJII)V",   (void*)ImageReader_init },
     {"nativeClose",            "()V",                        (void*)ImageReader_close },
     {"nativeReleaseImage",     "(Landroid/media/Image;)V",   (void*)ImageReader_imageRelease },
     {"nativeImageSetup",       "(Landroid/media/Image;Z)I",   (void*)ImageReader_imageSetup },
diff --git a/media/jni/android_media_ImageWriter.cpp b/media/jni/android_media_ImageWriter.cpp
index 8f5c9da..0f88afb 100644
--- a/media/jni/android_media_ImageWriter.cpp
+++ b/media/jni/android_media_ImageWriter.cpp
@@ -320,7 +320,7 @@
 // -------------------------------Private method declarations--------------
 
 static void Image_setNativeContext(JNIEnv* env, jobject thiz,
-        sp<GraphicBuffer> buffer, int fenceFd, long dataSpace);
+        sp<GraphicBuffer> buffer, int fenceFd, int dataSpace);
 static void Image_getNativeContext(JNIEnv* env, jobject thiz,
         GraphicBuffer** buffer, int* fenceFd);
 static void Image_unlockIfLocked(JNIEnv* env, jobject thiz);
@@ -334,7 +334,7 @@
             "can't find android/media/ImageWriter$WriterSurfaceImage");
 
     gSurfaceImageClassInfo.mDataSpace = env->GetFieldID(
-            imageClazz, "mDataSpace", "J");
+            imageClazz, "mDataSpace", "I");
     LOG_ALWAYS_FATAL_IF(gSurfaceImageClassInfo.mDataSpace == NULL,
             "can't find android/media/ImageWriter$WriterSurfaceImage.mDataSpace");
 
@@ -375,7 +375,7 @@
 
 static jlong ImageWriter_init(JNIEnv* env, jobject thiz, jobject weakThiz, jobject jsurface,
         jint maxImages, jint userWidth, jint userHeight, jboolean useSurfaceImageFormatInfo,
-        jint hardwareBufferFormat, jlong dataSpace, jlong ndkUsage) {
+        jint hardwareBufferFormat, jint dataSpace, jlong ndkUsage) {
     status_t res;
 
     ALOGV("%s: maxImages:%d", __FUNCTION__, maxImages);
@@ -626,7 +626,7 @@
 }
 
 static void ImageWriter_queueImage(JNIEnv* env, jobject thiz, jlong nativeCtx, jobject image,
-        jlong timestampNs, jlong dataSpace, jint left, jint top, jint right,
+        jlong timestampNs, jint dataSpace, jint left, jint top, jint right,
         jint bottom, jint transform, jint scalingMode) {
     ALOGV("%s", __FUNCTION__);
     JNIImageWriterContext* const ctx = reinterpret_cast<JNIImageWriterContext *>(nativeCtx);
@@ -660,7 +660,7 @@
     }
 
     // Set dataSpace
-    ALOGV("dataSpace to be queued: %" PRId64, dataSpace);
+    ALOGV("dataSpace to be queued: %d", dataSpace);
     res = native_window_set_buffers_data_space(
         anw.get(), static_cast<android_dataspace>(dataSpace));
     if (res != OK) {
@@ -719,7 +719,7 @@
 }
 
 static status_t attachAndQeueuGraphicBuffer(JNIEnv* env, JNIImageWriterContext *ctx,
-        sp<Surface> surface, sp<GraphicBuffer> gb, jlong timestampNs, jlong dataSpace,
+        sp<Surface> surface, sp<GraphicBuffer> gb, jlong timestampNs, jint dataSpace,
         jint left, jint top, jint right, jint bottom, jint transform, jint scalingMode) {
     status_t res = OK;
     // Step 1. Attach Image
@@ -748,7 +748,7 @@
         return res;
     }
 
-    ALOGV("dataSpace to be queued: %" PRId64, dataSpace);
+    ALOGV("dataSpace to be queued: %" PRId32, dataSpace);
     res = native_window_set_buffers_data_space(
         anw.get(), static_cast<android_dataspace>(dataSpace));
     if (res != OK) {
@@ -809,7 +809,7 @@
 }
 
 static jint ImageWriter_attachAndQueueImage(JNIEnv* env, jobject thiz, jlong nativeCtx,
-        jlong nativeBuffer, jint imageFormat, jlong timestampNs, jlong dataSpace,
+        jlong nativeBuffer, jint imageFormat, jlong timestampNs, jint dataSpace,
         jint left, jint top, jint right, jint bottom, jint transform, jint scalingMode) {
     ALOGV("%s", __FUNCTION__);
     JNIImageWriterContext* const ctx = reinterpret_cast<JNIImageWriterContext *>(nativeCtx);
@@ -840,7 +840,7 @@
 }
 
 static jint ImageWriter_attachAndQueueGraphicBuffer(JNIEnv* env, jobject thiz, jlong nativeCtx,
-        jobject buffer, jint format, jlong timestampNs, jlong dataSpace, jint left, jint top,
+        jobject buffer, jint format, jlong timestampNs, jint dataSpace, jint left, jint top,
         jint right, jint bottom, jint transform, jint scalingMode) {
     ALOGV("%s", __FUNCTION__);
     JNIImageWriterContext* const ctx = reinterpret_cast<JNIImageWriterContext *>(nativeCtx);
@@ -886,7 +886,7 @@
 }
 
 static void Image_setNativeContext(JNIEnv* env, jobject thiz,
-        sp<GraphicBuffer> buffer, int fenceFd, long dataSpace) {
+        sp<GraphicBuffer> buffer, int fenceFd, int dataSpace) {
     ALOGV("%s:", __FUNCTION__);
     GraphicBuffer* p = NULL;
     Image_getNativeContext(env, thiz, &p, /*fenceFd*/NULL);
@@ -958,7 +958,7 @@
     return buffer->getHeight();
 }
 
-static jint Image_getFormat(JNIEnv* env, jobject thiz, jlong dataSpace) {
+static jint Image_getFormat(JNIEnv* env, jobject thiz, jint dataSpace) {
     ALOGV("%s", __FUNCTION__);
     GraphicBuffer* buffer;
     Image_getNativeContext(env, thiz, &buffer, NULL);
@@ -1042,7 +1042,7 @@
 }
 
 static jobjectArray Image_createSurfacePlanes(JNIEnv* env, jobject thiz,
-        int numPlanes, int writerFormat, long dataSpace) {
+        int numPlanes, int writerFormat, int dataSpace) {
     ALOGV("%s: create SurfacePlane array with size %d", __FUNCTION__, numPlanes);
     int rowStride, pixelStride;
     uint8_t *pData;
@@ -1103,27 +1103,27 @@
 
 static JNINativeMethod gImageWriterMethods[] = {
     {"nativeClassInit",         "()V",                        (void*)ImageWriter_classInit },
-    {"nativeInit",              "(Ljava/lang/Object;Landroid/view/Surface;IIIZIJJ)J",
+    {"nativeInit",              "(Ljava/lang/Object;Landroid/view/Surface;IIIZIIJ)J",
                                                               (void*)ImageWriter_init },
     {"nativeClose",              "(J)V",                      (void*)ImageWriter_close },
     {"nativeAttachAndQueueImage",
-        "(JJIJJIIIIII)I",
+        "(JJIJIIIIIII)I",
         (void*)ImageWriter_attachAndQueueImage },
     {"nativeAttachAndQueueGraphicBuffer",
-        "(JLandroid/graphics/GraphicBuffer;IJJIIIIII)I",
+        "(JLandroid/graphics/GraphicBuffer;IJIIIIIII)I",
         (void*)ImageWriter_attachAndQueueGraphicBuffer },
     {"nativeDequeueInputImage", "(JLandroid/media/Image;)V",  (void*)ImageWriter_dequeueImage },
-    {"nativeQueueInputImage",   "(JLandroid/media/Image;JJIIIIII)V",
+    {"nativeQueueInputImage",   "(JLandroid/media/Image;JIIIIIII)V",
                                                                (void*)ImageWriter_queueImage },
     {"cancelImage",             "(JLandroid/media/Image;)V",   (void*)ImageWriter_cancelImage },
 };
 
 static JNINativeMethod gImageMethods[] = {
-    {"nativeCreatePlanes",      "(IIJ)[Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;",
+    {"nativeCreatePlanes",      "(III)[Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;",
                                                                (void*)Image_createSurfacePlanes },
     {"nativeGetWidth",          "()I",                         (void*)Image_getWidth },
     {"nativeGetHeight",         "()I",                         (void*)Image_getHeight },
-    {"nativeGetFormat",         "(J)I",                        (void*)Image_getFormat },
+    {"nativeGetFormat",         "(I)I",                        (void*)Image_getFormat },
     {"nativeSetFenceFd",        "(I)V",                        (void*)Image_setFenceFd },
     {"nativeGetHardwareBuffer", "()Landroid/hardware/HardwareBuffer;",
                                                                (void*)Image_getHardwareBuffer },
diff --git a/media/jni/android_media_PublicFormatUtils.cpp b/media/jni/android_media_PublicFormatUtils.cpp
index 09ebdee..04494ad 100644
--- a/media/jni/android_media_PublicFormatUtils.cpp
+++ b/media/jni/android_media_PublicFormatUtils.cpp
@@ -30,17 +30,17 @@
     return static_cast<jint>(nativeFormat);
 }
 
-static jlong android_media_PublicFormatUtils_getHalDataspace(JNIEnv* /*env*/, jobject /*thiz*/,
+static jint android_media_PublicFormatUtils_getHalDataspace(JNIEnv* /*env*/, jobject /*thiz*/,
                                                              jint imageFormat) {
     PublicFormat publicFormat = static_cast<PublicFormat>(imageFormat);
     android_dataspace
         nativeDataspace = mapPublicFormatToHalDataspace(publicFormat);
-    return static_cast<jlong>(nativeDataspace);
+    return static_cast<jint>(nativeDataspace);
 }
 
 static jint android_media_PublicFormatUtils_getPublicFormat(JNIEnv* /*env*/, jobject /*thiz*/,
                                                             jint hardwareBufferFormat,
-                                                            jlong dataspace) {
+                                                            jint dataspace) {
     PublicFormat nativeFormat = mapHalFormatDataspaceToPublicFormat(
             hardwareBufferFormat, static_cast<android_dataspace>(dataspace));
     return static_cast<jint>(nativeFormat);
@@ -48,8 +48,8 @@
 
 static const JNINativeMethod gMethods[] = {
     {"nativeGetHalFormat",    "(I)I", (void*)android_media_PublicFormatUtils_getHalFormat},
-    {"nativeGetHalDataspace", "(I)J", (void*)android_media_PublicFormatUtils_getHalDataspace},
-    {"nativeGetPublicFormat", "(IJ)I",(void*)android_media_PublicFormatUtils_getPublicFormat}
+    {"nativeGetHalDataspace", "(I)I", (void*)android_media_PublicFormatUtils_getHalDataspace},
+    {"nativeGetPublicFormat", "(II)I",(void*)android_media_PublicFormatUtils_getPublicFormat}
 };
 
 int register_android_media_PublicFormatUtils(JNIEnv *env) {