1 /*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 #define LOG_NDEBUG 0
17
18 #define LOG_TAG "ExposureCompensationJNI"
19 #include <utils/Log.h>
20 #include <vector>
21 #include <string.h>
22
23 #include "android/bitmap.h"
24 #include "testingimage.h"
25 #include "exposurecompensationtest.h"
26 #include "vec2.h"
27
28 #include "com_android_cts_verifier_camera_analyzer_ExposureCompensationTest.h"
29
Java_com_android_cts_verifier_camera_analyzer_ExposureCompensationTest_createExposureCompensationTest(JNIEnv * env,jobject thiz,jint debugHeight,jint debugWidth)30 jlong Java_com_android_cts_verifier_camera_analyzer_ExposureCompensationTest_createExposureCompensationTest(
31 JNIEnv* env,
32 jobject thiz,
33 jint debugHeight,
34 jint debugWidth) {
35
36 ExposureCompensationTest* testHandler =
37 new ExposureCompensationTest(debugHeight, debugWidth);
38 long handlerAddress = (long)testHandler;
39
40 return handlerAddress;
41 }
42
Java_com_android_cts_verifier_camera_analyzer_ExposureCompensationTest_createExposureCompensationClass(JNIEnv * env,jobject thiz,jlong inputImageAddress,jlong inputHandlerAddress,jlong checkerCenterAddress,jlong checkerRadiusAddress,jfloat exposureValue)43 void Java_com_android_cts_verifier_camera_analyzer_ExposureCompensationTest_createExposureCompensationClass(
44 JNIEnv* env,
45 jobject thiz,
46 jlong inputImageAddress,
47 jlong inputHandlerAddress,
48 jlong checkerCenterAddress,
49 jlong checkerRadiusAddress,
50 jfloat exposureValue) {
51
52 ALOGV("JNI createExposureCompensationClass starts!");
53
54 long imageAddress = (long)inputImageAddress;
55 long handlerAddress = (long)inputHandlerAddress;
56
57 TestingImage *inputImage = (TestingImage*) imageAddress;
58 ExposureCompensationTest *testHandler =
59 (ExposureCompensationTest*) handlerAddress;
60
61 std::vector<std::vector< Vec2f > >* checkerCenter =
62 (std::vector<std::vector< Vec2f > >*) (long) checkerCenterAddress;
63 std::vector<std::vector< float > >* checkerRadius =
64 (std::vector<std::vector< float > >*) (long) checkerRadiusAddress;
65
66 const std::vector<Vec3f>* checkerValue =
67 inputImage->getColorChecker(3, 4, 0, 6,
68 checkerCenter, checkerRadius);
69 testHandler->addDataToList((float) exposureValue, checkerValue);
70 delete inputImage;
71 delete checkerValue;
72 }
73
Java_com_android_cts_verifier_camera_analyzer_ExposureCompensationTest_processExposureCompensationTest(JNIEnv * env,jobject thiz,jlong inputHandlerAddress)74 jstring Java_com_android_cts_verifier_camera_analyzer_ExposureCompensationTest_processExposureCompensationTest(
75 JNIEnv* env,
76 jobject thiz,
77 jlong inputHandlerAddress) {
78
79 long handlerAddress = (long) inputHandlerAddress;
80 ExposureCompensationTest *testHandler =
81 (ExposureCompensationTest*) handlerAddress;
82
83 testHandler->processData();
84
85 const char* nativeDebugText = testHandler->getDebugText();
86 ALOGV("%s", nativeDebugText);
87 return env->NewStringUTF(nativeDebugText);
88 }
89