编码调度控制方法及调度控制器与流程

专利2022-06-29  46


本公开涉及计算机编码领域,尤其涉及编码调度控制方法及调度控制器。



背景技术:

现有远程计算机画面传输,采用技术一般分为两类,一类是基于绘图指令的远程画面传输,一类是基于像素编码的远程画面传输。

基于绘图指令的远程画面传输的方法的缺陷包括:第一,为了在远端绘制显示画面,传输时需要携带部分源文件数据,但是,由于远端保存有源文件数据,因此存在安全性问题;第二,由于计算机的之间的绘图指令可能不同,只有远端的绘图指令与源端的绘图指令相同,远端才能解码并显示出画面,因此,该方法适用性较差。

基于像素编码的远程画面传输的方法的缺陷包括:第一,在远端无法动态调整显示画面的质量;第二,通常使用的编码协议是h.264或h.265或其他开源的视频协议,协议开源可能导致网络传输安全性较低。



技术实现要素:

本公开实施例提供一种编码调度控制方法、调度控制器及系统,能够动态调整显示画面的质量。所述技术方案如下:

本公开实施例的第一方面,提供一种编码调度控制方法,该方法包括:

获取传输网络状态参数;

根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

根据所述传输网络状态类型,调整编码的调度参数。

本公开实施例的第二方面,提供一种编码调度控制装置,该装置包括:

第一获取模块,用于获取传输网络状态参数;

确定模块,用于根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

调整模块,用于根据所述传输网络状态类型,调整编码的调度参数。

本公开可以根据网络状况动态调整调度参数。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种编码调度控制方法流程图;

图2是本公开实施例提供的一种编码调度控制方法流程图;

图3是本公开实施例提供的一种调度控制器结构图;

图4是本公开实施例提供的一种调度控制器结构结构图;

图5是本公开实施例提供的一种编码调度控制装置结构图;

图6是本公开实施例提供的一种编码调度控制装置结构图;

图7是本公开实施例提供的调度控制器所在系统结构图;

图8是本公开实施例提供的调度控制器所在系统结构图;

图9是本公开实施例提供的调度控制器所在系统结构图;

图10是本公开实施例提供的计算机系统关系示意图;

图11是本公开实施例提供的一图传系统发送端结构示意图;

图12是本公开实施例提供的图像编码器工作流程;

图13是本公开实施例提供的调度输入输出示意图;

图14是本公开实施例提供的传输码率、时延与显示质量关系示意图;

图15是本公开实施例提供的传输模块结构图;

图16是本公开实施例提供的冗余生成模型的示意图;

图17是本公开实施例提供的预测机制模型示意图;

图18是本公开实施例提供的预测机制模型示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开提供了一种编码调度控制方法及调度控制器,可以根据网络状况动态调整调度参数。本公开实施例提供一种编码调度控制方法,如图1所示,该编码调度控制方法包括以下步骤:

步骤101、获取传输网络状态参数;

可选的,网络状态参数包括丢包率。

步骤102、根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型包括:

判断所述传输网络状态参数是否满足第一预设条件;

如果所述传输网络状态参数满足第一预设条件,确定所述传输网络状态类型为第一状态类型;

如果所述传输网络状态参数不满足第一预设条件,确定所述传输网络状态类型为第二状态类型。

如果网络状态参数为丢包率,判断所述传输网络状态参数是否满足第一预设条件包括:

判断丢包率是否小于预设状态阈值。

如果丢包率小于预设状态阈值,确定所述传输网络状态类型为第一状态类型;如果丢包率不小于预设状态阈值,确定所述传输网络状态类型为第二状态类型。

例如,当前带宽为10m,丢包率为0.01%,状态阈值为5%,则此时判断传输网络状态为第一状态,即带宽充足。当前带宽为10m,丢包率为6%,状态阈值为5%,则此时判断传输网络状态为第二状态,即带宽不充足。

步骤103、根据所述传输网络状态类型,调整编码的调度参数。

根据所述传输网络状态类型,调整编码的调度参数包括:

如果所述传输网络状态为第一状态,将第一调度参数调整为第一质量阈值,所述第一调度参数用于指示编码质量。

在该实施例中,第一调度参数为传输质量层,第一质量阈值可以设置为最高质量层。

示例性的,如果所述传输网络状态为第一状态,当前质量层为6,最高质量层为15,则直接将质量层从6调整到18。

在一个实施例中,上述方法还包括:

将第二调度参数调整为第一帧数阈值,所述第一调度参数用于指示帧数。

如果所述传输网络状态为第二状态,将第一调度参数从第二质量值调整为第三质量值,其中,所述第二质量值大于第三质量值,第三质量值不小于基本质量值。基本质量值是为了保证编码质量二预设的最小质量层。

