
使用基于网络的媒体处理工作流的分割渲染
交叉引用
1.本技术要求于2020年4月7日提交的美国临时申请第63/006,207号、于2020年10月5日提交的美国临时申请第63/087,741号、于2020年10月5日提交的美国临时申请第63/087,742号和于2021年3月18日提交的美国申请第17/205,240号的优先权,它们的公开内容通过引用结合在本技术中。
技术领域
2.本公开的实施例涉及运动图像专家组(moving picture experts group,mpeg)基于网络的媒体处理(network based media processing,nbmp),并且尤其涉及使用nbmp工作流的分割渲染。
背景技术:3.mpeg基于网络的媒体处理(nbmp)项目已经发展出了云上处理媒体的概念。然而,当前的nbmp设计没有为分割渲染提供任何解决方案。
4.网络和云平台用于运行各种应用。然而,没有基于标准的解决方案来描述媒体源或接收器设备/平台在计算和存储资源方面的特性,没有方法来描述两个云节点之间的连接特性,并且也没有方法来发现网络元素的能力。
技术实现要素:5.nbmp草案国际规范示出了增加媒体处理效率、提供对媒体服务的更快且更低成本的部署,以及具有通过利用公共、私有或混合云服务来提供大规模部署的能力的巨大潜力。
6.本公开的实施例提供了一种在nbmp标准中实施分割渲染的机制。
7.分割渲染允许将处理分割成各种子过程,其中一些可以在云或边缘计算上实施,而其余的在设备上实施。媒体工作流可以以这种方式进行分割,从而允许具有低计算能力或低功率的设备能够接收媒体内容,因为处理负荷中的一些被从该设备中带走并且由云/边缘资源支持。
8.本公开的实施例改进了基于网络的媒体处理nbmp标准,以描述媒体源或媒体接收器设备/平台在计算和存储资源方面的能力,并定义了一组应用编程接口api以执行对应的发现功能。
9.本公开的实施例扩展了nbmp api以提供云节点和网络能力的发现。本公开的实施例改进了nbmp标准以描述两个nbmp mpe(例如云节点)之间的连接特性。
10.根据一个或多个实施例,提供了一种由至少一个处理器执行的方法。该方法包括:导出基于网络的媒体处理nbmp工作流;以及在媒体接收器、媒体源和至少一个云元素、网络元素或边缘元素之间分配基于网络的媒体处理nbmp工作流的多个工作流任务,其中,将多个工作流任务的第一子集分配给媒体源,其中,将多个工作流任务的第二子集分配给媒体接收器,其中,将多个工作流任务的第三子集分配给至少一个云元素、网络元素或边缘元
素,并且其中,第一子集、第二子集和第三子集彼此不重叠。
11.根据实施例,该方法进一步包括:从媒体源和媒体接收器中的至少一个接收能力信息,其中,该能力信息用于描述可用的媒体源和媒体接收器中的至少一个的资源,其中,分配包括根据该能力信息分配工作流任务。
12.根据实施例,该方法进一步包括:基于媒体源和媒体接收器中的至少一个的资源中的至少一个的变化,来重新配置基于网络的媒体处理nbmp工作流。
13.根据实施例,该方法进一步包括:在资源中的至少一个减少至预定阈值以下的情况下,从媒体源或媒体接收器接收事件驱动的通知,所述资源与所述媒体源和所述媒体接收器中的所述至少一个相关联,其中,重新配置基于网络的媒体处理nbmp工作流适应减少的该资源中的至少一个。
14.根据实施例,至少一个云元素、网络元素或边缘元素是多个网络元素或多个云节点,分配包括:基于多个网络元素或多个云节点的能力,在多个网络元素或多个云节点之间,划分基于网络的媒体处理nbmp工作流的多个工作流任务的第三子集,并且该方法进一步包括:基于多个网络元素或多个云节点的可用性的变化来动态地重新配置nbmp工作流。
15.根据实施例,该方法进一步包括:从至少一个云元素、网络元素或边缘元素接收能力信息,其中,该能力信息描述至少一个云元素、网络元素或边缘元素的可用资源,其中,分配包括:基于该能力信息分配工作流任务。
16.根据实施例,至少一个云元素、网络元素或边缘元素是至少一个云节点。
17.根据实施例,至少一个云元素、网络元素或边缘元素是多个云元素、网络元素或边缘元素,并且能力信息包括至少一个参数,所述至少一个参数用于描述多个云元素、网络元素或边缘元素中的两个之间的连接特性。
18.根据实施例,多个云元素、网络元素或边缘元素是多个云节点。
19.根据实施例,至少一个参数是用于指示多个云元素、网络元素或边缘元素中的两个之间的两个方向上的最大带宽和最小延迟的一组参数。
20.根据一个或多个实施例,提供了一种媒体系统的工作流管理器。该工作流管理器包括:至少一个处理器;以及包括计算机代码的存储器。该计算机代码包括:工作流导出代码,被配置为使至少一个处理器导出基于网络的媒体处理nbmp工作流;以及任务分配代码,其被配置为使至少一个处理器在媒体接收器、媒体源以及至少一个云元素、网络元素或边缘元素之间分配基于网络的媒体处理nbmp工作流的多个工作流任务,其中,将多个工作流任务的第一子集分配给媒体源,其中,将多个工作流任务的第二子集分配给媒体接收器,其中,将多个工作流任务的第三子集分配给至少一个云元素、网络元素或边缘元素,并且其中,第一子集、第二子集和第三子集彼此不重叠。
21.根据实施例,任务分配代码被配置为使至少一个处理器基于从媒体源和媒体接收器中的至少一个接收的能力信息,来分配工作流任务,并且该能力信息用于描述可用的媒体源和媒体接收器中的至少一个的资源。
22.根据实施例,计算机代码进一步包括:工作流重新配置代码,其被配置为使至少一个处理器基于媒体源和媒体接收器中的至少一个的资源中的至少一个的变化,来重新配置基于网络的媒体处理nbmp工作流。
23.根据实施例,工作流重新配置代码被配置为在资源中的至少一个减少至预定阈值
以下的情况下,使至少一个处理器根据从媒体源或媒体接收器接收到事件驱动的通知,来重新配置基于网络的媒体处理nbmp工作流以适应资源中的至少一个的减少,所述资源与所述媒体源和所述媒体接收器中的所述至少一个相关联。
24.根据实施例,至少一个云元素、网络元素或边缘元素是多个网络元素或多个云节点,任务分配代码被配置为使至少一个处理器基于多个网络元素或多个云节点的能力,在多个网络元素或多个云节点之间,划分基于网络的媒体处理nbmp工作流的多个工作流任务的第三子集,并且工作流重新配置代码被配置为使至少一个处理器基于多个网络元素或多个云节点的可用性的变化来动态地重新配置nbmp工作流。
25.根据实施例,任务分配代码被配置为使至少一个处理器基于从至少一个云元素、网络元素或边缘元素接收的能力信息,来分配工作流任务,并且该能力信息用于描述至少一个云元素、网络元素或边缘元素的可用资源。
26.根据实施例,至少一个云元素、网络元素或边缘元素是至少一个云节点。
27.根据实施例,至少一个云元素、网络元素或边缘元素是多个云元素、网络元素或边缘元素,并且能力信息包括至少一个参数,所述至少一个参数用于描述多个云元素、网络元素或边缘元素中的两个之间的连接特性。
28.根据实施例,至少一个参数是用于指示多个云元素、网络元素或边缘元素中的两个之间的两个方向上的最大带宽和最小延迟的一组参数。
29.根据一个或多个实施例,提供了一种存储计算机代码的非易失性计算机可读介质。该计算机代码被配置为当由实施媒体系统的工作流管理器的至少一个处理器执行时,使该至少一个处理器:导出基于网络的媒体处理nbmp工作流;以及在媒体接收器、媒体源和至少一个云元素、网络元素或边缘元素之间分配基于网络的媒体处理nbmp工作流的多个工作流任务,其中,将多个工作流任务的第一子集分配给媒体源,其中,将多个工作流任务的第二子集分配给媒体接收器,其中,将多个工作流任务的第三子集分配给至少一个云元素、网络元素或边缘元素,并且,其中第一子集、第二子集和第三子集彼此不重叠。
附图说明
30.从以下详细描述和附图中,所公开的主题的进一步特征、性质及各种优点将更加明显,其中:
31.图1是根据实施例的可以在其中实施本技术中描述的方法、装置和系统的环境的图示。
32.图2是图1的一个或多个设备的示例性部件的框图。
33.图3是根据实施例的nbmp系统的框图。
34.图4是根据实施例的示例性nbmp工作流的图示。
35.图5是根据实施例的nbmp工作流的分割渲染的示例的图示。
36.图6是根据实施例的分割渲染过程的示例的框图。
37.图7是根据实施例的重新配置nbmp工作流的示例的图示。
38.图8是根据实施例的重新配置nbmp工作流的示例的图示。
39.图9是根据实施例的计算机代码的框图。
具体实施方式
40.图1是根据实施例的可以在其中实施本文中描述的方法、装置和系统的环境100的图示。如图1所示,环境100可以包括用户设备110、平台120和网络130。环境100的设备可以通过有线连接、无线连接、或者有线和无线连接的组合来互连。
41.用户设备110包括能够接收、生成、存储、处理和/或提供与平台120相关联的信息的一个或多个设备。例如,用户设备110可以包括计算设备(例如,台式计算机、膝上型计算机、平板计算机、手持计算机、智能扬声器、服务器等)、移动电话(例如,智能电话、无线电话等)、可穿戴设备(例如,一副智能眼镜或智能手表)或类似设备。在一些实施方案中,用户设备110可以从平台120接收信息和/或向平台120发送信息。
42.平台120包括如本文别处所述的一个或多个设备。在一些实施方案中,平台120可以包括云服务器或云服务器组。在一些实施方案中,平台120可以被设计为模块化,使得可以根据特定需要来换入或换出软件部件。这样,平台120可以容易地和/或快速地被重新配置以用于不同的用途。
43.在一些实施方案中,如图所示,平台120可以被托管在云计算环境122中。值得注意的是,虽然本文所述的实施方案将平台120描述为被托管在云计算环境122中,但是在一些实施方案中,平台120可以不是基于云的(即,可以在云计算环境之外实施)或者可以是部分基于云的。
44.云计算环境122包括托管平台120的环境。云计算环境122可以提供计算、软件、数据访问、存储等服务,所述服务不需要终端用户(例如,用户设备110)了解用于托管上述平台120的一个或多个系统和/或一个或多个设备的物理位置和配置。如图所示,云计算环境122可以包括一组计算资源124(统称为“计算资源124”并单独称为“计算资源124”)。
45.计算资源124包括一个或多个个人计算机、工作站计算机、服务器设备或其它类型的计算和/或通信设备。在一些实施方案中,计算资源124可以托管上述平台120。云资源可以包括在计算资源124中执行的计算实例、在计算资源124中提供的存储装置、由计算资源124提供的数据传输设备等。在一些实施方案中,计算资源124可以通过有线连接、无线连接、或有线和无线连接的组合来与其它计算资源124通信。
46.如图1进一步所示,计算资源124包括一组云资源,诸如一个或多个应用(“app”)124-1、一个或多个虚拟机(“vm”)124-2、虚拟化存储(“vs”)124-3、一个或多个管理程序(“hyp”)124-4等。
47.应用124-1包括可以提供给用户设备110和/或平台120或由用户设备110和/或平台120访问的一个或多个软件应用。应用124-1可以消除在用户设备110上安装和执行软件应用的需求。例如,应用124-1可以包括与平台120相关联的软件和/或能够通过云计算环境122提供的任何其它软件。在一些实施方案中,一个应用124-1可以通过虚拟机124-2向/从一个或多个其它应用124-1发送/接收信息。
48.虚拟机124-2包括类似物理机一样执行程序的机器(例如计算机)的软件实现。根据虚拟机124-2的使用和与任何真实机器的对应程度,虚拟机124-2可以是系统虚拟机或过程虚拟机。系统虚拟机可以提供支持完整操作系统(“os”)的执行的完整系统平台。过程虚拟机可以执行单个程序,并且可以支持单个过程。在一些实施方案中,虚拟机124-2可以代表用户(例如,用户设备110)执行,并且可以管理云计算环境122的基础设施,诸如数据管
理、同步或长时间数据传输(long-duration data transfers)。
49.虚拟化存储124-3包括一个或多个存储系统和/或一个或多个设备,所述一个或多个存储系统和/或一个或多个设备在计算资源124的存储系统或设备内使用虚拟化技术。在一些实施方案中,在存储系统的上下文内,虚拟化的类型可以包括块虚拟化和文件虚拟化。块虚拟化可以指逻辑存储与物理存储的抽象(或分离),使得可以在不考虑物理存储或异构结构的情况下访问存储系统。该分离可以允许存储系统的管理员在如何为终端用户管理存储方面具有灵活性。文件虚拟化可以消除以文件级别访问的数据和文件被物理存储的位置之间的依赖性。这可以优化存储用途、服务器整合和/或非破坏性的文件迁移的性能。
50.管理程序124-4可以提供允许多个操作系统(例如“客户操作系统”)在主机(诸如计算资源124)上并发执行的硬件虚拟化技术。管理程序124-4可以向客户操作系统呈现虚拟操作平台,并且可以管理客户操作系统的执行。各种操作系统的多个实例可以共享虚拟化硬件资源。
51.网络130包括一个或多个有线和/或无线网络。例如,网络130可包括蜂窝网络(例如,第五代(5g,fifth generation)网络、长期演进(lte,long-term evolution)网络、第三代(3g,third generation)网络、码分多址(cdma,third generation)网络等)、公共陆地移动网络(plmn,public land mobile network)、局域网(lan,local area network)、广域网(wan,wide area network)、城域网(man,metropolitan area network)、电话网络(例如,公共交换电话网(pstn,public switched telephone network))、专用网络、自组织网络、内联网、因特网、基于光纤的网络等,和/或这些或其它类型的网络的组合。
52.图1所示的设备和网络的数量和布置是作为示例提供的。实际上,可以存在附加的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或者与图1所示的设备和/或网络不同地布置的设备和/或网络。此外,图1所示的两个或更多个设备可以在单个设备内实施,或者可以将图1所示的单个设备实施为多个分布式设备。附加地或可选地,环境100的一组设备(例如,一个或多个设备)可以执行一个或多个功能,所述一个或多个功能被描述为由环境100的另一组设备执行。
53.图2是图1的一个或多个设备的示例部件的框图。设备200可以对应于用户设备110和/或平台120。如图2所示,设备200可以包括总线210、处理器220、存储器230、存储部件240、输入部件250、输出部件260和通信接口270。
54.总线210包括允许在设备200的部件之间进行通信的部件。处理器220以硬件、固件或硬件和软件的组合来实施。处理器220是中央处理单元(cpu,central processing unit)、图形处理单元(gpu,graphics processing unit)、加速处理单元(apu,accelerated processing unit)、微处理器、微控制器、数字信号处理器(dsp,digital signal processor)、现场可编程门阵列(fpga,field-programmable gate array)、专用集成电路(asic,application-specific integrated circuit)或另一种类型的处理部件。在一些实施方案中,处理器220包括一个或多个处理器,所述一个或多个处理器能够被编程用于执行功能。存储器230包括随机访问存储器(ram,random access memory)、只读存储器(rom,read only memory)和/或另一种类型的动态或静态存储设备(例如,快闪存储器、磁存储器和/或光存储器),所述另一种类型的动态或静态存储设备用于存储供处理器220使用的信息和/或指令。
55.存储部件240存储与设备200的操作和使用相关的信息和/或软件。例如,存储部件240可以包括硬盘(例如磁盘、光盘、磁光盘和/或固态盘)、压缩盘(cd)、数字多功能盘(dvd)、软盘、盒式磁带、磁带和/或另一种类型的非易失性计算机可读介质,以及对应的驱动器。
56.输入部件250包括允许设备200通过诸如用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关和/或麦克风)接收信息的部件。附加地或可选地,输入部件250可以包括用于感测信息的传感器(例如,全球定位系统(gps,global positioning system)部件、加速度计、陀螺仪和/或致动器)。输出部件260包括提供来自设备200的输出信息的部件(例如显示器、扬声器和/或一个或多个发光二极管(led))。
57.通信接口270包括收发器类部件(例如,收发器和/或单独的接收器和发送器),其使得设备200能够通过例如有线连接、无线连接或有线和无线连接的组合与其它设备通信。通信接口270可以允许设备200从另一个设备接收信息和/或向另一个设备提供信息。例如,通信接口270可以包括以太网接口、光接口、同轴接口、红外接口、射频(rf,radio frequency)接口、通用串行总线(usb,universal serial bus)接口、wi-fi接口、蜂窝网络接口等。
58.设备200可以执行本文所述的一个或多个过程。设备200可以响应于处理器220执行由诸如存储器230和/或存储部件240等非易失性计算机可读介质所存储的软件指令来执行这些过程。计算机可读介质在本文中被定义为非易失性存储设备。存储设备包括单个物理存储设备内的存储空间或分布在多个物理存储设备上的存储空间。
59.可以从另一个计算机可读介质或通过通信接口270从另一个设备将软件指令读取到存储器230和/或存储部件240中。当被执行时,存储在存储器230和/或存储部件240中的软件指令可以使处理器220执行本文所述的一个或多个过程。附加地或可选地,可以使用硬件电路来代替软件指令或与软件指令组合以执行本文所述的一个或多个过程。因此,本文所述的实施方案不限于硬件电路和软件的任何特定组合。
60.图2所示的部件的数量和布置是作为示例提供的。实际上,设备200可以包括附加的组件、更少的组件、不同的组件或者与图2所示的组件不同地布置的组件。附加地或可选地,设备200的一组部件(例如,一个或多个部件)可以执行一个或多个功能,所述一个或多个功能被描述为由设备200的另一组部件执行。
61.在本公开的实施例中,提供了nbmp系统300。参考图3,nbmp系统300包括nbmp源310、nbmp工作流管理器320、功能储存库330、一个或多个媒体处理实体350、媒体源360和媒体接收器(media sink)370。
62.nbmp源310可以从第三方实体接收指令,可以通过nbmp工作流api 392与nbmp工作流管理器320通信,并且可以通过功能发现api 391与功能储存库330通信。例如,nbmp源310可以向nbmp工作流管理器320发送一个或多个工作流描述文档(wdd,workflow description document),并且可以读取存储在功能储存库330中的功能的功能描述,这些功能是存储在功能储存库330的存储器中的媒体处理功能,诸如媒体解码、特征点提取、相机参数提取、投影方法、接缝信息提取、混合、后处理和编码的功能。nbmp源310可以包括至少一个处理器和存储器或者由至少一个处理器和存储器实施,该存储器存储用于使该至少一个处理器执行nbmp源310的功能的代码。
63.nbmp源310可以通过发送工作流描述文档来请求nbmp工作流管理器320创建包括任务352的工作流,所述工作流要由一个或多个媒体处理实体350执行,该工作流描述文档可以包括若干描述符,描述符中的每一个可以具有若干参数。
64.例如,nbmp源310可以选择存储在功能储存库330中的功能,并将工作流描述文档发送到nbmp工作流管理器320,工作流描述文档包括用于描述细节(诸如输入和输出数据、所需功能以及工作流的要求)的各种描述符。工作流描述文档可以包括任务描述集以及要由媒体处理实体350中的一个或多个执行的任务352的输入和输出的连接映射。当nbmp工作流管理器320从nbmp源310接收到此类信息时,nbmp工作流管理器320可以通过根据功能名称对任务进行实例化并根据所述连接映射连接所述任务来创建工作流。
65.可选地或附加地,nbmp源310可以请求nbmp工作流管理器320通过使用关键字集来创建工作流。例如,nbmp源310可以向nbmp工作流管理器320发送包括关键字集的工作流描述文档,nbmp工作流管理器320可以使用该关键字集来找到存储在功能储存库330中的适当功能。当nbmp工作流管理器320从nbmp源310接收到此类信息时,nbmp工作流管理器320可以通过使用关键字(其可以在工作流描述文档的处理描述符中指定)搜索适当的功能来创建工作流,并使用工作流描述文档中的其它描述符来提供任务并连接它们以创建工作流。
66.nbmp工作流管理器320可以通过功能发现api 393与功能储存库330通信(功能发现api 393可以是与功能发现api 391相同或不同的api),并且可以通过api 394(例如nbmp任务api)与媒体处理实体350中的一个或多个通信。nbmp工作流管理器320可以包括至少一个处理器和存储器或者由至少一个处理器和存储器实施,该存储器存储用于使该至少一个处理器执行nbmp工作流管理器320的功能的代码。
67.nbmp工作流管理器320可以使用api 394来建立、配置、管理和监测(monitor)可以由一个或多个媒体处理实体350执行的工作流的一个或多个任务352。在实施例中,nbmp工作流管理器320可以使用api 394来更新和销毁任务352。为了配置、管理和监测工作流的任务352,nbmp工作流管理器320可以将诸如请求的消息发送到媒体处理实体350中的一个或多个,其中每个消息可以具有若干描述符,每一个描述符具有若干参数。任务352可以各自包括媒体处理功能354和用于媒体处理功能354的配置353。
68.在实施例中,在从nbmp源310接收到不包括任务列表(例如包括关键字列表而非任务列表)的工作流描述文档之后,nbmp工作流管理器320可以基于工作流描述文档中对任务的描述来选择任务,以通过功能发现api 393来搜索功能储存库330,以找到适当功能来作为当前工作流的任务352运行。例如,nbmp工作流管理器320可以基于在工作流描述文档中提供的关键字来选择任务。在通过使用nbmp源310提供的关键字或任务描述集来标识适当的功能之后,nbmp工作流管理器320可以通过使用api 394来配置工作流中的所选任务。例如,nbmp工作流管理器320可以从接收自nbmp源的信息中提取配置数据,并基于该配置数据来配置任务352。
69.一个或多个媒体处理实体350可以用于从媒体源360接收媒体内容、根据由nbmp工作流管理器320创建的包括任务352的工作流来处理媒体内容,并将处理的媒体内容输出到媒体接收器370。一个或多个媒体处理实体350可以各自包括至少一个处理器和存储器或者由至少一个处理器和存储器实施,该存储器存储用于使该至少一个处理器执行媒体处理实体350的功能的代码。
70.媒体源360可以包括存储媒体的存储器,并且可以与nbmp源310集成或分离。在实施例中,nbmp工作流管理器320可以在工作流准备好时通知nbmp源310,并且媒体源360可以基于工作流准备好的通知将媒体内容发送到媒体处理实体350中的一个或多个。
71.媒体接收器370可以包括至少一个处理器和至少一个显示器,或者由至少一个处理器和至少一个显示器实施,该至少一个显示器用于显示由一个或多个媒体处理实体350处理的媒体。
72.如上所讨论,从nbmp源310(例如,用于请求创建工作流的工作流描述文档)到nbmp工作流管理器320的消息以及从nbmp工作流管理器320到一个或多个媒体处理实体350的消息(例如,用于使工作流被执行)可以包括若干描述符,每一个描述符可以具有若干参数。在这种情况下,使用api的nbmp系统300的任何部件之间的通信可以包括若干描述符,每一个描述符可以具有若干参数。
73.根据实施例,nbmp系统300可以用于执行分割渲染。例如,参考图4,nbmp工作流管理器320可以创建和管理包括一个或多个任务(例如,任务401至408)的nbmp工作流400。例如,如图4所示,任务401至408可以与各种输入410相关联,并且可以用于提供各种输出420。
74.在分割渲染中,工作流的任务中的一些任务可以在媒体源360和/或媒体接收器370中实施。例如,图5示出了图4所图示的任务401至408在媒体源360、一个或多个mpe 350和媒体接收器370之间的分割渲染的示例。在实施例中,媒体源360可以是源设备/平台,一个或多个mpe 350可以是云节点/边缘网络,并且媒体接收器370可以是接收器设备/平台。
75.如图5所示,任务401至402在媒体源360上实施,任务403至404在一个或多个mpe 350上实施,并且任务405至408由媒体接收器370实施。
76.为了在nbmp中适应分割渲染,nbmp系统300可以实施nbmp标准的以下新特征。
77.[接收器和源能力描述]
[0078]
可以使用nbmp描述符来定义新的描述文档(例如能力描述文档),所述nbmp描述符用于描述媒体源360或媒体接收器370的一个或多个能力。nbmp工作流管理器320可以从媒体源360或媒体接收器370获得描述文档中的一个或多个,所述描述文档描述所述媒体源360或媒体接收器370的能力,或者可以从nbmp系统300的另一个部件(例如,从一个或多个mpe 350)获得一个或多个描述文档。作为示例,工作流管理器320可以从如图3所图示的一个或多个api(例如api 394、api 395和/或api 396)获得一个或多个描述文档。所描述的能力可以包括以下内容:1.名称、描述和标识符2.内置功能的储存库以及任选的资源要求3.总的和当前可用的硬件资源,包括处理、存储和磁盘空间4.当前可用通量(throughput)和延迟能力5.当前可用电池/电源6.在减少资源的情况下发表事件
[0079]
描述文档的nbmp描述符可以包括以下描述符:1.方案描述符2.通用描述符3.储存库描述符
4.所支持功能列表5.要求6.系统事件
[0080]
[mpe能力的发现]
[0081]
本公开的实施例可以扩展nbmp api以使用表述性状态转移(rest,representational state transfer)-ful api来提供mpe(例如云节点)能力发现。
[0082]
a.mpe资源
[0083]
本公开的实施例可以实施用于各种mpe api操作的mpe资源(mr,mpe resource)。mr可以是rest资源,其可能要求精确地包含一个mpe能力描述文档(mdd,mpe capabilities description document)。mr可以是javascript对象符号(json,javascript object notation)格式。根据实施例,参考图3,mpe 350可以通过例如作为mpe api的api 394将mdd发送到nbmp工作流管理器320。
[0084]
b.mpe api操作
[0085]
本公开的实施例可以实施mpe api。mpe api可以用于发现一个或多个mpe 350的能力。mpe 350可以支持如下表1所示的mpe api操作。表1
[0086]
根据实施例,nbmp工作流管理器320可以请求通过mpe api执行mpe api操作,并且至少一个mpe 350可以提供如上表1所指示的响应。
[0087]
任何响应中包括的mdd可以包括一个“链接”对象,其包括具有值“self”的“ref”以及指示mdd的位置的根据ietf rfc3986的统一资源定位符(url,uniform resource locator)。
[0088]
c.所支持协议
[0089]
如下表2所示,http方法可以由本公开的实施例实施以用于mpe发现。根据实施例,可以由nbmp工作流管理器320执行http方法。表2
[0090]
根据实施例,可以通过扩展nbmp的restful api来提供用于发现云处理节点的能力和与其它云节点的连接性的方法,以支持发现mpe能力和到其它mpe的连接性,其中可以发现mpe的能力并且可以请求和接收mpe到特定mpe集的连接性。
[0091]
[mpe之间连接性的描述]
[0092]
本公开的实施例可以实施新的nbmp描述符,以定义mpe(例如云处理节点)与其它mpe(例如其它云处理节点)之间的连接特性。
[0093]
连接特性可以用例如以下参数来描述:(1)每个方向上两个mpe之间的最大带宽,以及(2)每个方向上两个mpe之间的最小延迟。
[0094]
这些连接参数可以如下表3所示定义。表3
[0095]
由于连接是在两个mpe之间,所以可以为每个方向定义以上参数。
[0096]
a.mpe能力描述中的连接性参数
[0097]
本公开的实施例可以在nbmp mpe能力描述的能力描述符内实施一组新的参数,如下表4所示。表4
[0098]
b.要求描述符内的连接参数
[0099]
由于能力描述符可以与要求描述符相同,所以本公开的实施例可以在要求描述符(能力描述符)内实施下表5所示的参数。表5
[0100]
例如,可以包括描述mpe与另一个mpe(目标mpe)之间的连接性的连接性参数。连接参数可以包括以下各项或由以下各项组成:id、url、前向对象和返回对象。这些对象在下表6中示出。表6名称类型基数idp1urlp0-1前向o0-1返回o0-1
[0101]
id可以是全部mpe中的目标mpe的唯一标识符。url可以是目标mpe的url。前向对象和后向对象可以定义mpe与目标mpe之间的连接参数。即,前向对象可以定义从mpe到目标mpe的连接,并且返回对象可以定义从目标mpe到mpe的连接。
[0102]
前向对象和返回对象可以包括如下表7中定义的参数。表7名称类型基数最小延迟p0-1最大通量p0-1平均窗口p0-1
[0103]
这些参数(例如“最小延迟”、“最大通量”、“平均窗口”)在表3中定义。
[0104]
根据实施例,可以提供一种用于将不同云处理节点之间的连接特性描述为云节点的能力发现的一部分的方法。该方法可以包括nbmp工作流管理器320接收并使用nbmp mpe能力描述,其中在mpe能力描述内提供一组新的参数,以表示云中的mpe 350与另一个mpe 350之间的每个方向上的最大带宽和最小延迟。
[0105]
[任务邻近参数]
[0106]
可以由nbmp系统300为每个任务(例如任务352)实施一组新的参数(任务邻近参数)。每个任务可以具有相对距离值阵列,所述相对距离值阵列用于指示与每个媒体源360和/或媒体接收器370的期望接近度。数字可以是相对的,并且较小的数字可以是较近的距离。
[0107]
根据实施例,nbmp工作流管理器320可以从nbmp源310接收用于指示相对距离值的任务邻近参数,来作为工作流描述的一部分。
[0108]
如果任务不具有任何分配的邻近参数,则nbmp工作流管理器320可以基于工作流中任务的位置向每个任务分配邻近值。例如,nbmp工作流管理器320可以使用连接任务的数量作为代理的度量。在这种情况下,作为示例,图5的任务可以具有下表8所示的距离。表8
[0109]
[任务的资源位置]
[0110]
为了记录在何处实施每个任务,可以将新的参数添加到nbmp通用描述符,以指示实施该任务的资源(例如媒体源或媒体接收器)的id。特别地,如果任务在媒体源或媒体接收器中实施,则id指示该任务在对应的设备/平台上实施。下表9和表10描述了添加到nbmp通用描述符的参数的示例。表9参数名称类型基数idp1名称p1描述p1级别p0-1mpeg-兼容性p0-1发布时间p0-1优先级p0-1位置p0-1执行时间p0-1输入端口对象阵列1输出端口对象阵列1is-组p0-1
状态p1表10
[0111]
相同的参数可以用于在云平台中(例如在mpe 350中)发信号通知任务实施的位置。然而,在这种情况下,只有云平台和相关联的nbmp工作流管理器320可以将id与云资源的实际位置相关联。
[0112]
[分割渲染(split-rendering)过程]
[0113]
参考图3和图6,下面描述由nbmp工作流管理器320执行的用于工作流的分割渲染的过程。
[0114]
nbmp工作流管理器320可以推导出所需的工作流(610)。例如,nbmp工作流管理器320可以基于来自nbmp源310的工作流描述文档来推导出工作流。
[0115]
nbmp工作流管理器320可以获得媒体源、媒体接收器和/或一个或多个mpe 350的能力(620)。例如,nbmp工作流管理器320可以向媒体源360、一个或多个mpe 350和媒体接收器360中的一个或多个发送请求,并且可以通过一个或多个api(例如api 394、api 395和/或api 396)接收一个或多个能力描述文档。nbmp工作流管理器320可以基于该一个或多个能力描述文档来确定媒体源、媒体接收器和/或一个或多个mpe 350的能力。
[0116]
nbmp工作流管理器320可以获取工作流中任务的邻近距离(630)。例如,根据实施例,nbmp工作流管理器320可以从nbmp源310接收邻近距离,作为工作流描述的一部分(例如,作为工作流描述文档的一部分)。根据实施例,nbmp工作流管理器320可以从nbmp源310接收工作流描述文档(wdd,workflow description document),并且然后从nbmp源310接收更新的wdd,所述更新的wdd包括每个任务的邻近距离。可选地,根据实施例,nbmp工作流管理器320可以基于内部方案和工作流拓扑结构来推导出每个任务的邻近距离。
[0117]
nbmp工作流管理器320可以使用针对每个媒体源360、媒体接收器370和/或一个或多个mpe 350所获得的能力以及每个任务的邻近距离来将每个任务分配给元素(例如,媒体源、媒体接收器或云/网络资源)(370)。例如,nbmp工作流管理器320可以分配每个任务,使得满足以下条件:(i)分配的元素能够执行任务并满足任务要求,并且(ii)在能够执行任务的媒体源和接收器中,该任务到该媒体源/接收器的距离最小。根据实施例,nbmp工作流管理器320可以使用针对每个媒体源360、媒体接收器370和/或一个或多个mpe 350所获得的能力以及每个任务的邻近距离来对将每个任务分配给元素进行迭代,以便获得最优配置。
[0118]
[工作流重新配置]
[0119]
根据工作流和媒体源/接收器能力,nbmp工作流管理器320可以通过替换工作流的一部分或在工作流中添加中间任务来重新配置工作流。此类重新配置可以提高工作流的效
率。原因可以是媒体源360或媒体接收器370可以具有更高效的内置功能,因此对它们的递送格式可以不同于工作流输出格式,或者设备中的电池约束可以迫使工作流被不同的工作流替换。参考图7至图8,下面描述重新配置的两个示例。
[0120]
图7图示了最初包括任务701至705的工作流700,任务701至705可以在一个或多个mpe 350(参考图3)与媒体接收器370之间分割,并且与输入710相关联并提供输出720。当媒体接收器370连接带宽减小时,工作流可以以所需通量工作。nbmp工作流管理器320可以识别媒体接收器370的减小的连接带宽,并且然后可以通过添加任务706和任务707来更新工作流。任务707可以是媒体接收器370中内置的解压缩功能,并且任务706可以是mpe 350中的压缩功能,mpe350可以是边缘网络的一部分。使用任务706作为边缘网络上的压缩功能,任务706与任务707之间的带宽被减小到足以适合媒体接收器370的可用带宽。
[0121]
参考图8,示出了媒体接收器370(例如接收器设备)的电池电量低时的用例的重新配置工作流的示例。图8图示了最初包括任务801至805的工作流800,任务801至805在一个或多个mpe 350(例如云节点)与媒体接收器370之间进行分割,并且与输入810相关联并提供输出820。由于任务803至805可能需要相当大的处理能力以节省媒体接收器370的电池,所以nbmp工作流管理器320通过将任务803至805移动到云并添加压缩任务806和808来重新配置工作流,使得将内容递送到媒体接收器370所使用的带宽是合理的。任务807和809可以是对输入码流进行解压缩并将结果呈现为输出820的内置的高效解压缩功能。
[0122]
[源和接收器系统事件]
[0123]
由nbmp工作流管理器320获得的媒体源和媒体接收器描述可以包括媒体源/接收器系统事件的列表。这些事件通常如下:1.从某一阈值降低的处理能力2.从某一阈值减少的可用存储3.从某一阈值减少的可用磁盘空间4.从某一阈值降低的电池电量
[0124]
nbmp工作流管理器350可以使用通知描述符为以上系统事件的全部或子集建立通知。如果此类事件发生,则nbmp工作流管理器可以接收通知,并且可以基于接收到该通知来重新配置工作流以解决该事件。nbmp工作流管理器350可以基于所获得的媒体源/接收器系统事件的列表来建立通知。
[0125]
[不同网络元素或不同云节点之间的分割渲染]
[0126]
上述特征和过程可以由nbmp系统300实施,以在网络元素和边缘计算资源之间以及在云平台的不同节点之间或在多云平台之间分割工作流实施。
[0127]
[示例计算机代码]
[0128]
根据本公开的实施例,可以提供具有存储计算机代码的存储器的至少一个处理器。计算机代码可以被配置为当由至少一个处理器执行时执行本公开的任何数量的方面。
[0129]
例如,参考图9,计算机代码900可以在nbmp系统300中实施。例如,计算机代码可以存储在nbmp工作流管理器320的存储器中,并且可以由nbmp工作流管理器320的至少一个处理器来执行。计算代码可以包括例如工作流导出代码910、能力获取代码920、任务邻近获取代码930、任务分配代码940、通知建立代码950,以及工作流重新配置代码。
[0130]
工作流导出代码910、能力获取代码920、任务邻近获取代码930和任务分配代码
940可以用于使nbmp工作流管理器320分别执行以上参考图6所描述的过程的各方面。
[0131]
通知建立代码950可以被配置为使nbmp工作流管理器320基于所获得的媒体源/接收器系统事件的列表来建立通知,使得nbmp工作流管理器320在发生特定媒体源/接收器系统事件(例如,资源改变)的情况下接收通知。
[0132]
工作流重新配置代码960可以被配置为使nbmp工作流管理器320重新配置工作流(例如,在媒体源360、媒体接收器370与一个或多个mpe 350之间添加或移除任务,和/或重新划分任务)。例如,工作流重新配置代码960可以被配置为使nbmp工作流管理器320基于接收到通知来重新配置工作流。根据实施例,工作流的重新配置可以是动态的并且是基于资源的改变(例如,减少)的,所述资源与媒体源360、媒体接收器370和一个或多个mpe 350中的一个或多个相关联,以便适应资源的改变。资源可以是例如可用的cpu、gpu、存储器、带宽、磁盘,或媒体源360、媒体接收器370或mpe 350的功率。根据实施例,工作流的重新配置可以是动态的,并且可以基于mpe 350的可用性的改变。重新配置可以包括,例如,基于mpe 350的可用性在mpe 350之间重新划分工作流的至少一部分。
[0133]
本公开的实施例可以单独使用或以任何顺序组合使用。此外,可以通过处理电路(例如,一个或多个处理器或者一个或多个集成电路)来实施每一个实施例(及其方法)。在一个示例中,一个或多个处理器执行存储在非易失性计算机可读介质中的程序。
[0134]
前述公开内容提供了说明和描述,但并不旨在穷举或将实施方案限制为所公开的精确形式。根据以上公开内容可以进行修改和变化,或者可以从实施方案的实践中获取修改和变化。
[0135]
如本文所用,术语部件旨在被广泛地解释为硬件、固件或硬件和软件的组合。
[0136]
即使特征的组合在权利要求中列举和/或在说明书中公开,但这些组合并不旨在对可能的实施方案的公开进行限制。事实上,这些特征中的许多特征可以以权利要求中未具体列举和/或说明书中未公开的方式组合。尽管下面列出的每个从属权利要求可以直接从属于仅一个权利要求,但是可能的实施方案的公开包括与权利要求集中的每个其它权利要求组合的每个从属权利要求。
[0137]
本文使用的元素、动作或指令均不应被解释为关键的或必要的,除非明确地如此描述。而且,如本文所用,冠词“一个(a)”和“一个(an)”旨在包括一个或多个项目,并且可以与“一个或多个”互换使用。此外,如本文所用,术语“集”旨在包括一个或多个项目(例如,相关项目、不相关项目、相关和不相关项目的组合等),并且可以与“一个或多个”互换使用。当仅意指一个项目时,使用术语“一个(one)”或类似语言。而且,如本文所用,术语“具有(has)”、“具有(have)”、“具有(having)”等旨在成为开放式术语。此外,除非另有明确说明,否则短语“基于”旨在表示“至少部分地基于”。