一种基于编码序号的解码方法技术

技术编号:39773600 阅读:24 留言:0更新日期:2023-12-22 02:22
本发明专利技术公开了一种基于编码序号的解码方法,其包括以下步骤:第一步:移植

【技术实现步骤摘要】
一种基于编码序号的解码方法


[0001]本专利技术属于
linux
系统下视频解码
,涉及一种基于编码序号的解码方法


技术介绍

[0002]Hi3559AV100
是专业的
8K Ultra HD Mobile Camera SOC
,它提供了
8K30/4K120
广播级图像质量的数字视频录制,支持多路
Sensor
输入,支持
H.265
编码输出或影视级的
RAW
数据输出,并集成高性能
ISP
处理,同时采用先进低功耗工艺和低功耗架构设计,为用户提供了卓越的图像处理能力

[0003]Hi3559AV100
支持业界领先的多路
4K Sensor
输入,多路
ISP
图像处理,支持
HDR10
高动态范围技术标准,并支持多路全景硬件拼接

在支持
8K30/4K120
视频录制下,
Hi本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于编码序号的解码方法,其特征在于,包括以下步骤:第一步:移植
ffmpeg
到海思平台;第二步:创建网络接收线程接收主机发送的原始压缩图像数据;第三步:使用
ffmpeg
动态库获取含参数帧的完整压缩图像数据包;第四步:对完整数据包进行筛选并按编码序号重组;第五步:获取解码模块内的图像并发送给主机
。2.
如权利要求1所述的基于编码序号的解码方法,其特征在于,第一步中,移植
ffmpeg
到海思平台的过程如下:配置
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
数组的索引
index
除以8,即
sei_buf[i]

gb_buf[index/8]
;执行
configure
命令,在配置文件夹的子文件夹
lib
下将生成的解码库
libavcodec、libavformat、libavutil、libswscale
拷贝到解码板卡的
/usr/lib
路径下
。3.
如权利要求2所述的基于编码序号的解码方法,其特征在于,第二步包括以下子步骤:
S201
获取配置文件中接收
ip
和端口
。S202
创建网络套接字
。S203
清零接收缓冲区,阻塞接收网络发送的图像数据;
S204
判断本次接收的长度是否大于零,如果大于零则进行下一步,否则回到步骤
S203

S205
判断协议帧头是否符合协议要求,如不符合就丢弃该帧
。4.
如权利要求3所述的基于编码序号的解码方法,其特征在于,第三步包括以下子步骤:
S301
初始化解码库使用环境;
S302
创建
ffmpeg
获取数据包线程
。5.
如权利要求4所述的基于编码序号的解码方法,其特征在于,步骤
S301
中,设置解码器类型,采用
HEVC
类型的解码器;然后初始化解码器上下文环境,动态申请图像帧存储空间
。6.
如权利要求5所述的基于编码序号的解码方法,其特征在于,步骤
S302
包括以下子步骤:
Step1:
获取从网络读取的图像数据数组首地址指针
bufPtr
和长度
bufLen

Step2:
判断当前的数据长度
bufLen
是否大于0,如果是则继续下一步,如果不是,则等待网络下次发送数据;
Step3:
传送数据数组首地址指针
bufPtr
和长度
bufLen
给软解码模块,使用库函数
av_parser_parse2
对数据按帧进行分割,如果从数组能成功获得一个完整的图像帧数据包则
记录继续下一步,如果不是则退出本次解码过程;
Step4:
保存本次数据数组中图像帧分割的数据包长度
ret
,从数据数组总长度
bufLen
剔除本次分割的图像帧数据包长度
ret
,并向前移动首地址指针
bufPtr
,移动次数为
ret

Step5:
将本次分割的图像完整数据包放到待解码队列中
。7.
如权利要求6所述的基于编码序号的解码方法,其特征在于,第四步中,分析数据包内的帧个数和帧类型,针对压缩原理和图像类型分类保存不同图像需要的协议帧个数和帧类型;根据错误类型对图像数据进行再处理,分析错误数据包内编码序号的排列规律,并纠正后再重组,从而组合可解码的数据包给硬解码模块
。8.
如权利要求7所述的基于编码序号的解码方法,其特征在于,第四步包括以下子步骤:
S401
判断当前帧类型是否与上一次保存的历史解码帧类型
type
一致,如果不一致则进行下一步,否则跳转到第
S404
步;
S402
更新插入帧标识
insertIDR
并设置为1;
S403
判断当前帧是否属于协议中的图像帧类型组合的一种,如果是则将当前帧类型更新到历史解码帧类型
type
中,否则就退出该过程;
S404
获取当前帧的数据大小
size
,保存到插入帧的数据大小
idrsize
中;
S405
依次遍历图像帧数组中的数据,循环次数
i

