From eaa519efa6fa8b75478f1678330661287d5df456 Mon Sep 17 00:00:00 2001 From: Bo-Rong Chen Date: Fri, 24 Jul 2026 16:09:16 -0700 Subject: [PATCH] media: Use safe GetDeviceApiLevel helper and API constants in media_codec --- starboard/android/shared/media_codec.cc | 6 ++---- starboard/android/shared/media_common.h | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/starboard/android/shared/media_codec.cc b/starboard/android/shared/media_codec.cc index fd44573e6200..00ac5b9dbdd9 100644 --- a/starboard/android/shared/media_codec.cc +++ b/starboard/android/shared/media_codec.cc @@ -14,8 +14,6 @@ #include "starboard/android/shared/media_codec.h" -#include - #include #include #include @@ -55,7 +53,7 @@ bool CanUseNdkMediaCodec( return false; } // NDK AMediaCodec requires API level >= 28. - if (android_get_device_api_level() < 28) { + if (GetDeviceApiLevel() < kAndroidApiLevelPie) { return false; } @@ -172,7 +170,7 @@ NonNullResult> MediaCodec::CreateVideoMediaCodec( // static bool MediaCodec::IsFrameRenderedCallbackEnabled() { - return android_get_device_api_level() >= 34; + return GetDeviceApiLevel() >= kAndroidApiLevelU; } FrameSize::FrameSize() : FrameSize(Size(), /*has_crop_values=*/false) {} diff --git a/starboard/android/shared/media_common.h b/starboard/android/shared/media_common.h index 89c8a957e137..dbd63c23dd4b 100644 --- a/starboard/android/shared/media_common.h +++ b/starboard/android/shared/media_common.h @@ -15,6 +15,10 @@ #ifndef STARBOARD_ANDROID_SHARED_MEDIA_COMMON_H_ #define STARBOARD_ANDROID_SHARED_MEDIA_COMMON_H_ +#include +#include + +#include #include #include @@ -26,6 +30,24 @@ namespace starboard { +constexpr int kAndroidApiLevelPie = 28; +constexpr int kAndroidApiLevelU = 34; + +inline int GetDeviceApiLevel() { +#if __ANDROID_API__ >= 24 + return ::android_get_device_api_level(); +#else + static int api_level = []() { + char sdk_version_str[PROP_VALUE_MAX] = {0}; + if (__system_property_get("ro.build.version.sdk", sdk_version_str) > 0) { + return atoi(sdk_version_str); + } + return __ANDROID_API__; + }(); + return api_level; +#endif +} + inline bool IsWidevineL1(const char* key_system) { return strcmp(key_system, "com.widevine") == 0 || strcmp(key_system, "com.widevine.alpha") == 0;