发布信息

上下文相关的呼叫中视频编解码器切换的制作方法

作者:admin      2022-07-23 19:19:19     943



电子通信装置的制造及其应用技术1.本发明涉及上下文相关的呼叫中视频编解码器切换。背景技术:2.随着媒体数据在广泛的应用中变得越来越普遍,需要以可靠的方式在用户之间和跨网络传输媒体流(例如,视频流)。当以媒体流的形式传输数据时,参与此媒体通信的端点使用编解码器确保它们了解它们正在接收和发送的数据的类型。通常,在端点之间传输媒体流时将会使用的编解码器在数据传输之前由端点协商。该协商尝试考虑不同的应用和/或设备以及它们遵守带宽或资源限制的需要。然而,这些限制与媒体通信会话期间的其它设备或网络问题相结合使媒体流容易受到质量问题的影响。取决于问题,编解码器可能会受到限制并且难以维持媒体通信会话的质量。当已协商编解码器以供在整个通信会话期间使用时,这可能对会话特别有害。技术实现要素:3.本公开的一个方面提供了一种用于上下文相关的呼叫中视频编解码器切换的方法。该方法包括在数据处理硬件处接收以下指示:远端端点包括在呼叫期间从初始视频编解码器切换到辅助视频编解码器的能力。在与远端端点的呼叫期间,该方法包括由数据处理硬件确定编码器的性能满足编解码器切换阈值。编解码器切换阈值指示编码器的性能证明在呼叫中流从初始视频编解码器的切换是合理的。在与远端端点的呼叫期间,该方法还包括由数据处理硬件从最初协商以管治(govern)呼叫的初始视频编解码器切换到辅助视频编解码器。4.本公开的实现方式可以包括以下可选特征中的一个或多个。在一些实现方式中,在与远端端点的呼叫期间,该方法包括:由数据处理硬件通过将呼叫的估计比特率与在编码器处的实际比特率进行比较来监视编码器的性能。在该实现方式中,确定编码器的性能满足编解码器切换阈值发生在当在编码器处的实际比特率低于在编码器处的估计比特率时。附加地或替代地,在与远端端点的呼叫期间,该方法可以包括:由数据处理硬件通过将呼叫的估计比特率与在编码器处的实际比特率进行比较来监视编码器的性能;并且,确定编码器的性能满足编解码器切换阈值可以发生在当在编码器处的实际比特率高于在编码器处的估计比特率时。在一些配置中,在与远端端点的呼叫期间,该方法包括:由数据处理硬件通过将呼叫的估计帧速率与在编码器处的实际帧速率进行比较来监视编码器的性能。在该配置中,确定编码器的性能满足编解码器切换阈值发生在当在编码器处的实际帧速率低于在编码器处的估计帧速率时。5.在一些示例中,编解码器切换阈值包括用于容许编码器性能的最小比特率。最小比特率可以对应于大约100kb/秒的速率。接收远端端点包括从初始视频编解码器切换到辅助视频编解码器的能力的指示可以发生在当正在与远端端点建立呼叫连接时。可选地,接收远端端点包括从初始视频编解码器切换到辅助视频编解码器的能力的指示可以发生在编解码器与远端端点的协商期间。附加地或替代地,接收远端端点包括从初始视频编解码器切换到辅助视频编解码器的能力的指示可以发生在与远端端点的呼叫期间。6.在一些配置中,在与远端端点的呼叫期间,该方法包括由数据处理硬件恳求远端端点以确定远端端点包括在呼叫期间从初始视频编解码器切换到辅助视频编解码器的能力的指示。在确定编码器的性能满足编解码器切换阈值时,可以自动发生从初始视频编解码器到辅助视频编解码器的切换。初始视频编解码器可以对应于硬件编码器并且辅助视频编解码器可以对应于软件编码器。这里,软件编码器可以包括vp8软件编码器。7.本公开的另一方面提供了一种用于上下文相关的呼叫中视频编解码器切换的系统。该系统包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储以下指令:当在数据处理硬件上执行所述指令时,所述指令使数据处理硬件执行操作。这些操作包括:接收远端端点包括在呼叫期间从初始视频编解码器切换到辅助视频编解码器的能力的指示。在与远端端点的呼叫期间,这些操作包括确定编码器的性能满足编解码器切换阈值。编解码器切换阈值指示编码器的性能证明在呼叫的中流从初始视频编解码器的切换是合理的。在与远端端点的呼叫期间,这些操作还包括从最初协商以管治呼叫的初始视频编解码器切换到辅助视频编解码器。8.该方面可以包括以下可选特征中的一个或多个。在一些示例中,所述操作包括:在与远端端点的呼叫期间,通过将呼叫的估计比特率与在编码器处的实际比特率进行比较来监视编码器的性能,并且确定编码器的性能满足编解码器切换阈值发生在当在编码器处的实际比特率低于在编码器处的估计比特率时。可选地,所述操作可以包括:在与远端端点的呼叫期间,通过将呼叫的估计比特率与在编码器处的实际比特率进行比较来监视编码器的性能,并且确定编码器的性能满足编解码器切换阈值发生在当在编码器处的实际比特率高于在编码器处的估计比特率时。在一些配置中,在与远端端点的呼叫期间,所述操作包括:通过将呼叫的估计帧速率与在编码器处的实际帧速率进行比较来监视编码器的性能。在该配置中,确定编码器的性能满足编解码器切换阈值发生在当在编码器处的实际帧速率低于在编码器处的估计帧速率时。9.在一些实现方式中,编解码器切换阈值包括用于容许编码器性能的最小比特率。最小比特率可以对应于大约100kb/秒的速率。10.在一些配置中,接收远端端点包括从初始视频编解码器切换到辅助视频编解码器的能力的指示发生在与远端端点建立呼叫连接时。可选地,接收远端端点包括从初始视频编解码器切换到辅助视频编解码器的能力的指示可以发生在编解码器与远端端点的协商期间。附加地或替代地,接收远端端点包括从初始视频编解码器切换到辅助视频编解码器的能力的指示可以发生在与远端端点的呼叫期间。11.在一些示例中,所述操作包括:在与远端端点的呼叫期间,恳求远端端点以确定远端端点包括在呼叫期间从初始视频编解码器切换到辅助视频编解码器的能力的指示。在确定编码器的性能满足编解码器切换阈值时,可以自动发生从初始视频编解码器到辅助视频编解码器的切换。在一些实现方式中,初始视频编解码器对应于硬件编码器并且辅助视频编解码器对应于软件编码器。这里,软件编码器可以包括vp8软件编码器12.在附图和以下描述中阐述了本公开的一种或多种实现方式的细节。从描述和附图以及从权利要求中,其它方面、特征和优点将是显而易见的。附图说明13.图1a是示例通信环境的示意图。14.图1b是示例通信环境切换编解码器的示意图。15.图2a至图2d是用于图1a的通信环境的示例编解码器管理器的示意图。16.图3是用于上下文相关的呼叫中视频编解码器切换的方法的示例操作布置的流程图。17.图4是可用于实现本文描述的系统和方法的示例计算设备的示意图。18.各种附图中的相同附图标号表示相同的元件。具体实施方式19.通信应用被配置成用以使设备(例如,代表人)能够通过网络进行通信。参与通信的每个设备都称为端点。尽管设备可能具有一些配置以作为端点以独立方式进行通信,但通常每个设备都与使用该设备的人相关联并代表使用该设备的人进行通信。通信应用通过充当提供在端点之间的通信信道的平台来托管通信会话。在该通信会话期间,通信应用还被配置用以促进使用通信信道管治通信的通信配置或规则。例如,通信信道可能受到其自身带宽或通信中所涉及的一个或多个端点可用的带宽的限制。由于这些限制,端点通常需要同步在通信会话期间在端点之间传输的数据的属性。在未同步数据属性的情况下,在端点之间的通信可能会因不兼容性而受损或失败。例如,源端点可以以目的地端点不可读的格式传送数据(例如,写入数据)。这就像是这两个端点在说不同的语言。20.为了进一步使数据标准化复杂化,可以以许多不同的格式和/或大小来封装数据。例如,在通信会话期间使用通信应用在端点之间通信的媒体可以是音频数据、视频数据或两者的某种组合。此外,每种类型的数据(例如,音频或视频)可能有其自己的属性和/或格式。例如,捕获媒体数据的设备可以基于例如媒体捕获设备的属性(例如,制造商或设备类型)或协调媒体捕获的用户的偏好,以广泛的格式创建媒体数据。换言之,媒体捕获设备可以具有不同程度的分辨率,使得捕获的数据反映对于不同大小的媒体数据而言的这些分辨率差异。例如,捕获用户视频的相机可以捕获高分辨率视频(例如,4k视频)。为了适应这些变化,通信应用可以被配置用以不仅处理不同形式的数据,并且还被配置用以协调在端点之间这些不同形式的数据的传输。21.为了确保端点之间通信的数据对于每个端点都是兼容的,通信应用使用为数据通信提供标准化的编解码器。编解码器被配置用以通过对数据进行编码或解码来生成数据的标准化数字格式。一般而言,编码器和/或解码器是将数据转换成特定格式或特定大小(例如,通过压缩或解压缩)的数据标准化机制。因此,如果两个端点部署相同的编解码器或能够进行相同标准化的编解码器,则在通信会话期间传输的数据与每个端点兼容。22.编解码器可以采用软件编解码器、硬件编解码器(例如,端点的数据处理硬件)或两者的某种混合组合的形式。不同形式的编解码器可能有不同的优点或缺点。例如,硬件编解码器将通用处理硬件从编码和解码任务中解放出来,从而将数据处理硬件释放以执行其它任务。尽管在一些示例中,可能会优先考虑硬件编解码器而不是软件编解码器,但并非在所有端点上都支持硬件编解码器。此外,当硬件编解码器包含错误时,只能通过更换对应的硬件来纠正这些错误。不幸的是,这并不总是可能的,并且对于硬件可能容易出现问题的情况,软件编解码器可能更可取,因为可以通过例如软件升级来纠正软件编解码器中的错误。此外,执行不同操作系统或使用不同处理硬件的端点可能会限制通信会话可能使用的编解码器的类型。例如,某些编解码器可能是特定供应商或产品专有的。相比之下,一些编解码器是公开可获得的,并且因此被设计用于在各种处理平台上工作。举例来说,vp8是一种开放且免版税的视频压缩格式,其可作为软件使用。编解码器的一些进一步示例包括语音编解码器(例如,g.711、g.722、g.723.1、g.728、g.729等)、视频编解码器(例如,mpeg-1、mpeg-2、mpeg-14、h.264、h.265(hevc))、vp8、vp9、avi等)、视频会议编解码器(例如h.261、h.263等)或作为模数/数模转换器的其它硬件/软件设备。23.通信应用可以通过从端点(例如,作为呼叫源的端点)向一个或多个远程参与者进行呼叫(类似于进行电话呼叫)来建立通信会话。在呼叫的初始化阶段期间,通信应用通常会协商选择哪个编解码器用于媒体传输。这里,这个协商过程可以考虑关于每个端点的特性或因素。其中,这些因素的一些包括每个端点支持的编解码器和/或在端点之间的可用通信带宽。在选择适当的编解码器之后,使用通信应用的每个端点可以在呼叫的持续时间使用所选择的编解码器来发送和/或接收媒体内容。24.不幸的是,由在端点之间的实际通信之前协商的编解码器管治的通信会话可能具有其缺点。换言之,由于在端点之间的通信会话的状态改变,通信会话可能需要在通信会话期间改变原始协商的编解码器。在一些实现方式中,可用通信带宽或处理器可用性可能在会话/呼叫期间改变。在一些示例中,硬件编解码器可能会中断或已知对通信会话的改变状态有问题。例如,在呼叫期间,编解码器可能会因低带宽而降低传输的媒体的比特率,但在可用带宽恢复时无法提高比特率。或者,当可用带宽不足或变得不足时,编解码器可能无法降低传输的媒体的比特率。在不适应这些类型的通信会话变化的情况下,整体用户体验可能会由于质量下降或增加的传输延迟而受到影响。为了解决这些缺点中的一些,本文公开的通信环境执行呼叫中编解码器切换(例如,基于通信会话的性能)。25.参考图1a和1b,在一些实现方式中,通信环境100包括与用户10相关联的用户设备110。用户设备110(也称为媒体捕获设备、通信设备或端点)包括:硬件,例如数据处理硬件112和存储器硬件114;以及,在硬件上执行的软件116(例如,诸如基于网络的应用、基于移动的应用或独立应用的应用)。为了捕获媒体,用户设备包括外围设备118,例如视频捕获设备118、118v(例如,相机)和/或音频捕获设备118、118a(例如,麦克风)。用户设备110可以包括的其它外围设备118是显示器(例如,触摸屏或监视器)、扬声器、键盘、输入/输出端口等。用户设备110可以是能够执行通信应用116的任何计算设备或数据处理硬件。用户设备110的一些示例包括但不限于台式计算设备、移动计算设备(例如膝上型计算机、平板计算机或智能手机)以及可穿戴计算设备(例如,耳机和/或手表)。26.使用处理硬件112(例如,与存储器硬件114通信的数据处理硬件),用户设备110可以执行通信应用116。作为应用116,通信应用116可以是基于网络的,基于移动设备的或独立的应用。通信应用116可以被配置用以使用用户设备110的外围设备118来捕获媒体。在一些示例中,通信应用116使用相机118v捕获用户10的图像并且使用麦克风118a捕获用户10的语音。27.通信应用116通常指的是能够托管在端点(例如,与用户10相关联的用户设备110)之间的通信会话的软件应用。在通信会话期间,通信应用116使每个端点能够通信媒体。换言之,通信应用116向用户10提供通信信道以接收和/或发送包括音频sa和/或视频sv(例如,在特定的帧速率以图像帧f的形式)的媒体流s、sa,v。在通信会话期间,以比特流的形式在端点之间不断传输媒体流s。比特流通常是指比特的流,其中,比特是数据可以被划分成的信息的基本单位。比特流经常通过被称为比特率(例如,每单位时间传输多少比特)的其传输速率而被量化。例如,某些软件或硬件设备可能被评定为(即,限制为)最大(或最小)比特率,并且设备的性能可能基于设备的输出比特率的测量。28.在一些配置中,用户10可以在通信应用116中选择用户10打算通信的媒体流s的形式。例如,用户10选择发送没有对应的视频流s、sv的音频流s、sa(即,没有视频),或选择发送没有对应的音频流sa的视频流sv(例如,静音的视频流)。在一些实现方式中,通信应用116基于通信会话的性能(例如,由于媒体流s的比特率的改变)来自动改变通信的形式。例如,通信应用116从以视频和音频流sa,v的通信改变为仅以音频流sa的通信。29.通信应用116可以通过网络120将媒体流s从第一端点(例如,第一用户设备110a)传送到远端端点(例如,示为第二用户设备110、110b)。例如,使用通信应用116,用户10可以向一个或多个远程用户设备110进行呼叫130(即,对于发起通信会话的请求),其中,每个远程用户设备110与一个或多个对应的远程用户10相关联。此处,呼叫130最初用作从发起呼叫130的用户设备110向每个远程用户10的用户设备110的邀请,该邀请请求每个远程用户10参与通信会话(例如,实时通信会话)。呼叫130的每个源点或目的地点可以被称为端点。例如,在第一用户10a呼叫第二用户10b的基本两人呼叫(例如,如图1a中所示)中,第一用户10a可以被称为第一端点并且第二用户10b可以被称为第二端点。这里,在呼叫130期间位于通信信道的相对端的端点被称为远端端点。换言之,目标地端点是源端点的远端端点。例如,第二用户10b的用户设备110b是相对于第一用户10a的用户设备110a的远端端点,并且第一用户10a的用户设备110a是相对于第二用户10b的用户设备110b的远端端点。类似地,在多参与者或会议呼叫中,每个参与者都是相对于所有其它参与者的远端端点。30.为了发起呼叫130,通信应用116可以通过网络120(例如,通过交互式连接建立(ice))与每个远程端点建立连接。使用已建立的连接,通信应用116可以促进每个端点协商与已由该连接建立的所有端点兼容的编解码器132的选择。编解码器132的协商是为通信会话选择编解码器132的过程,端点将使用该编解码器132在建立的通信会话期间对于通过网络120传输的媒体进行编码和/或解码。在一些示例中,端点使用会话发起协议(sip)来发起、维护和终止通信会话。sip是广泛用于控制通信会话的因特网工程任务组(ietf)定义的信令协议,例如基于因特网协议(ip)的语音和/或视频呼叫。在一些示例中,端点结合sip使用会话描述协议(sdp)来协商编解码器132的选择。sdp是用于描述流媒体初始化参数的格式。31.在一些实现方式中,端点被配置用以传送关于有关端点的通信细节的配置信息134。例如,配置信息134包括端点支持的一个或多个编解码器132的列表。该配置信息134的共享可以是编解码器协商阶段的一部分,发生在编解码器协商阶段之前(例如,在呼叫建立期间),或者发生在端点之间的呼叫130期间的某个其它时间。在一些实现方式中,端点通过使用通信应用116向远端端点通告或发信号通知可接受的编解码器132(例如,可接受的编解码器132的列表)来传送配置信息134。在这种手段中,来自端点的信号可以恳求来自远端端点的响应,该响应包括远端端点的配置信息134。例如,来自远端端点的响应列出了该远端端点支持或与提供给远端端点的配置信息134共同支持的编解码器132。一旦编解码器132最初被选择(即,协商),通信应用116然后可以使用相应选择的编解码器132将媒体作为媒体流s发送到远端端点。32.在一些实现方式中,通信应用116被配置用以基于由呼叫130的每个端点共享的配置信息134来选择编解码器132。这里,通信应用116可以选择支持最高质量的媒体数据的共同支持的编解码器132。在一些配置中,通信应用116在选择将会提供最高质量的媒体数据的共同支持的编解码器132时另外考虑在端点之间的通信信道的带宽。换言之,虽然每个端点都与支持高质量媒体流s的编解码器兼容,但通信应用116确定在端点之间的通信信道不能支持高质量媒体流s,而是取而代之选择与通信信道兼容的由端点支持的编解码器(例如,下一个最佳的共同支持的编解码器)。附加地或替代地,当多于一个共同支持的编解码器132可用时,通信应用116被配置用以选择最佳编解码器132(例如,在给定通信信道的属性(例如带宽)的情况下)。在此,如果通信应用116在呼叫130期间需要切换编解码器132,则通信应用116还可以记录或记下其它共同支持的编解码器132。33.在多个参与者的情况下,通信应用116可以与每个远端端点协商编解码器选择。为了说明,每个端点可以通告它支持的编解码器132(例如,通过提供配置信息134)。利用关于所述多个参与者支持什么类型的编解码器132的配置信息134,通信应用116可以选择每个参与者支持的编解码器132。通过选择共同支持的编解码器132,通信申请人116可以避免以若干种不同的形式编码和/或解码媒体。在共同支持的编解码器132不可用的实现方式中,通信应用116为一些远端端点选择与其它远端端点不同的编解码器132。34.在一些示例中,配置信息134包括端点是否能够在呼叫130期间切换编解码器132的指示。这里,在端点能够当在呼叫130期间(即,“呼叫中”)传送媒体流s的同时切换编解码器132的时候,端点被认为具有编解码器切换能力136。在一些实现方式中,将端点的切换能力136与其它配置信息134一起(例如,与端点支持的编解码器132)通信。附加地或替代地,虽然端点的切换能力136可以是配置信息134的一部分,但它也可以在与其它配置信息134不同的时间被识别或引用。例如,可以在包括呼叫建立、编解码器协商或呼叫中的呼叫130的任何阶段期间评估端点的切换能力136。在一些示例中,暗示了端点是否能够在呼叫130期间切换编解码器132的指示。例如,该能力由通信应用116从远端端点接收的协议(例如,sip或sdp)的版本号暗示。传统上,如果任一端点在呼叫130期间切换了正在使用的编解码器132,则该端点冒着危及通信会话的风险,尤其是当远端端点无法预期这样的切换或支持端点切换到的编解码器132时。换言之,当端点识别出它具有切换能力136时,该端点正在向参与呼叫130的其它端点指示具有切换能力136的该端点预期切换编解码器132对于在通信会话期间维持媒体流s的质量可能最好,并且可以在呼叫130期间处理这样的变化而对呼叫质量的干扰最小。在一些配置中,端点使用sip或其它信令协议来指示其切换能力。在一些示例中,如果端点没有肯定地指示其切换能力136,则其它端点将这种缺乏指示认为是在呼叫130期间无法切换编解码器132。35.在一些实现方式中,通信应用116使用编解码器管理器200。编解码器管理器200通常负责管理通信应用116的通信会话的性能(例如,质量)。在一些示例中,编解码器管理器200是在用户设备110上存储和执行的通信应用116的组件。在其它示例中,通信应用116是由远程系统140托管的基于网络的应用,其中,编解码器管理器200对应于远程系统140的计算资源142。例如,远程系统140是分布式系统或云计算环境,其利用其资源142,例如远程数据处理硬件144(例如,服务器)、远程存储器硬件146(例如,数据库或数据存储设备)或远程软件148。这里,通信应用116和/或编解码器管理器200可以是由远程系统140托管但能够从用户设备110访问的软件资源148。36.继续参考图1a,第一用户10a使用他或她的用户设备110a在第二用户10b他或她的用户设备110b上呼叫第二用户10b。这里,通信应用116促进在第一用户10a和第二用户10b之间的呼叫130。一旦已建立呼叫,端点就会执行编解码器协商。在编解码器协商期间或之前,用户10共享识别每个用户设备110(即端点)支持的一个或多个编解码器132的配置信息134。通过识别由每个端点支持的编解码器132,通信应用116选择在用户10a-10b之间的呼叫130期间要使用的共同支持的编解码器132。在一些示例中,通信应用116被配置用以选择优化通过在端点之间的通信信道发送的媒体流s的质量的编解码器132。在选择了一编解码器132的情况下,每个端点使用该编解码器132在端点之间的通信会话(即,呼叫130)期间对通过通信信道传输的媒体流s进行编码或解码。37.在呼叫130期间,图1b图示了编解码器管理器200识别出在通信会话的质量上的下降。由于这种识别,在时间t0,编解码器管理器200从最初在呼叫130期间使用的初始编解码器132、132i切换到辅助编解码器132、132s。为了执行编解码器切换,编解码器管理器200确定两个端点(例如,第一用户设备110a和第二用户设备110b)都具有切换能力136、136a-136b。当编解码器管理器200确认两个或更多个端点具有切换能力136时,编解码器管理器200识别每个端点支持的每个编解码器132。例如,编解码器管理器200被示为识别第一端点(例如,第一用户设备110a)指示它支持编解码器132、132a、132c、132b(例如,在其配置信息134a中)并且第二端点(例如,第二用户设备110b)指示它支持编解码器132、132a、132b、132d。这里,标记为初始编解码器132i的矩形块表示在通信会话中在时间t0使用的当前编解码器132是每个端点共享的第一编解码器132、132a。在该示例中,编解码器管理器200切换到被示为第四编解码器132、132d的第二编解码器132s。编解码器管理器200选择第四编解码器132d,因为不是每个端点都支持第二编解码器132、132b和第三编解码器132、132c。例如,第一设备110a不支持第二编解码器132b并且第二设备110b不支持第三编解码器132c。基于该分析,编解码器管理器200在时间t0将初始编解码器132i、132a切换到辅助编解码器132s、132d。编解码器管理器200可以响应于识别出在通信会话的质量上的下降,在初始编解码器132i和辅助编解码器132s的其它组合之间进行选择。在一些示例中,初始编解码器132i是h.265并且辅助编解码器132s是vp8。在其它示例中,初始编解码器132i是hevc,并且辅助编解码器132s是例如h.265或vp9。38.虽然图1b仅描绘了切换编解码器132的一次迭代,但编解码器管理器200可以被配置用以将编解码器132切换与编解码器管理器200认为满足通信会话的特定质量或性能阈值所必需的次数。例如,可以在通信会话中提高质量,并且编解码器管理器200可以将编解码器132切换回初始编解码器132i或切换到完全不同的兼容编解码器132(未示出)。当编解码器管理器200切换编解码器132时,图1b示出了辅助编解码器132s改变媒体流s的帧速率r。换言之,为了维持质量,编解码器管理器200改变编解码器132以通过将帧速率r从第一帧速率r、r1(例如,每秒60帧)降低至第二帧速率r、r2(例如,每秒30帧)来降低媒体流s的比特率。尽管这里通过改变帧速率r来调整比特率,但是可以附加地或替代地以其它方式来调整比特率,例如改变构成媒体流s的帧的大小。换言之,在该示例中,当用户10参与通信会话时,编解码器管理器200决定它需要降低比特率以维持用户体验的质量。然而,编解码器管理器200可以采取其它管理手段,例如增加比特率。在一些实现方式中,编解码器管理器200在切换编解码器132的一次迭代之后在执行后续迭代之前等待阈值时间段。39.在图2a至图2d中,每个图对应于呼叫130的至少一个阶段。每个图标识呼叫130的阶段,该阶段在图中由编解码器管理器200上方的阶段标签上的阴影点表示。例如,图2a表示在呼叫建立阶段期间的编解码器管理器200的功能的示例。图2b表示在编解码器协商阶段期间的编解码器管理器200的功能的示例。图2c和图2d表示当端点正在实现协商的编解码器132时在呼叫130期间的协调器210的功能的示例。40.参见图2a至图2d,编解码器管理器200包括协调器210、分析器220和切换器230。协调器210被配置用以获得(例如,恳求或接收)和/或确定在呼叫130的通信会话中涉及的一个或多个用户设备110的配置信息134。例如,协调器210包括数据库212或存储呼叫130的端点的配置信息134的其它存储装置。协调器210可以将配置信息134存储为对应于特定用户设备110和由用户设备110支持的一个或多个编解码器132的数据对。如图2a所示,在一些配置中,协调器210在呼叫建立阶段期间接收配置信息134。在一些示例中,协调器210还获取和/或接收指示端点是否具有编解码器切换能力136的配置信息134或其缺少。在一些实现方式中,当协调器210接收没有端点具有编解码器切换能力136的指示的配置信息134时,协调器210确定该端点不具有编解码器切换能力136(例如,以避免未来的切换问题)。如图2a至图2d所示,协调器210可以在任何阶段接收端点(例如,用户设备110)的切换能力。例如,图2a描绘了协调器210接收在呼叫建立阶段期间的切换能力136以及其它呼叫建立信息,例如配置信息134;而在图2b中,协调器210接收在编解码器协商(例如,与一端点的编解码器132协商)期间的切换能力136。附加地或替代地,协调器210接收呼叫中的切换能力136。例如,分析器220确定通信会话正在经历问题并且可以启动编解码器管理器200(例如,通过协调器210)以获得或确定用于呼叫130中所涉及的端点的切换能力136。当这种情况在呼叫130期间发生时(例如,如图2c中所示),协调器210可以在为通信会话配置的通信带宽之外进行通信,或者通过某种其它方式进行协调以在流式传输媒体时识别切换能力136。41.一旦在呼叫建立阶段期间已经建立了参与呼叫130的端点,协调器210就被配置用以执行编解码器协商。在诸如图2a的一些示例中,协调器210在呼叫建立期间接收包括每个端点所支持的编解码器132的配置信息134。然而在其它示例中,协调器210可以在呼叫建立之后或者在呼叫建立期间和之后的一些混合时,请求和/或接收每个端点支持的编解码器132。编解码器管理器200可能会发现从同意建立通信会话的端点获得编解码器信息更有效,例如,尤其是当一个或多个端点可能拒绝建立通信会话时。参考图2b,一旦协调器210接收到端点的编解码器信息(例如,所支持的编解码器132),协调器210选择由将会管治呼叫130的参与的端点所支持的初始编解码器132、132i(即,该端点将会使用该编解码器在呼叫130期间对媒体数据进行编码和解码)。这里,在图2b中,初始编解码器132i的选择214对应于由每个端点110a-110n支持的第一编解码器132、132a。在初始编解码器132i的选择214之后,协调器210被配置用以将初始编解码器132i传送到编解码器管理器200的其它组件(例如,分析器220和/或切换器230)。42.对于初始编解码器132i,每个端点使用编解码器132以在传输媒体数据(例如,到远端端点)时用作编码器,并且在接收媒体数据(例如,从远端端点)时用作解码器。对于编解码器132,媒体流s的数据格式通常符合标准视频压缩规范,使得由远端端点部署的相同编解码器132具有相同或相似的编码/解码器能力。分析器220被配置用以监视编解码器132在呼叫130期间被使用时的性能。例如,分析器220被配置用以监视编解码器132的编码器部分和/或编解码器132的解码器部分的性能。虽然在本文中关于监视编解码器132的编码器部分来描述分析器220,但是分析器220的相同功能可以适用于编解码器132的解码器部分。43.在一些示例中,分析器220被配置用以确定编码器/解码器的性能是否满足编解码器切换阈值222。分析器220可以通过连续监视或在呼叫130期间以某个设定的间隔执行该确定。这里,编解码器切换阈值222指示编码器/解码器的性能证明在呼叫130期间(即,中流)正在传送媒体流s时从初始编解码器132i(例如,初始视频编解码器)切换是合理的。切换阈值222可以由编解码器管理器200或通信应用116的管理员或用户(例如,用户10)配置。切换阈值222可以在每个编解码器132级别上被配置或者作为更一般的性能度量被配置。当编解码器性能满足切换阈值222时,分析器220向编解码器管理器200(例如切换器230)生成建议224以将编解码器132从当前编解码器132(例如初始编解码器132i)更改为回退或辅助编解码器132s。当编解码器性能未能满足切换阈值222时,分析器220不形成推荐224(例如,允许当前编解码器132继续操作)。换言之,切换阈值222代表在呼叫130期间的不利条件。44.在一些示例中,分析器220仅在端点具有切换能力136(例如,如图2d中所示)时才运行其监视程序。替代地,分析器220可以执行监视程序并生成推荐224,而不管端点的切换能力136如何(例如,如图2c所示)。在这个替代方案中,编解码器管理器200的其它组件(例如切换器230)可以被配置用以在接收到推荐224时确定编解码器切换是否可行。45.在一些实现方式中,切换阈值222对应于最小值,使得当性能度量低于该最小值时,分析器220确定(例如,编码器或解码器的)编解码器性能不满足切换阈值222并生成建议224:编解码器管理器200从当前编解码器132(例如,初始编解码器132i)切换到回退或辅助编解码器132s。相反,切换阈值222可以被配置为最大值,使得当性能度量超过该最大值时,分析器220确定(例如,编码器或解码器的)编解码器性能不满足切换阈值222并且生成建议224:编解码器管理器200从当前编解码器132(例如,初始编解码器132i)切换到回退或辅助编解码器132s。例如,编解码器管理器200使用最大值来检测编解码器132可能被破坏并且通过通信信道向远端端点提供过多的比特率(或帧速率)。在一些配置中,分析器220可以包括多于一个切换阈值222。例如,分析器220包括一般最大值、一般最小值、编解码器特定最大值和/或编解码器特定最小值(例如,使得由分析器220强制多个阈值222)。为了说明,切换阈值222可以普遍被设定成最小比特率值(例如,小于100kb/s、80kb/s或50kb/s)或最小帧速率(例如,小于10fps或5fps)。附加地或替代地,分析器220可以具有用于第一编解码器132a的100kb/s的切换阈值222、用于第二编解码器132b的80kb/s的切换阈值222和/或用于第三编解码器132c的50kb/s的切换阈值222。46.一些编解码器132可以将切换阈值222设定成特定阈值(例如,最小或最大比特率或帧速率),因为可能已知特定编解码器132会在以或接近特定比特率(或帧速率)或比特率/帧速率范围(例如,50kb/s–150kb/s之间或5fps–10fps之间)编码或解码时出现问题。例如,诸如hevc之类的硬件编解码器132可能难以以低帧速率(或比特率)操作。在此,该困难可能导致编解码器132可能在以低帧速率下编码/解码上卡住并且随后在编解码器132理论上能够增加帧速率(或比特率)时无法恢复。为了说明,基于这个已知或确定的困难,hevc编解码器132可以与50kb/s或每秒5帧(fps)的切换阈值222相关联。47.在一些配置中,当分析器220执行对编解码器132的监视时,分析器220意识到(例如,自我意识到或通过来自另一实体的指示)特定编解码器132在某些比特率或帧速率下遇到问题。在此,分析器220或编解码器管理器200的一些其它组件可以记录这些问题并获知新的切换阈值222。在一些示例中,这些获知的阈值222可以由分析器220自动应用,或者分析器220可以获得许可来应用这些获知的阈值222。48.在一些示例中,分析器220被配置用以通过监视呼叫130的估计比特率和/或呼叫130的实际比特率来监视编解码器132的性能。例如,估计比特率可以是端点基于通信会话的属性(例如通信通道的带宽)预期的比特率。换言之,通信信道和端点(例如,源和/或目的地端点)的属性指示端点应该以特定比特率或接近特定比特率生成媒体流s。分析器220然后可以将该估计的比特率与端点正在产生的实际比特率进行比较。在一些配置中,切换阈值222是指示在实际比特率和估计比特率之间的差异的可接受容限的值。例如,分析器220将切换阈值222配置在100kb/s的值以指示:如果实际比特率和估计比特率之间的差大于该值,则分析器220生成切换编解码器132的建议224。在一些实现方式中,分析器220针对实际比特率和估计比特率之间的差异生成切换编解码器132的建议224。换言之,当实际比特率低于估计比特率时,分析器220生成切换编解码器132的建议224。这里,这可以指示编解码器132表现不佳。相反,当实际比特率大于估计比特率时,分析器220生成切换编解码器132的建议224,因为编解码器132似乎无法适应(例如,调整)通信会话的实际属性。49.当切换器230从分析器220接收到推荐224时,切换器230可以最初确定呼叫130中涉及的端点是否具有切换能力136。这里,切换器230可以参考在协调器210处的配置信息134或发起协调器210现在恳求端点以确定每个端点是否具有切换能力136。在一些示例中,到做出推荐224时,编解码器管理器200已经确定出呼叫130的端点具有切换兼容性136并自动切换编解码器132。当切换器230改变编解码器132时,切换器230识别与编解码器协商阶段类似的端点的共同支持的编解码器132。参考图2d,切换器230识别出除了当前或初始编解码器132a、132i之外,端点110a-110b还共同支持第二编解码器132b和第三编解码器132c。对于辅助编解码器132s有一个以上的选择,切换器230可以另外确定这些选项中的哪一个对于通信会话的当前条件(例如,比特率、帧速率、当前信道带宽等)更优,并选择最佳选择。在一些配置中,如果可能的话,切换器230被配置用以在切换232期间改变编解码器132的类型。例如,当初始编解码器132i是硬件编解码器132时,切换器230选择软件编解码器132作为辅助编解码器132s(也称为回退编解码器132),反之亦然。当比较图2c和图2d时,切换器230无法执行在图2c中的切换232,因为端点110、110n不具有切换能力136。在具有多个端点的诸如图2c的某些情况下,切换器230可以切换一些端点的编解码器132,但不切换其它端点的编解码器132,只要这些编解码器支持类似的标准化即可。50.图3提供了用于上下文相关的呼叫中视频编解码器切换的方法300的示例操作布置。在操作302处,方法300包括:在数据处理硬件112处接收远端端点110包括在呼叫130期间从初始视频编解码器134i切换到辅助视频编解码器132s的能力的指示136。接收到远端端点110包括从初始视频编解码器132i切换到辅助视频编解码器132s的能力的指示136可以发生在与远端端点110建立呼叫连接时和/或在与远端端点110的编解码器协商期间和/或在与远端端点110的呼叫130期间。在一些实现方式中,方法300还包括:通过数据处理硬件112在呼叫130期间恳求远端端点110以确定该远端端点110包括在呼叫130期间从初始视频编解码器132i切换到辅助视频编解码器132s的能力的指示136。51.在操作304处,方法300包括由数据处理硬件112确定编码器的性能满足编解码器切换阈值222,编解码器切换阈值222指示编码器的性能证明在呼叫130的中流(mid-stream)从初始视频编解码器134i的切换是合理的。在一些实现方式中,编解码器切换阈值222包括用于容许编码器性能的最小比特率。最小比特率可以对应于大约100kb/sec的速率。在一些实现方式中,方法300还包括在与远端端点110的呼叫130期间,通过将呼叫130的估计比特率与在编码器处的实际比特率相比较来由数据处理硬件112监视编码器的性能。在这些示例中,确定编码器的性能满足编解码器切换阈值222可以发生在当在编码器处的实际比特率低于在编码器处的估计比特率的时候和/或当在编码器处的实际比特率高于在编码器处的估计比特率的时候。在操作306处,方法300包括:由数据处理硬件112从最初协商以管治呼叫130的初始视频编解码器132i切换到辅助视频编解码器132s。在一些实现方式中,在确定编码器的性能满足编解码器切换阈值222时,自动发生从初始视频编解码器132i切换到辅助视频编解码器132s。在一些示例中,初始视频编解码器132i对应于硬件编码器,并且辅助视频编解码器132s对应于软件编码器,例如vp8软件编码器。在其它示例中,初始编解码器132i是hevc并且辅助编解码器132s是h.265。52.图4是可用于实现本文档中描述的系统和方法的示例计算设备400的示意图。计算设备400旨在表示各种形式的数字计算机,例如膝上型计算机、台式机、工作站、个人数字助理、服务器、刀片式服务器、大型机和其它适当的计算机。这里所示的组件、它们的连接和关系以及它们的功能意味着仅是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实现。53.计算设备400包括处理器410(例如,数据处理硬件)、存储器420(例如,存储器硬件)、存储设备430、连接到存储器420和高速扩展端口450的高速接口/控制器440以及连接到低速总线470和存储设备430的低速接口/控制器460。组件410、420、430、440、450和460中的每一个都使用各种总线互连,并且可以安装在普通主板上或以其它适当的方式安装。处理器410可以处理用于在计算设备400内执行的指令,包括存储在存储器420或存储设备430上的指令,以在外部输入/输出设备(诸如耦合到高速接口440的显示器480)上显示用于图形用户界面(gui)的图形信息。在其它实现方式中,可以酌情使用多个处理器和/或多条总线以及多个存储器和多种类型的存储器。此外,可以连接多个计算设备400,每个设备提供必要操作的部分(例如,作为服务器组、刀片服务器组或多处理器系统)。54.存储器420在计算设备400内非暂时性地存储信息。存储器420可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时存储器420可以是用于在临时或永久基础上存储程序(例如,指令序列)或数据(例如,程序状态信息)以由计算设备400使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(rom)/可编程只读存储器(prom)/可擦可编程只读存储器(eprom)/电可擦可编程只读存储器(eeprom)(例如,通常用于固件,例如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。55.存储设备430能够为计算设备400提供大容量存储。在一些实现方式中,存储设备430是计算机可读介质。在各种不同的实现方式中,存储设备430可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其它类似的固态存储器设备或设备阵列(包括在存储区域网络或其它配置中的设备)。在另外的实现方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含指令,该指令在执行时执行一种或多种方法,例如上述那些方法。信息载体是计算机或机器可读介质,例如存储器420、存储设备430或处理器410上的存储器。56.高速控制器440管理计算设备400的带宽密集型操作,而低速控制器460管理较低带宽密集型操作。这种职责分配只是示例性的。在一些实现方式中,高速控制器440耦合到存储器420、显示器480(例如,通过图形处理器或加速器),并且耦合到可以接受各种扩展卡(未示出)的高速扩展端口450。在一些实现方式中,低速控制器460耦合到存储设备430和低速扩展端口490。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口490可以例如通过网络适配器耦合到一个或多个输入/输出设备(例如键盘、定点设备、扫描仪)或联网设备(例如交换机或路由器)。57.如图所示,可以以多种不同的形式实现计算设备400。例如,它可以实现为标准服务器400a或在一组这样的服务器400a中多次实现,实现为膝上型计算机400b或实现为机架服务器系统400c的一部分。58.本文描述的系统和技术的各种实现方式可以实现在数字电子和/或光学电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或它们的组合中。这些不同的实现可以包括在一个或多个计算机程序中的实现,这些计算机程序在包括至少一个可编程处理器的可编程系统上是可执行和/或可解释的,该可编程处理器可以是专用或通用的,耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令且向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。59.这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或以汇编/机器语言实现。如本文所用,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(pld)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。60.本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,专用逻辑电路例如是fpga(现场可编程门阵列)或asic(专用集成电路)。适合于执行计算机程序的处理器包括例如通用和专用微处理器以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和一个或多个用于存储指令和数据的存储器设备。通常,计算机还将包括下述部分或可操作地耦合以从下述部分接收数据或向下述部分发送数据或两者:一个或多个用于存储数据的大容量存储设备(例如,磁盘、磁光盘或光盘)。然而,计算机不需要有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及,cdrom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或包含在专用逻辑电路中。61.为了提供与用户的交互,本公开的一个或多个方面可以实现在计算机上,该计算机具有:显示设备,例如,crt(阴极射线管)、lcd(液晶显示器)监视器或触摸屏,用于向用户显示信息;以及,可选的键盘和定点设备,例如鼠标或轨迹球,用户可以通过它们向计算机提供输入。也可以使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;且可以以任何形式(包括声音、语音或触觉输入)接收来自用户的输入。此外,计算机可以通过下述方式来与用户交互:向用户使用的设备发送文档和从其接收文档;例如,响应从网络浏览器接收到的请求,将网页发送到用户客户端设备上的网络浏览器。62.已经描述了许多实现。然而,应当理解,在不背离本公开的精神和范围的情况下可以进行各种修改。因此,其它实现在所附权利要求的范围内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部