场编码MBAFF相关

宏块与宏块对 假设 A、B 是上下相邻的两个 MB: 在非宏块对的情况下:A、B宏块序号不连续,相差图像一行宏块个数。即按光栅扫描顺序编号。 在帧宏块对的情况下:A、B宏块序号连续,即按锯齿扫描顺序编号。A、B 组成不变。A 称为顶帧宏块,B 称为低帧宏块。 在场宏块对的情况下:A、B宏块序号连续,即按锯齿扫描顺序编号。但是这个时候的 A 是由原来 A、B 两个宏块中的奇数行像素组成,称为顶场宏块;而 B 是由原来 A、B 两个宏块中的偶数行像素组成,称为低场宏块。

一幅图像编码可以分为三种:非 MBAFF 帧、场、MBAFF 帧。 一幅图像中宏块的存在方式有两种: 1、图像中的所有宏块以单个宏块的方式独立存在。也就是上面第三个图中非宏块对的情况。 2、图像中的所有宏块都是两两成对出现,上下相邻的两个为一对。也就是上面第三个图中宏块对的情况。 第一种宏块存在方式出现在非 MBAFF 帧图像(可以称为普通帧)和场图像中,第二种宏块存在方式出现在 MBAFF 帧图像中 第二种宏块存在方式又分为两种:帧宏块对(上面第一个图)和场宏块对(上面第二个图)

  1. MBAFF时相邻宏块的获取过程

以标准(200503版)中表 6-4 的第一行为例进行说明,其余情况可依此做类似分析:

当 currMbFrameFlag = 1,mbIsTopMbFlag = 1
1、确定当前宏块左上角像素在帧图像中对应的像素点:
currMbFrameFlag = 1,mbIsTopMbFlag = 1:当前宏块为顶帧宏块,其左上角像素的对应像素点(co-located pixel)为 c
2、根据当前宏块的属性来确定相邻像素点:
因为当前宏块为顶帧宏块,所以 c 的左上角相邻像素点为 a
3、确定相邻像素点所属宏块对:
因为宏块对是用顶宏块的地址表示,所以像素点 a 所属宏块对为 mbAddrD,因此表 6-4 中 mbAddrX = mbAddrD
4、根据相邻宏块对的属性来确定相邻像素点所属宏块:
(1)、如果 mbAddrX 是帧宏块对(即mbAddrXFrameFlag = 1),像素点 a 属于宏块 mbAddrD+1
结论:当前宏块的左上相邻宏块为 mbAddrD+1,因此表 6-4 中:mbAddrN = mbAddrD+1
(2)、如果 mbAddrX 是场宏块对(即mbAddrXFrameFlag = 0),像素点 a 在场图像时(即进行隔行抽取后)属于宏块mbAddrD+1
结论:当前宏块的左上相邻宏块为 mbAddrD+1,因此表 6-4 中:mbAddrN = mbAddrD+1

当 currMbFrameFlag = 1,mbIsTopMbFlag = 0

1、确定当前宏块左上角像素在帧图像中对应的像素点:
currMbFrameFlag = 1,mbIsTopMbFlag = 0:当前宏块为低帧宏块,其左上角像素的对应像素点(co-located pixel)为 f
2、根据当前宏块的属性来确定相邻像素点:
因为当前宏块为低帧宏块,所以 f 的左上角相邻像素点为 e
3、确定相邻像素点所属宏块对:
因为宏块对是用顶宏块的地址表示,所以像素点 e 所属宏块对为 mbAddrA,因此表 6-4 中 mbAddrX = mbAddrA
4、根据相邻宏块对的属性来确定相邻像素点所属宏块:
(1)、如果 mbAddrX 是帧宏块对(即mbAddrXFrameFlag = 1),像素点 e 属于宏块 mbAddrA
结论:当前宏块的左上相邻宏块为 mbAddrA,因此表 6-4 中:mbAddrN = mbAddrA
(2)、如果 mbAddrX 是场宏块对(即mbAddrXFrameFlag = 0),像素点 e 在场图像时(即进行隔行抽取后)属于宏块 mbAddrA+1
结论:当前宏块的左上相邻宏块为 mbAddrA+1,因此表 6-4 中:mbAddrN = mbAddrA+1

