Accelerated video encoding using a graphics processing unit
First Claim
1. A method for processing a digital video signal with a graphics processing unit (GPU) having multiple channels and a central processing unit (CPU), the method comprising:
- identifying a frame associated with the video signal by the CPU;
determining motion estimation data by the GPU, the determining comprising;
collocating the frame to create copies of the frame such that each of the copies of the frame is available for processing in parallel by at least one of the multiple channels of the GPU, and to map each of a plurality of pixels selected by the GPU to each of a plurality of channels of a texel; and
processing each of the copies of the frame in parallel, using a different channel of the multiple channels of the GPU, the processing including offsetting the copies of the frame by a predetermined value;
outputting the determined motion estimation data to the CPU, andencoding the video signal by the CPU,wherein the determining motion estimation data by the GPU is performed in parallel to the encoding the video signal performed by the CPU.
2 Assignments
0 Petitions
Accused Products
Abstract
A video encoding system uses both a central processing unit (CPU) and a graphics processing unit (GPU) to perform video encoding. The system implements a technique that enables the GPU to perform motion estimation for video encoding. The technique allows the GPU to perform a motion estimation process in parallel with the video encoding process performed by the CPU. The performance of video encoding using such a system is greatly accelerated as compared to encoding using just the CPU. Also, data related to motion estimation is arranged and provided to the GPU in a way that utilizes the capabilities of the GPU. Data about video frames may be collocated to enable multiple channels of the GPU to process tasks in parallel. The depth buffer of the GPU may be used to consolidate repeated calculations and searching tasks during the motion estimation process.
80 Citations
31 Claims
-
1. A method for processing a digital video signal with a graphics processing unit (GPU) having multiple channels and a central processing unit (CPU), the method comprising:
-
identifying a frame associated with the video signal by the CPU; determining motion estimation data by the GPU, the determining comprising; collocating the frame to create copies of the frame such that each of the copies of the frame is available for processing in parallel by at least one of the multiple channels of the GPU, and to map each of a plurality of pixels selected by the GPU to each of a plurality of channels of a texel; and processing each of the copies of the frame in parallel, using a different channel of the multiple channels of the GPU, the processing including offsetting the copies of the frame by a predetermined value; outputting the determined motion estimation data to the CPU, and encoding the video signal by the CPU, wherein the determining motion estimation data by the GPU is performed in parallel to the encoding the video signal performed by the CPU. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. An apparatus for processing video signal comprising:
-
a central processing unit configured to receive motion estimation data associated with the video signal and to encode the video signal into digital video data using the motion estimation data; and a graphics processing unit including multiple channels, the graphics processing unit configured to identify a particular frame associated with the video signal, to collocate the particular frame into collocated frames, such that each of the collocated frames is a copy of the particular frame, available for processing in parallel by each channel of the graphics processing unit, and to map the each of a plurality of pixels selected by the graphics processing unit to each of a plurality of channels of a texel so that each channel of the graphics processing unit can parallel process each of the collocated frames to obtain the motion estimation data, the parallel processing including offsetting the collocated frames by a predetermined value, wherein the obtaining motion estimation data by the graphics processing unit is performed in parallel to the encoding the video signal performed by the central processing unit. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25)
-
-
26. A System for encoding video frames into digital video data, the system, comprising:
- a processor;
One or more memories coupled to the processor, the one or more memories having stored instructions that, when executed at the system, configure the system to implement; a first data field including data that represents collocated digitized frames which are copies of a particular frame; a second data field indexed to the first data field, the second data field including data representing multiple sets of macroblocks, each set of macroblocks corresponding to each of the collocated digitized frames of the first data field; and a third data field indexed to the second data field, the third data field including data that represents groups of pixels in the macroblocks, each group of pixels including pixels from each set of corresponding macroblocks, each group of pixels being arranged as texel blocks for utilization by channels of a graphics processing unit to process the texel blocks in parallel, the data of the third data field being arranged to be processed by the graphics processing unit to determine motion estimation data, the arrangement including a predetermined pixel offset of at least one of the groups of pixels and a mapping of a selected group of pixels to channels of a texel, the data of the third data field being further arranged to be processed by the graphics processing unit to determine motion estimation data in parallel with the processing device encoding a video signal based on the frames. - View Dependent Claims (27, 28)
- a processor;
-
29. An apparatus for encoding video frames into digital video data comprising:
-
means for collocating a particular video frame into collocated frames to create copies of the frame such that each of the copies of the frame is available for processing in parallel by at least one of multiple channels of a graphics processing unit (GPU), and to map each of a plurality of pixels selected by the GPU to each of a plurality of channels of a texel; means for dividing each of the collocated frames into texel blocks; and means for providing the texel blocks to each channel of the GPU so that the collocated frames can be processed in parallel to obtain motion estimation data associated with the video frame, the processing including offsetting the copies of the frame by a predetermined value, wherein the means for providing is configured to obtain the motion estimation data by the GPU in parallel with encoding the video frames by a central processing unit. - View Dependent Claims (30, 31)
-
Specification