از Android 10 (سطح API ۲۹) و بالاتر، روشهایی در
MediaCodecInfo وجود دارد که
اطلاعات بیشتری درباره کدک نشان میدهد:
isSoftwareOnly()- اگر کدک فقط در نرمافزار اجرا شود، مقدار «درست» را برمیگرداند. کدکهای نرمافزاری هیچ تضمینی درباره عملکرد پردازشی ارائه نمیدهند.
isHardwareAccelerated()- اگر کدک توسط سختافزار شتاب داده شود، «درست» را برمیگرداند.
isVendor()- اگر کدک توسط فروشنده دستگاه ارائه شده باشد، «درست» را برمیگرداند و اگر توسط پلاتفرم Android ارائه شده باشد، «نادرست» را برمیگرداند.
isAlias()MediaCodecListممکن است حاوی ورودیهای اضافی برای همان کدک اصلی بااستفاده از نام/های کدک جایگزین (نام/های مستعار) باشد. اگر کدک موجود در این ورودی نام مستعار کدک دیگری باشد، این روش مقدار درست را برمیگرداند.
علاوهبراین،
MediaCodec.getCanonicalName()
نام کدک اصلی را برای کدکهای ایجادشده ازطریق نام مستعار برمیگرداند.
امتیازهای عملکرد
نقطه عملکرد نشاندهنده توانایی کدک برای پرداز کردن ویدیو در ارتفاع، عرض، و نرخ فریم خاصی است. برای مثال، نقطه عملکرد UHD_60
نشاندهنده ویدیو با وضوح فوقالعاده بالا (۳۸۴۰x۲۱۶۰ پیکسل) است که با ۶۰ فریم
در ثانیه ارائه میشود.
روش
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
فهرستی از ورودیهای
PerformancePoint
را برمیگرداند که کدک میتواند پردازش یا ضبط کند.
با فراخوانی
PerformancePoint.covers(PerformancePoint) میتوانید بررسی کنید که آیا PerformancePoint دادهشده دیگری را پوشش میدهد یا نه.
برای مثال، UHD_60.covers(UHD_50) مقدار درست را برمیگرداند.
فهرستی از نقاط عملکرد برای همه کدکهای شتابیافته سختافزاری ارائه شده است. اگر کدک حتی پایینترین نقطه عملکرد استاندارد را برآورده نکند، این فهرست ممکن است خالی باشد.
توجه داشته باشید دستگاههایی که بدون بهروزرسانی تصویر فروشنده به Android 10 (سطح API ۲۹) و بالاتر ارتقا یافتهاند، دادههای نقطه عملکرد را نخواهند داشت، زیرا این دادهها از HAL فروشنده میآید. دراینصورت، getSupportedPerformancePoints()
مقدار تهی برمیگرداند.