余温|SEI那些事儿,FFmpeg从入门到精通——进阶篇( 二 )
H.265/HEVC中的情况《ISO/IEC23008-2:2015》是MPEG专家组为HEVC编解码器制定的标准 , H.265/HEVC中NALunit类型完整定义都在该标准的7-1表中 , 可用的NALunittype一共有40种之多 , 其中39和40都表征SEI内容 。 因为标准一共预留64种类型 , 所以在NALheader里面 , 用6bits表征NALunittype 。
1.第0位是禁止位0 , 值为1时表示语法出错
2.第1~6位是NALunittype
3.第7~12位是NUHlayerid
4.第13~15位是temporal_id
SEI类型在H.264/AVC视频编码标准中 , 并没有规定SEIpayloadtype的范围 , 所以表征payloadtype的字节数是浮动的 。
语法分析如下所示 , 当开始解析类型为SEI的NAL时 , 持续读取8bit , 直到非0xff为止 , 然后把读取的数值累加 , 累加值即为SEIpayloadtype 。
其中SEIpayload类型值为5时 , 指定的处理方法叫user_data_unregistered() , 字面含义为未注册的用户数据 , 常用于存储编码器的编码参数信息 , 是比较常见的payload类型 。
读取payloadtype为5时 , 具体的语法解析流程如下:
1.payloadsize应该大于16;
2.uuid可能出现0x000000/0x000001/0x000002 , 需要插入0x03做防竞争处理;
构成RBSP时 , 都需要做RBSP拖尾处理 。 拖尾处理对所有SODB方式都一致 。 rbsp_trailing_bits()语法逻辑如下:
起始码(暗红底色)"0x00000001"分割出来的比特流即是NALunit , 起始码紧跟的第一个字节(墨绿底色)是NALheader 。 上图“NALheader”一共出现了四个数值:
·"0x06" , 此时NRI为"00B" , NALunittype为SEI类型 。
·“0x67” , 此时NRI为“11B” , NALunittype为SPS类型 。
推荐阅读
- 佳德智诚|佳德智诚:在拼多多平台开店需要注意那些问题?
- 佳德智诚|德智诚:店铺运营的引流、转化和变现技巧有那些?
- 娱乐那些事儿|蓝牙耳机挂脖式好还是无线好?挂脖式性价比蓝牙耳机排名
- 马云|那些在一家公司待10年的人,后来都怎么样了?马云说出了现实
- IT那些事儿|哪款iPhone 12更值得入手?,苹果官网开启预售
- 娱乐那些事儿|颈挂式蓝牙耳机哪个牌子好?性价比颈挂式蓝牙耳机排名
- 娱乐那些事儿|挂脖式运动耳机哪个牌子好?2020十大挂脖式运动耳机
- 那些年向前冲|40外观设计,数码博主大型翻车现场,华为官宣Mate
- 科技圈里那些事Y|新款iPhone要来了!你心动了吗?
- 余温|这4款机型才是“高配低价”,华为手机别瞎买!从千元到旗舰