Claims
- 1. A method comprising:
loading a set of pixel values into memory to define a first search space, the first search space defining a first plurality of columns of candidate video blocks to be compared to a first video block to be encoded during a first iteration of a motion estimation routine; performing the first iteration to compare the first video block to the candidate video blocks in the first search space; and reloading a subset of the columns to define a second search space, the second search space defining a second plurality of columns of candidate video blocks to be compared to a second video block to be encoded during a second iteration of the motion estimation routine.
- 2. The method of claim 1, further comprising performing the second iteration to compare the second video block to the candidate video blocks in the second search space.
- 3. The method of claim 2, further comprising:
reloading another subset of the columns to define a third search space, the third search space defining a third plurality of columns of candidate video blocks to be compared to a third video block to be encoded during a third iteration of the motion estimation routine; and performing the third iteration to compare the third video block to the candidate video blocks in the third search space.
- 4. The method of claim 3, further comprising:
reloading another subset of the columns to define a fourth search space, the fourth search space defining a fourth plurality of columns of candidate video blocks to be compared to a fourth video block to be encoded during a fourth iteration of the motion estimation routine; and performing the fourth iteration to compare the fourth video block to the candidate video blocks in the fourth search space.
- 5. The method of claim 1, wherein performing the first iteration includes performing in parallel a plurality of difference computations between pixel values of the first video block to be encoded and pixel values of one of the candidate video blocks in the first search space.
- 6. A method comprising:
performing difference computations between pixels of a macroblock to be encoded and pixels of a candidate macroblock within a search space; generating a set of microblock difference values based on the computations, the microblock difference values respectively being indicative of differences between each of a plurality of microblocks that form the macroblock to be encoded and microblocks that form the candidate macroblock; and generating a macroblock difference value based on the computations, the macroblock difference value being indicative of a difference between the macroblock to be encoded and the candidate macroblock.
- 7. The method of claim 6, wherein performing the difference computations includes performing a plurality of the difference computations in parallel.
- 8. The method of claim 7, wherein the plurality of difference computations performed in parallel correspond to a row of one of the microblocks.
- 9. A device comprising:
an encoder that encodes video frames according to a motion estimation routine, the encoder being configured to load a set of pixel values into memory to define a first search space, the first search space defining a first plurality of columns of candidate video blocks to be compared to a first video block to be encoded during a first iteration of the motion estimation routine, perform the first iteration to compare the first video block to the candidate video blocks in the first search space, and reload a subset of the columns to define a second search space, the second search space defining a second plurality of columns of candidate video blocks to be compared to a second video block to be encoded during a second iteration of the motion estimation routine; and a transmitter that transmits the encoded video frames.
- 10. The device of claim 9, the encoder being further configured to perform the second iteration to compare the second video block to be encoded to the candidate video blocks in the second search space.
- 11. The device of claim 10, the encoder being further configured to reload another subset of the columns to define a third search space, the third search space defining a third plurality of columns of candidate video blocks to be compared to a third video block to be encoded during a third iteration of the motion estimation routine, and perform the third iteration to compare the third video block to the candidate video blocks in the third search space.
- 12. The device of claim 11, the encoder being further configured to reload another subset of the columns to define a fourth search space, the fourth search space defining a fourth plurality of columns of candidate video blocks to be compared to a fourth video block to be encoded during a fourth iteration of the motion estimation routine, and perform the fourth iteration to compare the fourth video block to the candidate video blocks in the fourth search space.
- 13. The device of claim 9, the encoder being configured to perform in parallel a plurality of difference computations between pixel values of the first video block to be encoded and pixel values of one of the candidate video blocks in the first search space.
- 14. The device of claim 9, wherein the device is selected from the group consisting of: a digital television, a wireless communication devices, a personal digital assistant, a laptop computer, a desktop computer, a digital camera, a digital recording device, a cellular radiotelephone having video capabilities, and a satellite radiotelephone having video capabilities.
- 15. The device of claim 9, further comprising a video capture device to capture video frames in real-time, the encoder being configured to encode the video frames in real-time and the transmitter being configured to transmit the encoded video frames in real-time.
- 16. A device comprising:
an encoder that encodes video frames, the encoder being configured to perform difference computations between pixels of a macroblock to be encoded and pixels of a candidate macroblock within a search space, generate a set of microblock difference values based on the difference computations, the microblock difference values respectively being indicative of differences between each of a plurality of microblocks that form the macroblock to be encoded and microblocks that form the candidate macroblock, and generate a macroblock difference value based on the computations, the macroblock difference value being indicative of a difference between the macroblock to be encoded and the candidate macroblock; and a transmitter that transmits the encoded video frames.
- 17. The device of claim 16, the encoder being configured to perform a plurality of the difference computations in parallel.
- 18. The device of claim 16, wherein the plurality of difference computations performed in parallel correspond to a row of one of the microblocks.
- 19. The device of claim 16, further comprising a video capture device to capture video frames in real-time, the encoder being configured to encode video frames in real-time and the transmitter being configured to transmit the encoded video frames in real-time, wherein the video frames are encoded according to a Moving Picture Experts Group 4 (MPEG-4) standard.
- 20. The device of claim 16, wherein the device is a battery powered wireless device.
- 21. An apparatus comprising:
a memory; a memory control unit that loads a set of pixel values into the memory to define a first search space, the first search space defining a first plurality of columns of candidate video blocks to be compared to a first video block to be encoded during a first iteration of a motion estimation routine, and reloads a subset of the columns to define a second search space, the second search space defining a second plurality of columns of candidate video blocks to be compared to a second video block to be encoded during a second iteration of the motion estimation routine; and a processor that performs the first iteration to compare the first video block to the candidate video blocks in the first search space and performs the second iteration to compare the second video block to the candidate video blocks in the second search space.
- 22. The apparatus of claim 21, wherein the memory control unit reloads another subset of the columns to define a third search space, the third search space defining a third plurality of columns of candidate video blocks to be compared to a third video block to be encoded during a third iteration of the motion estimation routine; and
the processor performs the third iteration to compare the third video block to the candidate video blocks in the third search space.
- 23. The apparatus of claim 22, wherein the memory control unit reloads another subset of the columns to define a fourth search space, the fourth search space defining a fourth plurality of columns of candidate video blocks to be compared to a fourth video block to be encoded during a fourth iteration of the motion estimation routine, and
the processor performs the fourth iteration to compare the fourth video block to the candidate video blocks in the fourth search space.
- 24. The apparatus of claim 21, the processor being configured to perform in parallel a plurality of difference computations between one of the video blocks to be encoded and one of the candidate video blocks in one of the search spaces.
- 25. An apparatus comprising:
a memory that stores computer readable instructions; and a processor that executes the instructions to:
perform difference computations between pixels of a macroblock to be encoded and pixels of a candidate macroblock within a search space; generate a set of microblock difference values based on the computations, the microblock difference values respectively being indicative of differences between each of a plurality of microblocks that form the macroblock to be encoded and microblocks that form the candidate macroblock; and generate a macroblock difference value based on the computations, the macroblock difference value being indicative of a difference between the macroblock to be encoded and the candidate macroblock.
- 26. The apparatus of claim 25, the processor being configured to perform a plurality of the difference computations in parallel.
- 27. The apparatus of claim 26, wherein the plurality of the difference computations performed in parallel correspond to a row of one of the microblocks.
- 28. An apparatus that encodes video blocks according to a Moving Picture Experts Group (MPEG) standard, the apparatus being configured to:
load a set of pixel values into memory to define a first search space, the first search space defining a first plurality of columns of candidate video blocks to be compared to a first video block to be encoded during a first iteration of a motion estimation routine; perform the first iteration to compare the first video block to the candidate video blocks in the first search space; and reload a subset of the columns to define a second search space, the second search space defining a second plurality of columns of candidate video blocks to be compared to a second video block to be encoded during a second iteration of the motion estimation routine.
- 29. The apparatus of claim 28, the apparatus being configured to perform the second iteration to compare the second video block to the candidate video blocks in the second search space.
- 30. The apparatus of claim 29, the apparatus being further configured to:
reload another subset of the columns to define a third search space, the third search space defining a third plurality of columns of candidate video blocks to be compared to a third video block to be encoded during a third iteration of the motion estimation routine; and perform the third iteration to compare the third video block to the candidate video blocks in the third search space.
- 31. The apparatus of claim 30, the apparatus being further configured to:
reload another subset of the columns to define a fourth search space, the fourth search space defining a fourth plurality of columns of candidate video blocks to be compared to a fourth video block to be encoded during a fourth iteration of the motion estimation routine; and perform the fourth iteration to compare the fourth video block to the candidate video blocks in the fourth search space.
- 32. The apparatus of claim 28, the apparatus being configured to perform in parallel a plurality of difference computations between pixel values of the first video block to be encoded and pixel values of one of the candidate video blocks in the first search space.
- 33. An apparatus that encodes video blocks according to a Moving Picture Experts Group (MPEG) standard, the apparatus being configured to:
perform difference computations between pixels of a macroblock to be encoded and pixels of a candidate macroblock within a search space; generate a set of microblock difference values based on the computations, the microblock difference values respectively being indicative of differences between each of a plurality of microblocks that form the macroblock to be encoded and microblocks that form the candidate macroblock; and generate a macroblock difference value based on the computations, the macroblock difference value being indicative of a difference between the macroblock to be encoded and the candidate macroblock.
- 34. The apparatus of claim 33, the apparatus being configured to perform a plurality of the difference computations in parallel.
- 35. The apparatus of claim 34, wherein the plurality of difference computations performed in parallel correspond to a row of one of the microblocks.
RELATED APPLICATIONS
[0001] This application claims the benefit of provisional U.S. Application Serial No. 60/390,101, entitled “Method to Reduce Power Consumption in a Video Motion Estimation System” filed on Jun. 18, 2002, assigned to the assignee of the present application, and incorporated herein by reference in its entirety for all purposes.
[0002] This application is related to co-pending patent application filed on the same date herewith, entitled “TECHNIQUES FOR VIDEO ENCODING AND DECODING,” Ser. No. ______, (Docket No. 020127). This application is further related to co-pending patent application entitled “VIDEO ENCODING TECHNIQUES,” Ser. No. 10/139,772, filed on May 3, 2002, (Docket No. 020086). Both applications are assigned to the same Assignee as the present application.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60390101 |
Jun 2002 |
US |