一、IPCM宏块简介
在H.264中,一个宏块包括16*16个像素,I宏块有三种形式:
- 16个I4x4编码方式组成的宏块(为了方便,简称I4x4方式的宏块);
- I16x16宏块;
- IPCM宏块(特殊)
分块越细,就越准确,所以I4x4编码方式适合编码那些纹理比较复杂的宏块,而I16x16编码方式就更加笼统,适合编码那些比较平滑的区域。
最特别的是IPCM宏块,这种宏块的脾气很古怪:不预测,没残差,不变换,无量化等操作,而是直接传像素值,直接将最原始的yuv数据写入到码流中,可见IPCM的信息不会有任何损失,是完全无损的. 如果将视频的所有宏块都编码成IPCM宏块,那么H.264就是一个无损编码,当然,在现实中,很少有人这么做。
视频应用五类举例:
-
1、news(新闻):变化和运动的区域比较小(比如人脸,一般占视频画面的15%),背景是静止的。
-
2、soccer(足球):包含大面积统一方向的运动。镜头通常会在一个统一颜色的背景下(绿色)跟踪一个快速运动的物体(足球)。
-
3、cartoon(卡通):主题在运动,背景是绝对静止的。
-
4、panorama(全景画):包含大面积统一方向的运动,运动方向是一致的。
-
5、rest(其他):除以上几种之外的视频都属于这一类。通常包含大量杂乱的运动,或者有很多镜头切换。
二、级别详表
具有最大特性值的级别High Profile的最大比特率是Base / Extended / Main Profile的1.25倍,Hi10P是3倍,Hi422P / Hi444PP是4倍。
亮度采样的数量是宏块数量的16×16 = 256倍(并且每秒亮度采样的数量是每秒宏块数量的256倍)
针对表格的一些讲解说明:
Level:级别。
Max macroblocks:最大宏块数。注:宏块尺寸是16x16的。
per second:每秒(的最大宏块数)。可用于约束帧率。
per frame:每帧(的最大宏块数)。可用于约束分辨率。
Max video bit rate (kbit/s):最大视频码率。不同档次(Profile)下会有区别。
BP:Baseline Profile,基线档次。
XP:Extended Profile,进阶档次。
MP:Main Profile,主要档次。
HiP:High Profile,高级档次。
Hi10P:High 10 Profile,高级10位档次。
Hi422P:High 4:2:2 Profile,高级4:2:2档次。
Hi444PP:High 4:4:4 Predictive Profile,高级4:4:4(实验性?)档次。
Examples for high resolution @ frame rate (max stored frames):范例:高分辨率@帧率(最大存储帧数)。
三、分辨率和帧率的计算
解码图片缓冲
H.264 / AVC编码器使用先前编码的图片来预测其他图片中样本的值。这使编码器能够有效地决定对给定图像进行编码的最佳方式。在解码器处,这样的图片被存储在虚拟解码图片缓冲器(DPB)中。DPB的最大容量,以帧(或场对)为单位,如上表右列中的括号所示,可以计算如下:
capacity = min(floor(MaxDpbMbs /(PicWidthInMbs * FrameHeightInMbs)),16)
注1:floor(x)是向向下取整。
其中MaxDpbMbs是下表中作为级数的函数提供的常数值,并且PicWidthInMbs和FrameHeightInMbs是编码视频数据的图片宽度和帧高度,以宏块为单位表示(四舍五入为整数值并考虑裁剪和宏块配对时适用)。
这里以宏块数1616,480P(800480)作为例子举例:
水平宏块数(PicWidthInMbs )= ceil(视频宽度 / 16) = ceil(480 / 16) = 30
垂直宏块数(FrameHeightInMbs)= ceil(视频高度 / 16) = ceil( 800 / 16 ) = 50
注:ceil(x)为向上取整函数
每帧宏块数 = 水平宏块数 * 垂直宏块数 = 50 * 30 = 1500
查上面的级别详表,可知支持 每帧宏块数1500 的最低级别是2.2。
级别2.2所允许的 每秒最大宏块数(Max macroblocks per second) 是 20250。20250 / 1500 = 13.5。即最高支持每秒13.5帧。
网友评论