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/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) {