System and method for balancing video encoding tasks between multiple processors
First Claim
1. A system comprising:
- an interface coupled to a bus to receive a real time video stream to be encoded using a parallel macroblock loop comprising a first and second group of video encoding tasks, wherein the first group of video encoding tasks comprises video encoding tasks not including variable length encoding tasks and the second group of video encoding tasks comprises variable length encoding tasks;
a main processor coupled to the bus, the main processor to execute the first group of video encoding tasks on a macroblock;
a co-processor coupled to the bus, the co-processor to execute the second group of video encoding tasks on a macroblock previously processed by the main processor, wherein the first group of video encoding tasks is executed substantially concurrently with the execution of the second group of video encoding tasks.
1 Assignment
0 Petitions
Accused Products
Abstract
System and method for balancing video encoding tasks between multiple processors. The method may include receiving a real time video stream, performing picture level and upper processing on a main processor, executing a macroblock loop in parallel on a main processor and a co-processor, wherein executing includes processing a first group of video encoding tasks on the main processor and processing a second group of video encoding tasks on the co-processor, and outputting an encoded version of the real time broadcast. The method may be implemented on a system that includes a main processor, a co-processor, and an interface to receive the real time video stream, each coupled to one or more buses. The encoding may be performed according to the well known Moving Pictures Experts Group (MPEG) standards.
20 Citations
36 Claims
-
1. A system comprising:
-
an interface coupled to a bus to receive a real time video stream to be encoded using a parallel macroblock loop comprising a first and second group of video encoding tasks, wherein the first group of video encoding tasks comprises video encoding tasks not including variable length encoding tasks and the second group of video encoding tasks comprises variable length encoding tasks; a main processor coupled to the bus, the main processor to execute the first group of video encoding tasks on a macroblock; a co-processor coupled to the bus, the co-processor to execute the second group of video encoding tasks on a macroblock previously processed by the main processor, wherein the first group of video encoding tasks is executed substantially concurrently with the execution of the second group of video encoding tasks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system comprising:
-
a main processor coupled to a bus; a co-processor coupled to the bus; a main memory coupled to the bus; an interface coupled to the bus to receive a real time video stream to be encoded using a parallel macroblock loop comprising a first and second group of video encoding tasks, wherein the first group of video encoding tasks comprises video encoding tasks not including variable length encoding tasks and the second group of video encoding tasks comprises variable length encoding tasks; and a video encoding process executed from the main memory by the main processor to cause the main processor to allocate the first group of video encoding tasks to the main processor and allocate to the co-processor the second group of video encoding tasks, wherein the main processor executes the first group of video encoding tasks on a macroblock substantially concurrently with the co-processor executing the second group of video tasks on a macroblock previously processed by the main processor. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method for video encoding comprising:
-
receiving a real time video stream to be encoded using a parallel macroblock loop comprising a first and second group of video encoding tasks, wherein the first group of video encoding tasks comprises video encoding tasks not including variable length encoding tasks and the second group of video encoding tasks comprises variable length encoding tasks; performing picture level and upper processing on a main processor; executing a macroblock loop in parallel on the main processor and a co-processor, wherein the main processor executes the first group of video encoding tasks on a macroblock substantially concurrently with the co-processor executing the second group of video encoding tasks on a macroblock previously processed by the main processor; and outputting an encoded version of the real time video stream. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28)
-
-
29. A machine readable medium having instructions stored thereon which when executed by a main processor cause the main processor perform operations to encode a real time video stream according to a well known standard, the operations comprising:
-
allocating a first group of video encoding tasks comprising those video tasks not included in the variable length encoding to the main processor; allocating a second group of video encoding tasks comprising variable length encoding tasks involved with encoding the real time video stream to the co-processor; and encoding the real time video stream using a macroblock loop executed in parallel, wherein the first group of video encoding tasks is executed on a macroblock by the main processor substantially concurrently with the second group of video encoding tasks being executed on a macroblock previously processed by the main processor by the co-processor. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36)
-
Specification