一种视频解码方法、装置及电子设备与流程
- 国知局
- 2024-08-02 14:14:54
本技术涉及视频解码,尤其涉及一种视频解码方法、装置及电子设备。
背景技术:
1、视频解码器是一种能够对数字视频进行压缩或者解压缩的程序或者设备。视频解码器可以将压缩后的视频数据解码为原始的像素值,以用于后续结合音频信号进行播放、编辑、分析处理等。
2、视频解码基于视频解码器的视频图像解码芯片实现,在视频图像解码芯片上,解码硬件能做的是将一段压缩视频码流解码成图像帧输出。通过解码软件获取需要解码的视频数据,并为解码硬件配置寄存器参数,在寄存器参数配置完成后,启动解码硬件,通过解码硬件对视频数据执行解码。当解码硬件完成解码过程并产生中断时,从解码硬件中获取解码后的视频帧数据,并将其输出至输出设备或应用程序中。
3、然而,在多路分时复用解码且多个解码硬件的场景,上述解码过程,在视频解码的通道数较少的情况下可以正常运行,但在视频解码的通道数较多的情况下,为每个通道分配一个独立的线程会导致线程数量过多,进而导致运算资源浪费,降低在解码硬件产生中断后唤醒对应线程时的响应速度,导致部分通道解码速率不均匀,在解码输出图像送显示器实时预览时会有卡顿感,降低实时预览的流畅性。
技术实现思路
1、本技术提供一种视频解码方法、装置及电子设备,以解决多路分时复用解码时解码速率不均匀的问题。
2、第一方面,本技术提供一种视频解码方法,应用于视频解码装置,所述视频解码装置包括多个解码模块、多个解码辅助模块、负载辅助模块、存储模块和控制模块;所述解码模块用于解码视频数据;所述存储模块用于存储多个与所述解码辅助模块关联的栈表,所述栈表用于存储待解码数据;所述解码辅助模块用于控制所述解码模块执行解码;所述负载辅助模块用于记录所述栈表的负载值;所述方法包括:
3、获取待解码数据,所述待解码数据包括视频数据和解码参数;
4、提取目标栈表,所述目标栈表为所述负载辅助模块中记录的负载值小于预设负载阈值的栈表;
5、将所述待解码数据写入所述目标栈表;
6、计算所述待解码数据的负载值,并按照所述待解码数据的负载值修改所述负载辅助模块中记录的所述目标栈表的负载值;
7、通过与所述目标栈表关联的目标解码辅助模块在所述目标栈表中读取所述待解码数据;
8、通过所述目标解码辅助模块关联的目标解码模块,按照所述解码参数对所述视频数据执行解码,以得到视频解码帧;
9、根据所述待解码数据的负载值修改所述负载辅助模块中记录的所述目标栈表的负载值。
10、在可选的实施方式中,所述方法还包括:
11、获取多路待解码数据;
12、按照待解码数据的优先级对多路所述待解码数据排序,以得到执行序列;
13、按照所述执行序列,分别提取多路所述待解码数据对应的目标栈表。
14、在可选的实施方式中,所述负载辅助模块包括多个第一寄存器和第二寄存器;提取目标栈表的步骤,所述方法还包括:
15、为所述栈表配置栈表编号;
16、建立所述第一寄存器和所述栈表编号的关联关系;
17、通过所述负载辅助模块,在所述第一寄存器中记录与所述第一寄存器关联的栈表编号的负载值,以及将负载值小于预设负载阈值的目标栈表编号存储至所述第二寄存器;
18、获取到待解码数据后,在所述第二寄存器中读取目标栈表编号,并根据所述目标栈表编号提取与所述目标栈表编号关联的目标栈表。
19、在可选的实施方式中,所述方法还包括:
20、将所述待解码数据写入所述目标栈表后,向所述负载辅助模块发送包含所述目标栈表编号和所述待解码数据的负载值的累加通知;
21、通过所述负载辅助模块,对所述目标栈表编号的当前负载值与所述待解码数据的负载值执行累加操作,以修改所述负载辅助模块中记录的所述目标栈表的负载值。
22、在可选的实施方式中,所述方法还包括:
23、将所述待解码数据和所述待解码数据的负载值写入所述目标栈表;
24、通过所述目标解码辅助模块在目标栈表中读取所述待解码数据的负载值;
25、按照所述解码参数对所述视频数据执行解码后,通过所述目标解码辅助模块向所述负载辅助模块发送包含所述目标栈表编号和所述待解码数据的负载值的累减通知;
26、通过所述负载辅助模块,对所述目标栈表编号的当前负载值与所述待解码数据的负载值执行累减操作,以修改所述负载辅助模块中记录的所述目标栈表的负载值。
27、在可选的实施方式中,所述方法还包括:
28、在修改所述负载辅助模块中记录的目标栈表的负载值后,通过所述负载辅助模块在所述第一寄存器中提取负载值小于预设负载阈值的栈表编号,并将所述栈表编号更新至所述第二寄存器。
29、在可选的实施方式中,所述栈表为先进先出栈表,将所述待解码数据写入所述目标栈表的步骤,包括:
30、按照预设格式,在所述目标栈表的栈表尾依次写入所述待解码数据;
31、通过所述目标解码辅助模块在所述目标栈表的栈表头依次读取所述待解码数据。
32、在可选的实施方式中,所述方法还包括:
33、向所述目标解码辅助模块发送解码通知;
34、通过所述目标解码辅助模块在所述目标栈表中读取所述待解码数据,将所述待解码数据传入所述目标解码模块,并控制所述目标解码模块执行解码;
35、通过所述目标解码模块,按照所述解码参数对所述视频数据执行解码,以得到视频解码帧。
36、第二方面,本技术提供一种视频解码装置,包括多个解码模块、多个解码辅助模块、负载辅助模块、存储模块和控制模块;所述解码模块用于解码视频数据;所述存储模块用于存储多个与所述解码辅助模块关联的栈表,所述栈表用于存储待解码数据;所述解码辅助模块用于控制所述解码模块执行解码;所述负载辅助模块用于记录所述栈表的负载值;
37、所述控制模块被配置为:
38、获取待解码数据,所述待解码数据包括视频数据和解码参数;
39、提取目标栈表,所述目标栈表为所述负载辅助模块中记录的负载值小于预设负载阈值的栈表;
40、将所述待解码数据写入所述目标栈表;
41、计算所述待解码数据的负载值,并根据所述待解码数据的负载值修改所述负载辅助模块中记录的所述目标栈表的负载值;
42、通过与所述目标栈表关联的目标解码辅助模块在所述目标栈表中读取所述待解码数据;
43、通过所述目标解码辅助模块关联的目标解码模块,按照所述解码参数对所述视频数据执行解码,以得到视频解码帧;
44、根据所述待解码数据的负载值修改所述负载辅助模块中记录的所述目标栈表的负载值。
45、第三方面,本技术提供一种电子设备,包括存储装置以及上述第二方面的视频解码装置;所述存储装置与所述视频解码装置建立通信连接;所述存储装置被配置为存储待解码数据。
46、由以上技术方案可知,本技术提供一种视频解码方法、装置及电子设备,所述视频解码装置包括多个解码模块、多个解码辅助模块、负载辅助模块、存储模块和控制模块。解码模块用于解码视频数据,存储模块用于存储多个与解码辅助模块关联的栈表,栈表用于存储待解码数据,解码辅助模块用于控制解码模块执行解码,负载辅助模块用于记录栈表的负载值。所述方法可以获取待解码数据,将待解码数据写入负载辅助模块中记录的负载值小于预设负载阈值的目标栈表,并根据待解码数据的负载值修改负载辅助模块中记录的目标栈表的负载值。通过目标解码辅助模块在目标栈表中读取待解码数据,并控制目标解码模块,对待解码数据执行解码,解码后根据待解码数据的负载值修改负载辅助模块中记录的目标栈表的负载值。所述方法通过软硬件协同处理,实时解码多路不同分辨率、不同帧率、不同码率的码流,解决多路分时复用解码时解码速率不均匀的问题。
本文地址:https://www.jishuxx.com/zhuanli/20240801/242153.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表