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