メイン・コンテンツまでスキップ

ビデオ・デコーディング

[Video Decoding]セクションを使用すると、開発者は、ハードウェアまたはソフトウェアのいずれかのビデオ・デコーディング機能を使用してTouchGFX HALを強化できます。

TouchGFX Generatorの[Video Decoding]設定

Further reading
TouchGFXでのMJPEGビデオ・デコーディング方法の詳細については、MJPEG Videoの記事を参照してください。

ビデオ・ソフトウェア・デコーディングでは、アプリケーションのフレームバッファに使用されているものとは異なるデコード・フォーマットを使用できます。 ビデオ・ハードウェア・デコーディングは、アプリケーションのフレームバッファと同じピクセル・フォーマットのビデオのRGBバッファのみをサポートします。

Note
すべてのマイクロコントローラがハードウェア・ビデオ・デコーディングに対応しているわけではありません。

Type

デフォルトでは、[Video Decoding]の[Type]は無効になっています。 必要なペリフェラルがSTM32CubeMXで有効化されていない場合は、[Software]と[Hardware]の両方がグレー表示になります。 マウスをグレー表示されているオプションに合わせ、必要なペリフェラルを確認します。

[Hardware]のビデオ・タイプの依存関係を示す情報ボックス

  • Software - STM32CubeMXの[Middleware and Software Packs]セクションでLIBJPEGが有効になっている場合は、[Software]オプションを選択すると、ソフトウェア・デコーダが生成されます。 これはつまり、ToughGFX GeneratorによってソフトウェアMJPEGデコーダが生成されるということです。

STM32CubeMXプロジェクトでLIBJPEGを有効化

  • Hardware - JPEG IPが[Multimedia]セクションで有効になっており、CMSIS準拠のRTOSがTouchGFX Generatorで選択されている場合は、[Hardware]オプションを選択できます。

STM32CubeMXプロジェクトでJPEG IPを有効化

Further reading
各種ビデオ・デコーディング・シナリオの具体的なコード・サンプルについては、「シナリオ」セクションを参照してください。

Concurrent videos

[Concurrent Videos]オプションは任意の時点でGUIの同じ画面で同時にデコードされるビデオの最大量を指定します。 画面上で1つのビデオをデコードする場合にのみ、[Number of Videos]を1に設定できます。

最大で4つのビデオを同時にデコードできます。

Strategy

ビデオ・デコーディング方式に関して、開発者には次の3つのオプションがあります。

  • Direct to Framebuffer - ビデオはUIスレッドでデコードされます。 これは他のオプションよりも遅くなる可能性がありますが、ビデオ・フレーム用のバッファがないため、RAMが節約されます。
  • Single Buffer - ビデオは1つの専用バッファを使用し、1つの専用タスクでデコードされます。 このバッファは内部メモリに割り当てられます。
  • Double Buffer - ビデオは2つの専用バッファを使用し、1つの専用タスクでデコードされます。これは多くのメモリを必要としますが、パフォーマンスは向上します。

シングルまたはダブル・フレームバッファ方式を採用する場合、CMSIS準拠のOSを有効化する必要があります。

CMSIS RTOS要件に関する情報ボックス

Note
ダブル・バッファ方式を採用する場合には、メモリ消費に注意してください。
Further reading
ビデオ・デコーディングのFreeRTOS設定の具体例については、「シナリオ」セクションを参照してください。

Decode Format

ソフトウェア・デコーディングの場合、開発者は、フレームバッファのピクセル・フォーマットに関係なく、RGBバッファのピクセル・フォーマットを選択できます。 TouchGFX Generatorは、これらのフォーマットが異なっている場合に、DMA2D(ChromART)でピクセル・フォーマットの変換を実行できるコードを生成します。

  • RGB565 - ビデオのRGBバッファは16ビットです。
  • RGB888 - ビデオのRGBバッファは24ビットです。
  • RGB8888 - ビデオのRGBバッファは32ビットです。 アルファ値は255です。
Tip
RGB888(24ビット)アプリケーションのビデオ・デコーディング・バッファをRGB565(16ビット)にすると、開発者はメモリ・フットプリントを小さくすることができます。

Buffer size

バッファの幅と高さの設定は、アプリケーションの最大ビデオ・サイズより大きいか等しくする必要があります。 幅は32で割り切れる必要があります。