android_get_device_api_level
///Users/yzfhkms-m/pripro/D/library/ffmpeg/ffmpeg-6.1.1/libavcodec/mediacodec_wrapper.c
{
//ret = android_get_device_api_level();
//ndk 编译的api层级
ret = 28;/21
}
{
int ff_Build_SDK_INT(AVCodecContext *avctx)
{
int ret = -1;
#if __ANDROID_API__ >= 24
// android_get_device_api_level() is a static inline before API level 29.
// dlsym() might doesn't work.
//
// We can implement android_get_device_api_level() by
// __system_property_get(), but __system_property_get() has created a lot of
// troubles and is deprecated. So avoid using __system_property_get() for
// now.
//
// Hopy we can remove the conditional compilation finally by bumping the
// required API level.
//
//ret = android_get_device_api_level();
ret = 28;
#else
JNIEnv *env = NULL;
jclass versionClass;
jfieldID sdkIntFieldID;
JNI_GET_ENV_OR_RETURN(env, avctx, -1);
versionClass = (*env)->FindClass(env, "android/os/Build$VERSION");
sdkIntFieldID = (*env)->GetStaticFieldID(env, versionClass, "SDK_INT", "I");
ret = (*env)->GetStaticIntField(env, versionClass, sdkIntFieldID);
(*env)->DeleteLocalRef(env, versionClass);
#endif
av_log(avctx, AV_LOG_DEBUG, "device api level %d\n", ret);
return ret;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律