Combined parallel and pipelined video encoder
View Patent ↗A method of encoding video data including a sequence of digital image frames, in a pipelined processing system is provided. The method includes dividing each frame in the sequence into a plurality of sections, each section including a horizontal band across a frame. The method further includes subdividing each section into a plurality of macroblocks, and encoding a representation of each macroblock in each section to form an output stream. The sections of each frame are processed during adjacent steps in a pipeline of the pipelined processing system.
1. A method for encoding video data in a pipelined processing system, the video data including a sequence of digital image frames, the method comprising:
provisioning a pipelined video encoding process into a plurality of parallel tasks;
dividing each frame in the sequence into a plurality of sections, each section comprising a horizontal band across a frame;
subdividing each section into a plurality of macroblocks; and
encoding a representation of each macroblock in each section to form an output stream,
wherein the number of sections into which a frame is divided is equal to the number of parallel tasks and further wherein data from an i th section of each frame is processed during an i th pipeline step in a repeating pattern for at least one of the parallel tasks of the pipelined video encoding process.
2. The method according to claim 1 , wherein the at least one of the parallel tasks is an intra-estimation (IE) task that is performed for the i th section of each frame at the i th step in the pipeline.
3. The method according to claim 1 , wherein each section comprises substantially a same number of pixels.
4. The method according to claim 1 , wherein representations of each macroblock are generated using a process of intra-estimation and motion prediction and compensation.
5. The method according to claim 1 , wherein a number of sections per frame is 4.
6. The method according to claim 4 , wherein the intra-estimation representation for each macroblock is generated using corresponding pixels from an original frame in the sequence.
7. The method according to claim 4 , wherein the inter-estimation for each macroblock is generated from a previously encoded frame in the sequence.
8. The method according to claim 4 , wherein, for each macroblock, either an intra-estimated or an inter-estimated representation is selected for encoding in the output stream.
9. The method according to claim 5 , wherein the motion prediction and compensation comprises generating a motion estimation for each macroblock.
10. The method according to claim 9 , wherein the intra-estimation and motion compensation are performed on a graphics processor, the encoding is performed on a central processor and the motion estimation is performed in dedicated hardware.
11. A pipelined-processing apparatus for encoding video data including a sequence of digital image frames, the apparatus comprising:
one or more processors; and
one or more non-volatile memory modules coupled to the one or more processors, the one or more non-volatile memory modules having program instructions for performing the following acts when executed by the one or more processors;
provisioning a pipelined video encoding process into a plurality of parallel tasks;
dividing each frame in the sequence into a plurality of sections, each section comprising a horizontal band across a frame;
subdividing each section into a plurality of macroblocks; and
encoding a representation of each macroblock in each section to form an output stream,
wherein the number of sections into which a frame is divided is equal to the number of parallel tasks and further wherein data from an i th section of each frame is processed during an i th pipeline step in a repeating pattern for at least one of the parallel tasks of the pipelined video encoding process.
12. The pipelined-processing apparatus according to claim 11 , wherein the pipelined-processing apparatus is embodied in a device comprising one or more of a mobile telephone, a tablet computer, a digital camera, a digital video camera, a multimedia device or a set-top box.
13. A computer program product stored in a non-transitory computer readable medium comprising computer readable instructions which, when run on a computer system, cause the computer system to perform a method for encoding video data in a pipelined processing system, the video data including a sequence of digital image frames, the method comprising:
provisioning a pipelined video encoding process into a plurality of parallel tasks;
dividing each frame in the sequence into a plurality of sections, each section comprising a horizontal band across a frame;
subdividing each section into a plurality of macroblocks; and
encoding a representation of each macroblock in each section to form an output stream,
wherein the number of sections into which a frame is divided is equal to the number of parallel tasks and further wherein data from an i th section of each frame is processed during an i th pipeline step in a repeating pattern for at least one of the parallel tasks of the pipelined video encoding process.
14. A non-transitory computer readable medium storing executable codes, which, when run on a computer system, cause the computer system to perform a method for encoding video data in a pipelined processing system, the video data including a sequence of digital image frames, the method comprising:
provisioning a pipelined video encoding process into a plurality of parallel tasks;
dividing each frame in the sequence into a plurality of sections, each section comprising a horizontal band across a frame;
subdividing each section into a plurality of macroblocks; and
encoding a representation of each macroblock in each section to form an output stream,
wherein the number of sections into which a frame is divided is equal to the number of parallel tasks and further wherein data from an i th section of each frame is processed during an i th pipeline step in a repeating pattern for at least one of the parallel tasks of the pipelined video encoding process.