Efficient fetching for motion compensation video decoding process
AssigneeQUALCOMM Incorporated
InventorsStephen Molloy, Raghavendra C. Nagaraj
Life of this patent
Estimating the term…
Abstract
Efficient memory fetching techniques are described that can improve data fetching during a motion compensation decoding process. The techniques propose several different memory fetching modes that may be very efficient in different scenarios of the motion compensation decoding process. A motion compensator may a particular memory fetch mode from a plurality of possible modes on a case-by-case basis for the memory fetches associated with a motion compensation decoding process of a macroblock. The techniques described herein may be particularly useful when fractional interpolation to sub-integer pixels is used in the inter-frame compression.
Claims32
A method comprising:
- receiving motion vectors for a macroblock of video data in a video coding device;
- selecting a memory fetch mode from a plurality of modes for memory fetches associated with a motion compensation decoding process of the macroblock wherein the plurality of modes include:
- a first mode that causes separate fetches for each partition and sub-partition of the macroblock and for additional pixels needed for fractional interpolation of each partition and sub-partition, a second mode that causes fetching of an area encompassing each partition and sub-partition of the macroblock and encompassing additional pixels needed for fractional interpolation of the partitions and sub-partitions of the macroblock in the area, and a third mode that causes separate fetching for each partition using separate partition areas that encompass sub-partitions of each respective partition of the macroblock and encompass additional pixels needed for fractional interpolation of the sub-partitions of the macroblock in each partition area;
- and
- fetching data from a memory of the video coding device according to the selected memory fetch mode, wherein the fetched data includes pixel values identified by the motion vectors and the additional pixel values needed for fractional interpolation,
- wherein selecting the memory fetch mode includes selecting the first mode in first scenarios of the motion compensation decoding process, selecting the second mode in second scenarios of the motion compensation decoding process, and selecting the third mode in third scenarios of the motion compensation decoding process, and
- wherein, in the case that the selected mode comprises the third mode, fetching data according to the third mode comprises:
- defining a plurality of partition areas around different subsets of the sub-partitions within a search space, wherein each of the partition areas encompasses one of the subsets of the sub-partitions and additional pixel values adjacent the different sub-partitions needed for the fractional interpolation;
- and
- fetching the plurality of partition areas for the motion compensation decoding process of the macroblock, wherein the motion vectors comprise motion vectors for different sub-partitions of the macroblock.
A device comprising:
- a memory that stores pixel data;
- and
- a motion compensator that receives motion vectors for a macroblock of video data, selects a memory fetch mode from a plurality of modes for memory fetches associated with a motion compensation decoding process of the macroblock wherein the plurality of modes include:
- a first mode that causes separate fetches for each partition and sub-partition of the macroblock and for additional pixels needed for fractional interpolation of each partition and sub-partition, a second mode that causes fetching of an area encompassing each partition and sub-partition of the macroblock and encompassing additional pixels needed for fractional interpolation of the partitions and sub-partitions of the macroblock in the area, and a third mode that causes separate fetching for each partition using separate partition areas that encompass sub-partitions of each respective partition of the macroblock and encompass additional pixels needed for fractional interpolation of the sub-partitions of the macroblock in each partition area, and fetches data from the memory according to the selected memory fetch mode, wherein the fetched data includes pixel values identified by the motion vectors and additional pixel values needed for fractional interpolation,
- wherein the motion compensator selects the first mode in first scenarios, selects the second mode in second scenarios of the motion compensation decoding process, and selects the third mode in third scenarios of the motion compensation decoding process, and
- wherein, in the case that the selected mode comprises the third mode, the motion compensator is further configured to:
- receive motion vectors for different sub-partitions of the macroblock;
- and
- fetch the data from the memory according to the selected memory fetch mode by defining a plurality of partition areas around different subsets of the sub-partitions within a search space, wherein each of the partition areas encompasses one of the subsets of the sub-partitions and additional pixel values adjacent the different sub-partitions needed for the fractional interpolation, and fetch the plurality of partition areas for the motion compensation decoding process of the macroblock.
A decoder comprising a processor that:
- receives motion vectors for a macroblock of video data;
- selects a memory fetch mode from a plurality of modes for memory fetches associated with a motion compensation decoding process of the macroblock, wherein the plurality of modes include:
- a first mode that causes separate fetches for each partition and sub-partition of the macroblock and for additional pixels needed for fractional interpolation of each partition and sub-partition, a second mode that causes fetching of an area encompassing each partition and sub-partition of the macroblock and encompassing additional pixels needed for fractional interpolation of the partitions and sub-partitions of the macroblock in the area, and a third mode that causes separate fetching for each partition using separate partition areas that encompass sub-partitions of each respective partition of the macroblock and encompass additional pixels needed for fractional interpolation of the sub-partitions of the macroblock in each partition area;
- and
- fetches data from a memory according to the selected memory fetch mode, wherein the data includes pixel values identified by the motion vectors and additional pixel values needed for fractional interpolation,
- wherein the processor selects the first mode in first scenarios, selects the second mode in second scenarios of the motion compensation decoding process, and selects the third mode in third scenarios of the motion compensation decoding process,
- wherein, in the case that the selected mode comprises the third mode, the processor is further configured to:
- receive motion vectors for different sub-partitions of the macroblock;
- and
- fetch the data from the memory according to the selected memory fetch mode by defining a plurality of partition areas around different subsets of the sub-partitions within a search space, wherein each of the partition areas encompasses one of the subsets of the sub-partitions and additional pixel values adjacent the different sub-partitions needed for the fractional interpolation, and fetch the plurality of partition areas for the motion compensation decoding process of the macroblock.
A non-transitory computer-readable medium comprising executable instructions that when executed cause a decoder to:
- receive motion vectors for a macroblock of video data;
- select a memory fetch mode from a plurality of modes for memory fetches associated with a motion compensation decoding process of the macroblock wherein the plurality of modes include:
- a first mode that causes separate fetches for each partition and sub-partition of the macroblock and for additional pixels needed for fractional interpolation of each partition and sub-partition, a second mode that causes fetching of an area encompassing each partition and sub-partition of the macroblock and encompassing additional pixels needed for fractional interpolation of the partitions and sub-partitions of the macroblock in the area, and a third mode that causes separate fetching for each partition using separate partition areas that encompass sub-partitions of each respective partition of the macroblock and encompass additional pixels needed for fractional interpolation of the sub-partitions of the macroblock in each partition area;
- and
- fetch data according to the selected memory fetch mode, wherein the data includes pixel values identified by the motion vectors and additional pixel values needed for fractional interpolation,
- wherein the instructions cause the decoder to select the first mode in first scenarios, select the second mode in second scenarios of the motion compensation decoding process, and select the third mode in third scenarios of the motion compensation decoding process,
- wherein, in the case that the selected mode comprises the third mode, the instructions when executed cause the decoder to:
- receive motion vectors for different sub-partitions of the macroblock;
- and
- fetch data according to the selected memory fetch mode by defining a plurality of partition areas around different subsets of the sub-partitions within a search space, wherein each of the partition areas encompasses one of the subsets of the sub-partitions and additional pixel values adjacent the different sub-partitions needed for the fractional interpolation, and fetch the plurality of partition areas for the motion compensation decoding process of the macroblock.
A device comprising:
- means for receiving motion vectors for a macroblock of video data;
- means for selecting a memory fetch mode from a plurality of modes for memory fetches associated with a motion compensation decoding process of the macroblock wherein the plurality of modes include:
- a first mode that causes separate fetches for each partition and sub-partition of the macroblock and for additional pixels needed for fractional interpolation of each partition and sub-partition, a second mode that causes fetching of an area encompassing each partition and sub-partition of the macroblock and encompassing additional pixels needed for fractional interpolation of the partitions and sub-partitions of the macroblock in the area, and a third mode that causes separate fetching for each partition using separate partition areas that encompass sub-partitions of each respective partition of the macroblock and encompass additional pixels needed for fractional interpolation of the sub-partitions of the macroblock in the partition area;
- and
- means for fetching data according to the selected memory fetch mode, wherein the data includes pixel values identified by the motion vectors and additional pixel values needed for fractional interpolation,
- wherein the means for selecting selects the first mode in first scenarios, selects the second mode in second scenarios of the motion compensation decoding process, and selects the third mode in third scenarios of the motion compensation decoding process,
- wherein, in the case that the selected mode comprises the third mode, the means for receiving receives motion vectors for different sub-partitions of the macroblock, and
- the means for fetching defines a plurality of partition areas around different subsets of the sub-partitions within a search space, wherein each of the partition areas encompasses one of the subsets of the sub-partitions and additional pixel values adjacent the different sub-partitions needed for the fractional interpolation, and fetches the plurality of partition areas for the motion compensation decoding process of the macroblock.
Dependencies are inferred from the claim text.