

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# プロデューサー SDK 構造
<a name="producer-reference-structures-producer"></a>

このセクションでは、データを Kinesis Video Streams Producer オブジェクトに提供するために使用できる構造について説明します。

**Topics**
+ [DeviceInfo/ DefaultDeviceInfoProvider](#producer-reference-structures-producer-deviceinfo)
+ [StorageInfo](#producer-reference-structures-producer-storageinfo)

## DeviceInfo/ DefaultDeviceInfoProvider
<a name="producer-reference-structures-producer-deviceinfo"></a>

**DeviceInfo** オブジェクトおよび **DefaultDeviceInfoProvider** オブジェクトは、Kinesis Video Streams Producer オブジェクトの動作を制御します。

### メンバーフィールド
<a name="producer-reference-structures-producer-deviceinfo-fields"></a>
+ version**** – 正しいバージョンの構造が現在のバージョンのコードベースで使用されていることを確認するために使用される整数値。現行バージョンは、`DEVICE_INFO_CURRENT_VERSION` マクロを使用して指定します。
+ **name** – デバイスの人間が読み取れる名前。
+ **tagCount/tags** – 現在使用されていません。
+ **streamCount** – デバイスが処理できるストリームの最大数。これにより、最初にストリームを指すポインターのストレージが事前に割り当てられますが、実際のストリームオブジェクトは後で作成されます。デフォルトは 16 ストリームですが、この数は `DefaultDeviceInfoProvider.cpp` ファイルで変更できます。
+ **storageInfo**: メインのストレージ設定を説明するオブジェクト。詳細については、「[StorageInfo](#producer-reference-structures-producer-storageinfo)」を参照してください。

## StorageInfo
<a name="producer-reference-structures-producer-storageinfo"></a>

Kinesis Video Streams のメインストレージの設定を指定します。

デフォルトの実装は、ストリーミング向けに最適化された、断片化の少ない高速なヒープ実装に基づきます。使用する `MEMALLOC` アロケータは、特定のプラットフォームで上書きできます。一部のプラットフォームにおける仮想メモリの割り当ては、物理ページでバッキングされません。メモリが使用されると、仮想ページは物理ページでバッキングされます。これにより、ストレージの使用率が低いときは、システム全体のメモリ負荷が低くなります。

デフォルトのストレージサイズを次の式に基づいて計算します。`DefragmentationFactor` は 1.2 (20 パーセント) に設定する必要があります。

```
Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor
```

次の例では、デバイスに音声ストリームとビデオストリームがあります。音声ストリームには 1 秒あたり 512 サンプルがあり、各サンプルは平均 100 バイトです。ビデオストリームには 1 秒あたり 25 サンプルがあり、各サンプルは平均 10,000 バイトです。各ストリームのバッファ期間は 3 分です。

```
Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.
```

デバイスに使用可能なメモリがある場合は、重大な断片化を避けるために、ストレージにメモリを追加することをお勧めします。

エンコードの複雑さが高い場合 (モーションが大きいためにフレームサイズが大きい場合）、または帯域幅が低い場合、ストレージサイズがすべてのストリームの完全なバッファに対応するのに十分であることを確認します。プロデューサーがメモリプレッシャーに達すると、ストレージオーバーフロープレッシャーコールバック () が出力されます`StorageOverflowPressureFunc`。ただし、コンテンツストアに使用可能なメモリがない場合は、Kinesis Video Streams 内に挿入されるフレームが破棄され、エラー (`STATUS_STORE_OUT_OF_MEMORY = 0x5200002e`) になります。詳細については、「[クライアントライブラリによって返されるエラーコードとステータスコード](producer-sdk-errors.md#producer-sdk-errors-client)」を参照してください。アプリケーションの確認 (ACK) が利用できない場合、または保持された ACK が遅延した場合にも発生する可能性があります。この場合、バッファは前のフレームがドロップアウトを開始する前に「バッファ期間」容量までいっぱいになります。

### メンバーフィールド
<a name="producer-reference-structures-producer-storageinfo-fields"></a>
+ version**** – 正しいバージョンの構造が現在のバージョンのコードベースで使用されていることを確認するために使用される整数値。
+ **storageType** – ストレージの基盤となるバッキングと実装を指定する`DEVICE_STORAGE_TYPE`列挙型。現在、サポートされている値は `DEVICE_STORAGE_TYPE_IN_MEM` のみです。将来の実装では `DEVICE_STORAGE_TYPE_HYBRID_FILE` がサポートされます。これは、ファイルに格納されたコンテンツストアにストレージがフォールバックすることを示します。
+ **storageSize** – 事前に割り当てるストレージサイズをバイト単位で指定します。最小の割り当ては 10 MB です。最大の割り当ては 10 GB です。(今後ファイルに格納されるコンテンツストアの実装に伴って変更される予定です。)
+ **spillRatio** – セカンダリオーバーフローストレージ (ファイルストレージ) ではなく、直接メモリストレージタイプ (RAM) から割り当てられるストレージの割合を表す整数値。現在使用されていません。
+ **rootDirectory**: ファイルに格納されるコンテンツストアがあるディレクトリへのパス。現在使用されていません。