用于使用用户数据报协议(UDP)进行鲁棒的视频传输的系统、设备和方法与流程

文档序号:24049102发布日期:2021-02-23 20:15阅读:116来源:国知局
用于使用用户数据报协议(UDP)进行鲁棒的视频传输的系统、设备和方法与流程
用于使用用户数据报协议(udp)进行鲁棒的视频传输的系统、设备和方法
[0001]
相关申请的交叉引用
[0002]
本专利申请要求享有2019年12月18日提交的us 62/949,516的权益和优先权,该申请的全部内容通过引用合并于此;并且要求享有2019年5月12日提交的us 62/846,669的权益和优先权,该申请的全部内容通过引用合并于此。
技术领域
[0003]
本发明涉及通信系统领域。


背景技术:

[0004]
电子设备和计算设备每天被全世界数百万用户使用。例如,膝上型计算机、台式计算机、智能手机、平板计算机和其它电子设备被用于浏览互联网,消费数字内容,流送音频和视频,发送和接收电子邮件(email)消息,即时消息传递(im),视频会议,玩游戏等。
[0005]
许多电子设备经由一个或多个无线通信链路或网络彼此通信,或者与远程服务器或远程实体通信;例如,使用wi-fi,使用蜂窝通信,通过互联网等。一些电子设备用于接收携带视频数据的无线通信信号,以允许这样的电子设备在其显示单元上播放流送视频或视频剪辑。


技术实现要素:

