IP Library Granted Patent US 9,185,408
Granted Patent B2
US 9,185,408 · App. 13/679,720 · Granted Nov 10, 2015

Efficient storage of motion information for high efficiency video coding

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,185,408
App. No.
13/679,720
Granted
Nov 10, 2015
Kind
B2
Abstract

A method, apparatus, article of manufacture, and a memory structure for signaling the storage of motion information describing the depicted motion associated with digital pictures. In one embodiment, the method comprises signaling the replacement of a motion vector stored in connection with a previously coded picture with the motion vector of the currently coded frame. Another signal may be used to indicate motion vector replacement for all pictures in a sequence.

Claims (84)

1. A method comprising:

receiving an input video stream including a plurality of input frames having a temporal sequence;

encoding, by a processor in response to instructions stored on a non-transitory computer readable medium, the plurality of input frames in a coding order, wherein encoding the plurality of input frames includes:

identifying a current input frame from the plurality of input frames based on the coding order, and

encoding the current input frame, wherein encoding the current input frame includes:

generating a current motion vector for the current input frame;

on a condition that encoding the current input frame includes intra-coding the current input frame, encoding the current input frame includes:

storing the current motion vector in an encoder collocated frame motion vector buffer, and

including a collocated frame motion vector buffer update indicator in an output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to update a decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer; and

on a condition that encoding the current input frame includes inter-coding the current input frame, encoding the current input frame includes:

identifying a first temporal location in the temporal sequence corresponding to a previous input frame from the plurality of input frames,

wherein the previous input frame precedes the current input frame in the coding order, and wherein a motion vector currently stored in the encoder collocated frame motion vector buffer is a motion vector generated for encoding the previous input frame,

identifying a second temporal location in the temporal sequence corresponding to the current input frame,

identifying a third temporal location in the temporal sequence corresponding to a subsequent input frame from the plurality of input frames, wherein the current input frame immediately precedes the subsequent input frame in the coding order,

on a condition that a temporal distance between the first temporal location and the third temporal location exceeds a temporal distance between the second temporal location and the third temporal location, encoding the current input frame includes:

 updating the encoder collocated frame motion vector buffer by storing the current motion vector in the encoder collocated frame motion vector buffer; and

 including the collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to update the decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer, and

on a condition that the temporal distance between the second temporal location and the third temporal location exceeds the temporal distance between the first temporal location and the third temporal location, encoding the current input frame includes:

 omitting updating the collocated frame motion vector buffer; and

 including the collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to omit updating the decoder collocated frame motion vector buffer;

and

transmitting or storing the output bitstream.

2. The method of claim 1 , wherein including the collocated frame motion vector buffer update indicator in the output bitstream includes:

including the collocated frame motion vector buffer update indicator in a frame header.

3. The method of claim 1 , wherein including the collocated frame motion vector buffer update indicator in the output bitstream includes:

including the collocated frame motion vector buffer update indicator in a header associated with a portion of a frame.

4. The method of claim 3 , wherein the portion is a slice.

5. The method of claim 1 , wherein the collocated frame motion vector buffer update indicator is a binary indicator, such that a first binary value of the collocated frame motion vector buffer update indicator indicates the instruction to update the decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer, and a second binary value of the collocated frame motion vector buffer update indicator indicates the instruction to omit updating the decoder collocated frame motion vector buffer.

6. The method of claim 1 , wherein storing the current motion vector in the encoder collocated frame motion vector buffer includes:

storing the current motion vector in the encoder collocated frame motion vector buffer such that motion vectors associated with other frames are omitted from storage.

7. A method comprising:

receiving an input video stream including a plurality of input frames having a temporal sequence;

encoding, by a processor in response to instructions stored on a non-transitory computer readable medium, the plurality of input frames in a coding order, wherein encoding the plurality of input frames includes:

identifying a current input frame from the plurality of input frames based on the coding order, and

encoding the current input frame, wherein encoding the current input frame includes:

generating a current motion vector for the current input frame;

on a condition that encoding the current input frame includes intra-coding the current input frame, storing the current motion vector in an encoder collocated frame motion vector buffer;

on a condition that encoding the current input frame includes inter-coding the current input frame, encoding the current input frame includes:

identifying a first temporal location in the temporal sequence corresponding to a previous input frame from the plurality of input frames, wherein the previous input frame precedes the current input frame in the coding order, and wherein a motion vector currently stored in an encoder collocated frame motion vector buffer is a motion vector generated for encoding the previous input frame,

identifying a second temporal location in the temporal sequence corresponding to the current input frame, and

identifying a third temporal location in the temporal sequence corresponding to a subsequent input frame from the plurality of input frames, wherein the current input frame immediately precedes the subsequent input frame in the coding order;

determining whether to update a collocated frame motion vector buffer; and

including an indication of a result of determining whether to update the collocated frame motion vector buffer in an output bitstream, wherein:

on a condition that encoding the current input frame includes intra-coding the current input frame, including the indication of the result of determining whether to update the collocated frame motion vector buffer in the output bitstream includes including a collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to update a decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer; and

transmitting or storing the output bitstream.

