跳转到主要内容

视频解码

‘视频解码’部分允许开发人员通过硬件或软件视频解码能力增强TouchGFX HAL。

TouchGFX Generator视频解码设置

Further reading
有关如何在TouchGFX中进行MJPEG Video Decoding(视频解码)的详细信息,请参阅MJPEG Video(视频)文章。

Video software decoding allows the use of a different Decoding Format, than the one used for the application framebuffer. 视频硬件解码仅支持像素格式与应用程序帧缓存相同的视频RGB缓冲区。

Note
不是所有MCU都支持硬件视频解码。

类型

By default the "Type" of Video Decoding is disabled. If the required peripherals are not enabled in STM32CubeMX, both "Software" and "Hardware" will be greyed out. Hover the mouse over the greyed-out options the see which peripherals are required.

信息框显示“硬件”的视频类型依赖项

  • Software - If LIBJPEG is enabled under the Middleware and Software Packs section in STM32CubeMX, the "Software" option can be selected and the software decoder will be generated. 这意味着TouchGFX 生成器将生成一个软件MJPEG解码器。

LIBJPEG enabled in STM32CubeMX project

  • 硬件 - 如果在多媒体部分启用了JPEG IP,并且在TouchGFX Generator中选择了兼容CMSIS的RTOS,则可以选择“硬件”选项。

JPEG IP enabled in STM32CubeMX project

Further reading
有关不同视频解码场景的具体示例代码,请参见“场景”部分。

并发视频

“并发视频”选项可设置GUI中任意给定时间在同一屏幕上同时被解码的最大数量视频。 If you only wish to decode one video on a screen, the "Number of Videos" can be set to 1.

最多可以同时解码4个视频。

策略

关于视频解码策略,开发人员有三种选择。

  • “直接到帧缓存区(Direct to Framebuffer)” - 视频在UI线程中被解码。 解码速度慢于其他策略。 When working with hardware video decoding, the "Direct to Framebuffer" option is unavailable.
  • 单缓冲区 - 在专用的缓冲区中,以单独的任务进行视频解码。 该缓冲区位于内部存储器中。
  • 双缓冲区 - 在两个专用缓冲区中,以单独的任务进行视频解码,以牺牲内存为代价获得更好的性能。

采用单或双帧缓存区策略时,必须启用兼容CMSIS的操作系统。

关于CMSIS RTOS要求的信息框

Note
使用双缓冲区策略时,要注意内存消耗。
Further reading
关于配置用于视频解码的FreeRTOS的具体示例,请参见“场景”部分。

解码格式

对于软件解码,开发人员可以选择RGB缓冲区的像素格式,不管帧缓存区的像素格式是什么。 TouchGFX Generator生成的代码允许ChromART在不同的格式之间进行像素格式转换。

  • RGB565——视频RGB缓冲区为16位。
  • RGB888——视频RGB缓冲区为24位。
  • ARGB8888——视频RGB缓冲区为32位。 Alpha值为255。
Tip
在RGB888(24位)应用程序中使用RGB565(16位)中的视频解码缓冲区使,可帮助开发人员减少内存占用。

缓存大小:

缓冲区的宽度和高度设置必须大于或等于应用程序中的最大视频尺寸。 The width must be divisible by 32.