2 * Copyright (C) 2012, Collabora Ltd.
3 * Copyright (C) 2012, Cisco Systems, Inc.
4 * Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
6 * Copyright (C) 2015, Collabora Ltd.
7 * Author: Justin Kim <justin.kim@collabora.com>
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation
12 * version 2.1 of the License.
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29 #include "gstjniutils.h"
31 #include "gst-android-graphics-imageformat.h"
37 jmethodID get_bits_per_pixel;
45 } android_graphics_imageformat = {
48 gint ImageFormat_JPEG;
49 gint ImageFormat_NV16;
50 gint ImageFormat_NV21;
51 gint ImageFormat_RGB_565;
52 gint ImageFormat_UNKNOWN;
53 gint ImageFormat_YUY2;
54 gint ImageFormat_YV12;
66 env = gst_amc_jni_get_env ();
68 /* android.graphics.ImageFormat */
69 klass = android_graphics_imageformat.klass =
70 gst_amc_jni_get_class (env, &err, "android/graphics/ImageFormat");
75 android_graphics_imageformat.get_bits_per_pixel =
76 gst_amc_jni_get_static_method_id (env, &err, klass,
77 "getBitsPerPixel", "(I)I");
82 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "JPEG", "I");
85 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
86 &android_graphics_imageformat.JPEG))
88 ImageFormat_JPEG = android_graphics_imageformat.JPEG;
90 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "NV16", "I");
93 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
94 &android_graphics_imageformat.NV16))
96 ImageFormat_NV16 = android_graphics_imageformat.NV16;
98 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "NV21", "I");
101 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
102 &android_graphics_imageformat.NV21))
104 ImageFormat_NV21 = android_graphics_imageformat.NV21;
106 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "RGB_565", "I");
109 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
110 &android_graphics_imageformat.RGB_565))
112 ImageFormat_RGB_565 = android_graphics_imageformat.RGB_565;
114 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "UNKNOWN", "I");
117 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
118 &android_graphics_imageformat.UNKNOWN))
120 ImageFormat_UNKNOWN = android_graphics_imageformat.UNKNOWN;
122 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "YUY2", "I");
125 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
126 &android_graphics_imageformat.YUY2))
128 ImageFormat_YUY2 = android_graphics_imageformat.YUY2;
130 fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "YV12", "I");
133 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
134 &android_graphics_imageformat.YV12))
136 ImageFormat_YV12 = android_graphics_imageformat.YV12;
142 GST_ERROR ("Failed to get android.graphics.ImageFormat class: %s",
144 g_clear_error (&err);
151 gst_android_graphics_imageformat_init (void)
153 if (!_init_classes ()) {
154 gst_android_graphics_imageformat_deinit ();
162 gst_android_graphics_imageformat_deinit (void)
164 JNIEnv *env = gst_amc_jni_get_env ();
166 if (android_graphics_imageformat.klass)
167 (*env)->DeleteGlobalRef (env, android_graphics_imageformat.klass);
168 android_graphics_imageformat.klass = NULL;
171 /* android.graphics.ImageFormat */
173 gst_ag_imageformat_get_bits_per_pixel (gint format)
178 jclass klass = android_graphics_imageformat.klass;
182 env = gst_amc_jni_get_env ();
184 if (!gst_amc_jni_call_static_int_method (env, &err,
185 klass, android_graphics_imageformat.get_bits_per_pixel, &bpp,
187 GST_ERROR ("Failed to get android.graphics.ImageFormat class: %s",
189 g_clear_error (&err);