ImageReader.NewInstance メソッド

定義

オーバーロード

名前 説明
NewInstance(Int32, Int32, ImageFormatType, Int32)

目的のサイズと形式の画像用の新しいリーダーを作成します。

NewInstance(Int32, Int32, ImageFormatType, Int32, Int64)

目的のサイズ、形式、およびコンシューマーの使用フラグのイメージ用の新しいリーダーを作成します。

NewInstance(Int32, Int32, ImageFormatType, Int32)

目的のサイズと形式の画像用の新しいリーダーを作成します。

[Android.Runtime.Register("newInstance", "(IIII)Landroid/media/ImageReader;", "")]
public static Android.Media.ImageReader NewInstance(int width, int height, Android.Graphics.ImageFormatType format, int maxImages);
[<Android.Runtime.Register("newInstance", "(IIII)Landroid/media/ImageReader;", "")>]
static member NewInstance : int * int * Android.Graphics.ImageFormatType * int -> Android.Media.ImageReader

パラメーター

width
Int32

このリーダーが生成するイメージの既定の幅 (ピクセル単位)。

height
Int32

このリーダーが生成するイメージの既定の高さ (ピクセル単位)。

format
ImageFormatType

このリーダーが生成するイメージの形式。 これは、 android.graphics.ImageFormat または android.graphics.PixelFormat 定数のいずれかである必要があります。 ImageFormat.NV21 など、すべての形式がサポートされているわけではありません。

maxImages
Int32

ユーザーが同時にアクセスする画像の最大数。 メモリ使用量を制限するには、できるだけ小さくする必要があります。 ユーザーが maxImages イメージを取得したら、新しいイメージが #acquireLatestImage() または #acquireNextImage()経由でアクセスできるようになる前に、そのうちの 1 つを解放する必要があります。 0 より大きくなければなりません。

返品

属性

注釈

目的のサイズと形式の画像用の新しいリーダーを作成します。

maxImages パラメーターは、ImageReaderから同時に取得できるImage オブジェクトの最大数を決定します。 バッファーを増やすとメモリが増えるので、ユース ケースに必要な最小数のみを使用することが重要です。

有効なサイズと形式は、イメージ データのソースによって異なります。

formatImageFormat#PRIVATE PRIVATEされている場合、作成されたImageReaderは、アプリケーションから直接アクセスできないイメージを生成します。 アプリケーションは引き続きこのImageReaderからイメージを取得し、ImageWriter インターフェイス経由で再処理するためにandroid.hardware.camera2.CameraDevice cameraに送信できます。 ただし、 Image#getPlanes() getPlanes() は、 ImageFormat#PRIVATE PRIVATE フォーマットイメージの空の配列を返します。 アプリケーションは、 #getImageFormat()を呼び出すことによって、既存のリーダーの形式を確認できます。

ImageFormat#PRIVATE PRIVATE ImageReader ImageReaders形式は、ImageFormat#YUV_420_888 YUV_420_888などの他の形式を使用する ImageReader と比較して、イメージ データへのアプリケーション アクセスが不要な場合に使用する方が効率的です。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

こちらもご覧ください

適用対象

NewInstance(Int32, Int32, ImageFormatType, Int32, Int64)

目的のサイズ、形式、およびコンシューマーの使用フラグのイメージ用の新しいリーダーを作成します。

[Android.Runtime.Register("newInstance", "(IIIIJ)Landroid/media/ImageReader;", "", ApiSince=29)]
public static Android.Media.ImageReader NewInstance(int width, int height, Android.Graphics.ImageFormatType format, int maxImages, long usage);
[<Android.Runtime.Register("newInstance", "(IIIIJ)Landroid/media/ImageReader;", "", ApiSince=29)>]
static member NewInstance : int * int * Android.Graphics.ImageFormatType * int * int64 -> Android.Media.ImageReader

パラメーター

width
Int32

このリーダーが生成するイメージの既定の幅 (ピクセル単位)。

height
Int32

このリーダーが生成するイメージの既定の高さ (ピクセル単位)。

format
ImageFormatType

このリーダーが生成するイメージの形式。 これは、 android.graphics.ImageFormat または android.graphics.PixelFormat 定数のいずれかである必要があります。 ImageFormat.NV21 など、すべての形式がサポートされているわけではありません。

maxImages
Int32

ユーザーが同時にアクセスする画像の最大数。 メモリ使用量を制限するには、できるだけ小さくする必要があります。 ユーザーが maxImages イメージを取得したら、新しいイメージが #acquireLatestImage() または #acquireNextImage()経由でアクセスできるようになる前に、そのうちの 1 つを解放する必要があります。 0 より大きくなければなりません。

usage
Int64

