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