Media coding for loss recovery with remotely predicted data units
First Claim
1. A computer system comprising a processor and memory that stores instructions for causing the computer system to operate as a video decoder adapted to:
- receive encoded video in a data stream, wherein the encoded video includes an entropy coded macroblock type for a current macroblock of a current frame;
decode video using the encoded video, wherein the video decoder is further adapted to;
decode 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 in a first buffer, wherein the first buffer is adapted to store as the first reference frame a reconstructed version of a previous 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 in a second buffer, wherein the second buffer is adapted to store as the second reference frame a reconstructed version of a previous frame that precedes the first reference frame; and
decode the current macroblock according to the macroblock type of the current macroblock, wherein the video decoder is further adapted to;
when the macroblock type for the current macroblock is the intra type, decode the current macroblock in an intra decoding mode;
when the macroblock type for the current macroblock is the first motion-compensated prediction type, decode the current macroblock using motion compensation relative to the first reference frame in the first buffer, 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, decode the current macroblock using motion compensation relative to the second reference frame in the second buffer, wherein the motion compensation for the second motion-compensated prediction type uses at most one motion vector and one reference frame per block.
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.
159 Citations
21 Claims
-
1. A computer system comprising a processor and memory that stores instructions for causing the computer system to operate as a video decoder adapted to:
-
receive encoded video in a data stream, wherein the encoded video includes an entropy coded macroblock type for a current macroblock of a current frame; decode video using the encoded video, wherein the video decoder is further adapted to; decode 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 in a first buffer, wherein the first buffer is adapted to store as the first reference frame a reconstructed version of a previous 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 in a second buffer, wherein the second buffer is adapted to store as the second reference frame a reconstructed version of a previous frame that precedes the first reference frame; and decode the current macroblock according to the macroblock type of the current macroblock, wherein the video decoder is further adapted to; when the macroblock type for the current macroblock is the intra type, decode the current macroblock in an intra decoding mode; when the macroblock type for the current macroblock is the first motion-compensated prediction type, decode the current macroblock using motion compensation relative to the first reference frame in the first buffer, 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, decode the current macroblock using motion compensation relative to the second reference frame in the second buffer, 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 (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer system comprising a processor and memory that stores instructions for causing the computer system to operate as a video encoder adapted to:
-
encode video to produce encoded video for output to a data stream, wherein the video encoder is further adapted to; select 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 in a first buffer, wherein the first buffer is adapted to store as the first reference frame a reconstructed version of a previous 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 in a second buffer, wherein the second buffer is adapted to store as the second reference frame a reconstructed version of a previous frame that precedes the first reference frame; entropy code the macroblock type of the current macroblock; and encode the current macroblock according to the macroblock type of the current macroblock, wherein the video encoder is further adapted to; when the macroblock type for the current macroblock is the intra type, encode the current macroblock in an intra coding mode; when the macroblock type for the current macroblock is the first motion-compensated prediction type, encode the current macroblock using motion compensation relative to the first reference frame in the first buffer, 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, encode the current macroblock using motion compensation relative to the second reference frame in the second buffer, wherein the motion compensation for the second motion-compensated prediction type uses at most one motion vector and one reference frame per block; and output the encoded video in the data stream, wherein the encoded video includes the entropy coded macroblock type for the current macroblock of a current frame. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A computer-readable medium storing computer-executable instructions for causing a video decoder programmed thereby to perform a method, the computer-readable medium including one or more of magnetic storage and optical storage, the 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 in a first buffer, wherein the first buffer is adapted to store as the first reference frame a reconstructed version of a previous 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 in a second buffer, wherein the second buffer is adapted to store as the second reference frame a reconstructed version of a previous frame that precedes 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 in the first buffer, 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 in the second buffer, 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 (17, 18)
-
-
19. 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 in a first buffer, wherein the first buffer stores as the first reference frame a reconstructed version of a previous 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 in a second buffer, wherein the second buffer stores as the second reference frame a reconstructed version of a previous frame that precedes 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 in the first buffer, 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 in the second buffer, 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 (20, 21)
-
Specification