11917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker/* 21917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * Copyright (C) 2018 The Android Open Source Project 31917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * 41917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * Licensed under the Apache License, Version 2.0 (the "License"); 51917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * you may not use this file except in compliance with the License. 61917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * You may obtain a copy of the License at 71917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * 81917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * http://www.apache.org/licenses/LICENSE-2.0 91917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * 101917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * Unless required by applicable law or agreed to in writing, software 111917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * distributed under the License is distributed on an "AS IS" BASIS, 121917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * See the License for the specific language governing permissions and 141917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * limitations under the License. 151917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker */ 161917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 171917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#ifndef BUFFER_H_ 181917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#define BUFFER_H_ 191917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 201917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <android/hardware/drm/1.0/types.h> 211917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <utils/RefBase.h> 221917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 231917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include "ClearKeyTypes.h" 241917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 251917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkernamespace android { 261917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkernamespace hardware { 271917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkernamespace drm { 281917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkernamespace V1_1 { 291917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkernamespace clearkey { 301917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 311917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing ::android::sp; 321917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 331917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerstruct Buffer : public RefBase { 341917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker explicit Buffer(size_t capacity); 351917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 361917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker uint8_t *base() { return reinterpret_cast<uint8_t *>(mData); } 371917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker uint8_t *data() { return reinterpret_cast<uint8_t *>(mData) + mRangeOffset; } 381917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker size_t capacity() const { return mCapacity; } 391917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker size_t size() const { return mRangeLength; } 401917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker size_t offset() const { return mRangeOffset; } 411917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 421917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerprotected: 431917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker virtual ~Buffer(); 441917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 451917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerprivate: 461917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker void *mData; 471917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker size_t mCapacity; 481917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker size_t mRangeOffset; 491917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker size_t mRangeLength; 501917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 511917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker bool mOwnsData; 521917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 531917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker CLEARKEY_DISALLOW_COPY_AND_ASSIGN(Buffer); 541917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker}; 551917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 561917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker} // namespace clearkey 571917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker} // namespace V1_1 581917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker} // namespace drm 591917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker} // namespace hardware 601917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker} // namespace android 611917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker 621917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#endif // BUFFER_H_ 63