当 currMbFrameFlag = 0,mbIsTopMbFlag = 1

1、确定当前宏块左上角像素在帧图像中对应的像素点:
currMbFrameFlag = 0,mbIsTopMbFlag = 1:当前宏块为顶场宏块,其左上角像素的对应像素点(co-located pixel)为 c
2、根据当前宏块对的属性来确定相邻像素点:
因为当前宏块为顶场宏块,所以 c 的左上角相邻像素点为 b
3、确定相邻像素点所属宏块对:
因为宏块对是用顶宏块的地址表示,所以像素点 b 所属宏块对为 mbAddrD,因此表 6-4 中 mbAddrX = mbAddrD
4、根据相邻宏块对的属性来确定相邻像素点所属宏块:
(1)、如果 mbAddrX 是帧宏块对(即mbAddrXFrameFlag = 1),像素点 b 属于宏块 mbAddrD+1
结论:当前宏块的左上相邻宏块为 mbAddrD+1,因此表 6-4 中:mbAddrN = mbAddrD+1
(2)、如果 mbAddrX 是场宏块对(即mbAddrXFrameFlag = 0),像素点 b 在场图像时(即进行隔行抽取后)属于宏块 mbAddrD
结论:当前宏块的左上相邻宏块为 mbAddrD,因此表 6-4 中:mbAddrN = mbAddrD

当 currMbFrameFlag = 0,mbIsTopMbFlag = 0

1、确定当前宏块左上角像素在帧图像中对应的像素点:
currMbFrameFlag = 0,mbIsTopMbFlag = 0:当前宏块为低场宏块,其左上角像素的对应像素点(co-located pixel)为 d
2、根据当前宏块对的属性来确定相邻像素点:
因为当前宏块为低场宏块,所以 d 的左上角相邻像素点为 a
3、确定相邻像素点所属宏块对:
因为宏块对是用顶宏块的地址表示,所以像素点 a 所属宏块对为 mbAddrD,因此表 6-4 中 mbAddrX = mbAddrD
4、根据相邻宏块对的属性来确定相邻像素点所属宏块:
无论 mbAddrX 是帧宏块对还是场宏块对(即无论mbAddrXFrameFlag 值为多少),像素点 a 都属于宏块 mbAddrD+1
(1)、如果 mbAddrX 是帧宏块对(即mbAddrXFrameFlag = 1),像素点 a 属于宏块 mbAddrD+1
结论:当前宏块的左上相邻宏块为 mbAddrD+1,因此表 6-4 中:mbAddrN = mbAddrD+1
(2)、如果 mbAddrX 是场宏块对(即mbAddrXFrameFlag = 0),像素点 a 在场图像时(即进行隔行抽取后)属于宏块 mbAddrD+1
结论:当前宏块的左上相邻宏块为 mbAddrD+1,因此表 6-4 中:mbAddrN = mbAddrD+1

【说明】:
1、这里使用了对应像素点(co-located pixel)的概念,也就是当前像素点在未进行隔行抽取时所对应的位置。我们在帧间宏块的时间 direct 预测模式时候,也会遇到 co-located 这个概念。和这里的含义一样;
2、请大家注意红色文字;
3、宏块与宏块对的概念请参照本论坛的帖子"[原创] 宏块与宏块对(附图)";
4、请参考标准 6.4.9.2 小节学习。

