HDRVivid视频解码后处理的方法及解码器与流程

文档序号:33096809发布日期:2023-02-01 00:04阅读:102来源:国知局
HDRVivid视频解码后处理的方法及解码器与流程
hdr vivid视频解码后处理的方法及解码器
技术领域
1.本发明属于音视频编解码技术领域,具体涉及一种hdrvivid视频解码后处理的方法及解码器。


背景技术:

2.在高动态范围(high-dynamic range,hdr)vivid超高清端到端系统中,需要有参考解码器对输出码流进行监看,用以监控hdr vivid码流实际终端播放效果。hdr vivid码流的播放监看区别于传统的专业解码器在于,解码器需要根据目标显示屏幕的亮度范围,对解码后的图像进行hdr vivid后处理,才能正确显示hdr vivid码流的实际终端播放效果。
3.一般情况下节目制作端的码流可以通过hdr vivid认证的终端播放终端播放作为参考显示效果,但是由于每个终端屏幕只有一种屏幕参数,只能模拟显示一种屏幕显示效果,无法覆盖海量的终端。另一方面,前端监看设备作为参考解码器,需要有比较高的播放处理还原度和显示精度,需要排除各个可能引起显示误差的环节,由于屏幕和设备个体差异,无法保证播放终端当前效果是否和原始hdr vivid的后处理效果一致。最后,hdr vivid后处理是一种图像色调映射技术,需要根据码流中的元数据,实时对每帧图像进行色调映射处理,计算量较大,尤其在4k/8k超高清应用中,一些终端无法实现实时播放。
4.本发明实现了一种hdr vivid解码后处理方法与装置,该发明基于cpu+gpu混合架构,对解码流程和hdr vivid后处理流程进行充分优化和模块并行化拆分,实现了hdr vivid码流效果的高精度还原,通过合理的设备硬件配置,实现超高清4k/8k hdr vivid后处理实时播放监看,通过输入不同的目标屏幕参数,可以实现各类屏幕的参考后处理显示效果的监看,填补了行业空白,并推动hdrvivid标准的普及和降低开发验证成本。


技术实现要素:

