当前位置:网站首页>Analysis of h264nalu head
Analysis of h264nalu head
2020-11-09 16:06:00 【Zhu Zilong 2018】
One NALU Head analysis

F: forbidden_zero_bit. stay H.264 It is stipulated in the specification that this person must be 0. NRI: nal_ref_idc. take 00~11, It seems to indicate this NALU Importance , Such as 00 Of NALU The decoder can discard it without affecting the playback of the image ,0~3, The larger the value , At present NAL The more important , Need to be protected first . If at present NAL It's a piece of reference frame , Or a sequence parameter set , Or the important units of the image parameter set , This syntactic element must be greater than 0. Type: identification NAL In the cell RBSP data type , among ,nal_unit_type by 1, 2, 3, 4, 5 Of NAL The unit is called VCL Of NAL unit , Other types NAL Unit is not VCL Of NAL unit .
Two NALU Type analysis nalu type Calculation method of
At the beginning of each frame (00 00 00 01) And then I got nalu Head code A byte
Use this formula to calculate nalutype :int type = code & 0x1fnalu type
nal_unit_type. This NALU The type of unit ,1~12 from H.264 Use ,24~31 from H.264 For applications other than , The brief is as follows :0 No definition
1-23 NAL unit Single NAL Unit package
1 No zoning , Not IDR The film of the image
2 Slice partition A
3 Slice partition B
4 Slice partition C
5 IDR The film in the image
6 Supplementary enhanced information unit (SEI)
7 SPS
8 PPS
9 End of sequence
10 End of sequence
11 End of stream
12 fill
13-23 Retain 24 STAP-A A single time combination package
25 STAP-B A single time combination package
26 MTAP16 Multiple time packages
27 MTAP24 Multiple time packages
28 FU-A Sliced units
29 FU-B Sliced units
30-31 No definition
Common data frames
Sequence parameter set SPS----7:
SPS namely Sequence Paramater Set SPS A set of encoded video sequences is stored in (Coded video sequence) Global parameters of . The so-called encoded video sequence is the sequence composed of the pixel data of the original video frame by frame after being encoded . The parameters of the encoded data of each frame are saved in the image parameter set . General situation SPS and PPS Of NAL Unit Usually at the beginning of the whole stream . But in some special cases , These two structures may also appear in the middle of the code stream , The main reason may be : 1: The decoder needs to start decoding in the middle of the stream ; 2: The encoder changes the parameters of the code stream in the process of encoding ( Such as image resolution );
Image parameter set PPS----8:
Except for the sequence parameter set SPS outside ,H.264 Another important parameter set in is image parameter set Picture Paramater Set(PPS). Usually ,PPS Be similar to SPS, stay H.264 A single bitstream is stored in a single stream NAL Unit in , It's just PPS NAL Unit Of nal_unit_type The value is 8; In the package format ,PPS Usually with SPS Together , Save in the header of the video file .
Keyframes IDR frame ----5:
I Frames represent keyframes , You can understand it as a complete preservation of this frame ; Decoding only needs the frame data to complete ( Because it contains the whole picture )
P frame ----1:
P The frame represents this frame and the previous keyframe ( or P frame ) The difference between , In decoding, the difference defined in this frame needs to be superimposed on the previous cached picture , Generate the final picture .( That's the difference frame ,P Frame has no full picture data , Only data different from the previous frame )
3、 ... and Reference code
h264nalu Head analysis can refer to ffmpeg Source code h264_parser.c Of parse_nal_units function
版权声明
本文为[Zhu Zilong 2018]所创,转载请带上原文链接,感谢
边栏推荐
- 融云完成数亿人民币 D 轮融资,将持续打造全球云通信能力
- In depth analysis of the multi-user shopping mall system from search to create a profit point
- Explain three different authentication protocols in detail
- Openyurt in depth interpretation: how to build kubernetes native cloud edge efficient collaborative network?
- 深入探索 Android Gradle 插件的缓存配置
- To me, multithreading transaction must be a pseudo proposition!
- Autocad2020 full version installation text course, registration activation cracking method
- 5分钟GET我使用Github 5 年总结的这些骚操作!
- 最新版PyCharm 2020.3 :可实现结对编程,智能文本校对等|附下载体验
- 高德全链路压测——语料智能化演进之路
猜你喜欢

拉线位移编码器的选择,需要精量电子的指导

MES系统在工厂生产管理起到9大很重要的作用

超简单集成华为系统完整性检测,搞定设备安全防护

5 minutes get I use GitHub's 5-year summary of these operations!

在Python中创建文字云或标签云

最新版PyCharm 2020.3 :可实现结对编程,智能文本校对等|附下载体验

如何设计并实现存储QoS?

Kubernetes v1.19.3 kubeadm deployment notes (2)

CCF BDCI hot topic: privacy information recognition in unstructured business text information

The technology masters who ride the wind and waves gather again | Tencent cloud TVP continues to sail
随机推荐
Full link stress testing of moral integrity -- the evolution of corpus intelligence
Native地图与Web融合技术的应用与实践
Source code analysis of serilog -- implementation of sink
我叫Mongo,收了「查询基础篇」,值得你拥有
Express yourself with wechat expression translation, programmer's little romance, get up quickly!
Kubernetes v1.19.3 kubeadm deployment notes (2)
Some common types of error exception in Python
I do digital transformation in traditional industries (1)
JS design pattern
Help enterprises to get rid of difficulties, famous enterprises return home Engineers: success depends on it!
深入分析商淘多用户商城系统如何从搜索着手打造盈利点
H264Nalu头部解析
低功耗蓝牙单芯片为物联网助力
树莓派内网穿透建站与维护,使用内网穿透无需服务器
The worst hacker in history: stealing $1 billion of bitcoin without spending it for seven years, and finally being seized by the Department of justice
AutoCAD2020 完整版安装图文教程、注册激活破解方法
最新版PyCharm 2020.3 :可实现结对编程,智能文本校对等|附下载体验
AUTOCAD2020安装包&安装教程
MES系统在行业应用里区别于传统式管理
缓存的数据一致性