示例性的,如果所述传输网络状态为第二状态,当前质量层为8,基本质量层为4,则将质量层依次降低为7、6、5,直到将质量层降低为4或者所述传输网络状态为第一状态。如果当前质量层为16,基本质量层为4,也可以直接将质量层降低为8(16的一半),直到传输网络状态为第一状态。第三质量值的设定可以由具体情况确定,可以依次降低,可以逐半降低,本公开在此不做任何限定。

本公开实施例提供一种编码调度控制方法,如图2所示,该编码调度控制方法包括以下步骤:

步骤201、获取传输网络状态参数;

可选的,网络状态参数包括丢包率。

步骤202、根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

具体包括:判断所述传输网络状态参数是否满足第一预设条件;

如果所述传输网络状态参数满足第一预设条件,确定所述传输网络状态类型为第一状态类型;

如果所述传输网络状态参数不满足第一预设条件,确定所述传输网络状态类型为第二状态类型。

如果网络状态参数为丢包率,判断所述传输网络状态参数是否满足第一预设条件包括:

判断丢包率是否小于预设状态阈值。

如果丢包率小于预设状态阈值,确定所述传输网络状态类型为第一状态类型;如果丢包率不小于预设状态阈值,确定所述传输网络状态类型为第二状态类型。

步骤203、根据所述传输网络状态类型和信道参数,将第一调度参数调整为第一质量阈值,所述第一调度参数用于指示编码质量;

在该实施例中,第一调度参数为传输质量层,第一质量阈值可以设置为最高质量层。

步骤204、获取信道参数;

步骤205、判断所述信道参数是否满足第二预设条件;

步骤206、如果所述信道参数满足第二预设条件,将第三调度参数从第一冗余阈值调整为第二冗余阈值,所述第三调整参数用于指示编码冗余,第二冗余阈值大于第一冗余阈值。

在一个实施例中,根据所述传输网络状态类型,调整编码的调度参数还包括:

步骤207、如果所述传输网络状态为第二状态,将第三调度参数从第二冗余阈值调整为第一冗余阈值。

步骤208、将第一调度参数从第一质量阈值调整为第二质量阈值,其中,所述第二质量阈值小于第一质量阈值。

在一个实施例中,传输网络状态参数包括丢包率;

判断所述传输网络状态参数是否满足第一预设条件包括:

判断所述丢包率是否小于预设状态阈值。

在一个实施例中,第一调度参数为传输质量层,第二调度参数为帧率,第三调度参数为编码冗余率。

在一个实施例中,信道参数包括错包率或误码率;

判断所述信道参数是否满足第二预设条件包括:

判断所述错包率或误码率是否大于预设信道阈值。

图3是本公开提供的一种调度控制器结构图,如图3所示的调度控制器包括第一获取模块301、确定模块302和调整模块303,

第一获取模块301,用于获取传输网络状态参数;

确定模块302,用于根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

调整模块303,用于根据所述传输网络状态类型,调整编码的调度参数。

图4是本公开提供的一种调度控制器结构图,如图4所示的调度控制器40包括第一获取模块401、确定模块402和调整模块403,确定模块402包括:

判断子模块4021,用于判断所述传输网络状态参数是否满足第一预设条件;

第一确定子模块4022,用于如果所述传输网络状态参数满足第一预设条件,确定所述传输网络状态类型为第一状态类型;

第二确定子模块4023,用于如果所述传输网络状态参数不满足第一预设条件,确定所述传输网络状态类型为第二状态类型。

图5是本公开提供的一种调度控制器结构图,如图5所示的调度控制器50包括第一获取模块501、确定模块502和调整模块503,调整模块502包括:

第一调整子模块5021,用于如果所述传输网络状态为第一状态,将第一调度参数调整为第一质量阈值,所述第一调度参数用于指示编码质量。

在一个实施例中,调整模块还包括:

第二调整子模块5022,用于将第二调度参数调整为第一帧数阈值,所述第一调度参数用于指示帧数。

图6是本公开提供的一种调度控制器结构图,如图6所示的调度控制器60包括第一获取模块601、确定模块602、调整模块603、第二获取模块604和判断模块605,

第二获取模,604,用于获取信道参数;

判断模块605,用于判断所述信道参数是否满足第二预设条件;

调整模块603包括:

第三调整子模块6031,用于如果所述信道参数满足第二预设条件,将第三调度参数从第一冗余阈值调整为第二冗余阈值,所述第三调整参数用于指示编码冗余,第二冗余阈值大于第一冗余阈值。

调整模块603还包括:

第四调整子模块6032,用于如果所述传输网络状态为第二状态,将第三调度参数从第二冗余阈值调整为第一冗余阈值。

在一个实施例中,调整模块603还包括:

第五调整子模块6033,用于将第一调度参数从第一质量阈值调整为第二质量阈值,其中,所述第二质量阈值小于第一质量阈值。

