1befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/*
247c130ffbafe12d6ddf6e8df4ffdd9916318c379Raj kamal* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*
4befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* Redistribution and use in source and binary forms, with or without
5befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* modification, are permitted provided that the following conditions are
6befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* met:
7befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*    * Redistributions of source code must retain the above copyright
8befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      notice, this list of conditions and the following disclaimer.
9befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*    * Redistributions in binary form must reproduce the above
10befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      copyright notice, this list of conditions and the following
11befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      disclaimer in the documentation and/or other materials provided
12befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      with the distribution.
135070c694011ddc30673ec68a9d1d74dc713c49f2Duy Truong*    * Neither the name of The Linux Foundation nor the names of its
14befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      contributors may be used to endorse or promote products derived
15befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      from this software without specific prior written permission.
16befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*
17befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*/
29befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
30befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#ifndef OVERLAY_CTRLDATA_H
31befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#define OVERLAY_CTRLDATA_H
32befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
33befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include "overlayUtils.h"
34befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include "overlayMdp.h"
35befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include "gralloc_priv.h" // INTERLACE_MASK
36befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
37befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmednamespace ovutils = overlay::utils;
38befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
39befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmednamespace overlay {
40befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
41befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/*
42befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* Sequence to use:
43ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed* init
44befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* start
45befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* setXXX
46befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* close
47befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* */
48befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedclass Ctrl : utils::NoCopy {
49befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedpublic:
50befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
51befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* ctor */
52b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    explicit Ctrl(const int& dpy);
53befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* dtor close */
54befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ~Ctrl();
55befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
56befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* set source using whf, orient and wait flag */
57327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    void setSource(const utils::PipeArgs& args);
58befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* set crop info and pass it down to mdp */
59327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    void setCrop(const utils::Dim& d);
6008cbd816733f17c957411ae915f2543afea70b67Sushil Chauhan    /* set color for mdp pipe */
6108cbd816733f17c957411ae915f2543afea70b67Sushil Chauhan    void setColor(const uint32_t color);
62ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    /* set orientation */
63327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    void setTransform(const utils::eTransform& p);
64ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    /* set mdp position using dim */
65327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    void setPosition(const utils::Dim& dim);
665d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah    /* set mdp visual params using metadata */
675d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah    bool setVisualParams(const MetaData_t &metadata);
68befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* mdp set overlay/commit changes */
69befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    bool commit();
70befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
71befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* ctrl id */
72ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    int  getPipeId() const;
73befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* ctrl fd */
74befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    int  getFd() const;
75327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    /* retrieve crop data */
76befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    utils::Dim getCrop() const;
77327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    utils::Dim getPosition() const;
78327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    /* Set downscale */
79327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    void setDownscale(int dscale_factor);
80327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    /* Update the src format based on rotator's dest */
81327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    void updateSrcFormat(const uint32_t& rotDstFormat);
82348ca172f707a14925ba1652e9bcb3d4c2a695f4Saurabh Shah    /* return pipe priority */
83348ca172f707a14925ba1652e9bcb3d4c2a695f4Saurabh Shah    uint8_t getPriority() const;
84a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah    /* dump the state of the object */
85a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah    void dump() const;
86a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah    /* Return the dump in the specified buffer */
87a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah    void getDump(char *buf, size_t len);
88a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah
891029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    static bool validateAndSet(Ctrl* ctrlArray[], const int& count,
901029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah            const int& fbFd);
91befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedprivate:
92befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    // mdp ctrl struct(info e.g.)
93b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    MdpCtrl *mMdp;
94befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed};
95befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
96befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
97befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedclass Data : utils::NoCopy {
98befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedpublic:
99befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* init, reset */
100b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    explicit Data(const int& dpy);
101befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* calls close */
102befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ~Data();
103ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    /* set overlay pipe id in the mdp struct */
104ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    void setPipeId(int id);
105befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* get overlay id in the mdp struct */
106ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    int getPipeId() const;
107befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* queue buffer to the overlay */
108ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    bool queueBuffer(int fd, uint32_t offset);
109befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    /* sump the state of the obj */
110befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    void dump() const;
111a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah    /* Return the dump in the specified buffer */
112a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah    void getDump(char *buf, size_t len);
113a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah
114ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmedprivate:
115befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    // mdp data struct
116b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    MdpData *mMdp;
117befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed};
118befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
119befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed//-------------Inlines-------------------------------
120befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
121b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shahinline Ctrl::Ctrl(const int& dpy) : mMdp(new MdpCtrl(dpy)) {
122befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
123befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
124befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline Ctrl::~Ctrl() {
125b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    delete mMdp;
126befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
127befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
128327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::setSource(const utils::PipeArgs& args)
129327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah{
130b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->setSource(args);
131327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah}
132327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah
133327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::setPosition(const utils::Dim& dim)
134327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah{
135b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->setPosition(dim);
136327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah}
137327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah
138327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::setTransform(const utils::eTransform& orient)
139327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah{
140b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->setTransform(orient);
141327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah}
142327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah
143327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::setCrop(const utils::Dim& d)
144327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah{
145b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->setCrop(d);
146327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah}
147327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah
14808cbd816733f17c957411ae915f2543afea70b67Sushil Chauhaninline void Ctrl::setColor(const uint32_t color)
14908cbd816733f17c957411ae915f2543afea70b67Sushil Chauhan{
150b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->setColor(color);
15108cbd816733f17c957411ae915f2543afea70b67Sushil Chauhan}
15208cbd816733f17c957411ae915f2543afea70b67Sushil Chauhan
1535d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shahinline bool Ctrl::setVisualParams(const MetaData_t &metadata)
1545d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah{
155b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    if (!mMdp->setVisualParams(metadata)) {
1565d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah        ALOGE("Ctrl setVisualParams failed in MDP setVisualParams");
1575d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah        return false;
1585d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah    }
1595d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah    return true;
1605d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah}
1615d50448ce691782fde0c26ec8247b3d5d6b2de82Saurabh Shah
162327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::dump() const {
163327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    ALOGE("== Dump Ctrl start ==");
164b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->dump();
165327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah    ALOGE("== Dump Ctrl end ==");
166327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah}
167327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah
168327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline bool Ctrl::commit() {
169b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    if(!mMdp->set()) {
170327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shah        ALOGE("Ctrl commit failed set overlay");
171befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
172befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
173befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
174befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
175befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
176ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmedinline int Ctrl::getPipeId() const {
177b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    return mMdp->getPipeId();
178befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
179befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
180befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline int Ctrl::getFd() const {
181b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    return mMdp->getFd();
182befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
183befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
184327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::updateSrcFormat(const uint32_t& rotDstFmt) {
185b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->updateSrcFormat(rotDstFmt);
186befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
187befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
1881029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shahinline bool Ctrl::validateAndSet(Ctrl* ctrlArray[], const int& count,
1891029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah        const int& fbFd) {
1901029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    MdpCtrl* mdpCtrlArray[count];
1911029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    memset(&mdpCtrlArray, 0, sizeof(mdpCtrlArray));
1921029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah
1931029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    for(int i = 0; i < count; i++) {
1941029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah        mdpCtrlArray[i] = ctrlArray[i]->mMdp;
1951029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    }
1961029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah
1971029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    bool ret = MdpCtrl::validateAndSet(mdpCtrlArray, count, fbFd);
1981029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah    return ret;
1991029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah}
2001029ad2b12d5f30e77b2c2f85da891f2d1842424Saurabh Shah
201befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline utils::Dim Ctrl::getCrop() const {
202b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    return mMdp->getSrcRectDim();
203befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
204befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
205327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline utils::Dim Ctrl::getPosition() const {
206b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    return mMdp->getDstRectDim();
2078b2d50f3c665329517352269a687bdf562b2cc6dRamkumar Radhakrishnan}
2088b2d50f3c665329517352269a687bdf562b2cc6dRamkumar Radhakrishnan
209327b2ba85538669304a50d0fb6cc2f6aab7aaf3bSaurabh Shahinline void Ctrl::setDownscale(int dscale_factor) {
210b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->setDownscale(dscale_factor);
2118b2d50f3c665329517352269a687bdf562b2cc6dRamkumar Radhakrishnan}
2128b2d50f3c665329517352269a687bdf562b2cc6dRamkumar Radhakrishnan
213348ca172f707a14925ba1652e9bcb3d4c2a695f4Saurabh Shahinline uint8_t Ctrl::getPriority() const {
214348ca172f707a14925ba1652e9bcb3d4c2a695f4Saurabh Shah    return mMdp->getPriority();
215348ca172f707a14925ba1652e9bcb3d4c2a695f4Saurabh Shah}
216348ca172f707a14925ba1652e9bcb3d4c2a695f4Saurabh Shah
217a22f5873a9974b00f352370e077db9788ad67699Saurabh Shahinline void Ctrl::getDump(char *buf, size_t len) {
218b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->getDump(buf, len);
219a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah}
220a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah
221b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shahinline Data::Data(const int& dpy) : mMdp(new MdpData(dpy)) {
222befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
223befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
224b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shahinline Data::~Data() {
225b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    delete mMdp;
226befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
227befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
228b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shahinline void Data::setPipeId(int id) { mMdp->setPipeId(id); }
229b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah
230b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shahinline int Data::getPipeId() const { return mMdp->getPipeId(); }
231befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
232ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmedinline bool Data::queueBuffer(int fd, uint32_t offset) {
233b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    return mMdp->play(fd, offset);
234befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
235befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
236befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void Data::dump() const {
237befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("== Dump Data MDP start ==");
238b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->dump();
239befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("== Dump Data MDP end ==");
240befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
241befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
242a22f5873a9974b00f352370e077db9788ad67699Saurabh Shahinline void Data::getDump(char *buf, size_t len) {
243b4144169bc4681fe47647bc127be3da2e59e9623Saurabh Shah    mMdp->getDump(buf, len);
244a22f5873a9974b00f352370e077db9788ad67699Saurabh Shah}
245befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
246befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed} // overlay
247befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
248befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#endif
249