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

【发明授权】一种高效可转码的视频解码方法_天津津航计算技术研究所_202110824903.1 

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

申请日:2021-07-21

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

公开(公告)号:CN113727115B

主分类号:H04N19/44

分类号:H04N19/44;H04N19/40;H04N19/42;G06F13/42;G06F13/28

优先权:

专利状态码:有效-授权

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

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

主权项:1.一种高效可转码的视频解码方法,其特征在于,包括如下步骤:1配置ffmpeg的编译属性和参数,将ffmpeg动态库移植到海思平台;2配置PCIE设备,启动PCIE通道,制定主设备和从设备传输规则;3根据通道数为每个通道创建PCIE读数据线程,启动PCIE读任务获取主机传输的原始图像数据;4创建ffmpeg获取数据包线程,使用ffmpeg动态库获取含参数帧的完整压缩图像数据包;5对完整数据包进行过滤,将可解码的数据包发送到硬解码模块;6获取硬解码模块内的图像;7将解码后的图像转化为目标格式图像;8将转码后的图像通过PCIE通道发送给主机;步骤5所述对完整数据包进行过滤,具体为:51判断图像类型,分析不同类型需要的slice个数图像数据包中含P帧的个数,并记录在该通道的数据结构变量PSliceNumber;52判断当前数据包大小是否大于协议帧规定的最大数,如果大于则返回退出本次数据包的过滤过程,待接收到新的图像数据包后返回步骤51,否则进行下一步;53循环遍历本次数据包内的数据,依次判断当前帧是否符合h265协议帧头,如果符合则进行下一步,如果不符合则跳转到步骤59;54判断当前帧是否为P帧或者I帧,如果是,则需要增加本通道本次传输的数据包内sllice个数temp_PSliceNumber,进入下一步;如果不是则跳转到步骤56;55如果当前数据包的temp_PSliceNumber等于2,则再次判断p_slice是否为0,如果是,则设置p_size为i,并更新记录slice标志p_slice为1;56判断当前帧类型是否为SPS,是SPS则置标志top为1并进入步骤57;反之,则直接进入58;57继续判断当前帧是否为参数帧,如果是则将当前数据包数组ptr内的i位置拷贝到数据结构Idr_buf,保存sei帧之前的帧头信息,记录当前保存帧头的数据大小Idr_Size为i,将首次出现sps标识entryFlag为1,并清零top为0;完成后进入步骤58;58判断当前通道的图像数据是否需要插入I帧,并且entryFlag为1,如果上述两个条件成立则判断当前帧类型是否为p帧,如果是p帧则将数据包的帧类型字节内容由0x02改成0x26,即改P帧为I帧;反之则直接进入步骤59;59继续查看数据包内ptr是否还有其他数据需要遍历查询,如果有就回到步骤53,如果没有就继续下一步;510判断当前通道的insertIDR标志和entryFlag是否都为1,如果是则继续下一步,如果不是则进行步骤513;511判断当前temp_PSliceNumber是否等于本通道图像类型应该具备的PSliceNumber,如果是则下一步,如果不是则丢弃该数据包,退出该数据包的解码过程;待接收到新的图像数据包后返回步骤51;512将当前数据包内完整图像帧大小为size的数据,拷贝到Idr_Buf中,拷贝的位置从Idr_Buf的Idr_Size开始,将size的大小增大Idr_Size,再次将Idr_Buf的数据拷贝到ptr中,拷贝的数据大小为size;513判断当前temp_PSliceNumber是否等于本通道图像类型应该具备的PSliceNumber,如果是则进行下一步,如果不是则进行步骤515;514判断p_slice是否为1,如果是则将p_size赋值给size,清零p_slice;反之,则直接进入步骤515;515将当前通道的图像参数帧大小记录在seiSize中,同时拷贝当前图像的参数帧到当前通道的待解码图像数据结构体decodeArray中,将参数个数seiCount作为待解码图像的时间戳u64PTS;516查询当前通道的解码状态,并把状态结构体中的已解码图像帧数保存到u32DecodeStreamFrames;517获取当前通道待解码图像数据的首地址ptr和数据长度size,时间戳u64PTS,并以流形式发送到解码模块;518循环查询解码器的工作状态,直至获得新的解码图像;519调用海思库函数查询解码器通道状态;520判断通道内剩余需解码的字节数是否为0,如果是则进去下一步,如果不是则延时1ms跳转到步骤519;521解码器通道已经解码后的图像帧数是否与之前保存的u32DecodeStreamFrames不相等,或者该通道的insertIDR标识为1,如果是进入下一步,如果不是则到步骤523;522将insrtIDR标识清零,增加参数帧的个数,判断如果seiCount大于协议指定大的最大值SEI_NUM,则将参数帧的个数标志seiCount清零,进入步骤526;反之,则直接进入下一步;523复位解码器,进入步骤524;524判断解码器复位标志resetFlag是否为0,如果是则进入下一步,如果不是则继续等待1ms,跳转到步骤523;525将复位状态resetState置1,调用库函数停止解码通道的视频流接收任务,销毁解码通道,重启解码通道,将插入I帧的标志insertIDR置1,复位状态resetState置0,进入下一步;526结束本次过滤过程。

全文数据:

权利要求:

百度查询: 天津津航计算技术研究所 一种高效可转码的视频解码方法

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