跳轉到主要內容

影片解碼

「影片解碼」區段可讓開發人員透過硬體或軟體影片解碼功能增強TouchGFX HAL。

TouchGFX Generator影片解碼設定

Further reading
如需深入資訊瞭解如何在TouchGFX中進行MJPEG影片解碼,請參閱MJPEG影片一文。

影片軟體解碼允許使用與應用程式影像緩衝區不同的解碼格式。 影片硬體解碼僅支援與應用程式影像緩衝區像素格式相同的影片RGB緩衝區。

Note
Not all MCUs support hardware video decoding.
Audio is not supported.

類型

預設情況下,影片解碼的「Type」(類型)為停用。 If the required peripherals are not enabled in STM32CubeMX, both "Software" and "Hardware" will be greyed out. 將滑鼠懸停在灰色的選項上,看看需要哪些週邊設備。

資訊方塊顯示「硬體」的影片類型相依項

  • Software(軟體):如果LIBJPEG在STM32CubeMX的Middleware and Software Packs(中介軟體及套裝軟體)區段之下啟用,就可選擇「Software」(軟體)選項,並產生軟體解碼器。 這意味著TouchGFX Generator將產生軟體MJPEG解碼器。

LIBJPEG於STM32CubeMX專案中啟用

  • Hardware (硬體):如果JPEG IP在Multimedia (多媒體)區段之下啟用,並於TouchGFX Generator選擇了符合CMSIS標準的RTOS,就可選擇「Hardware」(硬體)選項。

JPEG IP於STM32CubeMX專案中啟用

Further reading
有關不同影片解碼的具體程式碼範例,請參閱使用情境章節。

並行影片

The "Concurrent Videos" option is the largest amount of videos being decoded simultaneously on the same screen in the GUI at any given time. 如果您只要在螢幕解碼一部影片,請將「Number of Videos」(影片數量)設定為1。

最多可以同時解碼4個影片。

策略

關於影片解碼策略,開發人員有三種選擇。

  • Direct to Framebuffer (直接到影像緩衝區):影片在UI執行緒中解碼。 這可能會比其他策略更慢,但是不必為了影片提供緩衝區,因此可節省RAM。
  • Single Buffer (單緩衝區):在專用的緩衝區中,以單獨的工作進行影片解碼。 該緩衝區分配於內部記憶體中。
  • Double Buffer (雙緩衝區):在兩個專用緩衝區中,以單獨的任務進行影片解碼,以增加記憶體用量為代價獲得更好的效能。

採用單或雙影像緩衝區策略時,必須啟用符合CMSIS要求的作業系統。

關於CMSIS RTOS要求的資訊方塊

Note
使用雙緩衝區策略時,要注意記憶體耗用量。
Further reading
關於設定用於影片解碼的FreeRTOS的具體範例,請參見使用情境一節。

解碼格式

對於軟體解碼,開發人員可以選擇RGB緩衝區的像素格式,不管影像緩衝區的像素格式是什麼。 TouchGFX Generator generates code that allows DMA2D (ChromART) to do pixel-format-conversion between the formats if they're different.

  • RGB565:影片RGB緩衝區為16位元。
  • RGB888:影片RGB緩衝區為24位元。
  • ARGB8888:影片RGB緩衝區為32位元。 Alpha值為255。
Tip
在RGB565(16位元)及RGB888(24位元)應用程式之中擁有影片解碼緩衝區,可讓開發人員減少記憶體使用量。

緩衝區大小

緩衝區的寬度和高度設定必須大於或等於應用程式中的最大影片尺寸。 寬度必須能以32整除。