summaryrefslogtreecommitdiffstats
path: root/chromium/base/android/android_image_reader_abi.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/base/android/android_image_reader_abi.h')
-rw-r--r--chromium/base/android/android_image_reader_abi.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/chromium/base/android/android_image_reader_abi.h b/chromium/base/android/android_image_reader_abi.h
new file mode 100644
index 00000000000..730055da8c9
--- /dev/null
+++ b/chromium/base/android/android_image_reader_abi.h
@@ -0,0 +1,116 @@
+// Copyright 2018 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_ANDROID_ANDROID_IMAGE_READER_ABI_H_
+#define BASE_ANDROID_ANDROID_IMAGE_READER_ABI_H_
+
+// Minimal binary interface definitions for AImage,AImageReader
+// and ANativeWindow based on include/media/NdkImage.h,
+// include/media/NdkImageReader.h and include/android/native_window_jni.h
+// from the Android NDK for platform level 26+. This is only
+// intended for use from the AndroidImageReader wrapper for building
+// without NDK platform level support, it is not a general-use header
+// and is not complete. Only the functions/data types which
+// are currently needed by media/gpu/android/image_reader_gl_owner.h are
+// included in this ABI
+//
+// Please refer to the API documentation for details:
+// https://developer.android.com/ndk/reference/group/media (AIMage and
+// AImageReader)
+// https://developer.android.com/ndk/reference/group/native-activity
+// (ANativeWindow)
+
+#include <android/native_window.h>
+#include <media/NdkMediaError.h>
+
+#include <jni.h>
+#include <stdint.h>
+
+// Use "C" linkage to match the original header file. This isn't strictly
+// required since the file is not declaring global functions, but the types
+// should remain in the global namespace for compatibility, and it's a reminder
+// that forward declarations elsewhere should use "extern "C" to avoid
+// namespace issues.
+extern "C" {
+
+// For AImage
+typedef struct AHardwareBuffer AHardwareBuffer;
+
+typedef struct AImage AImage;
+
+typedef struct AImageCropRect {
+ int32_t left;
+ int32_t top;
+ int32_t right;
+ int32_t bottom;
+} AImageCropRect;
+
+enum AIMAGE_FORMATS {
+ AIMAGE_FORMAT_YUV_420_888 = 0x23,
+ AIMAGE_FORMAT_PRIVATE = 0x22
+};
+
+using pAImage_delete = void (*)(AImage* image);
+
+using pAImage_deleteAsync = void (*)(AImage* image, int releaseFenceFd);
+
+using pAImage_getHardwareBuffer = media_status_t (*)(const AImage* image,
+ AHardwareBuffer** buffer);
+
+using pAImage_getWidth = media_status_t (*)(const AImage* image,
+ int32_t* width);
+
+using pAImage_getHeight = media_status_t (*)(const AImage* image,
+ int32_t* height);
+
+using pAImage_getCropRect = media_status_t (*)(const AImage* image,
+ AImageCropRect* rect);
+
+// For AImageReader
+
+typedef struct AImageReader AImageReader;
+
+typedef void (*AImageReader_ImageCallback)(void* context, AImageReader* reader);
+
+typedef struct AImageReader_ImageListener {
+ void* context;
+ AImageReader_ImageCallback onImageAvailable;
+} AImageReader_ImageListener;
+
+using pAImageReader_newWithUsage = media_status_t (*)(int32_t width,
+ int32_t height,
+ int32_t format,
+ uint64_t usage,
+ int32_t maxImages,
+ AImageReader** reader);
+
+using pAImageReader_setImageListener =
+ media_status_t (*)(AImageReader* reader,
+ AImageReader_ImageListener* listener);
+
+using pAImageReader_delete = void (*)(AImageReader* reader);
+
+using pAImageReader_getWindow = media_status_t (*)(AImageReader* reader,
+ ANativeWindow** window);
+
+using pAImageReader_getFormat = media_status_t (*)(const AImageReader* reader,
+ int32_t* format);
+
+using pAImageReader_acquireLatestImageAsync =
+ media_status_t (*)(AImageReader* reader,
+ AImage** image,
+ int* acquireFenceFd);
+
+using pAImageReader_acquireNextImageAsync =
+ media_status_t (*)(AImageReader* reader,
+ AImage** image,
+ int* acquireFenceFd);
+
+// For ANativeWindow
+using pANativeWindow_toSurface = jobject (*)(JNIEnv* env,
+ ANativeWindow* window);
+
+} // extern "C"
+
+#endif // BASE_ANDROID_ANDROID_IMAGE_READER_ABI_H_