【HISI系列】之H264/H265/JPEG切帧方法

1. H264 切帧方法
tmp = buf[i+3] & 0x1F
1、通过buf[i+0] = 0 && buf[i+1] = 0 && buf[i+2]=1 && ( ((tmp ==0x5 || tmp == 0x1) && ((buf[i+4] & 0x80) == 0x80)) ||
	(tmp == 20 && (buf[i+7] & 0x80) == 0x80) )找到第一个VLC的slice。(buf[i+7] & 0x80) == 0x80) 是判断first_mb_in_slice是否为一帧新图像的快速判断方法。
2、通过buf[i+0] = 0 && buf[i+1] = 0 && buf[i+2]=1 && (tmp ==15 || tmp == 7 || tmp == 8 || tmp == 6 ||
	((tmp == 5 || tmp == 1) && ((buf[i+4] & 0x80) == 0x80)) ||
	(tmp == 20 && (buf[i+7]&0x80)==0x80) )
找到下一帧图像开始处,两段中间即为一帧。		
2. H265 切帧方法
nal_unit_type=[0,21]	:此区间的nal_unit_type属于VLC层
nal_unit_type = 32	:VPS
nal_unit_type = 33 	:SPS
nal_unit_type = 34	:PPS
nal_unit_type = 39	:Prefix SEI
nal_unit_type = 40 	:Suffix SEI	

tmp = (buf[i+3] & 0x7E) >> 1
1、通过buf[i+0] = 0 && buf[i+1] = 0 && buf[i+2]=1 && (tmp >=0  && tmp  <= 21) && ((buf[i+5] & 0x80) == 0x80)
找到第一个VLC的Slice, buf[i+5] & 0x80 == 0x80是判断 first_slice_segment_in_pic_flag是否为一帧新图像的快速判断方法。
2、通过buf[i+0] = 0 && buf[i+1] = 0 && buf[i+2]=1 && (tmp == 32 || tmp == 33 || tmp == 34 || tmp == 39 || tmp == 40 || ((tmp >=0 && tmp <= 21) && (buf[i+5] & 0x80) == 0x80)
找到下一帧图像开始处,两段中间即为一帧。
3. JPEG/MJPEG 切帧方法
1、以SOI(0xFFD8)标记一帧开始
	如果FFD8即buf[i]==FF buf[i+1]==D8之后buf[i+2]==0xFF (buf[i+3] & 0xF0)==0xE0
	便可跳过  buf[i+4] << 8 + buf[i+5] 个字节,然后去搜索结束符,具体意思查看标准。
2、以EOI(0xFFD9)标记一帧结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值