Patent ID: 7697610
Filing Date: 2010-04-13
Classification: H04N

Abstract:
1. A method implemented, at least in part, by one or more processors executing instructions stored in computer-readable storage media, the method comprising: determining, by one or more of the processors, a plurality of candidate sets of thresholds, each candidate set of thresholds containing multiple different thresholds corresponding to multiple different block sizes in a video encoding scheme that uses multiple different block sizes, each candidate set of thresholds comprising a respective different threshold for each different block size of the multiple block sizes used by the video encoding scheme, each candidate set of thresholds corresponding to a different predetermined zero motion detection accuracy rate in relation to an amount of video encoding complexity reduction; selecting one of the sets of thresholds from the plurality of candidate sets based on the predetermined zero motion detection accuracy rate and a corresponding desired video encoding complexity reduction for carrying out motion estimation operations on a video sequence; defining a low threshold in addition to the selected set of thresholds, the low threshold being defined based on a largest block size of the multiple block sizes by the video encoding scheme, the low threshold corresponding to a higher zero motion detection accuracy rate than the selected set of thresholds; and for each macroblock of multiple macroblocks in the video data sequence, evaluating, by one or more of the processors, blocks in the macroblock in view of respective ones of the thresholds to determine whether motion estimation operations can be terminated prior to evaluating remaining blocks in the macroblock, wherein the evaluating further comprises, for each block size of the multiple block sizes, starting with a largest block size and progressing to smaller block sizes: calculating an encoding cost of a current block based on a motion vector of the current block; comparing the encoding cost of the current block to a threshold of the selected set of thresholds corresponding to the size of the current block to determine if the current block is a zero motion block (ZMB); when a result of the comparing the encoding cost of the current block to the threshold corresponding to the block size of the current block indicates that the current block is a ZMB and when the current block is the largest block size of the multiple block sizes, comparing the encoding cost to the low threshold defined based on the largest block size of the multiple block sizes to determine if a best block size is the largest block size, and when the encoding cost is less than the low threshold, determining that the largest block size is the best block size for encoding the macroblock and terminating motion evaluation of the macroblock; when a result of the comparing the encoding cost to the threshold corresponding to the block size of the current block indicates that the current block is a ZMB and the current block size is not the largest block size of the multiple block sizes, moving on to evaluate a next block in the macroblock; and when a result of the comparing the encoding cost to the threshold corresponding to the block size of the current block indicates that the current block is not a ZMB, and after each block in the macroblock has been evaluated for all block sizes for the multiple block sizes, selecting the block size with a minimal sum of encoding costs of all blocks in the macroblock as the best block size for encoding the macroblock.