Multithread processing of video frames
First Claim
1. A method for encoding a video picture, the method comprising:
- determining first and second size categories by setting a first number of slices for the first size category and setting a second number of slices for the second size category, wherein the first number of slices is equal to a number of parallel task threads available to encode slices of the video picture and the second number of slices is based on a total number of slices for the video picture and the first number of slices;
dividing the video picture into a plurality of different sized slices that are categorized into the first and second size categories, wherein at least one slice belongs to each of the first and second categories, wherein each of the slice sizes is specified as a number of macroblocks in the slice; and
at an encoder, encoding the video picture by starting encoding of all slices in the first size category before starting encoding of any slice in the second size category.
2 Assignments
0 Petitions
Accused Products
Abstract
Method for determining frame slice sizes of a frame for multithreaded decoding. The frame is encoded using at least two different slice types based on size where a large-type slice is at least two times larger than a small-type slice and/or the large-type slices comprise 70-90% of the frame. In some embodiments, the number of large-type slices is equal to the number of threads available for decoding and comprise the beginning slices of the frame to be decoded before the small-type slices. Methods for multithreaded deblocking of the frame under the H.264 codec is provided where first and second threads processes first and second sections of the frame in parallel. The first section comprises macroblocks on one side of a diagonal line and the second section comprises the remainder, the diagonal line extending from a first corner of a sub-frame to a second corner of the sub-frame.
87 Citations
21 Claims
-
1. A method for encoding a video picture, the method comprising:
-
determining first and second size categories by setting a first number of slices for the first size category and setting a second number of slices for the second size category, wherein the first number of slices is equal to a number of parallel task threads available to encode slices of the video picture and the second number of slices is based on a total number of slices for the video picture and the first number of slices; dividing the video picture into a plurality of different sized slices that are categorized into the first and second size categories, wherein at least one slice belongs to each of the first and second categories, wherein each of the slice sizes is specified as a number of macroblocks in the slice; and at an encoder, encoding the video picture by starting encoding of all slices in the first size category before starting encoding of any slice in the second size category. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory computer readable medium storing a computer program for execution by at least one processing unit, the computer program for encoding a video frame, the computer program comprising sets of instructions for:
-
identifying a plurality of size categories that specify different video frame slice sizes, wherein at least one size category specifies two or more different slice sizes; setting a number of slices in a first size category equal to a number of parallel task threads available to encode slices of the video frame; setting a number of slices in a second size category based on a total number of slices for the video frame and the number of slices in the first size category; and encoding the video frame by (i) using the identified different size categories to divide the video frame into a plurality of different sized slices and (ii) starting encoding of all slices in one size category before starting encoding of any slice in any other size category, wherein at least one slice belongs to each of the first and second categories, wherein each of the slice sizes is specified as a number of macroblocks in the slice. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method for decoding a video frame, the method comprising:
-
determining first and second size categories by setting a number of slices in the first size category equal to a number of available parallel task threads to decode slices of the video frame and setting a number of slices in the second size category based on a total number of slices in the video frame and the number of slices in the first size category; receiving an encoded video frame having a plurality of slices; and at a decoder, decoding the encoded frame by using the available parallel task threads to start decoding of all slices in the first size category before starting decoding of any slice in the second size category, wherein at least one slice belongs to each of the first and second categories, wherein each of the slice sizes is specified as a number of macroblocks in the slice. - View Dependent Claims (14, 15, 16, 17)
-
-
18. A non-transitory computer readable medium storing a computer program for execution by at least one processing unit, the computer program for decoding a video frame, the computer program comprising sets of instructions for:
-
identifying, based on a set of available computing resources, a plurality of size categories that specify a plurality of different video frame slice sizes; setting a number of slices in a first size category equal to a number of parallel task threads available to decode the slices of the video frame; setting a number of slices in a second size category based on a total number of slices for the frame and the number of slices in the first size category; receiving an encoded video frame comprising a plurality of slices; and decoding the encoded video frame by (i) associating each of the plurality of slices in the received video frame with one of the identified size categories and (ii) starting decoding of all slices associated with one size category before starting decoding of any slice associated with any other size category, wherein at least one size category is associated with slices of two or more different sizes, wherein at least one slice belongs to each of the first and second categories, wherein each of the slice sizes is specified as a number of macroblocks in the slice.
-
- 19. The computer readable medium of 18, wherein all slices in the first size category are larger in size than all slices in the second size category.
Specification