この ImageReader によって生成されるイメージの使用目的。 有効な使用ビットの一覧については、 HardwareBuffer の使用法を参照してください。 組み合わせがサポートされているかどうかを確認する HardwareBuffer#isSupported(int, int, int, int, long) も参照してください。 サポートされていない場合は、 IllegalArgumentExceptionがスローされます。

返品

属性

注釈

目的のサイズ、形式、およびコンシューマーの使用フラグのイメージ用の新しいリーダーを作成します。

maxImages パラメーターは、ImageReaderから同時に取得できるImage オブジェクトの最大数を決定します。 バッファーを増やすとメモリが増えるので、ユース ケースに必要な最小数のみを使用することが重要です。

有効なサイズと形式は、イメージ データのソースによって異なります。

形式と使用フラグの組み合わせは、バッファーがコンシューマーエンドポイントでどのように使用されるかを示します。 たとえば、アプリケーションがハードウェア ビデオ エンコードのためにイメージを android.media.MediaCodec または android.media.MediaRecorder に送信する場合、形式と使用フラグの組み合わせを ImageFormat#PRIVATE PRIVATE し、 HardwareBuffer#USAGE_VIDEO_ENCODEする必要があります。 有効なサイズと形式/使用フラグの組み合わせでImageReader オブジェクトが作成されると、アプリケーションは、android.media.MediaCodecまたはandroid.media.MediaRecorderによって提供される入力android.view.Surfaceを使用して作成されたImageWriterImage imagesを送信できます。

formatImageFormat#PRIVATE PRIVATEされている場合、作成されたImageReaderは、アプリケーションから直接アクセスできないイメージを生成します。 アプリケーションは引き続きこのImageReaderからイメージを取得し、再処理のためにandroid.hardware.camera2.CameraDevice cameraに送信するか、ImageWriter インターフェイス経由でハードウェア ビデオ エンコード用のandroid.media.MediaCodec / android.media.MediaRecorderに送信できます。 ただし、 Image#getPlanes() getPlanes() は、 ImageFormat#PRIVATE PRIVATE フォーマットイメージの空の配列を返します。 アプリケーションは、 #getImageFormat()を呼び出すことによって、既存のリーダーの形式を確認できます。

ImageFormat#PRIVATE PRIVATE ImageReader ImageReaders形式は、ImageFormat#YUV_420_888 YUV_420_888などの他の形式を使用する ImageReader と比較して、イメージ データへのアプリケーション アクセスが不要な場合に使用する方が効率的です。

ImageReaderでは、すべての形式と使用フラグの組み合わせがサポートされているわけではないことに注意してください。 ImageReaderでサポートされている組み合わせを次に示します (コンシューマーのエンドポイントがこのようなイメージの消費 (ハードウェア ビデオ エンコードなど) をサポートしていると仮定します)。 <table><tr><th>Format</th><th>compatible usage flags</th/tr><><tr><td>non-android.graphics.ImageFormat#PRIVATE PRIVATE formats defined by android.graphics.ImageFormat ImageFormat or android.graphics.PixelFormat PixelFormat</td><td>HardwareBuffer#USAGE_CPU_READ_RARELYHardwareBuffer#USAGE_CPU_READ_OFTEN</td></tr><tr><td>android.graphics.ImageFormat#PRIVATE</td><td>HardwareBuffer#USAGE_VIDEO_ENCODEまたはHardwareBuffer#USAGE_GPU_SAMPLED_IMAGE、または結合</td></tr></table>他の組み合わせを使用すると、IllegalArgumentExceptionが発生する可能性があります。 さらに、 HardwareBuffer#USAGE_CPU_WRITE_RARELY または HardwareBuffer#USAGE_CPU_WRITE_OFTEN を指定して ImageReader のバッファーに書き込むと、一部のプロデューサーによって行われた想定が損なわれる可能性があるため、注意して使用する必要があります。

ImageReaderandroid.hardware.camera2.CameraDeviceの出力ターゲットとして使用され、使用フラグにHardwareBuffer#USAGE_VIDEO_ENCODEが含まれている場合、ImageReaderによって生成されたImage imagesのタイムスタンプは、android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIMEされている場合でも、android.os.SystemClock#elapsedRealtimeNanosと同じタイムベースには含まれません。 代わりに、タイムスタンプは android.os.SystemClock#uptimeMillisとほぼ同じタイムベースになり、ビデオ録画で A/V 同期が機能する可能性があります。 この場合、HardwareBuffer#USAGE_VIDEO_ENCODE使用フラグを持つImageReaderからのタイムスタンプは、他のストリームのタイムスタンプやキャプチャ結果メタデータと直接比較できない場合があります。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象