基于DM642的X264开源代码实现的研究
[10-10 20:36:41] 来源:http://www.88dzw.com 电子制作 阅读:8742次
文章摘要:接着进行一系列初始化参数的操作,包括建立关于参考帧的list0和list1,初始化量化参数QP、MV、参考帧等相关变量,初始化比特流的起始位置和大小等。 ②以宏块为单位对视频数据进行编码 在进行预测编码之前必须得到周围块的相关信息。在X264中开辟了intra4x4_pred_mode和non_zero_count区域用来存放当前宏块左侧和上侧相邻宏块的预测模式和非零值个数。在编码开始之前通过x264_macroblock_cache_load()函数将相关数据载入缓存。然后,利用x264_macroblock_analyse()函数分析参数,确定最佳编码模式。I片从9种4x4模式
基于DM642的X264开源代码实现的研究,标签:电子小制作,http://www.88dzw.com接着进行一系列初始化参数的操作,包括建立关于参考帧的list0和list1,初始化量化参数QP、MV、参考帧等相关变量,初始化比特流的起始位置和大小等。
②以宏块为单位对视频数据进行编码
在进行预测编码之前必须得到周围块的相关信息。在X264中开辟了intra4x4_pred_mode和non_zero_count区域用来存放当前宏块左侧和上侧相邻宏块的预测模式和非零值个数。在编码开始之前通过x264_macroblock_cache_load()函数将相关数据载入缓存。然后,利用x264_macroblock_analyse()函数分析参数,确定最佳编码模式。I片从9种4x4模式和4种16x16模式中选择模式; P片选择帧间预测模式下的宏块分割方式或帧内预测模式下的4x4模式和16x16模式。接着,用x264_macroblock_encode()函数对宏块进行编码。编码过程严格按照编码框架中规定的DCT变换、zigzag扫描和熵编码的过程以先亮度块再色度块的顺序进行。需要声明的是编码过程对DC参数和AC参数的处理是分开进行的:首先对整个宏块进行DCT变换,然后将亮度块和色度块的DC参数抽出分别组成4×4和2×2的子块并对剩余AC参数进行量化扫描,接着对DC子块再进行Hadmard变换、量化、zigzag扫描、反变换、反量化,再对剩下的AC参数进行反量化,最后将处理后的DC子块和AC子块重新组合并对组合后的宏块进行IDCT变换。
以上过程完毕以后,统计CBP(Coded Block Pattern)信息。CBP一共6bit,用于表示当前宏块是否存在非零值,主要用于决定熵编码时采用的码表。其中,高2bit表示2个8×8色度块的CBP (2:Cb、Cr中至少一个4×4块的AC系数不全为0;1:Cb、Cr中至少一个2×2的DC系数不全为0;0:所有色度系数全0)。低4bit分别对应4个8×8亮度块,第i位(i= 0、1、2、3)表示一个MB中第i行的4个4×4子块是否有非零参数。若存在非零值,则将相应位置1。将各子块的非零值个数保存到non_zero_count区域。使用先前得到的CBP查相应码表进行熵编码,将编码参数和编码数据写入比特流。
③保存编码信息
利用x264_macroblock_cache_save()函数将当前MB最下一行和最右一列的子块的编码模式保存到intra4x4_pred_mode,将子块非零参数的个数保存到non_zero_count中,以备下一次预测编码采用。最后,统计MB信息,更新参考帧列表,并从unused区域取出新的帧放入fenc区域以备下次编码。
3)数据的输出
对NAL编码数据加上NAL头信息组成完整的NAL单元,输出到本地文件。
3、X264在TMS320DM642平台上的移植与优化
原始的X264代码是基于PC平台的,程序通过采用MMX和SSE语言编写SAD、DCT等函数使X264具有很高的编码速度。而在实际应用中,要想实时实现H.264的复杂算法,必须借助DSP这样具有超强运算能力的嵌入式平台。本文采用TMS320DM642开发板作为实现和开发的平台,并在其上进行代码的移植和优化。
1)TMS320DM642硬件平台简介
TMS320DM642是一款基于TI 的第二代高性能超长指令字(VLIW) 架构VelociTI.2(tm)的高性能DSP,该器件是目前计算密集型视频/图像应用领域的理想选择,其主要特点如下 :
① 增强功能单元:DM642 的8 个功能单元中的VelociTI.2 扩展包括加速视频与影像应用性能的新指令。
② L1/L2 分级存储器结构:16 KB 直接映射的L1P 程序高速缓存,16 KB 双路关联L1D 数据高速缓存,256 KB L2 统一映射RAM/高速缓存(灵活的RAM/缓存分配)。
③ 64 位外部存储器接口(EMIF):可实现与异步存储器和同步存储器无缝连接。
④ 增强型直接存储器存取(EDMA)控制器(64个独立通道)。
以DM642为硬件平台开发视频编码器,开发者可以充分利用其硬件特性,提高视频编解码算法的运算速度。
2)X264的移植
《基于DM642的X264开源代码实现的研究》相关文章
- › 基于DM642的X264开源代码实现的研究
- 在百度中搜索相关文章:基于DM642的X264开源代码实现的研究
- 在谷歌中搜索相关文章:基于DM642的X264开源代码实现的研究
- 在soso中搜索相关文章:基于DM642的X264开源代码实现的研究
- 在搜狗中搜索相关文章:基于DM642的X264开源代码实现的研究