首页 > 其他分享 >H265 NALU类型详细解析(转)

H265 NALU类型详细解析(转)

时间:2023-11-07 20:45:23浏览次数:36  
标签:00 01 H265 VCL NAL NALU 解析 type unit

原文:https://blog.csdn.net/u014470361/article/details/89541544

作者:夜风~

来源:CSDN

前言
在海思自hi3516a带的开发固件中,有H265编码的实例,在SAMPLE_VENC_1080P_CLASSIC(HI_VOID)应用实例中有涉及,那么本文将对H265的nal头和nalu的类型进行相关解析。

h265 Nalu类型解析

 

F

F:必须为0,表示有效;为1的话表示无效。

 

Type

Type:6-bits NALType 确定NAL的类型,其中VCL NAL和non-VCL NAL各有32类。0-31是vcl nal单元;32-63,是非vcl nal单元。VCL是指携带编码数据的数据流,而non-VCL则是控制数据流.

vcl nal单元的类型(0-31)如下表:

non-vcl nal单元的类型(32-63)如下表:

这里解释一下上表中各个unit type的含义,如下

  • Parameter sets包括VPS、SPS和PPS。
  • Delimiters(分隔符)包括AUD_NUT、EOS_NUT、EOB_NUT,其中AUD_NUT用于指示access unit的边界,所以和access unit内的VCL NAL有相同的TID,是access unit内的第一个NAL。EOS_NUT、EOB_NUT分别表示CVS和bitstream的结束,它们的TID为0,没有payload,只有2-Type的header。
  • Filler Data对解码过程并没有任何影响,payload就是由一串’11111111’和1-Type的’10000000’组成,主要用来填充。
  • SEI:supplemental enhancement informatyion,辅助增强信息,提供可选的解码支持元数据。在HEVC中,SEI是prefix(SEI必须在Access unit的所有VCL NAL之前)或者suffix(SEI可以在Access unit的VCL NAL之后)的,而且SEI有些是只对当前Access unit有效,有些作用范围可能是多个Access unit甚至整个SVC。VUI是在SPS中的可选信息,VUI不直接影响解码过程,但是提供两个方面的信息:1、解码图像的展示信息,包括宽高比、扫描、分时等信息;2、限制解码端的一些信息,包括tiles、MV、参考图像等。

LayerID

LayerID:表示NAL所在的Access unit所属的层,该字段是为了HEVC的继续扩展设置。也就是目前都是0,以后的扩展可能会用到。

 

TID

 

H265 帧类型解析

和264的&0x1f不同。
265是 :
int type = (code & 0x7E)>>1;
00 00 00 01是NALU头,常见的共6种:

根据H265的NALU类型定义分析:
(1) 控制数据流:
00 00 00 01 40 01 的nuh_unit_type的值为 32, 语义为视频参数集 VPS
00 00 00 01 42 01 的nuh_unit_type的值为 33, 语义为序列参数集 SPS
00 00 00 01 44 01 的nuh_unit_type的值为 34, 语义为图像参数集 PPS
00 00 00 01 4E 01 的nuh_unit_type的值为 39, 语义为补充增强信息 SEI

 VPS、SPS、PPS:三者的结构和关系如下图所示:

 

(2) 编码数据的数据流:
00 00 00 01 26 01 的nuh_unit_type的值为 19, 语义为可能有RADL图像的IDR图像的SS编码数据 IDR
00 00 00 01 02 01 的nuh_unit_type的值为1, 语义为被参考的后置图像,且非TSA、非STSA的SS编码数据

 

标签:00,01,H265,VCL,NAL,NALU,解析,type,unit
From: https://www.cnblogs.com/ajianbeyourself/p/17815891.html

相关文章

  • Scipy中稀疏矩阵用法解析(sp.csr_matrix;sp.csc_matrix;sp.coo_matrix)用法
    参考:链接orig=np.array([[1,0,2],[0,0,3],[4,7,6]])aa=csr_matrix(orig)aa有如下属性:#2代表第第一行有2个不为零的元素,#3代表第第一和二行不为零的元素总共有3个#6代表第第一、二和三行不为零的元素总共有6个indptr:array([0,2,3......
  • AVL树节点插入方式解析(单旋转和双旋转)
    AVL树的规则在学习AVL树插入节点的方式之前,我们首先要理解为什么要出现AVL树,首先我们要知道的是AVL树是在二叉搜索树的基础上增加一些限制条件才完成的。那么AVL树就是为了处理二叉搜索树的缺点而出现的一棵树,那么普通的二叉搜索树的缺点是什么呢?假如往树中插入的元素有序或者接近......
  • http参数解析
    http传参解析第一种:/delete/{id}前端传参:get、restful;后端接参:@GetMapping、@PathVariable第二种:/delete?id=11前端传参:get、params;后端接参:@GetMapping、@RequestParam第三种:{id:1}前端传参:post、data;后端接参:@PostMapping、@Req......
  • 某地区DNS查询解析域名信息后出现本机地址127.0.0.1和0.0.0.0
    一、现象背景: 接某地区分公司同事反馈,手机移动网络无法通过公网访问公司业务系统二、分析过程:1、查看流量入口Nginx,公网访问记录都正常,无异常日志。2、联系用户查询手机客户端出口IP,通过浏览器地址栏中输入,在外部防火墙侧和Nginx侧都未发现有该用户来源IP访问记录,黑名单也无。......
  • mysql binlog常用脚本(解析与反解析)
     解析binlog方法1:mysqlbinlogmysqlbinlog--no-defaults--base64-output=decode-rows-vv--database=dboop--start-datetime='2020-10-1100:00:00'--stop-datetime='2020-10-1115:00:00'mysql-bin.000075>75.sql 常用参数database:只列......
  • [机器学习复习笔记] Linear Regression 线性回归(最小二乘法求解析解)
    LinearRegression1.一元线性回归定义一个一次函数如下:\[y=\theta_0+\theta_1x\]其中\(\theta\)被称为函数的参数。显然在坐标图上,这个函数的图像是一条直线,这也是线性回归中的线性含义所在。只有一个\(x\)来预测\(y\),就是用一条直线来拟合数据,即一元线......
  • 【工具包使用】解析txt标注文件
    前言 codeimportosdefparse_onedata(data):print('data:',data)info=data['info']image=data['image']valid=data['valid']rotation=data['rotation']categories=data[&#......
  • Java中的NoClassDefFoundError报错解析
    半夜睡得正香的时候,突然接到警告电话,于是翻起身就打卡电脑连上环境查看是什么情况?登录上之后发现有个微服务占用的句柄数量一直在持续上涨,最终导致了微服务内存溢出挂掉了。这个微服务在运行的过程中会建立SSH连接,且之前这个微服务已经遇到过很多次类似的情况了,因此第一反应是哪里......
  • C#解析JSON字符串总结
    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串。操作JSON通常有以下几种方式:1.原始方式:按照JSON字符串自己来解析。 2.通用方式【★★★★★】:这种方式是使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就......
  • jsqlparser v4.6 版本下sql解析报错
    项目版本:springboot2.7.2mybatis-plus3.5.2jsqlparser4.6该版本下mybatis-plus生成的sql文件带有连续\n\n\nCCJSqlParserUtil.parseStatements("select\n\n\n*from\n\ndual\n")再使用jsqlparser进行sql解析时会出现如下报错net.sf.jsqlparser.parser.ParseExc......