Description
METHOD AND SYSTEM FOR TRANSMISSION OF UNCOMPRESSED VIDEO OVER WIRELESS COMMUNICATION
CHANNELS
Technical Field
[1] The present invention relates to wireless transmission, an in particular to wireless transmission of uncompressed video. Background Art
[2] With the proliferation of high quality video, an increasing number of electronic devices (e.g., consumer electronic devices) utilize high-definition (HD) video which can require about 1 gigabits per second (Gbps) in bandwidth for transmission. As such, when transmitting such HD video between devices, conventional transmission approaches compress the HD video to a fraction of its size to lower the required transmission bandwidth. The compressed video is then decompressed for consumption. However, with each compression and subsequent decompression of the video data, some data can be lost and the picture quality can be reduced. Disclosure of Invention Technical Problem
[3] The High-Definition Multimedia Interface (HDMI) specification allows transfer of uncompressed HD signals between devices via a cable. While consumer electronics makers are beginning to offer HDMI-compatible equipment, there is not yet a suitable wireless (e.g., radio frequency) technology that is capable of transmitting uncompressed HD video signals. Wireless local area network (WLAN) and similar technologies can suffer interference issues when several devices are connected which do not have the bandwidth to cany the uncompressed HD signal, and do not provide an air interface to transmit uncompressed video over 60 GHz band. There is, therefore, a need for a method and system for wireless transmission of uncompressed video without degrading picture quality. Technical Solution
[4] A method and system is provided for transmission of video information pixels over wireless channels, where each video pixel includes a plurality of components and each component comprises video information bits. The information bits are logically grouped into multiple logical groups in a packet, and error detection information such as multiple cyclic redundancy checks (CRCs) is determined for each logical group. The error detection information is placed in the packet, and the packet is transmitted
from a transmitter to a receiver over a wireless channel.
[5] In one embodiment, a transmitter groups the bits of uncompressed video pixel components into multiple logical groups per packet. Then, the transmitter determines a CRC value for each logical group, and places a CRC value in a CRC field in the packet for transmission to a receiver. The receiver uses the included CRC values to perform CRC calculations for detecting errors, and sends back an ACK frame to the transmitter to indicate which logical groups in the received packet are successfully received and which are erroneous. Based on the ACK frame from the receiver, the transmitter selectively retransmits a correct copy of the corrupted data to the receiver.
[6] Logically grouping the information bits into multiple logical groups comprises logically grouping N information bits B ...,B per pixel component (ranging from a
0, N-I
MSB B to a LSB B in terms of perceptual importance), into K logical groups LG ...,LG , wherein K < N. In one case wherein K < N, then one or more information bits
K-I are placed in at least one logical group according to perceptual importance. In another case where K < N, then two or more information bits are placed in at least one logical group according to perceptual importance.
[7] Upon receiving the packet the receiver uses the included CRC values to perform the
CRC calculations for detecting errors. The receiver then sends back an acknowledgement (ACK) frame to the transmitter to indicate which logical groups in the received packet are successfully received and which are erroneous (i.e., corrupted). The receiver uses a bitmap of K bits in the ACK frame to indicate to the transmitter which logical groups are successfully received and which are erroneous. The size of the bitmap, which is the same as the number of logical groups, is negotiated between the transmitter and the receiver before the start of an uncompressed video stream transmission.
[8] Based on the ACK frame from the receiver, the transmitter invokes selective retransmission of the correct copy of the corrupted logical groups to the receiver. In one embodiment, the transmitter invokes selective retransmission of the corrupted data by immediate retransmission of the corrupted data to the receiver in a retransmission packet. In another embodiment, the transmitter invokes delayed retransmissions of the corrupted data, wherein the transmitter first receives and collects P corresponding ACK frames back from the receiver. Then, based on the collected ACK frames, the transmitter determines the logical groups in the last P packets that need retransmissions. Then the transmitter begins a retransmission phase by retransmitting the corrupted logical groups from the highest priority logical group in perceptual importance, and continues until it can retransmit other logical groups in order of priority, without violating the receiver's presentation deadline.
[9] These and other features, aspects and advantages of the present invention will
become understood with reference to the following description, appended claims and accompanying figures.
Brief Description of the Drawings
[10] Fig. 1 shows an example of a data packet including a payload of uncompressed video pixel components that has a bit complemented in transmission from a transmitter to a receiver over a wireless channel. [11] Fig. 2 shows an example data packet with a payload content as in Fig. 1, however the payload comprises multiple logical groups and the packet includes a CRC field per logical group, according to the present invention. [12] Fig. 3 shows an example CRC control field in the Media Access Control (MAC) header of the data packet of Fig. 2, according to the present invention. [13] Fig. 4 shows a CRC control field indicating N logical groups, according to an embodiment of the present invention. [14] Fig. 5 shows a flowchart of a process for determining multiple CRC values for a data packet, according to an embodiment of the present invention. [15] Fig. 6 illustrate a diagrammatical example of forming N logical groups in a data packet based on the process of Fig. 5, wherein a CRC value is computed over each logical group, according to the present invention. [16] Fig. 7 exemplifies how the CRC values can be computed for different logical groups, according to an embodiment of the present invention. [17] Fig. 8 shows an example timing diagram of selective retransmission of the corrupted data, according to the present invention. [18] Fig. 9 shows the construction of a retransmission packet based on the perceptual importance of the logical groups, according to an embodiment of the present invention. [19] Fig. 10 shows a flowchart of an immediate retransmission process, according to an embodiment of the present invention. [20] Fig. 11 shows an example timing diagram of a delayed retransmission method, according to the present invention. [21] Fig. 12 shows a flowchart of a delayed retransmission process, according to an embodiment of the present invention. [22] Fig. 13 shows a functional block diagram of an example communication system, according to the present invention. [23] Fig. 14 shows a flowchart of an example process implemented by the receiver to perform the CRC calculations for detecting errors, according to the present invention. [24] In the drawings, like references refer to like elements.
Mode for the Invention [25] The present invention provides a method and system for transmission, and selective
retransmission, of uncompressed video over wireless communication channels. Typically, a video frame of pixels is divided into multiple scan lines. Each scan line contains an integer number of pixels, which are denoted by a number of pixel components. Quantization for pixel depth, or bits per pixel component (bitplane), may be 8-bit, 10-bit, 12-bit, or 16-bit values. A pixel component contains either a color component (chrominance) or a luminance component of the video. Considering an 8-bit quantization and 60 frames/second, a one second long uncompressed video (108Op) segment can be expressed as 60 x 3 x 8x 1420 x 1080 = 2.98 gigabits. Typically, it is not possible to retransmit the entire stream from a transmitter to a receiver without violating the presentation deadline of a sink device such as a TV display.
[26] As such, the present invention allows selective retransmission of video data based on human perceptual importance of such data. Given a frame of video pixels, wherein each pixel comprises multiple components (e.g., R, G, B), different bits of each pixel component do not equally affect the video quality. For example, a MSB largely affects the uncompressed video quality compared to a LSB. Therefore, in case of retransmission, the MSBs should be given the highest retransmission preference to conserve bandwidth and reduce retransmission delay.
[27] In many wireless communication systems, a frame structure is used for data transmission between a transmitter and a receiver. For example, the IEEE 802.11 standard uses frame aggregation in a Media Access Control (MAC) layer and a physical (PHY) layer. In a typical transmitter, a MAC layer receives a MAC Service Data Unit (MSDU) and attaches a MAC header thereto, in order to construct a MAC Protocol Data Unit (MPDU). The MAC header includes information such as a source address (SA) and a destination address (DA). The MPDU is a part of a physical (PHY) layer Service Data Unit (PSDU) and is transferred to a PHY layer in the transmitter to attach a PHY header (i.e., PHY preamble) thereto to construct a PHY Protocol Data Unit (PPDU). The PHY header includes parameters for determining a transmission scheme including a coding/modulation scheme.
[28] Typically, the most reliable coding/modulation scheme is applied to a PHY signal field in the PHY header, and an additional CRC check is added to ensure this information is received correctly at the receiver. The MAC header and the payload data in the MSDU are usually treated equally and transmitted using the same coding/ modulation scheme, which is less robust than that for the PHY signal field of the PHY header. Further, before transmission as a packet from a transmitter to a receiver, a preamble is attached to the PPDU, wherein the preamble can include channel estimation and synchronization information.
[29] Fig. 1 presents an example of a data packet 1 including a payload 2 of M un-
compressed video pixel components that is transmitted from a transmitter to a receiver over a wireless channel. In addition to including the payload 2, the packet 1 includes a CRC value in a CRC field 4 for the video pixels, and the usual PHY layer header (PHY HDR) 6 and MAC layer header (MAC HDR) 8.
[30] In one example, during transmission, a MSB 7 of an N-bit pixel component 9 in the payload 2 is complemented, causing a CRC error at the receiver. In another example, during transmission, a LSB 5 of an N-bit pixel component 9 in the payload 2 is complemented, causing a CRC error at the receiver. Since the CRC value comprises a checksum over the entire payload, it is not feasible to determine at the receiver whether the MSBs or the LSBs are corrupted. Moreover, retransmission of the payload when the LSB is complemented can be futile since a corrected LSB does not provide any discernable improvement to received video quality.
[31] Fig. 2 shows an example data packet 10, according to an embodiment of the present invention. The packet 10 includes a payload 12 of M uncompressed video pixel components that is transmitted from a transmitter to a receiver over a wireless channel. The payload 12 includes multiple logical groups (e.g., 520) and the packet 10 further includes a CRC value per logical group. Each CRC value is placed in a corresponding CRC field 14. The packet 10 further includes a PHY HDR 16 and a MAC HDR 18. Fig. 2 further shows an N-bit pixel component 20.
[32] Logically grouping the information bits into multiple logical groups comprises logically grouping N information bits B ..., B per pixel component (ranging from a
0, N-I
MSB B to a LSB B in terms of perceptual importance), into K logical groups LG ..., LG , wherein K < N. In one case wherein K < N, then one or more information
K-I bits are placed in at least one logical group according to perceptual importance. In another case where K < N, then two or more information bits are placed in at least one logical group according to perceptual importance. For example, N can be one of 8, 10, 12 or 16 bits per pixel component, and K= 2 logical groups, wherein pixel component bits from a MSB B 7 to a bit B 4 are mapped to a first logical group LG 1 , and pixel component bits from a bit B to a LSB B are mapped to second logical group LG .
[33] In generating the packet 10, the transmitter (e.g., an uncompressed video stream source/sender) groups M x N video bits into K logical groups (K ≤ N) per packet 10, such that one or more bitplanes per pixel component are grouped in one logical group, where N is the number of bits per pixel component. If K equals N, then all of the LSBs are in a logical group, all of the MSBs are in another logical group, and so on and so forth. Then, the transmitter determines a CRC value for each logical group, and places the CRC value in a CRC field 14 in the packet 10.
[34] In one example, the transmitter forms K= N logical groups in each packet, wherein each logical group has a CRC value that is placed in a corresponding CRC field in the
packet. Thus, the transmitter places N CRC values in N CRC fields 14 in the packet 10, one for each pixel component bit logical group. The packet 10, including the CRC values, is transmitted to the receiver (e.g., an uncompressed video stream sink). Upon receiving the packet the receiver uses the included CRC values to perform the CRC calculations for detecting errors. The receiver then sends back an ACK frame to the transmitter to indicate which logical groups in the received packet are successfully received and which are erroneous (i.e., corrupted). Based on the ACK frame from the receiver, the transmitter invokes selective retransmission of the corrupted data to the receiver, as described in more detail further below.
[35] Referring to the example in Fig. 3, preferably the transmitter places a CRC control field 21 in the MAC HDR 18 to signal the receiver on how the logical groups are formed for CRC error detection at the receiver. The CRC control field 21 includes a CRC count (CRCC) field 22 that indicates the number of logical groups K formed in the packet. In this example, the CRCC field 22 is 4 bits long. The CRC control field 21 further includes a CRCBitmap field 23, which is repeated CRCC times, or the number of logical groups K formed. Assuming N bitplanes per pixel component (a typical value for N is 8, 10, 12 or 16), an array of N bits is used in the CRCBitmap field. The MSB of the CRCBitmap corresponds to the MSB bitplane. The zero entries in the CRCBitmap identify bitplanes that are excluded from the logical group, and thus, excluded from the CRC computation. Non-zero entries identify bitplanes that are included in the logical group, and thus, included in the CRC computation. Each possible bitplane combination may be selected. The CRCBitmap is repeated CRCC times (i.e., the field 23 is CRCC x N-bits long), which indicates the number of logical bitplane combinations formed.
[36] Fig. 4 illustrates another example CRC control field 24 including an 8-bit CRCC field 25, and N CRCBitmaps 26, wherein each CRCBitmap 26 comprises N bits. As each pixel component contains N bitplanes, the transmitter forms K= N logical groups for a packet and for each logical group a CRC value is computed and placed in a corresponding CRC field in the packet. Thus, the CRCC field 25 is set to K = N. In each of the N CRCBitmaps 26 only one bit is set to "1" to indicate which bitplane is included in the CRC computation.
[37] Fig. 5 shows a flowchart of an embodiment of a process 28 for determining multiple
CRC values for a packet, including the steps of:
[38] Step 29: Determine the number of logical groups K.
[39] Step 30: Construct a packet MAC frame containing video pixels as payload.
[40] Step 32: Determine if K > 0? If yes, then go to step 34, otherwise go to step 38.
[41] Step 34: Compute and append a CRC value for the K th logical group, in the packet.
[42] Step 36: Decrement K (e.g., by one), and go back to step 32.
[43] Step 38: Send the packet to the PHY layer for transmission to the receiver.
[44] Fig. 6 illustrates a diagrammatical example of forming K= N logical groups, LG ...,
LG , in a packet based on the steps in Fig. 5, wherein a CRC value is computed over
N-I each logical group. 510 shows said packet 10 including the uncompressed video payload 12, the PHY HDR 16 and the MAC HDR 18. 520 shows the packet 10 after the transmitter forms K = N logical groups 17 in the uncompressed video payload 12. For logical grouping, there is no physical/actual reordering/moving of various bits of the uncompressed video payload. The logical grouping is used for determining a CRC value for bits in each logical group. 530 shows the packet 10 after the transmitter determines a CRC value for each logical group, and appends N CRC fields 14 to the packet 10, such that a CRC "N-I " is computed over a logical group "N-I " , and so on. Thus, we have a total of N CRCs from CRC to CRC .
0 N-I
[45] Fig. 7 exemplifies how CRC values can be computed for different logical groups. In
Fig. 7, a set of pixels 40 in the packet are shown, wherein each pixel includes three components 42 (e.g., R, G, B color components). Each pixel component includes N bits 43 (i.e., B ..., B ). The bits of the same level (or bitplane) for each pixel component 42, of all the pixels in the packet, form a logical group. For example, the bitplane B of each pixel component 42, for all the pixels 40 in the packet, form a logical group i, wherein i = 0, ..., N-I. As a result, in the example of Fig. 7 there are K = N logical groups (i.e., LG ..., LG ).
[46] A CRC value 46 is calculated for each logical group using a corresponding calculation block 44, whereby in the example of Fig. 7 a total of N CRC values (i.e., CRC 0, ..., CRC N-I ) are calculated. The N CRC values are p *laced in CRC fields 14 in the packet 10, wherein each CRC value 46 is placed in a corresponding CRC field 14.
[47] When Unequal Error Protection (UEP) is applied, the transmitter uses similar coding rate for CRC values as for corresponding data (e.g., the same coding rate for data and corresponding CRC value).
[48] The packet 10 with the CRC control field 21 and the CRC values in the CRC fields
14 are transmitted to the receiver (an uncompressed video stream sink). Upon receiving the packet, the receiver uses the CRC control field 21 and the CRC values to perform CRC calculations for detecting errors.
[49] The receiver then sends an ACK frame to the transmitter to indicate the logical groups that are successfully received and those which are erroneous (i.e., corrupted). The receiver uses a bitmap of N bits in the ACK frame to indicate to the transmitter which logical groups are successfully received and which are erroneous. The size of the bitmap is negotiated between the transmitter and the receiver before the start of an uncompressed video stream transmission. The receiver uses a fixed length bitmap in the ACK frame to indicate the CRC errors Jn another example, the number of ACK
bits is less than the CRCBitmaps (or CRCC filed) which indicate the number of CRCs included. In this case, the receiver uses the CRC fields for performing error concealment techniques in the absence of retransmissions.
[50] Based on the ACK frame, in one example, the transmitter invokes selective retransmission of the corrupted uncompressed video data. Fig. 8 shows an example timing diagram wherein at time Tl the transmitter sends a packet 10 of uncompressed video pixel data (along with CRC fields and the CRC control field) to the receiver, and at time T2 the receiver sends back an ACK frame 53 to the transmitter, indicating the status of the received data packet. Upon receiving an ACK frame from the receiver, the transmitter essentially invokes immediate retransmission of the corrupted data in a retransmission packet 54 at time T3.
[51] Since each packet has a specific presentation time at the receiver, the transmitter constructs the retransmission packet based on the perceptual importance of the logical groups as shown by the example in Fig. 9. As such in Fig. 9, a logical group 50 of pixel component MSBs has a higher retransmission priority than a logical group 52 of pixel component LSBs.
[52] Fig. 10 shows a flowchart of an embodiment of an immediate retransmission process
55 implemented by the transmitter after sending a packet to the receiver, including the steps of:
[53] Step 56: Receive an ACK frame from the receiver.
[54] Step 58: Construct an initial retransmit packet, and set an index K to indicate the highest priority (non zero).
[55] Step 60: Determine if K > 0? If not go to step 70, otherwise go to step 62.
[56] Step 62: Based on the ACK frame, determine if the K * logical group in the last packet requires retransmission? If yes, go to step 64, otherwise go to step 68.
[57] Step 64: Since each uncompressed video data packet has a fixed presentation deadline, determine if there is enough time to retransmit the K th logical group without exceeding the presentation deadline? If not, go to step 70, otherwise, go to step 66.
[58] Step 66: Include the K th logical group in the retransmit packet.
[59] Step 68: Decrement K (e.g., by one), and go back to step 60.
[60] Step 70: Send a retransmit packet to the PHY layer for transmission to the receiver.
[61] In another example, the transmitter invokes delayed retransmissions of corrupted data. Fig. 11 shows a timing diagram for a delayed retransmission process, wherein in the time period between Tl and Tp (collection phase), the transmitter sends P packets 10 of video pixel data with CRC fields to the receiver, and receives P corresponding ACK frames 53 back from the receiver. As such, the transmitter collects P ACK frames 53.
[62] Based on the collected ACK frames, the transmitter determines the logical groups in
the last P packets that need retransmissions. Then at time Tr, the transmitter begins a retransmission phase by retransmitting the corrupted logical groups (72A, 72B, etc.) from the highest priority logical group in perceptual importance, and continues until it can retransmit other logical groups in order of priority, without violating the receiver's presentation deadline.
[63] The transmitter includes the necessary signaling information in retransmissions so that the receiver can determine which logical groups are retransmitted and to which uncompressed video data packets they belong to. Assuming N bits per pixel component and retransmission after P packets and CRCC the number of CRCs per packet, at most CRCC x N x P bits are needed to signal the presence/absence of each logical group in said retransmissions.
[64] Fig. 12 shows a flowchart of an embodiment of a delayed retransmission process 80 implemented by the transmitter after sending P packets to the receiver, including the steps of:
[65] Step 81: Receive the P ' ACK frame from the receiver.
[66] Step 82: Construct an initial retransmit packet, and set an index K to indicate the highest priority (non zero).
[67] Step 84: Determine if K > 0? If not go to step 100, otherwise go to step 86.
[68] Step 86: Initialize variable P to indicate P packets.
[69] Step 88: Determine if P > 0? If not go to step 90, otherwise go to step 92.
[70] Step 90: Decrement K (e.g., by one). Go back to step 84.
[71] Step 92 : Based on the ACK frame, determine if the K * logical group of P * packet requires retransmission? If yes, go to step 94, otherwise go to step 98.
[72] Step 94: Since each uncompressed video data packet has a fixed presentation deadline, determine if there is enough time to transmit the K th logical group? If not, go to step 100, otherwise, go to step 96.
[73] Step 96: Include the K th logical group in the retransmit packet.
[74] Step 98: Decrement P (e.g., by one), and go back to step 88.
[75] Step 100: Send the retransmit packet to the PHY layer for transmission to the receiver.
[76] In another example, the transmitter and the receiver negotiate a CRC control field by exchanging management or control frames. As a result, a CRC control field need not be in the MAC header. Whenever, either the transmitter or the receiver desires to change the CRC control field, another set of control or management frames are exchanged to successfully negotiate the new values of CRC control field.
[77] Fig. 13 shows a functional block diagram of an example wireless communication system 200 according to the present invention, that implements selective retransmission of uncompressed video over wireless communication channels using
multiple CRCs as described above. The system 200 includes a wireless transmitter 202 and a wireless receiver 204. The transmitter 202 includes a PHY layer 206 and a MAC layer 208. Similarly, the receiver 204 includes a PHY layer 214 and a MAC layer 216. The PHY and MAC layers provide wireless communication between the transmitter 202 and the receiver 204 via antennas through a wireless medium 201.
[78] The transmitter 202 further includes a logical grouping module 210 that receives uncompressed video from higher levels (e.g., a video source such as a HDVD player) implements logical grouping on uncompressed video from higher levels according to the present invention. The transmitter 202 further includes a CRC generation module
212 that generates said CRC control field and CRC values according to the present invention. The logically grouped pixels along with the CRC control field and CRC values are placed in packets by the MAC layer 208, and transmitted by the PHY layer 206. The transmitter 202 further includes a retransmission controller 213 that implements the retransmission of corrupted data.
[79] In the wireless receiver 204, the PHY and MAC layers 214 and 216, process the received packets. The receiver 204 further includes a CRC validation and error detection module 217 that uses the CRC control field and CRC values per packet to validate the CRC value and detect errors in the packet accordingly. The receiver 204 further includes an ACK frame generation module 218 that in conjunction with the MAC layer generates said ACK frames to indicate to the transmitter which logical groups in a packet are corrupted. The receiver 204 further includes an error correction module 219 that receives retransmitted logical groups from the transmitter and provides corrected uncompressed video pixels to higher layers for consumption (e.g., display). The error correction module 219 can also perform error concealment techniques in the absence of retransmissions.
[80] Though in Fig. 13, modules 217, 218 and 214 in the receiver 204 are shown separate from the MAC layers 216, one or more of the modules 217, 218 and 214 can be a component of the MAC layer 216. Similarly, one or more of the modules 210, 212 and
213 in the transmitter can be a component of the MAC layer 208.
[81] Fig. 14 shows a flowchart of an example process 250 implemented by the receiver to perform the CRC calculations for detecting errors. The packet 10 with the CRC control field 21 and the CRC values in the CRC fields 14 are transmitted to the receiver. Upon receiving the packet, the receiver uses the CRC control field 21 and the CRC values, to perform the CRC calculations for detecting errors, according to the following steps:
[82] Step 252: Receive the packet and begin processing the packet.
[83] Step 254: Set index i equal to the CRCC field of the CRC control field in the packet.
[84] Step 256: Determine if i > 0. If yes, go to step 258, otherwise go to step 264.
[85] Step 258: Compute the CRC corresponding to the i ' CRCBitmap.
[86] Step 260: If the CRC matches, then set a bit corresponding to bit i in the ACK field to one otherwise set the bit to zero
[87] Step 262: i = i - 1, go back to step 256.
[88] Step 264: End.
[89] Though in the above examples the CRC is used for error detection, those skilled is skilled in the art will recognize that the present invention is useful with other error detection/correction information from the correctness and optionally type of error can be recovered. Therefore, the present invention is not limited to CRC as error detection/ correction means.
[90] As is known to those skilled in the art, the aforementioned example architectures described above, according to the present invention, can be implemented in many ways, such as program instructions for execution by a processor, as logic circuits, as an application specific integrated circuit, as firmware, etc. The present invention has been described in considerable detail with reference to certain preferred versions thereof; however, other versions are possible. Therefore, the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein. Industrial Applicability
[91] In one example, the ACK frame indicates the corrupted information for the highest priority logical groups according to perceptual importance, to the transmitter. The lowest priority logical groups, according to the perceptual importance are determined if they are correctly received by the receiver based on the CRC calculations, whereby an error concealment technique is used in the absence of retransmissions. In another example, no ACK is sent by the receiver back to the transmitter, but CRC fields are included in the packet 20 so that the receiver can use some error concealment technique to recover bit errors.