在一个实施例中,传输网络状态参数包括丢包率;

判断所述传输网络状态参数是否满足第一预设条件包括:

判断所述丢包率是否小于预设状态阈值。

在一个实施例中,第一调度参数为传输质量层,第二调度参数为帧率,第三调度参数为编码冗余率。

在一个实施例中,信道参数包括错包率或误码率;

判断所述信道参数是否满足第二预设条件包括:判断所述错包率或误码率是否大于预设信道阈值。

图7、图8和图9是调度控制器所在系统结构图,100表示源端的计算机系统,200表示本发明设计的图传发送端装置,300表示远端设备,400是任意介质的网络(wifi,有线,4g等)。200可以集成在100中使用,也可以是独立于100的独立系统使用。

整个系统工作流各如下:

源端100:计算机生成画面、声音数据分别送入图像处理单元104及声音处理单元105进行处理,图像处理装置200分别通过图像采集单元201,声音采集单元202获取这些数据,分别送入图像编码单元205和声音编码单元206进行编码,然后将编码结果发送至第一传输控制单元209,由第一传输控制单元209发送给远端设备;第一传输控制单元209同时接收从远端设备发送来的用户的反向控制数据、声音数据分别送入第一声音解码单元208及控制解码单元207中进行解码,解码结果送入计算机系统的声音输入单元108,控制输入单元107中;第一传输控制单元209还有可能接收远端送来的usb重定向数据,直接送入系统的第一usb单元106。

本质上本公开实施例和计算机系统关系如图10所示。

图传系统发送端200一共分为5个单元,采集,编码,传输,调度和输入,如图10,可以集成在源端100内部实现,也可以作为独立系统使用;可以使用软件方式实现,也可以使用硬件如fpga或芯片的方式实现。

其中,采集会同时采集画面像素数据,声音数据。不同的实现方式下,图像采集单元201的工作位置有所不同。如果200是集成在100内部实现,104在生成图像数据写入图像缓存时会送一份数据给201,201还能从104获取到生成图像数据时使用的绘图指令,图像变动数据,图像移动数据,这些指令和数据可以辅助编码单元加速编码;

如果200是独立在100外部实现使用,则201通过100物理图像输出接口获取图像数据,无法再获取到绘图指令,图像变动数据,图像移动数据。

201图像编码单元工作流程如图11所示。图像编码单元收到数据后先判断有无辅助数据。若有辅助数据则解析辅助数据,然后直接使用结果,能结省时间及降低时延。

若无辅助数据则需要进行图像识别,识别的基本规则是将先后的两帧图像数据逐个像素的比较,分析特征,然后,将图像分成不同类别的宏块,并分析出图块帖内运动向量。动运向量是指图块在帧内移动的方向和距离。完成图像识别之后,先对运动向量做处理,如果是运动向量,则判断当前运动块是否发送到最高质量层级,达到,则只生成运动向量数据,送入一下级打包待发送,如果未达到,则获取当前块的下一质量层数据,和运动向量一起送入下一级进行打包。当前块如果无运动,则根据不同的类型送入不同类型的图像编码单元,包括但不限于文字,图片,视频等编码单元。

本发明中的图像编码为多级即渐进式编码技术,一帧图像生成一组编码结果,我们称之为层或质量层,1~n(n>=1)层。比如一帧编码后有5层,第一层解码后,显示可能是模糊的,每多解码一层就能更清晰一点,解完所有层后就能达到原图的显示质量,即达到最高质量层。每一层解码完成都会生成一个图像,可以用来显示,但具体显示哪一层生成的图像需要基本质量层(这个下面标为绿底的文字有介绍),防止画面来在清晰和不清晰之前来回波动。基本质量层选择多大由调度控制单元210来控制。编码单元会输出达到基本质量层的数据,后续质量层的数据根据当前图块位置是否有变化来决定是否发送,无变化就多发一层(直到最高质量层),有变化就重新编码发送到基本质量层。

图像编码单元可以将原有图像数据在识别后划分为图像小块,这些小块则分为5大类,文字、图片、视频、运动向量、无变化。文字、图片、视频都支持上面所述的多质量层(渐进式)编码。

这些编码单元有的是有损的,有些是无损的,与图像的特征与人眼感观有关,比如视频,使用有损编码,因为视频是一直在动的,采取适当的有损编码对人的主观感受并无影响,同时还能降低码流和提高编码速度。同时这些编码单元支持多质量层输出,编码单元总是输出基本质量层数据。比如一块图像数据编码分为10层,基本质量层可能是3,编码单元只需要输出质量层1-3的数据,剩余数据保留在上下文中,编码单元的基本质量层由调度控制单元210根据当前收集到的系统参数来决定,每个编码单元可以使用不同的基本质量层。

