1*0ec5a0ecSAndroid Build Coastguard Worker // Copyright 2024 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/H264.h> 6*0ec5a0ecSAndroid Build Coastguard Worker 7*0ec5a0ecSAndroid Build Coastguard Worker #include <log/log.h> 8*0ec5a0ecSAndroid Build Coastguard Worker 9*0ec5a0ecSAndroid Build Coastguard Worker namespace android { 10*0ec5a0ecSAndroid Build Coastguard Worker maxFramerateForLevelH264(C2Config::level_t level,const ui::Size & videoSize)11*0ec5a0ecSAndroid Build Coastguard Workeruint32_t maxFramerateForLevelH264(C2Config::level_t level, const ui::Size& videoSize) { 12*0ec5a0ecSAndroid Build Coastguard Worker uint32_t maxFramerate = std::numeric_limits<uint32_t>::max(); 13*0ec5a0ecSAndroid Build Coastguard Worker 14*0ec5a0ecSAndroid Build Coastguard Worker bool found = false; 15*0ec5a0ecSAndroid Build Coastguard Worker for (const H264LevelLimits& limit : kH264Limits) { 16*0ec5a0ecSAndroid Build Coastguard Worker if (limit.level != level) continue; 17*0ec5a0ecSAndroid Build Coastguard Worker 18*0ec5a0ecSAndroid Build Coastguard Worker uint64_t frameSizeMB = 19*0ec5a0ecSAndroid Build Coastguard Worker static_cast<uint64_t>((videoSize.width + 15) / 16) * ((videoSize.height + 15) / 16); 20*0ec5a0ecSAndroid Build Coastguard Worker maxFramerate = limit.maxMBPS / frameSizeMB; 21*0ec5a0ecSAndroid Build Coastguard Worker found = true; 22*0ec5a0ecSAndroid Build Coastguard Worker break; 23*0ec5a0ecSAndroid Build Coastguard Worker } 24*0ec5a0ecSAndroid Build Coastguard Worker 25*0ec5a0ecSAndroid Build Coastguard Worker if (!found) ALOGW("%s - failed to find matching H264 level=%d", __func__, level); 26*0ec5a0ecSAndroid Build Coastguard Worker 27*0ec5a0ecSAndroid Build Coastguard Worker return maxFramerate; 28*0ec5a0ecSAndroid Build Coastguard Worker } 29*0ec5a0ecSAndroid Build Coastguard Worker 30*0ec5a0ecSAndroid Build Coastguard Worker } // namespace android 31