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