此外,图像数据中还有一部分是无变化数据,这种无变化是指相对于上一帧而言,这部分数据每一次输出前判断是否达到最高质量层,如果未达到,则输出下一质量层的数据,用于数据打包待发送,如果达到了,则只需要发送未变化标识即可。最高质量层的画面质量由最大码率决定,各编码单元根据图块占比及最大码率决定自身最高质量层的输出码率,从而确定输出画面质量,每个编码单元的最大质量分层数目也可以不同,由编码单元自身确定,并记录在编码单元上下文中。

调度控制单元210,主要收集从传输控制单元209上报的带宽、时延、丢包率、错包率、及下一次传输网络状况预测;210还会收集图像编码单元205和声音编码单元206上报的当前各编码单元的运算时间、输出码率及下一帧的输出预测;调度控制单元210还会收集控制解码单元207的键鼠控制信息。调度控制单元210在以上这些数据的基础上建立决策模型,输出三组参数,采集控制参数,编码控制参数以及传输控制参数。

举两个例子对调度控制单元210根据带宽、时延、丢包率、错包率、及下一次传输网络状况预测、当前各编码单元的运算时间、输出码率及下一帧的输出预测,对下一阶段的参数的预测调整进行说明:

例子1:当前带宽为10m,传输时延为2ms,丢包率为0.01%,错包率为0,下一次传输网络状况预测为下一阶段依然是这种较好状态,当前采集帧率为5帧,编码单元当前平均编码时延为10ms,编码单元当前输出为2mbps,下一帧预计码率无波动保持2mbps,当前最高质量层为6,基本质量层为3,用户当前有键鼠操作行为,且键盘事件出现时间占比较多。

此时,调度控制单元210输出的最佳决策应为:带宽足够,传输不限制,因丢包率不高,此时用户可能是在做实时的文档编辑,延时要求较高,可适当提高冗余数量,如占比达到总数据量1%;当前用户实时文本操作,对键鼠事件影响要求较高,可提高帧率到10帧,下一阶段各单元状况不变,可继续提高帧率到15帧(文字编辑时帧率最高到20帧即可,不是视频,人眼感受不会有差别);文字对清晰度要求较高,提高基本质量层到4,下一阶段如果各单元状况不变,可继续提升基本质量层,最大不超过最高质量层。编码单元可不用限制码率,下一帧带宽足够,超出2mbps也可以。

例子2,接着上面场景,如果此时用户不再编辑文档,改为看视频,此时,带宽为10m,传输时延为3ms,丢包率为0.01%,错包率为0,下一次传输网络状况预测为下一阶段依然是这种较好状态,当前采集帧率为20fps(上面场景一直持续,帧率可能达到文字操作下的最大帧率,20fps),编码单元当前平均编码时延为10ms,编码单元当前输出为5mbps,下一帧预计码率可能码率6-7mbps,当前最高质量层为6,基本质量层为6(上面场景一直持续,基本质量层可能会达到最高质量层),而此时无键鼠操作行为。

此时,调度控制单元210输出的最佳决策应为:根据编码单元识及采集识别反馈,提高采集帧率,先到25fps,(最高60fps,目前pc机的刷新帧率就是60fps),因为达到24fps时人眼才不会感觉到画面断续,后续可继续提升;调度先降低编码单元基本质量层,先降到原有的一半,变为3;因为此时自然视频下,可以降低码流,使用有损的视频编码单元,码流限为5mbps,并输入当前帧率25fps到编码单元(后续采集帧率提高需要调度控制单元继续设置该参数),编码单元会根据限定码流和帧率调整编码参数,保证平均码流在5mbps波动;传输此10m带宽足够因为此时无操作,时延要求降低,传输数据量变大,此时可降低,冗余数量,如占比达到总数据量0.5%,其他丢失数据通过重传来恢复,即使丢失一帧,对于视频播放影响也不会太大,同时调整调度策略,查看整体传输中其他通道当前是否使用较少,可将预置带宽分配给音频和视频能道使用。

其中,调度控制单元210中的决策模型可以基于神经网络模型。

预设大量的输入和输出参数,将输入参考输入到原始的神经网络模型,对原始的神经网络模型进行训练,当模型输出的结果和预设的输出参数之间的差值符合条件时,模型训练完毕,将训练好的神经网络模型作为决策模型进行实际应用。

但是,由于实际的网络状态复杂多变,网络状况每段时间内都可能是不一样的,如广域网,这两天可能质量较好,过几天可能延时变小,但丢包变大等。训练时间持续按年计算。比如训练1年后,机单元采集,编码,解码,显示性能,网络状况80%以上都可以碰到过,但并不能保证所有状况都能碰到。所以,决策模型需要跟随调整,也就是说,在应用过程中还需要对预测模型进行持续训练。