idrsize
‑3,如果超过循环次数则退出循环跳转到第
S4044
步,否则进行下一步;
S406
判断当前遍历的数组中相对于
i
的位置偏移0,1,2的值是否等于
0x00\0x00\0x01
,如果是则进行下一步,否则对循环次数进行递增,跳转到第
S405
步;
S407
判断相对当前遍历的数组中相对于
i
的位置偏移3的数据,是否等于
0x40
,或者等于
0x42
,或者等于
0x44
,如果是则进入到下一步,否则跳转到第
S4010
步;
S408
判断参数帧标志
seiFlag
是否为1,设置插入帧标志
insertIDR
为1,否则退出该过程;
S409
设置
IDR
帧标志为1;
S4010
判断相对当前遍历的数组中相对于
i
的位置偏移3的数据,是否等于
0x4E
,如果是则进行下一步,否则跳转到第
S S4013
步;
S4011
设置插入帧标志
insertIDR
为1,并退出该过程;
S4012
设置参数帧标志
seiFlag
为1,并将数据帧起始位置
u32start
设置为当前数组遍历的位置
i
,将图像帧大小
size
更新为
size
减去
u32start
的值;
S4013
判断相对当前遍历的数组中相对于
i
的位置偏移3的数据,是否等于
0x26
,如果是则进行下一步,否则跳转到第
S4017
步;
S4014
判断参数帧标志
seiFlag
是否等于0,如果是则进行下一步,否则跳转到第
S4016
步;
S4015
设置插入帧标志
insertIDR
为1并退出该过程;
S4016
将图像帧个数
IsliceNumber
增加1,同时将该通道的帧个数清零;
S4017
设置相对当前遍历的数组中相对于
i
的位置偏移3的数据为
0x02

S4018
判断相对当前遍历的数组中相对于
i
的位置偏移3的数据是否为
0x02
,如果是则进行下一步,否则跳转到第
S4044
步;
S4019
判断参数帧标识是否为0,如果是则进行下一步,否则跳转到第
S4021
步;
S4020
设置插入帧标志为1并退出该过程;
S4021
记录
P
帧个数的标志
PsliceNumber
增加1;
S4022
判断插入帧标志
insertIDR
是否为1,如果是则进行下一步,否则跳转到第
S4036
步;
S4023
设置相对当前遍历的数组中相对于
i
的位置偏移3的数据为
0x26
,将图像帧个数标识
IsliceNumber
增加1;
S4024
判断当前图中帧类型
type
是否为红外视频,如果是则进行下一步,否则跳转到第
S4030
步;
S4025
设置相对当前遍历的数组中相对于
i
的位置偏移3的数据为
0x26

S4026
判断
p
帧个数标志
PsliceNumber
是否为1,如果是则设置偏移数组当前位置
i
的第
6、7、8
的数据为
0xaf\0x04\0x58
,否则进行下一步;
S4027
判断
p
帧个数标志
PsliceNumber
是否为2,如果是则设置偏移数组当前位置
i
的第
6、7、8、9
的数据为
0x23\0x47\0x82\0x2c
,否则进行下一步;
S4028
判断
p
帧个数标志
PsliceNumber
是否为3,如果是则设置偏移数组当前位置
i
的第
6、7、8、9
的数据为
0x26\0x87\0x82\0x2c
,否则进行下一步;
S4029
判断
p
帧个数标志
PsliceNumber
是否为4,如果是则设置偏移数组当前位置
i
的第
6、7、8、9
的数据为
0x29\0xc7\0x82\0x2c
,否则进行下一步;
S4030
判断当前图中帧类型
type
是否为电视类型视频,如果是则进行下一步,否则跳转到第
S4044
步;
S4031
判断
p
帧个数标志
PsliceNumber
是否为1,如果是则设置偏移数组当前位置
i
的第
6、7、8
的数据为
0xaf\0x04\0x58

S4032
判断
p
帧个数标志
PsliceNumber
是否为2,如果是则设置偏移数组当前位置
i
的第
6、7、8、9
的数据为
0x23\0x47\0x82\0x2c

S4033
判断
p
帧个数标志
PsliceNumber
是否为3,如果是则设置偏移数组当前位置
i
的第
6、7、8、9
的数据为
0x26\0x87\0x82\0x2c

S4034
判断
p
帧个数标志
PsliceNumber
是否为4,如果是则设置偏移数组当前位置
i
的第
6、7、8、9
的数据为
0x29\0xc7\0x82\0x2c

S4035
设置数据包内图像帧个数为0;
S4036
判断当前图中帧类型
type
是否为红外视频,如果是则进行下一步,否则跳转到第
S4040
步;
S40...

【专利技术属性】
技术研发人员:高娟
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1