OutputConfiguration.cpp revision 758c215374dba397dabe17b8e96dd38593c09dd7
1b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh/* 2b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** 3b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** Copyright 2015, The Android Open Source Project 4b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** 5b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** Licensed under the Apache License, Version 2.0 (the "License"); 6b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** you may not use this file except in compliance with the License. 7b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** You may obtain a copy of the License at 8b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** 9b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** http://www.apache.org/licenses/LICENSE-2.0 10b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** 11b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** Unless required by applicable law or agreed to in writing, software 12b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** distributed under the License is distributed on an "AS IS" BASIS, 13b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** See the License for the specific language governing permissions and 15b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh** limitations under the License. 16b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh*/ 17b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 18b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh#define LOG_TAG "OutputConfiguration" 19d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala//#define LOG_NDEBUG 0 20d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 21b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh#include <utils/Log.h> 22b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 23b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh#include <camera/camera2/OutputConfiguration.h> 24b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh#include <binder/Parcel.h> 25f675356f9e275b9a52101a997ad20404922b5147Brian Anderson#include <gui/Surface.h> 26f675356f9e275b9a52101a997ad20404922b5147Brian Anderson#include <utils/String8.h> 27b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 28b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yehnamespace android { 29b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 30b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 31b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yehconst int OutputConfiguration::INVALID_ROTATION = -1; 32018107a82d80f186d3efca250e38e9c85436a4d9Zhijun Heconst int OutputConfiguration::INVALID_SET_ID = -1; 33b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 340129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wangconst std::vector<sp<IGraphicBufferProducer>>& 350129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang OutputConfiguration::getGraphicBufferProducers() const { 360129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return mGbps; 37b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh} 38b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 39b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yehint OutputConfiguration::getRotation() const { 40b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh return mRotation; 41b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh} 42b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 43018107a82d80f186d3efca250e38e9c85436a4d9Zhijun Heint OutputConfiguration::getSurfaceSetID() const { 44018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He return mSurfaceSetID; 45018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He} 46018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He 475d677d1f0879d5101e38df480a38228a64d63959Zhijun Heint OutputConfiguration::getSurfaceType() const { 485d677d1f0879d5101e38df480a38228a64d63959Zhijun He return mSurfaceType; 495d677d1f0879d5101e38df480a38228a64d63959Zhijun He} 505d677d1f0879d5101e38df480a38228a64d63959Zhijun He 515d677d1f0879d5101e38df480a38228a64d63959Zhijun Heint OutputConfiguration::getWidth() const { 525d677d1f0879d5101e38df480a38228a64d63959Zhijun He return mWidth; 535d677d1f0879d5101e38df480a38228a64d63959Zhijun He} 545d677d1f0879d5101e38df480a38228a64d63959Zhijun He 555d677d1f0879d5101e38df480a38228a64d63959Zhijun Heint OutputConfiguration::getHeight() const { 565d677d1f0879d5101e38df480a38228a64d63959Zhijun He return mHeight; 575d677d1f0879d5101e38df480a38228a64d63959Zhijun He} 585d677d1f0879d5101e38df480a38228a64d63959Zhijun He 59758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wangbool OutputConfiguration::isDeferred() const { 60758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang return mIsDeferred; 61758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang} 62758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang 63758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wangbool OutputConfiguration::isShared() const { 64758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang return mIsShared; 65758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang} 66758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang 67d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville TalvalaOutputConfiguration::OutputConfiguration() : 68d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala mRotation(INVALID_ROTATION), 695d677d1f0879d5101e38df480a38228a64d63959Zhijun He mSurfaceSetID(INVALID_SET_ID), 705d677d1f0879d5101e38df480a38228a64d63959Zhijun He mSurfaceType(SURFACE_TYPE_UNKNOWN), 715d677d1f0879d5101e38df480a38228a64d63959Zhijun He mWidth(0), 72758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mHeight(0), 73758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mIsDeferred(false), 74758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mIsShared(false) { 75d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala} 76d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 77f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville TalvalaOutputConfiguration::OutputConfiguration(const android::Parcel& parcel) : 78d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala mRotation(INVALID_ROTATION), 79d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala mSurfaceSetID(INVALID_SET_ID) { 80d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala readFromParcel(&parcel); 81d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala} 82d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 83f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvalastatus_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) { 84d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala status_t err = OK; 85b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh int rotation = 0; 86d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 87d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if (parcel == nullptr) return BAD_VALUE; 88d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 89d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if ((err = parcel->readInt32(&rotation)) != OK) { 90b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh ALOGE("%s: Failed to read rotation from parcel", __FUNCTION__); 91d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala return err; 92b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh } 93b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 94018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He int setID = INVALID_SET_ID; 95d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if ((err = parcel->readInt32(&setID)) != OK) { 96018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He ALOGE("%s: Failed to read surface set ID from parcel", __FUNCTION__); 97d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala return err; 98018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He } 99018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He 1005d677d1f0879d5101e38df480a38228a64d63959Zhijun He int surfaceType = SURFACE_TYPE_UNKNOWN; 1015d677d1f0879d5101e38df480a38228a64d63959Zhijun He if ((err = parcel->readInt32(&surfaceType)) != OK) { 1025d677d1f0879d5101e38df480a38228a64d63959Zhijun He ALOGE("%s: Failed to read surface type from parcel", __FUNCTION__); 1035d677d1f0879d5101e38df480a38228a64d63959Zhijun He return err; 1045d677d1f0879d5101e38df480a38228a64d63959Zhijun He } 1055d677d1f0879d5101e38df480a38228a64d63959Zhijun He 1065d677d1f0879d5101e38df480a38228a64d63959Zhijun He int width = 0; 1075d677d1f0879d5101e38df480a38228a64d63959Zhijun He if ((err = parcel->readInt32(&width)) != OK) { 1085d677d1f0879d5101e38df480a38228a64d63959Zhijun He ALOGE("%s: Failed to read surface width from parcel", __FUNCTION__); 1095d677d1f0879d5101e38df480a38228a64d63959Zhijun He return err; 1105d677d1f0879d5101e38df480a38228a64d63959Zhijun He } 1115d677d1f0879d5101e38df480a38228a64d63959Zhijun He 1125d677d1f0879d5101e38df480a38228a64d63959Zhijun He int height = 0; 1135d677d1f0879d5101e38df480a38228a64d63959Zhijun He if ((err = parcel->readInt32(&height)) != OK) { 1145d677d1f0879d5101e38df480a38228a64d63959Zhijun He ALOGE("%s: Failed to read surface height from parcel", __FUNCTION__); 1155d677d1f0879d5101e38df480a38228a64d63959Zhijun He return err; 1165d677d1f0879d5101e38df480a38228a64d63959Zhijun He } 1175d677d1f0879d5101e38df480a38228a64d63959Zhijun He 118758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang int isDeferred = 0; 119758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang if ((err = parcel->readInt32(&isDeferred)) != OK) { 120758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang ALOGE("%s: Failed to read surface isDeferred flag from parcel", __FUNCTION__); 1210129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return err; 1220129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 123758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang 124758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang int isShared = 0; 125758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang if ((err = parcel->readInt32(&isShared)) != OK) { 126758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang ALOGE("%s: Failed to read surface isShared flag from parcel", __FUNCTION__); 127758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang return err; 128758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang } 129758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang 130758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang if (isDeferred && surfaceType != SURFACE_TYPE_SURFACE_VIEW && 131758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang surfaceType != SURFACE_TYPE_SURFACE_TEXTURE) { 132758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang ALOGE("%s: Invalid surface type for deferred configuration", __FUNCTION__); 1330129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return BAD_VALUE; 1340129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 1350129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 136758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang std::vector<view::Surface> surfaceShims; 137758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang if ((err = parcel->readParcelableVector(&surfaceShims)) != OK) { 138758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang ALOGE("%s: Failed to read surface(s) from parcel", __FUNCTION__); 139758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang return err; 140d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala } 141d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 142b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh mRotation = rotation; 143018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He mSurfaceSetID = setID; 1445d677d1f0879d5101e38df480a38228a64d63959Zhijun He mSurfaceType = surfaceType; 1455d677d1f0879d5101e38df480a38228a64d63959Zhijun He mWidth = width; 1465d677d1f0879d5101e38df480a38228a64d63959Zhijun He mHeight = height; 147758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mIsDeferred = isDeferred != 0; 148758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mIsShared = isShared != 0; 149758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang for (auto& surface : surfaceShims) { 150758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang ALOGV("%s: OutputConfiguration: %p, name %s", __FUNCTION__, 151758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang surface.graphicBufferProducer.get(), 152758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang String8(surface.name).string()); 153758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mGbps.push_back(surface.graphicBufferProducer); 154758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang } 155b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 1560129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang ALOGV("%s: OutputConfiguration: rotation = %d, setId = %d, surfaceType = %d", 1570129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang __FUNCTION__, mRotation, mSurfaceSetID, mSurfaceType); 158d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 159d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala return err; 160b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh} 161b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 162018107a82d80f186d3efca250e38e9c85436a4d9Zhijun HeOutputConfiguration::OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation, 163018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He int surfaceSetID) { 1640129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang mGbps.push_back(gbp); 1653450ba7879be6522ea46a56c5e66e5382f5dd5baRuben Brunk mRotation = rotation; 166018107a82d80f186d3efca250e38e9c85436a4d9Zhijun He mSurfaceSetID = surfaceSetID; 167758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mIsDeferred = false; 168758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang mIsShared = false; 1693450ba7879be6522ea46a56c5e66e5382f5dd5baRuben Brunk} 1703450ba7879be6522ea46a56c5e66e5382f5dd5baRuben Brunk 171f51fca277eb5b86bd0b2e3fc90ecb2b63089de29Eino-Ville Talvalastatus_t OutputConfiguration::writeToParcel(android::Parcel* parcel) const { 172d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 173d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if (parcel == nullptr) return BAD_VALUE; 174d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala status_t err = OK; 175b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 176d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala err = parcel->writeInt32(mRotation); 177d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if (err != OK) return err; 178d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 179d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala err = parcel->writeInt32(mSurfaceSetID); 180d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if (err != OK) return err; 181d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala 1825d677d1f0879d5101e38df480a38228a64d63959Zhijun He err = parcel->writeInt32(mSurfaceType); 1835d677d1f0879d5101e38df480a38228a64d63959Zhijun He if (err != OK) return err; 1845d677d1f0879d5101e38df480a38228a64d63959Zhijun He 1855d677d1f0879d5101e38df480a38228a64d63959Zhijun He err = parcel->writeInt32(mWidth); 1865d677d1f0879d5101e38df480a38228a64d63959Zhijun He if (err != OK) return err; 1875d677d1f0879d5101e38df480a38228a64d63959Zhijun He 1885d677d1f0879d5101e38df480a38228a64d63959Zhijun He err = parcel->writeInt32(mHeight); 1895d677d1f0879d5101e38df480a38228a64d63959Zhijun He if (err != OK) return err; 1905d677d1f0879d5101e38df480a38228a64d63959Zhijun He 191758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang err = parcel->writeInt32(mIsDeferred ? 1 : 0); 192d56db1d2bee182d1851097a9c712712fc094d117Eino-Ville Talvala if (err != OK) return err; 193b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 194758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang err = parcel->writeInt32(mIsShared ? 1 : 0); 195758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang if (err != OK) return err; 196758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang 197758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang std::vector<view::Surface> surfaceShims; 198758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang for (auto& gbp : mGbps) { 1990129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang view::Surface surfaceShim; 2000129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang surfaceShim.name = String16("unknown_name"); // name of surface 201758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang surfaceShim.graphicBufferProducer = gbp; 202758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang surfaceShims.push_back(surfaceShim); 2030129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 204758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang err = parcel->writeParcelableVector(surfaceShims); 205758c215374dba397dabe17b8e96dd38593c09dd7Shuzhen Wang if (err != OK) return err; 2060129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 207b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh return OK; 208b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh} 209b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh 2100129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wangbool OutputConfiguration::gbpsEqual(const OutputConfiguration& other) const { 2110129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang const std::vector<sp<IGraphicBufferProducer> >& otherGbps = 2120129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang other.getGraphicBufferProducers(); 2130129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2140129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang if (mGbps.size() != otherGbps.size()) { 2150129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return false; 2160129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 2170129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2180129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang for (size_t i = 0; i < mGbps.size(); i++) { 2190129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang if (mGbps[i] != otherGbps[i]) { 2200129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return false; 2210129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 2220129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 2230129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2240129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return true; 2250129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang} 2260129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2270129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wangbool OutputConfiguration::gbpsLessThan(const OutputConfiguration& other) const { 2280129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang const std::vector<sp<IGraphicBufferProducer> >& otherGbps = 2290129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang other.getGraphicBufferProducers(); 2300129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2310129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang if (mGbps.size() != otherGbps.size()) { 2320129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return mGbps.size() < otherGbps.size(); 2330129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 2340129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2350129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang for (size_t i = 0; i < mGbps.size(); i++) { 2360129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang if (mGbps[i] != otherGbps[i]) { 2370129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return mGbps[i] < otherGbps[i]; 2380129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 2390129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang } 2400129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang 2410129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang return false; 2420129d52df9794d6fdf06be304722b5cb51a2eab5Shuzhen Wang} 243b97babb8c08969b55af3b6456d15f764c8873d3fYin-Chia Yeh}; // namespace android 244