在实际应用中,可以将当前网络状态下,决策结果比较好的输出参数,以及对应的输入参数记录下来,用于对决策模型进行训练,以使决策模型根据当前的网络状态进行调整。

此外,应用网络可以分为局域网和广域网,两种网络的状况差异较大,为了得到更好的决策结果,可以分别针对局域网和广域网训练两个决策模型。

通过将决策模型用于实际工程中后不断的通过机单元学习来训练模型,最终建立起一组编解码单元,采集,传输及最终画面质量间的一种映射关系。

具体的,采集控制参数可能会影响图像采集单元201和声音采集单元202的采样频率及输出速度。编码控制参数据影响图像编码单元205,声音编码单元206的编码质量,运算时间,及输出码率。以图像编码205为例,调度控制单元210可能会修改基本质量层,确定基本输出画面的显示质量,也可以会修改最大输出码率,来影响画面静止时的显示质量,也有可能调度控制图像编码单元根据下一帧的输出预测发现可能编码时间过长,而网络预测可以延时过大,从而限定图像编码单元最短运行时间,图像编码单元可能会根据运行时间来调整编码参数来加快运行,保证远程显示输出流畅。调度输入输出如图13所示。

所有参数据调整都最终都会影响传输码率和时延这两个参数,这两个参数最终会影响远程设备的播放显示质量。关系如图14所示,延时与显示质量之间是成反比的,而达到某种程度时就可能不被用户接受。而码率提升到某种程度时就有可能达到最佳质量,再提升码率也无意义,对显示质量无帮助。

第一传输控制单元209及第二传输控制单元308,主要实现数据拆包,发送,接收,组包,丢包重传,延时控制,纠错控制等功能。

第一传输控制单元和第二传输控制单元结构如图14所示。

第一传输控制单元209,第二传输控制单元308包括显示协议及描述映射2091,对上层所有可能产生的协议进行显示,对上层产生的数据生成描述内容映射,描述内容包括当前数据必要属性,以图像数据为例,如帧号,帧类型,质量层级等,上层可以根据显示协议及描述映射2091将各类数据划分传输权重优先级且根据描述、优先级、权重,确定各数据传输时的队列长度及发送顺序。上层可能对应如下数据,图像,声音,键鼠操作数据,文件流数据及其他控制或调度指令。

显示协议及描述映射2091,用于生成描述内容,也即当前数据的必要属性,以图像数据为例,如帧号,帧类型,质量层级等。

传队列调度2092,用于对各队列进行调度。

事件控制器2093,相当于一个事件处理的状态机,因为上层协议对数据编码和底层链路socket传输本质上不会直接交互,而且各自处理流程不同,导致数据生成和消费的时间上并不是完全同步的;再加上外部动态控制2094修改参数事件,网络自适应控制2096上报网络事件都是随时可能产生,完全异步;事件控制器2093内部有事件队列,会将事件分到不同事件处理线程和事件队列,每个处理线程对应一个事件队列;目前内部有2个处理线程和2个事件处理队列;发送线程、接收线程。

外部动态控制2094,上报延时丢包率等网络事件或信息给调度控制单元210进行决策,调度控制单元210会将量化传输指标,如延时,码流大小等参数送回外部动态控制2094,以便外部动态控制2094根据这些参数调整各队列的长度。

统计2095,接收事件控制器2093发送线程、接收线程、及网络自适应控制2096的接收线程上报的发送数据,接收数据,丢包参数,时间戳等,来计算时延,有效带宽,丢包率,错包率,rtt等网络参数。同时会将统计结果上报到调度控制单元210。

算法池2097,提供不同的模型的算法,用于实时计算生成量化结果。如fec前向纠错模型算法,用于生成冗余报文;流量控制算法,用于控制网络输出码流大小;网络预测模型算法,用于网络行为预测等各类算法。

调度控制单元210会指定传输某个队列目标时延,队列长度,调整队列优先级,并控制冗余生成模型在不重传数据的情况下,根据纠错算法,恢复丢失的数据;同步控制音视频各队列发送时间,因为音视频需要在远端设备300上进行播放同步控制;传输过程中也需要尽量公平调度音视频队列,让音视频数据保持大体上的同步,以降低远端设备300的处理误差。

关于冗余生成模型的简要说明具体如图16:

冗余生成模型包括五个单元,算法单元(am),控制单元(cm),冗余计算单元(rm),传输单元(tm),数据解析单元(pm)。数据传输整体结构如图9所示。

算法单元包含各种生成冗余模型的算法,包括但不限于卷积码、海明码、bch码、rs码、turbo码、ldpc码和tpc码等(部分单元可能需要特殊硬件的支持)。

控制单元cm则是各种策略的集合,硬件平台筛选策略、数据分类策略、网络状态判断策略等不同的决策机制。根据各单元反馈的数据进行综合判断,调用am内的不同的冗余算法,最终生成冗余模型。cm在选择模型时要平衡容错能力、计算能力及载荷比。

