از اندروید ۱۰ (سطح API ۲۹) و بالاتر، متدهایی در MediaCodecInfo وجود دارند که اطلاعات بیشتری در مورد یک کدک فاش میکنند:
-
isSoftwareOnly() - اگر کدک فقط در نرمافزار اجرا شود، مقدار true را برمیگرداند. کدکهای نرمافزاری هیچ تضمینی در مورد عملکرد رندر ارائه نمیدهند.
-
isHardwareAccelerated() - اگر کدک توسط سختافزار شتابدهی شده باشد، مقدار true را برمیگرداند.
-
isVendor() - اگر کدک توسط فروشنده دستگاه ارائه شده باشد، مقدار true و اگر توسط پلتفرم اندروید ارائه شده باشد، مقدار false را برمیگرداند.
-
isAlias() -
MediaCodecListممکن است شامل ورودیهای اضافی برای همان کدک اصلی با استفاده از نام/نامهای کدک جایگزین (نامهای مستعار) باشد. اگر کدک موجود در این ورودی، نام مستعار کدک دیگری باشد، این متد مقدار true را برمیگرداند.
علاوه بر این، MediaCodec.getCanonicalName() نام کدک اصلی را برای کدکهای ایجاد شده از طریق نام مستعار برمیگرداند.
امتیاز عملکرد
یک نقطه عملکرد، توانایی یک کدک را برای رندر کردن ویدیو در یک ارتفاع، عرض و نرخ فریم مشخص نشان میدهد. برای مثال، نقطه عملکرد UHD_60 نشان دهنده ویدیوی با وضوح فوقالعاده بالا (3840x2160 پیکسل) است که با سرعت 60 فریم در ثانیه رندر میشود.
متد MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() فهرستی از ورودیهای PerformancePoint را که کدک میتواند رندر یا ضبط کند، برمیگرداند.
شما میتوانید با فراخوانی PerformancePoint.covers(PerformancePoint) بررسی کنید که آیا یک PerformancePoint داده شده، PerformancePoint دیگری را پوشش میدهد یا خیر. برای مثال، UHD_60.covers(UHD_50) مقدار true را برمیگرداند.
فهرستی از نقاط عملکرد برای همه کدکهای شتابدهیشده توسط سختافزار ارائه شده است. اگر کدک حتی پایینترین نقطه عملکرد استاندارد را هم نداشته باشد، این فهرست میتواند خالی باشد.
توجه داشته باشید که دستگاههایی که بدون بهروزرسانی تصویر فروشنده به اندروید ۱۰ (سطح API ۲۹) و بالاتر ارتقا یافتهاند، دادههای نقطه عملکرد نخواهند داشت، زیرا این دادهها از فروشنده HAL میآیند. در این حالت، getSupportedPerformancePoints() مقدار null را برمیگرداند.