专利名称:流程图和时间线上的智能缓存方法
技术领域:
本设计适用于非线性编剪辑软件及视音频后期特效处理与合成软件中,流程图和时间线上的智能缓存方法。
背景技术:
在非线性编剪辑软件及视音频后期特效处理与合成软件中,随着对节目制作要求的不断增加,经常需要处理大量高清晰度、高分辨率的素材进行同时编辑,以满足节目的丰富性和高质量的要求,但由于磁盘的I/O速度与内存速度的不匹配,以及对大量高清晰度高分辨率素材进行编码、解码或特效应用过程中产生的大量计算所需的时间开销,这样可能导致在节目编辑过程中,编辑的效果不能实时的展现给节目编辑者,从而影响到节目编辑效果,降低节目制作效率。因此,提高编辑过程中的实时性非常必要。为了解决以上问题,通常会采用硬件图形加速和软件图形加速两种办法,但是对于这两种图形加速方法,也同时会受到图形接口速度、缓存空间、及中心处理器计算速度的限制,而存在缺陷,从而影响音视频文件编辑、播放、合成过程中的实时性。
发明内容
为了解决由于磁盘的I/O速度与内存速度的不匹配,以及对大量高清晰度高分辨率素材进行编码、解码或特效应用过程中产生的大量计算所需的时间开销这一技术问题, 本发明采用一种智能缓存机制没有限制,根据磁盘剩余空间的大小确定,在编辑过程中,当对某一个序列或者某个编辑节点使用缓存后,在进行一次播放后,记录当前序列或节点的效果到指定的缓存文件中。首先,定义缓存的有如下三种状态1、CacheToNone 表示没有缓存;2、CacheToMemory表示将缓存信息保存在内存中;3、CacheToDisk表示将缓存信息保存在磁盘文件中。保存在内存中的CacheToMemory文件读取速度是最快的,但是需要消耗一定的内存空间,同时受内存地址空间的限制,保存在内存中的缓存有一定的颗粒度,采用队列的方式进行存储,这样可能导致之前记录的缓存信息被后面保存的缓存给覆盖,于是定义一种保存在磁盘中的CacheToDisk类型,将缓存文件保存在磁盘上,但速度较之CacheToMemory 慢一些,CacheToNone则表示没有缓存,并且定义其优先次序逐次提高,我们按缓存文件保存的位置来划分缓存的优先级,即CacheToNone的优先级最低,CacheToDisk(是否应该是 CacheToMemory)的优先级最高,当同一个流程图节点的管脚或者同一时间段出现不同的缓存状态时,取优先级高的状态进行设置。当需要引用这段已经编辑好的素材时,可以直接从相应的缓存文件中读取信息, 从而减少重新计算需要的时间开销,以达到播放实时性的要求。从而有效的减少对1/0的依赖,以及后台大量运算所消耗的时间开支,进而提高节目编辑过程中的实时性。将在下面的描述中解释并且将由
本发明的实施例的实施方式。
为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图做简单的介绍图1 表示在时间线工作环境下,设置智能缓冲在用户界面中所体现的效果2 表示时间线上的缓存设置规则图;图3 表示流程图上节点缓存设置规则图。
具体实施例方式本发明有关流程图和时间线上的智能缓存的方法,可以用于非线性编剪辑软件及视音频后期特效处理与合成软件中,具体的实施方式如下考虑到两种工作方式,以下将分别介绍时间线和流程图上的智能缓存机制。一、时间线上的智能缓存机制由于时间线上没有类似流程图上“节点”的概念,因此时间线上的智能缓存是按照区间划分的。其记录缓存的规则为若时间线上的记录的缓存标志为“不记录缓存状态”,则将时间线上的缓存类型设置为CacheToNone,否则,将时间线上的缓存类型设置为 CacheToMemory0在时间线上渲染一帧或进行播放操作时,若当前帧已经添加至缓存文件中,则直接从缓存文件中读取相关信息,否则,将处理后的当前帧的信息根据缓存类型写入到缓存文件中,当修改时间线上某个参数值或者对时间线某段区域进行操作时,则使该操作区域的缓存无效。时间线上的缓存设置各部分工作规则如图2所示。具体缓存效果如图1所示。流程图上的智能缓存机制流程图表示的为一系列节点之间的拓扑关系,因此当修改某一个节点的状态、参数,或者改变查看的节点以及查看节点的输出都会引发流程图上节点的缓存状态,流程图上的缓存是以节点及节点的某个输出管脚为单位的,其设置规则为(1)改变当前查看节点的输出管脚当从一个节点的某一个输出管脚(管脚A)移到查看该节点的另外一个输出管脚 (管脚B)时,此时该节点管脚A的缓存状态和管脚B的缓存状态都将发生改变。对于管脚 A 若这个节点为记录缓存状态,则对管脚A的缓存的状态分别以如下情况判断若管脚A没有被连接,该节点的管脚A的缓存状态为CacheToNone,否则,逐一考虑其连接的节点,若这些节点中有被查看的节点,将该节点的管脚A的缓存状态设置为CacheToDisk,否则,设置为 CacheiToNone ;若这个节点没有被记录为缓存状态,设置该节点的管脚A的缓存状态为 CacheToNone0
对于管脚B 若管脚B没有被连接,若这个节点为记录缓存状态,设置管脚B的缓存状态为 CacheToDisk,否则设置管脚B的缓存状态为CacheI^oNone ;若管脚B连接有其他节点,且其连接的节点中有被查看的,若这个节点为记录缓存状态,设置管脚B的缓存状态为CacheToDisk,否则设置管脚B的缓存状态为 CacheToMemory ;否则,同 a。(2)节点间的切换当在流程图上,从一个节点切换到另外的一个节点,查看的节点发生变化,这时需要改变这两个节点的缓存类型,以及与这两节点相关的节点的缓存类型。假设从查看的节点A的输出管脚A切换到查看的节点B的输出管脚B,对于节点A 若节点A输出管脚A仍然被查看且为写缓存状态,则设其缓存状态为 CacheToDisk,否则,则逐一判断与管脚A相连节点,若有被查看的节点,则设与A节点相连的管脚hdex的缓存状态为CacheiToMemory,否则设为CacheiToNone ;若节点A输出管脚A没有被查看,则判断与A节点相连的所有节点,若其被查看且为写缓存状态,则修改这个节点的缓存状态为CacheToDisk,否则判断该节点的所有下游节点,若下游节点中存在被查看的节点,设置这个节点的缓存状态为CacheToMemory,否则设置这个节点的缓存状态为CacheToNone,继续判断与A相连的下一个节点直到全部结束。对于节点B 如果B节点的管脚B被查看,首先判断其与B节点相连的所有上游节点,若上游节点被查看,且该节点为写缓存状态,则置与B节点相连的管脚^idex的缓存状态为 CacheToDisk,否则置与B节点相连的管脚hdex的缓存状态为CacheToMemory。逐一判断所有连接B的节点。然后若B节点为写缓存状态,则B节点的管脚B置其缓存状态为 CacheToDisk,否则,判断与管脚B相连的下游节点,若下游节点中存在被看的节点,则置节点B的管脚B的缓存的状态为CacheToMemory,否则,置节点B的管脚B的缓存的状态为 CacheToNone ;否则,若B节点的管脚B没有没查看,首先判断其与B节点相连的所有上游节点, 若上游节点被查看,且该节点为写缓存状态,则置与B节点相连的管脚^dex的缓存状态为 CacheToDisk,否则置与B节点相连的管脚hdex的缓存状态为CacheToNone,逐一判断所有连接B的节点。然后判断与管脚B相连的下游节点,若下游节点中存在被看的节点,且B节点为写缓存状态,则B节点的管脚B置其缓存状态为CacheToDisk,否则,则置节点B的管脚 B的缓存的状态为CacheToMemory,否则,置节点B的管脚B的缓存的状态为CacheToNone。时间线上的缓存设置各部分工作规则如图3所示。
权利要求
1.流程图和时间线上的智能缓存方法,其特征在于包括以下步骤确定输入单元状态;输入单元的缓存调用;
2.如权利要求1中所述的方法,其特征在于确定输入单元状态为时间线方式,所输入单元为时间线上各序列的缓存状态,其步骤为如该序列的缓存状态为“不记录缓存状态”,则将该系列的缓存状态设置为“没有缓存”,如该序列的缓存状态为非“不记录缓存状态”,则将该系列的缓存状态设置为“将缓存信息保存在磁盘文件中”状态。
3.如权利要求1或2中所述的方法,其特征在于输入单元的缓存调用,对于时间线方式当时间线上的视频处理时,如当前帧状态为“将缓存信息保存在磁盘文件中”状态,则直接从缓存文件中读取相关信息,否则,将处理后的当前帧的信息根据缓存类型写入到缓存文件中。
4.如权利要求3中所述的方法,起特征在于时间线上的视频处理为渲染帧或进行播放操作。
5.如权利要求1或2中所述的方法,其特征在于,还可以加入修改时间线上序列参数值或者对时间线某段区域进行操作,如进行上述操作,则其该操作区域的缓存状态将设置为 “没有缓存”状态。
6.如权利要求1中所述的方法,其特征在于确定输入单元状态为流程图状态,所输入单元为流程图上节点,其缓存是以该节点及该节点的某输出管脚为基本单位的。
7.如权利要求1或6中所述的方法,其特征在于输入单元的缓存调用,对于流程图方式,如调用基于单个节点时,切换管脚之间调用关系,其方法如下如该节点为记录缓存状态,则对其中一个输出管脚的缓存的状态分别以如下情况判断若该管脚没有被其他节点连接,该节点的管脚A的缓存状态为“没有缓存”状态,否则, 逐一考虑其连接的节点,若其他节点中有被查看的节点,将该节点的该管脚的缓存状态设置为“将缓存信息保存在磁盘文件中”状态,否则,设置为“没有缓存”状态;如该节点没有被记录为缓存状态,则设置节点的该管脚的缓存状态为“没有缓存”状态;对于另外管脚如该管脚没有被连接,若这个节点为记录缓存状态,则设置该管脚的缓存状态为“将缓存信息保存在磁盘文件中”状态,否则设置该管脚的缓存状态为“没有缓存” 状态;如该管脚连接有其他节点,且其连接的节点中有被查看的,若这个节点为记录缓存状态,设置该管脚的缓存状态为“将缓存信息保存在磁盘文件中,,状态,否则设置该管脚的缓存状态为“将缓存信息保存在内存中”状态。
8.如权利要求1或6中所述的方法,其特征在于输入单元的缓存调用,对于流程图方式,如调用基于多个节点时,完成节点之间调用关系,其方法如下若其中一个节点输出管脚,被查看且为写缓存状态,则设其缓存状态设置为将缓存信息保存在磁盘文件中,,状态,否则,则逐一判断与该管脚相连节点,若有被查看的节点,则设与该节点相连的管脚索引的缓存状态设置为“将缓存信息保存在内存中”状态,否则设置为 “没有缓存”状态;若以上节点输出管脚没有被查看,则判断与该节点相连的所有节点,若其被查看且为写缓存状态,则修改这个节点的缓存状态设置为“将缓存信息保存在磁盘文件中”状态,否则判断该节点的所有下游节点,若下游节点中存在被查看的节点,设置这个节点的缓存状态设置为“将缓存信息保存在内存中”状态,否则设置这个节点的缓存状态为“没有缓存”状态;继续判断与该节点相连的下一个节点直到全部结束。对于其他节点如果该节点的管脚被查看,首先判断其与该节点相连的所有上游节点, 若上游节点被查看,且该节点为写缓存状态,则置与该节点相连的管脚索引的缓存状态为 “将缓存信息保存在磁盘文件中,,状态,否则置与该节点相连的管脚索引的缓存状态为“将缓存信息保存在内存中”状态。逐一判断所有连接该节点的节点。然后若该节点为写缓存状态,则该节点的管脚置其缓存状态为“将缓存信息保存在磁盘文件中”状态,否则,判断与管脚相连的下游节点,若下游节点中存在被看的节点,则置该节点的管脚的缓存的状态为 “将缓存信息保存在内存中”状态,否则,置该节点的管脚B的缓存的状态为“没有缓存”状态;如该节点的管脚未被查看,首先判断其与该节点相连的所有上游节点,若上游节点被查看,且该节点为写缓存状态,则置与该节点相连的管脚索引的缓存状态为“没有缓存”状态,否则置与该节点相连的管脚索引的缓存状态为“将缓存信息保存在磁盘文件中”状态, 逐一判断所有连接该节点的节点。然后判断与管脚相连的下游节点,若下游节点中存在被看的节点,且该节点为写缓存状态,则该节点的管脚置其缓存状态为“将缓存信息保存在磁盘文件中,,状态,否则,则置该节点的管脚的缓存的状态为“将缓存信息保存在内存中”状态,否则,置节该点的管脚的缓存的状态为“没有缓存”状态。
全文摘要
本发明公开了流程图和时间线上的智能缓存方法,用于非线性编剪辑软件及视音频后期特效处理与合成软件中流程图和时间线上的视频片段、序列、节点的缓存,解决了视音频后期特效处理中编辑过程中的实时性问题,为了解决以上问题,本发明采用对序列或者编辑节点的缓存状态进行预设置的方式,在视音频处理过程中根据每个序列和编辑节点的缓寸状态进行调用,当需要引用这段已经编辑好的素材时,可以直接从相应的缓存文件中读取信息,从而减少重新计算需要的时间开销,以达到播放实时性的要求。从而有效的减少对I/O的依赖,以及后台大量运算所消耗的时间开支,进而提高节目编辑过程中的实时性。
文档编号H04N5/262GK102568525SQ20101061769
公开日2012年7月11日 申请日期2010年12月31日 优先权日2010年12月31日
发明者严玄, 刘铁华, 见良 申请人:新奥特(北京)视频技术有限公