博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
H.264中的P-Skip宏块和BSkip宏块简介
阅读量:4142 次
发布时间:2019-05-25

本文共 1071 字,大约阅读时间需要 3 分钟。

       先说PSkip宏块,再说BSkip宏块.

       P-Skip宏块是一种特殊的P宏块,在H.264中非常常见,那么P-Skip宏块特殊在什么地方呢?下面会慢慢道来.

 

       对于一般的P宏块而言,像素残差和运动矢量残差都会写入码流,从编码端传到解码端,但是P-Skip宏块的特殊之处就在于,既不传送像素残差,也不传送运动矢量残差(在这种情况下,像素残差和运动矢量残差必定都为零,所以根本不需要传送).编码端除了传送一些标识该宏块是PSkip宏块的很少量的bit外,不在需要传送关于该宏块的其他信息,那么解码端如何恢复出像素呢?

       我们知道,mvd = mv - mvp, 刚才说了,运动矢量残差mvd为零,而从解码端可以得到mvp, 所以,在解码端也就知道了mv. 在解码端有参考帧对应宏块的重建像素,根据这个重建像素和mv, 就可以恢复出本帧本宏块的像素值(如果mv是分数,则需要插值),这就是所谓的P-skip宏块原理,从字面理解就是跳过了这个宏块,相当于这个宏块没有编码,在解码端采取了近似替代的恢复办法.

 

       为什么要引入P-skip宏块呢?如果本帧的一宏块和参考帧的一宏块像素(不要求两宏块在同一位置)几乎完全一致,很显然,当前帧的宏块压根就不用编码,在解码端,直接就可以用近似替代的办法恢复出本帧本宏块的像素值. 比如在第一帧中有个乒乓球,在第二帧中也有个乒乓球,那个第二帧中乒乓球这个宏块就很可能编成了PSkip宏块.

 

       小结一下:用Elecard分析码流可以见,在H.264视频中, PSkip非常常见,一般而言,视频运动越小,QP越大,PSkip宏块出现的概率就会越高,对于PSkip宏块而言,像素残差和运动矢量残差必定为零(运动矢量不一定为零),下面给出用H.264visa分析的运动矢量不为零运动矢量为(-1/2, 0)的一个PSkip宏块:

==== MB 17(6, 1) ====

    Location : (96, 16),
    Slice No. : 0
    Slice Type : P Slice
    MB Type : P_Skip
    NumMbPart : 1
    MbPartSize : (16, 16)

****** Inter Info ******

Pos(0, 0):

    L0=MV(-2, 0),POC: 2,refIdx:0,DecNo:2

 

      BSkip宏块的原理和PSkip宏块的原理一样,只不过是从前后两个方向进行罢了,所以对于BSkip宏块就不在赘述.(之前博文在剖析B宏块编码原理时就有一个地方选用了BSkip宏块简化分析)

转载地址:http://vczti.baihongyu.com/

你可能感兴趣的文章
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>