音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

=================================================================

音视频入门基础:H.264专题系列文章:

音视频入门基础:H.264专题(1)——H.264官方文档下载

音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件

音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB

音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

音视频入门基础:H.264专题(5)——FFmpeg源码中 解析NALU Header的函数分析

=================================================================

一、引言

AnnexB 格式的H.264码流的NALU去掉0x000001或0x00000001的起始码后,其第一个字节为占用 1 位的forbidden_zero_bit  + 占用 2 位 的nal_ref_idc  + 占用 5 位的nal_unit_type。它们加起来刚好8位,也就是1个字节,一般被我们称为NALU Header(NAL Unit Header):

二、forbidden_zero_bit

根据《音视频入门基础:H.264专题(1)——H.264官方文档下载》下载的H.264官方文档《T-REC-H.264-202108-I!!PDF-E.pdf》,第63页:

forbidden_zero_bit 的值应为0。

根据第308页:
如果forbidden_zero_bit 的值为1,说明比特流语法出错了,字节对齐可能已经丢失,此时可以丢弃所有的比特流数据,直到之后检测到字节对齐。

三、nal_ref_idc 

nal_ref_idc的取值范围为0到3,值越高表示它对应的NALU越重要。当解码器在解码处理不过来的时候,可以丢掉nal_ref_idc为0的NALU。一般来讲,如果解码时某个NALU被其它Slice所依赖,说明该NALU比较重要。如果该NALU不需要被其它Slice依赖,说明该NALU不重要。

根据H.264官方文档《T-REC-H.264-202108-I!!PDF-E.pdf》,第11页:

非参考图片就是:nal_ref_idc为0的图片,它不会被其它图片用作帧内预测。

根据《T-REC-H.264-202108-I!!PDF-E.pdf》,第13页:

参考图片就是:nal_ref_idc不为0的图片。解码过程中被后续的图片用于帧内预测。
 

根据第64页:

Sequence parameter set(sps)、 Picture parameter set(pps)、 Coded slice of an IDR picture(IDR SLICE)的nal_ref_idc不能为0(一般值是3)。 Supplemental enhancement information (补充增强信息SEI)、 Access unit delimiter(分隔符)、 End of sequence(序列结束符)、 End of stream(码流结束符)、 Filler data(填充数据)的nal_ref_idc应为0。
参考:《 设置encode PPS和SPS》
《 nal_ref_idc value for the last frame in GOP when B frame is there for x264 encoding》
《 Breif Description of nal_ref_idc Value in H.246 NALU》

 

四、nal_unit_type

nal_unit_type表示NALU 的类型,见《T-REC-H.264-202108-I!!PDF-E.pdf》,第65页:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/743331.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型第三步:数字化业务创新与发展,提升收入和利润

引言:之前笔者的文章发布了企业数字化转型业务部分,如【开源节流】如何通过数字化转型增强盈利能力?企业供应链数字化转型如何做?让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…

Win10可用的VC6.0绿色版及辅助插件assist_X

VC6.0,作为微软的经典开发工具,承载着无数开发者的青春与回忆。它曾是Windows平台上软件开发的重要基石,为开发者们提供了稳定且强大的编程环境,尤其是其MFC(Microsoft Foundation Classes)库,为…

构建实用的Flutter文件列表:从简到繁的完美演进

前言:为什么我们需要文件列表? 在现代科技发展迅速的时代,我们的电脑、手机、平板等设备里积累了大量的文件,这些文件可能是我们的照片、文档、音频、视频等等。然而,当文件数量增多时,我们如何快速地找到…

eNSP中三层交换机的配置和使用

一、拓扑图 1.新建拓扑图 2.PC端配置 PC1: PC2&#xff1a; 二、基本命令配置 1.S1配置 <Huawei>system-view [Huawei]sysname S1 [S1]vlan 10 //在交换机 S1 上创建 VLAN 10 [S1-vlan10]vlan 20 // 在交换机 S1 上创建 VLAN 20 [S1-vlan20]quit //退出 VLAN 配置…

使用Spring Boot实现博客管理系统

文章目录 引言第一章 Spring Boot概述1.1 什么是Spring Boot1.2 Spring Boot的主要特性 第二章 项目初始化第三章 用户管理模块3.1 创建用户实体类3.2 创建用户Repository接口3.3 实现用户Service类3.4 创建用户Controller类 第四章 博客文章管理模块4.1 创建博客文章实体类4.2…

探究InnoDB Compact行格式背后

目录 一、InnoDB 行格式数据准备 二、COMPACT行格式整体说明 三、记录的额外信息 &#xff08;一&#xff09;变长字段长度列表 数据结构 存储过程 读取过程 变长字段长度列表存储示例 &#xff08;二&#xff09;NULL 值位图 数据结构 存储过程 读取过程 NULL 值…

【MySQL进阶之路 | 高级篇】索引的声明与使用