[0006]
本发明的一些实施例可以提供用于利用用户数据报协议(udp)进行鲁棒的视频传输的系统、设备和方法。例如,一种方法包括:由视频编码器按视频的每个帧生成压缩数据的n个分组的集合,其中,n是自然数;并且在针对该视频的特定帧生成每个n个分组的集合时,经由ip上udp通信链路,立即执行对与单个编码视频帧相对应的n个分组的集合的传输,而不等待对该视频的任何其它视频帧的编码或分组化。该视频帧的每个分组至少包括:粗糙视频数据分组部分,以及精细视频数据分组部分,并且可选地还包括具有子帧映射信息的头部分组部分。
[0007]
本发明可以提供其它和/或附加的优点和/或益处。
附图说明
[0008]
图1是根据本发明的一些说明性实施例的旨在用于经由ip上udp连接传输的h.265视频的分组的集合的示意图。
[0009]
图2是根据本发明的一些说明性实施例的说明帧分组的示意图。
[0010]
图3是根据本发明的一些说明性实施例的系统的示意图。
[0011]
图4是根据本发明的一些说明性实施例的被划分为子帧的视频帧的示意图。
[0012]
图5是根据本发明的一些说明性实施例的在使用udp分组的视频传输中最小化比特速率和错误传播的方法的流程图。
[0013]
图6是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的方法的流程图。
[0014]
图7是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的方法的流程图。
[0015]
图8是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的方法的流程图。
[0016]
图9是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的方法的流程图。
具体实施方式
[0017]
本发明的一些实施例可以实现视频的发送和接收,特别是用诸如高效视频编码(hevc)或h.265或mpeg-h part 2视频压缩标准或h.264或mpeg-4 part 10或高级视频编码(avc或mpeg-4 avc)视频压缩标准之类的高级压缩标准进行压缩或编码的视频;并且关于使用如本文描述的粗糙数据部分和精细(或细化)数据部分表示的压缩视频。本发明的一些实施例可以与根据可扩展视频编码(svc)技术进行压缩或编码的视频结合使用,例如,使用h.264svc或使用h.264的附录g扩展/mpeg-4 avc视频压缩标准;或通过类似的技术,其中将高质量视频流编码为两个或更多个子集比特流,其中子集比特流可以表示具有较低空间分辨率(较小的屏幕)的版本和/或具有较低时间分辨率(较低的帧速率)的版本和/或具有较低质量或保真度或信噪比(snr)的版本。
[0018]
术语“精细”或“精细数据”或“精细视频数据”或“细化”或“细化数据”或“细化视频数据”或类似术语在本文中可互换使用;使得“精细”也可以包括或意味着“细化”,并且使得“细化”也可以包括或意味着“精细”。在一些实施例中,“精细”或“细化”视频数据可以包括这样的数据:使得视频解码器能够通过具有粗糙视频数据然后将细节添加到其上或在其之上构建细节来将细节添加到帧的粗糙版本以便创建帧的更高质量版本。在其它实施例中,“精细”或“细化”视频数据可以包括这样的数据:使得视频解码器能够“从头开始”重构视频帧的高细节版本,而不一定利用或依赖于该帧的粗糙视频数据。
[0019]
申请人已经认识到,对于通过互联网协议(ip)连接发送压缩视频存在两种主要选择:经由传输控制协议(tcp),或经由用户数据报协议(udp)。申请人进一步认识到,在压缩视频的tcp传输中,传输更可靠,但经受更高的延时;然而,在压缩视频的udp传输中,传输不那么可靠,但延时或延迟较低。例如,申请人意识到,udp分组通常到达其预期的接收者或根本不到达(例如,而不是作为畸形的分组到达);并且接收者侧或其视频解码器可以被配置为确定尚未接收到应该已经接收的udp分组。本发明的实施例可以操作以用于增加通过udp的视频传输的可靠性和/或鲁棒性。
[0020]
出于说明的目的,本文中的讨论的一些部分可以涉及h.265视频;然而,这仅是非限制性示例,并且本发明的实施例可以与其它类型的压缩视频和/或编码视频结合使用。本发明的实施例可以适合于处理、发送和接收视频数据,该视频数据的特征在于具有两个或更多个部分:粗糙部分和精细(或细化)部分。例如,粗糙部分可以包括每个视频帧的低级别表示,使得对粗糙部分的成功接收和解码将使接收实体至少能够产生和显示帧的粗糙表示或帧的低分辨率版本或部分细节,这可能缺少高分辨率的细节,但仍足以向观看者传达使
观看者理解所描绘内容的足够视觉信息量。精细部分或细化部分可以包括使接收实体能够产生并显示帧的高分辨率版本或全分辨率版本或帧的完全详细版本的数据;在一些实施例中,细化部分可以包括例如与帧的粗糙版本(已经在数据的粗糙部分中表示)和实际的原始帧之间的差异相对应的数据,其中该帧的整个细节或至少一些附加细节未在粗糙数据部分中表示。例如,在一些实施例中,视频可以包括如在题为“wireless transmission of high-quality video”的美国专利申请公开号us 2016/0073122a1中所描述的粗糙部分和细化部分,其通过引用整体并入本文。
[0021]
一些实施例可以结合具有离散帧的视频一起操作,使得每个帧被表示为(或逻辑上划分为)m个子帧,其中m是大于1的整数;例如,至24帧。参考图4,其是视频帧400的示意图,其总尺寸(或大小)为1920像素宽乘1080像素高。帧400可以被划分为24个子帧,编号为1到24;布置为6行乘4列的矩阵或阵列;每个这样的子帧对应于帧400的整个区域的1/24;每个这样的子帧是320像素宽乘270像素高的32个像素。在一些实施例中,该帧400的数据表示可以包括24个数据部分,每个数据部分以其连续运行次序对应于子帧;并且使得每个数据部分可以包括该子帧的粗糙视频数据,然后是该子帧的细化视频数据。在其它实施例中,每个子帧的粗糙数据被一个子帧接一个子帧地聚合,然后所有子帧的粗糙数据之后跟随子帧的细化数据,一个接一个。可以使用其它数据结构,并且头部部分可以包括描述所使用的特定类型的数据结构的数据或元数据,以及帧400的每个子帧的每个这种粗糙或细化数据部分的数据长度(比特数或字节数)。
[0022]
为了说明的目的,本文的讨论的一些部分可以涉及利用reed-solomon纠错;然而,这仅是非限制性示例,并且根据本发明,可以使用其它类型或方法的纠错或前向纠错(fec)。
[0023]
参考图1,图1是根据本发明的一些说明性实施例的旨在用于通过udp/ip传输的h.265视频的分组的集合100的示意图。在一些实施例中,可选地,分组的集合100可以对应于旨在用于通过udp/ip传输的单个数据报。在说明性实现方式中,集合100包括携带h.265编码视频的九个分组101-109。应用不相等的错误防护方案,使得编码实体或发送实体在同一分组内存储和发送粗糙视频数据和/或细化视频数据和/或用于粗糙视频数据的reed-solomon纠错码和/或用于细化视频数据的reed-solomon纠错码的适当组合。
[0024]
每个分组(101至109)可以包括多个分组部分:第一分组部分(位于图中附图标记z1下方),其是指示分组的序列号(例如,在预先定义的上限处环绕的连续数字)的初始分组部分;然后是存储头部视频信息的头部视频分组部分(位于图中附图标记z2下方),其指示关于视频帧的子帧的元数据;然后是粗糙数据分组部分(位于图中附图标记z3下方),其携带粗糙视频数据以使接收方设备能够解码和显示所传输帧的粗糙版本;然后是细化数据分组部分(位于图中附图标记z4下方),其携带使接收方设备能够解码和显示所传输帧的细化版本的数据。
[0025]
根据特定方案,使用reed-solomon(rs)前向纠错(fec)。如细长的垂直“rs”矩形(位于图中附图标记z5、z6和z7下方)所指示的,rs字(例如,每个rs字包括携带原始数据的系统化部分,以及奇偶校验/冗余部分)跨相同类型的多个对应的分组部分进行编码。根据本发明,相对于细化视频数据以及同样相对于头部数据,关于粗糙视频数据使用不同的码率(或编码率或码比率)或不同的信息率(或信息比率)。码率可以被定义为例如有用或非冗
余的数据流的比例;例如,k/n的码率表示对于每k个比特的有用信息,系统会生成更多数量(n)的比特的数据,从而n>k,并且从而(n-k)个比特是冗余数据(例如,用于纠错目的)。
[0026]
例如,对于与单个视频帧相对应的九个分组101-109的特定集合,定义了第一编码率(r1),它是(i)粗糙视频数据的reed-solomon字中的原始的(或有用的,或非冗余的,或直接对应于视觉内容的实际表示的)粗糙视频字节与(ii)粗糙视频数据的所述reed-solomon字中的字节总数的比率。对于与同一单个视频帧相对应的九个分组101-109的相同集合,定义了不同的第二编码率(r2),它是(i)细化视频数据的reed-solomon字中的原始的细化视频字节数据的数量与(ii)在细化视频数据的所述reed-solomon字中的字节总数的比率。在一些实施例中,代替或除了对粗糙和细化视频数据的reed-solomon字使用不同的编码率,可以使用不同类型的前向纠错(fec)算法。
[0027]
例如,当每个视频帧的分组数量为n=9时,合适的值可以是:第一编码率(对于粗糙视频数据的rs字)=r1=5/9,并且对于同一视频帧,第二编码率(用于细化视频数据的rs字)=r2=8/9。例如,对于表示单个视频帧的n个分组的相同集合,r1与r2不同。例如,对于表示单个视频帧的n个分组的相同集合,r2大于r1。例如,对于表示单个视频帧的n个分组的相同集合,细化视频数据的rs字的第二编码率(r2)至少为3/4,并且粗糙视频数据的rs字的第二编码率(r1)最大为2/3。例如,第一编码率r1在1/10至2/3的范围内,或者在1/4至2/3的范围内;而第二编码率r2在3/4至1的范围内,或者在0.6至0.9的范围内。可以使用其它合适的、不同的值或值的范围。
[0028]
在说明性实施例中,分组的集合100包括九个分组101-109,其具有统一的分组长度(例如,以字节为单位;例如,1,360字节或1,400字节的统一分组长度)。粗糙视频数据仅存储在集合100的前五个分组101-105的粗糙分组部分中;而接下来的四个分组106-109的粗糙分组部分不存储粗糙视频数据,相反,它们存储reed-solomon奇偶校验(或冗余),其在这些分组101-105中的一个或多个或一些未到达接收方的情况下,通过将reed-solomon纠错应用于分组101-109中未到达接收方的那些分组,通过利用未包含于分组106-109中并且未到达接收方的附加rs奇偶校验(或其至少一些),使接收方能够重构分组101-105的粗糙视频数据。类似地,细化视频数据仅存储在集合100的前八个分组101-108的细化分组部分中;而接下来的分组109的细化分组部分不存储细化频数据,相反,它存储reed-solomon奇偶校验,其在这些分组101-108中的一个或多个或一些未到达接收方的情况下,通过将reed-solomon纠错应用于分组101-100中未到达接收方的那些分组,并且通过利用未包含于分组109中并且未到达接收方的附加rs奇偶校验(或其至少一些),使接收方能够重构分组101-109的细化视频数据。
[0029]
应当理解,用于粗糙视频数据的reed-solomon字的编码率(r1,例如,r1=4/9)不同于用于细化视频数据的reed-solomon字的编码率(r2,例如,r2=8/9)。申请人已经认识到,相对于细化数据部分,关于粗糙数据部分跨相同帧的分组的相同集合的不同或不均匀编码率或非统一编码率的这种独特方案可以改进即使分组中的一个或多个分组在传输中丢失,接收方设备也可以正确解码所传输视频的能力。申请人已经认识到,关于粗糙视频数据,具有小于或等于2/3,或者小于0.67,或者小于0.60,或者小于0.50,或者小于0.40,或者在1/3到2/3的范围内,或者在1/4到2/3的范围内,或者在1/5到2/3的范围内的编码率(r1)是更重要的;因为粗糙视频数据及其rs字对于使接收方设备能够至少解码和显示传输的视
频帧的粗糙版本是最重要的。相反,申请人认识到,关于细化视频数据及其rs字,具有相对较低的编码率没那么重要,因为细化视频数据对于使接收方设备能够解码和显示传输的视频帧仅是次要的,并且其仅操作用于使接收方设备能够细化和改进已接收的粗糙数据的质量或细节。因此,第二编码率(r2)可以是例如至少3/4,或至少4/5,或至少5/6,或至少6/7,或至少7/8,或其它合适的值。
[0030]
根据一些实施例,跨特定视频传输的分组的所有集合;即,跨对应于相同视频传输或者对应于旨在输送给接收方设备的相同视频项目的传输的udp/ip分组的所有各种集合,统一利用单个r1的值和单个(不同的、更大的)r2的值。换句话说,本发明的实施例不集中于构造分组的集合使得分组的每个集合具有不同的大小(例如,n个分组的第一集合,随后是m个分组的第二集合,使得n与m不同,用于输送特定的视频项目);而是,本发明的实施例集中于构造具有统一集合大小的分组的集合(例如,在所示示例中,每个集合9个分组的统一大小;或者每个集合l个字节的统一大小),从而使用统一大小的分组的集合来输送视频项目,每个这样的分组的集合都利用上述非统一比率r1和r2的方案。
[0031]
一些实施例可以可选地利用每个视频帧的差分或非统一数量的分组,只要系统定义和/或利用和/或强制执行每帧允许生成的分组数量的上限即可,例如,不超过14个分组,或不超过15个分组,或不超过16个分组。因此,例如,当利用每个视频帧不超过14个分组的上限时,第一视频帧可以由8个分组表示,并且第二视频帧可以表示为14个帧,而第三视频帧可以由12个分组表示,以此类推;并且不会由每帧15或16或17个分组表示视频帧。由系统和/或由发送实体设置的上界或上限可以向接收方设备传达或通知,或者可以在接收方设备处被硬编码或软编码,由此使接收方设备能够分配并利用有限大小的缓冲器或存储器区域,同时确保此类缓冲器不会溢出或欠载运行(underrun)。例如,定义每帧不超过15个分组的约束可以使接收方实体能够定义并安全地使用仅适应15个分组的缓冲器。在一些实现方式中,系统的延时可以取决于接收器缓冲器大小;并且因此,约束或限制这种大小可能有助于减少系统的延时。
[0032]
在说明性实施例中,每个分组具有统一大小,例如,每个分组1,400字节;每个分组的字节1至20携带分组号和有关子帧的头部信息;每个分组的字节21至200携带粗糙视频数据;并且每个分组的字节201至1,400携带细化视频数据。对于粗糙视频数据,reed-solomon纠错可以利用例如每个reed-solomon字统一长度为9字节的reed-solomon字。例如,分组101-105的粗糙视频数据(例如,5x180=960字节)被馈送到reed-solomon编码器,该编码器生成跨越9x180=1,620字节的reed-solomon字并存储在分组106-109中为粗糙视频数据保留的分组段中。类似地,对于细化视频数据,reed-solomon纠错可以利用例如每个reed-solomon字具有9字节的统一长度的reed-solomon字;并且分组101-108的细化视频数据(例如,8x1,200字节)被馈送到reed-solomon编码器,该编码器生成跨越9x1200=10,800字节的reed-solomon字并存储在分组109中为细化视频数据保留的分组段中。
[0033]
例如,粗糙数据的编码率为5/9,并且与以前一样,总共有960字节的粗糙数据。然而,rs字长度为90字节(例如,50字节原始数据+40字节冗余数据),并且由于1620/90=18,所以总共有18(十八)个rs字。在一些实施例中,所有40个字节的冗余数据都特别地位于视频帧的9个分组的集合中的最后4个分组中,而不是跨视频帧的整个9个分组分散。在一些实施例中,可选地,9个分组的集合中的每个分组的粗糙数据部分要么包含粗糙视频数据要么
包含粗糙视频数据的rs冗余,但是在同一分组中不会包含这二者。
[0034]
类似地,关于细化数据,以8/9的编码率,冗余数据的所有字节(rs码)都特别地位于视频帧的9个分组的集合中的最后一个分组中,而不是跨视频帧的整个9个分组分散。在一些实施例中,可选地,9个分组的集合中的每个分组要么包含细化视频数据要么包含细化视频数据的rs冗余,但是在同一分组中不会包含这二者。
[0035]
申请人还认识到,关于在相同的udp/ip数据报中的对应于单个视频帧的n=9个分组的相同集合中的分组的头部信息,可以使用另一不同的第三编码率(r3)。例如,可以将单个视频帧划分为s个区域或子帧(例如,如图4所示的24个区域或24个子帧),每个这样的区域或子帧被单独编码;并且头部中存储的数据对于接收方设备或其解码器可能具有高度重要性,因为头部信息可以用于确定特定帧的哪些区域或子帧已到达或丢失,或者哪些粗糙数据或细化数据对应于特定帧的哪些区域或子帧。
[0036]
因此,如在集合100中示出的,为分组101至103中的头部信息保留的分组部分实际上可以存储和携带原始或有用的头部信息,该信息描述了关于该帧的子帧的所述信息;然而,在接下来的四个分组(分组104至107)中为头部信息保留的分组部分不存储实际的头部信息;而是,它们针对存储在分组101至103中的三个头部数据项替代地存储reed-solomon纠错码。例如,对于头部信息,reed-solomon纠错可以利用具有9字节的统一长度的reed-solomon字。分组101-103的头部信息(例如,3x20=60字节)被馈送到reed-solomon编码器,该编码器生成跨越4x20=80字节的reed-solomon码;并且reed-solomon奇偶校验数据的这80个字节由在分组104-107中为头部信息保留的分组段存储和携带。因此,在九个分组的单个集合内的编码率(r3)可以是3/7的编码率,或者可以是其它合适的值;并且尤其是第三编码率r3小于或等于1,或小于1,或小于0.90,或小于0.80,或小于0.75,或小于0.67,或小于0.60,或小于0.50。
[0037]
在一些实施例中,分组108-109的头部分组部分可以保持未使用,或者可以用空值填充。在其它实施例中,可选地,可以使用3:9的编码率r3,使得分组101-103的三个头部部分存储实际头部信息,而分组104-109的六个头部部分存储对应的reed-solomon纠错数据;由此进一步增加了头部信息(在分组101-103中携带的,并且在分组104-109中受错误保护的)将在接收方设备处被正确解码的可能性。
[0038]
本发明的一些实施例可以利用多种保护机制,以确保对于每个视频帧,即使特定帧的数据报的udp/ip中的一些未到达接收方设备,也可以在接收方设备处至少解码粗糙视频,以及可能的话也解码细化视频。在说明性实现方式中,旨在传输的视频具有60帧每秒(fps)的帧速率;使得每个帧对应于1,000/60=16.67毫秒。发送设备可以基于编码每个帧最多要求9个分组的假设或估计来进行操作;然而,发送设备通常可能无法预测特定帧将要求(例如)十个分组来完全携带视频数据(该帧的粗糙视频数据和细化视频数据)。接收方设备可以基于以下假设或基于以下配置进行操作:应每16.67毫秒或大约每16毫秒接收单个帧的完整数据。因此,系统(发送设备和接收设备)可能需要利用一种或多种保护机制以便即使发生意外事件也保证低延时,该事件将要求在10或11个分组上而不是计划的每视频帧9个分组来携带单个帧。在这种情况下,发送设备操作以确保每个视频帧仅发送且准确地发送9个分组,在其中携带足够的信息以便即使这九个帧中的一些丢失并且没有到达接收方设备也正确解码视频帧(例如,至少是其粗糙版本,还可能是其细化版本)。
[0039]
作为第一保护机制,以通常为细化视频数据保留的(同一分组的)相邻分组部分的大小为代价,增加通常为粗糙视频数据保留的分组部分的大小;由此使帧能够携带增加量的粗糙视频数据,同时携带(在同一分组中)减少量的细化视频数据。因此,如图中由附图标记z8下方的向右弯曲箭头所示,分组101中的作为在粗糙数据分组部分和细化数据分组部分之间的边界的垂直线会动态移动(或推动,或转移)到右侧,并且将位于(例如)图中虚垂直线所示的位置,代表放大或增加大小的粗糙分组部分和缩小大小的细化分组部分。这反映了至少输送该帧的粗糙视频数据的更大重要性,即使这种输送是以该帧的一些(或全部)细化视频数据为代价的。因此,该第一保护机制确定如果每帧的固定或预先定义数量的分组不足以传输整个粗糙视频数据和整个细化视频数据(以及两者的整个reed-solomon奇偶校验信息),那么分组中的一个或多个分组中通常保留或指定用于携带粗糙视频数据的空间量将以该帧的细化视频数据为代价被重新分配用于携带该帧的细化视频数据。
[0040]
在第二保护机制中,发送设备识别出在九个分组101-109的集合中,原始计划或常规计划将利用为细化视频数据保留的八个分组部分(在分组101-108中)以便确实携带细化视频数据,并且利用第九分组(分组109)的细化视频数据分组部分在其中携带用于分组101-108的细化视频数据的reed-solomon奇偶校验信息。然而,由于一方面细化数据量增加,以及另一方面如上面描述的第一保护机制的操作,发送设备认识到它现在具有减小大小的分组部分(在分组101-108中,或在分组101-108中的至少一个中)用于携带细化视频数据。因此,作为第二保护机制,在这种情况下,第九分组(分组109)的细化视频数据分组部分现在用于其原始用途,即,用于携带细化视频数据,而不是携带细化视频数据的reed-solomon奇偶校验信息。因此,该第二保护机制确定如果每帧的固定或预先定义数量的分组不足以传输整个细化视频数据和细化视频数据的整个reed-solomon奇偶校验信息,则细化视频数据优先于其reed-solomon奇偶校验信息,并且将在否则会被指定或保留用于携带细化视频数据的reed-solomon奇偶校验信息的分组部分中携带细化视频数据。
[0041]
在第三保护机制中,如果每帧的固定或预先定义数量的分组不足以传输整个粗糙视频数据和整个细化视频数据以及两者的整个reed-solomon奇偶校验信息,则:在该帧的这些分组中根本不传输用于细化视频数据的reed-solomon奇偶校验信息;并且如果丢弃细化视频数据的reed-solomon奇偶校验信息仍然不足以实现该帧的细化视频数据的传输,则细化视频数据将被丢弃,并且不会在该帧的该分组的集合中传输:要么该帧的整个细化视频数据从这九个分组中排除并且不针对该帧发出,要么替代地,该帧的细化视频数据中的至少一些(例如,该帧的24个子帧中至少s个子帧的细化视频数据)从这九个分组中排除,并且不针对该帧传输。在一些实施例中,在九个分组的集合内连续地布置细化视频数据,使得(例如):首先,发送设备从九个分组中丢弃或排除子帧24的细化视频数据;然后,发送设备从九个分组中丢弃或排除子帧23的细化视频数据;以此类推;并且接收方设备仍至少能够接收和解码并显示那些子帧的粗糙版本,并且至少能够接收和解码并显示(同一帧的)其细化视频数据未被排除的一个或多个子帧的细化版本(例如,子帧1、2、3等的细化视频数据,直到截止点为止,从该截止点排除子帧的进一步细化视频数据)。
[0042]
在第四保护机制中,仍可以在接收方设备处执行丢失视频数据(无论是丢失的粗糙视频数据和/或丢失的细化视频数据)的reed-solomon重构,由此基于包含在九个分组的集合中(如果包含)的reed-solomon奇偶校验信息,来重构丢失的粗糙视频数据和/或丢失
的细化视频数据的一个或多个部分(或整体)。例如,只要九个分组的集合携带细化视频数据和/或粗糙视频数据的reed-solomon奇偶校验信息中的至少一些,该操作就可以被执行。
[0043]
在一些实施例中,接收方设备或其解码器可以确定特定帧的一个或多个udp/ip分组丢失和/或没有到达;从而对于该视频帧的子帧中的一些子帧,无法重构精细视频数据,而可以重构相同子帧的粗糙数据。在这种情况下,解码器可以仅使用粗糙数据以便重构其精细数据丢失的子帧的解压缩版本。此外,对于后续帧,即使这些子帧的细化数据在后续帧中正确到达,解码器也可以保持针对受影响的子帧仅使用粗糙视频数据。由于在一些压缩标准中,如果未正确解码前一帧则无法解码p帧,所以该操作可以被执行。
[0044]
本发明的一些实施例可以利用视频头部,使得每个头部具有(或占据)相同的、恒定数量的分组;而视频有效载荷(粗糙视频数据和细化视频数据)占据非恒定数量的分组;并且这些类型的信息(头部、粗糙视频数据、细化视频数据)中的每一种分别受到其自己的reed-solomon纠错信息的保护,该纠错信息存储在该单个视频帧的分组的集合中的每种数据类型的结束部分处,而不是跨该单个视频帧的整个分组分散。
[0045]
在一些实施例中,每帧分组的数量可以在相同视频的帧之间变化,只要每个视频帧由数量不超过每帧分组的预先定义的上限的分组表示。上限可以被预先定义为例如每帧最多11或14或15个分组。解码器缓冲器将足够大以适应每帧分组的上限限制,但需要不大于该上限,因为较大的接收机缓冲器可能会对系统的延时产生不利影响。在说明性实现方式中,系统利用每个视频帧最多15个分组的限制。在接收方侧,接收方设备定义并利用能够存储多达15个分组的缓冲器,并且这种接收机缓冲器不需要具有存储16个(或更多)分组的能力。在发射机侧,如果编码数据太长,并且不符合每帧15个分组的约束,则发送实体仅发送所生成的前15个分组而丢弃其余分组,并且不发送每帧超过15个分组;并且接收方实体将利用上述保护机制中的一种或多种以便解码或重构视频帧,至少其粗糙版本以及同样尽可能多的其细化版本。
[0046]
例如,视频编码器可以生成编码视频,使得每个视频帧的大小(例如,以字节为单位)不能容易地被提前预测,因为一个编码视频帧可能要求6,500字节,而紧随其后的编码视频帧可能要求8,900字节。申请人已经认识到,为了实现低延时,避免使用大尺寸缓冲器可能是有益的。因此,本发明的系统和方法可以进行操作,使得在对每个帧进行视频编码时,生成分组的集合并由发送设备发送,而不一定等待接下来的帧或任何其它帧的编码,和/或不依赖于当前编码帧的大小或任何其它帧(例如,已经编码的帧,和/或那些将被编码的帧)的大小。
[0047]
一些实施例可以通过提前为reed-solomon奇偶校验信息定义特定的、预先定义的统一的大小来进行操作;例如,在上面所示的示例中,粗糙视频奇偶校验信息将占据九个分组的集合中的四个分组的粗糙分组部分(粗糙编码率r1=4/9),而细化视频部分数据将占据九个分组的同一集合中的单个分组的细化分组部分(细化编码率r2=8/9),而头部信息占据了七个分组的头部分组部分,其中内部划分为三个头部部分用于实际的头部信息以及另外四个头部部分用于实际头部信息的reed-solomon纠错数据(头部编码率r3=3/7)。发送实体不一定需要提前确定将用于存储实际的粗糙数据和/或实际的细化数据的分组的数量(每个视频帧),并且这可以在帧被编码时动态或选择性地即时确定,只要发送实体每帧发送的分组不超过每帧分组的预先定义的上限值。而是,发送实体可以通知接收方实体,或
者接收方实体可以以其它方式被配置为具有这样的指示:头部信息将跨分组的集合始终占据固定的大小,例如,七个分组的七个头部部分(上述头部编码率为3/7)。
[0048]
参考图2,其是示出根据本发明的一些说明性实施例的帧分组的示意图。以改进通过udp/ip的h.265视频传输的鲁棒性的方式,生成了三个组或三个向量的集合200。
[0049]
在也可以被称为“粗糙视频数据向量”或“粗糙视频数据组”的第一组或向量201中,针对单个帧的m个子帧累积粗糙视频数据。例如,关于正在被编码并且被划分为24个子帧(帧区域)的特定帧,第一组201包括用于子帧1的粗糙视频数据,随后是用于子帧2的粗糙视频数据,以此类推,直到用于子帧24的粗糙视频数据,这结束该第一组201。注意,这些子帧的粗糙视频数据的大小(例如,以字节为单位)是不固定且不统一的,因为其取决于出现在那些子帧中的每个子帧中的内容(通常是不相同的内容)。
[0050]
子帧可以以独立的方式编码,使得每个子帧的解码独立于(同一视频帧的,任何其它视频帧的任何其它子帧的)其它子帧的解码。解码子帧的这种独立性可以包括或可以利用以下特征:对于帧间预测,每个子帧的参考图像将仅包括其它帧中的相同子帧的区域,而将不包括其它帧中的其它子帧的区域。
[0051]
类似地,在也可以称为“精细视频数据向量”或“精细视频数据组”的第二组或向量202中,针对单个帧的子帧累积精细(或细化)视频数据。例如,关于正在被编码并且被划分为24个子帧(帧区域)的特定帧,第二组202包括用于子帧1的精细视频数据,随后是用于子帧2的精细视频数据,以此类推,直到用于子帧24的精细视频数据,这结束该第二组202。注意,这些子帧的精细视频数据的大小(例如,以字节为单位)是不固定且不统一的,因为其取决于出现在那些子帧中的每个子帧中的内容(通常是不相同的内容)。
[0052]
还应注意,整个第一组201(粗糙视频数据组)的累积大小(例如,以字节为单位)不同于整个第二组202(细化视频数据组)的累积大小(例如,以字节为单位)。此外,对于两个不同的帧,每个帧的累积大小(例如,以字节为单位)通常是不同的并且不是固定的。
[0053]
头部组203(或头部向量)可以包括:当前帧的子帧1的粗糙视频数据的大小(例如,以字节为单位)的指示lc(1);然后,当前帧的子帧2的粗糙视频数据的大小(例如,以字节为单位)的指示lc(2);以此类推,该帧的每个后续子帧的粗糙数据的大小(例如,以字节为单位)的指示(例如,直到指示子帧24(其是由24个子帧组成的帧的最后一个子帧)的粗糙数据的大小的lc(24));以及细化视频数据的指示符的类似聚合,例如:当前帧的子帧1的细化视频数据的大小(例如,以字节为单位)的指示lf(1);当前帧的子帧2的细化视频数据的大小(例如,以字节为单位)的指示lf(2);以此类推,该帧的每个后续子帧的细化数据的大小(例如,以字节为单位)的指示(例如,直到指示子帧24(其是由24个子帧组成的帧的最后一个子帧)的细化数据的大小的lf(24))。因此,对于被划分为24个子帧的帧,头部信息可以包括每个粗糙视频数据然后是细化视频数据的大小(例如,以字节为单位)的48个指示符的列表。
[0054]
关于头部部分,本发明的实施例可以利用以下特征。首先,存在头部部分的事实(其中这种头部用作发送的子帧的粗糙数据和细化数据的映射(即使分组中的一些或多个分组没有到达接收方设备))向接收方设备提供至少部分地利用未到达的细化数据和/或即使rs解码器故障也到达的粗糙数据的能力,因为这种头部可以实现利用到达且与未受影响子帧有关的数据。其次,提供给头部部分的保护大于提供给细化部分的保护(例如,r3<r2,或者甚至r3<<r2);并且提供给头部部分的保护至少与提供给粗糙部分的保护相同或比其
更好(例如,r3<r1,或至多r3=r1);因此,系统确保即使细化数据(或其一些部分)不可解码,以及可能即使粗糙数据(或其一些部分)不可解码,关键头部数据也可解码。
[0055]
在一些实施例中,头部部分可以不一定具有对于所有头部帧统一的固定大小;而是,头部部分可以使至少一个子部分跨所有帧的所有分组的所有头部具有固定或统一的大小。例如,在说明性实现方案中,头部部分可以包括两个子部分:(i)“视频-编码器-头部”子部分,也称为“ve-头部”子部分,其可以具有不固定或不统一的大小(例如,每个视频帧大约100个字节,或每个分组大约20个字节;但不一定具有固定的字节长度),并且包括当前视频帧内的子帧的映射的信息;以及(ii)“块-头部”子部分,也称为“blk-头部”子部分,其跨所有分组和所有帧具有固定或统一的大小(例如,每个视频帧正好8个字节),并且指示属于当前视频帧的分组数量。块-头部子部分的reed-solomon字的大小是固定的,因此,在其上传输块-头部的分组的数量是固定的;这与视频-编码器-头部子部分的reed-solomon字的改变的大小不同。
[0056]
参考图3,其是根据本发明的一些说明性实施例的系统300的示意图。系统300包括发送设备310,其能够通过无线通信链路(特别是通过基于ip的通信链路或通过udp/ip通信链路)与接收方设备320进行通信。
[0057]
发送设备310存储或接收源视频或输入视频310,或对源视频或输入视频310具有访问权,该源视频或输入视频310旨在被发送并输送到接收方设备320。发送设备310包括视频编码器311,其例如使用hevc或h.265或h.264-svc或其它合适的视频压缩标准对源/输入视频执行视频编码。然后,帧分组单元312可以执行帧的分组,使得每组帧利用相同的单个fec字或fec码或reed-solomon字。分组化单元和fec编码器/rs编码器313处理编码帧数据的分组化和fec码或rs字的添加。发射机314将分组发送到接收方设备320。
[0058]
在接收方设备320处,接收机321接收传入分组;不一定所有发送的分组实际都在接收机321处接收。因此,丢失udp分组检测器322操作以跟踪到达的分组并基于分组序列号来检测丢失的分组;可选地,利用擦除向量生成器和更新器323,其利用表示连续分组的向量,使得值1指示丢失的分组,而值0指示接收到的分组。然后,去分组化单元和fec解码器/rs解码器324操作以对数据去分组化并对确实到达的分组执行fec或rs解码。可选地,fec解码器可以被配置为利用擦除指示;例如,一些rs解码器在它们没有接收到擦除指示时可以校正多达floor(n-k)/2个错误,但是如果给予它们关于这些错误的位置的擦除指示,则可以校正多达(n-k)个错误。帧取消分组单元325将帧分组取消分组为离散帧,并且视频解码器326对每个这样的帧执行解码(例如,hevc或h.265或h.264-svc解码),由此产生输出视频327,其可以经由屏幕或监视器或其它显示单元输出或显示给用户。
[0059]
系统300的单元中的每个单元可以被实现为硬件组件和/或软件组件。在一些实施例中,系统300的单元或设备可以包括其它合适的组件或可以使用其它合适的组件来实现,这些组件例如为处理器,中央处理单元(cpu),数字信号处理器(dsp),图形处理单元(gpu),处理核心,控制器,逻辑单元,存储器单元(例如,随机存取存储器(ram)、闪速存储器),存储单元(例如,硬盘驱动器、固态驱动器、光学驱动器),输入单元(例如,小键盘、键盘、鼠标、轨迹球、音频麦克风、触摸屏),输出单元(例如,屏幕、触摸屏、音频扬声器),电源(例如,电池、电源电池、与主电源的连接),一个或多个有线和/或无线收发机(例如,wi-fi收发机、蓝牙收发机、蜂窝收发机),将设备的一些或所有组件保持在一起的壳体,具有驱动程序和应用
的操作系统(os),和/或其它合适的硬件组件和/或软件组件。
[0060]
根据本发明的实施例,计算、操作和/或确定可以在单个设备内本地执行,或者可以由多个设备或跨多个设备执行,或者可以通过可选地利用通信信道交换原始数据和/或经处理的数据和/或处理结果来部分本地和部分远程地执行(例如,在远程服务器处)。
[0061]
本文讨论了本发明的一些附加实施例,并且它们可以可选地与先前讨论的实施例的特征和/或组件和/或步骤组合。
[0062]
申请人已经意识到,视频数据可以被表示为一系列静止图像帧。编码器可以通过将帧之间的差异与描述帧之间的相似性的指令一起存储来对帧进行编码。指令可以包括与通常由于运动而导致的帧之间的相似数据的位置的差异相关联的信息。该差异通常由运动向量和预测误差表示。然后,编码器将编码的帧和/或指令发送到解码器,在解码器中可以对编码的帧和/或指令进行解码并重构图像帧。通常的做法是使用与识别出的视频压缩标准相关联的已知视频压缩格式对视频帧进行编码,其中最流行的一种视频压缩标准是itu的h.265标准。
[0063]
使用互联网协议(ip)发送h.265编码的视频帧通常涉及对帧或子帧进行分组化,并且使用用户数据报协议(udp)或传输控制协议(tcp)将分组发送到编码器。udp使用具有最少协议机制的简单无连接通信模型,强调减少延时,并且使其适合于对时间敏感的应用,在这些应用中,丢弃分组比等待由于tcp要求的重传而延迟的分组更可取。
[0064]
h.265编码的视频帧可以被划分为三种类型的帧(或子帧):i帧,b帧和p帧。i帧通常被称为内部编码帧(内部帧),并且在不参考其它帧的情况下进行编码。p帧通常被称为预测中间编码帧(中间帧),并且关于过去的i帧和p帧进行编码。b帧通常被称为双向预测中间帧,并且关于过去和将来的i帧和p帧进行编码。
[0065]
根据本发明的实施例,提供了一种在udp分组中传输视频数据的方法,该方法包括:在编码器处将视频数据编码为图片组(gop),每个gop具有单个i帧和多个p帧,并且在udp分组中传输gop的每个帧或子帧。该方法还可以包括:在解码器处,检查所有传输的udp分组的接收,并且响应于所有传输的udp分组的接收而从解码器向编码器发送反馈。
[0066]
在一些实施例中,反馈可以包括ack(确认)消息。可选地,ack消息可以包括与最后接收到的帧相关联的索引号。在一些实施例中,该方法还可以包括:在每个udp分组中包括与正在发送的帧或子帧相关联的索引号和与要发送的后续i帧或i子帧相关联的索引号。在一些实施例中,在接收到ack消息时,编码器可以用与ack消息中的索引号相关联的新索引号替换与后续i帧或i子帧相关联的索引号。可选地,新索引号可以包括多个p帧中的p帧的数量。在一些实施例中,该方法还可以包括响应于反馈而仅发送p帧或p子帧。
[0067]
根据本发明的实施例,提供了一种在udp视频传输中的分组错误隐藏的方法,包括:在编码器处以之字形次序布置与帧或子帧相关联的dct抽头,量化dct抽头,根据量化的dct抽头创建帧或子帧的第一描述,根据量化的dct抽头创建帧或子帧的第二描述,并且将第一描述和第二描述在单独的udp分组中发送到解码器。
[0068]
在一些实施例中,量化dct抽头可以包括两个值q1和q2,使得q1<<q2。在一些实施例中,第一描述可以包括针对偶数抽头的q1和针对奇数抽头的q2。替代地,第一描述可以包括针对奇数抽头的q1和针对偶数抽头的q2。
[0069]
在一些实施例中,可以在量化点
…-
5、-3、-1、0、2、4、6

