1*0ec5a0ecSAndroid Build Coastguard Worker // Copyright 2020 The Chromium Authors. All rights reserved. 2*0ec5a0ecSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*0ec5a0ecSAndroid Build Coastguard Worker // found in the LICENSE file. 4*0ec5a0ecSAndroid Build Coastguard Worker 5*0ec5a0ecSAndroid Build Coastguard Worker //#define LOG_NDEBUG 0 6*0ec5a0ecSAndroid Build Coastguard Worker #define LOG_TAG "VideoFrame" 7*0ec5a0ecSAndroid Build Coastguard Worker 8*0ec5a0ecSAndroid Build Coastguard Worker #include <v4l2_codec2/components/VideoFrame.h> 9*0ec5a0ecSAndroid Build Coastguard Worker 10*0ec5a0ecSAndroid Build Coastguard Worker #include <C2AllocatorGralloc.h> 11*0ec5a0ecSAndroid Build Coastguard Worker #include <log/log.h> 12*0ec5a0ecSAndroid Build Coastguard Worker 13*0ec5a0ecSAndroid Build Coastguard Worker namespace android { 14*0ec5a0ecSAndroid Build Coastguard Worker 15*0ec5a0ecSAndroid Build Coastguard Worker // static Create(std::shared_ptr<C2GraphicBlock> block)16*0ec5a0ecSAndroid Build Coastguard Workerstd::unique_ptr<VideoFrame> VideoFrame::Create(std::shared_ptr<C2GraphicBlock> block) { 17*0ec5a0ecSAndroid Build Coastguard Worker if (!block) return nullptr; 18*0ec5a0ecSAndroid Build Coastguard Worker 19*0ec5a0ecSAndroid Build Coastguard Worker std::vector<int> fds; 20*0ec5a0ecSAndroid Build Coastguard Worker const C2Handle* const handle = block->handle(); 21*0ec5a0ecSAndroid Build Coastguard Worker for (int i = 0; i < handle->numFds; i++) { 22*0ec5a0ecSAndroid Build Coastguard Worker fds.emplace_back(handle->data[i]); 23*0ec5a0ecSAndroid Build Coastguard Worker } 24*0ec5a0ecSAndroid Build Coastguard Worker 25*0ec5a0ecSAndroid Build Coastguard Worker return std::unique_ptr<VideoFrame>(new VideoFrame(std::move(block), std::move(fds))); 26*0ec5a0ecSAndroid Build Coastguard Worker } 27*0ec5a0ecSAndroid Build Coastguard Worker VideoFrame(std::shared_ptr<C2GraphicBlock> block,std::vector<int> fds)28*0ec5a0ecSAndroid Build Coastguard WorkerVideoFrame::VideoFrame(std::shared_ptr<C2GraphicBlock> block, std::vector<int> fds) 29*0ec5a0ecSAndroid Build Coastguard Worker : mGraphicBlock(std::move(block)), mFds(fds) {} 30*0ec5a0ecSAndroid Build Coastguard Worker 31*0ec5a0ecSAndroid Build Coastguard Worker VideoFrame::~VideoFrame() = default; 32*0ec5a0ecSAndroid Build Coastguard Worker getFDs() const33*0ec5a0ecSAndroid Build Coastguard Workerconst std::vector<int>& VideoFrame::getFDs() const { 34*0ec5a0ecSAndroid Build Coastguard Worker return mFds; 35*0ec5a0ecSAndroid Build Coastguard Worker } 36*0ec5a0ecSAndroid Build Coastguard Worker setVisibleRect(const Rect & visibleRect)37*0ec5a0ecSAndroid Build Coastguard Workervoid VideoFrame::setVisibleRect(const Rect& visibleRect) { 38*0ec5a0ecSAndroid Build Coastguard Worker mVisibleRect = visibleRect; 39*0ec5a0ecSAndroid Build Coastguard Worker } 40*0ec5a0ecSAndroid Build Coastguard Worker getVisibleRect() const41*0ec5a0ecSAndroid Build Coastguard Workerconst Rect& VideoFrame::getVisibleRect() const { 42*0ec5a0ecSAndroid Build Coastguard Worker return mVisibleRect; 43*0ec5a0ecSAndroid Build Coastguard Worker } 44*0ec5a0ecSAndroid Build Coastguard Worker setBitstreamId(int32_t bitstreamId)45*0ec5a0ecSAndroid Build Coastguard Workervoid VideoFrame::setBitstreamId(int32_t bitstreamId) { 46*0ec5a0ecSAndroid Build Coastguard Worker mBitstreamId = bitstreamId; 47*0ec5a0ecSAndroid Build Coastguard Worker } 48*0ec5a0ecSAndroid Build Coastguard Worker getBitstreamId() const49*0ec5a0ecSAndroid Build Coastguard Workerint32_t VideoFrame::getBitstreamId() const { 50*0ec5a0ecSAndroid Build Coastguard Worker return mBitstreamId; 51*0ec5a0ecSAndroid Build Coastguard Worker } 52*0ec5a0ecSAndroid Build Coastguard Worker getGraphicBlock()53*0ec5a0ecSAndroid Build Coastguard WorkerC2ConstGraphicBlock VideoFrame::getGraphicBlock() { 54*0ec5a0ecSAndroid Build Coastguard Worker return mGraphicBlock->share(C2Rect(mVisibleRect.width(), mVisibleRect.height()), C2Fence()); 55*0ec5a0ecSAndroid Build Coastguard Worker } 56*0ec5a0ecSAndroid Build Coastguard Worker 57*0ec5a0ecSAndroid Build Coastguard Worker } // namespace android 58