Fix emulator build error
[platform/framework/web/chromium-efl.git] / base / android / android_image_reader_abi.h
1 // Copyright 2018 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef BASE_ANDROID_ANDROID_IMAGE_READER_ABI_H_
6 #define BASE_ANDROID_ANDROID_IMAGE_READER_ABI_H_
7
8 // Minimal binary interface definitions for AImage,AImageReader
9 // and ANativeWindow based on include/media/NdkImage.h,
10 // include/media/NdkImageReader.h and include/android/native_window_jni.h
11 // from the Android NDK for platform level 26+. This is only
12 // intended for use from the AndroidImageReader wrapper for building
13 // without NDK platform level support, it is not a general-use header
14 // and is not complete. Only the functions/data types which
15 // are currently needed by media/gpu/android/image_reader_gl_owner.h are
16 // included in this ABI
17 //
18 // Please refer to the API documentation for details:
19 // https://developer.android.com/ndk/reference/group/media (AIMage and
20 // AImageReader)
21 // https://developer.android.com/ndk/reference/group/native-activity
22 // (ANativeWindow)
23
24 #include <android/native_window.h>
25 #include <media/NdkMediaError.h>
26
27 #include <jni.h>
28 #include <stdint.h>
29
30 // Use "C" linkage to match the original header file. This isn't strictly
31 // required since the file is not declaring global functions, but the types
32 // should remain in the global namespace for compatibility, and it's a reminder
33 // that forward declarations elsewhere should use "extern "C" to avoid
34 // namespace issues.
35 extern "C" {
36
37 // For AImage
38 typedef struct AHardwareBuffer AHardwareBuffer;
39
40 typedef struct AImage AImage;
41
42 typedef struct AImageCropRect {
43   int32_t left;
44   int32_t top;
45   int32_t right;
46   int32_t bottom;
47 } AImageCropRect;
48
49 enum AIMAGE_FORMATS {
50   AIMAGE_FORMAT_YUV_420_888 = 0x23,
51   AIMAGE_FORMAT_PRIVATE = 0x22
52 };
53
54 using pAImage_delete = void (*)(AImage* image);
55
56 using pAImage_deleteAsync = void (*)(AImage* image, int releaseFenceFd);
57
58 using pAImage_getHardwareBuffer = media_status_t (*)(const AImage* image,
59                                                      AHardwareBuffer** buffer);
60
61 using pAImage_getWidth = media_status_t (*)(const AImage* image,
62                                             int32_t* width);
63
64 using pAImage_getHeight = media_status_t (*)(const AImage* image,
65                                              int32_t* height);
66
67 using pAImage_getCropRect = media_status_t (*)(const AImage* image,
68                                                AImageCropRect* rect);
69
70 // For AImageReader
71
72 typedef struct AImageReader AImageReader;
73
74 typedef void (*AImageReader_ImageCallback)(void* context, AImageReader* reader);
75
76 typedef struct AImageReader_ImageListener {
77   void* context;
78   AImageReader_ImageCallback onImageAvailable;
79 } AImageReader_ImageListener;
80
81 using pAImageReader_newWithUsage = media_status_t (*)(int32_t width,
82                                                       int32_t height,
83                                                       int32_t format,
84                                                       uint64_t usage,
85                                                       int32_t maxImages,
86                                                       AImageReader** reader);
87
88 using pAImageReader_setImageListener =
89     media_status_t (*)(AImageReader* reader,
90                        AImageReader_ImageListener* listener);
91
92 using pAImageReader_delete = void (*)(AImageReader* reader);
93
94 using pAImageReader_getWindow = media_status_t (*)(AImageReader* reader,
95                                                    ANativeWindow** window);
96
97 using pAImageReader_getFormat = media_status_t (*)(const AImageReader* reader,
98                                                    int32_t* format);
99
100 using pAImageReader_acquireLatestImageAsync =
101     media_status_t (*)(AImageReader* reader,
102                        AImage** image,
103                        int* acquireFenceFd);
104
105 using pAImageReader_acquireNextImageAsync =
106     media_status_t (*)(AImageReader* reader,
107                        AImage** image,
108                        int* acquireFenceFd);
109
110 // For ANativeWindow
111 using pANativeWindow_toSurface = jobject (*)(JNIEnv* env,
112                                              ANativeWindow* window);
113
114 }  // extern "C"
115
116 #endif  // BASE_ANDROID_ANDROID_IMAGE_READER_ABI_H_