Method and apparatus for transmission of a flexible and error resilient video bitstream
First Claim
1. A method of transmitting a video bitstream over a communication medium, the video bitstream including a plurality of macroblocks, the method comprising:
- representing the video bitstream as a hierarchical structure of layers including a picture layer, a slice layer, and a macroblock layer;
receiving a current macroblock of the plurality of macroblocks for transmission over the communication medium by way of a Real-Time Transport Protocol;
determining whether to start a new slice in the slice layer based upon the size of a current slice and a predetermined packet size associated with the Real-Time Transport Protocol;
if a determination to start a new slice occurs, thencreating a new slice including a slice header containing synchronization information identifying the location of the current macroblock within a current picture of the picture layer,fragmenting the video bitstream between the current macroblock and a previous macroblock by associating the previous macroblock with the current slice and associating the current macroblock with the new slice, andtransmitting the current macroblock and the previous macroblock as payload data of two different Real-Time Transport Protocol packets;
associating the current macroblock and the previous macroblock with the current slice and transmitting the current macroblock and the previous macroblock in the payload of a common transport protocol packet if a determination to start a new slice does not occur.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for transmitting a video bitstream over a communication medium is provided. The video bitstream is carried as payload data within packets of a transport protocol by dynamically determining whether to fragment the video bitstream at current macroblock. If no determination of fragmentation occurs, based upon the maximum transfer unit size of the transport protocol, the current macroblock is transmitted in a current transport protocol packet. However, if a determination of fragmentation occurs, synchronization information and the current macroblock are transmitted in another transport protocol packet. Permitting dynamic insertion of synchronization information, gives rise to a flexible video bitstream that can be efficiently packetized for a variety of transport protocols.
-
Citations
6 Claims
-
1. A method of transmitting a video bitstream over a communication medium, the video bitstream including a plurality of macroblocks, the method comprising:
-
representing the video bitstream as a hierarchical structure of layers including a picture layer, a slice layer, and a macroblock layer; receiving a current macroblock of the plurality of macroblocks for transmission over the communication medium by way of a Real-Time Transport Protocol; determining whether to start a new slice in the slice layer based upon the size of a current slice and a predetermined packet size associated with the Real-Time Transport Protocol; if a determination to start a new slice occurs, then creating a new slice including a slice header containing synchronization information identifying the location of the current macroblock within a current picture of the picture layer, fragmenting the video bitstream between the current macroblock and a previous macroblock by associating the previous macroblock with the current slice and associating the current macroblock with the new slice, and transmitting the current macroblock and the previous macroblock as payload data of two different Real-Time Transport Protocol packets; associating the current macroblock and the previous macroblock with the current slice and transmitting the current macroblock and the previous macroblock in the payload of a common transport protocol packet if a determination to start a new slice does not occur. - View Dependent Claims (2, 3)
-
-
4. A computer system including a memory, and a processor coupled to the memory, the processor configured to transmit an input video bitstream over a communication medium via a Real-Time transport protocol (RTP), the memory having stored therein sequences of instructions which, when executed by the processor, cause the processor to:
-
in a first mode, transform the input video bitstream into a H.263-like video bitstream, the H.263-like video bitstream arranged in a hierarchical structure of layers including a picture layer, a group of blocks layer, and a macroblock layer, each group of blocks in the group of blocks layer including synchronization information at predetermined spatial locations, and in a second mode, transform the input video bitstream into a H.263-like video bitstream, the H.263-like video bitstream including the picture layer, the macroblock layer, and a slice layer in place of the group of blocks layer, the slice layer having a plurality of slices, each slice in the plurality of slices beginning at a location dynamically determined during packetization based upon one or more characteristics of the RTP, one characteristic of each slice being the size of an RTP packet, each slice in the plurality of slices including a slice header followed by a plurality of macroblocks in the macroblock layer, the slice header including synchronization information that identifies the location of the first of the plurality of macroblocks relative to the beginning of a current picture of the picture layer, wherein the size of most of the slices of the plurality of slices is substantially the same size as a payload size of the RTP packet.
-
-
5. A computer system including a memory, and a processor coupled to the memory, the processor configured to transmit an input video bitstream comprising a plurality of macroblocks over a communication medium via a transport protocol, the memory having stored therein sequences of instructions which, when executed by the processor, cause the processor to:
-
represent the video bitstream as a hierarchical structure of layers including a picture layer, a slice layer, and a macroblock layer; receive a current macroblock of the plurality of macroblocks for transmission over the communication medium by way of a transport protocol; determine whether to start a new slice in the slice layer based upon the size of a current slice and a predetermined packet size associated with the transport protocol; if a determination to start a new slice occurs, then create a new slice including a slice header containing synchronization information identifying the location of the current macroblock within a current picture of the picture layer, each slice including a slice header and one or more macroblocks of the plurality of macroblocks, the slice header including synchronization information identifying the location within a picture of the first of the one or more macroblocks in the slice; and separately transport each slice of the plurality of slices as payload data in a transport protocol packet.
-
-
6. A machine-readable medium having stored thereon data representing sequences of instructions, and the sequences of instructions which, when executed by a processor, cause the processor to:
-
represent the video bitstream as a hierarchical structure of layers including a picture layer, a slice layer, and a macroblock layer; receive a current macroblock of the plurality of macroblocks for transmission over the communication medium by way of a Real-Time Transport Protocol; determine whether to start a new slice in the slice layer based upon the size of a current slice and a predetermined packet size associated with the Real-Time Transport Protocol; if a determination to start a new slice occurs, then create a new slice including a slice header containing synchronization information identifying the location of the current macroblock within a current picture of the picture layer, fragment the video bitstream between the current macroblock and a previous macroblock by associating the previous macroblock with the current slice and associating the current macroblock with the new slice, and transmit the current macroblock and the previous macroblock as payload data of two different Real-Time Transport Protocol packets; associating the current macroblock and the previous macroblock with the current slice and transmitting the current macroblock and the previous macroblock in the payload of a common transport protocol packet if a determination to start a new slice does not occur.
-
Specification