Advanced bi-directional predictive coding of video frames
First Claim
1. In a computing device that implements a video decoder, the computing device including a processor and memory, a method of decoding images in a sequence of video images, the method comprising:
- receiving and decoding, with the computing device that implements the video decoder, a code in a bit stream to determine a fraction for a current image in the sequence, wherein the fraction represents an estimated temporal distance position for the current image relative to an interval between a first reference image for the current image and a second reference image for the current image, and wherein the determination of the fraction is independent of actual temporal distance positions of the respective reference images; and
for motion compensation for a direct mode macroblock in the current image, with the computing device that implements the video decoder, processing the fraction along with a motion vector for a co-located macroblock in the first reference image, wherein the motion vector represents motion in the first reference image relative to the second reference image, and wherein the processing the fraction along with the motion vector results in a representation of motion for the direct mode macroblock in the current image relative to the first reference image and relative to the second reference image.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques and tools for coding/decoding of video images, and in particular, B-frames, are described. In one aspect, a video encoder/decoder determines a fraction for a current image in a sequence. The fraction represents an estimated temporal distance position for the current image relative to an interval between a reference images for the current image. The video encoder/decoder processes the fraction along with a motion vector for a first reference image, resulting in a representation of motion (e.g., constant or variable velocity motion) in the current image. Other aspects are also described, including intra B-frames, forward and backward buffers for motion vector prediction, bitplane encoding of direct mode prediction information, multiple motion vector resolutions/interpolation filters for B-frames, proactive dropping of B-frames, and signaling of dropped predicted frames.
383 Citations
51 Claims
-
1. In a computing device that implements a video decoder, the computing device including a processor and memory, a method of decoding images in a sequence of video images, the method comprising:
-
receiving and decoding, with the computing device that implements the video decoder, a code in a bit stream to determine a fraction for a current image in the sequence, wherein the fraction represents an estimated temporal distance position for the current image relative to an interval between a first reference image for the current image and a second reference image for the current image, and wherein the determination of the fraction is independent of actual temporal distance positions of the respective reference images; and for motion compensation for a direct mode macroblock in the current image, with the computing device that implements the video decoder, processing the fraction along with a motion vector for a co-located macroblock in the first reference image, wherein the motion vector represents motion in the first reference image relative to the second reference image, and wherein the processing the fraction along with the motion vector results in a representation of motion for the direct mode macroblock in the current image relative to the first reference image and relative to the second reference image. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. In a computing device that implements a video encoder, the computing device including a processor and memory, a method of encoding images in a sequence of video images, the method comprising:
-
with the computing device that implements the video encoder, determining a fraction for a current image in the sequence, wherein the current image has a previous reference image and a future reference image, and wherein the fraction represents a temporal position for the current image relative to the respective reference images; with the computing device that implements the video encoder, selecting direct mode prediction for a current direct mode macroblock in the current image; with the computing device that implements the video encoder, finding a motion vector for a co-located macroblock in the future reference image; with the computing device that implements the video encoder, scaling the motion vector for the co-located macroblock using the fraction; with the computing device that implements the video encoder, using results of the scaling in motion compensation for the current direct mode macroblock in the current image; and with the computing device that implements the video encoder, outputting a code in a bit stream, wherein the code represents the fraction, and wherein the outputting the code facilitates determination of the fraction independent of actual temporal positions of the respective reference images during decoding. - View Dependent Claims (16, 17, 18)
-
-
19. A system comprising:
-
one or more processors; memory; at least one input device, output device or communication connection; and one or more storage media having stored thereon computer-executable instructions for causing one or more computers to perform a method of decoding images in a sequence of video images, the method comprising; receiving and decoding a code in a bit stream to determine a fraction for a current image in the sequence, wherein the fraction represents an estimated temporal distance position for the current image relative to an interval between a first reference image for the current image and a second reference image for the current image, and wherein the determination of the fraction is independent of actual temporal distance positions of the respective reference images; and for motion compensation for a direct mode macroblock in the current image, processing the fraction along with a motion vector for a co-located macroblock in the first reference image, wherein the motion vector represents motion in the first reference image relative to the second reference image, and wherein the processing the fraction along with the motion vector results in a representation of motion for the direct mode macroblock in the current image relative to the first reference image and relative to the second reference image. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. In a computing device that implements a video encoder, the computing device including a processor and memory, a method of encoding images in a sequence of video images, the method comprising:
-
with the computing device that implements the video encoder, determining a fraction for a current image in the sequence, wherein the fraction represents an estimated temporal distance position for the current image relative to an interval between a first reference image for the current image and a second reference image for the current image, and wherein the determination of the fraction is independent of actual temporal distance positions of the respective reference images; for motion compensation for a direct mode macroblock in the current image, with the computing device that implements the video encoder, processing the fraction along with a motion vector for a co-located macroblock in the first reference image, wherein the motion vector represents motion in the first reference image relative to the second reference image, and wherein the processing the fraction along with the motion vector results in a representation of motion for the direct mode macroblock in the current image relative to the first reference image and relative to the second reference image; and with the computing device that implements the video encoder, outputting a code in a bit stream, wherein the code represents the fraction. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A system comprising:
-
one or more processors; memory; at least one input device, output device or communication connection; and one or more storage media having stored thereon computer-executable instructions for causing one or more computers to perform a method of encoding images in a sequence of video images, the method comprising; determining a fraction for a current image in the sequence, wherein the fraction represents an estimated temporal distance position for the current image relative to an interval between a first reference image for the current image and a second reference image for the current image, and wherein the determination of the fraction is independent of actual temporal distance positions of the respective reference images; for motion compensation for a direct mode macroblock in the current image, processing the fraction along with a motion vector for a co-located macroblock in the first reference image, wherein the motion vector represents motion in the first reference image relative to the second reference image, and wherein the processing the fraction along with the motion vector results in a representation of motion for the direct mode macroblock in the current image relative to the first reference image and relative to the second reference image; and outputting a code in a bit stream, wherein the code represents the fraction. - View Dependent Claims (39, 40, 41, 42, 43, 44, 45, 46, 47)
-
-
48. A system comprising:
-
one or more processors; memory; at least one input device, output device or communication connection; and one or more storage media having stored thereon computer-executable instructions for causing one or more computers to perform a method of encoding images in a sequence of video images, the method comprising; determining a fraction for a current image in the sequence, wherein the current image has a previous reference image and a future reference image, and wherein the fraction represents a temporal position for the current image relative to the respective reference images; selecting direct mode prediction for a current direct mode macroblock in the current image; finding a motion vector for a co-located macroblock in the future reference image; scaling the motion vector for the co-located macroblock using the fraction; using results of the scaling in motion compensation for the current direct mode macroblock in the current image; and outputting a code in a bit stream, wherein the code represents the fraction, and wherein the outputting the code facilitates determination of the fraction independent of actual temporal positions of the respective reference images during decoding. - View Dependent Claims (49, 50, 51)
-
Specification