说明:收录全网最新的团体标准 提供单次或批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211084984.7 (22)申请日 2022.09.06 (71)申请人 天津津航计算 技术研究所 地址 300308 天津市东 丽区空港经济区保 税路357号 (72)发明人 高娟  (74)专利代理 机构 中国兵器 工业集团公司专利 中心 11011 专利代理师 王雪芬 (51)Int.Cl. H04N 19/42(2014.01) H04N 19/44(2014.01) G06F 9/445(2018.01) G06F 8/76(2018.01) G06F 8/41(2018.01) (54)发明名称 一种基于加速模块的视频解码方法 (57)摘要 本发明涉及一种基于加速模块的视频解码 方法, 属于linux系统下的视频解码技术领域。 本 发明在系统为linux的应用场景下, 针对 atlas200AI芯片的特点, 并结合硬件属性和软解 码的特点, 设计实现了一种linux系统下基于加 速模块的视频解码方法。 本发明在linux系统下, 首次采用ffmpeg软解码库对网络接收的数据进 行数据分析, 获取原始帧中的参数帧信息和数据 帧信息, 获取完整 图像帧数据包, 传输可解码的 完整数据包给atlas2 00AI芯片中的解码器, 完成 解码功能。 权利要求书3页 说明书5页 CN 115474056 A 2022.12.13 CN 115474056 A 1.一种基于加速模块的视频解码方法, 其特 征在于, 包括以下步骤: 步骤1、 移植f fmpeg到海思开发板 首先, 配置ffmpeg编译属性; 然后, 修改ffmp eg源码, 使其具备返回参数帧的功能, 交叉 编译ffmpeg源码, 得到ffmpeg解码动态库, 将ffmpeg解码动态库拷贝到海思开发板, 海思开 发板是用于加载加速模块的平台; 步骤2、 创建网络 接收线程接收主机发送的原 始压缩图像数据 首先, 根据配置文件获取传输 中的ip和端口号信息; 然后, 创建网络接收线程阻塞接收 主机从网络发送的原 始压缩图像数据; 步骤3、 使用ffmpeg解码动态库获取含参数帧的完整压缩图像数据包, 完成对不完整的 帧的数据的过 滤 首先, 初始化ffmpeg解码动态库的使用环境; 其次, 创建获取数据包线程, 使用ffmpeg 解码动态库获取压缩图像的含参数帧的完整压缩图像数据包, 即完整的图像帧数据包; 步骤4、 基于加速模块完成硬解码过程 基于加速模块, 对使用f fmpeg过滤后得到的完整的图像帧数据包进行硬解码。 2.如权利要求1所述的方法, 其特 征在于, 步骤1具体为: ①首先, 配置ffmpeg编译属性, 根据平台类型、 cpu类型、 编码解码器属性、 格式转换属 性、 交叉编译属性配置参数; ②修改acodec.h文件, 增加参数帧长度sei_len和数组sei_buf, 根据应用层 需求确定 其参数帧大小SEI_BUF_SIZE; ③在hevc_sei.c文件中的decode_nal_sei_prefix函数中添加获取参数帧功 能: 获取 函数中的参数size, 将size赋值给sei_len, 判断size是否小于等于SEI_BUF_SIZE, 如果满 足条件则拷贝上下文参数数组gb内的数据到sei_buf, 拷贝的长度为size, 拷贝的sei_buf 的数组下 标i为gb数组的索引i ndex除以8; ④然后, 执行configure命令, 在配置文件夹的子文件夹lib下生成解码动态库 libavcodec、 l ibavformat、 l ibavutil、 libswscale。 ⑤最后, 将解码动态库拷贝到海思开发板的/usr/l ib路径下。 3.如权利要求2所述的方法, 其特 征在于, 步骤2具体为: ①首先, 获取配置文件中的接收ip和端口号信息; ②然后, 创建网络套接 字; ③其次, 清零接收缓冲区, 阻塞接收主机从网络发送的原 始压缩图像数据; ④判断本次接收的数据长度是否大于零, 如果大于零则执行下一步, 否则返回到步骤 ③; ⑤判断协议帧头是否符合协议要求, 若不符合则丢弃 此帧, 否则执 行下一步。 4.如权利要求3所述的方法, 其特 征在于, 步骤3具体为: 1)初始化f fmpeg解码动态库的使用环境 首先, 设置加速模块中解码器的类型; 然后, 初始化解码器的上下文环境, 动态申请图 像帧存储空间; 2)创建获取数据包线程, 使用ffmpeg解码动态库获取压缩图像的含参数帧的完整压缩 图像数据包, 即完整的图像帧数据包, 具体流 程如下:权 利 要 求 书 1/3 页 2 CN 115474056 A 2Step1:获取从网络读取的图像数据数组首地址指针bufPt r和数据长度bufLen; Step2:判断当前的数据长度bufLen是否大于0, 如果是则继续下一步, 如果不是, 则等 待网络下次发送数据; Step3:传送图像数据数组首地址指针bufPtr和数据长度bufLen给ffmpeg解码动态库, 使用库函数av_parser_parse2对 数据数组按帧进 行分割, 如果能成功地 从数据数 组获得一 个完整的图像帧数据包则记录并继续下一 步, 如果不是则退 出本次解码过程; Step4:保存本次数据数组中图像帧分割的数据包长度ret, 从数据长度bufLen剔除本 次分割的图像帧数据包长度ret, 并向前移动首地址指针bufPt r, 移动次数为ret; Step5:将本次分割得到的完整的图像帧数据包放到待解码队列中。 5.如权利要求 4所述的方法, 其特 征在于, 步骤4具体为: ①初始化加速模块, 具体操作如下: a.创建解码通道属性, 如果创建成功则执 行下一步, 否则报错退 出; b.设置解码通道ID号, 如果设置成功则执 行下一步, 否则报错退 出; c.设置解码线程 号; d.设置解码通道回调函数, 如果设置成功则执 行下一步, 否则报错退 出; e.设置解码通道的解码类型, 如果设置成功则执 行下一步, 否则报错退 出; f.设置解码通道的输出图像 格式, 如果设置成功则执 行下一步, 否则报错退 出; g.设置解码通道输出模式, 如果设置成功则执 行下一步, 否则报错退 出; h.根据解码通道属性创建解码通道; ②设置解码回调函数, 具体如下: a.使用库函数获取解码正常帧输出, 如果获取 结果为0, 则执 行下一步, 否则报错退 出; b.使用库函数获取图像属性数据output; c.使用库函数从output里获取图像的大小、 宽和高度这些参数 数据; d.使用库函数将图像数据和参数 数据发送到主机端口; ③从所述待解码队列中获取完整的图像帧数据包; ④将完整的图像帧数据包发送给解码器进行解码, 具体如下: a.使用库函数动态申请图像存 储空间; b.从ffmpeg解码动态库获取图像帧的参数 数据; c.将参数 数据和过 滤后得到的完整图像帧数据整合成完整帧; d.创建输入图像流属性对象; e.设置输入图像流属性对象; f.动态申请图像输出内存空间; g.创建输出图像流属性对象; h.根据图像的数据、 大小、 格式设置 输出图像属性; i.将解码通道属性、 输入图像流属性、 输出图像流属性作为参数使用库函数发送完整 帧给解码器; j.释放申请的图像输出内存空间; k.销毁输入图像流属性对象资源。 6.如权利要求1所述的方法, 其特 征在于, 所述海思开发板为atlas20 0AI芯片。权 利 要 求 书 2/3 页 3 CN 115474056 A 3

.PDF文档 专利 一种基于加速模块的视频解码方法

文档预览
中文文档 9 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共9页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于加速模块的视频解码方法 第 1 页 专利 一种基于加速模块的视频解码方法 第 2 页 专利 一种基于加速模块的视频解码方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 16:32:22上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。