US20180124427A1 - Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow - Google Patents
Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow Download PDFInfo
- Publication number
- US20180124427A1 US20180124427A1 US15/860,688 US201815860688A US2018124427A1 US 20180124427 A1 US20180124427 A1 US 20180124427A1 US 201815860688 A US201815860688 A US 201815860688A US 2018124427 A1 US2018124427 A1 US 2018124427A1
- Authority
- US
- United States
- Prior art keywords
- block
- sub
- motion vector
- mvp
- blk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 239000013598 vector Substances 0.000 title claims abstract description 211
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000010586 diagram Methods 0.000 description 42
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 38
- 101100153581 Bacillus anthracis topX gene Proteins 0.000 description 30
- 101150041570 TOP1 gene Proteins 0.000 description 30
- 238000013461 design Methods 0.000 description 29
- 238000005192 partition Methods 0.000 description 5
- 238000013139 quantization Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
Definitions
- the disclosed embodiments of the present invention relate to video frame processing, and more particularly, to a method and apparatus for assigning a motion vector predictor to a sub-block within a block (e.g., a 4 ⁇ 4 sub-block, a 8 ⁇ 4 sub-block or a 4 ⁇ 8 sub-block within an 8 ⁇ 8 block) without performing an associated iteration of a sub-block motion vector predictor determination flow.
- a sub-block within a block e.g., a 4 ⁇ 4 sub-block, a 8 ⁇ 4 sub-block or a 4 ⁇ 8 sub-block within an 8 ⁇ 8 block
- the conventional video coding standards generally adopt a block based coding technique to exploit spatial and temporal redundancy.
- the basic approach is to divide the whole source frame into a plurality of blocks, perform prediction on each block, transform residues of each block using discrete cosine transform, and perform quantization and entropy encoding.
- a reconstructed frame is generated in a coding loop to provide reference pixel data used for coding following blocks.
- in-loop filter(s) may be used for enhancing the image quality of the reconstructed frame.
- Motion vectors are used by motion compensation to reconstruct the inter-frames.
- a motion vector (MV) of a current block may be derived from a motion vector predictor (MVP) and a motion vector difference (MVD).
- MVP motion vector predictor
- MVPD motion vector difference
- the computation of the motion vector may be expressed using the following equation:
- VLD variable length decoder
- the performance of the motion vector computation depends on the computation of the motion vector predictor.
- a small-sized block is further sub-divided into a plurality of sub-blocks, it may require extra time to find a motion vector predictor for each of the sub-blocks within the same block. This may induce considerable timing overhead if an inter-frame is composed of a large number of sub-blocks.
- an innovative design which is capable of effectively improving the speed of the MVP determination.
- a method and apparatus for assigning a motion vector predictor to a sub-block within a block e.g., a 4 ⁇ 4 sub-block, a 8 ⁇ 4 sub-block or a 4 ⁇ 8 sub-block within an 8 ⁇ 8 block
- a sub-block within a block e.g., a 4 ⁇ 4 sub-block, a 8 ⁇ 4 sub-block or a 4 ⁇ 8 sub-block within an 8 ⁇ 8 block
- an exemplary motion vector predictor determination method includes: determining a motion vector predictor of a block according to motion vector data of neighbor units associated with the block; and assigning the motion vector predictor determined for the block to a first sub-block within the block.
- an exemplary motion vector predictor determination apparatus includes a motion vector predictor computing circuit.
- the motion vector predictor computing circuit is arranged to determine a motion vector predictor of a block according to motion vector data of neighbor units associated with the block, and assign the motion vector predictor determined for the block to a first sub-block within the block.
- FIG. 1 is a diagram of a video decoder according to an embodiment of the present invention.
- FIG. 2 is a diagram illustrating recursive partitioning of a superblock into various sizes of mode information units.
- FIG. 3 is a diagram illustrating an example of two VP9 MI units with the same size and same reference frame.
- FIG. 4 is a diagram illustrating an 8 ⁇ 8 block sub-divided into four 4 ⁇ 4 sub-blocks according to an embodiment of the present invention.
- FIG. 5 is a diagram illustrating a first case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 6 is a diagram illustrating a second case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 7 is a diagram illustrating a third case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 8 is a diagram illustrating a fourth case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 9 is a diagram illustrating a fifth case where the condition of the first lemma is satisfied for all 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 10 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 8 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 11 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 4 ⁇ 8 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 12 is a diagram illustrating the best MVP determination performed for blocks with different MI unit sizes not smaller than 8 ⁇ 8.
- FIG. 13 is diagram illustrating a case where the second lemma is employed when the MI unit size is smaller than 8 ⁇ 8 according to embodiments of the present invention.
- FIG. 14 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 15 is a diagram illustrating another case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 16 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for all 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 17 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 4 sub-block according to an embodiment of the present invention.
- FIG. 18 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 4 ⁇ 8 sub-block according to an embodiment of the present invention.
- FIG. 19 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 4 block and the condition of the first lemma is satisfied for two 8 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 20 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 4 ⁇ 8 block and the condition of the first lemma is satisfied for two 4 ⁇ 8 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- FIG. 1 is a diagram of a video decoder according to an embodiment of the present invention.
- the video decoder 100 may be part of an electronic device, such as a personal computer (e.g., a laptop computer or a desktop computer), a mobile phone, a tablet, or a wearable device.
- the video decoder 100 is arranged for decoding a bitstream BS to generate a video sequence composed of a plurality of consecutive decoded pictures (i.e., reconstructed pictures). At least a portion (i.e., part or all) of the video decoder 100 may be implemented in an integrated circuit (IC).
- IC integrated circuit
- the video decoder 100 includes an entropy decoder (e.g., a variable-length decoder (VLD) 102 ), an inverse scan circuit (denoted as “IS”) 104 , an inverse quantization circuit (denoted as “IQ”) 106 , an inverse transform circuit (denoted as “IT”) 108 , a reconstruct circuit 110 , at least one in-loop filter (e.g., a de-blocking filter (DF) 112 ), a reference picture buffer 114 , an intra prediction circuit (denoted as “IP”) 116 , a motion vector (MV) calculation circuit 118 , a motion compensation circuit (denoted as “MC”) 120 , and an intra/inter selection circuit 122 .
- VLD variable-length decoder
- IS inverse scan circuit
- IQ inverse quantization circuit
- IT inverse transform circuit
- reconstruct circuit 110 e.g., at least one in-loop filter (e.g., a de-blocking filter
- the reference picture buffer 114 may be an external storage device such as an off-chip dynamic random access memory (DRAM).
- the MV calculation circuit 118 includes a motion vector predictor (MVP) determination apparatus 122 with an improved speed for the MVP determination.
- the MVP determination apparatus 122 may include a checking circuit 124 and an MVP computing circuit 126 . Further details of the proposed MVP determination apparatus 122 will be described later.
- the video decoder 100 may be used to decode the incoming bitstream BS generated using a VP9 coding standard that is an open and royalty-free video coding standard being developed by Google®.
- VP9 coding standard that is an open and royalty-free video coding standard being developed by Google®.
- Any video decoder using the proposed video decoder structure, particularly the proposed MVP determination apparatus 122 falls within the scope of the present invention.
- the VLD 102 is arranged to apply entropy decoding to the incoming bitstream BS for generating intra/inter mode information (e.g., motion vector differences of inter prediction) and residues.
- the residues are transmitted to the reconstruct circuit 110 through being inverse scanned (which is performed at the inverse scan circuit 104 ), inverse quantized (which is performed at the inverse quantization circuit 106 ), and inverse transformed (which is performed at the inverse transform circuit 108 ).
- the inter/intra selection circuit 122 is used to decide a prediction mode of a current block to be decoded. For example, when the prediction mode of the current block is decided to be inter prediction, predicted pixels/samples generated from the motion compensation circuit 120 are output to the following decoding stage, such as a reconstruct circuit 110 . For another example, when the prediction mode of the current block is decided to be intra prediction, predicted pixels/samples generated from the intra prediction circuit 116 are output to the following decoding stage, such as the reconstruct circuit 110 .
- the reconstruct circuit 110 is arranged to combine a residue output of the inverse transform circuit 108 and a predicted pixel output of one of intra prediction circuit 116 and motion compensation circuit 120 to thereby generate reconstructed pixels/samples of each block of a picture (i.e., a reconstructed/decoded picture).
- the de-blocking filter 112 is arranged to apply de-blocking filtering to the reconstructed picture generated from the reconstruct circuit 110 , and then generate a de-blocked picture as a reference picture.
- the de-blocked reference picture is stored into the reference picture buffer 114 , and may be referenced by the motion compensation circuit 118 to generate predicted pixels/samples.
- VP9 divides one picture into 64 ⁇ 64-sized blocks that are called superblocks. Superblocks of the picture are processed in raster order: left to right, top to bottom. In addition, VP9 supports quad-tree based encoding. Hence, recursive partitioning may be employed to split each superblock into one or more partitions (e.g., smaller-sized blocks) for further processing.
- FIG. 2 is a diagram illustrating recursive partitioning of one superblock into various sizes of mode information (MI) units.
- MI mode information
- one superblock with the block size of 64 ⁇ 64 may be split into one or more coding units (or called MI units), where the partitions supported by VP9 coding standard may include square partitions, such as a 64 ⁇ 64-sized block, a 32 ⁇ 32-sized block, a 16 ⁇ 16-sized block, a 8 ⁇ 8-sized block, a 4 ⁇ 4-sized block, and may further include non-square partitions, such as a 64 ⁇ 32-sized block, a 32 ⁇ 64-sized block, 32 ⁇ 16-sized block, a 16 ⁇ 32-sized block, . . . , a 4 ⁇ 8-sized block, a 8 ⁇ 4-sized block.
- the coding unit (MI unit) sizes may include 64 ⁇ 64, 32 ⁇ 32, 16 ⁇ 16, 8 ⁇ 8, 64 ⁇ 32, 32 ⁇ 64, 32 ⁇ 16, 16 ⁇ 32, . . . , 8 ⁇ 8, 4 ⁇ 8, 8 ⁇ 4, 4 ⁇ 4.
- “4 ⁇ 4” is the smallest partition, lots of information is stored at “8 ⁇ 8” granularity only. This causes blocks smaller than “8 ⁇ 8” to be handled as sort of a special case.
- VP9 will perform a best MVP determination flow to find one best MVP.
- the best MVP is directly referenced to determine an MV of a block with the MI unit size.
- an additional sub-block MVP determination flow will be performed to find one sub-block MVP for each sub-block within one 8 ⁇ 8 block, where the best MVP and the sub-block MVP of a sub-block with the MI unit size may be involved in determining an MV of the sub-block.
- the MI unit size is 4 ⁇ 4
- one 8 ⁇ 8 block is composed of foursquare sub-blocks (i.e., 4 ⁇ 4 sub-blocks).
- 4 iterations of the sub-block MVP determination flow are required by a conventional design to determine sub-block MVPs of the four 4 ⁇ 4 sub-blocks, respectively.
- the MI unit size is 4 ⁇ 8
- one 8 ⁇ 8 block is composed of two non-square sub-blocks (i.e., 4 ⁇ 8 sub-blocks).
- 2 iterations of the sub-block MVP determination flow are required by the conventional design to determine sub-block MVPs of the two 4 ⁇ 8 sub-blocks, respectively.
- the MI unit size is 8 ⁇ 4
- one 8 ⁇ 8 block is composed of two non-square sub-blocks (i.e., 8 ⁇ 4 sub-blocks).
- MI 4 ⁇ 8 1 2 3
- MI 8 ⁇ 4 1 2 3
- MI 4 ⁇ 4 1 4 5
- VP9 requires extra time to find the sub-block MVPs compared to the condition of MI ⁇ 8 ⁇ 8. This might induce considerable timing overhead if an inter-frame is composed of a large number of MI units smaller than 8 ⁇ 8.
- the present invention therefore proposes using the MVP determination apparatus 122 to efficiently reduce the number of iterations of the sub-block MVP determination flow.
- the MVP determination apparatus 122 may be configured to reduce the number of iterations of the sub-block MVP determination flow according to a first lemma.
- FIG. 3 is a diagram illustrating an example of two VP9 MI units mi a and mi b with the same size and the same reference frame.
- the MI unit mi a has 8 neighbor motion vector data nb a0 -nb a7
- the MI unit mi b also has 8 neighbor motion vector data nb b0 -nb b7 .
- the MVP result depends on the input MI unit and the neighbors of the MI unit.
- the MVP determination apparatus 122 may speed up the iterations of the sub-block determination flow by early termination or may directly skip one or more iterations of the sub-block determination flow, depending upon the actual design considerations.
- the checking circuit 124 is arranged to check if motion vector data of at least one first neighbor unit (e.g., 4 ⁇ 4 unit) adjacent to a block (e.g., 8 ⁇ 8 MI unit) and motion vector data of at least one second neighbor unit (e.g., 4 ⁇ 4 unit) adjacent to the block (e.g., 8 ⁇ 8 MI unit) are identical to each other; and the motion vector predictor computing circuit 126 is arranged to assign a motion vector predictor determined for a first sub-block within the block to a second sub-block within the block when the checking circuit 124 determines that the motion vector data of the at least one first neighbor unit is identical to the motion vector data of the at least one second neighbor unit, where the motion vector data of the at least
- FIG. 4 is a diagram illustrating an 8 ⁇ 8 block sub-divided into four 4 ⁇ 4 sub-blocks according to an embodiment of the present invention. Since each of the sub-blocks blk 0 -blk 3 within the same 8 ⁇ 8 block BK CUR has a size smaller than 8 ⁇ 8, a sub-block MVP determination flow will be performed. As shown in FIG. 4 , there are neighbor 8 ⁇ 8 blocks BK 0 -BK 7 (which are reconstructed blocks). Since the minimum size of the sub-block is 4 ⁇ 4, the neighbor motion vector data is stored in a 4 ⁇ 4 neighbor unit.
- the associated sub-block MVP may be determined on the basis of the motion vector data top 0 of the neighbor unit 401 in the neighbor block BK 0 , the motion vector data left 0 of the neighbor unit 411 in the neighbor block BK 1 , the motion vector data nb 2 of the neighbor unit 422 in the neighbor block BK 2 , the motion vector data nb 3 of the neighbor unit 423 in the neighbor block BK 3 , the motion vector data nb 4 of the neighbor unit 424 in the neighbor block BK 4 , the motion vector data nb 5 of the neighbor unit 425 in the neighbor block BK 5 , the motion vector data nb 6 of the neighbor unit 426 in the neighbor block BK 6 , and the motion vector data nb 7 of the neighbor unit 427 in the neighbor block BK 7 .
- the neighbor units 401 and 411 are adjacent to the 8 ⁇ 8 block BK CUR , where among the neighbor units of the 8 ⁇ 8 block BK CUR , the neighbor unit 401 is closest to the sub-block blk 0 in the vertical direction, and the neighbor unit 411 is closest to the sub-block blk 0 in the horizontal direction.
- the associated sub-block MVP may be determined on the basis of the motion vector data top 1 of the neighbor unit 402 in the neighbor block BK 0 , the motion vector data left 0 of the neighbor unit 411 in the neighbor block BK 1 , the motion vector data nb 2 of the neighbor unit 422 in the neighbor block BK 2 , the motion vector data nb 3 of the neighbor unit 423 in the neighbor block BK 3 , the motion vector data nb 4 of the neighbor unit 424 in the neighbor block BK 4 , the motion vector data nb 5 of the neighbor unit 425 in the neighbor block BK 5 , the motion vector data nb 6 of the neighbor unit 426 in the neighbor block BK 6 , and the motion vector data nb 7 of the neighbor unit 427 in the neighbor block BK 7 .
- the neighbor units 402 and 411 are adjacent to the 8 ⁇ 8 block BK CUR , where among the neighbor units of the 8 ⁇ 8 block BK CUR , the neighbor unit 402 is closest to the sub-block blk 1 in the vertical direction, and the neighbor unit 411 is closest to the sub-block blk 1 in the horizontal direction.
- the associated sub-block MVP may be determined on the basis of the motion vector data top 0 of the neighbor unit 401 in the neighbor block BK 0 , the motion vector data left 1 of the neighbor unit 412 in the neighbor block BK 1 , the motion vector data nb 2 of the neighbor unit 422 in the neighbor block BK 2 , the motion vector data nb 3 of the neighbor unit 423 in the neighbor block BK 3 , the motion vector data nb 4 of the neighbor unit 424 in the neighbor block BK 4 , the motion vector data nb 5 of the neighbor unit 425 in the neighbor block BK 5 , the motion vector data nb 6 of the neighbor unit 426 in the neighbor block BK 6 , and the motion vector data nb 7 of the neighbor unit 427 in the neighbor block BK 7 .
- the neighbor units 401 and 412 are adjacent to the 8 ⁇ 8 block BK CUR , where among the neighbor units of the 8 ⁇ 8 block BK CUR , the neighbor unit 401 is closest to the sub-block blk 2 in the vertical direction, and the neighbor unit 412 is closest to the sub-block blk 2 in the horizontal direction.
- the associated sub-block MVP may be determined on the basis of the motion vector data top 1 of the neighbor unit 402 in the neighbor block BK 0 , the motion vector data left 1 of the neighbor unit 412 in the neighbor block BK 1 , the motion vector data nb 2 of the neighbor unit 422 in the neighbor block BK 2 , the motion vector data nb 3 of the neighbor unit 423 in the neighbor block BK 3 , the motion vector data nb 4 of the neighbor unit 424 in the neighbor block BK 4 , the motion vector data nb 5 of the neighbor unit 425 in the neighbor block BK 5 , the motion vector data nb 6 of the neighbor unit 426 in the neighbor block BK 6 , and the motion vector data nb 7 of the neighbor unit 427 in the neighbor block BK 7 .
- the neighbor units 402 and 412 are adjacent to the 8 ⁇ 8 block BK CUR , where among the neighbor units of the 8 ⁇ 8 block BK CUR , the neighbor unit 402 is closest to the sub-block blk 2 in the vertical direction, and the neighbor unit 412 is closest to the sub-block blk 2 in the horizontal direction.
- the sub-block MVP determination for each of the sub-blocks blk 0 -blk 3 refers to the same motion vector data nb 2 -nb 7 .
- the checking circuit 124 may simply check the motion vector data top 0 of the neighbor unit 401 , the motion vector data top 1 of the neighbor unit 402 , the motion vector data left 0 of the neighbor unit 411 , and the motion vector data left 1 of the neighbor unit 412 , where the neighbor units 401 and 402 are on the same side (i.e., top side) of the block BK CUR , and the neighbor units 411 and 412 are on the same side (i.e., left side) of the block BK CUR .
- the MVP computing circuit 126 may refer to a checking result generated from the checking circuit 124 to determine whether the condition of the first lemma is satisfied for certain sub-blocks within the same block BK CUR . If the condition of the first lemma is satisfied for certain sub-blocks within the same block BK CUR , one iteration of the sub-block MVP determination flow may be actually performed by the MVP computing circuit 126 to compute a sub-block MVP for one sub-block, and then the sub-block MVP determine for the sub-block may be directly assigned to other sub-block(s).
- FIG. 5 is a diagram illustrating a first case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the motion vector data top 0 and the motion vector data left 0 may be involved in determining the sub-block MVP of the sub-block blk 0
- the motion vector data top 1 and the same motion vector data left 0 may be involved in determining the sub-block MVP of the sub-block blk 1 .
- the motion vector data top 1 may not be involved in determining the sub-block MVP of the sub-block blk 0 , and the motion vector data top 0 may not be involved in determining the sub-block MVP of the sub-block blk 1 .
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other, the condition of the first lemma for the sub-blocks blk 0 and blk 1 is satisfied, which means that the sub-block MVP of the sub-block blk 1 should be the same as the sub-block MVP of the sub-block blk 0 .
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 0 , and then assign the sub-block MVP determined for the sub-block blk 0 to the sub-block blk 1 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 1 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 1 , and then assign the sub-block MVP determined for the sub-block blk 1 to the sub-block blk 0 .
- another iteration of the sub-block MVP determination flow to compute the motion vector predictor of the sub-block blk 0 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 6 is a diagram illustrating a second case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the motion vector data top 0 and the motion vector data left 1 may be involved in determining the sub-block MVP of the sub-block blk 2
- the motion vector data top 1 and the same motion vector data left 1 may be involved in determining the sub-block MVP of the sub-block blk 3 .
- the motion vector data top 1 may not be involved in determining the sub-block MVP of the sub-block blk 2 , and the motion vector data top 1 may not be involved in determining the sub-block MVP of the sub-block blk 2 .
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other, the condition of the first lemma for the sub-blocks blk 2 and blk 3 is satisfied, which means that the sub-block MVP of the sub-block blk 3 should be the same as the sub-block MVP of the sub-block blk 2 .
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 2 , and then assign the sub-block MVP determined for the sub-block blk 2 to the sub-block blk 3 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 3 , and then assign the sub-block MVP determined for the sub-block blk 3 to the sub-block blk 2 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 2 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 7 is a diagram illustrating a third case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the motion vector data top 0 and the motion vector data left 0 may be involved in determining the sub-block MVP of the sub-block blk 0
- the motion vector data left 1 and the same motion vector data top 0 may be involved in determining the sub-block MVP of the sub-block blk 2 .
- the motion vector data left 1 may not be involved in determining the sub-block MVP of the sub-block blk 0
- the motion vector data left 0 may not be involved in determining the sub-block MVP of the sub-block blk 2 .
- the checking circuit 124 determines that the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for the sub-blocks blk 0 and blk 2 is satisfied, which means that the sub-block MVP of the sub-block blk 2 should be the same as the sub-block MVP of the sub-block blk 0 .
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 0 , and then assign the sub-block MVP determined for the sub-block blk 0 to the sub-block blk 2 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 2 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 2 , and then assign the sub-block MVP determined for the sub-block blk 2 to the sub-block blk 0 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 0 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 8 is a diagram illustrating a fourth case where the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the motion vector data top 1 and the motion vector data left 0 may be involved in determining the sub-block MVP of the sub-block blk 1
- the motion vector data left 1 and the same motion vector data top 1 may be involved in determining the sub-block MVP of the sub-block blk 3 .
- the motion vector data left 1 may not be involved in determining the sub-block MVP of the sub-block blk 1
- the motion vector data left 0 may not be involved in determining the sub-block MVP of the sub-block blk 3 .
- the checking circuit 124 determines that the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for the sub-blocks blk 1 and blk 3 is satisfied, which means that the sub-block MVP of the sub-block blk 3 should be the same as the sub-block MVP of the sub-block blk 1 .
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 1 , and then assign the sub-block MVP determined for the sub-block blk 1 to the sub-block blk 3 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 3 , and then assign the sub-block MVP determined for the sub-block blk 3 to the sub-block blk 1 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk 1 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 9 is a diagram illustrating a fifth case where the condition of the first lemma is satisfied for all 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other and the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for all sub-blocks blk 0 -blk 3 is satisfied, which means that the sub-block MVPs of all sub-blocks blk 0 -blk 3 should be the same.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of a selected sub-block (e.g., blk 0 ) among the sub-blocks blk 0 -blk 3 , and then assign the sub-block MVP determined for the selected sub-block (e.g., blk 0 ) to each of the rest of the sub-blocks blk 0 -blk 3 .
- other iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the rest of the sub-block blk 0 -blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the checking circuit 124 may check the motion vector data of neighbor units (which are 4 ⁇ 4 units), and the MVP computing circuit 126 may refer to a checking result generated from the checking circuit 124 to determine whether the condition of the first lemma is satisfied for two 8 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block.
- one iteration of the sub-block MVP determination flow is actually performed by the MVP computing circuit 126 to compute a sub-block MVP for one 8 ⁇ 4 sub-block, and the sub-block MVP determined for one 8 ⁇ 4 sub-block is assigned to the other 8 ⁇ 4 sub-block.
- FIG. 10 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 8 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- Each of the 8 ⁇ 4 sub-blocks may be regarded as having two 4 ⁇ 4 sub-blocks.
- the 8 ⁇ 4 sub-block BLK 0 is composed of two 4 ⁇ 4 sub-blocks blk 0 and blk 1
- the 8 ⁇ 4 sub-block BLK 1 is composed of two 4 ⁇ 4 sub-blocks blk 2 and blk 3 .
- the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 may be set by the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 0
- the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 may be set by the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 2 . Since the 4 ⁇ 4 sub-blocks blk 0 and blk 1 are within the same 8 ⁇ 4 sub-block BLK 0 , the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 0 (i.e., the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 ) may also be used by the 4 ⁇ 4 sub-block blk 1 .
- the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 2 (i.e., the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 ) may also be used by the 4 ⁇ 4 sub-block blk 3 .
- the motion vector data top 0 and the motion vector data left 0 may be involved in determining the sub-block MV of the sub-block blk 0
- the motion vector data left 1 and the same motion vector data top 0 may be involved in determining the sub-block MVP of the sub-block blk 2
- the motion vector data top 0 and the motion vector data left 0 may be involved in determining the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0
- the motion vector data left 1 and the same motion vector data top 0 may be involved in determining the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 .
- the checking circuit 124 determines that the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for the 8 ⁇ 4 sub-blocks BLK 0 and BLK 1 is satisfied, which means that the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 should be the same as the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 .
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 , and then assign the sub-block MVP determined for the 8 ⁇ 4 sub-block BLK 0 to the 8 ⁇ 4 sub-block BLK 1 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 , and then assign the sub-block MVP determined for the 8 ⁇ 4 sub-block BLK 1 to the 8 ⁇ 4 sub-block BLK 0 .
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 11 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 4 ⁇ 8 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- Each of the 4 ⁇ 8 sub-blocks may be regarded as having two 4 ⁇ 4 sub-blocks.
- the 4 ⁇ 8 sub-block BLK 0 ′ is composed of two 4 ⁇ 4 sub-blocks blk 0 and blk 2
- the 4 ⁇ 8 sub-block BLK 1 ′ is composed of two 4 ⁇ 4 sub-blocks blk 1 and blk 3 .
- sub-block MVP of the 4 ⁇ 8 sub-block BLK 0 ′ may be set by the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 0
- sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′ may be set by the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 1 .
- the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 0 (i.e., the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 ′) may also be used by the 4 ⁇ 4 sub-block blk 2 .
- the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 1 (i.e., the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′) may also be used by the 4 ⁇ 4 sub-block blk 3 .
- the motion vector data top 0 and the motion vector data left 0 may be involved in determining the sub-block MVP of the sub-block blk 0
- the motion vector data top 1 and the same motion vector data left 0 may be involved in determining the sub-block MVP of the sub-block blk 1
- the motion vector data top 0 and the motion vector data left 0 may be involved in determining the sub-block MVP of the 4 ⁇ 8 sub-block BLK 0 ′
- the motion vector data top 1 and the same motion vector data left 0 may be involved in determining the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′.
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other, the condition of the first lemma for the 4 ⁇ 8 sub-blocks BLK 0 ′ and BLK 1 ′ is satisfied, which means that the sub-block MVP of the 4 ⁇ 8 sub-block BLK 0 ′ should be the same as the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4 ⁇ 8 sub-block BLK 0 ′, and then assign the sub-block MVP determined for the 4 ⁇ 8 sub-block BLK 0 ′ to the 4 ⁇ 8 sub-block BLK 1 ′.
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′ can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′, and then assign the sub-block MVP determined for the 4 ⁇ 8 sub-block BLK 1 ′ to the 4 ⁇ 8 sub-block BLK 0 ′.
- another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4 ⁇ 8 sub-block BLK 0 ′ can be skipped or early terminated to reduce the computation load as well as the computation time.
- the MVP determination apparatus 122 may be configured to reduce the number of iterations of the sub-block MVP determination flow according to a second lemma.
- the best MVPs of the MI unit mi are mvp besti and the sub-block MVPs of the MI unit mi are mvp blkji
- the sub-block MVP mvp blk3i must be equivalent to the best MVP mvp besti . Note that 0 ⁇ i ⁇ 2 and 0 ⁇ j ⁇ 4 for VP9.
- a best MVP is determined for a block, where the best MVP is used to calculate an MV for the block with the MI unit size ⁇ 8 ⁇ 8.
- the MI unit size is smaller than 8 ⁇ 8
- a best MVP is determined for each sub-block, and then at least one iteration of the sub-block MVP determination flow is performed to determine one sub-block MVP for each sub-block, where the best MVP and the sub-block MVP of each sub-block with the MI unit size ⁇ 8 ⁇ 8 are used to calculate an MV for each sub-block. Since the minimum size of a sub-block is 4 ⁇ 4, the neighbors are stored in 4 ⁇ 4 units. However, the minimum MI unit size for the best MVP determination is 8 ⁇ 8.
- FIG. 12 is a diagram illustrating the best MVP determination performed for blocks with different MI unit sizes not smaller than 8 ⁇ 8.
- the MI unit size is 16 ⁇ 8.
- the best MVP determination takes the 4 ⁇ 4 sub-block blk 3 as a base, and refers to motion vector data of 4 ⁇ 4 neighbor units, including the motion vector data top 1 of one top 4 ⁇ 4 neighbor unit (which is adjacent to the 16 ⁇ 8 block and closest to the 4 ⁇ 4 sub-block blk 3 in the vertical direction) and the motion vector data left 1 of one left 4 ⁇ 4 neighbor unit (which is adjacent to the 16 ⁇ 8 block and closest to the 4 ⁇ 4 sub-block blk 3 in the horizontal direction).
- the MI unit size is 8 ⁇ 8.
- the best MVP determination takes the 4 ⁇ 4 sub-block blk 3 as a base, and refers to motion vector data of 4 ⁇ 4 neighbor units, including the motion vector data top 1 of one top 4 ⁇ 4 neighbor unit (which is adjacent to the 8 ⁇ 8 block and closest to the 4 ⁇ 4 sub-block blk 3 in the vertical direction) and the motion vector data left 1 of one left 4 ⁇ 4 neighbor unit (which is adjacent to the 8 ⁇ 8 block and closest to the 4 ⁇ 4 sub-block blk 3 in the horizontal direction).
- the best MVPs for all sub-blocks within the same 8 ⁇ 8 block are the same.
- the best MVP determined for an 8 ⁇ 8 block (which has the minimum MI unit size for the best MVP determination) can be used as the best MVP for each of the sub-blocks (e.g., four 4 ⁇ 4 sub-blocks, or two 4 ⁇ 8 sub-blocks, or two 8 ⁇ 4 sub-blocks) within the same 8 ⁇ 8 block.
- the best MVP of one 8 ⁇ 8 block e.g., BK CUR shown in FIG.
- the motion vector data top 1 of the neighbor unit 402 in the neighbor block may be determined on the basis of the motion vector data left 1 of the neighbor unit 412 in the neighbor block BK 1 , the motion vector data nb 2 of the neighbor unit 422 in the neighbor block BK 2 , the motion vector data nb 3 of the neighbor unit 423 in the neighbor block BK 3 , the motion vector data nb 4 of the neighbor unit 424 in the neighbor block BK 4 , the motion vector data nb 5 of the neighbor unit 425 in the neighbor block BK 5 , the motion vector data nb 6 of the neighbor unit 426 in the neighbor block BK 6 , and the motion vector data nb 7 of the neighbor unit 427 in the neighbor block BK 7 .
- the best MVP determined for one 8 ⁇ 8 block is the same as the sub-block MVP determined for the 4 ⁇ 4 sub-block blk 3 within this 8 ⁇ 8 block.
- the MVP determination apparatus 122 may assign the best MVP determined for one 8 ⁇ 8 block to one 4 ⁇ 4 sub-block (e.g., blk 3 ) within the 8 ⁇ 8 block.
- FIG. 13 is diagram illustrating a case where the second lemma is employed when the MI unit size is smaller than 8 ⁇ 8 according to embodiments of the present invention.
- the MI unit size is 4 ⁇ 4
- the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within an 8 ⁇ 8 block can be directly set by the best MVP determined for the 8 ⁇ 8 block.
- an iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- the numbers of iterations of sub-block MVP determination flow under different MI unit sizes are listed in the following table.
- MI 4 ⁇ 8 2 2
- MI 8 ⁇ 4 2 2
- MI 4 ⁇ 4 4 3
- first lemma and the second lemma can be exploited simultaneously to reduce the number of iterations of sub-block MVP determination flow in a more efficient manner. This also falls within the scope of the present invention.
- FIG. 14 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other, the condition of the first lemma for the 4 ⁇ 4 sub-blocks blk 2 and blk 3 is satisfied, which means that the sub-block MVP of the sub-block blk 2 should be the same as the sub-block MVP of the sub-block blk 3 .
- the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within the 8 ⁇ 8 block.
- two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4 ⁇ 4 sub-blocks blk 2 and blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 15 is a diagram illustrating another case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the checking circuit 124 determines that the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for the 4 ⁇ 4 sub-blocks blk 1 and blk 3 is satisfied, which means that the sub-block MVP of the sub-block blk 3 should be the same as the sub-block MVP of the sub-block blk 1 .
- the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within the 8 ⁇ 8 block.
- two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4 ⁇ 4 sub-blocks blk 1 and blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 16 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for all 4 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other and the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for all sub-blocks blk 0 -blk 3 is satisfied, which means that the sub-block MVPs of the sub-blocks blk 0 -blk 3 should be the same.
- the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the sub-block blk 3 within the 8 ⁇ 8 block.
- four iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4 ⁇ 4 sub-blocks blk 0 -blk 3 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 17 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 4 sub-block according to an embodiment of the present invention.
- the MI unit size is 8 ⁇ 4.
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other, the condition of the first lemma for the 4 ⁇ 4 sub-blocks blk 2 and blk 3 within the 8 ⁇ 4 sub-block BLK 1 is satisfied, which means that the sub-block MVP of the sub-block blk 2 should be the same as the sub-block MVP of the sub-block blk 3 .
- the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within the 8 ⁇ 8 block.
- the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 is set by the sub-block MVP of the 4 ⁇ 4 sub-block blk 2 within the 8 ⁇ 4 sub-block BLK 1 .
- one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 18 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 4 ⁇ 8 sub-block according to an embodiment of the present invention.
- the MI unit size is 4 ⁇ 8.
- the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within the 8 ⁇ 8 block.
- the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′ is set by the sub-block MVP of the 4 ⁇ 4 sub-block blk 1 within the 4 ⁇ 8 sub-block BLK 1 ′.
- one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′ can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 19 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 8 ⁇ 4 block and the condition of the first lemma is satisfied for two 8 ⁇ 4 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the MI unit size is 8 ⁇ 4.
- the condition of the first lemma for the 8 ⁇ 4 sub-blocks BLK 0 and BLK 1 is satisfied, which means that the sub-block MVP of the 8 ⁇ 4 sub-block BLK 1 (i.e., the sub-block MVP of the 4 ⁇ 4 sub-block blk 2 ) should be the same as the sub-block MVP of the 8 ⁇ 4 sub-block BLK 0 (i.e., the sub-block MVP of the 4 ⁇ 4 sub-block blk 0 ).
- the checking circuit 124 determines that the motion vector data top 0 and the motion vector data top 1 are identical to each other, the condition of the first lemma for the 4 ⁇ 4 sub-blocks blk 2 and blk 3 within the same 8 ⁇ 4 sub-block BLK 1 is satisfied, which means that the sub-block MVP of the sub-block blk 2 should be the same as the sub-block MVP of the sub-block blk 3 . Further, when the second lemma is employed, the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within the 8 ⁇ 8 block. Hence, two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 8 ⁇ 4 sub-blocks BLK 0 and BLK 1 can be skipped or early terminated to reduce the computation load as well as the computation time.
- FIG. 20 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4 ⁇ 4 sub-blocks within the same 4 ⁇ 8 block and the condition of the first lemma is satisfied for two 4 ⁇ 8 sub-blocks within the same 8 ⁇ 8 block according to an embodiment of the present invention.
- the MI unit size is 4 ⁇ 8.
- the condition of the first lemma for the 4 ⁇ 8 sub-blocks BLK 0 ′ and BLK 1 ′ is satisfied, which means that the sub-block MVP of the 4 ⁇ 8 sub-block BLK 1 ′ (i.e., the sub-block MVP of the 4 ⁇ 4 sub-block blk 1 ) should be the same as the sub-block MVP of the 4 ⁇ 8 sub-block BLK 0 ′ (i.e., the sub-block MVP of the 4 ⁇ 4 sub-block blk 0 ).
- the checking circuit 124 determines that the motion vector data left 0 and the motion vector data left 1 are identical to each other, the condition of the first lemma for the 4 ⁇ 4 sub-blocks blk 1 and blk 3 within the same 4 ⁇ 8 sub-block BLK 1 ′ is satisfied, which means that the sub-block MVP of the sub-block blk 1 should be the same as the sub-block MVP of the sub-block blk 3 . Further, when the second lemma is employed, the best MVP of an 8 ⁇ 8 block should be the same as the sub-block MVP of the 4 ⁇ 4 sub-block blk 3 within the 8 ⁇ 8 block.
- two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4 ⁇ 8 sub-blocks BLK 0 ′ and BLK 1 ′ can be skipped or early terminated to reduce the computation load as well as the computation time.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
An exemplary motion vector predictor determination method includes the following steps: determining a motion vector predictor of a block according to motion vector data of neighbor units associated with the block; and utilizing a motion vector predictor computing circuit for assigning the motion vector predictor determined for the block to a first sub-block within the block. In addition, an exemplary motion vector predictor determination apparatus employing the exemplary motion vector predictor determination method is provided.
Description
- This divisional application claims the benefit of U.S. patent application Ser. No. 14/753,004 filed Jun. 28, 2015, which claims the benefit of U.S. provisional application No. 62/026,084 filed Jul. 18, 2014. The entire contents of U.S. patent application Ser. No. 14/753,004 and U.S. provisional application No. 62/026,084 are incorporated herein by reference.
- The disclosed embodiments of the present invention relate to video frame processing, and more particularly, to a method and apparatus for assigning a motion vector predictor to a sub-block within a block (e.g., a 4×4 sub-block, a 8×4 sub-block or a 4×8 sub-block within an 8×8 block) without performing an associated iteration of a sub-block motion vector predictor determination flow.
- The conventional video coding standards generally adopt a block based coding technique to exploit spatial and temporal redundancy. For example, the basic approach is to divide the whole source frame into a plurality of blocks, perform prediction on each block, transform residues of each block using discrete cosine transform, and perform quantization and entropy encoding. Besides, a reconstructed frame is generated in a coding loop to provide reference pixel data used for coding following blocks. For certain video coding standards, in-loop filter(s) may be used for enhancing the image quality of the reconstructed frame.
- Motion vectors are used by motion compensation to reconstruct the inter-frames. With regard to a video decoder, a motion vector (MV) of a current block may be derived from a motion vector predictor (MVP) and a motion vector difference (MVD). For example, the computation of the motion vector may be expressed using the following equation:
-
MV=MVP+MVD, - where the MVP of the current block may be determined from motion vector data of neighbor reconstructed blocks, and the MVD may be decoded from a bitstream by a variable length decoder (VLD).
- The performance of the motion vector computation depends on the computation of the motion vector predictor. Consider a case where a small-sized block is further sub-divided into a plurality of sub-blocks, it may require extra time to find a motion vector predictor for each of the sub-blocks within the same block. This may induce considerable timing overhead if an inter-frame is composed of a large number of sub-blocks. Thus, there is a need for an innovative design which is capable of effectively improving the speed of the MVP determination.
- In accordance with exemplary embodiments of the present invention, a method and apparatus for assigning a motion vector predictor to a sub-block within a block (e.g., a 4×4 sub-block, a 8×4 sub-block or a 4×8 sub-block within an 8×8 block) without performing an associated iteration of a sub-block motion vector predictor determination flow are proposed to solve the above-mentioned problem.
- According to a first aspect of the present invention, an exemplary motion vector predictor determination method is disclosed. The exemplary motion vector predictor determination method includes: determining a motion vector predictor of a block according to motion vector data of neighbor units associated with the block; and assigning the motion vector predictor determined for the block to a first sub-block within the block.
- According to a second aspect of the present invention, an exemplary motion vector predictor determination apparatus is disclosed. The exemplary motion vector predictor determination apparatus includes a motion vector predictor computing circuit. The motion vector predictor computing circuit is arranged to determine a motion vector predictor of a block according to motion vector data of neighbor units associated with the block, and assign the motion vector predictor determined for the block to a first sub-block within the block.
- These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
-
FIG. 1 is a diagram of a video decoder according to an embodiment of the present invention. -
FIG. 2 is a diagram illustrating recursive partitioning of a superblock into various sizes of mode information units. -
FIG. 3 is a diagram illustrating an example of two VP9 MI units with the same size and same reference frame. -
FIG. 4 is a diagram illustrating an 8×8 block sub-divided into four 4×4 sub-blocks according to an embodiment of the present invention. -
FIG. 5 is a diagram illustrating a first case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 6 is a diagram illustrating a second case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 7 is a diagram illustrating a third case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 8 is a diagram illustrating a fourth case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 9 is a diagram illustrating a fifth case where the condition of the first lemma is satisfied for all 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 10 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 8×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 11 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 4×8 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 12 is a diagram illustrating the best MVP determination performed for blocks with different MI unit sizes not smaller than 8×8. -
FIG. 13 is diagram illustrating a case where the second lemma is employed when the MI unit size is smaller than 8×8 according to embodiments of the present invention. -
FIG. 14 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 15 is a diagram illustrating another case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 16 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for all 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 17 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×4 sub-block according to an embodiment of the present invention. -
FIG. 18 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 4×8 sub-block according to an embodiment of the present invention. -
FIG. 19 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×4 block and the condition of the first lemma is satisfied for two 8×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. -
FIG. 20 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 4×8 block and the condition of the first lemma is satisfied for two 4×8 sub-blocks within the same 8×8 block according to an embodiment of the present invention. - Certain terms are used throughout the description and following claims to refer to particular components. As one skilled in the art will appreciate, manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following description and in the claims, the terms “include” and “comprise” are used in an open-ended fashion, and thus should be interpreted to mean “include, but not limited to . . . ”. Also, the term “couple” is intended to mean either an indirect or direct electrical connection. Accordingly, if one device is coupled to another device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
-
FIG. 1 is a diagram of a video decoder according to an embodiment of the present invention. Thevideo decoder 100 may be part of an electronic device, such as a personal computer (e.g., a laptop computer or a desktop computer), a mobile phone, a tablet, or a wearable device. Thevideo decoder 100 is arranged for decoding a bitstream BS to generate a video sequence composed of a plurality of consecutive decoded pictures (i.e., reconstructed pictures). At least a portion (i.e., part or all) of thevideo decoder 100 may be implemented in an integrated circuit (IC). To put it simply, any electronic device or electronic system using the proposedvideo decoder 100 falls within the scope of the present invention. - As shown in
FIG. 1 , thevideo decoder 100 includes an entropy decoder (e.g., a variable-length decoder (VLD) 102), an inverse scan circuit (denoted as “IS”) 104, an inverse quantization circuit (denoted as “IQ”) 106, an inverse transform circuit (denoted as “IT”) 108, areconstruct circuit 110, at least one in-loop filter (e.g., a de-blocking filter (DF) 112), areference picture buffer 114, an intra prediction circuit (denoted as “IP”) 116, a motion vector (MV)calculation circuit 118, a motion compensation circuit (denoted as “MC”) 120, and an intra/inter selection circuit 122. Thereference picture buffer 114 may be an external storage device such as an off-chip dynamic random access memory (DRAM). In this embodiment, theMV calculation circuit 118 includes a motion vector predictor (MVP)determination apparatus 122 with an improved speed for the MVP determination. TheMVP determination apparatus 122 may include achecking circuit 124 and anMVP computing circuit 126. Further details of the proposedMVP determination apparatus 122 will be described later. - By way of example, but not limitation, the
video decoder 100 may be used to decode the incoming bitstream BS generated using a VP9 coding standard that is an open and royalty-free video coding standard being developed by Google®. However, this is for illustrative purposes only, and is not meant to be a limitation of the present invention. Any video decoder using the proposed video decoder structure, particularly the proposedMVP determination apparatus 122, falls within the scope of the present invention. - The
VLD 102 is arranged to apply entropy decoding to the incoming bitstream BS for generating intra/inter mode information (e.g., motion vector differences of inter prediction) and residues. The residues are transmitted to the reconstructcircuit 110 through being inverse scanned (which is performed at the inverse scan circuit 104), inverse quantized (which is performed at the inverse quantization circuit 106), and inverse transformed (which is performed at the inverse transform circuit 108). - The inter/
intra selection circuit 122 is used to decide a prediction mode of a current block to be decoded. For example, when the prediction mode of the current block is decided to be inter prediction, predicted pixels/samples generated from themotion compensation circuit 120 are output to the following decoding stage, such as a reconstructcircuit 110. For another example, when the prediction mode of the current block is decided to be intra prediction, predicted pixels/samples generated from theintra prediction circuit 116 are output to the following decoding stage, such as the reconstructcircuit 110. - The reconstruct
circuit 110 is arranged to combine a residue output of theinverse transform circuit 108 and a predicted pixel output of one ofintra prediction circuit 116 andmotion compensation circuit 120 to thereby generate reconstructed pixels/samples of each block of a picture (i.e., a reconstructed/decoded picture). Thede-blocking filter 112 is arranged to apply de-blocking filtering to the reconstructed picture generated from the reconstructcircuit 110, and then generate a de-blocked picture as a reference picture. The de-blocked reference picture is stored into thereference picture buffer 114, and may be referenced by themotion compensation circuit 118 to generate predicted pixels/samples. - VP9 divides one picture into 64×64-sized blocks that are called superblocks. Superblocks of the picture are processed in raster order: left to right, top to bottom. In addition, VP9 supports quad-tree based encoding. Hence, recursive partitioning may be employed to split each superblock into one or more partitions (e.g., smaller-sized blocks) for further processing.
FIG. 2 is a diagram illustrating recursive partitioning of one superblock into various sizes of mode information (MI) units. For example, one superblock with the block size of 64×64 may be split into one or more coding units (or called MI units), where the partitions supported by VP9 coding standard may include square partitions, such as a 64×64-sized block, a 32×32-sized block, a 16×16-sized block, a 8×8-sized block, a 4×4-sized block, and may further include non-square partitions, such as a 64×32-sized block, a 32×64-sized block, 32×16-sized block, a 16×32-sized block, . . . , a 4×8-sized block, a 8×4-sized block. Hence, the coding unit (MI unit) sizes may include 64×64, 32×32, 16×16, 8×8, 64×32, 32×64, 32×16, 16×32, . . . , 8×8, 4×8, 8×4, 4×4. Although “4×4” is the smallest partition, lots of information is stored at “8×8” granularity only. This causes blocks smaller than “8×8” to be handled as sort of a special case. - For any MI unit size, VP9 will perform a best MVP determination flow to find one best MVP. In a case where an MI unit size is not smaller than 8×8, the best MVP is directly referenced to determine an MV of a block with the MI unit size. In another case where an MI unit size is smaller than 8×8, an additional sub-block MVP determination flow will be performed to find one sub-block MVP for each sub-block within one 8×8 block, where the best MVP and the sub-block MVP of a sub-block with the MI unit size may be involved in determining an MV of the sub-block. For example, when the MI unit size is 4×4, one 8×8 block is composed of foursquare sub-blocks (i.e., 4×4 sub-blocks). Hence, 4 iterations of the sub-block MVP determination flow are required by a conventional design to determine sub-block MVPs of the four 4×4 sub-blocks, respectively. For another example, when the MI unit size is 4×8, one 8×8 block is composed of two non-square sub-blocks (i.e., 4×8 sub-blocks). Hence, 2 iterations of the sub-block MVP determination flow are required by the conventional design to determine sub-block MVPs of the two 4×8 sub-blocks, respectively. For yet another example, when the MI unit size is 8×4, one 8×8 block is composed of two non-square sub-blocks (i.e., 8×4 sub-blocks). Hence, 2 iterations of the sub-block MVP determination flow are required by the conventional design to determine sub-block MVPs of the two 8×4 sub-blocks, respectively. With regard to the conventional design, the numbers of iterations for finding MVPs in different MI unit sizes are listed in the following table.
-
TABLE 1 MI Unit Size Best MVP Sub-block MVP Total MI ≥ 8 × 8 1 0 1 MI = 4 × 8 1 2 3 MI = 8 × 4 1 2 3 MI = 4 × 4 1 4 5 - For MI unit size <8×8, VP9 requires extra time to find the sub-block MVPs compared to the condition of MI≥8×8. This might induce considerable timing overhead if an inter-frame is composed of a large number of MI units smaller than 8×8. The present invention therefore proposes using the
MVP determination apparatus 122 to efficiently reduce the number of iterations of the sub-block MVP determination flow. - In a first exemplary implementation, the
MVP determination apparatus 122 may be configured to reduce the number of iterations of the sub-block MVP determination flow according to a first lemma. In accordance with the first lemma, given two MI units mia, mib with the same size and the same reference frame, where the MI units mia, mib haven neighbor motion vector data nbai, nbbi and m MVPs mvpaj, mvpbj, respectively, mvpaj=mvpbj if nbai=nbbi. Note than 0≤i<n, 0≤j<m, where n and m depend on the specification in each decoding format. For example, n=8 and m=2 for VP9.FIG. 3 is a diagram illustrating an example of two VP9 MI units mia and mib with the same size and the same reference frame. The MI unit mia has 8 neighbor motion vector data nba0-nba7, and the MI unit mib also has 8 neighbor motion vector data nbb0-nbb7. The MVP result depends on the input MI unit and the neighbors of the MI unit. If the sizes of the MI units mia, mib are identical, the reference frames of the MI units mia, mib are identical (i.e., the neighbor motion vector data nba0-nba7 and nbb0-nbb7 are possessed by blocks in the same reference frame), and the neighbor motion vector data of the MI units mia, mib are identical (i.e., nbai=nbbi), then the MVP of the MI unit mia must be the same as that of the MI unit mib. - In accordance with the first lemma, the
MVP determination apparatus 122 may speed up the iterations of the sub-block determination flow by early termination or may directly skip one or more iterations of the sub-block determination flow, depending upon the actual design considerations. In the first exemplary implementation employing the first lemma, the checkingcircuit 124 is arranged to check if motion vector data of at least one first neighbor unit (e.g., 4×4 unit) adjacent to a block (e.g., 8×8 MI unit) and motion vector data of at least one second neighbor unit (e.g., 4×4 unit) adjacent to the block (e.g., 8×8 MI unit) are identical to each other; and the motion vectorpredictor computing circuit 126 is arranged to assign a motion vector predictor determined for a first sub-block within the block to a second sub-block within the block when thechecking circuit 124 determines that the motion vector data of the at least one first neighbor unit is identical to the motion vector data of the at least one second neighbor unit, where the motion vector data of the at least one first neighbor unit is involved in determining the motion vector predictor of the first sub-block, and the motion vector data of the at least one second neighbor unit is not involved in determining the motion vector predictor of the first sub-block. -
FIG. 4 is a diagram illustrating an 8×8 block sub-divided into four 4×4 sub-blocks according to an embodiment of the present invention. Since each of the sub-blocks blk0-blk3 within the same 8×8 block BKCUR has a size smaller than 8×8, a sub-block MVP determination flow will be performed. As shown inFIG. 4 , there are neighbor 8×8 blocks BK0-BK7 (which are reconstructed blocks). Since the minimum size of the sub-block is 4×4, the neighbor motion vector data is stored in a 4×4 neighbor unit. With regard to the 4×4 sub-block blk0, the associated sub-block MVP may be determined on the basis of the motion vector data top0 of theneighbor unit 401 in the neighbor block BK0, the motion vector data left0 of theneighbor unit 411 in the neighbor block BK1, the motion vector data nb2 of theneighbor unit 422 in the neighbor block BK2, the motion vector data nb3 of theneighbor unit 423 in the neighbor block BK3, the motion vector data nb4 of theneighbor unit 424 in the neighbor block BK4, the motion vector data nb5 of theneighbor unit 425 in the neighbor block BK5, the motion vector data nb6 of theneighbor unit 426 in the neighbor block BK6, and the motion vector data nb7 of theneighbor unit 427 in the neighbor block BK7. It should be noted that theneighbor units neighbor unit 401 is closest to the sub-block blk0 in the vertical direction, and theneighbor unit 411 is closest to the sub-block blk0 in the horizontal direction. - With regard to the 4×4 sub-block blk1, the associated sub-block MVP may be determined on the basis of the motion vector data top1 of the
neighbor unit 402 in the neighbor block BK0, the motion vector data left0 of theneighbor unit 411 in the neighbor block BK1, the motion vector data nb2 of theneighbor unit 422 in the neighbor block BK2, the motion vector data nb3 of theneighbor unit 423 in the neighbor block BK3, the motion vector data nb4 of theneighbor unit 424 in the neighbor block BK4, the motion vector data nb5 of theneighbor unit 425 in the neighbor block BK5, the motion vector data nb6 of theneighbor unit 426 in the neighbor block BK6, and the motion vector data nb7 of theneighbor unit 427 in the neighbor block BK7. It should be noted that theneighbor units neighbor unit 402 is closest to the sub-block blk1 in the vertical direction, and theneighbor unit 411 is closest to the sub-block blk1 in the horizontal direction. - With regard to the 4×4 sub-block blk2, the associated sub-block MVP may be determined on the basis of the motion vector data top0 of the
neighbor unit 401 in the neighbor block BK0, the motion vector data left1 of theneighbor unit 412 in the neighbor block BK1, the motion vector data nb2 of theneighbor unit 422 in the neighbor block BK2, the motion vector data nb3 of theneighbor unit 423 in the neighbor block BK3, the motion vector data nb4 of theneighbor unit 424 in the neighbor block BK4, the motion vector data nb5 of theneighbor unit 425 in the neighbor block BK5, the motion vector data nb6 of theneighbor unit 426 in the neighbor block BK6, and the motion vector data nb7 of theneighbor unit 427 in the neighbor block BK7. It should be noted that theneighbor units neighbor unit 401 is closest to the sub-block blk2 in the vertical direction, and theneighbor unit 412 is closest to the sub-block blk2 in the horizontal direction. - With regard to the 4×4 sub-block blk3, the associated sub-block MVP may be determined on the basis of the motion vector data top1 of the
neighbor unit 402 in the neighbor block BK0, the motion vector data left1 of theneighbor unit 412 in the neighbor block BK1, the motion vector data nb2 of theneighbor unit 422 in the neighbor block BK2, the motion vector data nb3 of theneighbor unit 423 in the neighbor block BK3, the motion vector data nb4 of theneighbor unit 424 in the neighbor block BK4, the motion vector data nb5 of theneighbor unit 425 in the neighbor block BK5, the motion vector data nb6 of theneighbor unit 426 in the neighbor block BK6, and the motion vector data nb7 of theneighbor unit 427 in the neighbor block BK7. It should be noted that theneighbor units neighbor unit 402 is closest to the sub-block blk2 in the vertical direction, and theneighbor unit 412 is closest to the sub-block blk2 in the horizontal direction. - As can be seen from
FIG. 4 , the sub-block MVP determination for each of the sub-blocks blk0-blk3 refers to the same motion vector data nb2-nb7. Hence, the checkingcircuit 124 may simply check the motion vector data top0 of theneighbor unit 401, the motion vector data top1 of theneighbor unit 402, the motion vector data left0 of theneighbor unit 411, and the motion vector data left1 of theneighbor unit 412, where theneighbor units neighbor units MVP computing circuit 126 may refer to a checking result generated from the checkingcircuit 124 to determine whether the condition of the first lemma is satisfied for certain sub-blocks within the same block BKCUR. If the condition of the first lemma is satisfied for certain sub-blocks within the same block BKCUR, one iteration of the sub-block MVP determination flow may be actually performed by theMVP computing circuit 126 to compute a sub-block MVP for one sub-block, and then the sub-block MVP determine for the sub-block may be directly assigned to other sub-block(s). -
FIG. 5 is a diagram illustrating a first case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. As mentioned above, the motion vector data top0 and the motion vector data left0 may be involved in determining the sub-block MVP of the sub-block blk0, and the motion vector data top1 and the same motion vector data left0 may be involved in determining the sub-block MVP of the sub-block blk1. It should be noted that the motion vector data top1 may not be involved in determining the sub-block MVP of the sub-block blk0, and the motion vector data top0 may not be involved in determining the sub-block MVP of the sub-block blk1. However, when thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the sub-blocks blk0 and blk1 is satisfied, which means that the sub-block MVP of the sub-block blk1 should be the same as the sub-block MVP of the sub-block blk0. - In one exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk0, and then assign the sub-block MVP determined for the sub-block blk0 to the sub-block blk1. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk1 can be skipped or early terminated to reduce the computation load as well as the computation time. - In another exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk1, and then assign the sub-block MVP determined for the sub-block blk1 to the sub-block blk0. Hence, another iteration of the sub-block MVP determination flow to compute the motion vector predictor of the sub-block blk0 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 6 is a diagram illustrating a second case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. As mentioned above, the motion vector data top0 and the motion vector data left1 may be involved in determining the sub-block MVP of the sub-block blk2, and the motion vector data top1 and the same motion vector data left1 may be involved in determining the sub-block MVP of the sub-block blk3. It should be noted that the motion vector data top1 may not be involved in determining the sub-block MVP of the sub-block blk2, and the motion vector data top1 may not be involved in determining the sub-block MVP of the sub-block blk2. However, when thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the sub-blocks blk2 and blk3 is satisfied, which means that the sub-block MVP of the sub-block blk3 should be the same as the sub-block MVP of the sub-block blk2. - In one exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk2, and then assign the sub-block MVP determined for the sub-block blk2 to the sub-block blk3. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. - In another exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk3, and then assign the sub-block MVP determined for the sub-block blk3 to the sub-block blk2. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk2 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 7 is a diagram illustrating a third case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. As mentioned above, the motion vector data top0 and the motion vector data left0 may be involved in determining the sub-block MVP of the sub-block blk0, and the motion vector data left1 and the same motion vector data top0 may be involved in determining the sub-block MVP of the sub-block blk2. It should be noted that the motion vector data left1 may not be involved in determining the sub-block MVP of the sub-block blk0, and the motion vector data left0 may not be involved in determining the sub-block MVP of the sub-block blk2. However, when thechecking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the sub-blocks blk0 and blk2 is satisfied, which means that the sub-block MVP of the sub-block blk2 should be the same as the sub-block MVP of the sub-block blk0. - In one exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk0, and then assign the sub-block MVP determined for the sub-block blk0 to the sub-block blk2. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk2 can be skipped or early terminated to reduce the computation load as well as the computation time. - In another exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk2, and then assign the sub-block MVP determined for the sub-block blk2 to the sub-block blk0. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk0 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 8 is a diagram illustrating a fourth case where the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. As mentioned above, the motion vector data top1 and the motion vector data left0 may be involved in determining the sub-block MVP of the sub-block blk1, and the motion vector data left1 and the same motion vector data top1 may be involved in determining the sub-block MVP of the sub-block blk3. It should be noted that the motion vector data left1 may not be involved in determining the sub-block MVP of the sub-block blk1, and the motion vector data left0 may not be involved in determining the sub-block MVP of the sub-block blk3. However, when thechecking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the sub-blocks blk1 and blk3 is satisfied, which means that the sub-block MVP of the sub-block blk3 should be the same as the sub-block MVP of the sub-block blk1. - In one exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk1, and then assign the sub-block MVP determined for the sub-block blk1 to the sub-block blk3. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. - In another exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk3, and then assign the sub-block MVP determined for the sub-block blk3 to the sub-block blk1. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the sub-block blk1 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 9 is a diagram illustrating a fifth case where the condition of the first lemma is satisfied for all 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. When thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other and the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for all sub-blocks blk0-blk3 is satisfied, which means that the sub-block MVPs of all sub-blocks blk0-blk3 should be the same. In one exemplary design, theMVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of a selected sub-block (e.g., blk0) among the sub-blocks blk0-blk3, and then assign the sub-block MVP determined for the selected sub-block (e.g., blk0) to each of the rest of the sub-blocks blk0-blk3. Hence, other iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the rest of the sub-block blk0-blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. - When the MI unit size is 8×4, one 8×8 block is composed of two 8×4 sub-blocks. Similarly, the checking
circuit 124 may check the motion vector data of neighbor units (which are 4×4 units), and theMVP computing circuit 126 may refer to a checking result generated from the checkingcircuit 124 to determine whether the condition of the first lemma is satisfied for two 8×4 sub-blocks within the same 8×8 block. If the condition of the first lemma is satisfied for two 8×4 sub-blocks within the same 8×8 block, one iteration of the sub-block MVP determination flow is actually performed by theMVP computing circuit 126 to compute a sub-block MVP for one 8×4 sub-block, and the sub-block MVP determined for one 8×4 sub-block is assigned to the other 8×4 sub-block. -
FIG. 10 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 8×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. Each of the 8×4 sub-blocks may be regarded as having two 4×4 sub-blocks. For example, the 8×4 sub-block BLK0 is composed of two 4×4 sub-blocks blk0 and blk1, and the 8×4 sub-block BLK1 is composed of two 4×4 sub-blocks blk2 and blk3. In addition, the sub-block MVP of the 8×4 sub-block BLK0 may be set by the sub-block MVP determined for the 4×4 sub-block blk0, and the sub-block MVP of the 8×4 sub-block BLK1 may be set by the sub-block MVP determined for the 4×4 sub-block blk2. Since the 4×4 sub-blocks blk0 and blk1 are within the same 8×4 sub-block BLK0, the sub-block MVP determined for the 4×4 sub-block blk0 (i.e., the sub-block MVP of the 8×4 sub-block BLK0) may also be used by the 4×4 sub-block blk1. Similarly, since the 4×4 sub-blocks blk2 and blk3 are within the same 8×4 sub-block BLK1, the sub-block MVP determined for the 4×4 sub-block blk2 (i.e., the sub-block MVP of the 8×4 sub-block BLK1) may also be used by the 4×4 sub-block blk3. - As mentioned above, the motion vector data top0 and the motion vector data left0 may be involved in determining the sub-block MV of the sub-block blk0, and the motion vector data left1 and the same motion vector data top0 may be involved in determining the sub-block MVP of the sub-block blk2. Hence, the motion vector data top0 and the motion vector data left0 may be involved in determining the sub-block MVP of the 8×4 sub-block BLK0, and the motion vector data left1 and the same motion vector data top0 may be involved in determining the sub-block MVP of the 8×4 sub-block BLK1. When the
checking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the 8×4 sub-blocks BLK0 and BLK1 is satisfied, which means that the sub-block MVP of the 8×4 sub-block BLK0 should be the same as the sub-block MVP of the 8×4 sub-block BLK1. - In one exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8×4 sub-block BLK0, and then assign the sub-block MVP determined for the 8×4 sub-block BLK0 to the 8×4 sub-block BLK1. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8×4 sub-block BLK1 can be skipped or early terminated to reduce the computation load as well as the computation time. - In another exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8×4 sub-block BLK1, and then assign the sub-block MVP determined for the 8×4 sub-block BLK1 to the 8×4 sub-block BLK0. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8×4 sub-block BLK0 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 11 is a diagram illustrating a case where the condition of the first lemma is satisfied for two 4×8 sub-blocks within the same 8×8 block according to an embodiment of the present invention. Each of the 4×8 sub-blocks may be regarded as having two 4×4 sub-blocks. For example, the 4×8 sub-block BLK0′ is composed of two 4×4 sub-blocks blk0 and blk2, and the 4×8 sub-block BLK1′ is composed of two 4×4 sub-blocks blk1 and blk3. In addition, the sub-block MVP of the 4×8 sub-block BLK0′ may be set by the sub-block MVP determined for the 4×4 sub-block blk0, and the sub-block MVP of the 4×8 sub-block BLK1′ may be set by the sub-block MVP determined for the 4×4 sub-block blk1. Since the 4×4 sub-blocks blk0 and blk2 are within the same 4×8 sub-block BLK0′, the sub-block MVP determined for the 4×4 sub-block blk0 (i.e., the sub-block MVP of the 8×4 sub-block BLK0′) may also be used by the 4×4 sub-block blk2. Similarly, since the 4×4 sub-blocks blk1 and blk3 are within the same 4×8 sub-block BLK1′, the sub-block MVP determined for the 4×4 sub-block blk1 (i.e., the sub-block MVP of the 4×8 sub-block BLK1′) may also be used by the 4×4 sub-block blk3. - As mentioned above, the motion vector data top0 and the motion vector data left0 may be involved in determining the sub-block MVP of the sub-block blk0, and the motion vector data top1 and the same motion vector data left0 may be involved in determining the sub-block MVP of the sub-block blk1. In other words, the motion vector data top0 and the motion vector data left0 may be involved in determining the sub-block MVP of the 4×8 sub-block BLK0′, and the motion vector data top1 and the same motion vector data left0 may be involved in determining the sub-block MVP of the 4×8 sub-block BLK1′. When the
checking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the 4×8 sub-blocks BLK0′ and BLK1′ is satisfied, which means that the sub-block MVP of the 4×8 sub-block BLK0′ should be the same as the sub-block MVP of the 4×8 sub-block BLK1′. - In one exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4×8 sub-block BLK0′, and then assign the sub-block MVP determined for the 4×8 sub-block BLK0′ to the 4×8 sub-block BLK1′. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4×8 sub-block BLK1′ can be skipped or early terminated to reduce the computation load as well as the computation time. - In another exemplary design, the
MVP computing circuit 126 may perform one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4×8 sub-block BLK1′, and then assign the sub-block MVP determined for the 4×8 sub-block BLK1′ to the 4×8 sub-block BLK0′. Hence, another iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4×8 sub-block BLK0′ can be skipped or early terminated to reduce the computation load as well as the computation time. - With regard to the aforementioned first exemplary implementation that employs the first lemma to efficiently improve the speed of the MVP determination, the numbers of iterations of sub-block MVP determination flow under different MI unit sizes and different cases are listed in the following table.
-
TABLE 2 Proposed Proposed Design Design Proposed (Case 1: (Case 2: Design top0 = top1 & left0 = left1 (Case 3: MI Unit Conventional left0 ≠ & top0 = top1 & Size design left1) top0 ≠ top1) left0 = left1) MI = 4 × 8 2 1 2 1 MI = 8 × 4 2 2 1 1 MI = 4 × 4 4 2 2 1 - In a second exemplary implementation, the
MVP determination apparatus 122 may be configured to reduce the number of iterations of the sub-block MVP determination flow according to a second lemma. In accordance with the second lemma, given one VP9 MI unit mi with an MI unit size <8×8, the best MVPs of the MI unit mi are mvpbesti and the sub-block MVPs of the MI unit mi are mvpblkji, the sub-block MVP mvpblk3i must be equivalent to the best MVP mvpbesti. Note that 0≤i<2 and 0≤j<4 for VP9. - When the MI unit size is not smaller than 8×8, a best MVP is determined for a block, where the best MVP is used to calculate an MV for the block with the MI unit size ≥8×8. When the MI unit size is smaller than 8×8, a best MVP is determined for each sub-block, and then at least one iteration of the sub-block MVP determination flow is performed to determine one sub-block MVP for each sub-block, where the best MVP and the sub-block MVP of each sub-block with the MI unit size <8×8 are used to calculate an MV for each sub-block. Since the minimum size of a sub-block is 4×4, the neighbors are stored in 4×4 units. However, the minimum MI unit size for the best MVP determination is 8×8.
FIG. 12 is a diagram illustrating the best MVP determination performed for blocks with different MI unit sizes not smaller than 8×8. As shown in sub-diagram (A) ofFIG. 12 , the MI unit size is 16×8. The best MVP determination takes the 4×4 sub-block blk3 as a base, and refers to motion vector data of 4×4 neighbor units, including the motion vector data top1 of one top 4×4 neighbor unit (which is adjacent to the 16×8 block and closest to the 4×4 sub-block blk3 in the vertical direction) and the motion vector data left1 of one left 4×4 neighbor unit (which is adjacent to the 16×8 block and closest to the 4×4 sub-block blk3 in the horizontal direction). As shown in sub-diagram (B) ofFIG. 12 , the MI unit size is 8×8. Similarly, the best MVP determination takes the 4×4 sub-block blk3 as a base, and refers to motion vector data of 4×4 neighbor units, including the motion vector data top1 of one top 4×4 neighbor unit (which is adjacent to the 8×8 block and closest to the 4×4 sub-block blk3 in the vertical direction) and the motion vector data left1 of one left 4×4 neighbor unit (which is adjacent to the 8×8 block and closest to the 4×4 sub-block blk3 in the horizontal direction). - However, when the MI unit size is smaller than 8×8, the best MVPs for all sub-blocks within the same 8×8 block are the same. Specifically, the best MVP determined for an 8×8 block (which has the minimum MI unit size for the best MVP determination) can be used as the best MVP for each of the sub-blocks (e.g., four 4×4 sub-blocks, or two 4×8 sub-blocks, or two 8×4 sub-blocks) within the same 8×8 block. It should be noted that the best MVP of one 8×8 block (e.g., BKCUR shown in
FIG. 4 ) may be determined on the basis of the motion vector data top1 of theneighbor unit 402 in the neighbor block the motion vector data left1 of theneighbor unit 412 in the neighbor block BK1, the motion vector data nb2 of theneighbor unit 422 in the neighbor block BK2, the motion vector data nb3 of theneighbor unit 423 in the neighbor block BK3, the motion vector data nb4 of theneighbor unit 424 in the neighbor block BK4, the motion vector data nb5 of theneighbor unit 425 in the neighbor block BK5, the motion vector data nb6 of theneighbor unit 426 in the neighbor block BK6, and the motion vector data nb7 of theneighbor unit 427 in the neighbor block BK7. Hence, the best MVP determined for one 8×8 block is the same as the sub-block MVP determined for the 4×4 sub-block blk3 within this 8×8 block. With regard to the second exemplary implementation employing the second lemma, theMVP determination apparatus 122 may assign the best MVP determined for one 8×8 block to one 4×4 sub-block (e.g., blk3) within the 8×8 block. -
FIG. 13 is diagram illustrating a case where the second lemma is employed when the MI unit size is smaller than 8×8 according to embodiments of the present invention. In this example, the MI unit size is 4×4, and the sub-block MVP of the 4×4 sub-block blk3 within an 8×8 block can be directly set by the best MVP determined for the 8×8 block. Hence, an iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4×4 sub-block blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. - With regard to the second exemplary implementation that employs the second lemma to efficiently improve the speed of the MVP determination, the numbers of iterations of sub-block MVP determination flow under different MI unit sizes are listed in the following table.
-
TABLE 3 MI Unit Conventional Proposed Size design Design MI = 4 × 8 2 2 MI = 8 × 4 2 2 MI = 4 × 4 4 3 - It should be noted that the first lemma and the second lemma can be exploited simultaneously to reduce the number of iterations of sub-block MVP determination flow in a more efficient manner. This also falls within the scope of the present invention.
-
FIG. 14 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. When thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the 4×4 sub-blocks blk2 and blk3 is satisfied, which means that the sub-block MVP of the sub-block blk2 should be the same as the sub-block MVP of the sub-block blk3. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the 4×4 sub-block blk3 within the 8×8 block. Hence, two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4×4 sub-blocks blk2 and blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 15 is a diagram illustrating another case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. When thechecking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the 4×4 sub-blocks blk1 and blk3 is satisfied, which means that the sub-block MVP of the sub-block blk3 should be the same as the sub-block MVP of the sub-block blk1. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the 4×4 sub-block blk3 within the 8×8 block. Hence, two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4×4 sub-blocks blk1 and blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 16 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for all 4×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. When thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other and the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for all sub-blocks blk0-blk3 is satisfied, which means that the sub-block MVPs of the sub-blocks blk0-blk3 should be the same. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the sub-block blk3 within the 8×8 block. Hence, four iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4×4 sub-blocks blk0-blk3 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 17 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×4 sub-block according to an embodiment of the present invention. In this example, the MI unit size is 8×4. When thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the 4×4 sub-blocks blk2 and blk3 within the 8×4 sub-block BLK1 is satisfied, which means that the sub-block MVP of the sub-block blk2 should be the same as the sub-block MVP of the sub-block blk3. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the 4×4 sub-block blk3 within the 8×8 block. It should be noted that the sub-block MVP of the 8×4 sub-block BLK1 is set by the sub-block MVP of the 4×4 sub-block blk2 within the 8×4 sub-block BLK1. Hence, one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 8×4 sub-block BLK1 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 18 is a diagram illustrating a case where the second lemma is employed and the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 4×8 sub-block according to an embodiment of the present invention. In this example, the MI unit size is 4×8. When thechecking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the 4×4 sub-blocks blk1 and blk3 within the same 4×8 sub-block BLK1′ is satisfied, which means that the sub-block MVP of the sub-block blk1 should be the same as the sub-block MVP of the sub-block blk3. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the 4×4 sub-block blk3 within the 8×8 block. It should be noted that the sub-block MVP of the 4×8 sub-block BLK1′ is set by the sub-block MVP of the 4×4 sub-block blk1 within the 4×8 sub-block BLK1′. Hence, one iteration of the sub-block MVP determination flow to compute the sub-block MVP of the 4×8 sub-block BLK1′ can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 19 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 8×4 block and the condition of the first lemma is satisfied for two 8×4 sub-blocks within the same 8×8 block according to an embodiment of the present invention. In this example, the MI unit size is 8×4. When thechecking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the 8×4 sub-blocks BLK0 and BLK1 is satisfied, which means that the sub-block MVP of the 8×4 sub-block BLK1 (i.e., the sub-block MVP of the 4×4 sub-block blk2) should be the same as the sub-block MVP of the 8×4 sub-block BLK0 (i.e., the sub-block MVP of the 4×4 sub-block blk0). When thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the 4×4 sub-blocks blk2 and blk3 within the same 8×4 sub-block BLK1 is satisfied, which means that the sub-block MVP of the sub-block blk2 should be the same as the sub-block MVP of the sub-block blk3. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the 4×4 sub-block blk3 within the 8×8 block. Hence, two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 8×4 sub-blocks BLK0 and BLK1 can be skipped or early terminated to reduce the computation load as well as the computation time. -
FIG. 20 is a diagram illustrating a case where the second lemma is employed, the condition of the first lemma is satisfied for two 4×4 sub-blocks within the same 4×8 block and the condition of the first lemma is satisfied for two 4×8 sub-blocks within the same 8×8 block according to an embodiment of the present invention. In this example, the MI unit size is 4×8. When thechecking circuit 124 determines that the motion vector data top0 and the motion vector data top1 are identical to each other, the condition of the first lemma for the 4×8 sub-blocks BLK0′ and BLK1′ is satisfied, which means that the sub-block MVP of the 4×8 sub-block BLK1′ (i.e., the sub-block MVP of the 4×4 sub-block blk1) should be the same as the sub-block MVP of the 4×8 sub-block BLK0′ (i.e., the sub-block MVP of the 4×4 sub-block blk0). When thechecking circuit 124 determines that the motion vector data left0 and the motion vector data left1 are identical to each other, the condition of the first lemma for the 4×4 sub-blocks blk1 and blk3 within the same 4×8 sub-block BLK1′ is satisfied, which means that the sub-block MVP of the sub-block blk1 should be the same as the sub-block MVP of the sub-block blk3. Further, when the second lemma is employed, the best MVP of an 8×8 block should be the same as the sub-block MVP of the 4×4 sub-block blk3 within the 8×8 block. Hence, two iterations of the sub-block MVP determination flow to compute the sub-block MVPs of the 4×8 sub-blocks BLK0′ and BLK1′ can be skipped or early terminated to reduce the computation load as well as the computation time. - With regard to a third exemplary implementation that employs both of the first lemma and the second lemma to more efficiently improve the speed of the MVP determination, the numbers of iterations of sub-block MVP determination flow under different MI unit sizes and different cases are listed in the following table.
-
TABLE 4 Proposed Proposed Design Design Proposed (Case 1: (Case 2: Design top0 = top1 & left0 = left1 (Case 3: MI Unit Conventional 1eft0 ≠ & top0 = top1 & Size design left1) top0 ≠ top1) left0 = left1) MI = 4 × 8 2 1 1 0 MI = 8 × 4 2 1 1 0 MI = 4 × 4 4 1 1 0 - Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.
Claims (12)
1. A motion vector predictor determination method comprising:
determining a motion vector predictor of a block according to motion vector data of neighbor units associated with the block; and
utilizing a motion vector predictor computing circuit for assigning the motion vector predictor determined for the block to a first sub-block within the block.
2. The method of claim 1 , wherein the neighbor units comprise at least one first neighbor unit adjacent to the block and at least one second neighbor unit adjacent to the block; and the method further comprises:
checking if motion vector data of the at least one first neighbor unit and motion vector data of the at least one second neighbor unit are identical to each other; and
when a checking result indicates that the motion vector data of the at least one first neighbor unit is identical to the motion vector data of the at least one second neighbor unit, assigning the motion vector predictor determined for the block to a second sub-block within the block;
wherein the motion vector data of the at least first neighbor unit is involved in determining the motion vector predictor of the block, and the motion vector data of the at least one second neighbor unit is not involved in determining the motion vector predictor of the block.
3. The method of claim 2 , wherein one of the at least one first neighbor unit and one of the at least one second neighbor unit are on a same side of the block.
4. The method of claim 3 , wherein the same side is a top side of the block.
5. The method of claim 3 , wherein the same side is a left side of the block.
6. The method of claim 2 , wherein the first sub-block and the second sub-block have a same size; and the at least one first neighbor unit and the at least one second neighbor unit are in a same frame.
7. The method of claim 6 , wherein the at least one first neighbor unit and the at least one second neighbor unit have a same size; and a size of each of the first sub-block and the second sub-block is equal to a size of each of the at least one first neighbor unit and the at least one second neighbor unit.
8. The method of claim 7 , wherein each of the first sub-block, the second sub-block, the at least one first neighbor unit and the at least one second neighbor unit is square.
9. The method of claim 6 , wherein the at least one first neighbor unit and the at least one second neighbor unit have a same size; and a size of each of the first sub-block and the second sub-block is larger than a size of each of the at least one first neighbor unit and the at least one second neighbor unit.
10. The method of claim 9 , wherein each of the first sub-block and the second sub-block is non-square, and each of the at least one first neighbor unit and the at least one second neighbor unit is square.
11. A motion vector predictor determination apparatus comprising:
a motion vector predictor computing circuit, arranged to determine a motion vector predictor of a block according to motion vector data of neighbor units associated with the block, and assign the motion vector predictor determined for the block to a first sub-block within the block.
12. The apparatus of claim 11 , wherein the neighbor units comprise at least one first neighbor unit adjacent to the block and at least one second neighbor unit adjacent to the block; and the apparatus further comprises:
a checking circuit, arranged to check if motion vector data of the at least one first neighbor unit and motion vector data of the at least one second neighbor unit are identical to each other;
wherein the motion vector predictor computing circuit is further arranged to assign the motion vector predictor determined for the block to a second sub-block within the block when the checking circuit determines that the motion vector data of the at least one first neighbor unit is identical to the motion vector data of the at least one second neighbor unit, where the motion vector data of the at least first neighbor unit is involved in determining the motion vector predictor of the block, and the motion vector data of the at least one second neighbor unit is not involved in determining the motion vector predictor of the block.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/860,688 US20180124427A1 (en) | 2014-07-18 | 2018-01-03 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462026084P | 2014-07-18 | 2014-07-18 | |
US14/753,004 US9894382B2 (en) | 2014-07-18 | 2015-06-28 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
US15/860,688 US20180124427A1 (en) | 2014-07-18 | 2018-01-03 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/753,004 Division US9894382B2 (en) | 2014-07-18 | 2015-06-28 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
Publications (1)
Publication Number | Publication Date |
---|---|
US20180124427A1 true US20180124427A1 (en) | 2018-05-03 |
Family
ID=55075699
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/753,004 Expired - Fee Related US9894382B2 (en) | 2014-07-18 | 2015-06-28 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
US15/860,688 Abandoned US20180124427A1 (en) | 2014-07-18 | 2018-01-03 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/753,004 Expired - Fee Related US9894382B2 (en) | 2014-07-18 | 2015-06-28 | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow |
Country Status (2)
Country | Link |
---|---|
US (2) | US9894382B2 (en) |
WO (1) | WO2016008423A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11528504B2 (en) * | 2019-07-11 | 2022-12-13 | Qualcomm Incorporated | Motion vector prediction with motion information collecting buffer |
JP7382477B1 (en) * | 2022-11-02 | 2023-11-16 | 楽天グループ株式会社 | Product page transmission device, product page transmission method, and product page transmission program |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120183070A1 (en) * | 2009-06-23 | 2012-07-19 | France Telecom | Method of coding and decoding images, corresponding device for coding and decoding and computer program |
US20130070857A1 (en) * | 2010-06-09 | 2013-03-21 | Kenji Kondo | Image decoding device, image encoding device and method thereof, and program |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306821C (en) | 2004-07-30 | 2007-03-21 | 联合信源数字音视频技术(北京)有限公司 | Method and its device for forming moving vector prediction in video image |
CN101072356B (en) | 2006-05-12 | 2011-02-09 | 中国科学院计算技术研究所 | A Motion Vector Prediction Method |
WO2011077632A1 (en) | 2009-12-22 | 2011-06-30 | Jvc・ケンウッド・ホールディングス株式会社 | Image encoding device, image encoding method, image encoding program, image decoding device, image decoding method, and image decoding program |
WO2012090397A1 (en) | 2010-12-28 | 2012-07-05 | 株式会社Jvcケンウッド | Video encoding device, video encoding method, and video encoding program, and video decoding device, video decoding method, and video decoding program |
-
2015
- 2015-06-28 US US14/753,004 patent/US9894382B2/en not_active Expired - Fee Related
- 2015-07-16 WO PCT/CN2015/084190 patent/WO2016008423A1/en active Application Filing
-
2018
- 2018-01-03 US US15/860,688 patent/US20180124427A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120183070A1 (en) * | 2009-06-23 | 2012-07-19 | France Telecom | Method of coding and decoding images, corresponding device for coding and decoding and computer program |
US20130070857A1 (en) * | 2010-06-09 | 2013-03-21 | Kenji Kondo | Image decoding device, image encoding device and method thereof, and program |
Also Published As
Publication number | Publication date |
---|---|
WO2016008423A1 (en) | 2016-01-21 |
US20160021387A1 (en) | 2016-01-21 |
US9894382B2 (en) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7299221B2 (en) | Method and apparatus for video encoding and decoding based on linear model according to neighboring samples | |
US10104397B2 (en) | Video processing apparatus for storing partial reconstructed pixel data in storage device for use in intra prediction and related video processing method | |
US9986247B2 (en) | Method and apparatus for line buffer reduction for video processing | |
US8559514B2 (en) | Efficient fetching for motion compensation video decoding process | |
US20180249175A1 (en) | Method and apparatus for motion vector predictor derivation | |
US11381838B2 (en) | Method and apparatus of improved merge with motion vector difference for video coding | |
US10681347B2 (en) | Method and apparatus of filtering image in image coding system | |
US20180091825A1 (en) | Interpolation filters for intra prediction in video coding | |
US20180035123A1 (en) | Encoding and Decoding of Inter Pictures in a Video | |
KR20210099008A (en) | Method and apparatus for deblocking an image | |
US20140177726A1 (en) | Video decoding apparatus, video decoding method, and integrated circuit | |
KR20200108084A (en) | Image coding method and apparatus based on afine motion prediction | |
US10659794B2 (en) | Apparatus and method for palette decoding | |
CN114208178A (en) | Secondary Transforms for Video Encoding and Decoding | |
US10171838B2 (en) | Method and apparatus for packing tile in frame through loading encoding-related information of another tile above the tile from storage device | |
US11166029B2 (en) | Video encoding apparatus having reconstruction buffer with fixed size and/or bandwidth limitation and associated video encoding method | |
KR102327318B1 (en) | Method and apparatus for video coding/decoding using intra prediction | |
US20180124427A1 (en) | Method and apparatus for assigning motion vector predictor to sub-block without performing associated iteration of sub-block motion vector predictor determination flow | |
US20160029022A1 (en) | Video processing apparatus with adaptive coding unit splitting/merging and related video processing method | |
US20140105306A1 (en) | Image processing apparatus and image processing method | |
US11025911B2 (en) | Encoding method, decoding method, encoding device, and decoding device | |
US10075722B1 (en) | Multi-core video decoder system having at least one shared storage space accessed by different video decoder cores and related video decoding method | |
US10951900B2 (en) | Speeding up small block intra-prediction in video coding | |
KR20220061137A (en) | Propagation of coding mode information for video coding | |
JP2022537173A (en) | Method and device for picture encoding and decoding using position-dependent intra-prediction combination |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: XUESHAN TECHNOLOGIES INC., CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MEDIATEK INC.;REEL/FRAME:056593/0167 Effective date: 20201223 |