概述
S32V234 拥有内置的 H264 解码器,可以把通过网口输入的 H264 或者本地的 H264 文件进行解码播放,如下图左下红框部分即是解码器。
H264 是行业标准的视频压缩/解压缩格式,用于记录,压缩和传输视频数据。 H264是一种标准化的方法和过程,可用于压缩数字视频数据,使其可以以比原始(未编码)数据低得多的比特率传输或存储在显着更少的内存中。 它通常是有损压缩,但能够提供高质量的视频解压缩。 H264解码器用于解压缩H264压缩的视频数据。
S32V234 中的 H264 解码器支持如下特性:
- 内存到内存的解码:
- SRAM 内的流数据
- 通过块到光栅转换为SRAM的解压缩数据
- 色彩格式:
- 灰度图
- YUV420
- 数据流模式:
- 单通道 H264 / AVC 约束基线配置文件解码:
I 帧和 P 帧
一个参考帧
回路解块滤波器
CAVLC熵解码
8位采样深度
实时性能达到4.1级(例如1920x1080p30)
- 四通道H264 / AVC仅内部解码:
I 帧
回路解块滤波器
CAVLC熵解码
8、10和12位采样深度
实时性能达到4.1级(例如1920x1080p30)
所有通道均可独立处理
- H264 / AVC基于帧的上下文切换解码:
通过PPS id最多检测四个交错的比特流
I 帧和 P 帧
一个参考帧
回路解块滤波器
CAVLC熵解码
实时性能高达3.1级(支持高达1280x800p30)
1. H264 解码流程图
(1)以下是 SDK 中 s32v234_sdk\demos\isp\isp_h264dec_single_stream 例程的代码结构及处理流程。
2. isp_h264dec_single_stream 例程 ISP Graph
(1)用 S32DS 打开 isp_h264dec_single_stream 的 ISP Graph 流程图。
(2)通过 ISP 流程图可以看到,将 H264 文件进行解码,解码后数据流到 DDR buffer 。
3. isp_h264dec_single_stream 具体代码分析
(1)打开 s32v234_sdk\demos\isp\isp_h264dec_single_stream\src\ 目录,发现本工程的代码之后一个 main.cpp 文件。
(2)在准备阶段 Prepare() 函数中申请了内存空间。
(3)并且把文件流读出到内存里面。
(4)lpFrame[0] = arContext.mpGrabber->FramePop(FDMA_IX_UYVY_0); 通过读取对应的 DDR BUFFER 获取视频流,
追踪代码到 s32v234_sdk\libs\io\sdi\src\ sdi.cpp 的 sdi_grabber::FramePop() 函数,
跟踪代码到 s32v234_sdk\libs\isp\sequencer\user\src\linux\ lin_seq_user.cpp 文件 SEQ_FrmBufferPop() 函数,到这里几乎都是不需要改动的部分,了解其原理就好。
参考资料
[1] S32V234RM_Rev2.1.pdf
上一篇:NXP S32V234 CSE Disable 方法
下一篇:NXP S32V234 的 BSP23+VSDK1.6 编译和调试
评论