メディア コーデック

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