メディア コーデック

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 を返します。