temporal_Id
首先,根据原论文《Overview of the High Efficiency Video Coding (HEVC) Standard》中第三章B部分的描述,temporal_id在NAL (Network abstraction layer) 中有指定, 在nal.cpp文件里面找到了关于temporal_id的描述
但是依旧没有直接的变量可以用来提取temporal_id。在《新一代高效视频编解码原理、标准与实现》书中NAL部分提到NALU头重承载了NALU载荷的内容特征,由定长的4部分组成:forbidden_zero_bit, nal_unit_type, nuh_layer_id, nuh_temporal_id_plus1,分别占用1,6,6,3个比特位,并排列后成为一个新的变量,在x265中为nalUnitType。
至于为什么要用nuh_temporal_id_plus1,可能是因为HEVC支持的时域分层层次为0~6。
由此可以通过nalUnitType变量和8相与或者对8取余得到nuh_temporal_id_plus1变量,再根据
Temporal_Id = nuh_temporal_id_plus1-1得到时域层级。
Layer_id
Layer_Id 与Temporal_Id不同,在书中对于Layer_Id的描述为:被用于可分级(scalable)视频或3D视频,用来表示CVS中出现的增强层,如空域增强层,质量增强层,纹理试图或深度视图等。
在VVC中新增的multilayer技术中也对layer做了描述:multilayer(layerid)是VVC新增的技术,来用实现可伸缩编码(时间可伸缩):编码器对视频码流进行结构化,从而能够提取和解码编码数据的一个子集,以生成质量较低(低帧率)的解码内容,这一子集被成为layer。
VTM的cfg文件里面专门设置了multilayer的配置文件
(对Layer Id不太了解,待更新)