1*0ec5a0ecSAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors. All rights reserved. 2*0ec5a0ecSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*0ec5a0ecSAndroid Build Coastguard Worker // found in the LICENSE file. 4*0ec5a0ecSAndroid Build Coastguard Worker 5*0ec5a0ecSAndroid Build Coastguard Worker #include <v4l2_codec2/common/Common.h> 6*0ec5a0ecSAndroid Build Coastguard Worker 7*0ec5a0ecSAndroid Build Coastguard Worker #include <base/numerics/safe_math.h> 8*0ec5a0ecSAndroid Build Coastguard Worker 9*0ec5a0ecSAndroid Build Coastguard Worker namespace android { 10*0ec5a0ecSAndroid Build Coastguard Worker contains(const Rect & rect1,const Rect & rect2)11*0ec5a0ecSAndroid Build Coastguard Workerbool contains(const Rect& rect1, const Rect& rect2) { 12*0ec5a0ecSAndroid Build Coastguard Worker return (rect2.left >= rect1.left && rect2.right <= rect1.right && rect2.top >= rect1.top && 13*0ec5a0ecSAndroid Build Coastguard Worker rect2.bottom <= rect1.bottom); 14*0ec5a0ecSAndroid Build Coastguard Worker } 15*0ec5a0ecSAndroid Build Coastguard Worker toString(const Rect & rect)16*0ec5a0ecSAndroid Build Coastguard Workerstd::string toString(const Rect& rect) { 17*0ec5a0ecSAndroid Build Coastguard Worker return std::string("(") + std::to_string(rect.left) + "," + std::to_string(rect.top) + ") " + 18*0ec5a0ecSAndroid Build Coastguard Worker std::to_string(rect.width()) + "x" + std::to_string(rect.height()); 19*0ec5a0ecSAndroid Build Coastguard Worker } 20*0ec5a0ecSAndroid Build Coastguard Worker getArea(const ui::Size & size)21*0ec5a0ecSAndroid Build Coastguard Workerstd::optional<int> getArea(const ui::Size& size) { 22*0ec5a0ecSAndroid Build Coastguard Worker base::CheckedNumeric<int> checked_area = size.width; 23*0ec5a0ecSAndroid Build Coastguard Worker checked_area *= size.height; 24*0ec5a0ecSAndroid Build Coastguard Worker return checked_area.IsValid() ? std::optional<int>(checked_area.ValueOrDie()) : std::nullopt; 25*0ec5a0ecSAndroid Build Coastguard Worker } 26*0ec5a0ecSAndroid Build Coastguard Worker isEmpty(const ui::Size & size)27*0ec5a0ecSAndroid Build Coastguard Workerbool isEmpty(const ui::Size& size) { 28*0ec5a0ecSAndroid Build Coastguard Worker return !size.width || !size.height; 29*0ec5a0ecSAndroid Build Coastguard Worker } 30*0ec5a0ecSAndroid Build Coastguard Worker toString(const ui::Size & size)31*0ec5a0ecSAndroid Build Coastguard Workerstd::string toString(const ui::Size& size) { 32*0ec5a0ecSAndroid Build Coastguard Worker return std::to_string(size.width) + "x" + std::to_string(size.height); 33*0ec5a0ecSAndroid Build Coastguard Worker } 34*0ec5a0ecSAndroid Build Coastguard Worker 35*0ec5a0ecSAndroid Build Coastguard Worker // Check whether the specified profile is a valid profile for the specified codec. isValidProfileForCodec(VideoCodec codec,C2Config::profile_t profile)36*0ec5a0ecSAndroid Build Coastguard Workerbool isValidProfileForCodec(VideoCodec codec, C2Config::profile_t profile) { 37*0ec5a0ecSAndroid Build Coastguard Worker switch (codec) { 38*0ec5a0ecSAndroid Build Coastguard Worker case VideoCodec::H264: 39*0ec5a0ecSAndroid Build Coastguard Worker return ((profile >= C2Config::PROFILE_AVC_BASELINE) && 40*0ec5a0ecSAndroid Build Coastguard Worker (profile <= C2Config::PROFILE_AVC_ENHANCED_MULTIVIEW_DEPTH_HIGH)); 41*0ec5a0ecSAndroid Build Coastguard Worker case VideoCodec::VP8: 42*0ec5a0ecSAndroid Build Coastguard Worker return ((profile >= C2Config::PROFILE_VP8_0) && (profile <= C2Config::PROFILE_VP8_3)); 43*0ec5a0ecSAndroid Build Coastguard Worker case VideoCodec::VP9: 44*0ec5a0ecSAndroid Build Coastguard Worker return ((profile >= C2Config::PROFILE_VP9_0) && (profile <= C2Config::PROFILE_VP9_3)); 45*0ec5a0ecSAndroid Build Coastguard Worker case VideoCodec::HEVC: 46*0ec5a0ecSAndroid Build Coastguard Worker return ((profile >= C2Config::PROFILE_HEVC_MAIN) && 47*0ec5a0ecSAndroid Build Coastguard Worker (profile <= C2Config::PROFILE_HEVC_3D_MAIN)); 48*0ec5a0ecSAndroid Build Coastguard Worker default: 49*0ec5a0ecSAndroid Build Coastguard Worker return false; 50*0ec5a0ecSAndroid Build Coastguard Worker } 51*0ec5a0ecSAndroid Build Coastguard Worker } 52*0ec5a0ecSAndroid Build Coastguard Worker 53*0ec5a0ecSAndroid Build Coastguard Worker } // namespace android 54