1. 索引的分类 MySQL的索引包括普通索引&#xff0c;唯一性索引&#xff0c;全文索引&#xff0c;单列索引和空间索引. 从功能逻辑上说&#xff0c;索引主要分为普通索引&#xff0c;唯一索引&#xff0c;主键索引和全文索引.按物理实现方式&#xff0c;索引可以分为聚簇索引…

光伏开发有没有难点?如何解决?

随着全球对可再生能源的日益重视&#xff0c;光伏技术作为其中的佼佼者&#xff0c;已成为实现能源转型的关键手段。然而&#xff0c;光伏开发并非一帆风顺&#xff0c;其过程中也面临着诸多难点和挑战。本文将对这些难点进行探讨&#xff0c;并提出相应的解决策略。 一、光伏开…

基于SSM构建的校园失眠与压力管理系统的设计与实现【附源码】

毕业设计(论文) 题目&#xff1a;基于SSM构建的校园失眠与压力管理系统的设计与实现 二级学院&#xff1a; 专业(方向)&#xff1a; 班 级&#xff1a; 学 生&#xff1a; 指导教师&a…

【启明智显产品介绍】Model3C工业级HMI芯片详解专题(三)通信接口

Model3C 是一款基于 RISC-V 的高性能、国产自主、工业级高清显示与智能控制 MCU, 集成了内置以太网控制器&#xff0c;配备2路CAN、4路UART、5组GPIO、2路SPI等多种通信接口&#xff0c;能够轻松与各种显示设备连接&#xff0c;实现快速数据传输和稳定通信&#xff0c;可以与各…

路由(urls)

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Django的URL路由流程&#xff1a; l Django查找全局urlpatterns变量&#xff08;urls.py&#xff09;。 l 按照先后顺序&#xff0c;对URL逐一匹…

Open3D 点云的体素化

目录 一、概述 1.1概念 1.2 应用场景 二、代码实现 三、实现效果 3.1原始点云 3.2体素化后点云 一、概述 1.1概念 体素化&#xff08;Voxelization&#xff09;是将三维空间数据&#xff08;例如点云&#xff09;转换为体素网格&#xff08;Voxel Grid&#xff09;的过…

2024年不可错过的12个Web程序设计语言!

Web开发行业出现以来&#xff0c;通过各种形式和渠道不断发展壮大。随着5g时代的到来&#xff0c;Web开发在移动互联网领域不断出现新的开发场景&#xff0c;也是最受欢迎的技能之一。掌握Web程序设计语言是在Web开发领域大放异彩的必要条件之一。接下来&#xff0c;即时设计选…

【Docker】容器

目录 1. 容器启动 2. 容器启动/重启/停止 3. 进入容器 4. 容器查询 5. docker 镜像的构建 方式一&#xff1a;docker 容器 commit 方式二&#xff1a;Dockerfile 定制镜像 1. 容器启动 docker run –it/-d –p/P –name imageID/name 2. 容器启动/重启/停止 docker sta…

Open3D 点云的ISS关键点提取

目录 一、概述 1.1原理 1.2应用场景 1.3算法实现步骤 二、代码实现 2.1 完整代码 2.2关键函数 2.3关键点可视化 三、实现效果 3.1原始点云 3.2提取后点云 一、概述 1.1原理 ISS&#xff08;Intrinsic Shape Signatures&#xff09;关键点提取是一种常用于三维点云的…

vue3通过vue-video-player实现视频倍速、默认全屏、拖拽进度条等功能

效果图&#xff1a; 1、场景&#xff1a; js原生的video标签在不同浏览器及不同型号手机上都展示的不一样&#xff0c;一部分没有倍速&#xff0c;一部分没有全屏等功能&#xff0c;为了统一视频播放的交互功能&#xff0c;使用vue-video-player插件来完成&#xff0c;vue-vid…

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err

算法基础精选题单 动态规划(dp)(区间dp)(个人题解)

目录 前言&#xff1a; 正文&#xff1a; 题单&#xff1a;【237题】算法基础精选题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com) NC50493 石子合并&#xff1a; NC50500 凸多边形的划分&#xff1a; NC235246 田忌赛马&#xff1a…

MySQL MVCC详解

目录 前言 MVCC实现原理 UndoLog版本链 ReadView MVCC是否可以解决不可重复读与幻读 隔离级别 READ UNCOMMITTED - 读未提交与脏读 READ COMMITTED - 读已提交与不可重复读 REPEATABLE READ - 可重复读与幻读 SERIALIZABLE - 串行化 小结 前言 为了提高数据库并发能力…

【Linux网络(一)初识计算机网络】

一、网络发展 1.发展背景 2.发展类型 二、网络协议 1.认识协议 2.协议分层 3.OSI七层模型 4.TCP/IP协议 三、网络传输 1.协议报头 2.局域网内的两台主机通信 3.跨网络的两台主机通信 四、网络地址 1.IP地址 2.MAC地址 一、网络发展 1.发展背景 计算机网络的发展…