冗余计算单元rm根据冗余模型及对应的校验码算法及控制分包策略对分组后的数据生成冗余,再进行发送。

传输单元tm负责生成数据的传输,并对链路中的状态进行检测,如丢包率,错包率,rtt,ttl等。将这些状态数据反馈到控制单元,以作为下一阶段传输的输入参数。

数据解析单元pm对收到的数据进行解析,判断是否有丢包,如果有丢包则根据已有信息逆向调用冗余计算方法,将丢失数据恢复出来。

以下说明详细的执行流程。

冗余生成模型可以分为发送端和接收端。

发送端流程:数据在输入系统后,先由cm单元根据数据分类策略,根据数据的重要及紧急程序及数据量大小,对数据进行传输优先级划分;cm,再接收tm反馈的网络状态数据,根据数据优先级以及网络状态,调用am中各种算法,建立冗余模型并更新到rm中,rm根据冗余模型,计算结果,然后交由传输单元通过网络发送出去。

接收端流程:接收端在收到数据后由tm解析出信息,输入到cm,cm根据解析结果调用am来构建冗余模型,更新至pm中,此时tm要判断是否有丢包,有丢包则将相关数据输入至pm,恢复出丢失数据。

由于信令、图像、声音、键鼠数据特点不同,编码方式不同,数据量不同,因此,上层可以对不同类型的数据采取不同的传输策略。在传输控制209,传输控制308中,每种数据都对应一个独立的队列用于传输调度,队列长度不同,而队列长度会影响传输时延。

比如图像数据,对延时的要求不同在各种不同场景下稍有不同,看视频时可适当加大延时(保证音视频同步),用户感知度不高,此时可加大队列长度,适当降低冗余占比(降低计算力,提高有效载荷比),此时队列优先级最低;但在编辑文档时,就对时延要求较高,因为此时用户一直在与源端电脑交互,对操作响应要求较高,此时会降低队列长度,提高冗余占比以降低时延,保证用户操作的流畅性,队列优先级提高到仅次于键鼠数据。

又比如,音频较为简单,分为有声音和无声音的情况,有声音时的队列长度可根据视频队列长度来定,因为需要进行音视频同步,队列优先级可与视频等同,因为无声音时也不发数据,不影响其他队列调度,无声音则可以将队列长度设为1(可以稍长,防止突然有声音的情况)或不设。

信令是指源端的200与远端300之间建立连接的过程中产生的交互数据,这些数据量很少,但是很重要,延时要求较低(秒级),此时为了保证传输的可靠,可以提高冗余到100%甚至更高,队列长度可设为总数据量的10%,比如每秒有100条信令,则队列长度初始为10,队列优先级高于视频播放,但低于文字操作时的视频队列。键鼠事件频度较高,产生数目比音视频要高一个数量级,特别是鼠标,但每个事件数据量小,对时延要求高,准确度要求高,队列长度大体上高于视频队列长度一个数量级,比如视频是20,键鼠可能就是200,并且键鼠队列优先级最高。以上各队列长度都会根据调度反馈的当前操作场景及时延要求来动态调控。

以上这些队列调整真正执行在2094。执行指令来源于调度控制单元210。

当传输单元接收到一个数据时,2091会根据类别将数据送入不同的数据队列(即上面所述的音频、视频、键鼠操作事件队列等),2091会给2093调度线程的事件队列送入一个发送数据事件,发送线程收到事件后,发送线程只有一个,可能对应上层多个协议产生的事件,这些事件需要合并过滤,然后会产生一个调度事件再触发传输队列调度2092去工作;由传输队列调度2092执行调度,传输队列调度2092内有独立的调度线程运行调度算法,找出要发送的数据包,将数据送入网络自适应控制2096,网络自适应控制2096将数据封装(封装是为了拆包,并生成冗余和添加额外控制信息,用于丢包数据恢复或重传),送到网络2098底层socket的数据缓存区。网络2098有一个专门的发送线程一直运行,读取缓存区数据不断向外发送。

网络2098还有一个专门的接收线程对应物理链路一直运行,保证接收效率,接收到数据后向网络自适应控制2096产生一个接收事件,网络自适应控制2096也有独立的接收线程从网络2098缓存区读取数据,然后进行解封(解封是检查数据是为了检查否有丢包,如果没丢包,则去掉冗余和控制信息,然后填充到指定位置,如果有丢包,则通过控制信息和冗余进行计算来恢复,如果丢失过多,无法计算则要向源端发送丢包报告,源端重新传输相应数据),解封完成后会判断是否对应上层协议一个完整的数据报文,如果是产生一个上报事件,由事件控制器2093的接收线程处理,事件控制器2093的接收线程负责将数据通过显示协议及描述映射2091注册的上报接口送回给上层应用;如果有丢包事件,网络自适应控制2096还会上报丢包参数,包括包数量和大小数据给事件控制器2093的统计线程。

