Multithread Processing of Video Frames
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.
Claims
exact text as granted — not AI-modified1 . A method for determining slice sizes of a video frame for encoding the frame, the frame comprising two or more slices, the method comprising:
determining at least two different slice sizes for the two or more slices of the frame for encoding the frame.
2 . The method of claim 1 wherein the determining comprises determining at least two different types of slices based on size, the two different types of slices comprising a large-type slice and a small-type slice.
3 . The method of claim 2 wherein a large-type slice is at least one and a half times larger than a small-type slice.
4 . The method of claim 2 wherein the large-type slices in total comprise 70-90% of the frame and the small-type slices in total comprise the remainder of the frame.
5 . The method of claim 2 wherein two or more slices of the same type are different in size.
6 . The method of claim 2 further comprising:
setting the number of large-type slices to equal to a number of threads or computer processing units available to decode the slices of the frame; and
setting the number of small-type slices to equal a total number of slices for the frame minus the number of large-type slices.
7 . The method of claim 2 wherein the large-type slices comprise the beginning slices of the frame and the small-type slices comprise the remainder of frame, wherein the large-type slices are configured for assignment for decoding before the small-type slices.
8 . A computer program product comprising a computer readable medium having instructions stored thereon when executed determine slice sizes of a video frame for encoding the frame, the frame comprising two or more slices, the computer program product comprising sets of instructions for:
determining at least two different slice sizes for the two or more slices of the frame for encoding the frame.
9 . The computer program product of claim 8 wherein the set of instructions for determining comprises a set of instructions for determining at least two different types of slices based on size, the two different types of slices comprising a large-type slice and a small-type slice.
10 . The computer program product of claim 9 wherein a large-type slice is at least two times larger than a small-type slice.
11 . The computer program product of claim 9 wherein the large-type slices in total comprise 70-90% of the frame and the small-type slices in total comprise the remainder of the frame.
12 . The computer program product of claim 9 further comprising sets of instructions for:
setting the number of large-type slices to equal to a number of threads or computer processing units available to decode the slices of the frame; and
setting the number of small-type slices to equal a total number of slices for the frame minus the number of large-type slices.
13 . A method of filtering blocks of a frame under the H.264 codec, the method comprising:
filtering the frame using at least a first and second thread in parallel.
14 . The method of claim 13 wherein the filtering comprises:
identifying a sub-frame in the frame, the sub-frame comprising at least some of the blocks of the frame;
processing a first section of the frame with the first thread, the first section comprising blocks of the frame on one side of a diagonal line extending from a first corner of the sub-frame to a second corner of the sub-frame; and
processing a second section of the frame with the second thread, the second section comprising blocks of the frame on the other side of the diagonal line.
15 . The method of claim 14 wherein the sub-frame is a square sub-frame centered in the frame.
16 . The method of claim 14 wherein:
the first section further comprises blocks of the frame on the diagonal line; and
the second section comprises remaining blocks of the frame that are not in the first section.
17 . The method of claim 14 wherein:
each section comprises one or more sub-sections, each sub-section of a section having an associated processing order in relation to the other sub-sections of the same section that is determined by the position of the sub-section in the frame;
processing the first section comprises processing sub-sections of the first section according to a processing order associated with each sub-section; and
processing the second section comprises processing sub-sections of the second section according to a processing order associated with each sub-section.
18 . The method of claim 14 wherein the frame is a luma frame having an associated chroma frame and second thread experiences idle time while waiting for the first thread to process particular macroblocks of the luma frame, the method further comprising:
processing the chroma frame using the second thread during the idle time of the second thread.
19 . The method of claim 14 wherein the method is performed by a deblocking filter during decoding of the frame.
20 - 21 . (canceled)Join the waitlist — get patent alerts
Track US2014369427A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.