Media coding for loss recovery with remotely predicted data units
First Claim
1. In a computing device that implements a video encoder, the computing device including a processor and memory, a method of encoding video data streams in encoded form, the method comprising:
- with the computing device that implements the video encoder, determining a type value for a unit of video data in a video image, wherein the type value is one of plural possible type values including an intra type value, a first single-unit single-reference inter-prediction type value, and a second single-unit single-reference inter-prediction type value;
when the type value for the unit is the intra type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using an intra encoding mode including intra encoding;
when the type value for the unit is the first single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a first inter encoding mode that favors quality at the expense of decoding flexibility for a given bitrate, wherein the encoder uses at most one motion vector and one reference identifier per block in the first inter encoding mode;
when the type value for the unit is the second single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a second inter encoding mode different than the first inter encoding mode, wherein the second inter encoding mode favors decoding flexibility at the expense of quality for the given bitrate, and wherein the encoder also uses at most one motion vector and one reference identifier per block in the second inter encoding mode;
with the computing device that implements the video encoder, entropy encoding the type value for the unit; and
with the computing device that implements the video encoder, outputting part of a bitstream, the outputted part indicating the type value for the unit, wherein the type value for the unit is in encoded form in the bitstream.
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.
-
Citations
22 Claims
-
1. In a computing device that implements a video encoder, the computing device including a processor and memory, a method of encoding video data streams in encoded form, the method comprising:
-
with the computing device that implements the video encoder, determining a type value for a unit of video data in a video image, wherein the type value is one of plural possible type values including an intra type value, a first single-unit single-reference inter-prediction type value, and a second single-unit single-reference inter-prediction type value; when the type value for the unit is the intra type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using an intra encoding mode including intra encoding; when the type value for the unit is the first single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a first inter encoding mode that favors quality at the expense of decoding flexibility for a given bitrate, wherein the encoder uses at most one motion vector and one reference identifier per block in the first inter encoding mode; when the type value for the unit is the second single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a second inter encoding mode different than the first inter encoding mode, wherein the second inter encoding mode favors decoding flexibility at the expense of quality for the given bitrate, and wherein the encoder also uses at most one motion vector and one reference identifier per block in the second inter encoding mode; with the computing device that implements the video encoder, entropy encoding the type value for the unit; and with the computing device that implements the video encoder, outputting part of a bitstream, the outputted part indicating the type value for the unit, wherein the type value for the unit is in encoded form in the bitstream. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a computing device that implements a video encoder, the computing device including a processor and memory, a method of encoding video data including plural units, wherein each of the plural units is for video data in one video image, the method comprising:
-
for each of the plural units; with the computing device that implements the video encoder, determining a type value for the unit, wherein the type value is one of plural possible type values, the plural possible type values including an intra type value, a first single-unit single-reference inter-prediction type value, and a second single-unit single-reference inter-prediction type value; when the type value for the unit is the intra type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using an intra encoding mode; when the type value for the unit is the first single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a first inter encoding mode that favors quality at the expense of decoding flexibility for a given bitrate, wherein the encoder uses at most one motion vector and one reference identifier per block in the first inter encoding mode; when the type value for the unit is the second single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a second inter encoding mode, wherein the encoder also uses at most one motion vector and one reference identifier per block in the second inter encoding mode, wherein the second inter encoding mode differs from the first inter encoding mode, and wherein the second inter encoding mode favors decoding flexibility at the expense of quality for the given bitrate; with the computing device that implements the video encoder, entropy encoding the type value for the unit; and with the computing device that implements the video encoder, outputting part of a bitstream, the outputted part indicating the type value for the unit, wherein the type value for the unit is in encoded form in the bitstream; wherein, for the first and second inter encoding modes, the encoder selects from among plural reference images and outputs one or more additional parts of the bitstream, the outputted one or more additional parts indicating one or more reference identifiers for motion compensation. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. In a computing device that implements a video encoder, the computing device including a processor and memory, a method of encoding video data, the method comprising:
-
with the computing device that implements the video encoder, determining a type value for a unit of the video data, wherein the type value is one of plural possible type values, the plural possible type values including an intra type value, a first single-unit single-reference inter-prediction type value, and a second single-unit single-reference inter-prediction type value; when the type value for the unit is the intra type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using intra encoding; when the type value for the unit is the first single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a first inter encoding mode that favors quality at the expense of decoding flexibility for a given bitrate, wherein the encoder uses at most one motion vector and one reference identifier per block in the first inter encoding mode; when the type value for the unit is the second single-unit single-reference inter-prediction type value, with the computing device that implements the video encoder, encoding at least some of the video data for the unit using a second inter encoding mode different than the first inter encoding mode, wherein the encoder also uses at most one motion vector and one reference identifier per block in the second inter encoding mode, and wherein the second inter encoding mode favors decoding flexibility at the expense of quality for the given bitrate; with the computing device that implements the video encoder, entropy encoding the type value for the unit; and with the computing device that implements the video encoder, outputting part of a bitstream, the outputted part indicating the entropy coded type value for the unit, wherein the type value for the unit is in encoded form in the bitstream. - View Dependent Claims (17, 18, 19, 20, 21, 22)
-
Specification