ビデオ・デコーディング
[Video Decoding]セクションを使用すると、開発者は、ハードウェアまたはソフトウェアのいずれかのビデオ・デコーディング機能を使用してTouchGFX HALを強化できます。
Further reading
ビデオ・ソフトウェア・デコーディングでは、アプリケーションのフレームバッファに使用されているものとは異なるデコード・フォーマットを使用できます。 ビデオ・ハードウェア・デコーディングは、アプリケーションのフレームバッファと同じピクセル・フォーマットのビデオのRGBバッファのみをサポートします。
Note
オーディオはサポートされていません。
Type
デフォルトでは、[Video Decoding]の[Type]は無効になっています。 必要なペリフェラルがSTM32CubeMXで有効化されていない場合は、[Software]と[Hardware]の両方がグレー表示になります。 マウスをグレー表示されているオプションに合わせ、必要なペリフェラルを確認します。
- Software - STM32CubeMXの[Middleware and Software Packs]セクションでLIBJPEGが有効になっている場合は、[Software]オプションを選択すると、ソフトウェア・デコーダが生成されます。 これはつまり、ToughGFX GeneratorによってソフトウェアMJPEGデコーダが生成されるということです。
- Hardware - JPEG IPが[Multimedia]セクションで有効になっており、CMSIS準拠のRTOSがTouchGFX Generatorで選択されている場合は、[Hardware]オプションを選択できます。
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を有効化する必要があります。
Note
Further reading
Decode Format
ソフトウェア・デコーディングの場合、開発者は、フレームバッファのピクセル・フォーマットに関係なく、RGBバッファのピクセル・フォーマットを選択できます。 TouchGFX Generatorは、これらのフォーマットが異なっている場合に、DMA2D(ChromART)でピクセル・フォーマットの変換を実行できるコードを生成します。
- RGB565 - ビデオのRGBバッファは16ビットです。
- RGB888 - ビデオのRGBバッファは24ビットです。
- RGB8888 - ビデオのRGBバッファは32ビットです。 アルファ値は255です。
Tip
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.