对传输队列调度2092调度各队列的说明如下:传输队列调度2092根据显示协议及描述映射2091描述及网络自适应控制2096的反馈,确定当前时间该发送哪一队列的数据,且传输队列调度2092在队列中有数据时会一直运行,直到队列中数据被全部发送出去。传输队列调度2092在运行时遵循如下面公式。也就是说,传输队列调度2092每次在选择该发送队列中的哪个报文时,可以根据如下公式,找出所有队列中能被最快发送完成的报文,选择该报文进行发送,直至将队列中的所有报文发送完毕。

ats:每个队列当前要发送(位于队首)的报文的生成时间;

virt_st:传输开始时间,初始时由于virt_ft还不存在,因此,last(virt_ft)也不存在;virt_st取值为该队列所有报文ats中生成时间最早的一个报文的生成时间;其中,max的意思是找出队列中最早生成的报文,后续每次调度都会重新进行计算,所以,virt_st是一个权重数据,并不能算做真实的传输开始时间;

last(virt_ft):本次调度开始时上次调度最后计算出的预计传输完成时间;

virt_ft:预计传输完成时间,其实这是一个权重数据,不是真实的传输完成时间;

paket_size:报文大小,越大,发送需要时间就会越长;

r:是当前总共可用带宽;

ri:各队列当前分配带宽在总可用带宽中的占比;

wi:是指各队列权重(210指定的优先级)数据;

这样就能保证每个队列都会被调用到,不会出现饿死的现像。本算法是在操作系统作业调度算法上进行的改进,加入队列优先级参数,用于适配现有不同优先级数据的传输。

网络自适应控制2096会建立闭环预测机制,则根据统计2095的结果及外部动态控制2094输入,再根据算法池2097网络预测模型预测一下发送周期网络状况,可以预测出网络带宽时延,及一些网络事件,如拥塞、超大延迟、异常丢包、突发流量、乱序等,将这些信息反馈上报,影响上层输出码流大小及输出速度或自行消费调整当前传输策略。

举几种常见的情况,一,统计并预测发送带宽足够,延时较低,而此时输出码流较小,此时网络自适应控制2096会上报当前状况,由第一调度控制单元210来控制上层各编码单元增大码流,提高质量来提高远程显示设备输出质量。二,统计并预测下一发送周期网络延时较小,但带宽不足,此时,自适应2096需要控制优先发送控制类数据,这类数据数量小,传输质量要求高,然后对数据量大,传输质量要求低的数据去查询显示协议及描述映射2091是否可丢弃,降低传输压力,另一方面调整发送缓存,防止不可丢弃数据丢失。三,当前网络带宽足够,延时也较低,但错包率较高,此时会调整fec模型,生成更多冗余包,尽可能保证数据在无需重传的情况下就可以恢复。

预测机制模型如图17所示(包括但不限于以下这些输入输出条件)。

其中,预测机制模型可以基于神经网络模型。

预设大量的输入和输出参数作为训练数据,输入参数可以包括:接收带宽、重传占比、丢包率、网络时延和分组间时延,输出参数可以包括:带宽和时延。

将输入参考输入到原始的神经网络模型,对原始的神经网络模型进行训练,当模型输出的结果和预设的输出参数之间的差值符合条件时,模型训练完毕,将训练好的神经网络模型作为预测机制模型进行实际应用。

应用网络可以分为局域网和广域网,由于两种网络的状况差异较大,为了得到更好的决策结果,可以将训练数据分为两组,从而得到分别针对局域网和广域网训练两个预测机制模型,这样可以有效降低训练复杂度、提高模型预测结果的准确性。

但是,由于实际的网络状态复杂多变,因此,在实际应用中对预测机制模型训练需要持续进行,也就是说,先利用现有数据训练出一个基本模型,然后测试使用,在使用过程中不断进行训练。

在实际应用中,可以将当前网络状态下,预测结果比较好的输出参数,以及对应的输入参数记录下来,用于对预测机制模型进行训练,以使预测机制模型根据当前的网络状态进行调整。

本发明中,第一调度控制单元210同时还有一个补充图像变化预测机制,用于辅助图像处理装置200独立在主机100外使用时的编码。此种情况下,图像处理装置200采集不能获取到主机100的绘图指令,图像变化,图像移动等信息,在无本单元的情况下需要逐个像素的比较进行图像识别,来生成运动向量,变化位置信息。而本单元的图像变化预测机制是在用户操作与图像变化之间建立对应关系,用户不同操作会影响图像产生哪些变化,生成这些变化结果,来辅助编码单元工作。预测机制模型如图18所示。

