blob: 2d9738d8a34f8ec1d380409e6df9b5efbfde49bd [file] [log] [blame]
Lajos Molnarc98f58e2015-04-22 19:28:53 -07001/*
2 * Copyright 2015, 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
Wei Jia2d61e2b2015-05-08 15:23:28 -070017#include "android_media_SyncParams.h"
Lajos Molnarc98f58e2015-04-22 19:28:53 -070018
Steven Moreland2279b252017-07-19 09:50:45 -070019#include <nativehelper/JNIHelp.h>
Lajos Molnarc98f58e2015-04-22 19:28:53 -070020
21namespace android {
22
Wei Jia2d61e2b2015-05-08 15:23:28 -070023void SyncParams::fields_t::init(JNIEnv *env) {
24 jclass lclazz = env->FindClass("android/media/SyncParams");
Lajos Molnarc98f58e2015-04-22 19:28:53 -070025 if (lclazz == NULL) {
26 return;
27 }
28
29 clazz = (jclass)env->NewGlobalRef(lclazz);
30 if (clazz == NULL) {
31 return;
32 }
33
34 constructID = env->GetMethodID(clazz, "<init>", "()V");
35
36 sync_source = env->GetFieldID(clazz, "mSyncSource", "I");
37 audio_adjust_mode = env->GetFieldID(clazz, "mAudioAdjustMode", "I");
38 tolerance = env->GetFieldID(clazz, "mTolerance", "F");
39 frame_rate = env->GetFieldID(clazz, "mFrameRate", "F");
40 set = env->GetFieldID(clazz, "mSet", "I");
41
42 set_sync_source =
43 env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_SYNC_SOURCE", "I"));
44 set_audio_adjust_mode = env->GetStaticIntField(
45 clazz, env->GetStaticFieldID(clazz, "SET_AUDIO_ADJUST_MODE", "I"));
46 set_tolerance =
47 env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_TOLERANCE", "I"));
48 set_frame_rate =
49 env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_FRAME_RATE", "I"));
50
51 env->DeleteLocalRef(lclazz);
52}
53
Wei Jia2d61e2b2015-05-08 15:23:28 -070054void SyncParams::fields_t::exit(JNIEnv *env) {
Lajos Molnarc98f58e2015-04-22 19:28:53 -070055 env->DeleteGlobalRef(clazz);
56 clazz = NULL;
57}
58
Wei Jia2d61e2b2015-05-08 15:23:28 -070059void SyncParams::fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params) {
60 sync.mSource = (AVSyncSource)env->GetIntField(params, fields.sync_source);
61 sync.mAudioAdjustMode = (AVSyncAudioAdjustMode)env->GetIntField(params, fields.audio_adjust_mode);
62 sync.mTolerance = env->GetFloatField(params, fields.tolerance);
63 frameRate = env->GetFloatField(params, fields.frame_rate);
64 int set = env->GetIntField(params, fields.set);
Lajos Molnarc98f58e2015-04-22 19:28:53 -070065
66 syncSourceSet = set & fields.set_sync_source;
67 audioAdjustModeSet = set & fields.set_audio_adjust_mode;
68 toleranceSet = set & fields.set_tolerance;
69 frameRateSet = set & fields.set_frame_rate;
70}
71
Wei Jia2d61e2b2015-05-08 15:23:28 -070072jobject SyncParams::asJobject(JNIEnv *env, const fields_t& fields) {
73 jobject params = env->NewObject(fields.clazz, fields.constructID);
74 if (params == NULL) {
Lajos Molnarc98f58e2015-04-22 19:28:53 -070075 return NULL;
76 }
Wei Jia2d61e2b2015-05-08 15:23:28 -070077 env->SetIntField(params, fields.sync_source, (jint)sync.mSource);
78 env->SetIntField(params, fields.audio_adjust_mode, (jint)sync.mAudioAdjustMode);
79 env->SetFloatField(params, fields.tolerance, (jfloat)sync.mTolerance);
80 env->SetFloatField(params, fields.frame_rate, (jfloat)frameRate);
Lajos Molnarc98f58e2015-04-22 19:28:53 -070081 env->SetIntField(
Wei Jia2d61e2b2015-05-08 15:23:28 -070082 params, fields.set,
Lajos Molnarc98f58e2015-04-22 19:28:53 -070083 (syncSourceSet ? fields.set_sync_source : 0)
84 | (audioAdjustModeSet ? fields.set_audio_adjust_mode : 0)
85 | (toleranceSet ? fields.set_tolerance : 0)
86 | (frameRateSet ? fields.set_frame_rate : 0));
87
Wei Jia2d61e2b2015-05-08 15:23:28 -070088 return params;
Lajos Molnarc98f58e2015-04-22 19:28:53 -070089}
90
91} // namespace android