IP Library Granted Patent US 7,627,039
Granted Patent B2
US 7,627,039 · App. 10/656,537 · Granted Dec 1, 2009

Parallel video decoding

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 7,627,039
App. No.
10/656,537
Granted
Dec 1, 2009
Kind
B2
Abstract

A video receiver/renderer is provided with a decoder equipped with hardware and/or software components adapted to decode at least two slices of a video in parallel, in part. In various embodiments, the decoder is constituted with multiple decoding units or decoding instructions that can be executed in multiple threads. A decoding unit/thread is advantageously equipped to determine whether a slice has decoding dependency, if so, whether the portion(s) of the video on which a slice's decoding is dependent has/have been decoded. If the result of the latter determination is negative, the decoding unit suspends itself until the determination result is affirmative. If the slice has no decoding dependency or the determination result is affirmative, the decoding unit proceeds to decode the slice.

Claims (63)

1. A computer-implemented method comprising:

decoding, by the computer, a first slice of a first frame of a video by performing a submethod comprising:

determining, in accordance with a slice header of the first slice, that the first slice has a decoding dependency on a second slice of a second frame of the video;

determining that said second slice has not been decoded;

suspending decoding the first slice for a first predetermined amount of time; then

determining after said first predetermined amount of time that said second slice has not been decoded; then

suspending decoding the first slice at least one subsequent time, wherein the length of each subsequent suspension of time is reduced by another predetermined amount; then

determining that said second slice has been decoded; and

transforming said first slice from an encoded state to a decoded state; and

decoding, by the computer, said second slice;

wherein said first and second slices each comprise a plurality of macroblocks that are respectively selected from said first and second frames of the video.

2. The method of claim 1 , wherein the first and the second frame are the same frame.

3. A computer readable storage medium containing computer executable instructions that when executed by a processor, perform a method comprising:

decode a first slice of a first frame of a video by performing a submethod comprising:

determining, in accordance with a slice header of the first slice, that the first slice has a decoding dependency on a second slice;

determining that said second slice has not been decoded;

suspending decoding the first slice for a first predetermined amount of time; then

determining after said first predetermined amount of time that said second slice has not been decoded; then

suspending decoding the first slice at least one subsequent time, wherein the length of each subsequent suspension of time is reduced by another predetermined amount; then

determining that said second slice has been decoded; and

transforming said first slice from an encoded state to a decoded state;

decode a second slice of a second frame of the video; and

render said decoded first and second slices;

wherein said first and second slices each comprise a plurality of macroblocks that are respectively selected from said first and second frames of the video.

4. An apparatus comprising:

a buffer to store frames of a video;

a first decoding unit coupled to the buffer to decode a first slice of a first frame of the video by performing a method comprising:

determining, in accordance with a slice header of the first slice, that the first slice has a decoding dependency on a second slice;

determining that said second slice has not been decoded;

suspending decoding the first slice for a first predetermined amount of time; then

determining after said first predetermined amount of time that said second slice has not been decoded; then

suspending decoding the first slice at least one subsequent time, wherein the length of each subsequent suspension of time is reduced by another predetermined amount; then

determining that said second slice has been decoded; and

transforming said first slice from an encoded state to a decoded state; and

a second decoding unit to decode a second slice of a second frame of the video;

wherein said first and second slices each comprise a plurality of macroblocks that are respectively selected from said first and second frames of the video.

5. The apparatus of claim 4 , wherein the apparatus is an ASIC comprising said first and second decoding units.

6. The apparatus of claim 4 , wherein the apparatus is a circuit board comprising an ASIC having at least one of said first and second decoding units.

7. The apparatus of claim 6 , wherein the apparatus is a selected one of a palm sized computing device, a wireless mobile phone, a digital personal assistant, a set-top box, a digital versatile disk player, a television, and a display monitor.

8. The apparatus of claim 4 , wherein:

the first and second decoding units comprise first and second threads of programming instructions designed to perform said first and second decoding respectively; and

the apparatus further comprises one or more memory units to store the programming instructions, and at least one processor coupled to the one or more memory units to execute the first and second threads of programming instructions.

9. The apparatus of claim 8 , wherein the apparatus is a selected one of a palm sized computing device, a wireless mobile phone, a digital personal assistant, a laptop computing device, a desktop computing device, a set-top box, a server, a digital versatile disk player, a television, and a display monitor.

10. A system comprising:

a video provider to provide an encoded video; and

a video renderer coupled to the video provider to receive the encoded video, decode the received video, and render the decoded video, including

a first decoding unit to decode a first slice of a first frame of the video by performing a method comprising:

determining, in accordance with a slice header of the first slice, that the first slice has a decoding dependency on a second slice;

determining that said second slice has not been decoded;

suspending decoding the first slice for a first predetermined amount of time; then

determining after said first predetermined amount of time that said second slice has not been decoded; then

suspending decoding the first slice at least one subsequent time, wherein the length of each subsequent suspension of time is reduced by another predetermined amount; then

determining that said second slice has been decoded; and

transforming said first slice from an encoded state to a decoded state, and

a second decoding to decode a second slice of a second frame of the video;

wherein said first and second slices each comprise a plurality of macroblocks that are respectively selected from said first and second frames of the video.

11. The method of claim 1 , wherein said plurality of macroblocks comprise a plurality of non-sequential macroblocks.

12. The computer readable storage medium of claim 3 , wherein the first and the second frame are the same frame.

13. The computer readable storage medium of claim 3 , wherein said plurality of macroblocks comprise a plurality of non-sequential macroblocks.

14. The apparatus of claim 4 , wherein the first and the second frame are the same frame.

15. The apparatus of claim 4 , wherein said plurality of macroblocks comprise a plurality of non-sequential macroblocks.

16. The method of claim 10 , wherein the first and the second frame are the same frame.

17. The method of claim 10 , wherein said plurality of macroblocks comprise a plurality of non-sequential macroblocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2012
From: REALNETWORKS, INC.
To: INTEL CORPORATION
Reel/Frame 028752/0734 →