psb_mds.cpp revision 136ded1df5bddc7a9dc23221438e9f02460eb73a
1850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang/* 2850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * Copyright (c) 2011 Intel Corporation. All Rights Reserved. 3850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * 4850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * Permission is hereby granted, free of charge, to any person obtaining a 5850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * copy of this software and associated documentation files (the 6850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * "Software"), to deal in the Software without restriction, including 7850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * without limitation the rights to use, copy, modify, merge, publish, 8850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * distribute, sub license, and/or sell copies of the Software, and to 9850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * permit persons to whom the Software is furnished to do so, subject to 10850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * the following conditions: 11850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * 12850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * The above copyright notice and this permission notice (including the 13850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * next paragraph) shall be included in all copies or substantial portions 14850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * of the Software. 15850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * 16850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * 24850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * Authors: 25850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang * tianyang.zhu <tianyang.zhu@intel.com> 26850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang */ 27850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 28850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang//#define LOG_NDEBUG 0 29850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 30850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#define LOG_TAG "MultiDisplay" 31850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 32850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#include <utils/Log.h> 33850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#include "psb_mds.h" 34850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 35850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangnamespace android { 36850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 37850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangnamespace intel { 38850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 39850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 40850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 41850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,TianyangMDSListener::MDSListener(int mode, bool vpp, int32_t width, int32_t height) { 42850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGV("A new Mds listener 0x%x,%d,%d is created", mode, width, height); 43850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mMode = mode; 44850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mVppState = vpp; 45850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mDecoderConfigWidth = width; 46850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mDecoderConfigHeight = height; 47850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 48850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 49850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,TianyangMDSListener::~MDSListener() { 50850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGV("A Mds listener %p is distroyed", this); 51850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mMode = MDS_MODE_NONE; 52850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mVppState = false; 53850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mDecoderConfigWidth = 0; 54850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mDecoderConfigHeight = 0; 55850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 56850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 57850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangstatus_t MDSListener::onMdsMessage(int msg, void* value, int size) { 58850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang //ALOGV("Video driver receives a Mds message %d", msg); 59850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if ((msg & MDS_MSG_MODE_CHANGE) && (size == sizeof(int))) { 60850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mMode = *((int*)(value)); 61850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGI("A new mode change message: 0x%x", mMode); 62850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 63850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return NO_ERROR; 64850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 65850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 66850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangint MDSListener::getMode() { 67850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang //ALOGV("Mds mode 0x%x", mMode); 68850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return mMode; 69850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 70850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 71850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangbool MDSListener::getDecoderOutputResolution(int32_t* width, int32_t* height) { 72850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang // only for WIDI video playback 73850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (width == NULL || height == NULL) 74850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return false; 75850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang *width = mDecoderConfigWidth; 76850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang *height = mDecoderConfigHeight; 77850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGV("%dx%d", *width, *height); 78850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return true; 79850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 80850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 81850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangbool MDSListener::getVppState() { 82850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGV("MDS Vpp state %d", mVppState); 83850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return mVppState; 84850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 85850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 86850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 87850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,TianyangpsbMultiDisplayListener::psbMultiDisplayListener() { 88850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 89850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang // get mds service and register listener 90850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang sp<IServiceManager> sm = defaultServiceManager(); 91850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (sm == NULL) { 92850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang LOGE("%s: Fail to get service manager", __func__); 93850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 94850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 95850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mMds = interface_cast<IMDService>(sm->getService(String16(INTEL_MDS_SERVICE_NAME))); 96850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mMds == NULL) { 97850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang LOGE("%s: Failed to get Mds service", __func__); 98850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 99850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 100136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#if 0 101850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang // for initialization 102850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang int mode = MDS_MODE_NONE; 103850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang int32_t width = 0; 104850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang int32_t height = 0; 105850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang bool vppState = false; 106850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang sp<IMultiDisplayInfoProvider> infoProvider = mMds->getInfoProvider(); 107850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (infoProvider != NULL) { 108850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = infoProvider->getDisplayMode(true); 109850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang //TODO: use default video session: 0 110850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang //MDS will select a right video session ID 111850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang infoProvider->getDecoderOutputResolution(-1, &width, &height); 112850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang vppState = infoProvider->getVppState(); 113850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 114850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mListener = new MDSListener(mode, vppState, height, width); 115850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang sp<IMultiDisplaySinkRegistrar> sinkRegistrar = NULL; 116850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if ((sinkRegistrar = mMds->getSinkRegistrar()) == NULL) 117850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 118850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mListenerId = sinkRegistrar->registerListener( 119850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mListener, "VideoDriver", MDS_MSG_MODE_CHANGE); 120850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGV("Create a Video driver listener %d, %p", mListenerId, mListener.get()); 121850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#else 122136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang mListener = mMds->getInfoProvider(); 123136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#endif 124136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#else 125850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mListener = new MultiDisplayClient(); 126850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mListener == NULL) 127850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 128850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 129850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 130850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 131850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 132850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,TianyangpsbMultiDisplayListener::~psbMultiDisplayListener() { 133850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 134136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#if 0 135136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang ALOGV("Destroy Video driver listener %d, %p", mListenerId, mListener.get()); 136850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang sp<IMultiDisplaySinkRegistrar> sinkRegistrar = NULL; 137850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mMds == NULL || mListenerId < 0 || 138850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mListener.get() == NULL) { 139850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGE("Failed to get Mds service"); 140850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 141850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 142850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if ((sinkRegistrar = mMds->getSinkRegistrar()) == NULL) { 143850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGE("Failed to get Mds Sink registrar"); 144850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 145850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 146850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang sinkRegistrar->unregisterListener(mListenerId); 147850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mListenerId = -1; 148136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#endif 149850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#else 150850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mListener != NULL) 151850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang delete mListener; 152850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 153136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang mListener = NULL; 154850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return; 155850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 156850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 157850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangint psbMultiDisplayListener::getMode() { 158850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang int mode = MDS_MODE_NONE; 159850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 160850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mListener.get() == NULL) return MDS_INIT_VALUE; 161136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#if 0 162850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = mListener->getMode(); 163136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#else 164136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang mode = mListener->getDisplayMode(false); 165136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#endif 166850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (checkMode(mode, (MDS_VIDEO_ON | MDS_HDMI_CONNECTED))) 167850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = MDS_HDMI_VIDEO_ISPLAYING; 168850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang else if (checkMode(mode, (MDS_VIDEO_ON | MDS_WIDI_ON))) 169850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = MDS_WIDI_VIDEO_ISPLAYING; 170850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang else 171850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = MDS_INIT_VALUE; 172850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#else 173850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mListener == NULL) return MDS_MODE_NONE; 174850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = mListener->getDisplayMode(false); 175850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (checkMode(mode, MDS_HDMI_VIDEO_EXT)) 176850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = MDS_HDMI_VIDEO_ISPLAYING; 177850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang else if (checkMode(mode,MDS_WIDI_ON)) 178850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = MDS_WIDI_VIDEO_ISPLAYING; 179850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang else 180850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang mode = MDS_INIT_VALUE; 181850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 182850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang //ALOGV("mds mode is %d", mode); 183850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return mode; 184850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 185850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 186850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangbool psbMultiDisplayListener::getDecoderOutputResolution(int32_t* width, int32_t* height) { 187850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 188850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mListener.get() == NULL || 189850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang width == NULL || height == NULL) 190850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return false; 191850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang // only for WIDI video playback, 192850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang // TODO: HWC doesn't set the bit "MDS_WIDI_ON" rightly now 193136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#if 0 194850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang int mode = mListener->getMode(); 195136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#else 196136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang int mode = mListener->getDisplayMode(false); 197136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#endif 198850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (!checkMode(mode, (MDS_VIDEO_ON | MDS_WIDI_ON))) 199850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return false; 200136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#if 0 201850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return mListener->getDecoderOutputResolution(width, height); 202850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#else 203136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang return mListener->getDecoderOutputResolution(-1, width, height); 204136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#endif 205136ded1df5bddc7a9dc23221438e9f02460eb73aZhu,Tianyang#else 206850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return false; 207850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 208850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 209850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 210850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyangbool psbMultiDisplayListener::getVppState() { 211850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 212850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang if (mListener.get() == NULL) { 213850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang ALOGE("MDS listener is null"); 214850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return false; 215850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang } 216850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return mListener->getVppState(); 217850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#else 218850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang return false; 219850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 220850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang} 221850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang 222850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang}; // namespace android 223850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#ifndef USE_MDS_LEGACY 224850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang}; // namespace intel 225850b6d4c015a2f7cd6442199ebee740c1ee0b22fZhu,Tianyang#endif 226