MEDIA CODING FOR LOSS RECOVERY WITH REMOTELY PREDICTED DATA UNITS
1 Assignment
0 Petitions
Accused Products
Abstract
An improved loss recovery method for coding streaming media classifies each data unit in the media stream as an independent data unit (I unit), a remotely predicted unit (R unit) or a predicted data unit (P unit). Each of these units is organized into independent segments having an I unit, multiple P units and R units interspersed among the P units. The beginning of each segment is the start of a random access point, while each R unit provides a loss recovery point that can be placed independently of the I unit. This approach separates the random access point from the loss recovery points provided by the R units, and makes the stream more impervious to data losses without substantially impacting coding efficiency. The most important data units are transmitted with the most reliability to ensure that the majority of the data received by the client is usable. The I units are the least sensitive to transmission losses because they are coded using only their own data. While they provide the best coding efficiency, the P units are the most sensitive to data loss because the loss of one P unit renders useless all of the P units that depend on it. The remotely predicted units are dependent on the I unit, or in an alternative implementation, on another R unit.
41 Citations
46 Claims
-
1-26. -26. (canceled)
-
27. A method of decoding video using a video decoder implemented in a computer system, the method comprising:
-
at the video decoder, receiving encoded video in a data stream, wherein the encoded video includes an entropy coded macroblock type for a current macroblock of a current frame; with the video decoder, decoding video using the encoded video, including; decoding the entropy coded macroblock type of the current macroblock to determine its macroblock type from among plural macroblock types possible for the current macroblock, the plural macroblock types including; an intra type that indicates the current macroblock is to be decoded using intra decoding; a first motion-compensated prediction type that indicates motion compensation for the current macroblock is to be performed relative to a first reference frame that immediately precedes the current frame; and a second motion-compensated prediction type that indicates motion compensation for the current macroblock is to be performed relative to a second reference frame different than the first reference frame; and decoding the current macroblock according to the macroblock type of the current macroblock, including; when the macroblock type for the current macroblock is the intra type, decoding the current macroblock in an intra decoding mode; when the macroblock type for the current macroblock is the first motion-compensated prediction type, decoding the current macroblock using motion compensation relative to the first reference frame, wherein the motion compensation for the first motion-compensated prediction type uses at most one motion vector and one reference frame per block; and when the macroblock type for the current macroblock is the second motion-compensated prediction type, decoding the current macroblock using motion compensation relative to the second reference frame, wherein the motion compensation for the second motion-compensated prediction type uses at most one motion vector and one reference frame per block. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A method of encoding video using a video encoder implemented in a computer system, the method comprising:
-
with the video encoder, encoding video to produce encoded video for output to a bit stream, including; selecting a macroblock type of a current macroblock of a current frame from among plural macroblock types possible for the current macroblock, the plural macroblock types including; an intra type that indicates the current macroblock is encoded using intra coding; a first motion-compensated prediction type that indicates motion compensation for the current macroblock is performed relative to a first reference frame that immediately precedes the current frame; and a second motion-compensated prediction type that indicates motion compensation for the current macroblock is performed relative to a second reference frame different than the first reference frame; entropy coding the macroblock type of the current macroblock; and encoding the current macroblock according to the macroblock type of the current macroblock, including; when the macroblock type for the current macroblock is the intra type, encoding the current macroblock in an intra coding mode; when the macroblock type for the current macroblock is the first motion-compensated prediction type, encoding the current macroblock using motion compensation relative to the first reference frame, wherein the motion compensation for the first motion-compensated prediction type uses at most one motion vector and one reference frame per block; and when the macroblock type for the current macroblock is the second motion-compensated prediction type, encoding the current macroblock using motion compensation relative to the second reference frame, wherein the motion compensation for the second motion-compensated prediction type uses at most one motion vector and one reference frame per block. with the video encoder, outputting the encoded video in a data stream, wherein the encoded video includes the entropy coded macroblock type for the current macroblock of a current frame. - View Dependent Claims (39, 40, 41, 42, 43)
-
-
44. A computer-readable medium storing in non-volatile storage computer-executable instructions for causing a video decoder programmed thereby to perform a method comprising:
-
receiving encoded video in a data stream, wherein the encoded video includes an entropy coded macroblock type for a current macroblock of a current frame; decoding video using the encoded video, including; decoding the entropy coded macroblock type of the current macroblock to determine its macroblock type from among plural macroblock types possible for the current macroblock, the plural macroblock types including; an intra type that indicates the current macroblock is to be decoded using intra decoding; a first motion-compensated prediction type that indicates motion compensation for the current macroblock is to be performed relative to a first reference frame that immediately precedes the current frame; and a second motion-compensated prediction type that indicates motion compensation for the current macroblock is to be performed relative to a second reference frame different than the first reference frame; and decoding the current macroblock according to the macroblock type of the current macroblock, including; when the macroblock type for the current macroblock is the intra type, decoding the current macroblock in an intra decoding mode; when the macroblock type for the current macroblock is the first motion-compensated prediction type, decoding the current macroblock using motion compensation relative to the first reference frame, wherein the motion compensation for the first motion-compensated prediction type uses at most one motion vector and one reference frame per block; and when the macroblock type for the current macroblock is the second motion-compensated prediction type, decoding the current macroblock using motion compensation relative to the second reference frame, wherein the motion compensation for the second motion-compensated prediction type uses at most one motion vector and one reference frame per block. - View Dependent Claims (45, 46)
-
Specification