[发明专利]基于过滤机制的视频解码方法在审
申请号: | 202110826187.0 | 申请日: | 2021-07-21 |
公开(公告)号: | CN113727116A | 公开(公告)日: | 2021-11-30 |
发明(设计)人: | 高娟 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | H04N19/44 | 分类号: | H04N19/44;H04N21/44;H04N21/4545 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 茹阿昌 |
地址: | 300000 天津市*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 过滤 机制 视频 解码 方法 | ||
1.基于过滤机制的视频解码方法,其特征在于,包括以下步骤:
1)配置ffmpeg的编译属性和参数,将ffmpeg动态库到海思平台;
2)创建网络接收任务接收主机传送的原始压缩数据;
3)创建获取数据包线程,使用ffmpeg动态库获取含有带有含参数帧的图像数据包;
4)建立过滤机制,筛选错误帧,组合成可解码的数据包发送到芯片的硬解码模块;
5)获取硬解码模块内的解码图像。
2.根据权利要求1所述的基于过滤机制的视频解码方法,其特征在于,步骤4)所述筛选错误帧,组合成可解码的数据包,具体为:
动态筛选出不符合协议规定的错误帧,分析编码规律,调整数据包图像帧顺序,根据编码器特性动态修改帧类型,使其组合成可解码的图像数据包。
3.根据权利要求1所述的基于过滤机制的视频解码方法,其特征在于,步骤4)所述过滤机制,具体为:
41)判断图像类型,分析不同类型需要的slice个数图像数据包中含P帧的个数,并记录在该通道的数据结构变量PSliceNumber;
42)判断当前数据包大小是否大于协议帧规定的最大数,如果大于则退出本次数据包的过滤过程,待接收到新的图像数据包后返回步骤41),否则进行下一步;
43)循环遍历本次数据包内的数据,依次判断当前帧是否符合h265协议帧头,如果符合则进行下一步,如果不符合则跳转到步骤49);
44)判断当前帧是否为P帧或者I帧,如果是,则需要增加本通道本次传输的数据包内sllice个数temp_PSliceNumber,进入下一步;如果不是则跳转到步骤46);
45)如果当前数据包的temp_PSliceNumber等于2,则再次判断p_slice是否为0,如果是,则设置p_size为i,并更新记录slice标志p_slice为1;
46)判断当前帧类型是否为SPS,是SPS则置标志top为1,反之,则直接进入48);
47)继续判断当前帧是否为参数帧,如果是则将当前数据包数组ptr内的i位置拷贝到数据结构Idr_buf,保存sei帧之前的帧头信息,记录当前保存帧头的数据大小Idr_Size为i,将首次出现sps标识entryFlag为1,并清零top为0;完成后进入步骤48);
48)判断当前通道的图像数据是否需要插入I帧,并且entryFlag为1,如果上述两个条件成立则判断当前帧类型是否为p帧,如果是p帧则将数据包的帧类型字节内容由0x02改成0x26,改P帧为I帧;反之则直接进入步骤49);
49)继续查看数据包内ptr是否还有其他数据需要遍历查询,如果有就回到步骤43),如果没有就继续下一步;
410)判断当前通道的insertIDR标志和entryFlag是否都为1,如果是则继续下一步,如果不是则进行步骤413);
411)判断当前temp_PSliceNumber是否等于本通道图像类型应该具备的PSliceNumber,如果是则下一步,如果不是则丢弃该数据包,退出该数据包的解码过程;待接收到新的图像数据包后返回步骤41);
412)将当前数据包内完整图像帧大小为size的数据,拷贝到Idr_Buf中,拷贝的位置从Idr_Buf的Idr_Size开始,将size的大小增大Idr_Size,再次将Idr_Buf的数据拷贝到ptr中,拷贝的数据大小为size;
413)判断当前temp_PSliceNumber是否等于本通道图像类型应该具备的PSliceNumber,如果是则进行下一步,如果不是则进行步骤415);
414)判断p_slice是否为1,如果是则将p_size赋值给size,清零p_slice;反之,则直接进入步骤415);
415)将当前通道的图像参数帧大小记录在seiSize中,同时拷贝当前图像的参数帧到当前通道的待解码图像数据结构体decodeArray中,将参数个数seiCount作为待解码图像的时间戳u64PTS;
416)查询当前通道的解码状态,并把状态结构体中的已解码图像帧数保存到u32DecodeStreamFrames;
417)获取当前通道待解码图像数据的首地址ptr和数据长度size,时间戳u64PTS,并以流形式发送到硬解码模块;
418)循环查询解码器的工作状态,直至获得新的解码图像;
419)调用海思库函数查询解码器通道状态;
420)判断通道内剩余需解码的字节数是否为0,如果是则进去下一步,如果不是则延时1ms跳转到步骤419);
421)解码器通道已经解码后的图像帧数是否与之前保存的u32DecodeStreamFrames不相等,或者该通道的insertIDR标识为1,如果是进入下一步,反之,则到步骤423);
422)将insrtIDR标识清零,增加参数帧的个数,判断如果seiCount大于协议指定大的最大值SEI_NUM,则将参数帧的个数标志seiCount清零,进入步骤426);反之,则直接进入下一步;
423)复位解码器,进入步骤424);
424)判断解码器复位标志resetFlag是否为0,如果是则进入下一步,如果不是则继续等待1ms,跳转到步骤423);
425)将复位状态resetState置1,调用库函数停止解码通道的视频流接收任务,销毁解码通道,重启解码通道,将插入I帧的标志insertIDR置1,复位状态resetState置0,进入下一步;
426)结束本次过滤过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110826187.0/1.html,转载请声明来源钻瓜专利网。