17e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim/*
27e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * Copyright 2016, The Android Open Source Project
37e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim *
47e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * Licensed under the Apache License, Version 2.0 (the "License");
57e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * you may not use this file except in compliance with the License.
67e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * You may obtain a copy of the License at
77e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim *
87e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim *     http://www.apache.org/licenses/LICENSE-2.0
97e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim *
107e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * Unless required by applicable law or agreed to in writing, software
117e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * distributed under the License is distributed on an "AS IS" BASIS,
127e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * See the License for the specific language governing permissions and
147e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim * limitations under the License.
157e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim */
167e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
177e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim//#define LOG_NDEBUG 0
187e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim#define LOG_TAG "MediaCodecBuffer"
197e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim#include <utils/Log.h>
207e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
217e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim#include <media/MediaCodecBuffer.h>
227e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim#include <media/stagefright/foundation/ABuffer.h>
237e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim#include <media/stagefright/foundation/AMessage.h>
247e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
257e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimnamespace android {
267e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
277e34bf5af26f8752d4786d3098740cdf51e2438fWonsik KimMediaCodecBuffer::MediaCodecBuffer(const sp<AMessage> &format, const sp<ABuffer> &buffer)
287e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    : mMeta(new AMessage),
297e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim      mFormat(format),
30bc8f53b8c1c220d9ce01526b6e3834f14af98ed5Dongwon Kang      mBuffer(buffer) {
317e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
327e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
337e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim// ABuffer-like interface
347e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimuint8_t *MediaCodecBuffer::base() {
357e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mBuffer->base();
367e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
377e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
387e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimuint8_t *MediaCodecBuffer::data() {
397e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mBuffer->data();
407e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
417e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
427e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimsize_t MediaCodecBuffer::capacity() const {
437e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mBuffer->capacity();
447e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
457e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
467e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimsize_t MediaCodecBuffer::size() const {
477e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mBuffer->size();
487e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
497e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
507e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimsize_t MediaCodecBuffer::offset() const {
517e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mBuffer->offset();
527e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
537e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
547e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimstatus_t MediaCodecBuffer::setRange(size_t offset, size_t size) {
557e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    mBuffer->setRange(offset, size);
567e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return OK;
577e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
587e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
597e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimsp<AMessage> MediaCodecBuffer::meta() {
607e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mMeta;
617e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
627e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
637e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimsp<AMessage> MediaCodecBuffer::format() {
647e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim    return mFormat;
657e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}
667e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
67ad60a0f6cd9012507f8086fe741236d12d280ef3Wonsik Kimvoid MediaCodecBuffer::setFormat(const sp<AMessage> &format) {
68ad60a0f6cd9012507f8086fe741236d12d280ef3Wonsik Kim    mMeta->clear();
69ad60a0f6cd9012507f8086fe741236d12d280ef3Wonsik Kim    mFormat = format;
70fd44d8e2f2d37184f7add67125657f3fbfb5a085Wonsik Kim}
71fd44d8e2f2d37184f7add67125657f3fbfb5a085Wonsik Kim
727e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim}  // namespace android
73