129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed/* 229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed* Copyright (C) 2008 The Android Open Source Project 356f610dd235b577725198e9341caae92379fdf23Saurabh Shah* Copyright (c) 2010-2012, The Linux Foundation. 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#include <cutils/properties.h> 1929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#include "overlayCtrlData.h" 20f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed#include "gralloc_priv.h" //for interlace 2129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 2229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmednamespace overlay{ 2329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 24f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmedbool Ctrl::init(uint32_t fbnum) { 25f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed // MDP/FD init 26f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed if(!mMdp.init(fbnum)) { 27f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed ALOGE("Ctrl failed to init fbnum=%d", fbnum); 2829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 2929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 3029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 3129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!getScreenInfo(mInfo)) { 3229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("Ctrl failed to getScreenInfo"); 3329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 3429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 3529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 3629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 3729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 3829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 3929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedbool Ctrl::setSource(const utils::PipeArgs& args) 4029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed{ 41f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed return mMdp.setSource(args); 4229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 4329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 4429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedbool Ctrl::setPosition(const utils::Dim& dim) 4529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed{ 4629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!dim.check(mInfo.mFBWidth, mInfo.mFBHeight)) { 4729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("Ctrl setPosition error in dim"); 4829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed dim.dump(); 4929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 5029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 5129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 5229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mMdp.setPosition(dim, mInfo.mFBWidth, mInfo.mFBHeight)) { 5329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("Ctrl failed MDP setPosition"); 5429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 5529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 5629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 5729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 5829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 59d82ce1da8ebdba46e6d0119fac1aa8d4b9b033b7Ramkumar Radhakrishnanbool Ctrl::setTransform(const utils::eTransform& orient) 6029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed{ 61d82ce1da8ebdba46e6d0119fac1aa8d4b9b033b7Ramkumar Radhakrishnan if(!mMdp.setTransform(orient)) { 62f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed ALOGE("Ctrl setTransform failed for Mdp"); 63f48aef64b218d42bd2ede62dcb03a3d7831ebbf9Naseer Ahmed return false; 6429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 6529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 6629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 6729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 68d82ce1da8ebdba46e6d0119fac1aa8d4b9b033b7Ramkumar Radhakrishnanvoid Ctrl::setRotatorUsed(const bool& rotUsed) { 69d82ce1da8ebdba46e6d0119fac1aa8d4b9b033b7Ramkumar Radhakrishnan mMdp.setRotatorUsed(rotUsed); 70d82ce1da8ebdba46e6d0119fac1aa8d4b9b033b7Ramkumar Radhakrishnan} 71d82ce1da8ebdba46e6d0119fac1aa8d4b9b033b7Ramkumar Radhakrishnan 7229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedbool Ctrl::setCrop(const utils::Dim& d) 7329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed{ 7429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed if(!mMdp.setCrop(d)) { 7529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("Data setCrop failed in MDP setCrop"); 7629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return false; 7729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed } 7829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed return true; 7929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 8029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 8129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedutils::FrameBufferInfo* utils::FrameBufferInfo::sFBInfoInstance = 0; 8229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 8329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedvoid Ctrl::dump() const { 8429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("== Dump Ctrl start =="); 8529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mInfo.dump("mInfo"); 8629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mMdp.dump(); 8729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ALOGE("== Dump Ctrl end =="); 8829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} 8929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 9029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed} // overlay 91