IP Library Granted Patent US 9,781,439
Granted Patent B2
US 9,781,439 · App. 14/761,821 · Granted Oct 3, 2017

Combined parallel and pipelined video encoder

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 9,781,439
App. No.
14/761,821
Filed
Jul 17, 2015
Granted
Oct 3, 2017
Kind
B2
Examiner
PHAM, NAM D
Art Unit
2487
USPC
375/240.12
Abstract

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.

Claims (36)

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.