Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b3f96f8 authored by Harish Mahendrakar's avatar Harish Mahendrakar
Browse files

Codec2CommonUtils: Reduce android_get_device_api_level() calls

Instead of calling android_get_device_api_level() for every frame,
it is now called once and stored in a static variable.

Bug: 246792159
Test: Decode 10-bit clip and confirm android_get_device_api_level() is
called only once.

Change-Id: I10402a3f729910e87fc74d48e0afa0830c7873ba
parent 591bc3ab
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -32,10 +32,15 @@
namespace android {


static bool isAtLeast(int version, const char *codeName) {
    char deviceCodeName[PROP_VALUE_MAX];
    __system_property_get("ro.build.version.codename", deviceCodeName);
    return android_get_device_api_level() >= version || !strcmp(deviceCodeName, codeName);
static bool isAtLeast(int version, const std::string codeName) {
    static std::once_flag sCheckOnce;
    static std::string sDeviceCodeName;
    static int sDeviceApiLevel;
    std::call_once(sCheckOnce, [&](){
        sDeviceCodeName = base::GetProperty("ro.build.version.codename", "");
        sDeviceApiLevel = android_get_device_api_level();
    });
    return sDeviceApiLevel >= version || sDeviceCodeName == codeName;
}

bool isAtLeastT() {