附近对第一描述中的dct
抽头进行量化。在一些实施例中,可以在量化点
…-
6、-4、-2、0、1、3、5

附近对第二描述中的dct抽头进行量化。
[0070]
在一些实施例中,可以在量化点
…-
9、-6、-3、0、1、2、3

附近对第一描述中的dct抽头进行量化。在一些实施例中,可以在量化点
…-
3、-2、-1、0、3、6、9

附近对第二描述中的dct抽头进行量化。
[0071]
在一些实施例中,该方法还可以包括:在解码器处,使用第一描述进行分组错误隐藏。该方法还可以包括:在解码器处,使用第二描述进行分组错误隐藏。在一些实施例中,该方法还可以包括:在解码器处,使用最大比率组合(mrc)来对第一描述中的量化的dct抽头与第二描述中的量化的dct抽头取平均。该平均可以包括加权平均。
[0072]
在一些实施例中,该方法还可以包括:在解码器处,在量化点
…-
2、-1、0、1、2、

附近对第一描述和第二描述进行解码。
[0073]
在一些实施例中,第二描述可以仅包括运动向量。
[0074]
在一些实施例中,可以将h.265视频数据编码成由i帧或子帧(i)和p帧或子帧(p)组成的一组图片(gop),例如,ippppippp
……
ipppp。为了方便下文,术语“帧”和“子帧”可以互换使用。在gop中使用许多i帧可能是不利的,因为它可能会形成大的有效载荷,甚至可能是p帧形成的有效载荷的10倍大。在另一方面,它提供了鲁棒性的优势,因为可以在不使用存储器的情况下对i帧进行解码,从而可以快速地从错误中恢复。通常基于先前的i帧或p帧的许多p帧的使用可能是有利的,因为它可以形成小的、紧凑的有效载荷。然而,其缺点是错误传播可能会扩展直到下一i帧的开始。
[0075]
申请人已经认识到,在由单个i帧后跟随多个p帧组成的gop中,选择的p帧的数量m要求在大的m和小的m之间进行权衡,大的m会导致低的比特率但长的错误传播时间,而小的m会导致高的比特率但短的错误传播时间。申请人进一步认识到,为了利用由大的m提供的低比特率和由小的m提供的短错误传播速率,gop可以包括单个i帧(或i子帧),其后跟随相对较小数量m的p帧(或p子帧),以防止长的错误传播时间,但是通过合并来自解码器的已成功接收到分组的反馈,编码器可以继续发送p帧,而不必发送i帧。
[0076]
解码器可能未接收到udp分组,并且udp通常不采用ack消息。因此,申请人已引入了ack消息以提供反馈,并且当已经接收到每个帧的所有udp分组时(或者当已经接收到子帧的所有分组时),该ack消息可以通过应用层从解码器发送到编码器。
[0077]
每个udp分组可以包括关于分组中当前帧的编号的信息,并且可以另外包括待发送的下一i帧的索引号。由于ack消息可能没有被编码器接收到,或者可能会以一定的延迟到达,因此,在接收到ack消息时,编码器可以用新索引号替换udp分组中下一i帧的索引号,该新索引号包括针对其接收ack的最后接收到的帧的索引号,以及最后接收到的帧后跟随的p帧的数量m。如果编码器在发送m个p帧之后没有接收到新的ack消息,则编码器可以返回发送包括i帧的新的gop。
[0078]
申请人通过以上实现所描述的方法的实现方式可以提供一个或多个益处或优点,例如:
[0079]
(a)只要没有错误,就可以仅发送p帧分组;
[0080]
(b)由于在下载延时和上传延时之间没有联系,所以上传延时可能相对较大;
[0081]
(c)上传帧的延迟要求是m个帧,这可能相对容易实现;
[0082]
(d)用于上传的分组错误率(per)可以由m-1/m表示,例如,可以接受70%的per;
[0083]
(e)可以将错误传播限制为m个帧,并且将平均错误传播限制为m/2个帧;和/或
[0084]
(f)在i帧分组和p帧分组之间的比率可以遵循udp per,从而如果udp per比率改变,则i帧与p帧的比率也可以改变。
[0085]
per是udp的特性。可以使用前向纠错(fec),但有时可能会失败,因此可以替代使用基于先前帧的隐藏方法来弥补丢失的分组。这种类型的隐藏方法可以称为“零开销隐藏”,因为它不要求任何传输有效载荷。然而,由于错误传播,隐藏事件可能会比一个帧长,并且可能会持续到下一i帧,这要求在隐藏期间将视频质量维持在合理的质量。
[0086]
申请人进一步认识到,可以通过在单独的udp分组中传输视频数据的多个描述来克服与零开销隐藏相关联的问题。可选地,多个描述可以包括两个描述,每个描述在udp分组中传输。解码器然后可以在接收到所有传输的分组的情况下使用它们,或者替代地,可以在下文描述并且在下文中称为“小开销隐藏”的方法中仅使用那些接收到的分组。可选地,如果仅传输两个描述,则在接收到两个udp分组的情况下解码器可以使用两个描述,或者在仅接收到一个的情况下仅使用一个描述。
[0087]
在本发明的第一实施例中,编码器可以以之字形次序布置dct抽头,可以量化它们的值q,使得q1<<q2,然后可以创建两个描述,其中第一描述可以包括针对偶数抽头的q1和针对奇数抽头的q2,并且其中第二描述可以包括针对奇数抽头的q1和针对偶数抽头的q2。然后这两个描述可以在单独的udp分组中发送,并且可以基于是仅一个描述还是两个描述到达而由解码器进行解码。如果仅一个描述到达,则解码器然后可以将该描述用于小开销隐藏。如果两个描述都到达,则解码器可以使用最大比率组合(mrc)来使用加权平均对第一描述中的抽头和第二描述中的抽头取平均。在每个描述中,在q2中量化的大多数抽头可以等于“0”,由此占据分组有效载荷的一小部分。对于帧间预测,编码器可以假定解码器接收了两个描述,并且执行了mrc以生成参考图像。
[0088]
在本发明的第二实施例中,编码器可以以之字形次序布置dct抽头,并且可以创建两个描述,在第一描述中,在点
…-
5、-3、-1、0、2、4、6

