ImageReader.NewInstance メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| 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 オブジェクトの最大数を決定します。 バッファーを増やすとメモリが増えるので、ユース ケースに必要な最小数のみを使用することが重要です。
有効なサイズと形式は、イメージ データのソースによって異なります。
formatがImageFormat#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 と比較して、イメージ データへのアプリケーション アクセスが不要な場合に使用する方が効率的です。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
こちらもご覧ください
適用対象
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を使用して作成されたImageWriterにImage imagesを送信できます。
formatがImageFormat#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 のバッファーに書き込むと、一部のプロデューサーによって行われた想定が損なわれる可能性があるため、注意して使用する必要があります。
ImageReaderがandroid.hardware.camera2.CameraDeviceの出力ターゲットとして使用され、使用フラグにHardwareBuffer#USAGE_VIDEO_ENCODEが含まれている場合、ImageReaderによって生成されたImage imagesのタイムスタンプは、android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEがandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIMEされている場合でも、android.os.SystemClock#elapsedRealtimeNanosと同じタイムベースには含まれません。 代わりに、タイムスタンプは android.os.SystemClock#uptimeMillisとほぼ同じタイムベースになり、ビデオ録画で A/V 同期が機能する可能性があります。 この場合、HardwareBuffer#USAGE_VIDEO_ENCODE使用フラグを持つImageReaderからのタイムスタンプは、他のストリームのタイムスタンプやキャプチャ結果メタデータと直接比較できない場合があります。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。