用于基于网络的媒体处理(nbmp)中的媒体处理功能的配置参数的图形表示和描述
相关申请的交叉引用
1.本公开内容要求于2020年11月11日提交的美国专利申请第17/095,339号“graph representation and description of configuration parameters for media processing function in network-based media processing(nbmp)”的优先权的权益,该美国专利申请要求于2020年1月9日提交的美国临时申请第62/958,997号“efficient generic parameter graph for functions”的优先权的权益。在先申请的公开内容通过引用整体并入本文。
技术领域
2.本公开内容涉及媒体处理功能的配置参数的图形表示和描述。一些实施方式涉及基于网络的媒体处理(network-based media processing,nbmp)。
背景技术:3.本文中提供的背景技术描述目的在于从总体上呈现本公开内容的背景。就此背景技术部分中描述的工作的程度而言,目前署名的发明人的工作以及在提交时可以不被另外限定为现有技术的描述的方面既没有被明确地也没有被隐含地承认为针对本公开内容的现有技术。
4.多媒体服务提供商面临着使其服务适应多个云和网络服务提供商以到达其客户的挑战。这些云和网络服务提供商经常定义他们自己的应用程序编程接口(application programing interface,api)来向他们的客户分配计算资源。正在开发基于网络的媒体处理(nbmp)标准,以解决碎片化问题并提供在任何云平台和任何ip网络上执行媒体处理的统一方式。nbmp定义了可以使用现成的媒体处理功能的实现并将它们组合在一起以创建媒体处理工作流的工作流管理器。
技术实现要素:5.本公开内容的方面提供了一种基于网络的媒体处理(nbmp)的方法。该方法可以包括在nbmp系统中的工作流管理器处从功能储存库接收媒体处理功能的功能描述。功能描述可以包括提供针对媒体处理功能的参数的配置信息的配置描述符。参数可以具有由根据规则的集合构建的参数表示图表示的逻辑关系。所述规则可以包括:(a)参数表示图包括节点和边,每条边连接两个节点并表示两个相应节点之间的逻辑关系,节点包括参数节点和值节点,(b)任何两个节点通过最多一条边彼此连接,(c)参数由参数表示图中的参数节点表示,(d)如果参数的值的存在或不存在被要求作为用于设置另一参数的条件,则该参数的值由参数表示图中的值节点表示,
(e)参数节点不从任何其他节点连接或从一个或更多个值节点连接,以及(f)一条边连接至任何值节点并且从单个参数节点连接。可以将媒体处理功能实例化为作为工作流的一部分的媒体处理任务。可以基于配置描述符中的参数的配置信息来配置媒体处理任务。
6.在实施方式中,对应于配置描述符的参数表示图符合所述规则,所述规则还包括:(g)参数表示图中的边分类为如下定义的三种类型:(i)p2v:从参数节点到值节点的第一连接,指示连接至第一连接的参数节点的参数取由连接至第一连接的值节点表示的允许值的子集或范围,(ii)v2p:从值节点到参数节点的第二连接,指示由连接至第二连接的参数节点表示的参数对取由连接至第二连接的值节点表示的值的父参数的依赖性,以及(iii)v0p:从值节点到参数节点的第三连接,指示如果父参数被设置为由连接至第三连接的值节点表示的值,则不允许由连接至第三连接的参数节点表示的参数;以及(h)连接至参数节点的任何边都具有v2p类型或v0p类型。
7.在实施方式中,参数中的每一个具有在功能描述符中指示的数据类型。在实施方式中,参数中的每一个具有作为值的集合或值的范围的值。在实施方式中,参数表示图中的参数节点之一的边由功能描述符中的两个单独的列表来指示。这两个单独的列表分别对应于v2p类型和v0p类型。
8.在实施方式中,连接至由功能描述符中的两个单独的列表指示的相应边的值节点的标识符(identifier,id)被包括在功能描述符中的两个单独的列表中,以指示参数节点之一的相应边。在实施方式中,参数表示图中的参数节点之一和值节点之一各自使用父节点id的列表来指示连接至参数节点之一和值节点之一的边。在实施方式中,使用功能描述符中的开始值、结束值和增量值来定义参数表示图中的值节点之一的值的集合。
9.本公开内容的方面提供了一种nbmp的设备。该设备可以包括电路,该电路被配置成在nbmp系统中的工作流管理器处从功能储存库接收媒体处理功能的功能描述。功能描述可以包括提供针对媒体处理功能的参数的配置信息的配置描述符。参数可以具有由根据规则的集合构建的参数表示图表示的逻辑关系。所述规则可以包括:(a)参数表示图包括节点和边,每条边连接两个节点并表示两个相应节点之间的逻辑关系,节点包括参数节点和值节点,(b)任何两个节点通过最多一条边彼此连接,(c)参数由参数表示图中的参数节点表示,(d)如果参数的值的存在或不存在被要求作为用于设置另一参数的条件,则该参数的值由参数表示图中的值节点表示,(e)参数节点不从任何其他节点连接或从一个或更多个值节点连接,以及(f)一条边连接至任何值节点并且从单个参数节点连接。可以将媒体处理功能实例化为作为工作流的一部分的媒体处理任务。可以基于配置描述符中的参数的配置信息来配置媒体处理任务。
10.本公开内容的各方面还提供了一种存储指令的非暂态计算机可读介质,该指令在由处理器执行时使处理器执行nbmp的方法。
附图说明
11.根据以下详细描述和附图,所公开主题的其他特征、性质和各种优点将变得更加明显,在附图中:
12.图1示出了根据本公开内容的实施方式的示例性数据处理系统。
13.图2示出了根据本公开内容的实施方式的工作流程的示例。
14.图3示出了根据本公开内容的实施方式的示例参数表示图。
15.图4示出了根据本公开内容的实施方式的示例基于网络的媒体处理(nbmp)过程。
16.图5示出了根据本公开内容的实施方式的计算机系统的示意性示出。
具体实施方式
17.i.基于网络的媒体处理
18.可以采用基于网络的媒体处理(nbmp)框架以初始化并控制网络中(例如,云平台上)的媒体处理。例如,nbmp源描述了所请求的媒体处理,并且提供了关于媒体数据的性质和格式的信息。作为响应,nbmp工作流管理器可以建立媒体处理工作流,并且通知nbmp源工作流准备就绪,并且可以开始所请求的媒体处理。媒体源然后可以开始将媒体传输至网络以进行处理。
19.nbmp工作流可以理解为媒体处理任务的连接图,媒体处理任务中的每一个执行定义明确的媒体处理操作。工作流管理器通过配置和监控每个任务以及工作流输出来确保工作流的正确操作。工作流管理器负责媒体处理功能的选择,并且基于从nbmp源接收的工作流描述将所选功能实例化为任务。
20.在对媒体服务提供商隐藏与底层云计算平台的交互的同时,工作流管理器可以建立、加载以及监控运行媒体处理任务的媒体处理实体(media processing entity,mpe)。
21.图1示出了根据本公开内容的实施方式的示例性nbmp系统(100)。nbmp系统(100)可以支持现有的媒体传送方法,例如流式传输、文件传送、基于推送的渐进下载、混合传送、多路径和异构网络环境。nbmp系统(100)还可以通过提供各种基于云的媒体处理能力来实现新兴媒体应用,所述基于云的媒体处理能力例如网络辅助的媒体质量增强(例如,虚拟现实(virtual reality,vr)拼接、视频放大、用于自适应流的移动边缘编码和内容感知云转码)、网络辅助的媒体分发(例如,实时媒体摄取、在线转码和媒体感知缓存)、网络辅助的媒体合成(例如,增强视频流和定制媒体合成)、沉浸式媒体处理(例如,网络聚合点云媒体)等。
22.如图所示,nbmp系统(100)可以包括nbmp源(101)、nbmp工作流管理器(103)、功能储存库(105)、媒体源(111)、数据处理实体(mpe)(113)和媒体接收器(115)。nbmp系统(100)可以包括额外的媒体源、媒体接收器和/或mpe。
23.nbmp源(101)可以描述或以其他方式指示要由媒体处理实体(113)执行的媒体处理操作。功能储存库(105)可以存储各种媒体处理功能。nbmp源(101)和nbmp工作流管理器(103)可以从功能储存库(105)检索媒体处理功能。媒体处理功能或功能可以用于执行特定的媒体处理过程,例如360视频流服务中的拼接过程、视频传送服务中基于人工智能(artificial intelligence,ai)的视频放大过程等。
24.媒体处理任务或任务可以是由mpe(113)执行的功能的运行时实例。nbmp工作流或
工作流可以由实现所请求的媒体处理的一个或更多个连接的任务的图(例如,有向无环图(directed acyclic graph,dag))来表示。nbmp工作流管理器(103)或工作流管理器(103)可以提供任务并连接任务以例如基于工作流描述文档(workflow description document,wdd)创建、控制、管理以及监控工作流。
25.媒体源(111)可以提供要由工作流处理的媒体内容(例如,媒体数据、补充信息)。补充信息可以包括与媒体数据相关的元数据或辅助信息。媒体源(111)可以向工作流提供输入。媒体接收器(115)可以消耗工作流的输出。mpe(113)可以运行一个或更多个媒体处理任务来处理媒体内容。
26.如图1所示,nbmp系统(100)中的不同实体(例如,nbmp源(101)、工作流管理器(103)和mpe(113))可以使用api来调用和响应媒体服务请求。api可以包括nbmp工作流api(或工作流api)、功能发现api和任务api。工作流api可以提供nbmp源(101)与工作流管理器(103)之间的接口。任务api可以提供工作流管理器(103)与媒体处理任务之间的接口。功能发现api可以提供工作流管理器(103)/nbmp源(101)与功能储存库(105)之间的接口。
27.上述nbmp接口可以用于创建和控制网络中的媒体处理工作流。nbmp系统(100)可以划分成控制平面和媒体平面(或媒体数据平面)。控制平面可以包括工作流api、功能发现api和任务api。
28.nbmp源(101)可以使用工作流api来创建和控制媒体处理工作流。nbmp源(101)可以使用工作流api与工作流管理器(103)通信,以用于配置和控制网络中的媒体处理。当nbmp源(101)通过在工作流api的操作中包括工作流资源(workflow resource,wr)来向工作流管理器(103)发送请求时,工作流管理器(103)可以对wr、包括的wdd和相应的描述符进行解析,并且根据所请求的操作采取适当的动作。然后,工作流管理器(103)可以用响应来确认该请求。工作流api操作可以包括创建工作流(例如,createworkflow)、更新工作流(例如,updateworkflow)、删除工作流(例如,deleteworkflow)、检索工作流(例如,retrieveworkflow)等。
29.功能发现api可以提供用于使工作流管理器(103)和/或nbmp源(101)发现可以作为媒体处理工作流的一部分而被加载的媒体处理功能的方式。
30.工作流管理器(103)可以使用任务api来配置和监控运行时的任务(例如,由mpe(113)运行的任务1和任务2)。例如在用于任务的资源被分配到mpe(113)中之后,任务api可以定义用于由工作流管理器(103)配置媒体处理任务的接口。任务api操作可以包括创建任务(例如,createtask)、更新任务(例如,updatetask)、获取任务(例如,gettask)、删除任务(例如,deletetask)等。
31.在媒体平面上,可以定义nbmp源(111)与任务之间以及任务之间的媒体格式、元数据和补充信息格式。
32.工作流描述(workflow description,wd)可以从nbmp源(101)传递到工作流管理器(103)。wd可以描述诸如针对工作流的输入数据和输出数据、功能和其他要求的信息。
33.工作流管理器(103)可以从nbmp源(101)接收wdd,并且可以针对所请求的媒体处理建立工作流。在工作流过程中,可以例如从功能储存库(105)中选择媒体处理功能,并且然后可以将相应的媒体处理任务配置并分配给一个或更多个mpe的集合(例如,包括mpe(113))。
34.由功能储存库(105)提供的功能集可以由nbmp源(101)和工作流管理器(103)读取。在实施方式中,nbmp源(101)使用功能储存库(105)中的功能的集合来请求工作流的创建。因此,nbmp源(101)被配置成针对工作流选择功能。nbmp源(101)可以如下所述请求工作流的创建。nbmp源(101)可以使用要创建工作流的媒体处理任务的描述,并且可以指定连接映射来定义媒体处理任务的输入和输出的连接。当工作流管理器(103)从nbmp源(101)接收到以上信息时,工作流管理器(103)可以基于相应的功能名称来实例化媒体处理任务,并且可以根据连接映射来连接媒体处理任务。
35.可替选地,nbmp源(101)可以使用关键字的集合来请求工作流的创建,工作流管理器(103)可以通过关键字的集合来构建工作流。因此,nbmp源(101)可能不知道要插入到工作流中的功能的集合。nbmp源(101)可以如下所述请求工作流的创建。nbmp源(101)可以使用关键字的集合,工作流管理器(103)可以通过关键字的集合找到适当的功能,并且可以使用适当的工作流描述来指定工作流的要求。
36.当工作流管理器(103)从nbmp源(101)接收到以上信息(例如,关键字的集合)时,工作流管理器(103)可以通过使用例如在处理描述符中指定的关键字搜索适当的功能来创建工作流。工作流管理器(103)然后可以使用工作流描述中的其他描述符来提供媒体处理任务,并且连接媒体处理任务以创建最终工作流。
37.工作流管理器(103)的处理模型可以描述如下。
38.工作流管理器(103)可以如下发现可用的媒体处理功能。nbmp功能储存库(105)可以提供功能发现接口(或api),以使得外部实体能够查询可以完成所请求的处理的媒体处理功能。工作流管理器(103)可以访问提供媒体处理功能的可搜索列表的目录服务。工作流管理器(103)可以使用工作流描述中的媒体处理任务的描述来找到针对工作流的适当功能。
39.针对工作流的媒体处理任务的选择可以描述如下。当从nbmp源(101)接收到针对媒体处理的请求时,工作流管理器(103)可以搜索功能储存库(105)以找到可以实现工作流的所有可用功能的列表。使用来自nbmp源(101)的工作流描述,工作流管理器(103)可以从功能储存库(105)找到实现工作流的功能,这可以依赖于来自nbmp源(101)的用于媒体处理的信息。用于媒体处理的信息可以包括输入和输出描述、所请求的处理的描述以及针对功能目录(105)中的功能的其他描述符中的信息。将源请求映射到要包括在工作流中的适当媒体处理任务可以是网络中nbmp的实现的一部分。为了在任务创建时使用输入端口名和输出端口名来引用和链接输入源,可以使用输入端口和输出端口来引用输入流。
40.可以由工作流管理器(103)使用功能发现api来执行对要实例化为任务的适当功能的搜索。可替选地,工作流管理器(103)可以使用功能发现api来检索功能储存库(105)中一些或所有合适功能的详细信息。工作流管理器(103)然后可以将来自nbmp源(101)的用于媒体处理的信息与每个功能的不同描述符进行比较。
41.可以在工作流中配置选定的媒体处理任务。当要包括在工作流中的功能被识别时,nbmp工作流管理器(103)可以实例化该功能作为相应的任务,并且配置该任务,使得该任务可以被添加至工作流。nbmp工作流管理器(103)可以从nbmp源(101)接收的媒体处理信息中提取配置数据,并且配置相应的任务。任务的配置可以使用任务api(例如,nbmp任务api)来执行。
42.任务分配和分布可以描述如下。工作流管理器(103)可以使用工作流来执行处理部署并配置媒体处理实体。在示例中,对于计算密集型媒体处理请求,工作流管理器(103)可以建立多个计算实例,并且在多个计算实例之间分配工作负载。因此,工作流管理器(103)可以根据需要连接并配置多个计算实例。在示例中,工作流管理器(103)将相同的任务分配给多个实例,并且使用所选择的调度机制提供负载平衡器来在多个实例之间分配工作负载。在替选示例中,工作流管理器(103)将同一任务的不同操作分配给不同的实例(例如,并行操作)。在上述两个示例中,工作流管理器(103)可以建立实例之间的工作流路径,并且因此可以成功实现合适的工作负载。工作流管理器(103)可以配置任务以将经处理的媒体数据/流推送(或通过拉机制使它们可用)到工作流图中的下一任务。
43.当工作流管理器(103)从nbmp源(101)接收到wdd时,工作流管理器(103)可以执行要插入到工作流中的媒体处理功能的选择。当要包括在工作流中的任务列表被编译时,工作流管理器(103)然后可以连接任务以准备工作流。
44.工作流管理器(103)可以生成例如由图(例如,dag)表示的工作流。图2示出了根据本公开内容的实施方式的图(例如,dag)(200)的示例。dag(200)可以包括多个节点(t1)至(t6)和多个链路(或连接)(202)至(208)。在示例中,dag(200)表示工作流(200)。
45.dag(200)的每个节点可以表示工作流(200)中的媒体处理任务。将dag(200a)中的第一节点(例如,节点(t1))连接至第二节点(例如,节点(t2))的链路(例如,链路(202))可以表示将第一节点(例如,节点(t1))的输出作为输入传送到第二节点(例如,节点(t2))。
46.一般地,工作流可以包括任何合适数量的输入(或工作流输入)和任何合适数量的输出(或工作流输出)。工作流输入可以连接至媒体源(111)、其他工作流等,并且工作流输出可以连接至媒体接收器(115)、其他工作流等。工作流(200)具有输入(201)和输出(209)和(210)。在一些实施方式中,工作流(200)可以具有来自中间节点的一个或更多个输出。
47.ii.nbmp描述、数据对象和rest资源
48.为了描述nbmp,在一些示例中,可以定义参数、描述符和描述。例如,可以定义工作流描述、任务描述和功能描述来分别描述工作流、任务和功能。工作流描述、任务描述和功能描述中的每一个都可以使用描述符的集合来描述。每个描述符可以提供参数的集合来描述相应功能、任务或功能的特征的集合。
49.在一些示例中,逻辑描述与相应的数据对象之间以及数据文档与rest资源之间存在一对一的关系。例如,工作流对象(workflow object,wo)、任务对象(task object,to)和功能对象(function object,fo)是相应描述(或描述符)的实现,例如作为javascript对象符号(javascript object notation,json)对象。工作流描述文档(wdd)、任务描述文档(task description document,tdd)和功能描述文档(function description document,fdd)是分别包含单个wo、单个to和单个fo的文档。这些文档可以是json对象。工作流资源(wr)、任务资源(task resource,tr)和功能资源(function resource,fr)分别是具有有效url的wdd、tdd和fdd,并且因此是rest资源。
50.ii.1nbmp功能描述和配置描述符
51.在实施方式中,可以使用形成功能描述的描述符的集合来描述功能储存库(105)中的媒体处理功能。作为示例,下面的表1示出了媒体处理功能的描述符的集合。表1
52.媒体处理功能的每个描述符可以提供描述相应媒体处理功能的相关特征的集合的参数组。例如,表1中的一般描述符可以提供关于相应功能的一般细节。表2示出了与表1中的一般描述符相对应的参数组。表2参数名称类型基数idp1名称p1描述p1等级p0-1mpeg兼容性p0-1
出版时间p0-1优先级p0-1执行时间p0-1输入端口对象数组1输出端口对象数组1is组p0-1状态p1
53.表1中的配置描述符可以针对相应的媒体处理功能提供配置信息。作为示例,表3示出了对应于表1中的功能描述符的参数。表3参数名称描述数据类型基数参数资源所需的参数的配置详细信息。对象数组1
54.作为示例,表4示出了用于创建配置描述符的json对象的json模式。表4
55.iii.媒体处理功能的配置参数的图形表示和数据对象
56.iii.1参数图
57.在一些示例中,用于配置媒体处理功能的参数集可以表示为参数图(或称为参数表示图)。参数集可以包括媒体处理功能的功能描述的描述符中的参数。参数之间的逻辑关系(例如,依赖或排除)可以使用参数图来描述。
58.本公开内容的方面描述了用于构建参数图的规则。与现有技术相比,可以通过使用本文描述的构建规则以简化的方式构建参数图。基于参数图生成的配置描述符的数据对象(例如,json对象)也可以被简化并具有更紧凑的格式。对这样的数据对象的解析操作也可以简化。所述规则可以用于针对nbmp中的功能描述中的配置描述符的配置参数构建参数图,或者用于针对与nbmp无关的功能的任何其他配置参数构建参数图。
59.作为示例,用于构建参数图的规则的集合可以描述如下。
60.参数图可以包括节点和边。边是两个节点之间的连接并且表示两个节点之间的逻辑关系。任何两个节点必须通过最多一条边彼此连接。
61.可以存在两种类型的节点:参数节点和值节点。参数必须由参数图中的参数节点表示。如果值、参数的值的子集或子范围的存在(在依赖关系中)或参数的值的不存在(在排除关系中)被要求作为用于设置另一参数的条件,则该值或子集或子范围必须由参数图中
的值节点表示。
62.参数图中可以定义三种类型的边:-p2v:从参数节点到值节点的连接,指示参数节点的参数可以取由值节点表示的其允许值的子集或子范围。-v2p:从值节点到参数节点的连接,指示由参数节点表示的参数与取由值节点表示的那些特定值的父参数的依赖性。-v0p:从值节点到参数节点的连接,指示如果父参数被设置为由值节点表示的值,则不允许(例如,不使用)由参数节点表示的参数。
63.参数节点可以不从任何其他节点连接,或者从一个或更多个值节点连接。确切地一条边必须连接至任何值节点,并且该边必须来自单个参数节点。连接至参数节点的任何边必须是v2p类型或v0p类型之一。
64.通过使用以上规则构建的参数图可以用数据对象例如json对象来表示。构建的参数图中参数之间的逻辑关系可以用该数据对象来描述。
65.图3示出了符合上述规则的参数图(300)的示例。在参数图(300)中,圆形节点表示对应于参数p1至p6的参数节点p1至p6。方形节点表示对应于值(例如,值、允许值的子集、允许值的子范围)的值节点v11、v12、v21、v31和v32。如图3所示,边(301)、(302)、(303)、(311)、(312)、(313)、(321)、(323)、(331)和(323)连接参数节点和值节点。三种类型的边p2v、v2p和v0p分别由实线箭头、点线箭头和虚线箭头表示。另外,参数节点p1是参数节点p3或p4的父节点。参数节点p3是参数节点p5或p6的父节点。
66.如图所示,参数图(300)可以具有包括5个级别的分层结构。例如,第一级可以包括节点p1和p2。第二级可以包括节点v11、v12和v21。第三级可以包括节点p3和p4。第四级可以包括节点v31和v32。最后一级可以包括节点p5和p6。
67.参数节点p1具有由p2v边(301)和(302)连接的两个值节点v11和v12。如果参数p1被设置为由v11指示的值,则p3参数可以被设置为由v2p边(311)指示,并且参数p4是不允许的。如果参数p1被设置为由v12指示的值,则参数p4可以被设置为由v2p边(312)指示,并且不使用参数p3。
68.如果参数p3被设置为如p2v边(321)所指示的由v31表示的值,则参数p5可以被设置为如v2p边(331)所指示。如果参数p3没有被设置为由v32表示的值(例如,可以被设置为由v31表示的值或v32之外的任何其他有效值),并且如果p2被设置为由v21表示的值,则可以设置p6,p6由v0p边(333)和v2p边(313)指示。如果参数p3被设置为由v32表示的值,或者如果p2没有被设置为由v21表示的值,则p6不被允许,p6也由v0p边(333)和v2p边(313)指示。由v21指示的值可以不是参数p2可以被设置成的唯一值。
69.在一些示例中,工作流的任务可以使用参数图表示来选择或验证被实例化为任务的相应媒体处理功能的配置参数的子集。
70.在示例中,工作流管理器(103)可以查询功能储存库(105)以接收媒体处理功能的功能描述。功能描述可以包括描述媒体处理功能的配置参数的集合的配置描述符。工作流管理器(103)可以将媒体处理功能实例化为任务。工作流管理器(103)还可以通过将配置描述符传递给任务来配置任务。通过解析配置描述符(例如,json对象),任务可以相应地构建参数图。在示例中,当处于运行状态时,任务可以基于由媒体源(111)提供的初始参数值来
选择和验证配置参数的子集。
71.基于参数图的配置参数的子集的选择和验证的示例过程描述如下。该过程可以包括以下步骤:1)将i设置为值1,表示参数图的级别1。2)对于级别i的参数,选择要包括在配置中的这些参数的子集si。3)针对每个选定的参数pi:j,确定可以分配给pi:j的值vi:k的集合(允许值)。4)从可能的值vi:k中针对pi:j分配适当的值。5)基于针对每个参数pi:j的分配值,确定具有类型2的边的参数pi+1:m的子集si+1(依赖关系),并且从图中排除具有类型3的边的参数(排除关系)。6)设置i=i+1,并且如果新子集si不为空,则转到步骤2。7)如果si为空,则验证图不具有类型3的节点(排除),并且返回创建的配置。
72.iii.2数据对象格式
73.可以基于由配置描述符描述的配置参数的参数表示图在功能描述中针对配置描述符创建数据对象,例如json对象。例如,可以指定json方案,以反映使用符合第iii.1节中描述的规则的参数图描述的参数逻辑关系。可以根据指定的json方案创建配置描述符的json对象,以反映由配置描述符描述的配置参数的参数逻辑关系。表4中示出的json方案是基于符合第iii.1节中描述的规则的参数图指定的示例。
74.表5示出了基于符合第iii.1节中描述的规则的参数图指定的另一示例json方案。表5
75.表6示出了根据表5中的json方案创建的示例json对象。表6中的json对象对应于图3中的参数图(300)。表6中json对象的创建基于由参数图(300)指示的参数逻辑关系。表6
76.根据本公开内容,因为如第iii.1节所描述的用于构建参数图的规则的引入,可以以简化的方式构建配置描述符的参数图。基于参数图的json对象可以更加紧凑。解析这样
的json对象,并且因此参数图的重建变得更加容易。
77.另外,可以向json对象中参数节点的每个对象分配数据类型。以这种方式,json对象的接收者可以正确地使用针对各种参数的正确的数据类型。例如,表5中的第21至27行指定了数据类型参数。表6中的第2、4、29、44和47行分别描述了数据类型。
78.此外,如表5和表6所示,v2p边和v02边可以针对每个参数节点使用两个单独的列表来用信号传送,这可以显著简化json表示。例如,表5中的json方案在第67至70行处指定了条件对象,在第71至74行处指定了排除对象。条件对象可以提供参数节点所依赖的参数节点(例如,由v2p边连接的每个参数节点)的列表。排除对象可以提供参数节点与其中的每一个具有排除关系的参数节点(例如,由v0p边连接的每个参数节点)的列表。
79.因此,在表6中,行48和49一起提供了下述示例,其中,条件对象的第一列表(包括值节点id 32)被提供来指示v2p边(333),而排除对象的第二列表(包括值节点id 21)被提供来指示v0p边(313)。使用节点id代替复杂的对象数组(如在现有技术中)来表示值节点可以显著地简化json表示。
80.此外,相同的边信令用于干扰参数节点和值节点,这简化了json对象。如表6所示,参数节点和值节点都使用条件对象来指示与当前节点相关的参数或值节点的列表。
81.最后,使用3个值(开始值、结束值和增量)的紧凑格式来表示值节点的值。这3个值可以是整数值,也可以是浮点值。如表5的第37至64行所示,最小值、最大值和增量的对象被指定用于表示整数范围或浮点范围对象。
82.iv.示例媒体处理过程
83.图4示出了根据本公开内容的实施方式的示例nbmp过程(400)。在该过程中,功能描述中的配置描述符采用本文描述的配置参数图表示技术。在一个示例中,过程400可以由图1示例中的nbmp工作流管理器(103)来执行。过程(400)可以从(s401)开始,并且前进至(s410)。
84.在(s410)处,可以在nbmp系统中的工作流管理器处从功能储存库接收媒体处理功能的功能描述。例如,工作流管理器可以从nbmp源接收工作流描述。工作流描述可以指示用于媒体处理工作流的媒体处理功能。在这种情况下,工作流管理器可以从功能储存库获得与所指示的媒体处理功能相对应的功能描述。
85.可替选地,工作流描述可以不指定媒体处理功能,但提供一个或更多个关键字。在这种情况下,工作流管理器可以使用关键字查询功能存储库,以获得功能集合的功能描述。工作流管理器可以从功能集合中选择一个或更多个媒体处理功能来设计工作流。以这种方式选择的媒体处理功能可以包括在(s410)处接收的功能描述。
86.在(s410)处接收的功能描述可以包括提供针对相应媒体处理功能的配置参数的配置信息的配置描述符。配置描述符可以是根据参数表示图创建的json对象。json对象中的配置描述符的参数可以具有由参数表示图表示的逻辑关系。
87.特别地,参数表示图可以根据第iii.1节中描述的规则的集合来构建。例如,用于构建参数表示图的规则可以包括:(a)参数表示图包括节点和边,每条边连接两个节点并表示两个相应节点之间的逻辑关系,节点包括参数节点和值节点;(b)任何两个节点通过最多一条边彼此连接;
(c)参数由参数表示图中的参数节点表示;(d)如果参数的值的存在或不存在被要求作为用于设置另一参数的条件,则该参数的值由参数表示图中的值节点表示;(e)参数节点不从任何其他节点连接或者从一个或更多个值节点连接;以及(f)一条边连接至任何值节点并且从单个参数节点连接。
88.在一个示例中,规则还可以包括:(g)参数表示图中的边分类为如下定义的三种类型:(i)p2v:从参数节点到值节点的第一连接,指示连接至第一连接的参数节点的参数取由连接至第一连接的值节点表示的允许值的子集或范围,(ii)v2p:从值节点到参数节点的第二连接,指示由连接至第二连接的参数节点表示的参数对取由连接至第二连接的值节点表示的值的父参数的依赖性,以及(iii)v0p:从值节点到参数节点的第三连接,指示如果父参数被设置为由连接至第三连接的值节点表示的值,则不允许由连接至第三连接的参数节点表示的参数;以及(h)连接至参数节点的任何边都具有v2p类型或v0p类型。
89.在(s420)处,媒体处理功能可以被实例化为作为工作流的一部分并且在媒体处理实体中运行的媒体处理任务。例如,工作流可以由从nbmp源接收的工作流描述来描述,或者可以由工作流管理器来设计。工作流管理器可以与云计算平台的资源管理器通信,以提供一个或更多个媒体处理实体,并且将工作流的功能的集合加载至媒体处理实体。在此过程期间,媒体处理功能可以被实例化为作为工作流的一部分的媒体处理任务。
90.在(s430)处,可以基于配置描述符中的参数的配置信息来配置媒体处理任务。例如,在任务开始在媒体处理实体中运行之后,工作流管理器可以配置任务,使得任务可以根据相应工作流描述中的连接映射彼此连接。例如,工作流管理器进行的配置可以包括向每个任务提供在相应的工作流描述中描述的每个任务的输入端口和输出端口的信息,使得媒体数据可以正确地通过这些任务。工作流管理器进行的配置还可以包括将在(s410)处接收的功能描述符(例如,json对象)传递给相应的任务,使得任务可以基于json对象来确定和验证参数的子集。
91.例如,任务可以首先基于传递给它的json对象来重建参数图。然后,基于参数图,任务可以执行第iii.1节中描述的选择和验证的过程,以确定在(s410)处接收的配置描述符的参数的子集。
92.在配置任务并实例化工作流后,可以开始从媒体源接收媒体数据,并且使用工作流进行处理。过程(400)可以前进至(s499)并终止于(s499)处。
93.v.计算机系统
94.本文公开的方法、实施方式、实体或功能可以由处理电路(例如,一个或更多个处理器或一个或更多个集成电路)来实现。在一个示例中,一个或更多个处理器执行存储在非暂态计算机可读介质中的程序,以执行本文公开的方法、实施方式或功能。该程序可以使用任何合适的机器代码或计算机语言来进行编码,该机器代码或计算机语言可以经过汇编、编译、链接等机制来创建包括指令的代码,该指令可以由一个或更多个cpu、gpu等直接执行,或者通过解释、微代码执行等来执行。指令可以在各种类型的计算机或其部件上执行,包括例如个人计算机、平板计算机、服务器、智能电话、游戏装置、物联网装置等。
95.图5示出了适于实现所公开的主题的某些实施方式的计算机系统(500)。图5中示出的用于计算机系统(500)的部件本质上是示例性的,而并非意在对实现本公开内容的实施方式的计算机软件的使用范围或功能提出任何限制。部件的配置也不应当被解释为具有与计算机系统(500)的示例性实施方式中示出的部件中的任何一个部件或部件的组合有关的任何依赖性或要求。
96.计算机系统(500)可以包括某些人机接口输入装置。这样的人机接口输入装置可以响应于由一个或更多个人类用户通过例如触觉输入(例如:击键、滑动、数据手套移动)、音频输入(例如:语音、拍打)、视觉输入(例如:姿势)、嗅觉输入(未示出)的输入。人机接口装置还可以用于捕获不一定与人的意识输入直接相关的某些介质,例如,音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静态图像摄像机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。
97.输入人机接口装置可以包括以下各项中的一个或更多个(每项仅绘出一个):键盘(501)、鼠标(502)、触控板(503)、触摸屏(510)、数据手套(未示出)、操纵杆(505)、麦克风(506)、扫描仪(507)、摄像机(508)。
98.计算机系统(500)还可以包括某些人机接口输出装置。这样的人机接口输出装置可以通过例如触觉输出、声音、光和气味/味道来刺激一个或更多个人类用户的感官。这样的人机接口输出装置可以包括:触觉输出装置(例如,通过触摸屏(510)、数据手套(未示出)或操纵杆(505)进行的触觉反馈,但是也可以存在不用作输入装置的触觉反馈装置);音频输出装置(例如:扬声器(509)、头戴式耳机(未描绘));视觉输出装置(例如,屏幕(510),包括crt屏幕、lcd屏幕、等离子屏幕、oled屏幕,每个均具有或不具有触摸屏输入能力,每个均具有或不具有触觉反馈能力——其中的一些可能能够通过诸如立体图像输出的方式输出二维视觉输出或多于三维输出;虚拟现实眼镜(未描绘);全息显示器和烟罐(smoke tank)(未描绘));以及打印机(未描绘)。
99.计算机系统(500)还可以包括人类可访问存储装置及其相关联的介质,例如包括具有cd/dvd等介质(521)的cd/dvd rom/rw(520)的光学介质、拇指驱动器(522)、可移除硬盘驱动器或固态驱动器(523)、遗留磁性介质(例如磁带和软盘(未描绘))、基于专用rom/asic/pld的装置(例如安全加密狗(未描绘))等。
100.本领域技术人员还应当理解,结合当前公开的主题使用的术语“计算机可读介质”不包含传输介质、载波或其他瞬态信号。
101.计算机系统(500)还可以包括至一个或更多个通信网络(555)的接口(554)。网络可以是例如无线网络、有线网络、光网络。网络还可以是局域网、广域网、城域网、车载和工业网络、实时网络、延迟容忍网络等。网络的示例包括:局域网(例如以太网、无线lan),包括gsm、3g、4g、5g、lte等的蜂窝网络,包括有线电视、卫星电视和地面广播电视的电视有线或无线广域数字网络,包括can总线的车辆和工业网络等。某些网络通常需要外部网络接口适配器,该外部网络接口适配器附接至某些通用数据端口或外围总线(549)(例如,计算机系统(500)的usb端口);其他网络通常通过附接至如下所述的系统总线(例如,到pc计算机系统的以太网接口或到智能电话计算机系统的蜂窝网络接口)而集成到计算机系统(500)的核中。计算机系统(500)可以通过使用这些网络中的任何网络与其他实体进行通信。这样的通信可以是仅单向接收的(例如,广播电视)、仅单向发送的(例如,至某些can总线装置的
can总线)、或双向的(例如,使用局域数字网络或广域数字网络至其他计算机系统)。可以在本文所描述的这些网络和网络接口的每一个上使用某些协议和协议栈。
102.以上提及的人机接口装置、人可访问存储装置和网络接口可以附接至计算机系统(500)的核(540)。
103.核(540)可以包括一个或更多个中央处理单元(central processing unit,cpu)(541)、图形处理单元(graphics processing unit,gpu)(542)、现场可编程门阵列(field programmable gate area,fpga)(543)形式的专用可编程处理单元、用于某些任务的硬件加速器(544)、图形适配器(550)等。这些装置,连同只读存储器(read-only memory,rom)(545)、随机存取存储器(546)、内部大容量存储装置(例如内部非用户可访问硬盘驱动器、ssd等)(547)可以通过系统总线(548)连接。在一些计算机系统中,可以以一个或更多个物理插头的形式访问系统总线(548),以使得能够由附加的cpu、gpu等进行扩展。外围装置可以直接地或通过外围总线(549)附接至核的系统总线(548)。在示例中,屏幕(510)可以连接至图形适配器(550)。外围总线的架构包括pci、usb等。
104.cpu(541)、gpu(542)、fpga(543)和加速器(544)可以执行某些指令,这些指令可以组合构成以上提及的计算机代码。所述计算机代码可以被存储在rom(545)或ram(546)中。过渡数据也可以被存储在ram(546)中,而永久数据可以被存储在例如内部大容量存储装置(547)中。可以通过使用缓存存储器来实现对存储装置中的任何存储装置的快速存储和检索,该缓存存储器可以与一个或更多个cpu(541)、gpu(542)、大容量存储装置(547)、rom(545)、ram(546)等紧密关联。
105.计算机可读介质上可以具有用于执行各种计算机实现的操作的计算机代码。这些介质和计算机代码可以是出于本公开内容的目的而专门设计和构建的介质和计算机代码,或者他们可以是计算机软件领域的技术人员公知且可用的类型。
106.作为示例而非限制,具有架构的计算机系统(500)特别是核(540)可以提供作为处理器(包括cpu、gpu、fpga、加速器等)执行体现在一个或更多个有形计算机可读介质中的软件的结果的功能。这样的计算机可读介质可以是与如以上所介绍的用户可访问的大容量存储装置相关联的介质,以及核(540)的具有非暂态性质的某些存储装置,例如,核内部大容量存储装置(547)或rom(545)。可以将实现本公开内容的各种实施方式的软件存储在这样的装置中并且由核(540)执行。根据特定需求,计算机可读介质可以包括一个或更多个存储器装置或芯片。软件可以使核(540)——特别是其中的处理器(包括cpu、gpu、fpga等)——执行以上描述的特定处理或特定处理的特定部分,包括定义存储在ram(546)中的数据结构以及根据由软件定义的处理修改这样的数据结构。另外地或可替选地,计算机系统可以提供作为逻辑硬连线或以其他方式体现在电路(例如:加速器(544))中的结果的功能,所述电路可以代替软件或与软件一起操作以执行本文中描述的特定处理或特定处理的特定部分。在适当的情况下,对软件的提及可以包含逻辑,反之对逻辑的提及也可以包含软件。在适当的情况下,对计算机可读介质的提及可以包含存储用于执行的软件的电路(例如,集成电路(integrated circuit,ic))、实施用于执行的逻辑的电路或上述两者。本公开内容包含硬件和软件的任何合适的组合。
107.尽管本公开内容已经描述了若干示例性实施方式,但是存在落入本公开内容的范围内的改变、置换和各种替换等效物。因此将认识到,本领域技术人员能够设想虽然本文中
没有明确示出或描述但是实施了本公开内容的原理并且因此在其精神和范围内的许多系统和方法。