附近量化dct抽头的量化值q,并且在第二描述中,在点
…-
6、-4、-2、0、1、3、5

附近量化。这两个描述可以在单独的udp分组中发送,并且可以基于是仅一个描述还是两个描述到达而由解码器解码。如果仅一个描述到达,则解码器然后可以将该描述用于小开销隐藏。如果两个描述都到达,则解码器可以在量化点附近以分辨率
…-
2、-1、0、1、2

对接收到的描述进行解码。可以注意到,每个描述中的长度(有效载荷)比完整描述(
…-
2、-1、0、1、2

)低得多。可以估计,对于典型的预算,当每个抽头的平均比特率低于1.5时,每个描述的长度可能约为完整描述的一半。
[0089]
在本发明的第三实施例中,编码器可以以之字形次序布置dct抽头,并且可以创建两个描述,在第一描述中,在点
…-
9、-6、-3、0、1、2、3

附近量化dct抽头的量化值q,并且在第二描述中,在点
…-
3、-2、-1、0、3、6、9

附近量化。这两个描述可以在单独的udp分组中发送,并且可以基于是仅一个描述还是两个描述到达而由解码器解码。如果仅一个描述到达,则解码器然后可以将该描述用于小开销隐藏。如果两个描述都到达,则解码器可以在量化点附近以分辨率
…-
2、-1、0、1、2

