CN111757108B - Integrated circuit and method for recursively dividing decoding blocks - Google Patents

Integrated circuit and method for recursively dividing decoding blocks Download PDF

Info

Publication number
CN111757108B
CN111757108B CN202010626373.5A CN202010626373A CN111757108B CN 111757108 B CN111757108 B CN 111757108B CN 202010626373 A CN202010626373 A CN 202010626373A CN 111757108 B CN111757108 B CN 111757108B
Authority
CN
China
Prior art keywords
block
current
sub
video decoder
stack memory
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.)
Active
Application number
CN202010626373.5A
Other languages
Chinese (zh)
Other versions
CN111757108A (en
Inventor
刘硕硕
王伟
陈瑞阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Glenfly Tech Co Ltd
Original Assignee
Glenfly Tech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Glenfly Tech Co Ltd filed Critical Glenfly Tech Co Ltd
Priority to CN202010626373.5A priority Critical patent/CN111757108B/en
Publication of CN111757108A publication Critical patent/CN111757108A/en
Application granted granted Critical
Publication of CN111757108B publication Critical patent/CN111757108B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Abstract

The invention provides an integrated circuit and a method for recursively dividing decoding blocks, wherein the integrated circuit comprises: a stack memory; and a video decoder for video decoding a video stream. The video decoder obtains a super block from the video stream, and equally divides the super block into a first block, a second block, a third block and a fourth block in the horizontal direction and the vertical direction. The video decoder selects the first block as a current block to perform a block recursive partitioning process, and sequentially writes the fourth block, the third block and the second block into the stack memory. In response to the end of the block recursive partitioning of the current block, the video decoder fetches the uppermost block from the stack memory as the current block and performs the block recursive partitioning on the current block.

Description

Integrated circuit and method for recursively dividing decoding blocks
Technical Field
The present invention relates to video decoding, and more particularly, to an integrated circuit and a method for recursively partitioning (iterative partitioning) a decoding block.
Background
In today's more advanced video codec standards (e.g., AV1, HEVC, VP 9), an image frame may be divided into super blocks (superblocks), and the maximum size of a superblock is 128x128 pixels. When video decoding is performed using the AV1 standard, a super block (also referred to as a decoding block) needs to be recursively divided into a plurality of Coding Units (CUs). However, the conventional video decoder cannot efficiently divide the super block into a plurality of coding units, thereby reducing decoding performance.
Disclosure of Invention
The present invention provides an integrated circuit and a method for recursively partitioning decoding blocks to solve the above-mentioned problems.
The present invention provides an integrated circuit comprising: a stack memory; and a video decoder for video decoding a video stream; the video decoder obtains a super block from the video stream, wherein the super block has a first size in both horizontal and vertical directions, and the video decoder equally divides the super block into a first block, a second block, a third block and a fourth block in both horizontal and vertical directions. The video decoder selects the first block as a current block to perform a block recursive partitioning process, and sequentially writes the fourth block, the third block, and the second block into the stack memory. In response to the end of the block recursive partitioning process for the current block, the video decoder fetches a next block from the stack memory as the current block and performs the block recursive partitioning process on the current block. The video decoder also determines whether the current block is the fourth block. When the current block is the fourth block, the video decoder ends the decoding stage of the super block. When the current block is not the fourth block, the video decoder fetches a next block from the stack memory as the current block and performs the block recursive partitioning on the current block.
In some embodiments, the Video stream supports the Video codec standards of the open media alliance (AOMedia) Video1 (AV 1), high Efficiency Video Coding (HEVC), and VP 9.
In some embodiments, in the block recursive partitioning process of the current block, the video decoder further determines whether the current block needs to be partitioned, wherein when the video decoder determines that the current block needs to be partitioned, the video decoder equally partitions the current block into a first sub-block, a second sub-block, a third sub-block and a fourth sub-block in a horizontal direction and a vertical direction, and sequentially writes the fourth sub-block, the third sub-block and the second sub-block to the stack memory, wherein when the video decoder determines that the current block does not need to be partitioned, the video decoder decodes the current block.
In some embodiments, the video decoder further sets the first sub-block as a current sub-block and determines whether the current sub-block needs to be divided, wherein when the video decoder determines that the current sub-block needs to be divided, the video decoder repeats a block-recursive division process on the current sub-block until a size of the current sub-block is equal to a predetermined size. When the video decoder determines that the current sub-block does not need to be divided, the video decoder decodes the current sub-block.
In some embodiments, wherein in the block recursive partitioning process of the current subblock, in response to the end of decoding of the current subblock, the video decoder fetches a next subblock from the stack memory as the current subblock and performs the block recursive partitioning process on the current subblock.
In some embodiments, wherein in the block recursive partitioning process of the current sub-block, in response to the block recursive partitioning process of the current sub-block ending, the video decoder determines whether the current sub-block is the fourth sub-block. When the video decoder determines that the current sub-block is the fourth sub-block, the video decoder decodes the current sub-block. When the video decoder determines that the current sub-block is not the fourth sub-block, the video decoder fetches a next sub-block from the stack memory as the current sub-block and performs the block recursive partitioning on the current sub-block.
In some embodiments, the predetermined size is a size of a minimum coding unit (coding unit).
The present invention also provides a method for recursively partitioning a decoding block, for use in an integrated circuit including a stack memory, the method comprising: performing video decoding on a video stream; obtaining a super block from the video stream, wherein the super block has a first size in both horizontal and vertical directions; equally dividing the super block into a first block, a second block, a third block and a fourth block in the horizontal direction and the vertical direction; selecting the first block as a current block to perform a block recursive partitioning process, and sequentially writing the fourth block, the third block and the second block into the stack memory; in response to the end of the block recursive partitioning of the current block, fetching a next block from the stack memory as the current block and performing the block recursive partitioning on the current block; judging whether the current block is the fourth block; when the current block is the fourth block, ending the decoding stage of the super block; and when the current block is not the fourth block, fetching a next block from the stack memory as the current block, and performing the block recursive partitioning on the current block.
Drawings
FIG. 1 is a block diagram of a video decoding apparatus according to an embodiment of the present invention.
FIG. 2 is a diagram of superblocks and recursive partitioning into coding units according to an embodiment of the present invention.
FIGS. 3A-3O are schematic diagrams illustrating a stacking sequence in the embodiment of FIG. 2 according to the present invention.
FIG. 4A is a diagram illustrating how super blocks are partitioned according to an embodiment of the present invention.
FIG. 4B is a diagram illustrating the division of the stack memory corresponding to the superblock according to the present invention in the embodiment of FIG. 4A.
FIG. 5A is a flowchart of a method for recursively partitioning decoded blocks according to an embodiment of the invention.
FIG. 5B is a flowchart of the block recursive partitioning process of the current block in the embodiment of FIG. 5A according to the present invention.
Detailed Description
In order to make the aforementioned and other objects, features and advantages of the present invention comprehensible, preferred embodiments accompanied with figures are described in detail below.
FIG. 1 is a block diagram of a video decoding apparatus according to an embodiment of the present invention.
As shown in fig. 1, the video decoding apparatus 100 includes a video decoder 110, a volatile memory 120, and a memory unit 130. The video decoder 110 is used for decoding a video stream to obtain a plurality of image frames. In some embodiments, video decoder 110 supports Video codec standards such as open media alliance (AOMedia) Video1 (AV 1), high Efficiency Video Coding (HEVC), and VP9, although this disclosure is not limited in this respect. In an embodiment, the video decoder 110 can be implemented by a hardware circuit, such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other logic circuits with the same function, but the invention is not limited thereto. In another embodiment, the video decoder 110 can be implemented by a central processing unit or a digital signal processor executing the corresponding program code.
The volatile memory 120 is, for example, a static random access memory (static random access memory) for temporarily storing decoded blocks required by the video decoder 110 in the video decoding process. In some embodiments. In some embodiments, the video decoder 110 and the volatile memory 120 may be integrated into an integrated circuit (integrated circuit) 150.
In one embodiment, the video decoder 110 may receive a video stream generated from an encoder for decoding. In another embodiment, the video decoding apparatus 100 further comprises a storage device 140, and the video stream can be stored in the storage device 140 in the form of a video file, for example. The video decoder 110 may read the video stream in the video file for decoding by the storage device 140. The storage device 140 is a non-volatile memory, such as a hard disk drive (hard disk drive), a solid-state disk (solid-state disk), a flash memory (flash memory), etc., but the invention is not limited thereto.
FIG. 2 is a diagram of superblocks and recursive partitioning into coding units according to an embodiment of the present invention. As shown in fig. 2, superblock 200 is 128x128 pixels in size. For example, in the AV1 standard, the minimum coding unit size is 4 × 4 pixels, so the video decoder 110 needs to recursively divide the super block 200 to be decoded until obtaining 4 × 4 coding units.
First, the super block 200 is divided into 4 64 × 64 blocks, such as the blocks 21 to 24, and then whether each of the 64 × 64 blocks 21 to 24 needs to be divided is determined according to a sequential scanning (raster scan) sequence. Taking 64x64 blocks as an example, when the determination is performed according to the sequential scanning order, the video decoder 110 first determines whether the upper left 64x64 block (block 21) needs to be divided, and then sequentially determines whether the upper right, lower left and lower right 64x64 blocks 22, 23 and 24 need to be divided.
For example, on the premise that the video decoder 110 correctly decodes according to the video codec standard, if the syntax value obtained by decoding is PARTITION _ SPLIT, the partitioning continues; if the decoded syntax value is another value (e.g., PARTITION _ NONE, PARTITION _ VERT, \8230;) then it is returned and re-entered into the decoding phase. The decoding according to the video encoding and decoding standard does not belong to the scope of the present invention, and is not described herein.
If the video decoder 110 determines that the first 64x64 block 21 needs to be divided, the block 21 is divided into 4 32x32 blocks, such as blocks 211-214. Similarly, as shown in fig. 2, the video decoder 110 determines that the blocks 211 and 214 need to be further divided, and the blocks 212 and 213 need not be further divided, so the video decoder 110 divides the blocks 211 and 214 into 4 16 × 16 blocks, such as blocks 2111 to 2114 and blocks 2141 to 2144, respectively. In addition, the video decoder 110 determines that none of the blocks 2111 to 2114 and 2141 to 2144 need to be further divided, so each of the blocks 2111 to 2114 and 2141 to 2144 can be regarded as a Coding Unit (CU).
FIGS. 3A-3O are schematic diagrams illustrating a stacking sequence in the embodiment of FIG. 2 according to the present invention.
In one embodiment, the memory space of a portion of the volatile memory 120 can be used as a stack memory (stack memory) 121, and the video decoder 110 can execute a block recursive partitioning instruction, such as QTREE, and implement the block recursive partitioning operation by First-in-Last-out (FILO) or Last-in-First-out (LIFO) the stack memory 121. For the stack memory 121, the add (push) operation and the delete (pop) operation are performed on the same side of the stack memory 121.
For illustrative purposes, the stack order of FIGS. 3A-3O illustrates how the block recursive partitioning instruction is implemented according to the partition order of the superblock in FIG. 2.
In one embodiment, the video decoder 110 may, for example, preset a maximum partition depth of the stack memory 121, where the maximum partition depth represents the number of 4 × 4 blocks when all blocks in the super block 200 are partitioned into the minimum coding unit (i.e., 4 × 4 blocks). For example, although a superblock with a size of 128x128 may be divided into 1024 4x4 blocks, the video decoder 110 does not actually use 1024 entries (entries) when performing the block recursive division instruction, but processes one of the four blocks of each layer according to the sequential scanning order. Therefore, if the maximum partition depth of stack memory 121 is calculated, super block 200 is partitioned as shown in FIG. 4A, i.e. each layer of blocks occupies only 3 entries of stack memory 121. Thus, 64x64 blocks, 32x32 blocks, 16x16 blocks, 8x8 blocks each occupy 3 entries in the stack memory 121. Since the 4x4 block is the smallest coding unit, the video decoder 110 can decode the 4x4 block directly without dividing the 4x4 block into smaller blocks, and thus the video decoder 110 does not need to write the 4x4 block into the stack memory 121.
Therefore, when the block recursive partitioning instruction of superblock 200 is executed, a total of 12 entries in stack memory 121 are occupied, so the maximum partition depth of stack memory 121 is 12. Assuming that the stack memory 121 has N entries (entries) (e.g., N = 12), the logical address of the bottommost entry of the stack memory 121 is #0, and the logical address of the topmost entry is #1 (N-1), i.e., #11, as shown in fig. 4B. However, the present invention is not limited to the maximum partition depth, and the video decoder 110 may adjust the maximum partition depth depending on the actual situation of the decoding process.
As shown in fig. 3A, the video decoder 110 performs a first division process, for example, dividing the super block 200 (e.g., 128 × 128 blocks) into 4 64 × 64 blocks 21 to 24. In this embodiment, the video decoder 110 first determines whether the block 21 needs to be further divided, but does not first determine whether the blocks 22-24 need to be further divided, so that the block 21 is not written into the stack memory 121, but the block 24, the block 23 and the block 22 are written into the stack memory 121 sequentially, i.e. the block 24 is at the bottom of the stack memory 121, as shown in fig. 3A.
Then, the video decoder 110 determines that the block 21 needs to be further divided, so a second division process is performed to divide the block 21 into 4 32 × 32 blocks 211 to 214. Since the second or more division processes have been performed, the blocks 211 to 214 may also be referred to as sub-blocks. Similarly, in the sequential scanning order, the video decoder 110 first determines whether the first 32 × 32 block 211 needs to be further divided, but first does not determine whether the blocks 212 to 214 need to be further divided, so that the block 211 is not written into the stack memory 121, and the block 214, the block 213, and the block 212 are sequentially written into the stack memory 121, as shown in fig. 3B.
Then, the video decoder 110 determines that the block 211 needs to be further divided, so a third division process is performed to divide the block 211 into 4 16 × 16 blocks 2111 to 2114 (also referred to as sub-blocks). Similarly, according to the sequential scanning order at this layer of 16 × 16 blocks, the video decoder 110 first determines whether the first 16 × 16 block 2111 needs to be further divided, but first does not determine whether the blocks 2112 to 2114 need to be further divided, so that the block 2111 is not written into the stack memory 121, but the block 2114, the block 2113 and the block 2112 are sequentially written into the stack memory 121, as shown in fig. 3C.
Then, the video decoder 110 determines that the block 2111 does not need to be further divided, i.e., the size of the block 2111 is maintained at 16 × 16 during the fourth dividing process, so the video decoder 110 can set the block 2111 as the coding unit CU0 and decode the block 2111. At this time, stack memory 121 remains as the memory content shown in fig. 3C.
Video decoder 110 then fetches (pop) block 2112 from stack memory 121 and determines that block 2112 does not need to be further partitioned. That is, at the time of the fifth division process, the size of the sector 2112 is still maintained at 16 × 16, i.e., the division is suspended. Accordingly, the video decoder 110 may set the block 2112 as the coding unit CU1 and decode the block 2112. At this time, the storage contents of the stack memory 121 are as shown in fig. 3D.
Similarly, the video decoder 110 continues to fetch the block 2113 from the stack memory 121 in the sequential scanning order of the 16 × 16 block layer, and determines that the block 2113 needs no further division. That is, at the sixth division processing, the size of the block 2113 is still maintained at 16 × 16, that is, the division is terminated. Accordingly, the video decoder 110 may set the block 2113 as the coding unit CU2 and decode the block 2113. At this time, the storage contents of the stack memory 121 are as shown in fig. 3E.
Similarly, in response to the partition termination of the coding unit CU2, the video decoder 110 continues to fetch the block 2114 from the stack memory 121 in the sequential scanning order at the 16 × 16 block level and determines that the block 2114 does not need to be further partitioned. That is, at the seventh division processing, the size of the block 2114 is still maintained at 16 × 16, that is, the division is terminated. Accordingly, the video decoder 110 may set the block 2114 as the coding unit CU3 and decode the block 2114. At this time, the storage contents of stack memory 121 are as shown in FIG. 3F, and the recursive division processing of block 211 has ended.
Then, the video decoder 110 continues to fetch the 32x32 block 212 from the stack memory 121 according to the sequential scanning order of the layer of 32x32 blocks, and determines that the block 212 does not need to be further divided. That is, during the eighth division, the size of the block 212 is still maintained at 32x32, i.e., the division is terminated. Thus, video decoder 110 may set block 212 as coding unit CU4 and decode block 212. At this time, the storage contents of stack memory 121 are as shown in fig. 3G.
Then, in response to the partition of the coding unit CU4 ending, the video decoder 110 continues to fetch the 32x32 block 213 from the stack memory 121 according to the sequential scanning order at this layer of 32x32 blocks, and determines that the block 213 does not need to be further partitioned. That is, in the ninth division process, the size of the block 213 is maintained at 32x32, i.e., the division is terminated. Accordingly, the video decoder 110 may set the block 213 as the coding unit CU5 and decode the block 213. At this time, the storage contents of the stack memory 121 are as shown in fig. 3H.
Then, in response to the partition of the coding unit CU5 being aborted, the video decoder 110 continues to fetch the 32x32 block 214 from the stack memory 121 in the sequential scanning order of the layer at the 32x32 block, and determines that the block 214 needs to be further partitioned. Therefore, the video decoder 110 performs the tenth division process to divide the 32 × 32 block 214 into four 16 × 16 blocks 2141 to 2144, and sequentially writes the blocks 2144, 2143, and 2142 into the stack memory 121, as shown in fig. 3I.
The processing of the 16x16 blocks 2141 to 2144 is similar to the processing of the 16x16 blocks 2111 to 2114. In detail, the video decoder 110 first determines that the block 2141 does not need to be further divided, i.e., the size of the block 2141 is still maintained at 16 × 16 in the eleventh division process, i.e., the division is terminated. Thus, video decoder 110 may set block 2141 to coding unit CU6 and decode block 2141. At this time, stack memory 121 remains in the storage content shown in fig. 3I.
Then, in response to the partition of the coding unit CU6 ending, the video decoder 110 continues to fetch the 16 × 16 block 2142 from the stack memory 121 in the sequential scanning order at this layer of the 16 × 16 block, and determines that the block 2142 does not need to be further partitioned. That is, during the twelfth division process, the size of the block 2142 remains at 16x16, i.e., the division is terminated. Thus, video decoder 110 may set block 2142 as coding unit CU7 and decode block 2142. At this time, the storage contents of the stack memory 121 are as shown in fig. 3J.
In response to the partition of coding unit CU7 ending, video decoder 110 continues to fetch 16 × 16 block 2143 from stack memory 121 in the progressive scan order at the layer of 16 × 16 blocks and determines that block 2143 does not need to be further partitioned. That is, during the thirteenth division process, the size of the block 2143 is still maintained at 16x16, i.e., the division is suspended. Thus, video decoder 110 may set block 2143 as coding unit CU8 and decode block 2143. At this time, the storage contents of the stack memory 121 are as shown in fig. 3K.
In response to the partition of coding unit CU8 ending, video decoder 110 continues to fetch 16x16 block 2144 from stack memory 121 in the sequential scanning order at this layer of 16x16 blocks and determines that block 2144 does not need to be further partitioned. That is, during the fourteenth dividing process, the size of the block 2144 is still maintained at 16 × 16, i.e., the division is terminated. Thus, video decoder 110 may set block 2144 as coding unit CU9 and decode block 2144. At this time, the contents of stack memory 121 are as shown in FIG. 3L, and all recursive partitioning processes for 64 × 64 block 21 are completed.
The video decoder 110 then continues to fetch the 64x64 blocks 22 from the stack memory 121 in the sequential scanning order of the layer of 64x64 blocks, and determines that the blocks 22 do not need to be further divided. That is, during the fifteenth division process, the size of the block 22 is maintained at 64 × 64, i.e., the division is terminated. Accordingly, video decoder 110 may set block 22 as coding unit CU10 and decode block 22. At this time, the storage contents of the stack memory 121 are as shown in fig. 3M.
In response to the partition of coding unit CU10 ending, video decoder 110 continues to fetch 64x64 block 23 from stack memory 121 in the progressive scan order at this layer of 64x64 blocks and determines that block 23 does not need to be further partitioned. That is, in the fifteenth division process, the size of the block 23 is still maintained at 64 × 64, i.e., the division is terminated. Accordingly, video decoder 110 may set block 23 as coding unit CU11 and decode block 23. At this time, the storage contents of the stack memory 121 are as shown in fig. 3N.
In response to the partition termination of the coding unit CU11, the video decoder 110 continues to fetch the 64x64 block 24 from the stack memory 121 in the sequential scanning order of the layer at the 64x64 block, and determines that the block 24 does not need to be further partitioned. That is, at the sixteenth division processing, the size of the block 24 is still maintained at 64 × 64, i.e., the division is terminated. Thus, video decoder 110 may set block 24 as coding unit CU12 and decode block 24. At this time, the storage contents of stack memory 121 have been completely emptied, as shown in fig. 3O. When decoding of coding unit CU12 is completed, the decoding process of super block 200 is terminated.
FIG. 5A is a flowchart of a method for recursively partitioning decoded blocks according to an embodiment of the invention. FIG. 5B is a flowchart of the block recursive partitioning process of the current block in the embodiment of FIG. 5A according to the present invention. Please refer to fig. 1 and fig. 5A-5B.
In step S510, a super block is obtained from a video stream to be decoded, wherein the super block has a first size in both horizontal and vertical directions. For example, the maximum size of a superblock in the AV1 standard may be, for example, 128x128.
In step S520, the super block is divided into a first block, a second block, a third block and a fourth block in the horizontal direction and the vertical direction. For example, the order of the first block, the second block, the third block and the fourth block is determined according to the sequential scanning order (e.g., corresponding to the blocks 21, 22, 23 and 24 in fig. 2), i.e., the first block, the second block, the third block and the fourth block are respectively located at the upper left, the upper right, the lower left and the lower right of the super block.
In step S530, the first block is selected as a current block to perform a block recursive partitioning process, and the fourth block, the third block and the second block are sequentially written into a stack memory. For example, the fourth block written to the stack memory first is at the bottom of the stack memory.
In step S540, in response to the end of the block recursive partitioning process of the current block, a top block is fetched from the stack memory as the current block, and the block recursive partitioning process is performed on the current block. Note that the stack memory 121 implements the operation of block recursive partitioning in a first-in-last-out (FILO) or last-in-first-out (LIFO) manner. For the stack memory 121, the add (push) operation and the delete (pop) operation are performed at the same end of the stack memory 121. Thus, the next block fetched from the stack memory is the top-most block (or sub-block) of the stack memory.
In step S550, it is determined whether the current block is the fourth block. If the current block is the fourth block, the process ends. If the current block is not the fourth block, go back to step S540.
In this embodiment, the block recursive division process of the current block can be further divided into steps S521-S527.
In step S521, it is determined whether the current block needs to be divided. If the current block needs to be divided, step S522 is performed. If the current block is determined not to be divided, step S525 is performed.
In step S522, the current block is divided into a first sub-block, a second sub-block, a third sub-block and a fourth sub-block in the horizontal direction and the vertical direction, and the fourth sub-block, the third sub-block and the second sub-block are sequentially written into the stack memory.
In step S523, the first sub-block is set as the current sub-block, and whether the current sub-block needs to be divided is determined. If the current sub-block needs to be divided, step S524 is executed. If the current sub-block does not need to be divided, step S525 is performed.
In step S524, the block recursive partitioning process is repeatedly performed on the current sub-block until the size of the current sub-block is equal to a predetermined size. For example, the predetermined size is the size of the smallest Coding Unit (CU), i.e., a 4 × 4 block.
In step S525, the current sub-block is decoded.
In step S526, in response to the decoding of the current sub-block ending, the top sub-block is fetched from the stack memory as the current sub-block, and the block recursive partitioning process is performed on the current sub-block.
In step S527, in response to the end of the block recursive partitioning process of the current sub-block, it is determined whether the current sub-block is the fourth sub-block. If the current sub-block is the fourth sub-block, step S540 is performed. If the current sub-block is not the fourth sub-block, go back to step S526.
In summary, the present invention provides an integrated circuit and a method for recursively partitioning a decoding block, which can utilize a stack memory to enable a video decoder to efficiently recursively partition a super block into a plurality of coding units, thereby improving decoding performance.
Use of the terms "first," "second," "third," and the like in the claims is used to modify a claim element without indicating a priority, precedence, or order between elements, or the order in which a method step is performed, but is intended to distinguish one element from another element having a same name.
Although the present invention has been described with reference to the preferred embodiments, it should be understood that various changes and modifications can be made therein by those skilled in the art without departing from the spirit and scope of the invention as defined in the appended claims.

Claims (14)

1. An integrated circuit, comprising:
a stack memory; and
a video decoder for decoding a video stream received by the integrated circuit, the video decoder obtaining a super block from the video stream, wherein the super block has a first size in both horizontal and vertical directions, the video decoder equally dividing the super block into a first block, a second block, a third block and a fourth block in both horizontal and vertical directions,
wherein the video decoder selects the first block as a current block to perform a block recursive partitioning process, and sequentially writes the fourth block, the third block and the second block into the stack memory;
wherein when the block recursive division processing of the current block is finished, the video decoder fetches an uppermost block from the stack memory as the current block and performs the block recursive division processing on the current block,
the video decoder determines whether the current block is the fourth block,
when the current block is the fourth block, determining whether the fourth block needs to be divided, if the fourth block does not need to be divided, the video decoder ending the decoding of the super block,
when the current block is not the fourth block, the video decoder fetches a next block from the stack memory as the current block and performs the block recursive partitioning on the current block.
2. The integrated circuit of claim 1, wherein the video stream supports one or a combination of the following standards: the open media alliance standard, the high efficiency video coding standard and the VP9 video codec standard.
3. The integrated circuit of claim 1 wherein in the block recursive partitioning process of the current block, the video decoder further determines whether the current block requires partitioning,
when the video decoder determines that the current block needs to be divided, the video decoder equally divides the current block into a first sub-block, a second sub-block, a third sub-block and a fourth sub-block in the horizontal direction and the vertical direction, and sequentially writes the fourth sub-block, the third sub-block and the second sub-block into the stack memory; and
the video decoder determines that the current block does not need to be partitioned, and the video decoder decodes the current block.
4. The integrated circuit of claim 3, wherein the video decoder further sets the first sub-block as a current sub-block and determines whether the current sub-block needs to be divided,
when the video decoder determines that the current sub-block needs to be divided, the video decoder repeatedly performs the block recursive division process on the current sub-block until the size of the current sub-block is equal to a predetermined size; and
when the video decoder determines that the current sub-block does not need to be divided, the video decoder decodes the current sub-block.
5. The IC of claim 4 wherein in the block recursive partitioning process of the current sub-block, when decoding of the current sub-block is finished, the video decoder fetches a topmost sub-block from the stack memory as the current sub-block and performs the sub-block recursive partitioning process on the current sub-block.
6. The IC of claim 5 wherein in the block recursive partitioning process of the current sub-block, in response to the block recursive partitioning process of the current sub-block ending, the video decoder determines whether current sub-block is the fourth sub-block,
when the video decoder determines that the current sub-block is the fourth sub-block, the video decoder determines whether the fourth sub-block needs to be divided, and if the fourth sub-block does not need to be divided, the video decoder decodes the current sub-block; and
when the video decoder determines that the current subblock is not the fourth subblock, the video decoder fetches a topmost subblock from the stack memory as the current subblock and performs the block recursive partitioning on the current subblock.
7. The integrated circuit of claim 4, wherein the predetermined size is a size of a minimum coding unit.
8. A method of recursively partitioning a decoding block for an integrated circuit comprising a stacked memory, the method comprising:
performing video decoding on the video stream received by the integrated circuit;
obtaining a super block from the video stream, wherein the super block has a first size in both horizontal and vertical directions;
equally dividing the super block into a first block, a second block, a third block and a fourth block in the horizontal direction and the vertical direction;
selecting the first block as a current block to perform block recursive partitioning, and writing the fourth block, the third block and the second block into the stack memory in sequence;
in response to the end of the block recursive partitioning of the current block, fetching a next block from the stack memory as the current block and performing the block recursive partitioning on the current block;
judging whether the current block is the fourth block;
when the current block is the fourth block, judging whether the fourth block needs to be divided, and if the fourth block does not need to be divided, ending the decoding stage of the super block; and
when the current block is not the fourth block, the next block is fetched from the stack memory as the current block, and the block recursive partitioning process is performed on the current block.
9. The method of claim 8, wherein the video stream supports one or a combination of the following standards: the open media alliance standard, the high efficiency video coding standard and the VP9 video codec standard.
10. The method of claim 8, further comprising, during said recursive partitioning of the block of the current block:
judging whether the current block needs to be divided;
when the current block is judged to need to be divided, equally dividing the current block into a first sub-block, a second sub-block, a third sub-block and a fourth sub-block in the horizontal direction and the vertical direction, and sequentially writing the fourth sub-block, the third sub-block and the second sub-block into the stack memory; and
when the current block is determined not to need partitioning, the current block is decoded.
11. The method of recursively dividing decoded blocks as recited in claim 10, further comprising:
setting the first sub-block as a current sub-block, and judging whether the current sub-block needs to be divided;
when the current sub-block is judged to need to be divided, repeating the block recursive division processing on the current sub-block until the size of the current sub-block is equal to the preset size; and
and when the current sub-block is judged not to be divided, decoding the current sub-block.
12. The method of claim 11, wherein in said recursive partitioning of said block of said current sub-block, said method further comprises: when the decoding of the current sub-block is finished, the next sub-block is taken out from the stack memory as the current sub-block, and the block recursive partitioning processing is performed on the current sub-block.
13. The method of claim 12, wherein in said recursive partitioning of said block of said current sub-block, said method further comprises:
when the block recursive partitioning processing of the current sub-block is finished, judging whether the current sub-block is the fourth sub-block;
when the current sub-block is judged to be the fourth sub-block, judging whether the fourth sub-block needs to be divided, and if the fourth sub-block does not need to be divided, decoding the current sub-block; and
when the current sub-block is not the fourth sub-block, the next sub-block is taken out from the stack memory as the current sub-block, and the block recursive partitioning process is performed on the current sub-block.
14. The method of claim 11, wherein the predetermined size is a size of a smallest coding unit.
CN202010626373.5A 2020-07-01 2020-07-01 Integrated circuit and method for recursively dividing decoding blocks Active CN111757108B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010626373.5A CN111757108B (en) 2020-07-01 2020-07-01 Integrated circuit and method for recursively dividing decoding blocks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010626373.5A CN111757108B (en) 2020-07-01 2020-07-01 Integrated circuit and method for recursively dividing decoding blocks

Publications (2)

Publication Number Publication Date
CN111757108A CN111757108A (en) 2020-10-09
CN111757108B true CN111757108B (en) 2023-03-24

Family

ID=72678592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010626373.5A Active CN111757108B (en) 2020-07-01 2020-07-01 Integrated circuit and method for recursively dividing decoding blocks

Country Status (1)

Country Link
CN (1) CN111757108B (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6137493A (en) * 1996-10-16 2000-10-24 Kabushiki Kaisha Toshiba Multidimensional data management method, multidimensional data management apparatus and medium onto which is stored a multidimensional data management program
TW201919397A (en) * 2017-07-19 2019-05-16 弗勞恩霍夫爾協會 Apparatus and method of coding of pictures
CN109845257A (en) * 2016-12-06 2019-06-04 Jvc 建伍株式会社 Picture coding device, image encoding method and image encoding program, picture decoding apparatus, picture decoding method and image decoding program
CN112055966A (en) * 2018-04-24 2020-12-08 联发科技股份有限公司 Method and apparatus for selectable transform skip mode for picture and video coding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331720B (en) * 2015-06-17 2020-03-27 福州瑞芯微电子股份有限公司 Video decoding related information storage method and device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6137493A (en) * 1996-10-16 2000-10-24 Kabushiki Kaisha Toshiba Multidimensional data management method, multidimensional data management apparatus and medium onto which is stored a multidimensional data management program
CN109845257A (en) * 2016-12-06 2019-06-04 Jvc 建伍株式会社 Picture coding device, image encoding method and image encoding program, picture decoding apparatus, picture decoding method and image decoding program
TW201919397A (en) * 2017-07-19 2019-05-16 弗勞恩霍夫爾協會 Apparatus and method of coding of pictures
CN112055966A (en) * 2018-04-24 2020-12-08 联发科技股份有限公司 Method and apparatus for selectable transform skip mode for picture and video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于二叉树的栅格数据快速编码及其实现;杨敏等;《测绘工程》;20011230(第04期);全文 *

Also Published As

Publication number Publication date
CN111757108A (en) 2020-10-09

Similar Documents

Publication Publication Date Title
KR101401336B1 (en) Image processing device and image processing method
JPH07226934A (en) Picture edge detector for picture compression system by segmentation, digital data compressor, coded picture generator and picture element storage memory
WO2010063184A1 (en) Method for performing parallel cabac processing with ordered entropy slices, and associated apparatus
TWI353119B (en) Compression system and method for a bit-plane
US20220360798A1 (en) Method and apparatus for parallelizing context selection in video processing
US20220116613A1 (en) Video encoding method and device, and video decoding method and device
US20220109839A1 (en) Video decoding method and device, and video coding method and device
CN111757108B (en) Integrated circuit and method for recursively dividing decoding blocks
CN110572713B (en) Transcoding method and processing terminal for adaptive video bandwidth ratio
US8023756B2 (en) Image encoding apparatus and method of controlling same
US8077363B2 (en) Block matching circuit and data update method
CN114827610B (en) Video image encoding and decoding method, apparatus and medium
CN111726626B (en) Integrated circuit and probability table storage method for video decoding
CN111355962A (en) Video decoding caching method suitable for multiple reference frames, computer device and computer readable storage medium
CN1182981A (en) Decoding image display device and display storage control method
JP2004517527A (en) Graphic image coding
US8634669B2 (en) Fast implementation of context selection of significance map
US9307259B2 (en) Image decoding methods and image decoding devices
JPH10108011A (en) Data-processing unit
US20200275099A1 (en) Image encoding method and device, and image decoding method and device
US20040213467A1 (en) Image processing apparatus
US20060115150A1 (en) Calculation method of a cumulative histogram
CN110392259A (en) Image compression system and utilization image compression system are in the method for compressing image picture
CN110662088B (en) Duplicate removal method and processing terminal for preventing video from being transcoded repeatedly
US11669281B1 (en) Count circuit for symbol statistics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210315

Address after: 201203 3rd floor, building 2, No. 200, zhangheng Road, Pudong New Area pilot Free Trade Zone, Shanghai

Applicant after: Gryfield Intelligent Technology Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Applicant before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

GR01 Patent grant
GR01 Patent grant