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