对接收到的描述进行解码。可以注意到,每个描述中的长度(有效载荷)比完整描述(
…-
2、-1、0、1、2

)低得多。可以估计,对于典型的预算,当每个抽头的平均比特率低于1.5时,每个描述的长度可能约为完整描述的一半。
[0090]
在本发明的第四实施例中,编码器可以为p帧创建两个描述。第一描述可以包括完整描述,而第二描述可以包括运动向量(mv),而没有残差的dct。这两个描述可以在单独的udp分组中发送,可以基于是仅一个描述还是两个描述到达而由解码器解码。如果仅一个描述到达,则解码器然后可以将该描述用于小开销隐藏。如果第一描述到达,则解码器可以使用该描述。如果第一描述没有到达,则解码器可以将第二描述用于mv,并且可以将“0”用于残差。可选地,由于第二描述为100%开销,因此第二描述中的mv分辨率可以低于第一描述中的mv分辨率,以降低第二描述的比特率。
[0091]
参考图5,其是根据本发明的一些说明性实施例的在使用udp分组的视频传输中最小化比特率和错误传播的示例性方法的流程图。该方法可以以更多的步骤或更少的步骤和/或可选地以不同次序布置的步骤来实践。
[0092]
在步骤500处,可以对具有单个i帧(i)和多个p帧(p)的gop进行编码。可选地,可以使用子帧代替整个帧(i子帧和p子帧)。为了避免长的传播错误,可以将p帧的数量m选择为相对较低,例如,m=4。也就是说,使用m=4,得出gop=ipppp,并且对于3个gop=ippppippppipppp。
[0093]
在步骤502处,可以在udp分组中对每个帧(或子帧)进行分组化。每个分组有效载荷可以包括与有效载荷中的当前帧(或子帧)相关联的索引号。有效载荷还可以包括与(在后一gop中)要传输的下一i帧(或子帧)相关联的索引号。
[0094]
在步骤504处,可以将所有udp分组发送到解码器。
[0095]
在步骤506处,解码器可以检查是否接收到所有udp分组。如果是,则继续至108。如果否,则解码器继续等待新的帧(或子帧)。
[0096]
在步骤508处,解码器可以向编码器发送指示接收到帧或子帧的所有分组的ack消息。
[0097]
在步骤510处,可以在编码器处进行检查以查看是否接收到ack消息。如果是,则继续到步骤512。如果否,则继续到步骤514。
[0098]
在步骤512处,编码器可以在分组中用与针对其接收到ack消息的接收到的最后一个帧(或子帧)相关联的索引号(n)加上在与ack消息相关联的帧之后发送的p帧的数量4来替代要传输的下一i帧(nnexti)的索引号。只要从解码器接收到ack消息而不发送i帧,编码器就可以继续发送4个p帧(或子帧)的组。
[0099]
在步骤514处,编码器结束发送4个p帧。此后,继续到步骤502。要传输的后一帧可以是与下一gop相关联的i帧。
[0100]
参考图6,其是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的示例性方法的流程图。该方法可以以更多的步骤或更少的步骤和/或可选地以不同次序布置的步骤来实践。
[0101]
在步骤600处,可以由编码器以之字形次序布置与帧(或子帧)相关联的dct抽头。
[0102]
在步骤602处,可以以两个值q1和q2量化dct抽头,其中q1<<q2。可选地,q2可以是q1的小数整数倍,例如,q2=3.5xq1。
[0103]
在步骤604处,编码器可以使用针对偶数抽头的q1和针对奇数抽头的q2来创建帧(或子帧)的第一描述。
[0104]
在步骤606处,编码器可以使用针对奇数抽头的q1和针对偶数抽头的q2来创建帧
(或子帧)的第二描述。
[0105]
在步骤608处,可以将第一描述和第二描述各自分组化并分别在单独的udp分组中发送到解码器。
[0106]
在步骤610处,解码器可以检查以查看第一描述和第二描述是否到达。如果仅描述之一到达,则转到步骤612。如果两个描述都到达,则转到步骤614。
[0107]
在步骤612处,解码器可以使用接收到的描述(第一或第二)来执行小开销隐藏。
[0108]
在步骤614处,解码器可以使用两个接收到的描述来执行小开销隐藏。解码器可以执行mrc以在两个描述中的dct抽头之间取平均。
[0109]
参考图7,其是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的示例性方法的流程图。该方法可以以更多的步骤或更少的步骤和/或可选地以不同次序布置的步骤来实践。
[0110]
在步骤700处,可以由编码器以之字形次序布置与帧(或子帧)相关联的dct抽头。
[0111]
在步骤702处,解码器可以以在量化点
…-
5、-3、-1、0、2、4、6

