具体实施方式
下面将参考附图来详细描述本公开的优选的实施例。
在本部分中提供了根据本文所述实施方案的装置和方法的代表性应用。提供这些示例仅是为了添加上下文并有助于理解所述实施方案。对于本领域的技术人员因此将显而易见的是,本公开所述的实施方案可在不具有这些具体细节中的一些或全部的情况下实施。在其它情况下,未详细描述熟知的工艺步骤,以便避免不必要地模糊本公开所述的实施方案。其它应用也是可能的,使得以下示例不应视为是限制性的。
请注意,类似的参考数字和字母指的是图中的类似的项目,因而一旦在一幅图中定义了一个项目,就不需要在之后的图中讨论了。
如在上文中介绍的,目前还没有能够直接对高分辨率高帧率的视频进行处理的相应设备或模块。直接开发对高分辨率高帧率的视频进行处理的相应模块/设备会导致在时间、资金等方面的过高开销,并且会导致较长的处理时间进而导致较长的播放延迟。
鉴于此,本公开提出了一种通过利用满足DCI标准的对较低质量 (例如,较低帧率)的视频进行处理的相应模块/设备,来实现对高分辨率高帧率的视频的处理的方案。下面,将参考图1对根据本公开的实施例的视频处理方案进行概要性的介绍。
如图1所示,根据本公开,为了降低研发开销并且减小延迟,根据本公开的方案考虑将要处理的高分辨率高帧率(例如4K分辨率 120FPS帧率)输入视频拆分成两个低帧率视频(例如各自具有60FPS 的视频),并且利用两条并行的针对低帧率视频的处理线(pipeline) 对拆分出的子视频进行处理(诸如虚线框中示出的解密、解压和水印处理之类),并且最终将经处理的子视频合成为具有与输入视频相同的分辨率和帧率的输出视频。由于分配给每条处理线的子视频的帧率被降低,因此,对每条处理线的各个模块/设备(例如,与虚线框中示出的处理对应的模块/设备)的能力要求降低,从而有利地,可以以较小的研发开销来实现每条处理线,甚至可以有利地重用已经存在的满足DCI标准的对低帧率的视频进行处理的相应模块/设备。此外,由于两条子视频处理线并行地对子视频进行处理,并且每条处理线所需要处理的数据量由于帧率的降低而被减小,因此,处理速度被较大幅度地提升,从而可以有利地降低输出视频的延迟。
值得注意的是,同一视频内的不同帧之间往往存在互依赖性。也就是说,对输入视频内的某一帧的某种类型的处理有时会需要对邻近该帧的一个或多个帧进行同一类型的处理之后而得到的数据,例如,对于借助帧间预测压缩的帧,对其进行解压需要用到经解压的相邻帧的数据(互依赖性的示例不限于此,下文将更详细介绍)。因此,在现有的视频处理方案中,视频的各帧从输入到输出一般按照时间顺序经历一系列线性排列的处理。换句话说,现有的视频处理方案并不涉及与并行运行同一处理相关的任何技术(例如,由两条处理线同时并行地执行解密操作、解压操作和水印操作中任意之一的操作)。由于根据本公开的方案将输入视频拆分成两个子视频进行并行处理,因此,需要执行恰当的视频拆分操作、子视频处理同步控制以及视频合成操作,以使得在并行处理期间在保证每条子视频处理线能够对子视频进行恰当的处理的同时,依然能够对存在互依赖性的帧进行处理,并使得能够恰当地合成输出视频。下文将对此进行详细描述。
图2是根据本公开的实施例的视频处理装置20的示结构配置的意图。根据本公开的一个实施例,视频处理装置20可以主要由集成电路 (例如FPGA)构成,并且可以包括输入视频处理电路200、子视频处理同步电路202、子视频合成电路204、第一子视频处理电路206以及第二子视频处理电路208,并且视频处理装置20可以被配置为能够在各个电路之间发送/接收数据。虽然图2例示了上述五个电路,但是,视频处理装置20可以根据集成电路的设计和编程而包括更多电路(例如,实现更细化的子功能的电路或者实现其他功能的电路)或更少的电路(例如,上述电路的可能的组合电路)。
输入视频处理电路200例如被配置为将输入视频拆分为帧率低于输入视频的两个子视频,和生成用于两个子视频的同步的与每个子视频的各帧对应的元数据,并将所述元数据添加到相应的子视频。
在本文中,“输入视频”可以是任何适用类型的输入视频数据/ 文件。例如,“输入视频”可以是由美国电影与电视工程师学会(SMPTE,Society of Motion Picture andTelevision Engineers)定义的专用于传输音视频媒体内容的MXF(Material eXchangeFormat,素材交换格式)文件。根据本公开,“输入视频”还可以是任何其他类型/格式的数据/文件,只要其包含输入视频内容即可。
根据本公开,输入视频处理电路200对输入视频进行实时的处理,从而能够经由其他电路的处理而实时地提供输出视频,因此,不需要在本地存储完整的输入/输出视频从而节省了存储开销。
根据本公开,输入视频处理电路200可以逐帧地将输入视频拆分成两个子视频,从而使得输入视频的相邻的两个帧被拆分进入不同的子视频,并且每个子视频的帧率相同。换句话说,输入视频处理电路 200可以将输入视频的第N帧分入第一子视频,并将第N+1帧分入第二子视频,其中,N为大于或等于1的整数。例如,如图3中详细示出的,包含按照a、b、c、d、e、f……的字母顺序排列的各帧的输入视频流经由输入视频处理200进行的输入视频处理,被拆分为编号分别为#1和#2的两个子视频流,其中,子视频流#1包含第a帧的数据、第c帧的数据、第e帧的数据……而子视频流#2包含第b帧的数据、第d帧的数据、第f帧的数据。
根据本公开,输入视频被拆分成帧率相同的两个子视频。有利地,对两个帧率相同的子视频进行处理,可以更容易地实现子视频处理之间的同步,从而能够更容易地对存在互依赖性的帧进行处理。
上文说明了逐帧地将输入视频拆分成两个子视频的拆分方式。按照这种方式,可以容易地且实时地将输入视频拆分成帧率相同的两个子视频。但是,本公开的方案不限于这种逐帧的拆分方式,例如,也可以按照帧组的形式(例如,每个帧组包括2个或更多个帧)对输入视频进行拆分,使得相邻的两个帧组被拆分进入不同的子视频,并且每个子视频的帧率相同。
要说明的是,根据本公开的输入视频流一般是利用特殊方式加密和压缩(例如,按照符合DCI的标准而加密和压缩)的视频流,使得即使数据是经加密和压缩的,输入视频处理电路200也可以通过解析而识别出构成各个帧的数据,从而可以按帧对输入视频进行拆分。
根据本公开,输入视频处理电路200可以被配置为生成用于两个子视频的同步的与每个子视频的各帧对应的元数据,其中,所述元数据可以指示输入视频的帧的顺序。存在多种生成元数据的方法。例如,可以简单地将输入视频的帧编号作为所述元数据。按照这种方式,输入视频处理电路200可以直接为每个帧加上表示其原始帧编号的标签。替代地,可以基于输入视频的帧率来计算要输出各个帧的时间戳作为所述元数据。例如,在实时处理输入视频并进行实时播放的情况下,输入视频处理电路200可以根据当前时间以及输入视频的帧率(例如, 120FPS)来计算要在显示设备处呈现输出视频的各个帧的相应的时间,并将该时间作为标签添加到每个帧。还可以存在其他生成元数据的方式,只要元数据可以指示帧的顺序即可。
根据本公开,输入视频处理电路200可以被配置为将对应于每个帧的元数据分别添加到相应的子视频。根据本公开,与帧数据相对应地添加元数据,以便指示当前帧在输入视频中的顺序。如图3中详细示出的,输入视频处理电路200生成针对每个帧的元数据,并且将对应于各个帧的元数据添加到相应的子视频。例如,向帧数据#a添加对应的表示该帧在输入视频中的顺序的元数据a,向帧数据#b添加对应的表示该帧在输入视频中的顺序的元数据b,以此类推。
元数据可以直接嵌入到相应的帧数据中,或者以与帧数据分开的形式被添加到相应的子视频。
在将元数据嵌入到帧数据中的情况下,例如,元数据可以被添加到封装有帧数据的数据包的报头中。例如,元数据可以被插入到包含帧数据的文件的报头(例如,MXF文件的报头)中。或者替代地,元数据可以作为特定的字段或标签而被添加到帧数据中。
在以与帧数据分开的形式将元数据添加到相应的子视频的情况下,输入视频处理电路可以在向每个子视频处理电路发送拆分的子视频的各个帧之前,将元数据作为单独的文件/数据发送给相应的子视频处理电路。在这种情况下,可以采用任何格式的文件/数据来封装元数据,只要该元数据可以被视频处理装置20的其他电路(例如子视频处理电路和子视频处理同步电路)解读即可。
第一子视频处理电路206和第二子视频处理电路208例如被配置为对由输入视频处理电路200拆分出的子视频进行处理。根据本公开,第一子视频处理电路206和第二子视频处理电路208可以通过执行基本上相同的操作来对两个子视频进行并行的处理,因此,在下文中使用术语“子视频处理电路”来代表第一子视频处理电路206和第二子视频处理电路208中的任意一个。此外,在下文中,由第一子视频处理电路206和/或第二子视频处理电路208对输入视频进行处理的过程可以被称作子视频处理流。
根据本公开,子视频处理电路可以被配置为对子视频进行以下处理中的一个或多个:解压、解密和向子视频嵌入附加信息。例如,子视频处理电路可以采用与压缩操作/算法对应的解压缩操作/算法对子视频的各个帧进行解压缩。子视频处理电路还可以采用与加密操作/ 算法对应的解密操作/算法对子视频的各个帧进行解密。解压、解密的顺序是根据输入视频的压缩、加密顺序而进行的。例如,在输入视频是通过先压缩后加密而被处理的情况下,子视频处理电路对子视频首先进行解密并且随后进行解压。相反地,在输入视频是通过先加密后压缩而被处理的情况下,子视频处理电路对子视频首先进行解压并且随后进行解解密。
附加地或替代地,子视频处理电路还可以向子视频嵌入附加信息。例如,可以按任何恰当的方式将附加信息嵌入到子视频中。这种附加信息可以是在播放输出视频时所需的任何信息。这种附加信息可以是由与视频处理装置20分开的设备或者由视频处理装置上的未示出的单独的电路(例如,实时地且持续地)生成的。例如,这种附加信息可以是由下文描述的子视频处理同步电路202发送给子视频处理电路的。
例如,这种附加信息可以是与媒体资产安全相关的信息。例如,这种附加信息可以是用于指定播放视频的系统以及播放视频的时间的不可见的“水印”信息。例如,水印信息可以包括播放视频的系统的 ID以及可以播放视频的时间,从而可以辅助保护媒体资产以防止任何私自录制视频并播放的“盗版”行为。
这里以示例的方式说明了可以由子视频处理电路进行的操作。应理解的是,子视频处理电路可以根据实际情况对子视频进行具体的操作。换句话说,子视频处理电路并不一定对子视频进行解压、解密和向子视频嵌入附加信息全部这三种操作,而是可以根据实际需要仅执行其中的任意一种或两种操作,或者,子视频处理电路还可以根据实际需要执行播放视频所需的其他操作。
子视频处理同步电路202例如被配置为基于由输入视频处理电路生成的元数据对子视频处理电路进行监视和控制,以使得所述两个子视频处理电路之间对子视频的处理同步。如上文所述,同一视频内的不同帧之间往往存在互依赖性。对输入视频内的某一帧的某种类型的处理有时会需要对该帧的邻近的一个或多个帧进行同一类型的处理之后而得到的数据。保持子视频处理电路之间的处理同步可以使得两个子视频处理电路均可以及时地对存在互依赖性的帧进行处理,并且使得在后续操作中可以方便地实时合成输出视频而无需缓存大量数据。
根据本公开,子视频处理同步电路202可以对子视频处理电路进行监视,以获取与该子视频处理电路正在处理的帧相关信息,例如,所述信息可以包括对应于该帧的元数据以及正在进行的处理的类型 (诸如解压、解密和嵌入附加信息之类)。
根据本公开,子视频处理同步电路202可以根据通过监视而所获取的信息(特别是元数据)来对两个子视频处理电路的操作进行控制,以使得第一子视频处理电路206和第二子视频处理电路208的操作同步。这里,子视频处理电路之间的操作同步可以表示一个子视频处理电路对由元数据指示的第一帧不进行特定类型的处理,直到另一个子视频处理电路完成了对由元数据指示的第二帧的所述特定类型的处理为止。换句话说,同步例如可以表示保持两个子视频处理电路之间的处理速度/步调基本一致,使得一个子视频处理电路对于帧的处理速度与的另一个子视频处理电路对于帧的处理速度之差小于预定阈值。例如,这种“阈值”可以是以表示帧的数量的信息来确定的。例如,在将帧编号作为元数据的情况下,子视频处理同步电路202可以进行监视和控制,使得一个子视频处理电路对编号为N的帧不进行特定类型的处理,直到另一个子视频处理电路完成了对编号为N±Thr的同一特定类型的处理为止,其中N和Thr均为大于或等于1的整数,并且 Thr为以帧编号差来表示的阈值。再例如,在将帧的输出时间戳作为元数据的情况下,子视频处理同步电路202可以进行监视和控制,使得一个子视频处理电路对输出时间戳为T的帧不进行特定类型的处理,直到另一个子视频处理电路完成了对时间戳为T±Thr的同一特定类型的处理为止,其中Thr为以要输出帧的时间戳之差来表示的阈值。
根据本公开,子视频处理同步电路202可以通过向第一和第二子视频处理电路发送信号来控制第一和/或第二子视频处理电路暂停/开始对某个帧的某种处理。
要说明的是,这里所述的“同步”主要表示两个并行的子视频处理流之间的同一种类型的处理的同步。在同一个子视频处理流中,不同类型的处理之间可以不进行这种“暂停/开始”的同步控制。例如,同步控制使得第一视频处理电路对编号为5的帧不进行解压的处理,直到第二子视频处理电路完成了对编号为6的解压为止。但是,这并不影响第一/第二视频处理电路对其他帧的其他处理。例如,第一视频处理电路可以在等待对编号为5的帧的解压期间,对编号为3的帧进行嵌入水印信息的操作以及对编号为7的帧进行解密的操作。
根据本公开,子视频处理同步电路202还可以被配置为进行控制以在第一子视频处理电路和第二子视频处理电路之间传递数据,使得第一和/或第二子视频处理电路能够借助所传递的数据对存在子视频间互依赖性的一个或多个帧进行处理,其中,存在子视频间互依赖性的帧表示对其进行处理需要基于另一个子视频(即,由另一个子视频处理电路处理的子视频)的一个或多个帧的数据的帧。
例如,在进行解压处理时,可能需要子视频处理同步电路202进行这种数据传递的控制。例如,根据一些压缩算法(诸如涉及帧间预测的算法之类),对某个帧进行解压(例如,对编号为2的帧进行解压),可能需要用到经解压的相邻帧的数据(例如,需要用到经解压的编号为1的帧的数据的部分或全部)。再例如,根据一些压缩算法 (诸如MPEG2/MPEG4之类),在压缩视频流的一个或多个关键帧数据(例如,在关键帧的报头)中包含用于解压其他帧的参数(例如量化参数之类)。在这种情况下,一条子视频处理线(例如,由第一子视频处理电路206或第二子视频处理电路208负责的子视频处理线) 中涉及的子视频的帧中可能缺乏这种关键帧数据,因此,需要及时地将这种关键帧数据传递到另一条子视频处理线。
在上述任一示例中,子视频处理同步电路202可以根据预先约定的压缩算法确定对由元数据指示的哪些帧的解压需要来自另一个子视频的相应帧的数据、需要传递什么样的具体数据以及何时需要传递这种数据。子视频处理同步电路202可以对两条子视频处理流(例如,分别由第一子视频处理电路206和第二子视频处理电路208负责)进行监视,并且在一检测到由当前子视频处理流处理的帧的数据需要被另一条子视频处理流使用时,就控制在两条子视频处理流之间(例如,在第一子视频处理电路206和第二子视频处理电路208之间)进行所需数据的传递。根据本公开,可以按任何恰当的方式实现两条子视频处理流之间的数据传递。例如,子视频处理同步电路202可以起转发器的作用。当子视频处理同步电路202检测到由一个子视频处理电路处理的帧的数据需要被另一个子视频处理电路使用时,可以从该子视频处理电路获取相应的数据(例如,根据不同的情况,或者是经解压的帧数据的全部或部分,或者是经解压的关键帧数据中包含的参数),并将该数据转发到另一个子视频处理电路。替代地,子视频处理同步电路202可以仅起两个子视频处理电路之间的数据传送的控制器的作用。当子视频处理同步电路202检测到由一个子视频处理电路处理的帧的数据需要被另一个子视频处理电路使用时,可以控制该子视频处理电路直接将相应的数据发送给另一个子视频处理电路。
还例如,在进行解密处理时,可能需要子视频处理同步电路202 进行这种数据传递的控制。例如,根据一些加密算法,特别是链式加密算法,诸如AES-CBC(AdvancedEncryptionStandard-Cipher Block Chaining,高级加密标准-密码块链接)之类,对第N个帧进行解密可能需要用到来自经解密的第N-1帧的数据。因此,需要及时地在子视频处理线之间传递将这种数据。在这种情况下,子视频处理同步电路 202可以根据预先约定的加密算法确定对由元数据指示的哪些帧的解密需要来自另一个子视频的相应帧的数据、需要传递什么样的具体数据以及何时需要传递这种数据。子视频处理同步电路202可以对两条子视频处理流(例如,分别由第一子视频处理电路206和第二子视频处理电路208负责)进行监视,并且在一检测到由当前子视频处理流处理的帧的数据需要被另一条子视频处理流使用时,就控制在两条子视频处理流之间(例如,在第一子视频处理电路206和第二子视频处理电路208之间)进行所需数据的传递。如上文参考解压操作说明的,可以按任何恰当的方式实现两条子视频处理流之间的数据传递。例如,子视频处理同步电路202可以起转发器的作用,或者可以起两个子视频处理电路之间的数据传送的控制器的作用。
再例如,在向子视频嵌入附加信息时,可能需要子视频处理同步电路202进行这种数据传递的控制。如上文所述,例如,这种附加信息可以是用于指定播放视频的系统以及播放视频的时间的不可见的“水印”信息。诸如水印信息之类的这种附加信息的各个部分可能需要以线性的方式按照正确的顺序插入到视频数据的各个帧中,以使得播放端的设备(诸如水印分析器之类)可以按照线性的方式读取附加信息的各个部分以便正确解读附加信息。根据本公开,由于输入视频被例如逐帧地拆分为两个子视频,因此,由每个子视频处理电路处理的帧实际上并不是线性的,即,并非按照原始的输入视频的帧的顺序而连续排列的。鉴于此,根据本公开,由子视频处理同步电路来控制附加信息向子视频的嵌入。子视频处理同步电路202例如被配置为将附加信息的各个部分按照正确的次序发送给相应的子视频处理电路,并监视子视频处理电路将附加信息的各个部分按照正确的次序嵌入到子视频中。
例如,需要嵌入到子视频中的附加信息可以是由与视频处理装置20分开的设备或者由视频处理装置20上的未示出的单独的电路(例如,实时地且持续地)生成的。以水印信息为例,水印信息可以由与视频处理装置20分开的设备或者由视频处理装置上的未示出的单独的电路基于安全时钟以及系统ID等的信息生成,并被传送给子视频处理同步电路202。再例如,这种附加信息也可以存储在与视频处理装置20分开的存储装置或者视频处理装置20上的未示出的存储器上,并且子视频处理同步电路可以(例如,实时地)读取该附加信息以便控制将其嵌入到待处理的子视频。
子视频处理同步电路202可以持续地从外部(即与视频处理装置 20分开的设备或者视频处理装置20上的单独的电路)接收要嵌入到子视频中的附加信息的各个部分。或者,子视频处理同步电路202可以持续地从外部存储设备或视频处理装置20的存储器读取要嵌入到子视频中的附加信息的各个部分。
子视频处理同步电路202可以基于对各个子视频处理电路的当前处理的监视来确定要将附加信息的哪个部分嵌入到正在被处理的帧,并且可以将该部分传送给相应的子视频处理电路。同时,在向相应的子视频处理电路传送了相应部分的附加信息之后,子视频处理同步电路202还可以对该子视频处理电路进行监视,以确定该子视频处理电路正确地嵌入了该部分的附加信息。例如,可以基于校验位之类的方式来验证附加信息的正确嵌入。这样,子视频处理同步电路202可以对附加信息的嵌入进行调度,从而使得附加信息的各个部分按照正确的顺序嵌入到子视频的各个帧。
子视频处理同步电路202还可以被配置为在基于监视而识别出一个子视频处理电路对帧的处理失败的情况下,通过执行校正控制来使得所述两个子视频处理电路之间对子视频的处理同步,其中,所述校正控制包括控制该子视频处理电路插入空白帧或重复上一帧,或者控制另一子视频处理电路丢弃与该帧对应的一帧。例如,在如上文所述需要线性地嵌入附加信息的情况下,这种校正控制是至关重要的,因为如果对某个帧的处理失败不做任何校正操作,那么可能导致附加信息的各个部分不能按照正确的顺序嵌入子视频,从而导致播放端无法正确解读附加信息进而无法播放视频。
根据本公开,子视频处理同步电路202可以通过分析与正在由子视频处理电路进行处理的帧对应的元数据来检测是否在任一子视频处理流中丢失了某个或某几个帧。例如,在将帧编号作为元数据的情况下,子视频处理同步电路202可以基于元数据来计算在某个子视频处理流中正在经历某种类型的处理的当前帧的帧编号与在该子视频处理流中经历了该类型的处理的上一帧的帧编号之差。或者,在将时间戳作为元数据的情况下,子视频处理同步电路202可以基于元数据来计算在某个子视频处理流中正在经历某种类型的处理的当前帧的时间戳与在该子视频处理流中经历了该类型的处理的上一帧的时间戳之差。子视频处理同步电路202可以根据上述差值计算的结果来确定对于该类型的处理,是否在该子视频处理流中丢失了一个或多个帧。在确定丢失帧的情况下,子视频处理同步电路202可以确定该子视频处理流对丢失的帧的该类型的处理失败。附加地或替代地,当子视频处理电路对某个帧的处理失败时,该子视频处理电路也可以向子视频处理同步电路202发信号通知这种失败,从而使得子视频处理同步电路202 可以进行后续的校正控制处理。
当子视频处理同步电路202通过监视而识别出一个子视频处理电路对某个帧的任意一个类型的处理失败的情况下,可以发信号通知该子视频处理电路将空白帧作为对该帧处理后而获得的结果数据,或者替代地,将对上一帧进行相同类型的处理后所得到的数据作为对该帧处理后而获得的结果数据。这样,输入视频的各个帧的顺序不会因为某个子视频处理电路对某个帧的某种处理的失败而被打乱,从而避免了无法获得正确的输出视频。替代地,当子视频处理同步电路202通过监视而识别出一个子视频处理电路对某个帧的任意一个类型的处理失败的情况下,可以发信号通知另一子视频处理电路丢弃与该帧对应的一帧(例如,与该帧编号相邻的一帧)。有利地,通过插入空白帧/ 重复上一帧或者丢弃对应帧的这种简单的校正控制,避免了由于并行运行的任意子视频处理线中个别帧的处理失败而导致的无法正确生成输出视频的问题。
子视频合成电路204例如被配置为合成经处理的两个子视频,使得输出视频中的各帧的顺序与输入视频的各帧的顺序一致。根据本公开,子视频合成电路204可以基于元数据来合成经处理的两个子视频,使得经处理的各个帧按照与输入视频的相同顺序排列在输出视频中。在根据元数据确定输出视频中的帧的顺序之后,子视频合成电路可以将与各个帧对应的元数据移除,从而使得最终的输出视频中不包含任何元数据。
上面已经详细说明了根据本公开的视频处理装置的结构配置。下面,将参考图4说明根据本公开的实施例的视频处理装置的示意性操作流程40。
如图4所示,该操作流程40在步骤S400处开始。随后,视频处理装置在步骤S402处将输入视频拆分成两个低帧率的子视频,以便通过对子视频的并行处理来实现对高帧率输入视频的处理。如上文所述,可以将输入视频逐帧地或按照帧组为单位拆分为帧率相同的低帧率两个子视频。
接下来,在步骤S404处,生成用于两个子视频的同步的与每个子视频的各帧对应的元数据,并将元数据添加到相应的子视频。如上文所述,元数据可以指示输入视频的帧的顺序,并且与帧数据相对应地添加元数据,以便指示当前帧在输入视频中的顺序。
随后,在步骤S406处,通过两条并行的子视频处理线对子视频进行处理,并且对两条子视频处理线的处理进行入上文所述的同步控制。这里,对子视频的处理可以包括解密、解压以及添加附加信息中的任意一种或多种类型的处理,并且多种类型的处理之间的顺序可以根据实际情况而确定。如上文所述,对两条子视频处理线的同步控制使得两条子视频处理线的处理步调基本一致(即,相同类型的处理速度基本一致),并且使得能够在两条子视频处理线之间及时传递对当前帧进行处理所需的数据。这样,通过利用针对低帧率的处理线的并行运行并且结合恰当的同步控制,可以有效地实现对高帧率视频的处理(例如,实时处理)。
最后,在步骤S408处,基于元数据将经处理的两个子视频合成为帧率与输入视频相同的输出视频,使得最终的输出视频如同是通过单个针对高帧率的处理线对输入视频直接进行处理而获得的那样。
最后,该处理流程在S410处结束。
要指出的是,根据本公开的视频处理装置的示意性操作流程40 仅仅是示意性的,本领域技术人员可以根据实际情况对该操作流程进行修改。各个步骤的顺序可以根据情况而调整或者并行执行,例如,可以在拆分输入视频的同时生成针对拆分出的帧的元数据并将其添加到对应的子视频。
应理解的是,根据本公开的视频处理装置的示意性操作流程40 中的各个操作可以被实时地进行。也就是说,可以随着输入视频数据的输入而进行实时的并行处理、同步控制以及合成控制,从而实时地输出与输入视频数据对应的输出视频数据。当然,在一些情况下上述操作也可以非实时地进行,例如可以在两个子视频处理流分别对各自完整的子视频进行处理之后,统一合成最终的输出视频。
上文已经参考附图描述了根据本公开的实施例的视频处理装置及其示意性操作流程。特别地,以包含实现各个功能的电路的结构对视频处理装置进行了说明。例如,视频处理装置可以主要由硬件电路构成。例如,硬件电路可以包括组合式逻辑电路、时钟存储设备(诸如软盘、触发器、锁存器等)、有限状态机、诸如静态随机存取存储器或嵌入式动态随机存取存储器的存储器、定制设计电路、可编程逻辑阵列等的任意组合。硬件电路可以借助设计信息和制造系统来制造。设计信息可利用各种适当的计算机语言中的任何语言来指定,包括硬件描述语言诸如但不限于:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。设计信息可以被制造系统用来制造硬件电路的至少一部分。制造系统可包括被配置为制造硬件电路的各种适当元件中的任何元件。这可包括例如用于(例如在可包括掩膜的晶片上) 沉积半导体材料、移除材料、改变所沉积材料的形状、(例如通过掺杂材料或利用紫外处理修改介电常数)对材料改性等等的元件。制造系统还可执行对于正确操作执行所制造电路的各种测试。
除了包括硬件电路的单个装置形式的实现方式之外,还可以通过由计算机来执行用于实现如图4所示的视频处理方法的软件程序来实现本公开的视频处理方案。图5示出了可以实现根据本公开的实施例的计算设备500的示例性配置。计算设备500可以是被配置为执行处理和/或计算的任何机器。计算设备500可以是但不限制于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(PDA)、智能电话、车载计算机或以上组合。
如图5所示,计算设备500可以包括可能经由一个或多个接口与总线502连接或通信的一个或多个元件。总线502可以包括但不限于,工业标准架构(Industry StandardArchitecture,ISA)总线、微通道架构(Micro Channel Architecture,MCA)总线、增强ISA(EISA) 总线、视频电子标准协会(VESA)局部总线、以及外设组件互连(PCI) 总线等。计算设备500可以包括例如一个或多个处理器504、一个或多个输入设备506、以及一个或多个输出设备508。一个或多个处理器504可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。输入设备506可以是能够向计算设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输出设备508 可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
计算设备500还可以包括或被连接至非暂态存储设备514,该非暂态存储设备514可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其他光学介质、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。计算设备500 还可以包括随机存取存储器(RAM)510和只读存储器(ROM)512。 ROM 512可以以非易失性方式存储待执行的程序、实用程序或进程。 RAM 510可提供易失性数据存储,并存储与计算设备500的操作相关的指令。计算设备500还可包括耦接至数据链路518的网络/总线接口 516。网络/总线接口516可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙TM设备、 1302.11设备、WiFi设备、WiMax设备、蜂窝通信设施等)。
应当进一步理解,计算设备500的元件可以分布在整个网络上。例如,可以在使用一个处理器执行一些处理的同时,使用其他远程处理器执行其他处理。计算设备500的其他元件也可以类似地分布。因此,计算设备500可以被理解为在多个地点执行处理的分布式计算系统。
此外,前述实施方案可体现为计算机可读介质上的计算机可读代码。计算机可读介质为可存储数据的任何数据存储设备,所述数据其后可由计算机系统读取。计算机可读介质的示例包括只读存储器、随机存取存储器、CD-ROM、DVD、磁带、硬盘驱动器、固态驱动器和光学数据存储设备。计算机可读介质还可分布在网络耦接的计算机系统中使得计算机可读代码以分布式方式来存储和执行。
进一步地,可以单独地或以任何组合方式来使用前述实施方案的各个方面、实施方案、具体实施或特征。例如,可由软件、硬件或硬件与软件的组合来实现前述实施方案的各个方面。
除了以单个装置形式的实现方式之外,根据本公开的视频处理方案也可以被实现为如图6所示的视频处理系统60。视频处理系统60 例如可以被配置为包括输入视频处理设备600、第一子视频处理设备 606、第二子视频处理设备608、子视频处理同步设备602以及子视频合成设备604,其中,每个设备可以通过硬件、软件或者硬件和软件相结合的方式实现相应的功能。视频处理系统60中包括的各个设备所实现的功能/操作与上文参考视频处理装置20的各个电路所描述的功能/操作类似,这里不再重复说明。
图6中绘出的实线表示了用于视频处理系统60的各个设备之间的典型的信号流的通信线路。例如,输入视频处理设备600可以将包含拆分出的子视频以及相应的元数据传送给第一子视频处理设备606和第二子视频处理设备608;子视频处理同步设备602可以向第一子视频处理设备606和第二子视频处理设备608传送控制信号并在需要时在这两个子视频处理设备之间转发数据;子视频合成设备604可以从第一子视频处理设备和第二子视频处理设备接收经处理的子视频。要理解的是,这些通信线路仅仅是示意性的,还可以存在其他可能的通信线路。例如,第一子视频处理设备606和第二子视频处理设备608 之间可能存在直接的通信线路,以方便传送处理子视频所需的数据。
根据本公开,可以实现对高分辨率高帧率的视频的处理。有利地,由于根据本公开的方案利用针对低帧率视频的处理线对从输入视频拆分出的子视频进行处理,因此,对每条处理线的各个模块/设备的能力要求被降低,从而减小了实现每条处理线的研发开销。
根据本公开,由于两条子视频处理线并行地对子视频进行处理,并且每条处理线所需要处理的数据量由于帧率的降低而被减小,因此有利地,对输入视频的处理速度被较大幅度地提升,从而可以有利地降低输出视频的延迟。因此,本公开的视频处理方案尤其适用于需要对输入视频进行实时处理并且实时输出并播放输出视频的场景。
根据本公开,借助于两条子视频处理线之间的同步控制,可以有利地使得能够对存在子视频间互依赖性的帧进行处理,并且可以使得能够正确地向各个子视频嵌入需要按照输入视频的帧的顺序而线性排列的附加信息,从而使得最终的输出视频如同是通过单个针对高帧率的处理线对输入视频直接进行处理而获得的那样。
虽然已通过示例详细展示了本公开的一些具体实施例,但是本领域技术人员应当理解,上述示例仅意图是说明性的而不限制本公开的范围。上述效果仅仅是说明性的效果,本公开的方案还可以具有其他技术效果。应该认识到的是,前述方法中的一些步骤不一定按照图示的顺序执行,而是它们可以被同时、以不同顺序或以重叠方式执行。此外,本领域技术人员可以根据需要增加一些步骤或省略一些步骤。前述装置中的一些单元不是必须按照图示的布置,本领域技术人员可以根据需要增加一些单元或省略一些单元。本领域技术人员应该理解,上述实施例可以在不脱离本公开的范围和实质的情况下被修改。本公开的范围是通过所附的权利要求限定的。