本技术涉及到数据渲染,特别涉及一种解码数据的渲染方法及装置、电子设备、存储介质。
背景技术:
1、由于视频文件通常是经过编码的,所以在进行播放时需要先对其进行解码,然后再进行渲染播放。当前,对视频进行解码的方式主要包括软件解码和硬件解码,所以当前的系统平台中都会支持这两种解码方式。
2、由于软件解码得到的数据结构是avframe,而硬件解码得到的数据结构为cvpixelbufferref,所以两种解码方式得到的数据结构不同,并且硬件解码数据存储在gpu显存里,更要注意更新gpu纹理这一过程。因此,当前在系统平台中,需要为两种解码方式编写两套与两种解码方式的数据结构相匹配的渲染程序。所以当前在对视频数据渲染时,会根据视频数据的数据结构,选择相应的渲染程序进行渲染。
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、本技术提供了一种解码数据的渲染方法,获取通过软件解码方式得到的当前数据结构体。其中,当前数据结构体中至少包括当前软件解码图像的图像数据以及当前软件解码图像的像素格式。然后,确定出当前软件解码图像的像素格式的平面数量以及当前软件解码图像的像素格式对应的硬件解码像素格式。其中,硬件解码像素格式指代硬件解码得到的数据结构下的像素格式。接着按照当前软件解码图像的像素格式对应的硬件解码像素格式,创建一个硬件解码的数据结构的对象,并按照当前软件解码图像的像素格式的平面数量,分别将当前软件解码图像的图像数据中的各个平面上的数据拷贝至对象的对应的平面上,得到当前软件解码图像的图像转换数据,从而将软件解码数据结构的数据转换为硬件解码数据结构的数据,所以最后复用硬件解码渲染方式对当前软件解码图像的图像转换数据进行渲染,得到当前软件解码图像的渲染结果,从而实现了对于软件解码得到的数据也可以利用硬件解码的渲染方式进行渲染,从而只需要开发和维护一套渲染程序,有效降低了开发和维护的繁琐程度,也降低了成本。