Android 10(API レベル 29)以降では、コーデックに関する詳細情報を表示するメソッドが MediaCodecInfo
に含まれています。
isSoftwareOnly()
- コーデックがソフトウェアでのみ実行されている場合は true を返します。ソフトウェア コーデックでは、レンダリングのパフォーマンスは保証されません。
isHardwareAccelerated()
- コーデックがハードウェアによって高速化される場合に true を返します。
isVendor()
- コーデックがデバイス ベンダーから提供されている場合は true を返し、Android プラットフォームから提供されている場合は false を返します。
isAlias()
MediaCodecList
には、代替コーデック名(エイリアス)を使用して、基盤となる同じコーデックの追加エントリが含まれる場合があります。このエントリのコーデックが別のコーデックのエイリアスである場合、このメソッドは true を返します。
また、MediaCodec.getCanonicalName()
はエイリアス経由で作成されたコーデックの基になるコーデック名を返します。
パフォーマンス ポイント
パフォーマンス ポイントは、特定の高さ、幅、フレームレートで動画をレンダリングするコーデックの能力を表します。たとえば、UHD_60
パフォーマンス ポイントは、60 フレーム/秒でレンダリングされた超高画質動画(3,840x2,160 ピクセル)を表します。
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
メソッドは、コーデックがレンダリングまたはキャプチャできる PerformancePoint
エントリのリストを返します。
特定の PerformancePoint
が別の PerformancePoint.covers(PerformancePoint)
を呼び出すと、別のレイヤが覆われているかどうかを確認できます。
たとえば、UHD_60.covers(UHD_50)
は true を返します。
パフォーマンス ポイントのリストは、すべてのハードウェア アクセラレーション コーデックについて提供されます。 コーデックが最低の標準パフォーマンス ポイントでも満たしていない場合は、空のリストになることがあります。
なお、ベンダー イメージを更新せずに Android 10(API レベル 29)以降にアップグレードしたデバイスの場合、パフォーマンス ポイント データはベンダー HAL から取得されるため、パフォーマンス ポイント データはありません。この場合、getSupportedPerformancePoints()
は null を返します。