overlayMdp.h revision 29a26818d7294055539167b2fbfdaa168bcf725c
129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/* 229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* Copyright (C) 2008 The Android Open Source Project 329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* Copyright (c) 2010-2012, Code Aurora Forum. All rights reserved. 429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* 529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* Licensed under the Apache License, Version 2.0 (the "License"); 629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* you may not use this file except in compliance with the License. 729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* You may obtain a copy of the License at 829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* 929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* http://www.apache.org/licenses/LICENSE-2.0 1029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* 1129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* Unless required by applicable law or agreed to in writing, software 1229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* distributed under the License is distributed on an "AS IS" BASIS, 1329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* See the License for the specific language governing permissions and 1529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* limitations under the License. 1629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed*/ 1729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 1829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#ifndef OVERLAY_MDP_H 1929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#define OVERLAY_MDP_H 2029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 2129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#include <linux/msm_mdp.h> 2229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 2329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#include "overlayUtils.h" 2429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#include "mdpWrapper.h" 2529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#include "overlayRotator.h" 2629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 2729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmednamespace overlay{ 2829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 2929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass RotatorBase; 3029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 3129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/* 3229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* Mdp Ctrl holds corresponding fd and MDP related struct. 3329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* It is simple wrapper to MDP services 3429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* */ 3529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass MdpCtrl { 3629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedpublic: 3729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* ctor reset */ 3829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed explicit MdpCtrl(); 3929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 4029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* dtor close */ 4129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ~MdpCtrl(); 4229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 4329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* Open underlying device using fbnum */ 4429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool open(uint32_t fbnum); 4529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 4629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* unset overlay, reset and close fd */ 4729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool close(); 4829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 4929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* reset and set ov id to -1*/ 5029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void reset(); 5129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 5229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* get orient / user_data[0] */ 5329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getOrient() const; 5429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 5529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* returns session id */ 5629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getId() const; 5729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 5829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* returns the fd associated to ctrl*/ 5929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getFd() const; 6029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 6129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* Get screen info. out: info*/ 6229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool getScreenInfo(utils::ScreenInfo& info); 6329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 6429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* overlay get */ 6529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool get(); 6629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 6729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* returns flags from mdp structure. 6829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Flags are WAIT/NOWAIT/PIPE SHARED*/ 6929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getFlags() const; 7029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 7129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set flags to mdp structure */ 7229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setFlags(int f); 7329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 7429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* code taken from OverlayControlChannel::setOverlayInformation */ 7529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool setInfo(RotatorBase* r, 7629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed const utils::PipeArgs& args, 7729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed const utils::ScreenInfo& info); 7829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 7929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* given whf, update src */ 8029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void updateSource(RotatorBase* r, 8129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed const utils::PipeArgs& args, 8229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed const utils::ScreenInfo& info); 8329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 8429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set z order */ 8529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setZ(utils::eZorder z); 8629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 8729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set Wait/nowait */ 8829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setWait(utils::eWait wait); 8929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 9029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set isFg flag */ 9129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setIsFg(utils::eIsFg isFg); 9229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 9329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* calls overlay set 9429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Set would always consult last good known ov instance. 9529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Only if it is different, set would actually exectue ioctl. 9629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * On a sucess ioctl. last good known ov instance is updated */ 9729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool set(); 9829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 9929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* return a copy of src whf*/ 10029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed utils::Whf getSrcWhf() const; 10129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 10229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set src whf */ 10329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setSrcWhf(const utils::Whf& whf); 10429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 10529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set source format based on rot info */ 10629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setSrcFormat(const utils::Whf& whf); 10729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 10829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* swap src w/h*/ 10929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void swapSrcWH(); 11029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 11129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* swap src rect w/h */ 11229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void swapSrcRectWH(); 11329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 11429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* returns a copy to src rect dim */ 11529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed utils::Dim getSrcRectDim() const; 11629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 11729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set src/dst rect dim */ 11829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setSrcRectDim(const utils::Dim d); 11929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setDstRectDim(const utils::Dim d); 12029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 12129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* returns a copy ro dst rect dim */ 12229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed utils::Dim getDstRectDim() const; 12329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 12429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* returns user_data[0]*/ 12529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getUserData() const; 12629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 12729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* sets user_data[0] */ 12829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setUserData(int v); 12929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 13029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* return true if current overlay is different 13129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * than lask known good overlay */ 13229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool ovChanged() const; 13329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 13429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* save mOVInfo to be last known good ov*/ 13529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void save(); 13629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 13729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* restore last known good ov to be the current */ 13829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void restore(); 13929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 14029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* 14129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Sets ROI, the unpadded region, for source buffer. 14229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Should be called before a setPosition, for small clips. 14329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed * Dim - ROI dimensions. 14429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed */ 14529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool setCrop(const utils::Dim& d); 14629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 14729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* given a dim and w/h, set overlay dim */ 14829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool setPosition(const utils::Dim& dim, int w, int h); 14929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 15029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* using user_data, sets/unsets roationvalue in mdp flags */ 15129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setRotationFlags(); 15229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 15329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* dump state of the object */ 15429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void dump() const; 15529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedprivate: 15629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 15729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* last good known ov info */ 15829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mdp_overlay mLkgo; 15929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 16029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* Actual overlay mdp structure */ 16129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mdp_overlay mOVInfo; 16229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 16329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* FD for the mdp fbnum */ 16429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed OvFD mFd; 16529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 16629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* cached size FIXME do we need it? */ 16729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed uint32_t mSize; 16829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 16929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 17029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 17129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/* MDP 3D related ctrl */ 17229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass MdpCtrl3D { 17329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedpublic: 17429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* ctor reset data */ 17529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed MdpCtrl3D(); 17629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* calls MSMFB_OVERLAY_3D */ 17729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool close(); 17829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set w/h. format is ignored*/ 17929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setWh(const utils::Whf& whf); 18029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set is_3d calls MSMFB_OVERLAY_3D */ 18129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool useVirtualFB(); 18229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set fd to be used in ioctl */ 18329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setFd(int fd); 18429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* dump */ 18529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void dump() const; 18629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedprivate: 18729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* reset */ 18829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void reset(); 18929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* actual MSM 3D info */ 19029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed msmfb_overlay_3d m3DOVInfo; 19129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* FD for the mdp 3D */ 19229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed OvFD mFd; 19329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 19429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 19529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/* MDP data */ 19629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass MdpData { 19729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedpublic: 19829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* ctor reset data */ 19929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed explicit MdpData(); 20029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 20129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* dtor close*/ 20229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ~MdpData(); 20329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 20429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* open FD */ 20529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool open(uint32_t fbnum); 20629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 20729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* memset0 the underlying mdp object */ 20829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void reset(); 20929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 21029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* close fd, and reset */ 21129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool close(); 21229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 21329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* Set FD / memid */ 21429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setMemoryId(int id); 21529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 21629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set id of mdp data */ 21729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setId(int id); 21829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 21929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* return ses id of data */ 22029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getId() const; 22129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 22229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* get underlying fd*/ 22329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getFd() const; 22429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 22529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* get memory_id */ 22629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int getMemoryId() const; 22729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 22829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* set offset in underlying mdp obj */ 22929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void setOffset(uint32_t o); 23029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 23129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* calls wrapper play */ 23229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool play(); 23329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 23429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* calls wrapper playWait */ 23529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed bool playWait(); 23629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 23729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* dump state of the object */ 23829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void dump() const; 23929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedprivate: 24029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 24129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* actual overlay mdp data */ 24229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed msmfb_overlay_data mOvData; 24329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 24429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed /* fd to mdp fbnum */ 24529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed OvFD mFd; 24629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 24729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 24829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed//--------------Inlines--------------------------------- 24929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmednamespace utils { 25029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed inline bool openDev(OvFD& fd, int fb, 25129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed const char* const s, 25229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int flags) { 25329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return overlay::open(fd, fb, Res::devTemplate, O_RDWR); 25429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 25529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 25629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 25729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedtemplate <class T> 25829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed inline void init(T& t) { 25929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed memset(&t, 0, sizeof(T)); 26029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 26129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 26229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed///// MdpCtrl ////// 26329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 26429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline MdpCtrl::MdpCtrl() : mSize(0) { 26529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed reset(); 26629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 26729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 26829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline MdpCtrl::~MdpCtrl() { 26929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed close(); 27029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 27129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 27229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpCtrl::getOrient() const { 27329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return getUserData(); 27429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 27529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 27629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpCtrl::getId() const { 27729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return mOVInfo.id; 27829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 27929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 28029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpCtrl::getFd() const { 28129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return mFd.getFD(); 28229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 28329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 28429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpCtrl::getFlags() const { 28529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return mOVInfo.flags; 28629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 28729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 28829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setFlags(int f) { 28929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.flags = f; 29029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 29129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 29229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setZ(overlay::utils::eZorder z) { 29329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.z_order = z; 29429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 29529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 29629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setWait(overlay::utils::eWait wait) { 29729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.flags = utils::setWait(wait, mOVInfo.flags); 29829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 29929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 30029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setIsFg(overlay::utils::eIsFg isFg) { 30129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.is_fg = isFg; 30229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 30329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 30429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpCtrl::ovChanged() const { 30529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // 0 means same 30629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(0 == ::memcmp(&mOVInfo, &mLkgo, sizeof (mdp_overlay))) { 30729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 30829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 30929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 31029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 31129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 31229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::save() { 31329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(static_cast<ssize_t>(mOVInfo.id) == -1) { 31429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("MdpCtrl current ov has id -1, will not save"); 31529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // FIXME dump both? 31629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return; 31729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 31829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mLkgo = mOVInfo; 31929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 32029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 32129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::restore() { 32229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(static_cast<ssize_t>(mLkgo.id) == -1) { 32329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("MdpCtrl Lkgo ov has id -1, will not restore"); 32429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // FIXME dump both? 32529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return; 32629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 32729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo = mLkgo; 32829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 32929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 33029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline overlay::utils::Whf MdpCtrl::getSrcWhf() const { 33129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return utils::Whf(mOVInfo.src.width, 33229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src.height, 33329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src.format); 33429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 33529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 33629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setSrcWhf(const overlay::utils::Whf& whf) { 33729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src.width = whf.w; 33829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src.height = whf.h; 33929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src.format = whf.format; 34029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 34129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 34229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline overlay::utils::Dim MdpCtrl::getSrcRectDim() const { 34329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return utils::Dim(mOVInfo.src_rect.x, 34429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.y, 34529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.w, 34629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.h); 34729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 34829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 34929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setSrcRectDim(const overlay::utils::Dim d) { 35029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.x = d.x; 35129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.y = d.y; 35229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.w = d.w; 35329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.h = d.h; 35429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 35529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 35629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline overlay::utils::Dim MdpCtrl::getDstRectDim() const { 35729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return utils::Dim(mOVInfo.dst_rect.x, 35829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.y, 35929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.w, 36029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.h); 36129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 36229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 36329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setDstRectDim(const overlay::utils::Dim d) { 36429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.x = d.x; 36529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.y = d.y; 36629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.w = d.w; 36729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.dst_rect.h = d.h; 36829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 36929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 37029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpCtrl::getUserData() const { return mOVInfo.user_data[0]; } 37129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 37229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setUserData(int v) { mOVInfo.user_data[0] = v; } 37329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 37429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::setRotationFlags() { 37529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed const int u = getUserData(); 37629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if (u == MDP_ROT_90 || u == MDP_ROT_270) 37729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.flags |= MDP_SOURCE_ROTATED_90; 37829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed else 37929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.flags &= ~MDP_SOURCE_ROTATED_90; 38029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 38129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 38229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 38329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::swapSrcWH() { 38429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed utils::swap(mOVInfo.src.width, 38529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src.height); } 38629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 38729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl::swapSrcRectWH() { 38829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed utils::swap(mOVInfo.src_rect.h, 38929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOVInfo.src_rect.w); } 39029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 39129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/////// MdpCtrl3D ////// 39229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 39329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline MdpCtrl3D::MdpCtrl3D() { reset(); } 39429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpCtrl3D::close() { 39529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if (m3DOVInfo.is_3d) { 39629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed m3DOVInfo.is_3d = 0; 39729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mdp_wrapper::set3D(mFd.getFD(), m3DOVInfo)) { 39829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("MdpCtrl3D close failed set3D with 0"); 39929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 40029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 40129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 40229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed reset(); 40329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 40429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 40529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl3D::reset() { 40629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed utils::memset0(m3DOVInfo); 40729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 40829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 40929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl3D::setFd(int fd) { 41029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mFd.copy(fd); 41129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed OVASSERT(mFd.valid(), "MdpCtrl3D setFd, FD should be valid"); 41229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 41329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 41429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpCtrl3D::setWh(const utils::Whf& whf) { 41529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // ignore fmt. Needed for useVirtualFB callflow 41629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed m3DOVInfo.width = whf.w; 41729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed m3DOVInfo.height = whf.h; 41829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 41929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 42029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpCtrl3D::useVirtualFB() { 42129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!m3DOVInfo.is_3d) { 42229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed m3DOVInfo.is_3d = 1; 42329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mdp_wrapper::set3D(mFd.getFD(), m3DOVInfo)) { 42429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("MdpCtrl3D close failed set3D with 0"); 42529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 42629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 42729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 42829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 42929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 43029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 43129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/////// MdpData ////// 43229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 43329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline MdpData::MdpData() { reset(); } 43429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 43529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline MdpData::~MdpData() { close(); } 43629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 43729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpData::open(uint32_t fbnum) { 43829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed // FD open 43929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!utils::openDev(mFd, fbnum, Res::devTemplate, O_RDWR)){ 44029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("Ctrl failed to open fbnum=%d", fbnum); 44129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 44229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 44329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 44429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 44529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 44629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpData::reset() { 44729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed overlay::utils::memset0(mOvData); 44829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mOvData.data.memory_id = -1; 44929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 45029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 45129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpData::close() { 45229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(-1 == mOvData.data.memory_id) return true; 45329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed reset(); 45429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mFd.close()) { 45529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 45629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 45729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 45829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 45929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 46029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpData::setMemoryId(int id) { mOvData.data.memory_id = id; } 46129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpData::getMemoryId() const { return mOvData.data.memory_id; } 46229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 46329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpData::setId(int id) { mOvData.id = id; } 46429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 46529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpData::getId() const { return mOvData.id; } 46629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 46729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline int MdpData::getFd() const { return mFd.getFD(); } 46829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 46929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline void MdpData::setOffset(uint32_t o) { mOvData.data.offset = o; } 47029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 47129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpData::play() { 47229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mdp_wrapper::play(mFd.getFD(), mOvData)){ 47329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("MdpData failed to play"); 47429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 47529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 47629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 47729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 47829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 47929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedinline bool MdpData::playWait() { 48029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mdp_wrapper::playWait(mFd.getFD(), mOvData)){ 48129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("MdpData failed to playWait"); 48229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 48329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 48429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 48529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 48629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 48729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} // overlay 48829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 48929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#endif // OVERLAY_MDP_H 490