123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia/* 223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * Copyright 2017, The Android Open Source Project 323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * 423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * Licensed under the Apache License, Version 2.0 (the "License"); 523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * you may not use this file except in compliance with the License. 623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * You may obtain a copy of the License at 723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * 823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * http://www.apache.org/licenses/LICENSE-2.0 923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * 1023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * Unless required by applicable law or agreed to in writing, software 1123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * distributed under the License is distributed on an "AS IS" BASIS, 1223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * See the License for the specific language governing permissions and 1423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia * limitations under the License. 1523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia */ 1623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 1723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia#ifndef _ANDROID_MEDIA_BUFFERING_PARAMS_H_ 1823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia#define _ANDROID_MEDIA_BUFFERING_PARAMS_H_ 1923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 2023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia#include <media/BufferingSettings.h> 2123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 2223dfee521a7782bf901344beec6f94614e0b02b8Wei Jianamespace android { 2323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 2423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia// This entire class is inline 2523dfee521a7782bf901344beec6f94614e0b02b8Wei Jiastruct BufferingParams { 2623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia BufferingSettings settings; 2723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 2823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia struct fields_t { 2923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jclass clazz; 3023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jmethodID constructID; 3123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 3249ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia jfieldID initial_mark_ms; 3349ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia jfieldID resume_playback_mark_ms; 3423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 3523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia void init(JNIEnv *env) { 3623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jclass lclazz = env->FindClass("android/media/BufferingParams"); 3723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia if (lclazz == NULL) { 3823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return; 3923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 4023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 4123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia clazz = (jclass)env->NewGlobalRef(lclazz); 4223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia if (clazz == NULL) { 4323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return; 4423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 4523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 4623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia constructID = env->GetMethodID(clazz, "<init>", "()V"); 4723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 4849ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia initial_mark_ms = env->GetFieldID(clazz, "mInitialMarkMs", "I"); 4949ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia resume_playback_mark_ms = env->GetFieldID(clazz, "mResumePlaybackMarkMs", "I"); 5023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 5123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->DeleteLocalRef(lclazz); 5223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 5323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 5423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia void exit(JNIEnv *env) { 5523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->DeleteGlobalRef(clazz); 5623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia clazz = NULL; 5723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 5823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia }; 5923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 6023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params) { 6149ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia settings.mInitialMarkMs = 6249ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia env->GetIntField(params, fields.initial_mark_ms); 6349ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia settings.mResumePlaybackMarkMs = 6449ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia env->GetIntField(params, fields.resume_playback_mark_ms); 6523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 6623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 6723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jobject asJobject(JNIEnv *env, const fields_t& fields) { 6823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jobject params = env->NewObject(fields.clazz, fields.constructID); 6923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia if (params == NULL) { 7023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return NULL; 7123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 7249ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia env->SetIntField(params, fields.initial_mark_ms, (jint)settings.mInitialMarkMs); 7349ca7252e4c34b67d7ded26ea3397b76f6f4aa72Wei Jia env->SetIntField(params, fields.resume_playback_mark_ms, (jint)settings.mResumePlaybackMarkMs); 7423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 7523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return params; 7623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 7723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia}; 7823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 7923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia} // namespace android 8023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 8123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia#endif // _ANDROID_MEDIA_BUFFERING_PARAMS_H_ 82