附近量化的dct抽头创建帧(或子帧)的第一描述。
[0112]
在步骤704处,解码器可以以在量化点
…-
6、-4、-2、0、1、3、5

附近量化的dct抽头创建帧(或子帧)的第二描述。
[0113]
在步骤706处,可以将第一描述和第二描述各自分组化并分别在单独的udp分组中发送到解码器。
[0114]
在步骤708处,解码器可以检查以查看第一描述和第二描述是否到达。如果仅描述之一到达,则转到步骤710。如果两个描述都到达,则转到步骤712。
[0115]
在步骤710处,解码器可以使用接收到的描述(第一或第二)来执行小开销隐藏。
[0116]
在步骤712处,解码器可以使用两个接收到的描述来执行小开销隐藏。例如,解码器可以在量化点
…-
2、-1、0、1、2

附近解码。
[0117]
参考图8,其是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执行小开销隐藏的示例性方法的流程图。该方法可以以更多的步骤或更少的步骤和/或可选地以不同次序布置的步骤来实践。
[0118]
在步骤800处,可以由编码器以之字形次序布置与帧(或子帧)相关联的dct抽头。
[0119]
在步骤802处,解码器可以以在量化点
…-
9、-6、-3、0、1、2、3

附近量化的dct抽头创建帧(或子帧)的第一描述。
[0120]
在步骤804处,解码器可以以在量化点
…-
3、-2、-1、0、3、6、9

附近量化的dct抽头创建帧(或子帧)的第二描述。
[0121]
在步骤806处,可以将第一描述和第二描述各自分组化并分别在单独的udp分组中发送到解码器。
[0122]
在步骤808处,解码器可以检查以查看第一描述和第二描述是否到达。如果仅描述之一到达,则转到步骤810。如果两个描述都到达,则转到步骤812。
[0123]
在步骤810处,解码器可以使用接收到的描述(第一或第二)来执行小开销隐藏。
[0124]
在步骤812处,解码器可以使用两个接收到的描述来执行小开销隐藏。解码器可以例如在量化点
…-
2、-1、0、1、2

附近解码。
[0125]
参考图9,其是根据本发明的一些说明性实施例的在使用udp分组的视频传输中执
行小开销隐藏的第四示例性方法的流程图。该方法可以以更多的步骤或更少的步骤和/或可选地以不同次序布置的步骤来实践。
[0126]
在步骤900处,可以由编码器以之字形次序布置与帧(或子帧)相关联的dct抽头。
[0127]
在步骤902处,解码器可以创建帧(或子帧)的第一描述,该第一描述可以是该帧的完整描述。
[0128]
在步骤904处,解码器可以创建帧(或子帧)的第二描述,该第二描述可以仅包括运动向量(mv)而没有残差的dct。
[0129]
在步骤906处,可以将第一描述和第二描述各自分组化并分别在单独的udp分组中发送到解码器。
[0130]
在步骤908处,解码器可以检查以查看第一描述是否到达。如果到达,则继续到步骤910。如果没有到达,则继续到步骤912。
[0131]
在步骤910处,解码器可以使用第一描述来执行小开销隐藏。
[0132]
在步骤912处,解码器可以使用第二描述来执行小开销隐藏。解码器可以使用mv并且将“0”用于残差来解码。
[0133]
一些实施例可以包括用于在udp分组中传输视频数据以及用于分组错误隐藏的方法和系统。一种传输视频的方法包括,在编码器处:将视频数据编码为图片组(gop),每个gop具有单个i帧和多个p帧;并且在udp分组中传输gop的每个帧或子帧。该方法包括,在解码器处:检查所有传输的udp分组的接收,并且响应于所有传输的udp分组的接收,从解码器向编码器发送反馈。一种错误隐藏的方法包括,在编码器处:以之字形次序布置与帧或子帧相关联的dct抽头;量化dct抽头;根据量化的dct抽头创建帧或子帧的第一描述;根据量化的dct抽头创建帧或子帧的第二描述;并且将第一描述和第二描述在单独的udp分组中发送到解码器。
[0134]
在一些实施例中,一种在udp分组中传输视频数据的方法可以包括:在编码器处,将视频数据编码为图片组(gop),每个gop包括单个i帧和多个p帧;在udp分组中传输gop的每个帧或子帧;在解码器处,检查所有所述传输的udp分组的接收;并且响应于所有所述传输的udp分组的接收,从所述解码器向所述编码器发送反馈。在一些实施例中,所述反馈包括确认(ack)消息。
[0135]
在一些实施例中,该方法还包括:在每个udp分组中,包括(i)与正在传输的帧或子帧相关联的索引号,以及(ii)与要传输的后续i帧或i子帧相关联的索引号。
[0136]
在一些实施例中,所述ack消息包括与最后接收到的帧相关联的索引号。
[0137]
在一些实施例中,该方法包括:在接收到所述ack消息时,所述编码器用(ii)与所述ack消息中的所述索引号相关联的新索引号替代(i)与所述后续i帧或i子帧相关联的所述索引号。在一些实施例中,所述新索引号包括所述多个p帧中的p帧的数量。在一些实施例中,该方法包括:响应于所述反馈而仅传输p帧或p子帧。一些实施例可以包括一种在udp视频传输中的分组错误隐藏的方法。该方法可以包括,在编码器处,以之字形次序布置与帧或子帧相关联的dct抽头;量化所述dct抽头;根据所述量化的dct抽头创建所述帧或子帧的第一描述;根据所述量化的dct抽头创建所述帧或子帧的第二描述;将所述第一描述和所述第二描述在单独的udp分组中发送到解码器。
[0138]
在一些实施例中,量化所述dct抽头包括两个值q1和q2,使得q1<<q2。在一些实施
例中,所述第一描述包括针对偶数抽头的q1和针对奇数抽头的q2。在其它实施例中,所述第一描述包括针对奇数抽头的q1和针对偶数抽头的q2。
[0139]
在一些实施例中,在所述第一描述中的所述dct抽头在量化点
…-
5、-3、-1、0、2、4、6

