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 3223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID initial_buffering_mode; 3323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID rebuffering_mode; 3423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID initial_watermark_ms; 3523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID initial_watermark_kb; 3623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID rebuffering_watermark_low_ms; 3723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID rebuffering_watermark_high_ms; 3823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID rebuffering_watermark_low_kb; 3923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jfieldID rebuffering_watermark_high_kb; 4023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 4123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia void init(JNIEnv *env) { 4223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jclass lclazz = env->FindClass("android/media/BufferingParams"); 4323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia if (lclazz == NULL) { 4423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return; 4523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 4623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 4723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia clazz = (jclass)env->NewGlobalRef(lclazz); 4823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia if (clazz == NULL) { 4923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return; 5023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 5123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 5223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia constructID = env->GetMethodID(clazz, "<init>", "()V"); 5323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 5423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia initial_buffering_mode = env->GetFieldID(clazz, "mInitialBufferingMode", "I"); 5523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia rebuffering_mode = env->GetFieldID(clazz, "mRebufferingMode", "I"); 5623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia initial_watermark_ms = env->GetFieldID(clazz, "mInitialWatermarkMs", "I"); 5723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia initial_watermark_kb = env->GetFieldID(clazz, "mInitialWatermarkKB", "I"); 5823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia rebuffering_watermark_low_ms = env->GetFieldID(clazz, "mRebufferingWatermarkLowMs", "I"); 5923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia rebuffering_watermark_high_ms = env->GetFieldID(clazz, "mRebufferingWatermarkHighMs", "I"); 6023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia rebuffering_watermark_low_kb = env->GetFieldID(clazz, "mRebufferingWatermarkLowKB", "I"); 6123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia rebuffering_watermark_high_kb = env->GetFieldID(clazz, "mRebufferingWatermarkHighKB", "I"); 6223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 6323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->DeleteLocalRef(lclazz); 6423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 6523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 6623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia void exit(JNIEnv *env) { 6723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->DeleteGlobalRef(clazz); 6823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia clazz = NULL; 6923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 7023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia }; 7123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 7223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params) { 7323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mInitialBufferingMode = 7423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia (BufferingMode)env->GetIntField(params, fields.initial_buffering_mode); 7523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mRebufferingMode = 7623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia (BufferingMode)env->GetIntField(params, fields.rebuffering_mode); 7723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mInitialWatermarkMs = 7823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->GetIntField(params, fields.initial_watermark_ms); 7923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mInitialWatermarkKB = 8023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->GetIntField(params, fields.initial_watermark_kb); 8123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mRebufferingWatermarkLowMs = 8223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->GetIntField(params, fields.rebuffering_watermark_low_ms); 8323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mRebufferingWatermarkHighMs = 8423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->GetIntField(params, fields.rebuffering_watermark_high_ms); 8523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mRebufferingWatermarkLowKB = 8623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->GetIntField(params, fields.rebuffering_watermark_low_kb); 8723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia settings.mRebufferingWatermarkHighKB = 8823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->GetIntField(params, fields.rebuffering_watermark_high_kb); 8923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 9023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 9123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jobject asJobject(JNIEnv *env, const fields_t& fields) { 9223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia jobject params = env->NewObject(fields.clazz, fields.constructID); 9323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia if (params == NULL) { 9423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return NULL; 9523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 9623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.initial_buffering_mode, (jint)settings.mInitialBufferingMode); 9723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.rebuffering_mode, (jint)settings.mRebufferingMode); 9823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.initial_watermark_ms, (jint)settings.mInitialWatermarkMs); 9923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.initial_watermark_kb, (jint)settings.mInitialWatermarkKB); 10023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.rebuffering_watermark_low_ms, (jint)settings.mRebufferingWatermarkLowMs); 10123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.rebuffering_watermark_high_ms, (jint)settings.mRebufferingWatermarkHighMs); 10223dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.rebuffering_watermark_low_kb, (jint)settings.mRebufferingWatermarkLowKB); 10323dfee521a7782bf901344beec6f94614e0b02b8Wei Jia env->SetIntField(params, fields.rebuffering_watermark_high_kb, (jint)settings.mRebufferingWatermarkHighKB); 10423dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 10523dfee521a7782bf901344beec6f94614e0b02b8Wei Jia return params; 10623dfee521a7782bf901344beec6f94614e0b02b8Wei Jia } 10723dfee521a7782bf901344beec6f94614e0b02b8Wei Jia}; 10823dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 10923dfee521a7782bf901344beec6f94614e0b02b8Wei Jia} // namespace android 11023dfee521a7782bf901344beec6f94614e0b02b8Wei Jia 11123dfee521a7782bf901344beec6f94614e0b02b8Wei Jia#endif // _ANDROID_MEDIA_BUFFERING_PARAMS_H_ 112