该预测机制单元主要功能是辅助编码单元进行图像识别,以尽量降低编码消耗计算力和时延。预测机制单元可以是机单元学习算法模型,比如神经网络、k近邻、贝叶斯、决策树、svm、逻辑斯蒂回归、最大熵模型、隐马尔科夫、条件随机场、adaboost、em等多种算法,优选神经网络。因为训练数据量越大,神经网络训练结果就越好,目前我们有足够的数据用于训练神经网络模型,使训练好的预测机制模型的预测效果较好。

当然,使用其他的机单元学习算法模型也可以建立预测机制模型。

预设大量的输入和输出参数作为训练数据,输入参数可以包括:图像识别算法、带宽、键鼠控制时间,输出参数可以包括:移动和变化区域,其中,训练数据中输出参数的结果可以由基于像素比较的图像识别算法计算得到。

将输入参数输入到原始的神经网络模型,对原始的神经网络模型进行训练,当模型输出的结果和预设的输出参数之间的差值符合条件时,模型训练完毕,将训练好的神经网络模型作为预测机制模型进行实际应用。

这样,预测机制模型的输出结果可以送给编码单元,相比使用基于像素比较的图像识别算法计算移动和变化区域,使用预测机制模型计算移动和变化区域可以降低运算资源的消耗(不可能完全消除,因为预测只是辅助,结果不一定完全正确),以及降低计算量。

基于上述图1对应的实施例中所描述的编码调度控制方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:readonlymemory,rom)、随机存取存储器(英文:randomaccessmemory,ram)、cd-rom、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1对应的实施例中所描述的编码调度控制方法,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。


技术特征:

1.一种编码调度控制方法,其特征在于,所述方法包括:

获取传输网络状态参数;

根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

根据所述传输网络状态类型,调整编码的调度参数。

2.根据权利要求1所述的编码调度控制方法,其特征在于,所述根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型包括:

判断所述传输网络状态参数是否满足第一预设条件;

如果所述传输网络状态参数满足第一预设条件,确定所述传输网络状态类型为第一状态类型;

如果所述传输网络状态参数不满足第一预设条件,确定所述传输网络状态类型为第二状态类型。

3.根据权利要求2所述的编码调度控制方法,其特征在于,所述根据所述传输网络状态类型,调整编码的调度参数包括:

如果所述传输网络状态为第一状态,将第一调度参数调整为第一质量阈值,所述第一调度参数用于指示编码质量。

4.根据权利要求3所述的编码调度控制方法,其特征在于,所述方法还包括:

将第二调度参数调整为第一帧数阈值,所述第一调度参数用于指示帧数。

5.根据所述传输网络状态类型,调整编码的调度参数之前,所述方法还包括:

获取信道参数;

判断所述信道参数是否满足第二预设条件;

根据所述传输网络状态类型,调整编码的调度参数还包括:

如果所述信道参数满足第二预设条件,将第三调度参数从第一冗余阈值调整为第二冗余阈值,所述第三调整参数用于指示编码冗余,第二冗余阈值大于第一冗余阈值。

6.根据权利要求5所述的编码调度控制方法,其特征在于,根据所述传输网络状态类型,调整编码的调度参数还包括:

如果所述传输网络状态为第二状态,将第三调度参数从第二冗余阈值调整为第一冗余阈值。

7.根据权利要求6所述的编码调度控制方法,其特征在于,所述方法还包括:

将第一调度参数从第二质量值调整为第三质量值,其中,所述第二质量值大于第三质量值,第三质量值不小于基本质量值。

8.根据权利要求2所述的编码调度控制方法,其特征在于,所述传输网络状态参数包括丢包率;

判断所述传输网络状态参数是否满足第一预设条件包括:

判断所述丢包率是否小于预设状态阈值。

9.根据权利要求7所述的编码调度控制方法,其特征在于,所述第一调度参数为传输质量层,所述第二调度参数为帧率,所述第三调度参数为编码冗余率。

10.根据权利要求5所述的编码调度控制方法,其特征在于,所述信道参数包括错包率或误码率;

判断所述信道参数是否满足第二预设条件包括:

判断所述错包率或误码率是否大于预设信道阈值。

11.一种调度控制器,其特征在于,所述调度控制器包括:

获取模块,用于获取传输网络状态参数;

确定模块,用于根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;

调整模块,用于根据所述传输网络状态类型,调整编码的调度参数。

技术总结
本公开提供一种编码调度控制方法及装置,涉及计算机编码技术领域,所述方法包括:获取传输网络状态参数;根据所述传输网络状态参数和预设规则,确定所述传输网络状态类型;根据所述传输网络状态类型,调整编码的调度参数。本公开实施例可以实现在远端动态调整显示画面。

技术研发人员:杨璐;范志刚
受保护的技术使用者:西安万像电子科技有限公司
技术研发日:2020.01.09
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-53655.html

最新回复(0)