- 31
- 0
- 约2.95万字
- 约 26页
- 2021-02-05 发布于湖北
- 举报
南京邮电大学 图像实验所
JM86 误码掩盖参考代码完全剖析
作者:张戟(Y050628)
前序
以下的文字只是本人在学习H.264 代码过程中的一些心得体会,限于本人水平有限,所以有
错误的地方请阅读者谅解,并提出,大家共同讨论学习。
在这里,特别感谢 H264 乐园版主天之骄子及群里兄弟姐妹们的帮助!
说明:
红色表示函数
绿色表示函数中的参数
褐色表示函数内部的代码
1 bearriezj@
南京邮电大学 图像实验所
正文
本文主要讲述了一些 H.264 中后处理错误隐藏的知识,而且也集中在解码端实现,根据
空域和时域不同的掩盖方法,文章分为两大部分,第一部分主要讲帧内掩盖,相对应的 c
文件是 erc_do_i.c ;第二部分主要讲帧间掩盖,相对应的c 文件是 erc_do_p.c,这一部分相对
于帧内掩盖要复杂得多,也是本文的重点。下面,我们就从简到难,细细讲述其中的原理。
第一部分:帧内误码掩盖(erc_do_i.c)
大家先对整个帧内误码掩盖有个大体的框架,请看下图,其中 ercConcealIntraFrame ()
是帧内的入口函数。
帧内的掩盖方式为像素平均权值,方法相对来说比较简单。下面,我们通过一个一个函
数分析来了解帧内掩盖算法。
int ercConcealIntraFrame( frame *recfr, int32 picSizeX, int32 picSizeY, ercVariables_t *errorVar )
函数功能简述:这是帧内掩盖的入口函数,被 image.c 中的exit_picture()函数所调用。这里,
没有太多的代码,只是做了坐标级之间的转换,并调用了 concealBlocks() 。
函数参数解释:frame *recfr 表示当前帧指针结构体,这个结构体包含了指向当前帧 Y,U 和
V 块的指针。
int32 picSizeX 表示一帧的宽度,当 QCIF 图像时,该值为 176,当 CIF 图像
时,该值为 352 。
int32 picSizeY 表示一帧的高度,当 QCIF 图像时,该值为 144,当 CIF 图像
时,该值为 288 。
ercVariables_t *errorVar 表示包含了一些掩盖状态和信息的结构体。
注意点:1. ercVariables_t 结构体中变量的含义(详看我的 erc_api.c 初探) 。
2.不同基本单位之间的转换,我的意思是指以宏块为单位的横纵坐标转换成以 8x8
块为单位的坐标之类的问题。
函数详述:
函数内部的动作比较简单,但是照顾到刚刚接触误码掩盖的朋友,在介绍第一个函数的
时候,我更多的会讲一些变量的含义以及代码的操作习惯。这边我主要现讲两方面,一个就
是 errorVar-yCondition、errorVar-uCondition 和 errorVar-vCondition 指的是什么?另外一
个就是不同基本单位之间的转换。
在接收端,有一个宏块状态图的概念,它的作用就是记录一帧图像所有宏块的接收状态。
如下图:
2 bearriezj@
南京邮电大学 图像实验所
标记为 ERC_BLOCK_OK 的宏块表示正确接收,标记为 ERC_BLOCK_CONCEALED 的宏
块 表 示 错 误 的 块 但 是 已 经 被 掩 盖 过 , 标 记 为 ERC_BLOCK_COR
您可能关注的文档
- 安阳县鸿鑫建材扩建加工万机制砂环境影响评价公示环评公众环评报告.pdf
- xx市电信公司备份系统扩容改造工程技术规范书2010.pdf
- OTIS电梯故障总汇.pdf
- Quidway S2000-MI系列以太网交换机 操作手册 02-登录交换机操作.pdf
- td-scdma-6-TD-SCDMA 系统基站设备无线收发性能技术规范.pdf
- RFCC装置催化剂异常跑损的原因分析.pdf
- 电厂电气专业继电保护技能鉴定题库(初级、继电班).pdf
- 带补偿分量的时变卡尔曼滤波的电压凹陷检测方法.pdf
- Internet上多限制条件下的QoS路由算法研究综述.pdf
- 安阳丰沃建材万机制砂生线公示环评公众参与环评报告.pdf
原创力文档

文档评论(0)