IP Library Granted Patent US 10,225,549
Granted Patent B1
US 10,225,549 · App. 15/895,006 · Granted Mar 5, 2019

System and method for video coding

Inventors: Paul Wilkins (Cambridge, GB); James Bankoski (Los Gatos, CA); Yaowu Xu (Saratoga, CA)
Assignee: GOOGLE LLC
H04N19/10H04N19/117H04N19/124H04N19/17H04N19/176H04N19/196H04N19/21H04N19/463H04N19/523H04N19/61H04N19/82
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 10,225,549
App. No.
15/895,006
Granted
Mar 5, 2019
Kind
B1
Abstract

An apparatus for decoding compressed video information may include a memory and a processor configured to execute instructions stored in the memory to receive a compressed video stream including compressed video information, read, from the compressed video information, a segment map associating at least some blocks in a first frame with at least one segment identifier, read, from the compressed video information, a current encoded block, read, from the segment map, a segment identifier that is associated with the current encoded block, read, from the compressed video information, at least one segment parameter associated with the segment identifier that is associated with the current encoded block, generate a current decoded block by decoding the current encoded block using the at least one segment parameter associated with the segment identifier that is associated with the current encoded block, and output the current decoded block for presentation or storage.

Claims (65)

1. An apparatus for decoding compressed video information, the apparatus comprising:

a memory; and

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

receive a compressed video stream, the compressed video stream including compressed video information, the compressed video information including a plurality of frames, each frame from the plurality of frames including a plurality of blocks;

read, from the compressed video information, a segment map associating at least some of the plurality of blocks in a first frame of the plurality of frames with at least one segment identifier;

read, from the compressed video information, a current encoded block;

read, from the segment map, a segment identifier that is associated with the current encoded block;

read, from the compressed video information, at least one segment parameter associated with the segment identifier that is associated with the current encoded block;

generate a current decoded block by decoding the current encoded block using the at least one segment parameter associated with the segment identifier that is associated with the current encoded block; and

output the current decoded block for presentation or storage.

2. The apparatus of claim 1 , wherein the at least one segment parameter includes at least one of a quantization parameter, a loop filter type identifier, a loop filter strength value, or a sub-pixel interpolation filter identifier.

3. The apparatus of claim 1 , wherein a plurality of segment parameters are associated with the segment identifier and a first one of the plurality of segment parameters includes a value indicative of an alternate reference frame, and wherein the processor is configured to execute instructions stored in the memory to:

update the alternate reference frame using at least a second one of the plurality of segment parameters associated with the at least one segment identifier.

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

determine whether a frame subsequent to the first frame specifies an updated segment parameter for a specific one of the segments; and

associate the updated segment parameter to the specific one of the segments.

5. The apparatus of claim 4 , wherein the updated segment parameter is an incremental value to be added to the segment parameter.

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

read, from the compressed video information, a record indicative of a segmentation condition of a frame subsequent to the first frame; and

in response to a determination that the segmentation condition indicates to omit applying segmentation:

set the segment parameter to a respective default parameter; and

suppress the reading of the segment map, the reading of the segment identifier, and the reading of the segment parameter for the blocks of the frame subsequent to the first frame.

7. The apparatus of claim 1 , wherein the processor is configured to execute instructions stored in the memory to read the segment map by:

reading the at least one segment identifier in portions of the compressed video information that are interleaved with data specific to the at least some of the plurality of blocks.

8. The apparatus of claim 1 , wherein the processor is configured to execute instructions stored in the memory to read the segment map by:

reading the at least one segment identifier in a header portion associated with the first frame.

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

determine whether a frame subsequent to the first frame is a key frame; and

in response to a determination that the frame subsequent to the first frame is a key frame, set the segment parameter to a default value.

10. An apparatus for generating a stream of encoded video information including a plurality of frames, each having a plurality of blocks, the apparatus comprising:

a memory; and

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

for at least a first frame, generate a segment map associating at least one block in the first frame with at least one segment identifier, and associating the at least one segment identifier with at least one segment parameter;

select a current block of the first frame for encoding;

generate an encoded segment identifier by encoding a segment identifier associated with the current block based on the segment map;

generate an encoded current block by encoding the current block using the segment parameter associated with the segment identifier that is associated with the current block;

include the encoded segment identifier and the encoded current block in an output bitstream; and

transmit or store the output bitstream.

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

for a second frame, detect a segmentation modification condition; and

in response to a determination that the segmentation modification condition is detected, update the segment parameter and store the updated segment parameter with video information associated with the second frame.

12. The apparatus of claim 11 , wherein the updated segment parameter is an incremental value.

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

for a second frame, detect a segmentation condition; and

in response to a determination that the segmentation condition is detected, store a segmentation flag with encoded video information associated with the second frame.

14. The apparatus of claim 10 , wherein the segment parameter includes at least one of a quantization parameter, a loop filter type identifier, a loop filter strength value, or a sub-pixel interpolation filter identifier.

15. The apparatus of claim 14 , wherein the segment parameter includes a value indicative of an alternate reference frame, and wherein the processor is configured to execute instructions stored in the memory to:

update the alternate reference frame using the segment parameter.

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

store the at least one segment identifier in portions of the video information that are interleaved with data specific to the at least one block.

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

store the at least one segment identifier in a header portion of the first frame.

18. An apparatus for decoding a stream of encoded video information, the apparatus comprising:

a memory; and

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

receive an encoded video stream, the encoded video stream including encoded video information, the encoded video information including a plurality of frames, each frame from the plurality of frames including a plurality of blocks;

for at least a first frame, read from the encoded video information a segment map associating at least some of the plurality of blocks in the first frame with at least one segment identifier;

read, from the encoded video information, a current encoded block of the first frame;

read, from the segment map, a segment identifier associated with the current encoded block;

read, from the encoded video information, segment parameter associated with the segment identifier that is associated with the current encoded block;

generate a decoded current block by decoding the current encoded block using the segment parameter associated with the segment identifier that is associated with the current encoded block;

for a second frame, generate a decoded second block by decoding a block from the second frame corresponding to the current encoded block in the first frame using the segment identifier that is associated with the current encoded block; and

output the decoded second block from the second frame for presentation.

19. The apparatus of claim 18 , wherein the segment parameter includes at least one of a quantization parameter, a loop filter type identifier, a loop filter strength value, or a subpixel interpolation filter identifier.

20. The apparatus of claim 18 , wherein the second frame includes frame level header information including a bit indicating whether segmentation is enabled or disabled for the second frame, a bit indicating whether or not to update the segment map, a bit indicating whether to update the at least one segmentation parameter for the second frame, a value for each of the at least one segmentation parameter, and a bit indicating whether the value is a delta value or an absolute value.

Continuity (3)
Continuation 13680636 · Nov 19, 2012
Continuation 12329177 · Dec 5, 2008
Provisional Application 61096242 · Sep 11, 2008
Cited By (1)
US 12,501,039