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.covers(PerformancePoint) を呼び出します。
たとえば、UHD_60.covers(UHD_50) は true を返します。
パフォーマンス ポイントのリストには、すべてのハードウェア アクセラレーション コーデックが含まれています。 コーデックが最も低い標準パフォーマンス ポイントでさえ満たさない場合、空のリストになることがあります。
パフォーマンス ポイントに関するデータはベンダー HAL から提供されるため、ベンダー イメージを更新せずに Android 10(API レベル
29)以降にアップグレードしたデバイスの場合、パフォーマンス ポイントに関するデータがありません。この場合、getSupportedPerformancePoints()
は null を返します。