Android 10 (API レベル 29) 以上 を始めとして、コーデックに関してさらに詳しい情報を明らかにする MediaCodecInfo
のメソッドがあります。
isSoftwareOnly()
- コーデックがソフトウェアのみで実行される場合、true を返します。ソフトウェア コーデックは、レンダリング パフォーマンスに関してはまったく保証しません。
isHardwareAccelerated()
- コーデックがハードウェアによって高速化する場合、true を返します。
isVendor()
- コーデックが端末ベンダーから提供されている場合は true、Android プラットフォームから提供されている場合は false を返します。
isAlias()
MediaCodecList
には、代替コーデック名 (エイリアス) を使用する同じ基になるコーデックの追加エントリが含まれる場合があります。このメソッドは、このエントリのコーデックが別のコーデックのエイリアスである場合に true を返します。
さらに、MediaCodec.getCanonicalName()
はエイリアスを介して作成されたコーデックの基になるコーデック名を返します。
パフォーマンス ポイント
パフォーマンス ポイントは、特定の高さ、幅、フレームレートで動画をレンダリングするコーデックの機能を表します。たとえば、UHD_60
パフォーマンス ポイントは、毎秒 60 フレームでレンダリングされた超高解像度動画 (3840x2160 ピクセル) を表します。
メソッド MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
は、コーデックがレンダリングまたはキャプチャできる PerformancePoint
エントリのリストを返します。
PerformancePoint.covers(PerformancePoint)
を呼び出すことにより、特定の PerformancePoint
が別のものをカバーしているかどうかを確認できます。たとえば、UHD_60.covers(UHD_50)
は true を返します。
ハードウェアで高速化される全コーデックのパフォーマンス ポイントのリストが提供されます。コーデックが最も低い標準パフォーマンス ポイントさえ満たさない場合、これが空のリストになることがあります。
ベンダー イメージを更新せずに Android 10 (API レベル 29) 以上 にアップグレードされている端末には、パフォーマンス ポイント データはありません。このデータはベンダー HAL から提供されるからです。この場合、getSupportedPerformancePoints()
は null を返します。