1d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia/* 2d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * Copyright (C) 2016 The Android Open Source Project 3d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * 4d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * Licensed under the Apache License, Version 2.0 (the "License"); 5d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * you may not use this file except in compliance with the License. 6d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * You may obtain a copy of the License at 7d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * 8d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * http://www.apache.org/licenses/LICENSE-2.0 9d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * 10d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * Unless required by applicable law or agreed to in writing, software 11d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * distributed under the License is distributed on an "AS IS" BASIS, 12d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * See the License for the specific language governing permissions and 14d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia * limitations under the License. 15d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia */ 16d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 17d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia#define LOG_TAG "BufferingSettings" 18d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia//#define LOG_NDEBUG 0 19d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 20d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia#include <binder/Parcel.h> 21d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 22d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia#include <media/BufferingSettings.h> 23d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 24d399e7e6065aa310e025ab633f633d5b4831a358Wei Jianamespace android { 25d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 26d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia// static 27d399e7e6065aa310e025ab633f633d5b4831a358Wei Jiabool BufferingSettings::IsValidBufferingMode(int mode) { 28d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia return (mode >= BUFFERING_MODE_NONE && mode < BUFFERING_MODE_COUNT); 29d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia} 30d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 3148fa06d1e80a872c7495804979256e021e566ae0Wei Jia// static 3248fa06d1e80a872c7495804979256e021e566ae0Wei Jiabool BufferingSettings::IsTimeBasedBufferingMode(int mode) { 3348fa06d1e80a872c7495804979256e021e566ae0Wei Jia return (mode == BUFFERING_MODE_TIME_ONLY || mode == BUFFERING_MODE_TIME_THEN_SIZE); 3448fa06d1e80a872c7495804979256e021e566ae0Wei Jia} 3548fa06d1e80a872c7495804979256e021e566ae0Wei Jia 3648fa06d1e80a872c7495804979256e021e566ae0Wei Jia// static 3748fa06d1e80a872c7495804979256e021e566ae0Wei Jiabool BufferingSettings::IsSizeBasedBufferingMode(int mode) { 3848fa06d1e80a872c7495804979256e021e566ae0Wei Jia return (mode == BUFFERING_MODE_SIZE_ONLY || mode == BUFFERING_MODE_TIME_THEN_SIZE); 3948fa06d1e80a872c7495804979256e021e566ae0Wei Jia} 4048fa06d1e80a872c7495804979256e021e566ae0Wei Jia 41d399e7e6065aa310e025ab633f633d5b4831a358Wei JiaBufferingSettings::BufferingSettings() 42d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia : mInitialBufferingMode(BUFFERING_MODE_NONE), 43d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingMode(BUFFERING_MODE_NONE), 44d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mInitialWatermarkMs(kNoWatermark), 45d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mInitialWatermarkKB(kNoWatermark), 46d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkLowMs(kNoWatermark), 47d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkHighMs(kNoWatermark), 48d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkLowKB(kNoWatermark), 49d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkHighKB(kNoWatermark) { } 50d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 51d399e7e6065aa310e025ab633f633d5b4831a358Wei Jiastatus_t BufferingSettings::readFromParcel(const Parcel* parcel) { 52d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia if (parcel == nullptr) { 53d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia return BAD_VALUE; 54d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia } 55d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mInitialBufferingMode = (BufferingMode)parcel->readInt32(); 56d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingMode = (BufferingMode)parcel->readInt32(); 57d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mInitialWatermarkMs = parcel->readInt32(); 58d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mInitialWatermarkKB = parcel->readInt32(); 59d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkLowMs = parcel->readInt32(); 60d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkHighMs = parcel->readInt32(); 61d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkLowKB = parcel->readInt32(); 62d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia mRebufferingWatermarkHighKB = parcel->readInt32(); 63d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 64d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia return OK; 65d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia} 66d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 67d399e7e6065aa310e025ab633f633d5b4831a358Wei Jiastatus_t BufferingSettings::writeToParcel(Parcel* parcel) const { 68d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia if (parcel == nullptr) { 69d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia return BAD_VALUE; 70d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia } 71d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mInitialBufferingMode); 72d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mRebufferingMode); 73d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mInitialWatermarkMs); 74d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mInitialWatermarkKB); 75d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mRebufferingWatermarkLowMs); 76d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mRebufferingWatermarkHighMs); 77d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mRebufferingWatermarkLowKB); 78d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia parcel->writeInt32(mRebufferingWatermarkHighKB); 79d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 80d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia return OK; 81d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia} 82d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia 83dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei JiaString8 BufferingSettings::toString() const { 84dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia String8 s; 85dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia s.appendFormat("initialMode(%d), rebufferingMode(%d), " 86dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia "initialMarks(%d ms, %d KB), rebufferingMarks(%d, %d)ms, (%d, %d)KB", 87dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia mInitialBufferingMode, mRebufferingMode, 88dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia mInitialWatermarkMs, mInitialWatermarkKB, 89dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia mRebufferingWatermarkLowMs, mRebufferingWatermarkHighMs, 90dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia mRebufferingWatermarkLowKB, mRebufferingWatermarkHighKB); 91dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia return s; 92dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia} 93dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6Wei Jia 94d399e7e6065aa310e025ab633f633d5b4831a358Wei Jia} // namespace android 95