CN116916028A - 使用虚拟分辨率调整的视频流缩放 - Google Patents
使用虚拟分辨率调整的视频流缩放 Download PDFInfo
- Publication number
- CN116916028A CN116916028A CN202310393186.0A CN202310393186A CN116916028A CN 116916028 A CN116916028 A CN 116916028A CN 202310393186 A CN202310393186 A CN 202310393186A CN 116916028 A CN116916028 A CN 116916028A
- Authority
- CN
- China
- Prior art keywords
- resolution
- video
- frames
- frame
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 70
- 238000012545 processing Methods 0.000 claims description 27
- 238000004088 simulation Methods 0.000 claims description 14
- 230000006835 compression Effects 0.000 claims description 9
- 238000007906 compression Methods 0.000 claims description 9
- 238000013135 deep learning Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000008447 perception Effects 0.000 claims description 6
- 230000003287 optical effect Effects 0.000 claims description 5
- 238000013473 artificial intelligence Methods 0.000 claims description 4
- 239000000945 filler Substances 0.000 abstract description 16
- 238000004891 communication Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 25
- 230000002829 reductive effect Effects 0.000 description 22
- 238000009877 rendering Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 239000002131 composite material Substances 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000000740 bleeding effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 208000003028 Stuttering Diseases 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234363—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
- H04N19/29—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving scalability at the object level, e.g. video object layer [VOL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440263—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the spatial resolution, e.g. for displaying on a connected PDA
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了使用虚拟分辨率调整的视频流缩放。在各种示例中,随着时间的推移,观察与视频流相关联的网络条件,以确定虚拟缩放系数,虚拟缩放系数可应用于视频流的一个或更多个帧的图像,以生成可附加填充区域的缩放图像,该填充区域保持视频和/或视频流的原始分辨率,以便接收设备可在解码过程中从接收的视频流中裁剪填充区域,而无需重新启动或包括附加的帧内编码帧。
Description
背景技术
提供云游戏服务是一项复杂的操作,需要大量复杂的计算基础设施,并涉及维持游戏和网络性能之间的平衡—理想情况下不影响用户体验。在云游戏中,视频输出(图形)是利用云中的服务器生成的,然后流式传输到游戏玩家的显示设备进行显示。通常,流媒体系统在服务器侧对玩游戏的视频数据进行编码,视频数据的解码和视频帧的渲染发生在客户端侧,以便在客户端设备上显示。传统上,为了减少或以其他方式控制流媒体系统的延迟和丢包,或减少流媒体服务器的资源使用(例如,用于编码和流式传输视频到客户端设备的计算资源量),流媒体系统可以降低或减少编码到流的帧的分辨率。
将流媒体视频的分辨率从1080p降低到720p,可以减少编码视频数据所需的比特率和传输视频数据所需的网络资源。一些传统的流媒体系统可以改变流媒体游戏的分辨率,以响应减少的网络带宽。然而,降低流媒体游戏的分辨率可能需要对流进行“重启”或“重置”以适应分辨率的变化。传统上,视频译码标准不支持基于先前不同分辨率的帧来预测视频数据的帧。因此,当流媒体游戏的分辨率被修改时,必须插入包含额外编码信息的新的帧内编码帧(例如,I-帧)。由于额外的编码信息,这些帧可能比预测的帧(例如,P-帧)大得多,而预测的帧可能依赖于早期帧的信息。这种额外的帧内编码帧的增加的大小可能会导致接收设备处的延迟和/或视觉停顿(stutter)的闪烁(spike)。此外,在流媒体视频中引入帧内编码帧可能导致接收设备的解码器重新启动视频解码过程--进一步影响延迟和视觉停顿。传统的技术已经试图限制帧内编码帧的大小。然而,限制这些帧的大小可能会由于量化损失和压缩伪影的增加而导致视觉质量下降。
发明内容
本公开的实施例涉及使用虚拟分辨率调整改善视频流系统的可扩展性。公开了系统和方法,该系统和方法基于观察到的网络条件和/或流媒体内容的特性来确定视频流的帧的图像的缩放分辨率,从而图像可以被缩放,用填充区域填充,并流式传输到接收设备而不需要改变视频帧的实际分辨率。
与传统的方法,例如上述的方法相比,所公开的方法可以在较大的帧分辨率内执行与视频流相关联的分辨率的“虚拟”缩放,例如来自游戏或其他应用程序。通过减少或增加源视频数据(如图像)的有效分辨率,同时填充和/或扩展缩放后的源视频数据,可以保持原始分辨率。因此,视频数据流的预测性编码可以被保留,而不需要插入额外的、通常较大的帧内编码帧。由于在减少或增加有效分辨率时不需要帧内编码帧,虚拟分辨率缩放可以在与网络条件和/或流媒体系统的需求相对应的大小和/或频率下执行。此外,由于流媒体视频数据的虚拟缩放可以在更小和/或更频繁的步骤中完成,现有的视频压缩算法(例如,运动估计等)可以正确响应虚拟分辨率的任何变化。因此,游戏内容可以流式传输到一个或更多个客户端设备,在减少编码比特率以考虑到网络条件和/或网络资源的变化的同时,使感知的质量降低最小或不降低。
附图说明
下面参考附图详细描述用于使用虚拟分辨率调整的视频流媒体缩放的本系统和方法,其中:
图1是根据本公开的至少一些实施例的流媒体系统的示例系统图;
图2是根据本公开的至少一些实施例的示出流编码和解码过程的流程图;
图3是根据本公开内容的至少一些实施例的帧填充的示例描述;
图4是根据本公开内容的至少一些实施例的用于流媒体系统中的帧缩放过程的示例的图;
图5是示出根据本公开的至少一些实施例的至少基于网络条件的用于流媒体系统中视频编码的方法的示例的流程图;
图6是示出根据本公开的至少一些实施例的至少基于虚拟帧缩放的用于流媒体系统中的视频编码的方法的示例的流程图;
图7是适合用于实现本公开内容的一些实施例的示例性内容流媒体系统的框图;
图8是适合用于实现本公开内容的一些实施例的示例性计算设备的框图;以及
图9是适合用于实现本公开的一些实施例的示例性数据中心的框图。
具体实施方式
公开了与使用虚拟分辨率调整的视频流媒体缩放有关的系统和方法。
与传统的方法,例如上述的方法相比,所公开的方法可以在较大的帧分辨率内执行与视频流相关的分辨率的“虚拟”缩放,例如来自游戏或其他应用程序的分辨率。通过减少或增加源视频数据的有效分辨率,同时填充和/或扩展缩放后的源视频数据,可以保持原始分辨率。因此,视频数据流的预测性编码可以保留,而不需要插入额外的、通常较大的帧内编码帧。由于在减少或增加有效分辨率时不需要帧内编码帧,虚拟分辨率缩放可以在与网络条件、视频数据流的复杂度和/或流媒体系统的需求相对应的大小和/或频率下进行。此外,由于流媒体视频数据的虚拟缩放可以在更小和/或更频繁的步骤中完成,现有的视频压缩算法(例如,运动估计等)可以正确响应虚拟分辨率的任何变化。因此,游戏和其他应用内容可以以最小感知质量降低或不降低感知质量的方式流式传输到一个或更多个客户端设备,同时降低编码比特率以考虑到网络条件和/或网络资源的变化。
在各种实例中,流式传输到客户端设备的视频数据的虚拟分辨率可以基于网络条件和/或流媒体视频的视频复杂度的变化而改变。例如,响应于编码所需或期望的比特率的降低,游戏或其他应用流媒体服务器可以降低流式传输的视频数据的虚拟分辨率。例如,虚拟分辨率可以至少基于比特率的减少而减少到目标分辨率,或者至少基于比特率的增加而增加到目标分辨率。在至少一个实施例中,流式传输到客户端设备的视频数据的虚拟分辨率可以基于视频数据流的视频复杂度的变化(例如,视频数据中包含的空间和/或时间信息的水平)来改变。例如,响应于流媒体视频内容复杂度的减少,内容的虚拟分辨率可以增加,以利用已使用的编码和解码资源。在一些实施例中,观察到的网络条件和视频内容的复杂度可用于确定是否减少或增加(例如恢复)流媒体视频数据的虚拟分辨率。在一些实施例中,对虚拟分辨率的改变可以在单一步骤中执行(例如,从1080p到720p),而在至少一个实施例中,虚拟分辨率可以在减少或增加分辨率的一个或更多个步骤中改变。例如,1080p的源分辨率可以在若干步骤中降低到720p,每个步骤将分辨率降低了任意像素的量和/或与1、4、8或16像素的倍数对齐(例如,对应于将用于编码帧的编码算法的块大小)的量。在至少一个示例中,虚拟分辨率可以通过一些步骤朝着源分辨率增加(例如恢复)(例如随着网络条件和/或视频复杂度的改善)。
在一些实施例中,为了将视频数据的源分辨率减小到帧中的虚拟分辨率,视频数据可以被填充和/或在帧中附加一个或更多个填充区域。在一个或更多个实施例中,一个或更多个填充区域可以被附加到流媒体视频数据中,以便降低的虚拟分辨率视频数据和一个或更多个填充区域的组合尺寸等于视频数据的原始源分辨率(例如,源视频分辨率和/或流媒体帧分辨率)和/或先前的帧分辨率。例如,1280x 720像素的降低分辨率的视频流可以用640个水平像素和360个垂直像素的填充区域来填充,等于1920x 1080像素的原始分辨率。在一些实施例中,视频数据的分辨率可以在单一维度上(如垂直地或水平地)增加或减少,而在至少一个实施例中,垂直维度和水平维度可以各自被缩放到相同或不同的比率。在一些实施例中,一个或更多个填充区域可以被应用,以便降低分辨率的视频数据(图像)与视频帧的任何特定部分对齐。例如,填充区域可以沿着降低了分辨率的图像的右侧和底部边缘应用,以便非填充的视频数据(图像)与视频帧的左上角对齐。在至少一个其他示例中,可以应用填充区域,使得视频数据与视频帧的中心或任何其他期望的点对齐(填充可以包括在虚拟帧的任何一侧或两侧)。
在一些实施例中,填充区域可以包括被设置为统一颜色或外观的像素。例如,填充区域可被定义为使填充区域的每个像素为黑色或其他统一的颜色。在一个或更多个实施例中,填充区域中的一个或更多个颜色相对于一个或更多个先前的帧可以是静态的,以提供填充区域中的低熵,导致高压缩和减小的编码帧大小。在一些实施例中,分配给一个或更多个填充区域中的一个或更多个像素的颜色可以至少基于源视频数据的一个或更多个像素来确定。例如,填充区域可以具有带颜色值的像素,这些颜色值被选择为与源视频(例如,缩小的源视频)的边缘像素相匹配(或以其他方式基于源视频(例如,缩小的源视频)的边缘像素)。在一些实施例中,保持视频内容的边缘像素的颜色值的填充区域可用于提高一个或更多个编码算法的性能,如运动估计和防止渗色。在至少一个实施例中,填充区域可以包括具有颜色值的像素,这些颜色值被确定为最小化或减少视频内容和填充区域之间的边界的清晰度(例如,为了更有效地进行视频解码、采样、编码和/或压缩)。例如,可以确定填充区中的像素的颜色值,以便当解码算法对与填充区边界相关的帧进行采样时,可以减少或消除由边界引起的模糊和/或渗色(例如,由于图像量化和色度二次采样等)。
在一些实施例中,一旦为降低或提高分辨率的视频数据流定义了一个或更多个填充区域,视频数据和填充区域可被编码为一帧。在一些示例中,编码器可以更新或配置流的比特流头,以指示可能已经附加到视频数据的一个或更多个填充区域的大小和/或位置。例如,除了指示在流式数据解码时应被裁剪或以其他方式丢弃的填充区域的裁剪/性能参数之外,还可以生成或更新比特流头的一个或更多个参数,以反映视频数据的更新的分辨率。在一些实施例中,一旦视频数据和填充区域的至少一部分被编码,一个或更多个编码的分组可以被传输到客户端设备进行解码。例如,接收的客户端设备可以基于比特流头中包含的参数或以其他方式与该帧相关联地提供的参数来解码传输的帧。在一些实施例中,基于与流媒体视频相关联的参数,客户端设备可以确定一个或更多个填充区域的定位和/或位置,并执行操作以从视频数据中移除或忽略一个或更多个填充区域。例如,客户端设备可以从解码的帧中裁剪填充区域,从而只保留缩小的分辨率视频数据。在一些实施例中,在填充区域被裁剪后,视频数据可被放大为输出分辨率,例如客户端设备的显示器的分辨率。
本文描述的系统和方法可用于各种目的,例如且不限于机器控制、机器运动、机器驾驶、合成数据生成、模型训练、感知、增强现实、虚拟现实、混合现实、机器人学、安全和监视、自主或半自主机器应用、深度学习、环境或物体模拟、数据中心处理、对话式AI、光传输模拟(例如,光线追踪、路径追踪等)、3D资产的协作内容创建、云计算和/或任何其他合适的应用。
所公开的实施例可包含在各种不同的系统中,例如汽车系统(例如,自主或半自主机器的控制系统、自主或半自主机器的感知系统)、使用机器人实现的系统、航空系统、医疗系统、划船系统、智能区域监视系统、用于执行深度学习操作的系统、用于执行模拟操作的系统、使用边缘设备实现的系统、包含一个或更多个虚拟机(VM)的系统、用于执行合成数据生成操作的系统、至少部分地在数据中心中实现的系统、用于执行对话式AI操作的系统、用于执行光传输模拟的系统、用于执行3D资产的协作内容创建的系统、至少部分地使用云计算资源实现的系统和/或其他类型的系统。
参考图1,图1是根据本公开内容的一些实施例的流媒体系统100(也称为“系统100”)的示例性系统图。应该理解的是,本文描述的这种和其他安排只是作为示例提出的。其他安排和元素(例如,机器、界面、功能、顺序、功能的分组等)可以用来补充或代替所示的那些,并且一些元素可以完全省略。此外,本文描述的许多元素是功能实体,可以作为离散的或分布式的组件,或与其他组件一起,以任何合适的组合和位置来实现。本文描述的由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。
系统100可以包括,除其他事项外,一个或更多个客户端设备102、一个或更多个服务器104和一个或更多个网络108。尽管在图1中说明了一个客户设备102,但这并不意味着是限制性的。在示例中,可以有任何数量的客户端设备102。系统100(以及其组件和/或特征)可以使用一个或更多个计算设备(例如图8的计算设备800)和一个或更多个数据中心(例如图9的数据中心900)来实现,下面将详细说明。
一个或更多个客户端设备102可以包括应用程序114、通信接口132A、一个或更多个输入设备112、解码器116、缩放器118和/或显示器110。虽然在图1中只说明了一个或更多个客户端设备102的几个组件和/或特征,但这并不意味着是限制性的。例如,一个或更多个客户端设备102可以包括额外的或替代的组件,例如下面关于图8的计算设备800所描述的那些。
一个或更多个服务器104可以包括,除其他事项外,客户端-游戏接口管理器124、游戏实例130(或“游戏130”)、条件监视器138、编码器122、填充引擎142、缩放引擎140和/或一个或更多个数据存储库134。虽然在图1中只说明了一个或更多个服务器104的几个组件和/或特征,但这并不意味着是限制性的。例如,一个或更多个服务器104可以包括额外的或替代性的组件,例如以下关于图8的计算设备800和/或图9的数据中心900所描述的组件。虽然可以使用术语“游戏”或相关术语来描述某些组件或特征,但在一个或更多个实施例中,这些组件或特征可以更一般地指可能对应于或可能不对应于游戏或玩游戏的应用程序或软件(例如,客户端-应用程序接口管理器、应用程序接口等)。
作为概述,服务器104的客户端-游戏接口管理器124可以包括客户端接口126和/或游戏接口128。客户端接口126和游戏接口128可以被配置为通过本文所述的任何数量的网络108管理通信。例如,客户-游戏接口管理器124可以使用客户接口126来与一个或更多个客户设备102的应用程序114通信,和/或使用游戏接口128来与一个或更多个服务器104的游戏实例130通信。
在一些示例中,游戏接口128可以被配置为从游戏实例130接收视频数据。在一些实例中,游戏接口128可以被配置为使用编码器122对来自游戏实例130的与玩游戏相关的视频数据进行编码。客户端接口126可以被配置为将编码的视频数据传输到客户端设备102。在一些示例中,一个或更多个客户端设备102可以使用通过路由器的以太网或Wi-Fi连接来访问互联网,以便通过客户端-游戏接口管理器124与一个或更多个服务器104通信。
条件监视器138可以包括一个或更多个组件和特征,用于确定或分析与流式传输到一个或更多个客户端设备102和/或一个或更多个服务器104的视频相关联的一个或更多个网络条件(例如,服务器负载和/或其他服务器参数)。例如,条件监视器138可以观察通过一个或更多个网络108流式传输到一个或更多个客户端设备102的视频的网络条件。条件监视器138可以接收和/或收集指示可用网络带宽的量、比特率要求、期望的比特率、服务器负载、服务器容量或与视频流相关的其他信息的网络条件信息。在一些实施例中,条件监测器138可以接收和/或收集与流式传输到一个或更多个客户端设备102的视频的复杂度相关的信息。例如,当流媒体视频的复杂度增加时,视频数据可以被缩小以适应流媒体内容的增加的复杂度,从而在接收的客户端设备102上保留视频质量。在一些实施例中,流媒体视频的复杂度可以被计算和/或表示为复杂度值。复杂度值可以指示编码和/或解码流媒体视频的复杂度的水平和/或幅度。在一些实施例中,条件监视器138可以观察一段时间内网络条件的变化,以确定是否响应于变化的网络条件而可能需要虚拟分辨率缩放操作。例如,条件监视器138可以确定,通过一个或更多个网络108的流式传输视频的可用带宽减少,并且鉴于不断变化的网络条件,降低比特率要求可能是必要的,以保持流质量。在这样的示例中,条件监视器138可以确定,视频数据可能需要根据确定的比特率要求和/或阈值进行缩放(例如,放大或缩小)。在一些实施例中,条件监控器138可以确定视频流的帧可以被缩放以满足与观察到的网络条件相应的比特率或其他网络要求的量和/或程度。例如,条件监视器138可以确定视频数据帧的目标缩放分辨率,并可以向缩放引擎140提供目标缩放分辨率。
缩放引擎140可以包括用于缩放视频数据的一个或更多个帧的一个或更多个组件和特征。缩放引擎140可以执行与放大和/或缩小视频帧相关联的操作。在一些实施例中,缩放引擎可以从条件监视器138接收目标缩放分辨率,并且可以缩放对应于游戏实例130的视频帧。在一些实施例中,缩放引擎140可以被配置为在增加或降低帧的分辨率的单一步骤中,将源分辨率的视频流的帧缩放到目标缩放分辨率。在至少一个其他实施例中,缩放引擎140可以被配置为在一系列步骤中将源分辨率的视频流的帧缩放到目标缩放分辨率,其中流的后续帧可以通过缩放步骤大小递增地缩放,直到匹配或以其他方式满足目标缩放分辨率(例如,每个步骤的相同大小或一个或更多个不同步骤的不同大小)。
填充引擎142可以包括一个或更多个组件和特征,用于为由缩放引擎140缩放的视频帧生成或插入填充。例如,基于由缩放引擎140应用于视频帧的缩放因子和/或量,填充引擎142可以生成可附加到视频帧的填充区域,使得附加的帧的有效分辨率是所需的流媒体分辨率。在一些实施例中,填充引擎142可以被配置为将填充区域附加到缩放后的视频帧,使得缩放后的视频帧相对于组合的缩放后的视频帧和填充区域的特定位置(例如,左上角、中心等)定位。
在一些实施例中,填充引擎142可以分析缩放后的视频帧的一个或更多个像素以确定与生成的填充区域相关联的一个或更多个属性。例如,至少基于分析视频帧的像素,填充引擎142可以确定与填充区域的一个或更多个像素相关联的颜色值。例如,缩放后的视频帧的边缘像素的颜色或像素值可用于确定包含在填充区域中的像素的相应像素值。在至少一个实施例中,由填充引擎142生成的填充区域的像素可以被分配一个统一的像素值(例如,颜色值或着色方案)。例如,生成的填充区域的像素可以被配置为具有对应于黑色或任何其他合适的颜色的像素值。
在一些实施例中,填充引擎142可以确定与生成的填充区域相关联的尺寸和/或位置属性。例如,填充引擎142可以确定与相应的缩放后视频帧相关的填充区域的坐标,以包含在比特流头中。在至少一个示例中,填充引擎142可以确定生成的填充区域的尺寸。
编码器122可以包括一个或更多个组件和特征,用于编码用于流式传输到一个或更多个客户端设备102的视频数据。编码可以根据若干编码参数中的任何一个执行。编码参数中的一个或更多个可以定义视频数据可被编码的分辨率。在一些实施例中,编码器122可以编码视频数据,其中包括由缩放引擎140生成的视频流的缩放帧和由填充引擎142生成的填充区域。在一些实施例中,编码器122可以使用任何合适的方法生成流属性(例如,虚拟分辨率信息,如尺寸和/或位置信息)和/或将流属性(例如,虚拟分辨率信息,如尺寸和/或位置信息)嵌入到编码的视频流中。例如,编码器可以生成比特流头以包括在编码的视频流中。在一些实施例中,包括在编码的视频流中的属性可以包括指示包括在传输到一个或更多个客户端设备102的解码器116的编码视频流中的填充区域的位置和/或尺寸的信息。
在至少一个实施例中,服务器104可以至少基于流式传输到一个或更多个客户端设备102的内容的类型或内容的特征来选择编码参数。服务器104可以使用比特率表,或针对流式传输的每个流派和/或类型的游戏或内容的其他要求或建议。例如,一个或更多个数据存储库134可以存储一个或更多个配置,这些配置定义的表格可以指示最大和/或最小流媒体比特率和/或用于流式传输内容以便在一个或更多个客户端设备102上产生给定质量的内容的其他参数。一个或更多个数据存储库134可以存储对配置中的一个或更多个编码参数的更新。
解码器116可以包括用于解码流式传输到一个或更多个客户端设备102的视频数据的一个或更多个组件和特征。解码器116可以被配置为确定所接收的视频数据帧是否包括一个或更多个填充区域。例如,解码器116可以分析与所接收的视频数据帧相关的比特流头信息和/或其他数据以确定填充区域的位置和/或尺寸。基于确定填充区域的位置和/或尺寸,解码器116可以通过忽略帧中与填充区域相对应的区域和/或从所接收的视频数据帧的其他部分中裁剪填充区域来处理所接收的帧。在一些实施例中,一旦视频流被解码器116处理,缩放器118可以将视频流放大和/或缩小到特定的分辨率。例如,缩放器118可以将视频流的帧放大以匹配显示器110的显示分辨率。
系统100的组件可以通过一个或更多个网络108进行通信。一个或更多个网络108可以包括广域网(WAN)(例如,因特网、公共交换电话网络(PSTN)等)、局域网(LAN)(例如。Wi-Fi、ZigBee、Z-Wave、蓝牙、蓝牙低功耗(BLE)、以太网等)、低功耗广域网(LPWAN)(例如LoRaWAN、Sigfox等)、全球导航卫星系统(GNSS)网络(例如全球定位系统(GPS))和/或其他网络类型。在任何示例中,系统100的每个组件可以通过一个或更多个网络108与其他组件中的一个或更多个进行通信。
一个或更多个客户端设备102可以包括智能手机、笔记本电脑、平板电脑、台式电脑、可穿戴设备、游戏机、虚拟现实系统(例如。耳机、计算机、游戏机、一个或更多个遥控器、一个或更多个控制器和/或其他组件)、NVIDIA SHIELD、可包括智能个人助理的智能家居设备(例如,AMAZON ECHO、GOOGLE HOME等)和/或能够支持视频和/或音频流式传输的另一种类型的设备。
应用程序114可以是移动应用程序、计算机应用程序、控制台应用程序、网络浏览器应用程序、视频流媒体应用程序和/或其他类型的应用程序或服务。在一些实施例中,可以采用多个应用程序114。在一个或更多个实施例中,应用程序114可以包括指令,当由一个或更多个处理器执行指令时,使处理器无限制地接收表示用户输入到一个或更多个输入设备112的输入数据,将输入数据传输到一个或更多个服务器104,作为响应使用通信接口132A从客户端-游戏接口管理器124接收视频流,并导致在显示器110上显示视频。换句话说,应用程序114可以操作为实现玩游戏视频或与一个或更多个客户端设备102上的应用程序114相关的其他内容流媒式传输的促进者。
在一个或更多个实施例中,一个或更多个客户端设备102可以使用应用程序114来在显示器110上显示游戏视频或其他视频内容。在显示数据由一个或更多个客户端设备102接收的示例中,系统100可以是游戏流媒体系统的一部分,例如图7的内容流媒体系统700,在下文中更详细地描述。
显示器110可以包括能够显示视频的任何类型的显示器(例如,发光二极管显示器(LED)、有机LED显示器(OLED)、液晶显示器(LCD)、有源矩阵OLED显示器(AMOLED)、量子点显示器(QDD)、等离子显示器、虚拟显示器、LED/LCD显示器和/或其他类型的显示器)。在一些示例中,显示器110可以包括一个以上的显示器(例如,用于电脑游戏的双显示器,用于配置游戏的第一显示器和用于玩游戏的虚拟现实显示器,等等)。在一些示例中,显示器110是触摸屏显示器,例如智能手机、平板电脑、笔记本电脑等的触摸屏,其中触摸屏包括一个或更多个客户端设备102的一个或更多个输入设备112中的至少一个。
一个或更多个输入设备112可以包括能够向游戏130提供用户输入的任何类型的设备。一个或更多个输入设备可以包括键盘、鼠标、触摸屏显示器、一个或更多个控制器、一个或更多个遥控器、耳机(例如,虚拟现实耳机的传感器)和/或其他类型的输入设备。
诸如通信接口132A和通信接口132B(在此统称或单独称为“通信接口132”)的通信接口可以包括用于跨一个或更多个网络(例如一个或更多个网络108)通信的一个或更多个组件和特征。一个或更多个通信接口132可以被配置为通过本文所述的任何数量的网络108进行通信。例如,为了在图1的系统100中进行通信,一个或更多个客户端设备102可以使用以太网或Wi-Fi连接,通过路由器访问互联网,以便与一个或更多个服务器104和/或与一个或更多个其他客户端设备102进行通信。在至少一个实施例中,游戏接口128和/或客户端接口126可以充当通信接口132之间的中介。
现在参考图2,图2是示出根据本公开的至少一些实施例的流编码和解码过程200的流程图。流编码和解码过程200可以使用图1的系统100实现。例如,系统100中的编码器122和解码器116可以在过程200中用于流式传输和显示视频数据。流编码和解码过程200可以与游戏视频202(例如,源视频)相关联,该视频可以由图1的游戏实例130生成。游戏视频202可包括表示与游戏130的游戏视频相关联的帧的视频数据。游戏视频202可以使用源分辨率204表示。源分辨率204可以是用于由游戏实例130生成的视频数据的本地、默认和/或配置的视频分辨率。例如,服务器104上的特定游戏实例的源分辨率可以是视频的每一帧的1920×1080像素的分辨率。
源分辨率204的游戏视频202可以被缩放到更高或更低的分辨率(例如,根据一个或更多个编码参数使用缩放引擎140和编码器122)。缩放的视频206可以用放大或缩小的分辨率208表示。与源分辨率204相比,缩放的分辨率208可以增加或减少编码游戏视频202所需的大小和比特率。例如,缩放的分辨率208可以将1920x 1080像素的源分辨率204减少到1280x 720像素的分辨率。
过程200可以使用填充操作,例如使用填充引擎142,生成填充的视频210。例如,缩放的视频206可以用像素的填充区域来填充,像素的填充区域与缩放的视频206一起可以具有特定尺寸的分辨率。例如,缩放的视频206可附加有填充区域,以生成填充的视频210,使填充的视频210具有与游戏视频202的源分辨率204或任何其他所需分辨率相匹配的分辨率大小。例如,填充区域可以被附加到具有1280×720像素的缩放分辨率208的缩放视频206,使得产生的填充视频210可以具有与1920×1080像素的游戏视频202的源分辨率204匹配的填充分辨率212。
该过程200可以使用编码器,例如编码器122,来生成编码视频214。例如,填充的视频210可以被编码以与流媒体格式、目的地、编解码器和/或用于流式传输视频数据的任何其他参数兼容。编码的视频214可以用诸如比特流头信息和/或指示与填充视频210的填充区域相关联的特征的元数据之类的信息进行编码。例如,编码器122可以在编码的视频214中包括比特流头信息,该信息可以指示与被编码的填充视频210相关联的填充区域的大小、位置、定位和/或内容。编码的视频214可以作为流媒体视频216(例如,使用客户端接口126)被流式传输。例如,一个或更多个服务器104可以将流媒体视频216传输到一个或更多个客户端设备102。一旦一个或更多个客户端设备102接收到流媒体视频216,它们可以生成解码的视频218(例如,使用解码器116)。
在一些实施例中,解码的视频218可以具有解码的分辨率220。例如,解码视频的解码分辨率220可以匹配由一个或更多个服务器104生成的填充视频210的填充分辨率212。在一些实施例中,填充视频210的填充区域可以存在于由一个或更多个客户端设备102生成的解码视频218中。解码视频218中的填充区域可以从解码视频218的其他部分裁剪,以产生具有裁剪的分辨率224的裁剪视频222。例如,解码器116可以识别所接收的视频中的填充区域,使用嵌入式比特流头信息和/或其他操作(例如,图像分析、神经网络等)以确定可被裁剪的解码视频218的填充区域。在至少一个示例中,裁剪的视频222的裁剪分辨率224可以与缩放的视频206的缩放分辨率208相同。
在一些实施例中,一旦填充区域已经被裁剪或以其他方式移除以产生裁剪的视频222,则裁剪的视频可以被缩放以产生放大的视频226。在一些实施例中,放大的视频226可以用放大的分辨率228表示。放大的分辨率228可以是大于缩放的分辨率208的分辨率。在一些实施例中,放大的分辨率228可以是大于或等于源分辨率204的分辨率。例如,3840×2160像素的放大的分辨率可以大于由一个或更多个服务器104生成的1920×1080像素的源分辨率。在一个或更多个实施例中,可以基于与一个或更多个客户设备102的显示器110相关联的显示分辨率来确定放大的分辨率。
现在参考图3,图3是根据本公开的至少一些实施例的帧填充的示例描述。帧填充可包括在填充的帧中,例如填充的帧310A和310B。填充的帧,如填充的帧310A和310B,可包括视频帧(例如,虚拟视频帧),如视频帧320A和320B,以及填充区域,如填充区域330A和330B。在一些实施例中,填充区域可被附加到视频帧,从而使视频帧和填充区域的大小等于视频数据的原始源分辨率(例如,源游戏分辨率)和/或任何其他所需的分辨率。在一些实施例中,填充区域可以被应用,使降低分辨率的视频数据与视频帧的任何特定部分对齐。例如,填充区域330A和330B的位置使视频帧320A和320B被定位在填充的帧310A和310B的左上象限。
在一些实施例中,填充区域可以包括被设置为统一颜色或外观的像素。例如,填充区域330A可以被生成,使得填充区域330A的每个像素的颜色是黑色的。在一些实施例中,分配给填充区域的像素的颜色可以至少基于流媒体视频数据的一个或更多个像素来确定。例如,填充区域330B描绘了具有颜色值的像素,该颜色值被选择为与视频帧320B的像素(例如,边缘像素)相匹配(或以其他方式基于视频帧320B的像素(例如,边缘像素))。在一些实施例中,填充区域330A和330B中的像素的颜色值可被确定以增强一种或更多种编码算法的性能,例如运动估计、防止颜色渗出、压缩和/或其他预测算法。
现在参考图4,图4是根据本公开的至少一些实施例的用于流媒体系统中的帧缩放过程400的示例图。在步骤402,该过程400可包括确定目标分辨率。例如,基于由条件监视器138观察到的网络条件,缩放引擎140可以确定满足流媒体系统的比特率或其他要求的目标分辨率。在一些示例中,视频流的后续帧的分辨率可被降低以在若干迭代中到达确定的目标分辨率,该迭代中每次降低分辨率的量与4、8或16像素的倍数对齐。
在步骤404,过程400可以包括接收视频流中的新的视频帧。在步骤406,过程400可以包括根据迭代(例如,步长)缩放帧的图像。例如,当接收到视频数据的新帧时,如在步骤404,新帧的图像可以通过按步长增加或减少图像的分辨率而被缩放到不同的分辨率,该步长可以表示为帧的垂直和/或水平尺寸中的像素数。例如,图像可以通过128像素的步长,或任何其他大小的步长被降级。在一些示例中,可以为帧的垂直和水平维度确定不同的步长。在这种示例中,与垂直维度对应的步长可以独立于与帧的水平维度对应的步长来确定。
在步骤408,过程400可以包括用填充区域填充在步骤406缩放的图像。填充区域的大小可以基于图像在步骤406处被放大或缩小的像素量来确定,从而填充区域和被放大的图像的总(例如,复合)大小等于期望的分辨率(例如,游戏实例的源分辨率)。例如,随着图像被缩小的像素量的增加,填充区域的大小(例如,像素数)增加,这样帧的所需分辨率被保持,而编码复合帧的数据所需的计算量被减少,这是由于在填充区域中压缩重复数据的优化。在过程400的步骤410,一旦复合帧已经被编码,复合帧可以被流式传输,例如,到图1的一个或更多个客户设备102。
在步骤412处,该过程400可以包括确定缩放的图像帧是否符合目标分辨率(例如,基于网络条件和/或比特率目标缩放图像的分辨率)。在示例中,其中缩放的图像帧满足目标分辨率,随后的视频数据帧可继续以当前缩放分辨率缩放各自的相应图像,直到确定或选择新的(例如,不同的)目标分辨率。在示例中,在当前缩放的图像不满足目标分辨率的情况下,在步骤414处,过程400可包括更新新接收到的视频帧被缩放的步长。例如,如果先前的视频帧具有分辨率为1360×860的图像,而目标缩放分辨率为1280×720,则可更新缩放步长,从而使随后的视频帧的图像被缩放到更新的分辨率为1296×824(例如,在水平维度上将先前的分辨率减少64像素,在垂直维度上将先前的分辨率减少36像素;64和36是4、8或16像素的倍数)。通过更新接收到的视频帧的图像被缩放的步长,与视频流的帧相对应的图像可以通过一些增量的步长被缩放到目标分辨率。
现在参考图5,本文描述的方法500的每个块包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。该方法也可以体现为存储在计算机存储介质上的计算机可使用指令。该方法可以由独立的应用程序、服务或托管服务(独立的或与另一托管服务相结合)、或另一产品的插件提供,仅举几例。此外,作为示例,方法500是针对图1的系统100描述的。然而,该方法可以额外地或交替地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的系统。
图5是示出根据本公开的一些实施例的至少基于网络条件的流媒体系统中的视频编码的方法的示例的流程图。在块B502处,方法500包括至少基于指示与视频流相关的一个或更多个网络条件的数据,将视频流的一个或更多个帧的图像从第一分辨率缩放到第二分辨率。例如,基于由条件监视器138观察到的网络条件,缩放引擎140可以缩放与游戏实例130相对应的一个或更多个帧的图像。
在块B504处,方法500包括将与视频流的帧相对应的图像编码为第二分辨率,并且将图像填充或以其他方式扩展到帧的帧大小。例如,编码器122可以编码已经由缩放引擎140缩放并由填充引擎142填充了填充区域的视频数据的一个或更多个图像。
在块B506处,方法500包括使用一个或更多个分组通过网络传输编码的帧。例如,一个和更多个服务器104可以使用编码器122和视频数据的填充的帧来将流媒体视频数据生成为多个数据分组。
现在参考图6,本文描述的方法600的每个块包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。该方法也可以体现为存储在计算机存储介质上的计算机可使用指令。该方法可以由独立的应用程序、服务或托管服务(独立的或与另一托管服务相结合)、或另一产品的插件提供,仅举几例。此外,作为示例,方法600是针对图1的系统描述的。然而,该方法可以另外或替代性地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的系统。
图6是示出根据本公开的一些实施例的用于流媒体系统中至少基于虚拟帧缩放的视频编码的方法的示例的流程图。在块B602处,方法600包括至少基于指示与该视频的视频流相关的一个或更多个网络条件的数据来确定视频的一个或更多个帧的第一分辨率。例如,条件监视器138可以观察网络108的条件并确定由缩放引擎140用于缩放与游戏实例130相关联的视频数据的分辨率。
在块B604处,方法600包括至少基于该确定而生成具有第一分辨率的图像的视频的一个或更多个帧。例如,缩放引擎140可以将与游戏实例130相关联的图像或其他视频数据缩放到基于由条件监视器138观察到的网络条件确定的分辨率。
在块B606处,方法600包括将帧编码到视频流,该帧包括在第一分辨率下的缩放的图像以及将缩放的图像扩展到第二分辨率的一个或更多个填充区域的合成。然后,通过例如使用编码器122来编码由缩放引擎140生成的缩放的视频帧和由填充引擎142生成的填充区域,将合成图像编码为帧。
在块B608处,方法600包括使用编码的帧生成视频流的一个或更多个分组。例如,编码器122可以生成用于一个或更多个编码的视频数据流的数据,该数据流可以被流式传输到一个或更多个客户端设备102。
示例内容流式传输系统
现在参见图7,图7是根据本公开的一些实施例的用于内容流式传输系统700的示例系统图。图7包括一个或更多个应用服务器702(其可以包括与图8的示例计算设备800类似的组件、特征和/或功能)、一个或更多个客户端设备704(其可以包括与图8的示例计算设备800类似的组件、特征和/或功能)以及一个或更多个网络706(其可以类似于本文所描述的一个或更多个网络)。在本公开的一些实施例中,可以实现系统700。应用会话可以对应于游戏流式传输应用(例如,NVIDIA GeFORCE NOW)、远程桌面应用、模拟应用(例如,自主或半自主车辆模拟)、计算机辅助设计(CAD)应用、虚拟现实(VR)和/或增强现实(AR)流式传输应用、深度学习应用和/或其他应用类型。
在系统700中,对于应用会话,一个或更多个客户端设备704可以响应于到一个或更多个输入设备的输入而仅接收输入数据,将输入数据传输到一个或更多个应用服务器702,从一个或更多个应用服务器702接收经编码的显示数据,并且在显示器724上显示显示数据。因此,计算上更密集的计算和处理被卸载到一个或更多个应用服务器702(例如,由一个或更多个游戏服务器702的一个或更多个GPU执行用于应用会话的图形输出的渲染——特别是光线或路径跟踪)。换言之,应用会话从一个或更多个应用服务器702被流式传输到一个或更多个客户端设备704,由此降低一个或更多个客户端设备704对图形处理和渲染的要求。
例如,关于应用会话的实例化,客户端设备704可以基于从一个或更多个应用服务器702接收显示数据而在显示器724上显示应用会话的帧。客户端设备704可以接收到一个或更多个输入设备中的一个的输入并且作为响应而生成输入数据。客户端设备704可经由通信接口720且经由网络706(例如,互联网)将输入数据发送到应用服务器702,且应用服务器702可经由通信接口718接收输入数据。CPU可以接收输入数据,处理输入数据,并且向GPU传输数据,该数据使GPU生成应用会话的渲染。例如,输入数据可以表示用户在游戏应用的游戏会话中的角色的移动、发射武器、重新装载、传球、使车辆转向等。渲染组件712可以渲染应用会话(例如,表示输入数据的结果),并且渲染捕获组件714可以捕获应用会话的渲染作为显示数据(例如,作为捕获应用会话的渲染帧的图像数据)。应用会话的渲染可以包括使用(一个或更多个)应用服务器702的一个或更多个并行处理单元(诸如GPU)计算的光线或路径追踪的照明和/或阴影效果,所述一个或更多个并行处理单元可以进一步使用一个或更多个专用硬件加速器或处理核来执行光线或路径追踪技术。在一些实施例中,一个或更多个虚拟机(VM)——例如,包括一个或更多个虚拟组件,如vGPU、vCPU等——可由应用服务器702用于支持应用会话。编码器716可接着对显示数据进行编码以产生经编码的显示数据,且经编码的显示数据可经由通信接口718通过网络706发送到客户端设备704。客户端设备704可经由通信接口720接收经编码的显示数据,且解码器722可对经编码的显示数据进行解码以产生显示数据。客户端设备704可随后经由显示器724显示显示数据。
本文描述的系统和方法可用于各种目的,例如且不限于机器控制、机器运动、机器驾驶、合成数据生成、模型训练、感知、增强现实、虚拟现实、混合现实、机器人学、安全和监视、自主或半自主机器应用、深度学习、环境或物体模拟、数据中心处理、对话式AI、光传输模拟(例如,光线追踪、路径追踪等)、3D资产的协作内容创建、云计算和/或任何其他合适的应用。
所公开的实施例可包含在各种不同的系统中,例如汽车系统(例如,自主或半自主机器的控制系统、自主或半自主机器的感知系统)、使用机器人实现的系统、航空系统、医疗系统、划船系统、智能区域监视系统、执行深度学习操作的系统、执行模拟操作的系统、使用边缘设备实现的系统、包含一个或更多个虚拟机(VM)的系统、用于执行合成数据生成操作的系统、至少部分地在数据中心中实现的系统、用于执行对话式AI操作的系统、用于执行光传输模拟的系统、用于执行3D资产的协作内容创建的系统、至少部分地使用云计算资源实现的系统和/或其他类型的系统。
示例计算设备
图8是适合用于实现本公开的一些实施例的示例计算设备800的框图。计算设备800可包括直接或间接耦合以下设备的互连系统802:存储器804、一个或更多个中央处理单元(CPU)806、一个或更多个图形处理单元(GPU)808、通信接口810、输入/输出(I/O)端口812、输入/输出组件814、电源816、一个或更多个呈现组件818(例如,一个或更多个显示器)、以及一个或更多个逻辑单元820。在至少一个实施例中,一个或更多个计算设备800可以包括一个或更多个虚拟机(VM),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,GPU 808中的一个或更多个可以包括一个或更多个vGPU,CPU 806中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元820中的一个或更多个可以包括一个或更多个虚拟逻辑单元。照此,一个或更多个计算设备800可以包括分立组件(例如,专用于计算设备800的全GPU)、虚拟组件(例如,专用于计算设备800的GPU的一部分)或其组合。
尽管图8的各个框被示出为经由互连系统802与线路连接,但这并不旨在是限制性的,并且仅仅是为了清楚起见。例如,在一些实施例中,呈现组件818(诸如显示设备)可被认为是I/O组件814(例如,如果显示器是触摸屏)。作为另一示例,CPU 806和/或GPU 808可以包括存储器(例如,除了GPU 808的存储器、CPU 806和/或其他组件之外,存储器804可以表示存储设备)。换言之,图8的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型的类别之间不进行区分,因为全部都被设想在图8的计算设备的范围内。
互连系统802可以表示一个或更多个链路或总线,如地址总线、数据总线、控制总线或其组合。互连系统802可包括一种或更多种总线或链路类型,诸如工业标准体系结构(ISA)总线、扩展工业标准体系结构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、快速外围组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,在部件之间存在直接连接。例如,CPU 806可直接连接至存储器804。进一步,CPU 806可以直接连接到GPU 808。在组件之间存在直接连接或点对点连接的情况下,互连系统802可包括PCIe链路以执行该连接。在这些示例中,计算设备800中不需要包括PCI总线。
存储器804可以包括多种计算机可读介质中的任一种。计算机可读介质可以是可由计算设备800访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质可包括以用于存储如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质。例如,存储器804可存储计算机可读指令(例如,其代表程序和/或程序元件,诸如操作系统)。计算机存储介质可包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或可用于存储所需信息并可由计算设备800访问的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可以将计算机可读指令、数据结构、程序模块和/或其他数据类型具体化在被调制的数据信号(如载波或其他传输机制)中,并且包括任何信息传递介质。术语“被调制的数据信号”可以指以对信号中的信息进行编码的方式设定或改变其特征中的一个或更多个的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)以及无线介质(诸如声学、RF、红外和其他无线介质)。上述任何内容的组合也应被包括在计算机可读介质的范围内。
CPU 806可以被配置成用于执行计算机可读指令中的至少一些来控制计算设备800的一个或更多个部件来执行在此描述的方法和/或过程中的一个或更多个。CPU 806每个可包括能够同时处理多个软件线程的一个或更多个核(例如,1、2、4、8、28、72等)。CPU806可以包括任何类型的处理器,并且可以取决于所实现的计算设备800的类型包括不同类型的处理器(例如,具有用于移动设备的较少核的处理器和具有用于服务器的较多核的处理器)。例如,取决于计算设备800的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器的补充协处理器之外,计算设备800还可以包括一个或更多个CPU 806。
除了或替代CPU 806,一个或更多个GPU 808可以被配置成用于执行计算机可读指令中的至少一些以控制计算设备800的一个或更多个组件来执行在此描述的方法和/或过程中的一个或更多个。GPU 808中的一个或更多个可为集成GPU(例如,具有CPU 806中的一个或更多个)和/或GPU 808中的一个或更多个可为离散GPU。在实施例中,一个或更多个GPU808中的一个或更多个可以是一个或更多个CPU 806中的一个或更多个的协处理器。GPU808可由计算设备800使用以渲染图形(例如,3D图形)或执行通用计算。例如,GPU 808可以用于GPU上的通用计算(GPGPU)。GPU 808可以包括能够同时处理成百上千个软件线程的成百上千个核。GPU808可响应于渲染命令(例如,经由主机接口接收的来自CPU 806的渲染命令)产生用于输出图像的像素数据。GPU 808可包含图形存储器,例如显示存储器,用于存储像素数据或任何其他合适的数据,例如GPGPU数据。显示存储器可被包括作为存储器804的一部分。GPU 808可以包括并行操作(例如,经由链路)的两个或更多个GPU。该链路可以直接连接GPU(例如,使用NVLINK)或者可以通过交换机连接GPU(例如,使用NVSwitch)。当组合在一起时,每一GPU 808可针对输出的不同部分或针对不同输出(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)产生像素数据或GPGPU数据。每个GPU可以包括其自身的存储器,或者可以与其他GPU共享存储器。
除了或替代CPU 806和/或GPU 808,一个或更多个逻辑单元820可以被配置成用于执行计算机可读指令中的至少一些来控制计算设备800的一个或更多个部件以执行在此描述的方法和/或过程中的一个或更多个。在实施例中,一个或更多个CPU 806、一个或更多个GPU 808和/或一个或更多个逻辑单元820可以分立地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元820中的一个或更多个可以是CPU 806和/或GPU 808中的一个或更多个的一部分和/或集成在其中,和/或逻辑单元820中的一个或更多个可以是分立组件或者以其他方式在CPU 806和/或GPU 808的外部。在实施例中,逻辑单元820中的一个或更多个逻辑单元可以是一个或更多个CPU 806中的一个或更多个CPU和/或一个或更多个GPU 808中的一个或更多个GPU的协处理器。
逻辑单元820的示例包括一个或更多个处理核和/或其组件,如数据处理单元(DPU)、张量核心(TC)、张量处理单元(TPU)、像素视觉核(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连快速(PCIe)元件等。
通信接口810可以包括一个或更多个接收器、发射器和/或收发器,其使计算设备800能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备进行通信。通信接口810可以包括使得能够通过多个不同网络(例如,无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带宽通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网)中的任何网络进行通信的组件和功能。在一个或更多个实施例中,逻辑单元820和/或通信接口810可包括一个或更多个数据处理单元(DPU),以将通过网络和/或通过互连系统802接收的数据直接传输到一个或更多个GPU 808(例如,一个或更多个GPU 808的存储器)。
I/O端口812可以使得计算设备800能够逻辑耦合至包括I/O组件814、呈现组件818和/或其他组件的其他设备,这些组件中的一些组件可以内置于(例如,集成在)计算设备800中。说明性I/O组件814包括麦克风、鼠标、键盘、操纵杆、游戏手柄、游戏控制器、圆盘式卫星天线、扫描仪、打印机、无线设备等。I/O组件814可提供自然用户界面(NUI),该自然用户界面处理空中姿态、语音或由用户生成的其他生理输入。在一些实例中,输入可被传送至适当的网络元件以供进一步处理。NUI可实现语音辨识、触笔辨识、面部辨识、生物测定辨识、屏幕上和屏幕附近的姿态辨识、空中姿态、头部和眼睛跟踪、以及与计算设备800的显示器相关联的触摸辨识(如下面更详细描述的)的任何组合。计算设备800可包含深度相机,例如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术和这些的组合,以用于姿态检测和辨识。另外,计算设备800可以包括使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,计算设备800可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
电源816可以包括硬连线电源、电池电源或其组合。电源816可以向计算设备800提供电力以使得计算设备800的组件能够操作。
一个或更多个呈现组件818可以包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示类型或其组合)、扬声器和/或其他呈现组件。呈现组件818可从其他组件(例如,GPU 808、CPU 806、DPU等)接收数据,且输出数据(例如,作为图像、视频、声音等)。
示例数据中心
图9示出了可以在本公开的至少一个实施例中使用的示例数据中心900。数据中心900可包括数据中心基础设施层910、框架层920、软件层930和/或应用层940。
如图9所示,数据中心基础设施层910可以包括资源协调器912、分组的计算资源914和节点计算资源(“节点C.R.)916(1)-916(N),其中“N”表示任何整数、正整数。在至少一个实施例中,节点C.R.916(1)-916(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括DPU、加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等)、存储器设备(例如,动态只读存储器)、存储设备(例如,固态或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网络交换机、虚拟机(“VM”)、功率模块和/或冷却模块等。在一些实施例中,节点C.R.916(1)-916(N)中的一个或更多个节点C.R.可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点C.R.916(1)-9161(N)可包括一个或更多个虚拟组件,诸如vGPU、vCPU等,和/或节点C.R.916(1)-916(N)中的一个或更多个可对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源914可以包括容纳在一个或更多个机架(未示出)内或容纳在不同地理位置处的数据中心(也未示出)中的许多机架内的节点C.R.916的单独分组。分组的计算资源914内的节点C.R.916的单独分组可包括分组的计算、网络、存储器或存储资源,其可被配置或分配以支持一个或更多个工作负载。在至少一个实施例中,包括CPU、GPU、DPU和/或其他处理器的若干节点C.R.916可以被分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负载。一个或更多个机架还可包括以任何组合的任何数量的功率模块、冷却模块和/或网络交换机。
资源协调器912可以配置或以其他方式控制一个或更多个节点C.R.916(1)-916(N)和/或分组的计算资源914。在至少一个实施例中,资源协调器912可包括用于数据中心900的软件设计基础设施(“SDI”)管理实体。资源协调器912可包括硬件、软件或其某种组合。
在至少一个实施例中,如图9所示,框架层920可以包括作业调度器933、配置管理器934、资源管理器936和/或分布式文件系统938。框架层920可以包括支持软件层930的软件932和/或应用层940的一个或更多个应用942的框架。软件932或应用942可分别包括基于网络的服务软件或应用,例如由亚马逊网络服务、谷歌云和微软Azure提供的那些。框架层920可以是但不限于可以利用分布式文件系统938进行大规模数据处理(例如,“大数据”)的一种免费开源软件web应用框架类型,诸如Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器933可以包括Spark驱动器以促进由数据中心900的各层支持的工作负载的调度。配置管理器934可以能够配置不同层,例如软件层930和包括用于支持大规模数据处理的Spark和分布式文件系统938的框架层920。资源管理器936可能够管理映射到或分配用于支持分布式文件系统938和作业调度器933的集群或分组计算资源。在至少一个实施例中,集群或分组的计算资源可包括在数据中心基础设施层910处的分组的计算资源914。资源管理器936可与资源协调器912协调以管理这些映射或分配的计算资源。
在至少一个实施例中,被包括在软件层930中的软件932可以包括由节点C.R.916(1)-916(N)、分组的计算资源914和/或框架层920的分布式文件系统938中的至少多个部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,被包括在应用层940中的应用942可以包括由节点C.R.916(1)-916(N)、分组的计算资源914和/或框架层920的分布式文件系统938中的至少多个部分使用的一种或更多种类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组学应用、认知计算和机器学习应用(包括训练或推理软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用)。
在至少一个实施例中,配置管理器934、资源管理器936和资源协调器912中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实施任何数量和类型的自修改动作。自修改动作可使数据中心900的数据中心运营商免于做出可能不良的配置决策和可能避免数据中心的未充分利用和/或性能不佳的部分。
根据在此描述的一个或更多个实施例,数据中心900可以包括工具、服务、软件或其他资源,以便训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,一个或更多个机器学习模型可以通过使用上文相对于数据中心900所描述的软件和/或计算资源,通过根据神经网络架构计算权重参数来训练。在至少一个实施例中,对应于一个或更多个神经网络的经训练的或所部署的机器学习模型可以用于通过使用通过一个或更多个训练技术(诸如但不限于本文中所描述的那些技术)计算的权重参数,来使用以上关于数据中心900所描述的资源来推断或预测信息。
在至少一个实施例中,数据中心900可以使用CPU、专用集成电路(ASIC)、GPU、FPGA、和/或其他硬件(或与其相对应的虚拟计算资源)来使用上述资源执行训练和/或推理。此外,上述一个或更多个软件和/或硬件资源可以被配置为允许用户训练或执行信息推理的服务,诸如图像辨识、语音辨识或其他人工智能服务。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附接存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可在图8的计算设备800的一个或更多个实例上实现,例如,每个设备可包括计算设备800的类似组件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可被包括作为数据中心900的一部分,数据中心900的示例在本文中相对于图9更详细地描述。
网络环境的组件可以经由可以是有线的、无线的或两者的一个或更多个网络彼此通信。网络可以包括多个网络或网络的网络。作为示例,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(PSTN))、和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境——在这种情况下,网络环境中可以不包括服务器——和一个或更多个客户端-服务器网络环境——在这种情况下,网络环境中可以包括一个或更多个服务器。在对等网络环境中,本文关于一个或更多个服务器描述的功能可以在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可以包括在服务器中的一个或更多个上实现的框架层、作业调度器、资源管理器和分布式文件系统,所述服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可以分别包括基于网络的服务软件或应用。在实施例中,客户端设备中的一个或更多个可以使用基于web的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于免费和开源软件web应用框架的类型,诸如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可以提供执行在此描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任一者可从(例如,可跨州、地区、国家、全球等分布的一个或更多个数据中心的)中央或核心服务器分布在多个位置上。如果至用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织)、可以是公共的(例如,对许多组织可用)和/或其组合(例如,混合云环境)。
一个或更多个客户端设备可以包括在此关于图8所描述的一个或更多个示例计算设备800的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被体现为个人计算机(PC)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表,可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或设备、视频播放器、摄像机、监视设备或系统,车辆、船只、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统,嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些所描绘的设备的任何组合、或任何其他合适的设备。
可以在由计算机或其他机器(如个人数据助理或其他手持式设备)执行的计算机代码或机器可用指令(包括计算机可执行指令,如程序模块)的一般上下文中描述本公开。通常,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本公开可以在各种系统配置中实施,包括手持式设备、消费电子产品、通用计算机、更专业的计算设备等。本公开也可以在任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。
如在此使用的,关于两个或更多个元件的“和/或”的叙述应当被解释为意指仅一个元件、或元件的组合。例如,“元素A、元素B和/或元素C”可以包括仅元素A、仅元素B、仅元素C、元素A和元素B、元素A和元素C、元素B和元素C、或元素A、B和C。此外,“元素A或元素B中的至少一个”可包括元素A中的至少一个、元素B中的至少一个、或者元素A中的至少一个和元素B中的至少一个。此外,“元素A和元素B中的至少一个”可包括元素A中的至少一个、元素B中的至少一个、或者元素A中的至少一个和元素B中的至少一个。
在此具体描述了本公开的主题以满足法定要求。然而,描述本身不旨在限制本公开的范围。相反,发明人已预期所要求保护的主题还可结合其他当前或未来技术以其他方式来体现,以包括不同步骤或类似于在本文档中描述的步骤的步骤的组合。此外,尽管术语“步骤”和/或“框”在本文中可以用于表示所采用的方法的不同元素,但是除非并且除了明确描述个别步骤的顺序,否则该术语不应被解释为暗示在本文中公开的各个步骤之中或之间的任何特定顺序。
Claims (20)
1.一种方法,包括:
至少基于指示与视频流相关联的一个或更多个网络条件的数据,将与所述视频流的一个或更多个帧相对应的至少一个图像从第一分辨率缩放到第二分辨率,所述第二分辨率是比所述第一分辨率小的分辨率;
对所述视频流的所述一个或更多个帧进行编码,所述编码包括用具有预先确定的像素值的一个或更多个像素填充所述至少一个图像,以便包括所述至少一个图像和填充的一个或更多个像素的编码帧具有等于所述第一分辨率的分辨率;以及
使用一个或更多个分组通过网络传输编码的一个或更多个帧。
2.如权利要求1所述的方法,其中所述传输包括使用所述一个或更多个分组存储表示一个或更多个参数的数据,所述参数指示帧内的至少一个图像的分辨率或帧内的所述至少一个图像的位置中的一个或更多个。
3.如权利要求1所述的方法,进一步包括:
引起将所述一个或更多个分组解码为一个或更多个解码帧,所述解码包括将对应于所述一个或更多个解码帧的一个或更多个图像从所述第二分辨率缩放为所述第一分辨率;以及
引起所述一个或更多个解码帧的显示。
4.如权利要求3所述的方法,其中引起所述解码包括引起所述设备从所述帧中裁剪掉所述一个或更多个帧。
5.如权利要求1所述的方法,其中所述数据指示网络带宽、视频复杂度的指示或与所述视频流相关联的目标比特率中的一个或更多个。
6.如权利要求1所述的方法,其中所述缩放被配置为将所述第一分辨率降低与定义所述编码中使用的视频压缩处理边界的像素大小的倍数对齐的量。
7.如权利要求1所述的方法,其中所述第一分辨率是所述视频的原始分辨率。
8.如权利要求1所述的方法,包括:通过两个或更多个迭代步骤将所述一个或更多个帧中的一组帧转变为目标分辨率,所述两个或更多个迭代步骤中的每个步骤对应于不同的分辨率,其中所述两个或更多个迭代步骤中的至少一个迭代步骤包括所述缩放、所述编码和所述生成。
9.一种系统,包括:
一个或更多个处理单元,用于执行操作,所述操作包括:
至少基于指示与视频流相关联的一个或更多个网络条件的数据,确定所述视频流的一个或更多个帧的第一分辨率;
至少基于所述确定,以所述第一分辨率生成所述一个或更多个帧;
以所述第一分辨率对所述一个或更多个帧中的至少一个帧进行编码,并将所述至少一个帧填充到第二分辨率;以及
使用一个或更多个分组将至少一个编码帧传输到设备。
10.如权利要求9所述的系统,其中对所述至少一个帧进行编码包括对表示一个或更多个参数的数据进行编码,所述参数指示所述填充的大小或所述填充在所述至少一个帧内的位置中的一个或更多个。
11.如权利要求9所述的系统,其中所述填充包括将一个或更多个虚拟像素附加到对应于所述至少一个帧并缩放到所述第二分辨率的图像上,所述一个或更多个虚拟像素具有与所述图像中的至少一个其他像素的像素值相对应的一个或更多个像素值。
12.如权利要求9所述的系统,进一步包括使所述设备裁剪所述帧,将裁剪后的帧放大,并显示放大后的帧。
13.如权利要求9所述的系统,其中所述数据指示网络带宽或与所述视频流相关联的目标比特率中的一个或更多个。
14.如权利要求9所述的系统,其中以第一分辨率生成所述视频的所述一个或更多个帧包括:将所述一个或更多个帧缩放与定义所述编码中使用的视频压缩处理边界的像素大小的倍数对齐的量。
15.如权利要求9所述的系统,其中所述第二分辨率是所述视频的原始分辨率。
16.如权利要求9所述的系统,包括:通过两个或更多个迭代步骤将所述视频通过编码到所述视频流的帧转变为目标分辨率,所述两个或更多个迭代步骤中的每个迭代步骤对应于不同的分辨率,其中所述两个或更多个步骤中的至少一个迭代步骤包括所述编码和所述生成。
17.如权利要求9所述的系统,其中所述系统被包括在以下中的至少一个中:
用于自主或半自主机器的控制系统;
用于自主或半自主机器的感知系统;
用于执行模拟操作的系统;
用于执行光传输模拟的系统;
用于执行3D资产的协作内容创建的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
用于执行对话式人工智能操作的系统;
用于生成合成数据的系统;
包含一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或
至少部分地使用云计算资源实现的系统。
18.一种处理器,包括:
一个或更多个电路,用于通过一个或更多个步骤将视频流的第一一个或更多个帧从第一分辨率转变为第二分辨率,其中所述一个或更多个步骤中的至少一个步骤包括将对应于所述第一一个或更多个帧的至少一个图像从所述第一分辨率编码到所述第二分辨率,并用预先确定的像素值填充所述至少一个图像,以便与所述至少一个图像和所述预先确定的像素值的合成相对应的帧具有等于所述第一分辨率的相应分辨率。
19.如权利要求18所述的处理器,其中所述一个或更多个电路用于将表示一个或更多个参数的数据存储在表示编码帧的一个或更多个分组中,所述一个或更多个参数指示所述帧内的第二一个或更多个帧的尺寸或所述帧内的所述第二一个或更多个帧的位置中的一个或更多个。
20.如权利要求18所述的处理器,其中所述处理器被包括在以下中的至少一个中:
用于自主或半自主机器的控制系统;
用于自主或半自主机器的感知系统;
用于执行模拟操作的系统;
用于执行光传输模拟的系统;
用于执行3D资产的协作内容创建的系统;用于执行深度学习操作的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
用于执行对话式人工智能操作的系统;
用于生成合成数据的系统;
包含一个或更多个虚拟机VM的系统;至少部分地在数据中心中实现的系统;或至少部分地使用云计算资源实现的系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/724,360 US20230336799A1 (en) | 2022-04-19 | 2022-04-19 | Video streaming scaling using virtual resolution adjustment |
US17/724,360 | 2022-04-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116916028A true CN116916028A (zh) | 2023-10-20 |
Family
ID=88191766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310393186.0A Pending CN116916028A (zh) | 2022-04-19 | 2023-04-12 | 使用虚拟分辨率调整的视频流缩放 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230336799A1 (zh) |
CN (1) | CN116916028A (zh) |
DE (1) | DE102023109585A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965140B1 (en) * | 2011-01-31 | 2015-02-24 | Teradici Corporation | Method and apparatus for encoding mixed content image sequences |
US9426498B2 (en) * | 2012-07-10 | 2016-08-23 | Broadcom Corporation | Real-time encoding system of multiple spatially scaled video based on shared video coding information |
GB201318658D0 (en) * | 2013-10-22 | 2013-12-04 | Microsoft Corp | Controlling resolution of encoded video |
KR101663668B1 (ko) * | 2014-06-27 | 2016-10-07 | 삼성전자주식회사 | 영상 패딩영역의 비디오 복호화 및 부호화 장치 및 방법 |
-
2022
- 2022-04-19 US US17/724,360 patent/US20230336799A1/en active Pending
-
2023
- 2023-04-12 CN CN202310393186.0A patent/CN116916028A/zh active Pending
- 2023-04-17 DE DE102023109585.4A patent/DE102023109585A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023109585A1 (de) | 2023-10-19 |
US20230336799A1 (en) | 2023-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11457263B2 (en) | Prioritizing tile-based virtual reality video streaming using adaptive rate allocation | |
TWI803590B (zh) | 藉由所關注區域之制定的異步時間及空間翹曲 | |
US11909984B2 (en) | Video encoding and decoding for cloud gaming | |
EP3669547B1 (en) | Method and apparatus for point-cloud streaming | |
CN108156484B (zh) | 利用自适应速率分配优先处理基于图块的虚拟现实视频流 | |
AU2011317052B2 (en) | Composite video streaming using stateless compression | |
KR20220154252A (ko) | 증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 | |
US11665372B2 (en) | Fast projection method in video-based point cloud compression codecs | |
US11570417B2 (en) | Immersive video streaming using view-adaptive prefetching and buffer control | |
US10237563B2 (en) | System and method for controlling video encoding using content information | |
CN117280680A (zh) | 动态网格对齐的并行方式 | |
JP2024512629A (ja) | ライトフィールド/ホログラフィック媒体のアセット再利用性 | |
US20220331702A1 (en) | Cloud execution of audio/video compositing applications | |
CN116916028A (zh) | 使用虚拟分辨率调整的视频流缩放 | |
US20230042078A1 (en) | Encoding and decoding views on volumetric image data | |
JP2023055615A (ja) | 自然言語処理を使用するゲーム・ログからのイベント情報抽出 | |
CN111095922B (zh) | 电子设备及其操作方法 | |
US11818192B2 (en) | Encoding output for streaming applications based on client upscaling capabilities | |
US20240098303A1 (en) | Encoding output for streaming applications based on client upscaling capabilities | |
US20230254500A1 (en) | Smart packet pacing for video frame streaming | |
US20230267063A1 (en) | Real-time latency measurements in streaming systems and applications | |
US20230085156A1 (en) | Entropy-based pre-filtering using neural networks for streaming applications | |
CN117596406A (zh) | 利用光流进行帧速率上转换 | |
CN117793402A (zh) | 用于视频流式传输系统和应用的使用神经网络的特征重建 | |
JP2017069845A (ja) | ビットレート決定装置、サーバ装置、ビットレート決定方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |