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

ビデオ・デコーディング

[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で割り切れる必要があります。

Orientation

Depending on the display orientation used in the application, the video data that is decoded may need to be rotated to be displayed correctly. TouchGFX Generator generates code that will rotate tha decoded video data accordingly.

  • Native - This is the default value. The video data will no not be rotated. Used when the display and framebuffer have the same orientation.
  • Rotated - The video data is rotated 90 degrees at run-time. Used when the display and framebuffer have different orientations.

If the Buffer size is configured, the same rules applies, i.e., the width and height must be large enough for the largest video dimensions in the application. They do not need to be swapped if the orientation is set to Rotated.

Further reading
See Display Orientation section for information about how to set the display orientation of your application.