CN114531936A - 用于数据的鲁棒传输的包有效载荷映射 - Google Patents
用于数据的鲁棒传输的包有效载荷映射 Download PDFInfo
- Publication number
- CN114531936A CN114531936A CN202080067766.5A CN202080067766A CN114531936A CN 114531936 A CN114531936 A CN 114531936A CN 202080067766 A CN202080067766 A CN 202080067766A CN 114531936 A CN114531936 A CN 114531936A
- Authority
- CN
- China
- Prior art keywords
- packet
- frames
- frame
- sequence
- buffer
- 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
- 238000013507 mapping Methods 0.000 title abstract description 32
- 230000005540 biological transmission Effects 0.000 title abstract description 31
- 239000000872 buffer Substances 0.000 claims abstract description 181
- 238000000034 method Methods 0.000 claims abstract description 79
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008713 feedback mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0002—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
- H04L1/0003—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate by switching between different modulation schemes
- H04L1/0005—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate by switching between different modulation schemes applied to payload information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/167—Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1835—Buffer management
- H04L1/1841—Resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- 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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
- H04N19/895—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/005—Correction of errors induced by the transmission channel, if related to the coding algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0083—Formatting with frames or packets; Protocol or part of protocol for error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/04—Systems for the transmission of one television signal, i.e. both picture and sound, by a single carrier
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
描述了用于数据的鲁棒传输的包有效载荷映射的系统和方法。例如,该方法可以包括:使用网络接口接收包,各个包分别包括来自数据帧序列的主帧以及一个或多于一个先前帧,该一个或多于一个先前帧与主帧在帧序列中分开步幅参数的相应倍数;将包的帧存储在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;从缓冲器读取第一帧作为来自条目之一的主帧;确定为具有作为序列中的下一帧的主帧的包已经丢失;以及响应于该确定,从缓冲器读取下一帧作为来自条目之一的先前帧。
Description
技术领域
本公开涉及用于数据的鲁棒传输的包有效载荷映射。
背景技术
当利用通过网络应用的数据传输工作时,存在两种主要类型的互联网协议(IP)业务,传输控制协议(TCP)和用户数据报协议(UDP)。各个协议具有其自己的预期用途和优势。
例如,TCP是公知的确认模式协议。这意味着,当交换数据时,内置反馈机制检查并确认数据是否被正确接收。如果任何数据缺失或丢失,则进一步的机制重传损坏或缺失的信息。这些机制使TCP特别适合于传送诸如静止图像、数据文件和网页等的信息。虽然这种可靠性使得TCP非常适合于这些用例,但是确实是有代价的。为了保证稳定性,各个客户端接收它们自己的TCP流(称为单播),这意味着如果网络上存在许多客户端,则经常复制数据。这些控制和反馈机制导致更大的协议开销,这意味着网络连接上宝贵的带宽的更大百分比被用于发送该附加控制信息。除了附加带宽开销之外,数据的重传可能导致延迟的增加,使得实时应用受到影响。
另一方面,UDP是无确认模式协议,这意味着没有主动机制来重传在交换期间已丢失的数据。因此,在某些场景下,与TCP相比,UDP将是发送和接收数据的不良方式(例如,发送电子邮件或下载文件)。然而,其他因素使得UDP对于实时通信是优越的。在不确认UDP的情况下,占用可用于有用数据的宝贵空间的协议开销较少,从而使传输更快且更有效。
发明内容
本文公开了用于数据的鲁棒传输的包有效载荷映射的实现。
在第一方面,提供一种用于接收被分区成数据帧序列的数据的系统。所述系统包括:存储器、处理器以及网络接口。所述存储器存储所述处理器能够执行以使所述系统进行以下操作的指令:使用所述网络接口接收包,所述包各自分别包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数;将包的帧存储在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;从所述缓冲器读取第一帧作为来自所述缓冲器的所述条目之一的主帧;基于所述缓冲器确定为具有作为所述数据帧序列中的下一帧的主帧的包已经丢失;以及响应于确定为包丢失,从所述缓冲器读取所述下一帧作为来自所述缓冲器的所述条目之一的先前帧。
在第二方面,提供一种用于传输被分区成数据帧序列的数据的系统。所述系统包括:存储器、处理器以及网络接口。所述存储器存储所述处理器能够执行以使所述系统进行以下操作的指令:使用所述网络接口传输第一包,所述第一包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第一包的一个或多于一个先前帧与所述第一包的主帧在帧序列中分开步幅参数的相应倍数;以及使用所述网络接口传输第二包,所述第二包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第二包的一个或多于一个先前帧与所述第二包的主帧在帧序列中分开所述步幅参数的相应倍数,以及其中所述第一包的主帧是所述第二包的一个或多于一个先前帧之一。
在第三方面,提供一种用于接收被分区成数据帧序列的数据的方法。该方法包括:使用网络接口接收包,各个包分别包括来自数据帧序列的主帧以及一个或多于一个先前帧,其中相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数;将包的帧存储在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;从所述缓冲器读取第一帧作为来自所述缓冲器的条目之一的主帧;基于所述缓冲器确定为具有作为所述数据帧序列中的下一帧的主帧的包已丢失;以及响应于确定为包丢失,从所述缓冲器读取下一帧作为来自所述缓冲器的条目之一的先前帧。
在第四方面,提供一种用于传输被分区成数据帧序列的数据的方法。所述方法包括:使用网络接口传输第一包,所述第一包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第一包的一个或多于一个先前帧与所述第一包的主帧在帧序列中分开步幅参数的相应倍数;以及使用所述网络接口传输第二包,所述第二包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第二包的一个或多于一个先前帧与所述第二包的主帧在帧序列中分开所述步幅参数的相应倍数,以及其中,所述第一包的主帧是所述第二包的一个或多于一个先前帧之一。
在第五方面,提供一种用于接收被分区成数据帧序列的数据的非暂时性计算机可读存储介质。该非暂时性计算机可读存储介质包括可执行指令,该可执行指令在由处理器执行时便于操作的执行,所述操作包括:使用网络接口接收包,各个包分别包括来自数据帧序列的主帧以及一个或多于一个先前帧,其中相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数;将包的帧存储在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;从所述缓冲器读取第一帧作为来自所述缓冲器的条目之一的主帧;基于所述缓冲器确定为具有作为所述数据帧序列中的下一帧的主帧的包已丢失;以及响应于确定为包丢失,从所述缓冲器读取下一帧作为来自所述缓冲器的条目之一的先前帧。
在第六方面,提供一种用于传输被分区成数据帧序列的数据的非暂时性计算机可读存储介质。所述非暂时性计算机可读存储介质包括可执行指令,所述可执行指令在由处理器执行时便于操作的执行,所述操作包括:使用网络接口传输包括来自数据帧序列的主帧以及一个或多于一个先前帧的第一包,其中所述第一包的一个或多于一个先前帧与所述第一包的主帧在帧序列中分开步幅参数的相应倍数;以及使用网络接口传输第二包,所述第二包包括来自数据帧序列的主帧以及一个或多于一个先前帧,其中所述第二包的一个或多于一个先前帧与所述第二包的主帧在帧序列中分开步幅参数的相应倍数,并且其中所述第一包的主帧是所述第二包的一个或多于一个先前帧之一。
附图说明
当结合附图阅读时,从以下详细描述中最佳地理解本公开。要强调的是,根据惯例,附图的各种特征不是按比例的。相反,为了清楚起见,各种特征的尺寸被任意地扩大或缩小。
图1是使用用于数据的鲁棒传输的包有效载荷映射将成帧数据从服务器传送到一个或多于一个客户端装置的系统示例的框图。
图2是使用用于数据的鲁棒传输的包有效载荷映射的包编码方案的示例的时序图。
图3A和3B是具有各自保持包的主帧以及一个或多于一个先前帧的条目的环形缓冲器的示例的存储器映射图。
图4是图1中所示的系统的计算装置的内部配置的示例的框图。
图5是示出使用用于数据的鲁棒传输的包有效载荷映射来传输被分区成数据帧序列的数据的处理示例的流程图。
图6是示出使用用于数据的鲁棒传输的包有效载荷映射来接收被分区成数据帧序列的数据的处理示例的流程图。
图7是示出从具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器读取数据帧的处理示例的流程图。
图8是被配置为使用用于数据的鲁棒传输的包有效载荷映射来接收被分区成数据帧序列的数据的计算装置中的数据流示例的框图。
图9是示出在移除包有效载荷冗余之后将成帧数据传递通过重组缓冲器的处理示例的流程图。
具体实施方式
当通过实时数据传输的角度考虑时,UDP由于没有开销和/或低延迟约束而成为优选的传输层协议。然而,缺乏重传带来了稳定性和可靠性的问题。通常,可以接受的是,当使用UDP时会发生一些丢失(因此出现在音频中的爆裂音或出现在视频中的毛刺)。本文描述的包帧映射方案可以提供恢复这些丢失数据中的一些数据的方法。
包帧映射提供了一种分配冗余数据以允许恢复使用UDP时的数据丢失的方式。存在其他方法来实现这种类型的恢复(诸如前向纠错等),但是包帧映射可以使用不同的方式来分配和排序其冗余数据,这可以提供优于现有系统的优点。例如,实现用于传输成帧数据的包帧映射的系统对于包丢失的长突发(这在一些网络环境(诸如拥塞的高业务无线网络等)中可能是常见的)可能更具鲁棒性。
当描述包帧映射方案时,有几个术语要定义。如本文所使用的,“步幅”是数据帧序列中被选择用于包括在给定包中的帧之间的帧数方面的间隔。例如,包帧方案的步幅可以对应于客户端装置在丢失映射图(map)大小的数据之后确信接收的顺序包的最小数量(例如,该方案被设计为从其完全恢复的最长包丢失突发)。可以基于接收到的包统计来选择该数量。
如本文中所使用,“段”是指示集束到包中的冗余帧的数量的冗余参数。
如本文所使用的,包映射图数据结构指示包映射方案的步幅和段,并且可以指定在网络或其他通信通道上编码的包有效载荷的结构。例如,服务器装置可以使用包映射图数据结构来创建和发送数据以解码包有效载荷并实例化用于接收包的缓冲器以利用冗余。例如,{0,-16,-32,-48,-64}是步幅为16和段为4的映射图。
包帧映射可以被设计为在高包丢失事件之后恢复数据。还可以应对偶发包丢失;然而,在大的丢失事件中表现突出。例如,在扫描事件期间,iOS装置将会丢失45-55个包,然后在再次丢失45-55个包之前接收16个包。在这种场景下,16的步幅和4的段将允许恢复高达64个包长的突发包丢失,从而使系统对iOS扫描事件具有鲁棒性。
一种用于实现包帧映射方案的系统可以包括根据包映射图数据结构来封装和发送数据的服务器以及可以正确地解封装和利用冗余数据的客户端。在一些实现中,客户端装置使用两种单独类型的缓冲器:环形缓冲器和重组缓冲器。环形缓冲器的大小可以由步幅和段的大小确定。在本文的示例中,步幅是16并且段是4,因此环形缓冲器的大小可以被调整为存储来自(步幅×段)+1个包=65个包的帧。在一些实现中,环形缓冲器的大小可以被调整为存储来自(步幅×段)个包=64个包的帧,并且最新包或活动包(其承载作为存储在环形缓冲器中的最旧包的最新帧的帧的副本作为其最旧帧)可以存储在环形缓冲器之外,直到在最旧包已经从环形缓冲器中删除之后为止。例如,如果具有作为与持续时间2.5毫秒的音频信号相对应的音频数据的帧,并且缓冲器的大小被调整为恢复多达64个帧(例如,包映射图数据结构中的最低数量),则由缓冲方案引入的延迟将是2.5毫秒*64=160毫秒。例如,重组缓冲器的大小可以取决于步幅的大小(在这种情况下为16)。环形缓冲器的目的是接收和查明哪些数据已经丢失。然后,可以在重组缓冲器中重建数据,以允许正确地恢复和播放丢失的数据。
图1是用于使用用于数据的鲁棒传输的包有效载荷映射将成帧数据从服务器传送到一个或多于一个客户端装置的系统100的示例的框图。系统100包括具有被配置为经由网络106发送和接收数据的网络接口104的服务器装置102。网络106可以包括例如互联网,以及/或者网络106可以是或包括局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)或能够在计算装置(例如,客户端和服务器)之间传送数据的电子计算机通信的任何其他公共或专用部件。系统100的网络106或任何其他元件或元件的组合可以包括网络硬件,诸如路由器、交换机、负载平衡器、其他网络装置或其组合等。例如,网络106可以是WiFi网络。例如,服务器装置102可以包括经由网络106将音频数据传输到客户端装置的音频服务器。在一些实现中,服务器装置102被配置为在体育场或其他场所中经由无线网络(例如,WiFi网络)将现场音乐会或音乐表演的音频数据多播到音乐会观众的个人计算装置(例如,智能电话或平板电脑)。例如,服务器装置102可以包括经由网络106将视频数据传输到客户端装置的视频服务器。例如,服务器装置102可以包括经由网络106将文件传输到客户端装置的文件服务器。例如,服务器装置可以包括图4的计算装置400的组件。例如,服务器装置102可以实现图5的处理500。
系统100还包括客户端装置110和客户端装置112。客户端装置110包括被配置为经由网络106发送和接收数据的网络接口120。客户端装置112包括被配置为经由网络106发送和接收数据的网络接口122。客户端装置110包括环形缓冲器130,其可以用于便于使用用于数据的鲁棒传输的包有效载荷映射的成帧数据的接收。环形缓冲器130可以允许在包有效载荷映射中使用冗余来从传输期间的包丢失(包括潜在的长突发包丢失)中恢复。例如,环形缓冲器130可以包括各自保持包的主帧以及一个或多于一个先前帧的条目。在一些实现中,环形缓冲器130可以存储数据帧的多个副本,并且被配置为输出数据帧序列中的各个帧的单个副本。例如,可以基于包有效载荷映射方案的一个或多于一个参数(诸如步幅参数和/或冗余参数)来提供环形缓冲器130。例如,环形缓冲器130可以是图3A和3B的环形缓冲器302。类似地,客户端装置112包括环形缓冲器132,该环形缓冲器132可以用于便于使用用于数据的鲁棒传输的包有效载荷映射的成帧数据的接收。例如,环形缓冲器132可以是图3A和3B的环形缓冲器302。例如,客户端装置110可以包括图4的计算装置400的组件。例如,客户端装置112可以包括图4的计算装置400的组件。例如,客户端装置110和客户端装置112可以实现图6的处理600。
服务器装置102被配置为传输包括包140的包,包140包括在帧序列中由包有效载荷映射方案的步幅参数所确定的帧数间隔的一个或多于一个冗余数据帧。例如,在步幅参数为5且冗余参数为3的包有效载荷映射方案中,包140可以包括具有帧索引I的主帧、具有帧索引I-5的先前帧、具有帧索引I-10的先前帧和具有帧索引I-15的先前帧。例如,图2的包编码方案200可以用于对由服务器装置102传输的包140和其他包进行编码。在一些实现中,包140由服务器装置102多播到客户端装置110和客户端装置112。在一些实现中,包140由服务器装置102广播到网络106上的所有装置。在一些实现中,包140由服务器装置102单播到客户端装置110。注意,为了简单起见,图1中示出了两个客户端装置110和112,但是服务器装置102可以支持更多的客户端装置。
图2是使用用于数据的鲁棒传输的包有效载荷映射的包编码方案200的示例的时序图。包编码方案200使用步幅参数5,这意味着包括在包中的帧在数据帧序列中彼此间隔5个帧。包编码方案200使用冗余参数3,这意味着包包括根据步幅参数间隔的主(例如,最近)帧和三个先前帧,这三个先前帧可以已经在先前包中作为主帧和/或作为先前帧传输。
所传输的第一包是包零210,其包括具有帧索引0的主帧212、具有帧索引-5的先前帧214(即,在帧0之前的五个帧)、具有帧索引-10的先前帧216以及具有帧索引-15的先前帧218。所传输的第二包是包一220,其包括具有帧索引1的主帧222、具有帧索引-4的先前帧224、具有帧索引-9的先前帧226以及具有帧索引-14的先前帧228。所传输的第三包是包二230,其包括具有帧索引2的主帧232、具有帧索引-3的先前帧234、具有帧索引-8的先前帧236和具有帧索引-13的先前帧238。所传输的第四包是包三240,其包括具有帧索引3的主帧242、具有帧索引-2的先前帧244、具有帧索引-7的先前帧246和具有帧索引-12的先前帧248。所传输的第五包是包四250,其包括具有帧索引4的主帧252、具有帧索引-1的先前帧254、具有帧索引-6的先前帧256以及具有帧索引-11的先前帧258。
例如,包编码方案200使得能够基于五个连续包(即,步幅连续包)的接收来恢复多达15个包(即,步幅乘以冗余)的突发包丢失。例如,包编码方案200可以很好地适合于易于发生长突发包丢失的网络环境。
图3A示出具有各自保持包的主帧以及一个或多于一个先前帧的条目310-340的环形缓冲器302的示例存储器映射图300。在该示例中,环形缓冲器302的大小被调整为支持具有步幅参数5和为冗余参数3的包有效载荷映射方案(例如,图2的包编码方案200)。存储器映射图300的外环表示针对各个包存储的主帧。存储器映射图300的三个内环表示针对各个包存储的先前帧。在存储器映射图300中,环形缓冲器302的条目310对应于具有当前存储在环形缓冲器302中的帧的最旧包。环形缓冲器302的条目340对应于具有当前存储在环形缓冲器302中的帧的最新包。条目310是要被评估以从环形缓冲器302读取下一数据帧的下一条目。由于条目310存储具有索引0的帧的有效副本作为其主帧(即,成功接收到相应包),因此可以从环形缓冲器302的条目310读取具有索引0的帧作为主帧。响应于从环形缓冲器302读取条目310的主帧,可以删除条目310(例如,可以释放存储器位置以供重用)。注意,条目340在其最旧(最内)的先前帧时隙中包括具有索引0的帧的副本。通过等待直到接收到对应于条目340的包以读取以该帧作为主帧的条目310,使得在从环形缓冲器302读取时具有索引零的帧的有效副本的机会最大化。因此,环形缓冲器302的大小可以被调整为存储来自等于(步幅×冗余)+1的数量的(即,在该示例中为16个)包的帧。对于实时媒体传输(例如,音频或视频),该缓冲方案可能引入与帧持续时间(例如,2.5毫秒或5毫秒)乘以步幅参数乘以冗余参数相对应的算法延迟。
例如,环形缓冲器302可以被实现为循环缓冲器。在一些实现中,环形缓冲器302可以从抖动缓冲器输出的包获取输入,并且环形缓冲器302可以作为先进先出(FIFO)缓冲器操作。
图3B示出具有各自保存包的主帧以及一个或多于一个先前帧的条目的环形缓冲器302的存储器映射图350。存储器映射图350示出在比图3A的存储器映射图300中的状态晚的时间处的环形缓冲器302。条目310已被更新以存储已接收的最新包的帧。该最新包包括具有帧索引16的主帧。现在,条目312对应于应该将帧存储在环形缓冲器302中的最旧包。然而,对应于条目312的包已丢失(例如,损坏或以其他方式丢失)。因此,具有索引1的帧序列上的下一帧不可用作条目312中的主帧。代替地,可以在环形缓冲器302中搜索该下一帧的有效副本以供读出。在该示例中,存在条目332和条目310中作为先前帧存储在环形缓冲器中的具有索引1的帧的两个有效副本。然后可以从环形缓冲器302读取具有索引1的帧的这些副本之一作为先前帧。
图4是图1中所示的系统的计算装置400的(诸如服务器装置102、客户端装置110和/或客户端装置112等)内部配置的示例的框图。例如,客户端装置和/或服务器装置可以是包括多个计算装置和/或单个计算装置(诸如移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机、服务器计算机和/或其他合适的计算装置等)的计算系统。计算装置400可以包括组件和/或单元,诸如处理器402、总线404、存储器406、外围设备414、电源416、网络通信单元418、用户接口420、其他合适的组件和/或其任何组合等。
处理器402可以是中央处理单元(CPU)(诸如微处理器等),并且可以包括具有单个或多个处理核的单个或多个处理器。可替代地,处理器402可以包括现在存在的或以后开发的能够操纵或处理信息的其他类型的装置或多个装置。例如,处理器402可以包括以任何方式互连(包括硬连线和/或联网,包括无线联网)的多个处理器。在一些实现中,处理器402的操作可以分布在可以直接耦接或跨局域网或其他类型的网络耦接的多个物理装置和/或单元上。在一些实现中,处理器402可以包括用于操作数据和/或指令的本地存储的高速缓存或高速缓冲存储器。处理器402的操作可以分布在多个机器上,这些机器可以直接耦接或跨局域网或其他类型的网络耦接。
存储器406可以包括易失性存储器、非易失性存储器和/或其组合。例如,存储器406可以包括易失性存储器(诸如一个或多于一个DRAM模块(诸如DDR SDRAM等))以及非易失性存储器(诸如磁盘驱动器、固态驱动器、闪存、相变存储器(PCM)和/或能够持久电子信息存储的任何形式的非易失性存储器(诸如在不存在有源电源的情况下等))。存储器406可以包括现在存在或以后开发的能够存储用于由处理器402处理的数据和/或指令的其他类型的装置或多个装置。处理器402可以经由总线404访问和/或操纵存储器406中的数据。尽管在图4中被示出为单个块,但是存储器406可以被实现为多个单元。例如,计算装置400可以包括易失性存储器(诸如RAM等)和持久性存储器(诸如硬盘驱动器或其他存储装置等)。存储器406可以分布在多个机器上,诸如基于网络的存储器或者进行客户端和/或服务器的操作的多个机器中的存储器等。
存储器406可以包括可执行指令408、数据(诸如应用数据410等)、操作系统412或其组合以供处理器402立即访问。可执行指令408可以包括例如一个或多于一个应用程序,其可以全部或部分地从非易失性存储器加载和/或复制到易失性存储器以由处理器402执行。可执行指令408可以被组织成可编程模块和/或算法、功能程序、代码、代码段和/或其组合,以进行本文描述的各种功能。例如,存储器406可以包括可由处理器402执行以使包括计算装置400的系统实现图5的处理500或图6的处理600的指令。
应用数据410可以例如包括:用户文件;数据库目录和/或词典;诸如web浏览器、web服务器、数据库服务器等的功能程序的配置信息;和/或其组合。操作系统412可以例如是:MicrosoftMac OS或用于诸如智能电话或平板装置等的小装置的操作系统;或用于诸如大型计算机等的大装置的操作系统。存储器406可以包括一个或多于一个装置,并且可以利用一种或多种类型的诸如固态或磁存储装置等的存储装置。
外围设备414可以经由总线404耦接到处理器402。外围设备可以是传感器或检测器、或者包含任何数量的传感器或检测器的装置,其可以监视计算装置400本身和/或计算装置400周围的环境。例如,计算装置400可以包含地理空间位置识别单元,诸如全球定位系统(GPS)位置单元等。作为另一示例,计算装置400可以包含用于测量计算装置400的组件(诸如处理器402等)的温度的温度传感器。如可以预期的,其他传感器或检测器可以与计算装置400一起使用。在一些实现中,客户端和/或服务器可以省略外围设备414。在一些实现中,电源416可以是电池,并且计算装置400可以独立于外部配电系统操作。计算装置400的任何组件(诸如外围设备414或电源416等)可以经由总线404与处理器402通信。尽管这里被描绘为单个总线,但是总线404可以由多个总线组成,这些总线可以通过各种桥接器、控制器和/或适配器彼此连接。
网络通信单元418也可以经由总线404耦接到处理器402。在一些实现中,网络通信单元418可以包括一个或多于一个收发器。网络通信单元418经由网络接口提供到网络(诸如网络106等)的连接或链路,该网络接口可以是有线网络接口(诸如以太网等)或无线网络接口。例如,计算装置400可以使用一个或多于一个网络协议(诸如以太网、TCP、IP、电力线通信(PLC)、WiFi、红外、GPRS、GSM、CDMA或其他合适的协议等)经由网络通信单元418和网络接口与其他装置通信。
用户接口420可以包括:显示器;位置输入装置,诸如鼠标、触摸板、触摸屏等;键盘;和/或任何其他人机接口装置。用户接口420可以经由总线404耦接到处理器402。除了显示器之外或作为显示器的替代,可以提供允许用户编程或以其他方式使用计算装置400的其他接口装置。在一些实现中,用户接口420可以包括显示器,该显示器可以是液晶显示器(LCD)、阴极射线管(CRT)、发光二极管(LED)显示器(例如,OLED显示器)或其他合适的显示器。用户接口420可以包括被配置为将电子音频数据转换为媒介(例如,空气)中的声音的音频驱动器(例如,扬声器)。例如,用户接口420的扬声器可用于播放音频数据(例如,编码音乐或语音信号)。
图5是示出用于使用用于数据的鲁棒传输的包有效载荷映射来传输被分区成数据帧序列的数据的处理500的示例的流程图。处理500包括:传输502指示步幅参数和冗余参数的包映射图数据结构;对于数据帧序列,从序列中选择510下一帧作为用于传输的主帧,并且传输520包,该包包括主帧以及与步幅参数相对应的在所述数据帧序列中的间隔处的一个或多于一个先前帧;当(在操作525处)最后帧已经作为主帧被传输520时,传输530包,该包包括序列的最后帧之后的与下一序列索引相对应的虚主帧以及相对于虚索引的步幅间隔处的一个或多于一个先前帧,直到(在操作535处)帧序列的最后帧已经被传输了等于一加冗余参数的次数为止;以及结束540数据传输。例如,图5的处理500可以由图1的服务器装置102实现。例如,图5的处理500可以由图4的计算装置400实现。
处理500包括传输502包映射图数据结构,该包映射图数据结构用于指示步幅参数并指示在包括来自数据帧序列的帧的包集合的各个包中要传输的冗余先前帧的计数。步幅参数可以指定帧序列中的在多个包的包中所包括的主包与一个或多于一个先前包之间的间隔。在一些实现中,步幅参数大于四。冗余先前帧的计数可称为包有效载荷映射方案的冗余参数。例如,包映射图数据结构可以包括作为相应先前帧的帧索引偏移的整数的列表,其中针对各个先前帧具有一个整数(例如,对于具有步幅5及冗余3的方案为{-5、-10、-15},或者对于具有步幅16及冗余4的方案为{-16、-32、-48、-64})。在一些实现中,包映射图数据结构包括分别表示步幅参数和冗余参数的两个正整数。可以使用网络接口(例如,网络接口104)传输502包映射图数据结构。在一些实现中,在数据帧开始被传输520之前,在单独的包中传输502包映射图数据结构一次。在一些实现中,包映射图数据结构作为用于传输帧序列的包集合中的各个包的头部的一部分来传输502。例如,数据帧序列可以是音频数据的帧序列(例如,编码音乐或语音信号)。例如,数据帧序列可以是视频数据帧序列。
处理500包括选择510下一帧作为用于在下一包中传输的主帧。例如,可以初始化下一帧指针或计数器以指向数据帧序列的开始处的帧,并且可以递增或以其他方式更新帧指针或计数器以选择510用于传输的下一帧作为主帧。
处理500包括传输520包括来自数据帧序列的主帧(例如,当前选择510的帧)以及一个或多于一个先前帧的包。第一包的一个或多于一个先前帧与第一包的主帧在帧序列中分开步幅参数的相应倍数(例如,如针对步幅参数5的包编码方案200所示)。例如,可以使用网络接口(例如,网络接口104)传输520包。在一些实现中,包的一个或多于一个先前帧包括来自数据帧序列的两个或多于两个先前帧。包可以包括其他数据(诸如头部数据(例如,IPv6头部和UDP头部)),以促成包跨网络(例如,网络106)的传输。如果(在操作525处)在数据帧序列中存在更多帧要传输,则可以选择510下一帧,并将其作为另一包中的主帧连同相对于新主帧的一个或多于一个相应的先前帧一起传输520。当处理500启动时,在帧序列中没有相应的较早帧要重传的情况下,可以从包中省略一个或多于一个先前帧。在已传输与步幅参数相对应的多个包之后,先前已在较早包(例如,第一包)中作为主帧传输的帧可在较晚包(例如,第二包)中作为先前帧重传。例如,处理500可以包括使用网络接口传输520第二包,该第二包包括来自数据帧序列的主帧以及一个或多于一个先前帧,其中第二包的一个或多于一个先前帧与第二包的主帧在帧序列中分开步幅参数的相应倍数,并且其中第一包的主帧是第二包的一个或多于一个先前帧之一。在一些实现中,处理500包括使用网络接口传输520数据帧序列中的第一包的主帧和第二包的主帧之间的所有帧作为相应包的主帧,包各自包括来自数据帧序列的一个或多个先前帧,该一个或多个先前帧在帧序列中分开步幅参数的倍数。可以经由网络将包传输520到一个或多于一个客户端装置。例如,第一包和第二包可以是广播包。例如,第一包和第二包可以是多播包。在一些实现中,数据帧序列中的帧全部为相同大小。
当(在操作525处)帧序列中的所有帧已经作为相应包的主帧被传输520时,可以传输530一个或多于一个包,该一个或多于一个包包括采用该步幅的序列的最后帧之后的与下一序列索引相对应的虚主帧(或省略主帧)以及相应先前帧,直到(在操作535处)将所有帧作为先前帧已经被传输与步幅参数相对应的次数。当(在操作535处)序列的所有帧已经作为先前帧被传输冗余参数次数时,则数据帧序列的传输结束540。
图6是示出使用用于数据的鲁棒传输的包有效载荷映射来接收被分区成数据帧序列的数据的处理600的示例的流程图。处理600包括:接收610指示步幅参数和冗余参数的包映射图数据结构;接收620包,包各自根据步幅参数分别包括来自数据帧序列的主帧以及一个或多于一个先前帧;将包的帧存储630在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;以及从缓冲器读取640帧以在缓冲器的输出处获得帧的单个副本。例如,图6的处理600可以由图1的客户端装置110实现。例如,图6的处理600可以由图4的计算装置400实现。
处理600包括使用网络接口接收610包映射图数据结构,该包映射图数据结构指示步幅参数并指示在各个包中要传输的冗余先前帧的计数。步幅参数可以指定帧序列中的在多个包的包中所包括的主包与一个或多于一个先前包之间的间隔。在一些实现中,步幅参数大于四。冗余先前帧的计数可以称为包有效载荷映射方案的冗余参数。例如,包映射图数据结构可以包括作为相应先前帧的帧索引偏移的整数的列表,其中针对各个先前帧具有一个整数(例如,对于具有步幅5及冗余3的方案为{-5、-10、-15},或者对于具有步幅16及冗余4的方案为{-16、-32、-48、-64})。在一些实现中,包映射图数据结构包括分别表示步幅参数和冗余参数的两个正整数。例如,可以使用网络接口(例如,网络接口120)来接收610包映射图数据结构。在一些实现中,在数据帧开始被接收620之前,在单独的包中接收610包映射图数据结构一次。在一些实现中,包映射图数据结构作为用于传输帧序列的包集合中的各个包的头部的一部分来接收610。例如,数据帧序列可以是音频数据帧序列(例如,编码音乐或语音信号)。例如,数据帧序列可以是视频数据帧序列。
处理600包括接收620包,包各自分别包括来自数据帧序列的主帧以及一个或多于一个先前帧。相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数(例如,如针对步幅参数5的包编码方案200所示)。例如,可以使用网络接口(例如,网络接口120)来接收620包。在一些实现中,各个相应包的一个或多于一个先前帧包括等于冗余参数的数量的先前帧,并且冗余参数大于1。可以经由网络从一个或多于一个服务器装置(例如,服务器装置102)接收620包。
处理600包括将包的帧存储630在缓冲器(例如,环形缓冲器302)中,该缓冲器具有各自保持包的主帧以及一个或多于一个先前帧的条目。在一些实现中,各个相应包的一个或多于一个先前帧包括等于冗余参数的数量的先前帧,并且其中缓冲器的大小被调整为存储来自等于步幅参数乘以冗余参数加1的数量的包的帧。在一些实现中,所接收620的包可以在来自包的有效载荷的帧存储630在缓冲器中之前通过抖动缓冲器。例如,处理600可以包括:在接收620到包时将包存储在抖动缓冲器中;以及在将包的帧存储630在缓冲器中之前,从抖动缓冲器读取包。在一些实现中,数据帧序列中的帧全部为相同大小。
处理600包括从缓冲器(例如,环形缓冲器302)读取640帧。例如,可以实现图7的处理700以从缓冲器读取640帧。在一些实现中,来自序列的数据帧包括音频数据,并且处理600包括响应于从缓冲器读取帧而播放帧的音频数据。在一些实现中,从缓冲器读取640的数据帧在重组缓冲器(例如,图8的重组缓冲器820)中以数据帧序列重组。例如,可以实现图9的处理900以重组数据帧序列,从而便于播放音频数据。
图7是示出从具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中读取数据帧的处理700的示例的流程图。处理700包括:基于缓冲器来确定710具有作为数据帧序列中的下一帧的主帧的包是否已丢失;当(在操作715处)包尚未丢失时,从缓冲器读取720帧作为来自缓冲器的条目之一的主帧;当(在操作715处)包已丢失时,在缓冲器中找到740下一帧的冗余副本作为缓冲器中的较新条目的先前帧,并且从缓冲器读取750下一帧作为条目的先前帧;以及当(在操作755处)帧序列中没有更多帧要读取时,结束760数据接收。例如,图7的处理700可以由图1的客户端装置110实现。例如,图7的处理700可以由图4的计算装置400实现。
处理700包括基于缓冲器(例如,环形缓冲器302)确定为710具有作为数据帧序列中的下一帧的主帧的包已经丢失。例如,可以检查缓冲器中的最旧条目以确定710对应于最旧条目的包是否丢失。在一些实现中,条目包括指向来自接收到的包的有效数据的指针,或者如果相应的包丢失则包括空指针。在一些实现中,缓冲器包括条目当前是否存储有效数据帧的指示(例如,标志),其可以在来自所接收包的数据存储在条目中时设置并且在条目被删除730(例如,在读取主帧之后)时重置。在一些实现中,确定为710包已经丢失包括对存储在与关注包相对应的条目中的数据进行数据完整性校验(例如,循环冗余校验(CRC))。
处理700包括:当(在操作715处)包尚未丢失时,从缓冲器读取720帧(例如,第一帧)作为来自缓冲器的条目之一的主帧。处理700包括:响应于正在从缓冲器读取720缓冲器的条目(例如,第一条目)的主帧,从缓冲器删除730该条目。例如,可以通过释放条目的存储器以供重用(例如,存储新接收的包的帧)来删除730该条目。
处理700包括:当(在操作715处)包已丢失时,找到740缓冲器中的下一帧的冗余副本作为缓冲器中的较新条目的先前帧。例如,可以存在多达存储在缓冲器中的帧的冗余参数副本作为较晚包的先前帧(例如,如环形缓冲器302的内环所示并且如关于图3A-3B所讨论的)。可以检查与在包有效载荷映射方案下承载作为先前帧的帧的包相对应的这些条目中的一个或多于一个条目,以找到740该帧的有效副本。处理700包括:响应于确定为包丢失,从缓冲器读取750下一帧作为来自缓冲器的条目之一的先前帧。尽管在图7中未明确示出,但是处理700可以通过返回错误消息以及/或者基于数据帧序列中的较早和/或较晚数据对丢失数据进行插值来应对没有成功接收到帧的副本并且在缓冲器中没有找到740副本的情况。
当(在操作755处)在数据帧序列中不再有要读取的帧时,可以结束760数据接收。
图8是被配置为使用用于数据的鲁棒传输的包有效载荷映射来接收被分区成数据帧序列的数据的计算装置中的数据流800的示例的框图。包源802输出包,包各自分别包括来自数据帧序列的主帧以及一个或多于一个先前帧。相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数(例如,如针对步幅参数5的包编码方案200所示)。例如,包源可以是经由网络(例如,网络106)从服务器装置(例如,服务器装置102)接收包的网络通信单元(例如,网络通信单元418)。在一些实现中,包源802包括被配置为以传输的顺序输出包的抖动缓冲器。
数据流800包括具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器(例如,环形缓冲器302)。先前帧可以是在较早的包中作为主帧发送的帧的冗余副本。因此,缓冲器810可以存储数据帧序列中的帧的多个副本(例如,如关于图3A-3B所讨论的)。该冗余可以使数据流800对包源802中的大量突发包丢失具有鲁棒性。
数据流800包括具有各自保持数据帧序列的帧的条目的重组缓冲器820。可以从缓冲器810读取帧的单个副本并将其写入重组缓冲器820以移除用于在有噪声网络上传输的冗余和/或适当地对帧进行排序,从而将帧重组成可用形式的源数据(例如,重组被分区成帧的文件或对音频或视频数据的较大超帧进行排队以在用户接口中播放)。例如,重组缓冲器820可以具有与等于步幅参数的数量的帧相对应的大小。例如,重组缓冲器820可以是先进先出(FIFO)缓冲器。例如,重组缓冲器820可以被实现为循环缓冲器。
数据流800包括消耗来自重组缓冲器820的成帧数据的数据宿822。例如,数据宿822可以包括用于播放帧中的音频数据的音频驱动器(例如,包括扬声器)。例如,数据宿822可以是非易失性存储器中的写入有成帧数据的文件。
图9是示出用于在移除包有效载荷冗余之后将成帧数据传递通过重组缓冲器的处理900的示例的流程图。处理900包括:播放910存储在来自重组缓冲器的最旧帧中的音频数据;从重组缓冲器中删除920最旧帧;以及将从缓冲器读取的帧写入930重组缓冲器。例如,图9的处理900可以由图1的客户端装置110实现。例如,图9的处理900可以由图4的计算装置400实现。
处理900包括播放910存储在来自重组缓冲器(例如,重组缓冲器820)的最旧帧中的音频数据。例如,可以使用用户接口420的音频驱动器(例如,扬声器)来播放910音频数据。处理900包括从重组缓冲器中删除920最旧帧。例如,可以通过释放条目的存储器以供重用(例如,通过更新重组缓冲器的指针或计数器)来删除920该条目。
处理900包括将从缓冲器(例如,缓冲器810)读取的帧(例如,包括第一帧和下一帧)写入到重组缓冲器(例如,该重组缓冲器)。重组缓冲器可以包括各自由数据帧序列中的帧组成的条目。在一些实现中,重组缓冲器的大小被调整为存储等于步幅参数的数量的帧。
虽然已经结合某些实施例描述了本公开,但是应当理解,本公开不限于所公开的实现,而是相反,旨在覆盖包括在所附权利要求书的范围内的各种修改和等同布置,该范围应被赋予最广泛的解释,以涵盖法律允许的所有这些修改和等同结构。
Claims (48)
1.一种用于接收被分区成数据帧序列的数据的系统,其包括:
网络接口;
存储器;以及
处理器,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
使用所述网络接口接收包,所述包各自分别包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数;
将包的帧存储在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;
从所述缓冲器读取第一帧作为来自所述缓冲器的所述条目之一的主帧;
基于所述缓冲器确定为具有作为所述数据帧序列中的下一帧的主帧的包已经丢失;以及
响应于确定为包丢失,从所述缓冲器读取所述下一帧作为来自所述缓冲器的所述条目之一的先前帧。
2.根据权利要求1所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
响应于从所述缓冲器读取所述缓冲器的第一条目的主帧,从所述缓冲器删除所述第一条目。
3.根据权利要求1所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
将从所述缓冲器读取的包括所述第一帧和所述下一帧的帧写入重组缓冲器,其中,所述重组缓冲器包括各自由所述数据帧序列中的帧组成的条目。
4.根据权利要求3所述的系统,其中,所述重组缓冲器的大小被调整为存储等于所述步幅参数的数量的帧。
5.根据权利要求3所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
播放来自所述重组缓冲器的最旧帧中所存储的音频数据;以及
从所述重组缓冲器中删除所述最旧帧。
6.根据权利要求1所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
响应于从所述缓冲器读取所述第一帧,播放所述第一帧的音频数据。
7.根据权利要求1所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
在接收到包时,将所述包存储在抖动缓冲器中;以及
在将所述包的帧存储在所述缓冲器中之前,从所述抖动缓冲器读取所述包。
8.根据权利要求1所述的系统,其中,各个相应包的一个或多于一个先前帧包括等于冗余参数的数量的先前帧,以及其中,所述缓冲器的大小被调整为存储来自等于所述步幅参数乘以所述冗余参数加1的数量的包的帧。
9.根据权利要求1所述的系统,其中,所述步幅参数大于4。
10.根据权利要求1所述的系统,其中,各个相应包的一个或多于一个先前帧包括等于冗余参数的数量的先前帧,以及所述冗余参数大于1。
11.根据权利要求1所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
使用所述网络接口接收包映射图数据结构,所述包映射图数据结构指示所述步幅参数,并且指示要在各个包中传输的冗余先前帧的计数。
12.根据权利要求1所述的系统,其中,所述数据帧序列是音频数据帧序列。
13.根据权利要求1所述的系统,其中,所述数据帧序列是视频数据帧序列。
14.根据权利要求1所述的系统,其中,所述数据帧序列中的帧全部为相同大小。
15.一种用于接收被分区成数据帧序列的数据的方法,其包括:
使用网络接口接收包,所述包各自分别包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,相应包的一个或多于一个先前帧与该相应包的主帧在帧序列中分开步幅参数的相应倍数;
将包的帧存储在具有各自保持包的主帧以及一个或多于一个先前帧的条目的缓冲器中;
从所述缓冲器读取第一帧作为来自所述缓冲器的所述条目之一的主帧;
基于所述缓冲器确定为具有作为所述数据帧序列中的下一帧的主帧的包已经丢失;以及
响应于确定为包丢失,从所述缓冲器读取所述下一帧作为来自所述缓冲器的所述条目之一的先前帧。
16.根据权利要求15所述的方法,包括:
响应于从所述缓冲器读取所述缓冲器的第一条目的主帧,从所述缓冲器删除所述第一条目。
17.根据权利要求15所述的方法,包括:
将从所述缓冲器读取的包括所述第一帧和所述下一帧的帧写入重组缓冲器,其中,所述重组缓冲器包括各自由所述数据帧序列中的帧组成的条目。
18.根据权利要求17所述的方法,其中,所述重组缓冲器的大小被调整为存储等于所述步幅参数的数量的帧。
19.根据权利要求17所述的方法,包括:
播放来自所述重组缓冲器的最旧帧中所存储的音频数据;以及
从所述重组缓冲器中删除所述最旧帧。
20.根据权利要求15所述的方法,包括:
响应于从所述缓冲器读取所述第一帧,播放所述第一帧的音频数据。
21.根据权利要求15所述的方法,包括:
在接收到包时,将所述包存储在抖动缓冲器中;以及
在将所述包的帧存储在所述缓冲器中之前,从所述抖动缓冲器读取所述包。
22.根据权利要求15所述的方法,其中,各个相应包的一个或多于一个先前帧包括等于冗余参数的数量的先前帧,以及其中,所述缓冲器的大小被调整为存储来自等于所述步幅参数乘以所述冗余参数加1的数量的包的帧。
23.根据权利要求15所述的方法,其中,所述步幅参数大于4。
24.根据权利要求15所述的方法,其中,各个相应包的一个或多于一个先前帧包括等于冗余参数的数量的先前帧,以及所述冗余参数大于1。
25.根据权利要求15所述的方法,包括:
使用所述网络接口接收包映射图数据结构,所述包映射图数据结构指示所述步幅参数,并且指示要在各个包中传输的冗余先前帧的计数。
26.根据权利要求15所述的方法,其中,所述数据帧序列是音频数据帧序列。
27.根据权利要求15所述的方法,其中,所述数据帧序列是视频数据帧序列。
28.根据权利要求15所述的方法,其中,所述数据帧序列中的帧全部为相同大小。
29.一种用于传输被分区成数据帧序列的数据的系统,其包括:
网络接口;
存储器;以及
处理器,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
使用所述网络接口传输第一包,所述第一包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第一包的一个或多于一个先前帧与所述第一包的主帧在帧序列中分开步幅参数的相应倍数;以及
使用所述网络接口传输第二包,所述第二包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第二包的一个或多于一个先前帧与所述第二包的主帧在帧序列中分开所述步幅参数的相应倍数,以及其中所述第一包的主帧是所述第二包的一个或多于一个先前帧之一。
30.根据权利要求29所述的系统,其中,所述步幅参数大于4。
31.根据权利要求29所述的系统,其中,所述第一包的一个或多于一个先前帧包括来自所述数据帧序列的两个或多于两个先前帧,以及所述第二包的一个或多于一个先前帧包括来自所述数据帧序列的两个或多于两个先前帧。
32.根据权利要求29所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
使用所述网络接口传输所述数据帧序列中的在所述第一包的主帧与所述第二包的主帧之间的所有帧作为相应包的主帧,所述相应包各自包括来自所述数据帧序列的在帧序列中分开所述步幅参数的倍数的一个或多于一个先前帧。
33.根据权利要求29所述的系统,其中,所述存储器包括所述处理器能够执行以使所述系统进行以下操作的指令:
使用所述网络接口传输包映射图数据结构,所述包映射图数据结构指示所述步幅参数,并且指示要在包括所述第一包和所述第二包的包集合中的各个包中传输的冗余先前帧的计数。
34.根据权利要求29所述的系统,其中,所述数据帧序列是音频数据帧序列。
35.根据权利要求29所述的系统,其中,所述数据帧序列是视频数据帧序列。
36.根据权利要求29所述的系统,其中,所述第一包和所述第二包是广播包。
37.根据权利要求29所述的系统,其中,所述第一包和所述第二包是多播包。
38.根据权利要求29所述的系统,其中,所述数据帧序列中的帧全部为相同大小。
39.一种用于传输被分区成数据帧序列的数据的方法,其包括:
使用网络接口传输第一包,所述第一包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第一包的一个或多于一个先前帧与所述第一包的主帧在帧序列中分开步幅参数的相应倍数;以及
使用所述网络接口传输第二包,所述第二包包括来自所述数据帧序列的主帧以及一个或多于一个先前帧,其中,所述第二包的一个或多于一个先前帧与所述第二包的主帧在帧序列中分开所述步幅参数的相应倍数,以及其中,所述第一包的主帧是所述第二包的一个或多于一个先前帧之一。
40.根据权利要求39所述的方法,其中,所述步幅参数大于4。
41.根据权利要求39所述的方法,其中,所述第一包的一个或多于一个先前帧包括来自所述数据帧序列的两个或多于两个先前帧,以及所述第二包的一个或多于一个先前帧包括来自所述数据帧序列的两个或多于两个先前帧。
42.根据权利要求39所述的方法,包括:
使用所述网络接口传输所述数据帧序列中的在所述第一包的主帧与所述第二包的主帧之间的所有帧作为相应包的主帧,所述相应包各自包括来自所述数据帧序列的在帧序列中分开所述步幅参数的倍数的一个或多于一个先前帧。
43.根据权利要求39所述的方法,包括:
使用所述网络接口传输包映射图数据结构,所述包映射图数据结构指示所述步幅参数,并且指示要在包括所述第一包和所述第二包的包集合中的各个包中传输的冗余先前帧的计数。
44.根据权利要求39所述的方法,其中,所述数据帧序列是音频数据帧序列。
45.根据权利要求39所述的方法,其中,所述数据帧序列是视频数据帧序列。
46.根据权利要求39所述的方法,其中,所述第一包和所述第二包是广播包。
47.根据权利要求39所述的方法,其中,所述第一包和所述第二包是多播包。
48.根据权利要求39所述的方法,其中,所述数据帧序列中的帧全部为相同大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962905786P | 2019-09-25 | 2019-09-25 | |
US62/905,786 | 2019-09-25 | ||
PCT/US2020/052409 WO2021061925A1 (en) | 2019-09-25 | 2020-09-24 | Packet payload mapping for robust transmission of data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114531936A true CN114531936A (zh) | 2022-05-24 |
Family
ID=72752556
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080067812.1A Active CN114531937B (zh) | 2019-09-25 | 2020-09-24 | 用于数据的鲁棒传输的多步幅包有效载荷映射 |
CN202080067766.5A Pending CN114531936A (zh) | 2019-09-25 | 2020-09-24 | 用于数据的鲁棒传输的包有效载荷映射 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080067812.1A Active CN114531937B (zh) | 2019-09-25 | 2020-09-24 | 用于数据的鲁棒传输的多步幅包有效载荷映射 |
Country Status (4)
Country | Link |
---|---|
US (5) | US11522816B2 (zh) |
EP (2) | EP4035289A1 (zh) |
CN (2) | CN114531937B (zh) |
WO (2) | WO2021061925A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022220907A1 (en) | 2021-04-15 | 2022-10-20 | MIXHalo Corp. | Scrambled packet payload mapping for robust transmission of data |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106131580A (zh) * | 2015-11-18 | 2016-11-16 | 苏州踪视通信息技术有限公司 | 使用环形缓冲区的视频数据处理 |
US20170054573A1 (en) * | 2015-08-20 | 2017-02-23 | Oracle International Corporation | Redundant traffic encoding of encapsulated real time communications |
WO2017074587A1 (en) * | 2015-10-29 | 2017-05-04 | Qualcomm Incorporated | Packet bearing signaling information indicative of whether to decode a primary coding or a redundant coding of the packet |
CN107534589A (zh) * | 2015-04-14 | 2018-01-02 | 高通股份有限公司 | 去抖动缓冲器更新 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5111490A (en) * | 1990-10-05 | 1992-05-05 | Kaibushiki Kaisha Toshiba | Method and apparatus for collecting video frames, lines and pixels |
JP3501526B2 (ja) * | 1994-11-29 | 2004-03-02 | キヤノン株式会社 | 画像通信システム及び画像通信方法 |
CN1636340A (zh) * | 2000-07-21 | 2005-07-06 | 库克斯媒体有限公司 | 一种优先分组传输系统,用于电话数据、对等待时间敏感的数据、最佳效果数据、以及整形的传输媒体中的视频流,例如无源的同轴分布 |
US20060088093A1 (en) * | 2004-10-26 | 2006-04-27 | Nokia Corporation | Packet loss compensation |
US20070153683A1 (en) * | 2005-12-30 | 2007-07-05 | Mcalpine Gary L | Traffic rate control in a network |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8804845B2 (en) * | 2007-07-31 | 2014-08-12 | Cisco Technology, Inc. | Non-enhancing media redundancy coding for mitigating transmission impairments |
JP5321070B2 (ja) | 2009-01-08 | 2013-10-23 | カシオ計算機株式会社 | 撮影装置、撮影方法及びプログラム |
JP5516662B2 (ja) | 2011-12-05 | 2014-06-11 | 株式会社ニコン | 撮像装置 |
US9047863B2 (en) | 2012-01-12 | 2015-06-02 | Qualcomm Incorporated | Systems, methods, apparatus, and computer-readable media for criticality threshold control |
US10614816B2 (en) * | 2013-10-11 | 2020-04-07 | Qualcomm Incorporated | Systems and methods of communicating redundant frame information |
US9769043B2 (en) * | 2014-09-22 | 2017-09-19 | Avaya Inc. | Adaptive management of a media buffer |
WO2017055091A1 (en) * | 2015-10-01 | 2017-04-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for removing jitter in audio data transmission |
US10049682B2 (en) * | 2015-10-29 | 2018-08-14 | Qualcomm Incorporated | Packet bearing signaling information indicative of whether to decode a primary coding or a redundant coding of the packet |
US10447430B2 (en) * | 2016-08-01 | 2019-10-15 | Sony Interactive Entertainment LLC | Forward error correction for streaming data |
US10210125B2 (en) * | 2017-03-16 | 2019-02-19 | Mellanox Technologies, Ltd. | Receive queue with stride-based data scattering |
US10887252B2 (en) * | 2017-11-14 | 2021-01-05 | Mellanox Technologies, Ltd. | Efficient scatter-gather over an uplink |
US10475456B1 (en) | 2018-06-04 | 2019-11-12 | Qualcomm Incorporated | Smart coding mode switching in audio rate adaptation |
US10958587B2 (en) | 2018-07-24 | 2021-03-23 | Intel Corporation | Transmission latency reduction |
EP3611861B1 (en) | 2018-08-16 | 2021-07-07 | Shenzhen Goodix Technology Co., Ltd. | Method for predictive reception of physical layer downlink repetitions in a nb-iot ue for prolonged battery lifetime |
US10784988B2 (en) * | 2018-12-21 | 2020-09-22 | Microsoft Technology Licensing, Llc | Conditional forward error correction for network data |
KR20210111308A (ko) * | 2019-02-15 | 2021-09-10 | 애플 인크. | 단일 다운링크 제어 정보(dci) 다중 송신 수신 포인트(trp) 송신에 대한 복조 기준 신호(dmrs) 표시 |
CA3153258A1 (en) * | 2019-09-03 | 2021-03-11 | Dolby Laboratories Licensing Corporation | Low-latency, low-frequency effects codec |
CN112468759A (zh) * | 2019-09-09 | 2021-03-09 | 苹果公司 | 动态冗余 |
US11509423B2 (en) * | 2019-09-09 | 2022-11-22 | Apple Inc. | Dynamic redundancy for multimedia content |
US11385806B1 (en) * | 2020-12-20 | 2022-07-12 | Veritas Technologies Llc | Methods and systems for efficient erasure-coded storage systems |
-
2020
- 2020-09-24 WO PCT/US2020/052409 patent/WO2021061925A1/en unknown
- 2020-09-24 US US17/030,647 patent/US11522816B2/en active Active
- 2020-09-24 CN CN202080067812.1A patent/CN114531937B/zh active Active
- 2020-09-24 EP EP20789353.8A patent/EP4035289A1/en active Pending
- 2020-09-24 EP EP20786417.4A patent/EP4035288A1/en active Pending
- 2020-09-24 CN CN202080067766.5A patent/CN114531936A/zh active Pending
- 2020-09-24 US US17/030,544 patent/US11646979B2/en active Active
- 2020-09-24 WO PCT/US2020/052422 patent/WO2021061935A1/en unknown
-
2022
- 2022-11-09 US US17/983,539 patent/US11716294B2/en active Active
-
2023
- 2023-04-10 US US18/132,699 patent/US20230353511A1/en active Pending
- 2023-06-16 US US18/210,800 patent/US20230412528A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107534589A (zh) * | 2015-04-14 | 2018-01-02 | 高通股份有限公司 | 去抖动缓冲器更新 |
US20170054573A1 (en) * | 2015-08-20 | 2017-02-23 | Oracle International Corporation | Redundant traffic encoding of encapsulated real time communications |
WO2017074587A1 (en) * | 2015-10-29 | 2017-05-04 | Qualcomm Incorporated | Packet bearing signaling information indicative of whether to decode a primary coding or a redundant coding of the packet |
CN108352927A (zh) * | 2015-10-29 | 2018-07-31 | 高通股份有限公司 | 指示解码包的主要译码抑或冗余译码的包承载发信信息 |
CN106131580A (zh) * | 2015-11-18 | 2016-11-16 | 苏州踪视通信息技术有限公司 | 使用环形缓冲区的视频数据处理 |
Also Published As
Publication number | Publication date |
---|---|
WO2021061925A1 (en) | 2021-04-01 |
US11646979B2 (en) | 2023-05-09 |
CN114531937B (zh) | 2024-03-22 |
EP4035289A1 (en) | 2022-08-03 |
US20230412528A1 (en) | 2023-12-21 |
CN114531937A (zh) | 2022-05-24 |
EP4035288A1 (en) | 2022-08-03 |
WO2021061935A1 (en) | 2021-04-01 |
US11522816B2 (en) | 2022-12-06 |
US11716294B2 (en) | 2023-08-01 |
US20230138713A1 (en) | 2023-05-04 |
US20230353511A1 (en) | 2023-11-02 |
US20210092077A1 (en) | 2021-03-25 |
US20210091894A1 (en) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4921569B2 (ja) | オフロードユニットを使用したtcp接続のためのデータ処理 | |
US7734720B2 (en) | Apparatus and system for distributing block data on a private network without using TCP/IP | |
US10990326B2 (en) | High-speed replay of captured data packets | |
KR20130046540A (ko) | 데이터 전송 장치 및 방법 | |
KR100464195B1 (ko) | 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치 | |
US20230412528A1 (en) | Multi-stride packet payload mapping for robust transmission of data | |
US10154079B2 (en) | Pre-boot file transfer system | |
JP2019106697A (ja) | 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス | |
CN112671771A (zh) | 数据传输方法、装置、电子设备及介质 | |
CN111835801B (zh) | 文件下载方法、装置、服务器、边缘设备、终端及介质 | |
US11968284B2 (en) | Scrambled packet payload mapping for robust transmission of data | |
CN115333677A (zh) | 云业务处理方法、系统、装置、设备及存储介质 | |
US7568013B1 (en) | Multiple message send routine for network packets | |
JP2019047162A (ja) | 情報処理システム、情報処理方法、プログラム、及び情報処理装置 | |
BR112017000636B1 (pt) | Método de desvio para dados de correção de erro, dispositivo e memória legível | |
KR20140009947A (ko) | 데이터 전송 장치 및 방법 |
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 |