IP Library Granted Patent US 9,602,821
Granted Patent B2
US 9,602,821 · App. 12/243,885 · Granted Mar 21, 2017

Slice ordering for video encoding

Inventors: Harikrishna M. Reddy (San Jose, CA); Yiu Cheong Ho (Fremont, CA); Cheng-Chiang Chen (San Jose, CA)
Assignee: Nvidia Corporation
H04N19/129H04N19/61
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,602,821
App. No.
12/243,885
Granted
Mar 21, 2017
Kind
B2
Abstract

For encoding, a frame of video data can be segregated into macroblocks, which can be segregated into slices, which in turn can be segregated into slice groups. A macroblock identifier (ID) can be associated with each of the macroblocks. When at least one slice from each of the slice groups has been encoded, the macroblock IDs associated with the encoded slices can be compared to determine an order in which the encoded slices are to be placed in an access unit for the frame. Of the encoded slices, the slice that includes the macroblock with the lowest macroblock ID will be placed in the access unit before the other encoded slices.

Claims (54)

1. A computer-implemented method of processing a frame comprising video data, the method comprising:

accessing video data that is segregated into a plurality of macroblocks, the plurality of macroblocks segregated into a plurality of slices and the plurality of slices segregated into a plurality of slice groups, each of the macroblocks having a macroblock identifier (ID) associated therewith;

identifying a first point while encoding the video data at which a subset comprising at least one slice from each of the slice groups has been encoded; and

performing a comparison of macroblock IDs associated with slices in the subset to determine an order in which the slices in the subset are to be placed in an access unit for the frame, wherein the access unit is subsequently available to a decoding device.

2. The method of claim 1 further comprising:

storing encoded macroblocks in a plurality of data buffers, wherein the encoded macroblocks are sorted by slice group so that members of a slice group are stored in a same data buffer; and

performing the comparison when there is at least one slice in each of the data buffers.

3. The method of claim 1 further comprising:

storing encoded macroblocks in the data buffers;

each time a slice of a slice group is added to a data buffer, incrementing a counter associated with that slice group; and

performing the comparison when each counter has a value other than its initial value.

4. The method of claim 1 further comprising:

identifying a second point at which all slices in the frame have been encoded; and

subsequent to the second point, comparing macroblock IDs associated with any remaining slices not yet placed in the access unit to determine an order in which the remaining slices are to be placed in the access unit.

5. The method of claim 1 further comprising:

identifying how many slice groups are in the frame; and

identifying the last slice encoded in each of the slice groups.

6. The method of claim 1 wherein the comparison comprises:

identifying a slice in the subset having the lowest macroblock ID amongst the slices in the subset; and

placing the slice having the lowest macroblock ID associated therewith in the access unit sequentially before other slices in the subset.

7. The method of claim 1 further comprising:

storing encoded macroblocks in a plurality of data buffers, wherein the encoded macroblocks are sorted by slice group so that members of a slice group are stored in a same data buffer;

storing the macroblock IDs for the encoded macroblocks in a plurality of link lists coupled to the data buffers; and

accessing the link lists to perform the comparison.

8. The method of claim 1 wherein the encoding comprises H.264-compatible encoding and wherein the method further comprises disabling arbitrary slice ordering (ASO) during the encoding.

9. A system comprising:

an encoder operable for accessing and encoding video data that is segregated into a plurality of macroblocks, the macroblocks segregated into a plurality of slices and the slices segregated into a plurality of slice groups, each of the slices having a macroblock identifier (ID) associated therewith, wherein encoded macroblocks are stored in a plurality of data buffers; and

a frame assembler coupled to the encoder and operable for performing a comparison of macroblock IDs associated with slices in the data buffers to determine an order in which the slices in the data buffers are to be placed in an access unit for the frame, wherein the comparison is performed at points during the encoding when at least one slice in each of the slice groups has been encoded.

10. The system of claim 9 wherein the encoded macroblocks are sorted by slice group so that members of a slice group are stored in a same data buffer, wherein the comparison is performed when there is at least one slice in each of the data buffers.

11. The system of claim 9 wherein each of the data buffers has a respective counter associated therewith, wherein the counter associated with a data buffer is incremented each time a slice is added to that data buffer, and wherein the comparison is performed when each counter has a value other than its initial value.

12. The system of claim 9 wherein the comparison is also performed at a point at which all slices in the frame have been encoded.

13. The system of claim 9 wherein the comparison identifies which slice in the data buffers has the lowest macroblock ID amongst the slices in the data buffers, wherein the slice having the lowest macroblock ID is placed in the access unit before other slices in the data buffers are placed in the access unit.

14. The system of claim 9 wherein the macroblock IDs are stored in link lists in memory coupled to the encoder and frame assembler.

15. A computer-readable storage device having computer-executable instructions for performing a method of processing a frame comprising video data, the method comprising:

identifying a number of slice groups in a frame of video data, the slice groups each comprising one or more slices, the slices each comprising one or more macroblocks, each of the slices having a macroblock identifier (ID) associated therewith;

encoding the macroblocks;

accumulating encoded macroblocks in a plurality of data buffers, wherein the encoded macroblocks are sorted by slice group so that members of a slice group are stored in a same data buffer; and

at points during the encoding where the number of data buffers containing at least one slice of video data is equal to the number of slice groups, performing a comparison of macroblock IDs associated with slices in the data buffers to determine an order in which the slices in the data buffers are to be placed in an access unit for the frame.

16. The computer-readable storage device of claim 15 wherein the method further comprises:

initializing a plurality of counters associated with the plurality of data buffers;

each time a slice is added to a data buffer, incrementing the counter associated with that data buffer; and

performing the comparison when each counter has a value other than its initial value.

17. The computer-readable storage device of claim 15 wherein the method further comprises:

identifying a point at which all slices in the frame have been encoded; and

subsequent to that point, comparing macroblock IDs associated with any remaining slices not yet placed in the access unit to determine an order in which the remaining slices are to be placed in the access unit.

18. The computer-readable storage device of claim 15 wherein the method further comprises:

identifying how many slice groups are in the frame; and

identifying the last slice encoded in each of the slice groups.

19. The computer-readable storage device of claim 15 wherein the comparison comprises:

identifying a slice in the data buffers having the lowest macroblock ID amongst the slices in the subset; and

placing the slice having the lowest macroblock ID associated therewith in the access unit before other slices in the data buffers are placed in the access unit.

20. The computer-readable storage device of claim 15 wherein the method further comprises:

storing the macroblock IDs for the encoded macroblocks in a plurality of link lists coupled to the data buffers; and

accessing the link lists to perform the comparison using the macroblock IDs stored in the link lists.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2008
From: REDDY, HARIKRISHNA M.; HO, YIU CHEONG; CHEN, CHENG-CHIANG
To: NVIDIA CORPORATION
Reel/Frame 021619/0396 →
Continuity (1)
Related Publication 20100080304A1 · Apr 1, 2010