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