对于视屏应用来说,当处理器内部不具备GPU单元时,编解码库对视频文件的解码需要由CPU提供快速的运算能力以及大量的内存作为缓冲,这是传统单片机无法胜任的主要因素,所以视频应用多采用M6Y2C Cortex®-A7\M6708 Cortex®-A9这类应用处理器的核心板。
M1052作为Cortex®-M7核的跨界核心板,已兼备了体积小、低功耗、简单易用、低成本等优点,是否还能具备强劲的音视频编解码能力呢?
i.MX RT1052虽然采用了MCU内核,但基于应用处理器的架构方式,既能实现应用处理器的高性能和丰富功能,同时又兼具传统MCU的易用性和实时低功耗运行特性,填补高性能与易用性之间的空白。
i.MX RT1052的内核运行速度高达600MHz,内置高密度的512KB TCM SRAM,并能够实现较快的实时响应,中断延迟低至20纳秒。并支持SEMC接口,可挂载SDRAM作为内存扩充。eLCDIF外设可轻松实现显示屏的驱动,并内置的SAI音频接口和MQS声卡,为音视频应用提供了良好的支持。
M1052核心板虽然以工业控制应用为主导,但也可以用于多媒体应用,辅助产品多元化。M1052核心板板载16MB SDRAM,赋予数据极大的缓冲空间,可挂载TF卡、U盘、Nand,QSPI Flash,为系统应用提供大容量的存储扩展。支持超高分辨率的1366X768 LCD显示屏,支持硬件浮点运算,刷图速度可达80帧/S,丰富的资源和强劲性能为视频应用开发打下了坚实的基础。
M1052核心板配套AWorksLP SDK软件包,已经为用户配置好了开发视频应用相关的外设驱动,用户无需关系底层外设驱动,可直接开始视频应用的开发,并提供一个视频播放器Demo程序,为用户进行视频应用开发提供一定的参考。
libjpeg是一个开源的JPEG压缩/解压缩函数库,具有稳定性高,兼容性强,解码速度快等优点。解码库全部由C语言实现的,非常容易移植到不同平台上。对比i.MX RT1052的性能和资源,解码库使用libjpeg是个不错的选择。因此,视频播放器Demo程序中使用libjpeg实现对JPEG格式的AVI视频解码。
视频播放Demo程序实现了一个比较完善的视频播放器框架,GUI界面任务负责图像显示和触屏处理,控制状态机对播放逻辑进行状态转换,音、视频的解码和播放任务协同工作,达到了良好的音视同步的效果,程序设计框架所示。
视频播放器支持从的TF卡、U盘、Nand Flash读取视频文件,支持文件列表预览,文件选取,播放进度控制等功能。在音视频同步的情况下,能流畅播放480 X 272分辨率的25帧/s视频,CPU占用率约为35%,可见i.MX RT1052完全可以满足视频应用的需求。