NXP S32V234 使用 ISP 进行 H264 视频解码

关键字 :s32v234NXP

 

概述

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 编译和调试

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论