5.本发明要解决的技术问题是提供一种hdr vivid视频解码后处理的方法及解码器,可以实现较低成本的8k超高清hdr vivid后处理实时解码监看。
6.为解决上述技术问题,本发明采用如下的技术方案:
7.本发明实施例一方面提供一种hdr vivid视频解码后处理的方法,包括以下步骤:
8.将待后处理的yuv数据划分为n个slice,n根据设备能力及图像大小设置;
9.创建并申请输出帧v210存储内存块;
10.将gpu资源抽象成不同的能力类型,包括h2d拷贝,cu通用计算和d2h拷贝,所述h2d拷贝用于yuv数据从内存拷贝到显存;所述cu通用计算用于vivid后处理计算;所述d2h拷贝用于v210数据从显存拷贝到内存;为每种能力建立一个计算能力资源池,分别建立一个空闲资源列表及一个已使用资源列表,形成一个总的gpu能力资源池,外部通过申请空闲资源执行相应操作,否则等待资源释放;
11.创建独立的线程模块进行hdr vivid映射曲线参数参生成计算;
12.申请h2d拷贝能力资源,执行yuv数据从内存拷贝至显存操作;
13.从曲线参数生成模块获取当前帧的hdr vivid曲线参数生成结果。
14.申请cu通用计算能力资源,执行vivid后处理核心计算流程;
15.申请d2h拷贝能力,执行v210数据从显存拷贝至指定内存操作;
16.对同一帧视频的多个slice执行同步sdi输出处理。
17.优选地,slice的划分通过计算获取每个slice的每个yuv分量的首地址及大小实现。
18.优选地,slice的划分通过计算获取每个slice的每个yuv分量的首地址及大小实现包括:
19.在初始化的时候根据图像大小和yuv色彩空间格式,计算每个yuv分量数据总大小y_len,u_len和v_len,根据总大小计算每个分量的slice分块大小y_chunk=y_len/n,u_chuk=u_len/n,v_chunk=v_len/n,保存以上数据;在每帧图像处理前,获取y、u、v分量的首地址,根据每个分量的首地址和初始化计算的slice分块大小,计算得到每个yuv分量每个slice的首地址和分块大小。
20.优选地,v210为packed存储格式,一帧图像通过一整块连续内存表示,通过创建v210数据块的首地址和图像大小,计算出每个slice目标首地址。
21.优选地,所述外部通过申请空闲资源执行相应操作,否则等待资源释放包括:应用调度层对于图像的每个slice,串行依次执行h2d拷贝,vivid后处理计算和d2h拷贝三个子计算过程,每执行一个过程,便从相应的gpu空闲资源队列获取计算资源进行处理,同时将空闲队列的计算资源移入已使用资源队列,如果空闲队列空则等待已使用资源释放回空闲队列再执行上述操作,每个slice的子计算过程完成后,再把相应的计算资源释放回空闲队列;对于每个slice内部,三个子计算步骤串行执行,多个slice间则并行执行,共享计算资源。
22.优选地,所述创建独立的线程模块进行hdr vivid映射曲线参数参生成计算包括:
23.创建一个独立的线程模块,在视频码流解析过程把相应元数据解析完后交给所述线程模块处理,所述线程模块计算得到hdr vivid映射曲线参数,并把输出结果根据帧序号进行存储,最后在hdr vivid后处理计算过程从该线程模块获取当前帧的曲线参数计算结果,实现包括曲线计算过程和视频解码、图像格式转换及电光转换过程的异步并行执行。
24.本发明实施例又一方面提供一种解码器,用于执行上述任一的hdr vivid视频解码后处理方法,基于服务器cpu和gpu的混合架构实现。
25.优选地,将待后处理的yuv数据划分为n个slice;创建并申请输出帧v210存储内存块;创建独立的线程模块进行hdr vivid映射曲线参数参生成计算;对同一帧视频的多个slice执行同步sdi输出处理在cpu中进行。
26.优选地,将gpu资源抽象成不同的能力类型,包括h2d拷贝,cu通用计算和d2h拷贝,所述h2d拷贝用于yuv数据从内存拷贝到显存;所述cu通用计算用于vivid后处理计算;所述d2h拷贝用于v210数据从显存拷贝到内存;为每种能力建立一个计算能力资源池,分别建立一个空闲资源列表及一个已使用资源列表,形成一个总的gpu能力资源池,外部通过申请空闲资源执行相应操作,否则等待资源释放;申请h2d拷贝能力资源,执行yuv数据从内存拷贝至显存操作;从曲线参数生成模块获取当前帧的hdr vivid曲线参数生成结果;申请cu通用
计算能力资源,执行vivid后处理核心计算流程;申请d2h拷贝能力,执行v210数据从显存拷贝至指定内存操作由gpu完成。
27.采用本发明具有如下的有益效果:本发明通过cpu+多gpu异构方案,通过组建gpu资源池及对并行流程进行合理设计,形成流水线操作,可以实现较高的资源利用率,提高系统的并行度和处理实时性,通过合理的硬件配置,可以实现较低成本的8k超高清hdr vivid后处理实时解码监看。
附图说明
28.图1为本发明实施例的hdrvivid视频解码后处理的方法的步骤流程图。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.参照图1,所示为本发明实施例的hdr vivid视频解码后处理的方法的步骤流程图,包括以下步骤:
31.将待后处理的yuv数据划分为n个slice,n根据设备能力及图像大小设置;
32.创建并申请输出帧v210存储内存块;
33.将gpu资源抽象成不同的能力类型,包括h2d(host to device)拷贝,cu(compute unit)通用计算和d2h(device to host)拷贝,h2d拷贝用于yuv数据从内存拷贝到显存;cu通用计算用于vivid后处理计算;d2h拷贝用于v210数据从显存拷贝到内存;为每种能力建立一个计算能力资源池,分别建立一个空闲资源列表及一个已使用资源列表,形成一个总的gpu能力资源池,外部通过申请空闲资源执行相应操作,否则等待资源释放;
34.创建独立的线程模块进行hdr vivid映射曲线参数参生成计算;
35.申请h2d拷贝能力资源,执行yuv数据从内存拷贝至显存操作;
36.从曲线参数生成模块获取当前帧的hdr vivid曲线参数生成结果。
37.申请cu通用计算能力资源,执行vivid后处理核心计算流程;
38.申请d2h拷贝能力,执行v210数据从显存拷贝至指定内存操作;
39.对同一帧视频的多个slice执行同步sdi输出处理。
40.以上过程中,除了曲线参数系数生成过程,其它过程都是每个像素独立处理,可以实现像素级并行处理,包括曲线参数系数生成和hdr vivid后处理图像处理。两个过程可以并行处理,其中曲线参数系数生成需要在hdr vivid后处理的压缩比例计算之前完成即可。
41.本发明一实施例中,slice的划分通过计算获取每个slice的每个yuv分量的首地址及大小实现,包括:
42.在初始化的时候根据图像大小和yuv色彩空间格式,计算每个yuv分量数据总大小y_len,u_len和v_len,根据总大小计算每个分量的slice分块大小y_chunk=y_len/n,u_chuk=u_len/n,v_chunk=v_len/n,保存以上数据;在每帧图像处理前,获取y、u、v分量的首地址,根据每个分量的首地址和初始化计算的slice分块大小,计算得到每个yuv分量每
个slice的首地址和分块大小。
43.本发明一实施例中,外部通过申请空闲资源执行相应操作,否则等待资源释放包括:应用调度层对于图像的每个slice,串行依次执行h2d拷贝,vivid后处理计算和d2h拷贝三个子计算过程,每执行一个过程,便从相应的gpu空闲资源队列获取计算资源进行处理,同时将空闲队列的计算资源移入已使用资源队列,如果空闲队列空则等待已使用资源释放回空闲队列再执行上述操作,每个slice的子计算过程完成后,再把相应的计算资源释放回空闲队列;对于每个slice内部,三个子计算步骤串行执行,多个slice间则并行执行,共享计算资源。
44.本发明一实施例中,创建独立的线程模块进行hdr vivid映射曲线参数参生成计算包括:
45.创建一个独立的线程模块,在视频码流解析过程把相应元数据解析完后交给所述线程模块处理,所述线程模块计算得到hdr vivid映射曲线参数,并把输出结果根据帧序号进行存储,最后在hdr vivid后处理计算过程从该线程模块获取当前帧的曲线参数计算结果,实现包括曲线计算过程和视频解码、图像格式转换及电光转换过程的异步并行执行。
46.本发明又一实施例的一种解码器,用于执行上述任一的hdr vivid视频解码后处理方法,基于服务器cpu和gpu的混合架构实现。其中将待后处理的yuv数据划分为n个slice;创建并申请输出帧v210存储内存块;创建独立的线程模块进行hdr vivid映射曲线参数参生成计算;对同一帧视频的多个slice执行同步sdi输出处理在cpu中进行。将gpu资源抽象成不同的能力类型,包括h2d拷贝,cu通用计算和d2h拷贝,所述h2d拷贝用于yuv数据从内存拷贝到显存;所述cu通用计算用于vivid后处理计算;所述d2h拷贝用于v210数据从显存拷贝到内存;为每种能力建立一个计算能力资源池,分别建立一个空闲资源列表及一个已使用资源列表,形成一个总的gpu能力资源池,外部通过申请空闲资源执行相应操作,否则等待资源释放;申请h2d拷贝能力资源,执行yuv数据从内存拷贝至显存操作;从曲线参数生成模块获取当前帧的hdr vivid曲线参数生成结果。申请cu通用计算能力资源,执行vivid后处理核心计算流程;申请d2h拷贝能力,执行v210数据从显存拷贝至指定内存操作则由gpu完成。
47.基于cpu+gpu混合架构,把gpu能力抽象成h2d拷贝,cu通用计算,d2h拷贝等3种能力资源池,每种资源数量的设置可以基于具体的gpu个数及实际能力进行合理配置。外部通过申请gpu相应的空闲资源来实现具体计算模块的执行,通过把待处理图像拆成n个slice并行处理,形成一个操作流水,能够在充分的利用硬件资源的同时实现最大化并行处理,降低整体延时。
48.应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1