买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于过滤机制的视频解码方法_天津津航计算技术研究所_202110826187.0 

申请/专利权人:天津津航计算技术研究所

申请日:2021-07-21

公开(公告)日:2024-04-23

公开(公告)号:CN113727116B

主分类号:H04N19/44

分类号:H04N19/44;H04N21/44;H04N21/4545

优先权:

专利状态码:有效-授权

法律状态:2024.04.23#授权;2021.12.17#实质审查的生效;2021.11.30#公开

摘要:本发明属于linux系统下视频解码技术,涉及一种基于过滤机制的视频解码方法。首先,移植ffmpeg到海思平台,对ffmpeg进行源码修改使其适配海思芯片。其次,启动ffmpeg的动态库对网络传输的数据进行参数帧和图像帧的组合,获取完整图像信息,然后,建立过滤机制,动态筛选错误帧,分析编码规律,调整错误数据包内数据帧顺序,将可解码的数据包再传送给海思芯片的硬解码模块。最后,创建获取图像线程,从解码通道获取已解码的图像数据,从而完成解码任务。

主权项:1.基于过滤机制的视频解码方法,其特征在于,包括以下步骤:1配置ffmpeg的编译属性和参数,将ffmpeg动态库移植到海思平台;2创建网络接收任务接收主机传送的原始压缩数据;3创建获取数据包线程,使用ffmpeg动态库获取含参数帧的图像数据包;4建立过滤机制,筛选错误帧,组合成可解码的数据包发送到芯片的硬解码模块;5获取硬解码模块内的解码图像;步骤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结束本次过滤过程。

全文数据:

权利要求:

百度查询: 天津津航计算技术研究所 基于过滤机制的视频解码方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术