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