Motion estimation in block processing pipelines
AssigneeApple Inc.
InventorsJim C. Chou, Mark P. Rygh
Life of this patent
Estimating the term…
Abstract
Block processing pipeline methods and apparatus in which. motion estimation is performed at a stage of a motion estimation module for a current block with respect to a reference frame at one or more partition sizes to determine candidate motion vectors. The candidate motion vectors may be passed to a next stage for refinement. Motion estimation may then be performed at the next stage to refine the motion vectors. In performing motion estimation at this stage, the input motion vectors of at least one partition size received from the previous stage may be used as candidate motion vectors in searches for at least one other partition size.
Claims22
An apparatus, comprising:
- a block processing pipeline comprising a plurality of stages each configured to perform one or more operations on a block of pixels from a frame passing through the pipeline;
- a first motion estimation stage of the block processing pipeline configured to perform motion estimation for a current block with respect to a reference frame to generate candidate motion vectors corresponding to partitions of the current block at one or more of a plurality of partition sizes, each candidate motion vector indicating a position in the reference frame of a match for a respective partition of the current block;
- and
- a second motion estimation stage of the block processing pipeline configured to perform motion estimation for the current block with respect to the reference frame to generate refined motion vectors for the current block at two or more of the plurality of partition sizes using the generated candidate motion vectors of the first motion estimation stage as seeds in searches for the refined motion vectors, wherein at least one of the two or more of the plurality of partition sizes used to generate the refined motion vectors in the second motion estimation stage is different from the one or more of the plurality of partition sizes corresponding to the candidate motion vectors generated in the first motion estimation stage;
- wherein the first motion estimation stage and the second motion estimation stage are different stages of the block processing pipeline.
A method, comprising:
- performing, by one or more hardware computing devices:
- inputting blocks of pixels from an input frame to a block processing pipeline comprising a plurality of stages, each stage configured to perform one or more operations on blocks of pixels passing through the pipeline;
- generating, by a first stage of the pipeline, candidate motion vectors for a current block with respect to a reference frame according to searches of the reference frame performed for one or more partition sizes;
- and
- generating, by a next stage of the pipeline, refined motion vectors for the current block with respect to the reference frame according to searches of the reference frame performed for a plurality of partition sizes, wherein the generated candidate motion vectors are used as seeds in searching for the refined motion vectors, and wherein at least one of the plurality of partition sizes used in generating the refined motion vectors in the next stage is different from the one or more partition sizes corresponding to the candidate motion vectors generated in the first stage;
- wherein the first stage and the next stage are different stages of the block processing pipeline.
A device, comprising:
- a memory;
- and
- an apparatus configured to process video frames and to store the processed video frames as frame data to the memory, the apparatus comprising a block processing pipeline that implements a plurality of stages each configured to perform one or more operations on a block of pixels from a frame passing through the pipeline;
- wherein one or more stages of the block processing pipeline are each configured to:
- receive, from an upstream stage of the pipeline, candidate motion vectors corresponding to partitions of a current block with respect to a reference frame, each candidate motion vector indicating a position in the reference frame of a match for a respective partition of the current block, wherein the candidate motion vectors correspond to partitions of one or more of a plurality of partition sizes;
- perform motion estimation for the current block with respect to the reference frame to generate motion vectors for the current block at two or more of the plurality of partition sizes, wherein the received candidate motion are used as seeds in searches for the motion vectors, and wherein at least one of the two or more of the plurality of partition sizes used to generate the motion vectors in the one or more stages is different from the one or more of a plurality of partition sizes corresponding to the candidate motion vectors received from the upstream motion estimation stage;
- and
- output the motion vectors for the current block to at least one downstream stage of the pipeline.
Dependencies are inferred from the claim text.