HEVC编码流程解读

2024-04-07 07:18
文章标签 流程 解读 编码 hevc

本文主要是介绍HEVC编码流程解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       HEVC的视频编码层采用从H.261标准之后一直使用的混合编码方法(帧内、帧间预测和2-D变换编码)。图1所示为HEVC的混合视频编码器方框图。(理解有误地方,还请多加指教,O(∩_∩)O谢谢)


       具体的编码流程如下所述。每帧图像分割成多个以块为单位的区域,分割信息传输到解码端。一个视频序列的第一帧(或者是一个视频序列的每个空白随机接入点(CRA, clean random access point)的第一帧)只采用帧内预测(即只运用同一帧图像相邻区域间的空域信息进行预测,但该帧并不与其他帧相互独立)。视频序列的其他帧或者两个CRA之间的其他帧,大多采用时域帧间预测方式预测进行块预测。帧间预测的编码过程由运动数据组成,这些运动数据包含用于每个块采样点预测的参考帧和运动矢量(MV, motion vector)。编码器和解码器运用作为边信息传输的MV和模式选择数据组成的运动补偿(MC, motion compensation)来生成同一的帧间预测信号。

帧内或帧间预测的残差信号(即原始块和它的预测块的不同信息),通过线性空域变换传输。变换系数经过扩展、量化、熵编码,和预测信息一起传输。

       编码器复制解码器的处理环路(图1所示中的灰色部分),这两个处理过程为后来数据产生相同的预测。因此,量化的变换系数通过反扩展、反变换来复制解码的近似残差信号。这个残差信号加上预测信息后经过一个或两个环路滤波器来平滑滤除由于基于块处理和量化产生的块效应等影响。这个最终的图像表征(即解码端输出图像的复制品)存储在已解码图像的缓存器中,以便用于后续图像的预测。一般而言,图像的编码和解码处理过程与它们从源头(即视频源)到来的顺序不同。因此,需要区别解码器的解码顺序(即码流顺序)和输出顺序(即显示顺序)。

        一般而言,人们希望HEVC处理的视频是逐行扫描图像(可能是因为视频输入的就是那种格式,或者为了消除隔行扫描优于编码)。HEVC的设计编码特征中没有明确表示支持隔行扫描的使用,因为隔行扫描已经不再用于显示,并且使用这种隔行扫描的情况越来越少。然而,HEVC引入的一个数据元语法允许编码器通过编码每个场(即每个视频帧的偶数场和奇数场)来处理隔行扫描视频。这种方法编码隔行扫描视频不仅有效,而且没有给解码器额外处理这种视频的负担。(转载请注明出处,谢谢)

这篇关于HEVC编码流程解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881966

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训