Patent ID: 8861591

Claim:
A data encoding method, comprising: partitioning data processing tasks into subtasks among a plurality of processors, wherein: the data processing tasks include processing video data; at least one of the processors is a special purpose processor, and at least one of the processors is a central processing unit (CPU); configuring the partitioning of the subtasks to the plurality of processors so as to perform the data processing in any one of a plurality of modes, including: a mode in which a total time for data processing is reduced relative to other modes; a mode in which fewer CPU cycles are consumed relative to other modes; or a mode in which data processing latency is reduced relative to other modes; choosing among tradeoffs available in each of the modes, including: maintaining a predetermined minimum video quality and a predetermined maximum bitrate; using the CPU to perform a coarse motion vector search; performing an initial coarse motion vector search to establish a baseline set of macroblocks with motion predictions; and computing the initial coarse motion vector search once to establish a baseline prediction, and computing the initial coarse motion vector search again utilizing the baseline prediction to minimize a differentially encoded motion vector; and scheduling subtasks for each of the plurality of processors by a dispatcher, wherein the mode is used by the dispatcher to schedule the subtasks.