8. The method of claim 7 , wherein, on a condition that a temporal distance between the first temporal location and the third temporal location exceeds a temporal distance between the second temporal location and the third temporal location, encoding the current input frame includes updating the encoder collocated frame motion vector buffer by storing the current motion vector in the encoder collocated frame motion vector buffer, and including the indication of the result of determining whether to update the collocated frame motion vector buffer in the output bitstream includes including a collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to update a decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer.

9. The method of claim 7 , wherein, on a condition that the temporal distance between the second temporal location and the third temporal location exceeds the temporal distance between the first temporal location and the third temporal location, encoding the current input frame includes omitting updating the collocated frame motion vector buffer, and including the indication of the result of determining whether to update the collocated frame motion vector buffer in the output bitstream includes including the collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to omit updating the decoder collocated frame motion vector buffer.

10. The method of claim 7 , including the indication of the result of determining whether to update the collocated frame motion vector buffer in the output bitstream includes:

including the indication of the result of determining whether to update the collocated frame motion vector buffer in a frame header.

11. The method of claim 7 , including the indication of the result of determining whether to update the collocated frame motion vector buffer in the output bitstream includes:

including the indication of the result of determining whether to update the collocated frame motion vector buffer in a header associated with a portion of a frame.

12. The method of claim 11 , wherein the portion is a slice.

13. The method of claim 7 , wherein, including the indication of the result of determining whether to update the collocated frame motion vector buffer in the output bitstream includes:

including a binary indicator in the output bitstream, such that a first binary value of the binary indicator indicates an instruction to update a decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer, and a second binary value of the binary indicator indicates an instruction to omit updating the decoder collocated frame motion vector buffer.

14. An apparatus comprising:

a memory; and

a processor configured to execute instructions stored in the memory to:

receive an input video stream, the input video stream including a plurality of input frames having a temporal sequence;

encode the plurality of input frames in a coding order, wherein encoding the plurality of input frames includes:

identifying a current input frame from the plurality of input frames based on the coding order, and

encoding the current input frame, wherein encoding the current input frame includes:

generating a current motion vector for the current input frame;

on a condition that encoding the current input frame includes intra-coding the current input frame, encoding the current input frame includes:

 storing the current motion vector in an encoder collocated frame motion vector buffer, and

 including a collocated frame motion vector buffer update indicator in an output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to update a decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer; and

on a condition that encoding the current input frame includes inter-coding the current input frame, encoding the current input frame includes:

 identifying a first temporal location in the temporal sequence corresponding to a previous input frame from the plurality of input frames, wherein the previous input frame precedes the current input frame in the coding order, and wherein a motion vector currently stored in the encoder collocated frame motion vector buffer is a motion vector generated for encoding the previous input frame,

 identifying a second temporal location in the temporal sequence corresponding to the current input frame,

 identifying a third temporal location in the temporal sequence corresponding to a subsequent input frame from the plurality of input frames, wherein the current input frame immediately precedes the subsequent input frame in the coding order,

 on a condition that a temporal distance between the first temporal location and the third temporal location exceeds a temporal distance between the second temporal location and the third temporal location, encoding the current input frame includes:

 updating the encoder collocated frame motion vector buffer by storing the current motion vector in the encoder collocated frame motion vector buffer; and

 including the collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to update the decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer, and

 on a condition that the temporal distance between the second temporal location and the third temporal location exceeds the temporal distance between the first temporal location and the third temporal location, encoding the current input frame includes:

 omitting updating the collocated frame motion vector buffer; and

 including the collocated frame motion vector buffer update indicator in the output bitstream, such that the collocated frame motion vector buffer update indicator indicates an instruction to omit updating the decoder collocated frame motion vector buffer; and

transmit or store the output bitstream.

15. The apparatus of claim 14 , wherein the processor is configured to execute instructions stored in the memory to:

include the collocated frame motion vector buffer update indicator in the output bitstream by including the collocated frame motion vector buffer update indicator in a frame header.

16. The apparatus of claim 14 , wherein the processor is configured to execute instructions stored in the memory to:

include the collocated frame motion vector buffer update indicator in the output bitstream by including the collocated frame motion vector buffer update indicator in a header associated with a portion of a frame.

17. The apparatus of claim 16 , wherein the portion is a slice.

18. The apparatus of claim 14 , wherein the collocated frame motion vector buffer update indicator is a binary indicator, such that a first binary value of the collocated frame motion vector buffer update indicator indicates the instruction to update the decoder collocated frame motion vector buffer by storing the current motion vector in the decoder collocated frame motion vector buffer, and a second binary value of the collocated frame motion vector buffer update indicator indicates the instruction to omit updating the decoder collocated frame motion vector buffer.

19. The apparatus of claim 14 , wherein the processor is configured to execute instructions stored in the memory to:

store the current motion vector in the encoder collocated frame motion vector buffer by storing the current motion vector in the encoder collocated frame motion vector buffer such that motion vectors associated with other frames are omitted from storage.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2014
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 034274/0290 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2013
From: GENERAL INSTRUMENT CORPORATION
To: GENERAL INSTRUMENT HOLDINGS, INC.
Reel/Frame 030764/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2013
From: GENERAL INSTRUMENT HOLDINGS, INC.
To: MOTOROLA MOBILITY LLC
Reel/Frame 030866/0113 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2012
From: YU, YUE; PANUSOPONE, KRIT; WANG, LIMIN
To: GENERAL INSTRUMENT CORPORATION
Reel/Frame 029316/0077 →