附近被量化。在一些实施例中,在所述第二描述中的所述dct抽头在量化点
…-
6、-4、-2、0、1、3、5

附近被量化。在一些实施例中,在所述第一描述中的所述dct抽头在量化点
…-
9、-6、-3、0、1、2、3

附近被量化。在一些实施例中,在所述第二描述中的所述dct抽头在量化点
…-
3、-2、-1、0、3、6、9

附近被量化。在一些实施例中,该方法还包括:在解码器处,使用所述第一描述进行分组错误隐藏。在一些实施例中,该方法还包括:在解码器处,使用所述第二描述进行分组错误隐藏。在一些实施例中,该方法还包括:在解码器处,使用最大比率组合(mrc)来对所述第一描述中的所述量化的dct抽头与所述第二描述中的所述量化的dct抽头进行取平均。在一些实施例中,所述平均包括加权平均。
[0140]
在一些实施例中,该方法还包括:在解码器处,在量化点
…-
2、-1、0、1、2

附近对所述第一描述和所述第二描述进行解码。
[0141]
在一些实施例中,该方法还包括:在所述第二描述中仅包括运动向量。
[0142]
本文讨论了本发明的一些附加实施例,并且它们可以可选地与先前讨论的实施例的特征和/或组件和/或步骤组合。
[0143]
虽然出于说明的目的,本文中讨论的部分涉及有线链路和/或有线通信,但是一些实施例不限于此,而是可以利用有线通信和/或无线通信;可以包括一个或多个有线和/或无线链路;可以利用有线通信和/或无线通信的一个或多个组件;和/或可以利用一种或多种无线通信的方法或协议或标准。
[0144]
可以通过使用不是通用计算机的专用机器或专用设备,或者通过使用非一般计算机或非通用计算机或机器,来实现一些实施例。这样的系统或设备可以利用或可以包括一个或多个组件或单元或模块,这些组件或单元或模块不是“一般计算机”的一部分,也不是“通用计算机”的一部分,例如,蜂窝收发机,蜂窝发射机,蜂窝接收机,gps单元,位置确定单元,加速度计,陀螺仪,设备定向检测器或传感器,设备定位检测器或传感器等。
[0145]
一些实施例可以作为或通过利用自动化方法或自动化过程或机器实现的方法或过程被实现,或被实现为半自动化或部分自动化的方法或过程,或被实现为可以由计算机或机器或系统或其它设备执行或实现的步骤或操作的集合。
[0146]
一些实施例可以通过使用代码或程序代码或机器可读指令或机器可读代码来实现,这些代码或指令可以存储在非暂时性存储介质或非暂时性存储物品(例如,cd-rom,dvd-rom,物理存储器单元,物理存储单元)内,从而程序或代码或指令在由处理器或机器或计算机执行时使这种处理器或机器或计算机执行本文描述的方法或过程。这种代码或指令可以是或可以包括例如以下中的一项或多项:软件,软件模块,应用,程序,子例程,指令,指令集,计算代码,字,值,符号,字符串,变量,源代码,编译代码,解释代码,可执行代码,静态代码,动态代码;包括(但不限于)以下形式的代码或指令:高级编程语言,低级编程语言,面向对象的编程语言,可视化编程语言,编译编程语言,解释编程语言,c,c++,c#,java,javascript,sql,ruby on rails,go,cobol,fortran,actionscript,ajax,xml,json,lisp,eiffel,verilog,硬件描述语言(hdl),basic,visual basic,matlab,pascal,html,html5,css,perl,python,php,机器语言,机器代码,汇编语言等。
[0147]
本文利用诸如“处理”、“计算”、“运算”、“确定”、“建立”、“分析”、“检查”、“检测”、“测量”等的术语的讨论可以指处理器、计算机、计算平台、计算系统或其它电子设备或计算设备的操作和过程,该操作和过程可以自动和/或自主地将表示为寄存器和/或累加器和/或存储器单元和/或存储单元内的物理(例如,电子)量的数据操纵和/或转换为其它数据或可以执行其它合适的操作。
[0148]
如本文所使用的,术语“多个”和“许多”包括例如“多个”或“两个或更多个”。例如,“多个项目”包括两个或更多个项目。
[0149]
对“一个实施例”、“实施例”、“说明性实施例”、“各种实施例”、“一些实施例”和/或类似术语的引用可以指示这样描述的实施例可以可选地包括特定特征、结构或特性,但并非每个实施例都必须包括该特定特征、结构或特性。此外,重复使用短语“在一个实施例中”不一定指代同一实施例,但是也可以指代同一实施例。类似地,重复使用短语“在一些实施例中”不一定指代实施例的相同集合或组,但是也可以指代实施例的相同集合或组。
[0150]
如本文所使用的,除非另有说明,否则使用序数形容词(例如,“第一”、“第二”、“第三”、“第四”等)来描述项目或对象仅指示这种类似项目或对象的不同实例被引用;而并不旨在暗示这样描述的项目或对象必须在时间、空间、排名或任何其它排序方式上都处于特定的给定序列中。
[0151]
一些实施例可以用在各种设备和系统中或与之结合使用,例如,个人计算机(pc),台式计算机,移动计算机,膝上型计算机,笔记本计算机,平板计算机,服务器计算机,手持计算机,手持设备,个人数字助理(pda)设备,手持pda设备,平板计算机,机载设备,非机载设备,混合设备,车辆设备,非车辆设备,移动或便携式设备,消费者设备,非移动或非便携式设备,家电,无线通信站,无线通信设备,无线接入点(ap),有线或无线路由器或网关或交换机或中心,有线或无线调制解调器,视频设备,音频设备,音频视频(a/v)设备,有线或无线网络,无线局域网,无线视频局域网(wvan),局域网(lan),无线lan(wlan),个域网(pan),无线pan(wpan)等。
[0152]
一些实施例可以与以下各项结合使用:单向和/或双向无线电通信系统,蜂窝无线电电话通信系统,移动电话,蜂窝电话,无线电话,个人通信系统(pcs)设备,并入无线通信功能的pda或手持设备,移动或便携式全球定位系统(gps)设备,并入gps接收机或收发机或芯片的设备,并入rfid元件或芯片的设备,多输入多输出(mimo)收发机或设备,单输入多输出(simo)收发机或设备,多输入单输出(miso)收发机或设备,具有一个或多个内部天线和/或外部天线的设备,数字视频广播(dvb)设备或系统,多标准无线电设备或系统,有线或无线手持设备(例如,智能电话),无线应用协议(wap)设备等。
[0153]
一些实施例可以包括“app”或应用或可以通过使用“app”或应用实现,该“app”或应用可以免费或收费地从“app商店”或“应用商店”下载或获得,或者可以预安装在计算设备或电子设备上,或者可以以其它方式被传输到和/或安装在这样的计算设备或电子设备上。
[0154]
一些实施例包括一种经由互联网协议(ip)上用户数据报协议(udp)通信链路传输视频的方法。该方法包括:由视频编码器按所述视频的每个帧生成压缩数据的n个分组的集合,其中,n是自然数;在针对所述视频的特定帧生成每个n个分组的集合时,经由所述ip上udp通信链路,立即执行对与单个编码视频帧相对应的所述n个分组的集合的所述传输,而
不等待对所述视频的任何其它视频帧的编码或分组化;其中,所述视频帧的每个分组至少包括:(i)粗糙视频数据分组部分,以及(ii)精细视频数据分组部分。
[0155]
在一些实施例中,该方法包括:针对每个分组的粗糙视频数据分组部分维护以字节为单位的固定大小(s2),其中,大小(s2)在与所述单个特定视频帧相对应的整个所述分组的集合中是固定的;针对每个分组的精细视频数据分组部分维护以字节为单位的固定大小(s3),其中,大小(s3)在与所述单个特定视频帧相对应的整个所述分组的集合中是固定的。在一些实施例中,该方法包括:针对所述视频的不同帧,动态地改变所利用的s2和s3的值;其中,s2的值跨所述视频的每个帧的所有分组保持固定,但是在所述视频的至少一个其他帧中改变为不同的s2的值;其中,s3的值跨所述视频的每个帧的所有分组保持固定,但是在所述视频的至少一个其他帧中改变为不同的s3的值。
[0156]
在一些实施例中,该方法包括:动态地增加粗糙视频数据分组部分的大小,并且相应地动态地减小精细视频数据分组部分的大小,以便以特定帧的精细视频数据为代价使所述特定帧的增加的粗糙视频数据量适应。
[0157]
在一些实施例中,该方法包括:在按每个视频帧传输的分组的集合中,指定第一数量(c1)的粗糙视频数据分组部分在其中携带粗糙视频数据,以及指定第二数量(c2)的粗糙视频数据分组部分在其中携带用于所述粗糙视频数据的前向纠错(fec)码的冗余数据,而不是在其中携带粗糙视频数据。
[0158]
在一些实施例中,该方法包括:在按每个视频帧传输的分组的集合中,指定第一数量(f1)的精细视频数据分组部分在其中携带精细视频数据,以及指定第二数量(f2)的精细视频数据分组部分在其中携带用于所述精细视频数据的前向纠错(fec)码的冗余数据,而不是在其中携带精细视频数据。
[0159]
在一些实施例中,该方法包括:选择c1和c2以及f1和f2的值,其中n是针对特定视频帧传输的分组的总数,其中c1+c2=n,其中f1+f2=n,其中f1>c1。如上文和/或本文所使用的术语“选择”可以包括例如:定义,配置,设置,从预先定义的选项的预先定义的列表中选择,基于一个或多个预先定义的选择规则进行选择,在每个视频基础上或在每个帧基础上或在其它基础上(例如,每个视频段,其中视频段跨越t秒,例如,10或30或60秒)定义值,或以其它方式基于一个或多个预先定义的标准或条件或基于预设值确定这种值。
[0160]
在一些实施例中,该方法包括:选择n和c1和c2以及f1和f2的值,其中n为9,其中c1为5,其中c2为4,其中f1为8,其中f2为1。
[0161]
在一些实施例中,该方法包括:其中,所述视频帧的每个分组包括:(i)头部分组部分,以及(ii)粗糙视频数据分组部分,以及(iii)精细视频数据分组部分;其中,该方法包括:针对与单个特定视频帧相对应的分组的集合中的每个分组的头部分组部分维护以字节为单位的固定大小(s1),其中,大小(s1)在整个所述分组的集合中是固定的;针对每个分组的粗糙视频数据分组部分维护以字节为单位的固定大小(s2),其中,大小(s2)在与所述单个特定视频帧相对应的整个所述分组的集合中是固定的;针对每个分组的精细视频数据分组部分维护以字节为单位的固定大小(s3),其中,大小(s3)在与所述单个特定视频帧相对应的整个所述分组的集合中是固定的。
[0162]
在一些实施例中,所述视频帧的每个分组包括:(i)头部分组部分,以及(ii)粗糙视频数据分组部分,以及(iii)精细视频数据分组部分;其中,该方法包括:针对所述视频的
不同帧,动态地改变所利用的s1和s2和s3的值;其中,s1的值跨所述视频的每个帧的所有分组保持固定,但是在所述视频的至少一个其他帧中改变为不同的s1的值;其中,s2的值跨所述视频的每个帧的所有分组保持固定,但是在所述视频的至少一个其他帧中改变为不同的s2的值;其中,s3的值跨所述视频的每个帧的所有分组保持固定,但是在所述视频的至少一个其他帧中改变为不同的s3的值。
[0163]
在一些实施例中,该方法包括:在视频帧的所述n个分组的集合中,指定第一数量(h1)的视频头部数据分组部分在其中携带视频头部数据,以及指定第二数量(h2)的视频头部数据分组部分在其中携带用于所述视频头部数据的前向纠错(fec)码的冗余数据,而不是在其中携带视频头部数据。
[0164]
在一些实施例中,该方法包括:选择n和h1和h2以及c1和c2以及f1和f2的值,其中c1<f1,其中h1小于或等于c1。
[0165]
在一些实施例中,该方法包括:选择n和h1和h2以及c1和c2以及f1和f2的值,其中n为9,其中h1为3,其中h2为4,其中c1为5,其中c2为4,其中f1为8,其中f2为1。
[0166]
在一些实施例中,该方法包括:如果被指定为携带特定帧的精细视频数据的精细视频数据分组部分的数量不足以携带所述特定帧的所有精细视频数据,则:将所述特定帧的精细视频数据存储在先前被指定用于存储精细视频数据的前向纠错(fec)码的冗余字节的至少一个精细视频数据分组部分中。
[0167]
在一些实施例中,该方法包括:如果被指定为携带特定帧的精细视频数据的精细视频数据分组部分的数量不足以携带所述特定帧的所有精细视频数据,则:动态增加f1的值,并且相应地动态地减小f2的值。
[0168]
在一些实施例中,该方法包括:在操作以接收所述视频传输的接收设备处,基于针对特定视频帧接收的接收到的视频头部部分中的信息,针对所述特定视频帧的分组的集合确定新的f1和f2的值。
[0169]
在一些实施例中,该方法包括:如果被指定为携带特定帧的粗糙视频数据的粗糙视频数据分组部分的数量不足以携带所述特定帧的所有粗糙视频数据,则:将所述特定帧的粗糙视频数据存储在先前被指定用于存储所述特定帧的精细视频数据的至少一个分组部分中。
[0170]
在一些实施例中,该方法包括:在操作以接收所述视频传输的接收设备处,基于针对特定视频帧接收的接收到的视频头部部分中的信息,针对所述特定视频帧的分组的集合确定新的c1和c2的值。
[0171]
在一些实施例中,针对所述视频的每个帧生成的每个分组的集合,利用以下两项的固定比率(r1):(i)被指定为携带粗糙视频数据的分组部分与(ii)被指定为携带粗糙视频数据的前向纠错(fec)码的分组部分;并且还利用以下两项的固定比率(r2):(i)被指定为携带精细视频数据的分组部分与(ii)被指定为携带精细视频数据的前向纠错(fec)码的分组部分;并且还利用以下两项的固定比率(r3):(i)被指定为携带视频头部数据的分组部分与(ii)被指定为携带视频头部数据的前向纠错(fec)码的分组部分。
[0172]
在一些实施例中,针对所述视频的每个帧生成的每个n个分组的集合至少包括:(i)存储视频头部信息的第一数量(h1)的视频头部分组部分,以及(ii)存储所述视频头部视频信息的前向纠错(fec)冗余的第二数量(h2)的视频头部分组部分;并且如果预先定义
的大小约束允许,则还包括:(i)存储粗糙视频数据的第一数量(c1)的粗糙视频数据分组部分,以及(ii)存储所述粗糙视频数据的前向纠错(fec)冗余的第二数量(c2)的分组部分;并且如果预先定义的大小约束允许,则还包括:(iii)存储精细视频数据的第一数量(f1)的精细视频数据分组部分,以及(iv)存储所述精细视频数据的前向纠错(fec)冗余的第二数量(f2)的分组部分。
[0173]
在一些实施例中,该方法包括:基于针对每个视频帧的所述n个分组的集合的预先定义的字节大小约束,针对特定视频帧,动态地确定从所述n个分组的集合中排除用于特定视频帧的精细视频数据的前向纠错(fec)码的冗余数据中的至少一些冗余数据。
[0174]
在一些实施例中,该方法包括:基于针对每个视频帧的所述n个分组的集合的预先定义的字节大小约束,针对特定视频帧,动态地确定从所述n个分组的集合中排除(i)用于特定视频帧的精细视频数据的前向纠错(fec)码的冗余数据中的至少一些冗余数据,以及(ii)所述特定视频帧的精细视频数据中的至少一些精细视频数据。
[0175]
在一些实施例中,该方法包括:基于针对每个视频帧的所述n个分组的集合的预先定义的字节大小约束,针对特定视频帧,动态地确定从所述n个分组的集合中排除(i)用于特定视频帧的精细视频数据的前向纠错(fec)码的整个冗余数据,以及(ii)所述特定视频帧的整个精细视频数据。
[0176]
在一些实施例中,该方法包括:在操作以接收所述视频传输的接收设备处,解码所述特定视频帧中的其精细视频数据从由发送设备进行发送中被排除的一个或多个子帧。
[0177]
在一些实施例中,该方法包括:在操作以接收所述视频传输的接收设备处,仅接收特定视频帧的部分而非全部精细视频数据;如果接收设备的fec解码器具有足够的信息来重构所述特定视频帧的全部精细视频数据,则重构所述特定视频帧的全部精细视频数据;如果接收设备的fec解码器没有足够的信息来重构所述特定视频帧的全部精细视频数据,则重构所述特定视频帧的至少一个或多个精细子帧。
[0178]
在一些实施例中,该方法包括:设置每帧分组的上限值nmax,其约束所述视频的每个帧的传输,其中,nmax是对于所述视频的所有帧都统一的自然数,其中,通过使用每帧多达nmax个分组来传输所述视频的每个帧的压缩视频数据。
[0179]
在一些实施例中,该方法包括:在视频编码器处,针对所述视频的特定帧生成压缩视频的k个分组,其中,k是跨所述视频的所有帧不一定固定的自然数;如果k小于或等于nmax,则传输所述帧的所有k个分组;如果k大于nmax,则:仅传输所述帧的所述k个分组中的前nmax个分组,并且避免传输所述帧的超出前nmax个分组的分组。例如,视频编码器可以针对特定视频帧生成15个分组,使得k=15;然而,每帧分组的最大值可以是nmax=12;因此,针对该帧仅传输前12个分组,使得针对该特定帧的分组的集合中n=12。
[0180]
在一些实施例中,每个视频帧的所述n个分组的集合中的每个分组包括视频头部部分,所述视频头部部分被用作所传输的子帧的粗糙视频数据和精细视频数据的映射;其中,即使所述视频帧的一些或全部前向纠错(fec)码由于太少字节的所述fec码在接收设备处到达而未被正确解码,所述视频头部也使得所述接收设备能够至少部分地利用到达的精细视频数据和/或到达的粗糙视频数据,以便解码所述视频帧的一个或多个子帧。
[0181]
本文中参照本发明的一个或多个实施例描述的功能、操作、组件和/或特征可以与参考本发明的一个或多个其它实施例在本文中描述的一个或多个其它功能、操作、组件和/
或特征组合或与其组合使用。因此,本发明可以包括本文描述的一些或所有模块或功能或组件的任何可能或适当的组合、重新布置、组装、重新组装或其它利用,即使它们在以上讨论的不同位置或不同章节中进行了讨论,或即使它们在不同的图或多个图上显示。
[0182]
虽然本文已经示出和描述了本发明的一些说明性实施例的某些特征,但是本领域技术人员可以想到各种修改、替换、改变和等同形式。因此,权利要求书旨在涵盖所有这样的修改、替代、改变和等同形式。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1