6. H.264/AVC编码器原理
1. H.264/AVC的应用
- 基本档次:主要用于“视频会话”,如会议电视,可视电话,远程医疗、远程教学等;
- 扩展档次:主要用于网络的视频流,如视频点播;
- 主要档次:主要用于消费电子应用,如数字电视广播,数字视频存储等。
2. H.264/AVC编解码器
2.1.编码器
编码器采用的仍是变换和预测的混合编码法 。H.264 编码器的功能组成如下图所示

2.2.解码器

3. H.264/AVC的结构
3.1.术语
3.2.档次和级
- 基本档次:利用 I 片和 P 片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;
- 主要档次:支持隔行视频,采用 B 片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;
- 扩展档次:支持码流之间有效的切换(SP 和 SI 片)、改进误码性能(数据分割),但不支持隔行视频和 CABAC。展档次包括了基本档次的所有功能,而不能包括主要档次的。
3.3.编码数据格式
- 高的视频压缩比;
- 良好的网络亲和性,即可适用于各种传输网络。
其中片头规定了片的类型,该片属于哪个图像,有关的参考图像等,片的数据包含一系列的编码 MB(宏块),和/或跳编码(不编码)数据。每个 MB 包含头单元(如下表所)示和残差数据。


3.4.帧内预测
- 允许编码器精确的表示像素值
- 提供表示不规则图像内容的准确值,而不引起重大的数据量增加。
- 严格限制宏块解码比特数,但不损害编码效率。
如上图 所示, 4×4 亮度块的上方和左方像素 A~Q 为已编码和重构像素,用作编解码器中的预测参考像素。 a~p 为待预测像素,利用 A~Q 值和 9 种模式实现。其中模式 2(DC 预测)根据 A~Q 中已编码像素预测,而其余模式只有在所需预测像素全部提供才能使用。图 下图 箭头表明了每种模式预测方向。对模式 3~8,预测像素由 A~Q 加权平均而得。例如,模式 4 中,p=round(B/4+C/2+D/4)。下表给出了这 9 种模式的描述。



3.5.帧间预测

类似的, h 由 A、 C、 G、 M、 R、 T 滤波得出。一旦邻近(垂直或水平方向)整像素点的所有像素都计算出,剩余的半像素点便可以通过对 6 个垂直或水平方向的半像素点滤波而得。例如, j 由cc, dd, h,m,ee,ff 滤波得出。这里说明的是, 6 抽头滤器比较复杂,但可明显改善运动补偿性能。

半像素点计算出来以后, 1/4 像素点就可通过线性内插得出,如图 6.23 所示。 1/4 像素点(如 a, c, i, k, d, f, n, q)由邻近像素内插而得,如

剩余 1/4 像素点(p, r)由一对对角半像素点线性内插得出。如, e 由 b 和 h 获得。相应地,色度像素需要 1/8 精度地 MV,也同样通过整像素地线性内插得出,如图 6.24 所示。


- 传输分割不包括 16×8 和 8×16 时, MVp 为 A、 B、 C 分割 MV 的中值;
- 16×8 分割,上面部分 MVp 由 B 预测,下面部分 MVp 由 A 预测;
- 8×16 分割,左面部分 MVp 由 A 预测,右面部分 MVp 由 C 预测;
- 跳跃宏块(skipped MB),同 1)。
6. H.264/AVC编码器原理的更多相关文章
- 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
一.H264 概述 H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 1. H.264视频编解码的意义 H.264的出现就是为了创 ...
- H.264 SVC 与H.264 AVC
分级视频编码技术实现一次性编码产生具有不同帧率.分辨率的视频压缩码流,然后根据不同网络带宽.不同的显示屏幕和终端解码能力选择需要传输的视频信息量,以此实现视频质量的自适应调整 AVC 实际上是 H.2 ...
- 【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据
<H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.2 ...
- 我们解决了如何将视频转换为HEVC / H.265和AVC / H.264
LEADTOOLS Recognition Imaging SDK是精选的LEADTOOLS SDK功能集,旨在在企业级文档自动化解决方案中构建端到端文档成像应用程序,这些解决方案需要OCR,MICR ...
- h.264并行解码算法分析
并行算法类型可以分为两类 Function-level Decomposition,按照功能模块进行并行 Data-level Decomposition,按照数据划分进行并行 Function-le ...
- H.264视频的RTP荷载格式
Status of This Memo This document specifies an Internet standards track protocol for the Internet ...
- (转载)H.264码流的RTP封包说明
H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...
- H.264码流结构解析
from:http://wenku.baidu.com/link?url=hYQHJcAWUIS-8C7nSBbf-8lGagYGXKb5msVwQKWyXFAcPLU5gR4BKOVLrFOw4bX ...
- FFmpeg的H.264解码器源代码简单分析:解码器主干部分
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
随机推荐
- Bezier曲线原理—动态解释
公式线性公式给定点P0.P1,线性贝兹曲线只是一条两点之间的直线.且其等同于线性插值.这条线由下式给出: 一阶贝赛尔曲线上的由两个点确定 P0 和P1,当t在0--->1区间上递增时,根据此会得 ...
- 进阶的Redis之数据持久化RDB与AOF
大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存.但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里 ...
- 使用OPtional的orElse()问题
使用OPtional的orElse()问题 项目中有这样一段代码: return Optional.ofNullable(service.A()).orElse(service.B()) 1 功能显而 ...
- LeetCode 755. Pour Water
原题链接在这里:https://leetcode.com/problems/pour-water/description/ 题目: We are given an elevation map, hei ...
- BZOJ4145 [AMPPZ2014]The Prices
题意 你要购买m种物品各一件,一共有n家商店,你到第i家商店的路费为d[i],在第i家商店购买第j种物品的费用为c[i][j],求最小总费用. \(n \leq 100,m \leq 16\) 分析 ...
- Linux之 xstart调用 x11vnc远程图形化桌面
问题:用 xmanager 中的 xstart 启动界面,报x11无法打开 . 1. root调整x11参数,将其打开[root@localhost ~]# vi /etc/ssh/sshd_conf ...
- gitlab安装、配置与阿里云产品集成
https://www.ilanni.com/?p=12819 一.gitlab安装与部署 gitlab的安装可以分为源码安装和通过安装包进行安装,要是按照我以前的写作习惯的话,我也会把源码安装在本文 ...
- 什么是spark(一) 分区以及和MR的区别
什么是spark,是一个分布式计算平台,或者说是分布式计算引擎,他的职责就是将指定的数据读入到各个node的内存中,然后计算.所以spark是具有泛化性质的,只要数据源是可读入的,读到内存里面之后,处 ...
- elasticsearch 6.0.0及之后移除了一个索引允许映射多个类型的操作(Removal of mapping types)
分给线一下内容为理解错误内容,实际允许建立父子分档,只是类型改成来 join 官方demo: join datatypeedit The join datatype is a special fiel ...
- C++直接初始化和复制初始化1
这篇文章主要介绍了C++直接初始化与复制初始化的区别深入解析,是很多C++初学者需要深入了解的重要概念,需要的朋友可以参考下 C++中直接初始化与复制初始化是很多初学者容易混淆的概念,本文就以实例 ...