场编码MBAFF相关相关推荐

  1. 帧、场编码的个人理解

    一.概述 原始视频帧(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频帧:连续或隔行视频帧,隔行视频帧包括顶场和底场,连续(遂行)扫描的视频帧与隔行扫描视频帧有着不同的特性和编码特征 ...

  2. 帧编码 场编码_去年,我帮助举办了40场编码活动。 这是我学到的。

    帧编码 场编码 by Florin Nitu 通过弗洛林·尼图 去年,我帮助举办了40场编码活动. 这是我学到的. (I helped host 40 coding events last year. ...

  3. 自适应关于帧场编码问题

    H.264对帧场编码问题支持的比较完整,因为曾经有人问我,在h.264码流中,是否有判别帧场编码的元素. 我当时对H.264如果认定码流帧场编码不太了解,更别说是宏块级帧场编码了. 其实H.264对帧 ...

  4. 想接触音频、视频的编码以及相关的知识,不知有没有一些归纳好的知识点?——知乎大神

    https://www.zhihu.com/question/31156766 想接触音频.视频的编码以及相关的知识,不知有没有一些归纳好的知识点? 一方面处于兴趣,一方面出于新项目的一些需求,想学习 ...

  5. 引用 字库编码Unicode相关知识

    引用 weifeng.shen 的 字库编码Unicode相关知识 1.      各地编码 首先说明一下现在常用的一些编码方案: 1.         在中国,大陆最常用的就是GBK18030编码, ...

  6. 字符集和字符编码以及相关

    目录 为什么写本文? 什么是编码? 什么是字符? 字符集和字符编码的概念 简述字符集和字符编码发展史 Unicode字符集以及相关字符编码 参考链接 为什么写本文? 其实在我心中是一直知道有字符编码这 ...

  7. 修复mysql编码错乱的数据_关于MySQL数据库编码修复相关问题

    本篇主要是本人在实际开发过程中遇到的MySQL字符编码等bug修复相关问题. 在使用下列语句在执行数据库表通过flask-sqlacodegen 进行ORM映射成模型类的时候发生的bug: flask ...

  8. Apsara Clouder基础技能认证:阿里巴巴编码规范相关问题总结

    作为一名合格的开发,基础还是很重要滴,不知道会不会被封杀,哎,为了小哥哥小姐姐,总结一波,当然考试之前阿里编码规范我可是看了三遍左右,把我自己总结的黄金考题看了又看,第一次考了74,第二次,担心不过, ...

  9. 编码方式相关正则..-这一篇全了解

    什么是ASCII?主要有哪些字符组成? 解: ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一 ...

  10. TTCN-3 编码解码相关模块引入2

    在编解码例子一中提到了系统例子中提供的 binary_string.c,binary_string.h 两个操作二进制串的文件,看过代码的童鞋会发现,实现是使用一个char数组来保存数据的,也就是说, ...

最新文章

  1. socket 编程入门教程(四)TCP应用:1、构建echo服务器
  2. 你们应该听说过”w8ay“这个ID吧!一个喜欢造轮子的小子
  3. Python Django 文件上传代码示例
  4. 北京 | 免费高效训练及OpenVINO™加速推理深度学习实战,送Intel神经计算棒二代...
  5. 排坑 | Exceptionless 5.x 无法正常发送邮件
  6. Java垃圾收集蒸馏
  7. 马化腾朋友圈晒微信支付分:835;爱奇艺回应用户隐私话题;Firefox 77.0 发布| 极客头条...
  8. 完整方法:摄像头打不开,驱动无法安装成功,设备状态显示由于其配置信息(注册表中的)不完整或已损坏,windows无法启动这个硬件设备。(代码19)
  9. 程序猿软件开发保护眼睛,win7设置窗口护眼模式?
  10. redis-trib.rb 下载
  11. 使用Origin绘制柱状图(入门)
  12. 谷歌成功利用一台 54 量子比特的量子计算机
  13. Android接收和发送短信
  14. CWnd::FromHandle与CWnd::FromHandlePermanent有什么区别
  15. 【记录4】【密码生成】前端自动生成8位由字母和数字组成的密码
  16. 中国各省的省会间距离(含港澳台)
  17. EPICS -- 测试asynDriver和设备支持的示例1-- 连接测试
  18. mysql临时表索引_数据库查询优化——给临时表建索引
  19. 开机后启动Eclipse报工作空间被占用,为什么??速看!!
  20. 招聘要求之一:是个好人

热门文章

  1. 美国在线教育的启示:教育领域正在革命
  2. mysql本地连接1045_MySQL密码正确却无法本地登录-1045
  3. Java经典设计模式(2):七大结构型模式(附实例和详解)
  4. Java简单语法与访问权限修饰符
  5. 关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法
  6. dubbo入门级梳理
  7. Lucene查询结果高亮
  8. 精益企业中架构师的角色
  9. MVC模式中编写一个登录的Servlet
  10. Struts1+Spring+Ibatis集成开发步骤(三)