HEVC中GOP参数说明

2023-10-13 06:40
文章标签 参数 说明 hevc gop

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

编码结构从编码的分层处理架构和编码后码流的语法架构进行描述,对有若干时间连续的图像构成的视频序列进行压缩时,先将其分割为若干个图像组GOP(Group of Picture,GOP).分为封闭GOP和开放GOP。封闭GOP是,每个GOP都以IDR(Instantaneous Decoding Refresh)开始,各个GOP之间独立编码。开放GOP,是第一个GOP的第一个帧内编码图像为IDR图像,后续GOP中的第一个帧内编码图像为non-IDR,就是后面GOP中的帧间编码图像可以越过non_IDR图像,使用前一个GOP中已编码的图像做参考图像。
封闭式GOP
在这里插入图片描述
开放式GOP
在这里插入图片描述
GOP参数说明,HM的软件手册有如下说明:
在这里插入图片描述
下面用原文的图解释GOP结构的参数:
在这里插入图片描述
参数说明,在下述说明中:frame n 代表解码顺序的第几帧。poc(Display
order of the frame within a GOP, ranging from 1 to GOPSize)。上述GOP结构中的参数配置说明如下:
在这里插入图片描述
介绍表格中参数为何是如下配置:(Framen 中的n代表解码顺序)
Type:表示图像的I,P,B帧,所以Frame1~Frame4的相应的值为P,B,B,B。
POC:表示在一个GOP中图像显示顺序,则Frame1~Frame4的相应的显示顺序为:4、2、1、3。
QPOffset:表示实际编码的帧等于初始QP+QPOffset,此值越大表示图像最终使用QP越大图像质量越不好。
temporal_id:当前帧所在的时域子层序号,只能序号大的参考序号小的图像。
num_ref_pics_active:参考帧图像列表L0和L1的大小;此表格设置中表示前后参考帧都只有1帧,所以值都为1。
num_ref_pics:当前帧所保存的参考帧数目,表示当前帧及未来帧所需要的参考帧;Frame1为P帧,仅参考1帧,则num_ref_pics为1;Frame2为B帧,参考了poc值0和4的2帧,则配置的值为2;Frame3为B帧,参考了poc为0和2的2帧,但Frame3的此处还包含poc为4的图片,需要保留以便将来帧参考,设置为3。(此处,Frame4就要用到poc为4的图片了);Frame4为B帧参考了poc为2和4的图片。此处值设置为2。
reference_pictures :表示当前帧的参考帧列表,参考帧的poc减去前帧的POC,在根据 num_ref_pics的值可以知道,reference_pictures包含几个值了。所以配置是表格所示的(-4),(-2,2),(-1,1,3),(-1,1)。
predict:表示inter_ref_pic_set_prediction_flag的值,是否需要要RPS预测值,0表示不需要,1表示需要,并忽略后面的deltaRIdx-1, deltaRPS等参数;1表示需要RPS预测,使用deltaRIdx-1, deltaRPS, num refidcs和Reference idcs;2表示需要RPS预测,但仅使用deltaRIdx-1;Frame1参考poc为0的I帧,I帧没有参考帧,也没有RPS,则frame1不需要使用技术,设置为0;其余帧都需要,设置为1;
deltaRIdx-1:当前RPS索引同预测RPS索引的差值减去1后的值;如果使用 了帧间预测,此值为0,所以Frame2~Frame4对应的此值为0。
deltaRPS:预测RPS同当前RPS的POC之差;即等于预测器的POC减去当前图像的POC,因此Frame2的预测器为Frame1,deltaRPS为4-2= 2,对于Frame3为2-1 = 1,Frame4为1-3 =-2。
num_ref_idcs:编码当前帧的RPS的ref_idcs的数量。
reference_idcs:指定RPS间预测的ref_idcs。共有num_ref_idcs个。其中最后一个代表该帧的predictor,其余表示predictor的RPS。取0/1分别表示不作为参考帧,1表示作为参考帧。Frame2此处设置为11,Frame2参考poc0和Frame4,Frame1(poc 为4)作为Frame2的predictor,最后一个数字为1,且poc0为的Frame0作为Frame1的参考帧,依旧是Frame2的参考帧,第一个数字为1;Frame3此处设置为111,预测因子为Frame2,作为当前帧的参考帧,所以最后一个数字为1,而Frame2的参考帧的Frame0(poc0)和Frame1(poc4)的帧依旧需要作为参考帧。而Frame4,其 reference_idcs为 0110,第一个零代表frame0(在frame3的参考帧索引(reference_pictures)中是-1)不再是参考帧,后面的两个1代表frame1和frame2(在Frame3的参考列表这两个值的索引为1和3)是它的参考帧,最后一个零代表frame3不在作为当前帧或者后续帧的参考帧。
参考文章:https://blog.csdn.net/VioletHan7/article/details/81286691
参考文章:https://blog.csdn.net/qq_21747841/article/details/74930721

这篇关于HEVC中GOP参数说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的