MBAFF时相邻宏块的获取过程--补充

Q:当 currMbFrameFlag = 0,mbIsTopMbFlag = 1时,

2、根据当前宏块对的属性来确定相邻像素点:
因为当前宏块为顶场宏块,所以 c 的左上角相邻像素点为 b

我怎么想也是c 的左上角相邻像素点为 a
请问版主,为什么是b呢,期待回答

 

A:因为 currMbFrameFlag = 0,mbIsTopMbFlag = 1,所以当前是顶场,那么在相邻宏块对里也要找组成顶场的点。a 是属于低场的,b 才属于顶场。

 

Q:楼主所述列表中, yM的取值有如下情况:
1、yM = (yN + maxH) >> 2 ;
2、yM = 2*yN;

yM为何要如此取值?应用场景?实在是想不通,请高人详细说明一下,谢谢了

 

A:注意我帖子中最后的一句话:“表中最后一列的 yM 值是按(xN,yN)所在宏块对的帧场属性对其所在宏块的像素点分帧场之后 a、b、c、d、e、f  各点的纵座标。”

1、当 yM = (yN + maxH) >> 2 时,根据各宏块对属性,如我主贴所述找到的相邻点是 e 点。那么绿色宏块对经过隔行抽取(因为 mbAddrXFrameFlag = 0)之后,请思考 e 点会跑到什么位置,而此时 e 点与 f 点的距离又是多少?这个距离就是 yM;

2、同理,当 yM = 2*yN 时,根据各宏块对属性,如我主贴所述找到的相邻点是 b 点。而 b 点距离 c 点的纵座标是 -2。既然 yM = -2,而 yN = -1,那么 yM = 2*yN 不对么?

PS:当 yN < 0 时,yN 只会等于 -1;当yM < 0 时,yM 也只会等于 -1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章