Flexible block partitioning for chroma components
By expanding the quantized index range of the AV1 video encoding format and increasing the quantized step resolution, the problem of limited quantized step resolution of the AV1 video encoding format is solved, and more efficient video compression and coding granularity is achieved.
Patent Information
- Application Number
- JP2023115395
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-11-02
- Filing Date
- 2023-12-11
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2041-01-07
AI Technical Summary
The quantization step resolution of the AV1 video encoding format is limited, which affects the granularity and efficiency of video compression.
By extending the range of the quantization index, increasing the resolution of the quantization step size, and flexible partitioning of the image blocks according to different thresholds during encoding and decoding.
It improves the granularity and efficiency of video encoding, provides a more flexible encoding structure, and is suitable for different types of video data.
Smart Images

Figure 0007654719000002 
Figure 0007654719000003 
Figure 0007654719000004
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 62 / 958,422, filed January 8, 2020, and U.S. Patent Application No. 17 / 087,236, filed November 2, 2020, the entireties of which are incorporated herein by reference.
[0002] The present disclosure relates generally to the field of data processing, and more specifically, to video encoding and / or decoding including flexible block partitioning for chroma components. [Background technology]
[0003] AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. It was developed as a successor to VP9 by the Alliance for Open Media (AOMedia), a consortium founded in 2015 that includes semiconductor companies, video-on-demand providers, video content producers, software development companies, and web browser vendors. Many of the components of the AV1 project were contributed from previous research efforts by the alliance members. Individual contributors started experimental technology platforms several years ago. Xiph / Mozilla's Daala already released its code in 2010, Google's experimental VP9 evolution project VP10 was announced on September 12, 2014, and Cisco's Thor on August 11, 2015. Based on the VP9 code base, AV1 incorporates additional technologies, some of which were developed in these experimental formats. The first version 0.1.0 of the AV1 reference codec was released on April 7, 2016. The Alliance announced the release of the AV1 bitstream specification on March 28, 2018, along with reference and software-based encoders and decoders. Validated version 1.0.0 of the specification was released on June 25, 2018. Validated version 1.0.0, including Errata 1 of the specification, was released on January 8, 2019. The AV1 bitstream specification includes a reference video codec. AOMedia Video 2 (AV2) is currently under development. AV1 has limited resolution for quantization step size.
[0004] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC1 / SC29 / WG11) published the H.265 / HEVC (High Efficiency Video Coding) standard in 2013 (version 1), 2014 (version 2), 2015 (version 3), and 2016 (version 4). In 2015, these two standardization organizations jointly formed the Joint Video Exploration Team (JVET) to explore the possibility of developing the next video coding standard beyond HEVC. In October 2017, the standardization organizations issued a joint Call for Proposals (CfP) for video compression including features beyond HEVC. By February 15, 2018, a total of 22 CfP responses for Standard Dynamic Range (SDR), 12 CfP responses for High Dynamic Range (HDR), and 12 CfP responses for 360 video category were submitted. In April 2018, all received CfP responses were evaluated at the 122 MPEG / 10th JVET meeting. As a result of this meeting, JVET formally started the standardization process for the next generation of video coding beyond HEVC. The new standard was named VVC (Versatile Video Coding), and JVET announced the Joint Video It was renamed Expert Team. Summary of the Invention
[0005] SUMMARY OF THE DISCLOSURE Embodiments relate to methods, systems, and computer-readable media for encoding and / or decoding video data.
[0006] According to one aspect, a method for encoding and / or decoding video data is provided, the method may include obtaining video data; analyzing the obtained video data to obtain partitioning parameters; obtaining partitioned super-blocks based on the partitioning parameters; and decoding the video data based on the partitioned super-blocks, based on a luma block region size of the smallest luma block of the partitioned super-block being greater than a first threshold or a luma partition depth of the smallest luma block being less than a second threshold, the luma blocks of the partitioned super-block and the chroma blocks of the partitioned super-block are partitioned based on a first block partitioning structure; Based on the luma block region size being smaller than a first threshold or the luma partitioning depth being greater than a second threshold, the luma blocks of the partitioned super-block are partitioned based on a first block partitioning structure, and the chroma blocks of the partitioned super-block are partitioned based on a second block partitioning structure different from the first block partitioning structure.
[0007] According to one aspect, an apparatus is provided for encoding and / or decoding video data, the apparatus may include at least one memory configured to store program code; and at least one processor configured to read the program code and operate as directed by the program code, the program code comprising: the video data stream includes a first acquisition code configured to cause the at least one processor to acquire video data; an analysis code configured to cause the at least one processor to analyze the acquired video data to acquire partitioning parameters; a second acquisition code configured to cause the at least one processor to acquire partitioned super-blocks based on the partitioning parameters; and a decoding code configured to cause the at least one processor to decode the video data based on the partitioned super-blocks; based on a luma block region size of the smallest luma block of the partitioned super-block being greater than a first threshold or a luma partition depth of the smallest luma block being less than a second threshold, the luma blocks of the partitioned super-block and the chroma blocks of the partitioned super-block are partitioned based on a first block partitioning structure; Based on the luma block region size being smaller than a first threshold or the luma partitioning depth being greater than a second threshold, the luma blocks of the partitioned super-block are partitioned based on a first block partitioning structure, and the chroma blocks of the partitioned super-block are partitioned based on a second block partitioning structure different from the first block partitioning structure.
[0008] According to one aspect, a non-transitory computer-readable medium for encoding and / or decoding video data is provided. The non-transitory computer-readable medium may store instructions including one or more instructions that, when executed by one or more processors of an apparatus for video coding, cause the one or more processors to: obtaining video data; analyzing the obtained video data to obtain partitioning parameters; obtaining partitioned super-blocks based on the partitioning parameters; and decoding the video data based on the partitioned super-blocks; based on a luma block region size of the smallest luma block of the partitioned super-block being greater than a first threshold or a luma partition depth of the smallest luma block being less than a second threshold, the luma blocks of the partitioned super-block and the chroma blocks of the partitioned super-block are partitioned based on a first block partitioning structure; Based on the luma block region size being smaller than a first threshold or the luma partitioning depth being greater than a second threshold, the luma blocks of the partitioned super-block are partitioned based on a first block partitioning structure, and the chroma blocks of the partitioned super-block are partitioned based on a second block partitioning structure different from the first block partitioning structure. [Brief description of the drawings]
[0009] These and other objects, features, and advantages will become apparent from the following detailed description of illustrative embodiments, which is to be read in connection with the accompanying drawings. Various features of the drawings are not drawn to scale for clarity purposes, so that the figures, together with the detailed description, will facilitate understanding by those skilled in the art. [Figure 1] FIG. 1 illustrates a networked computing environment in accordance with at least one embodiment. [Diagram 2] FIG. 13 illustrates an example of a multi-type tree splitting mode, according to at least one embodiment. [Diagram 3] FIG. 1 illustrates an example of split flag signaling in a quadtree having a nested multi-type tree coding tree structure, according to at least one embodiment. [Figure 4] FIG. 1 illustrates an example of a quadtree having a nested multi-type tree coding block structure, in accordance with at least one embodiment. [Diagram 5] FIG. 1 illustrates an example of a coding tree structure in VP9, according to at least one embodiment. [Figure 6] A diagram showing an example of a coding tree structure in AV1 according to at least one embodiment. [Figure 7] FIG. 1 illustrates an example of a restricted partitioned region, according to at least one embodiment. [Figure 8] FIG. 2 illustrates an example coding tree structure for luma and chroma components, according to at least one embodiment. [Figure 9] 1 is an operational flowchart illustrating steps performed by a program for coding video data in accordance with at least one embodiment. [Figure 10] FIG. 2 is a block diagram of internal and external components of the computer and server shown in FIG. 1 according to at least one embodiment. [Figure 11] FIG. 2 is a block diagram of an exemplary cloud computing environment including the computer system shown in FIG. 1 according to at least one embodiment. [Figure 12] FIG. 12 is a block diagram of functional layers of the example cloud computing environment of FIG. 11 in accordance with at least one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] Detailed embodiments of the claimed structures and methods are disclosed herein. However, it can be understood that the disclosed embodiments are merely examples of the claimed structures and methods, which may be embodied in various forms. However, these structures and methods may be embodied in many different forms and should not be construed as being limited to the exemplary embodiments described herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete, and will fully convey its scope to those skilled in the art. In the detailed description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.
[0011] FIELD OF THE DISCLOSURE The embodiments relate generally to the field of data processing, and more specifically to video encoding and decoding. The exemplary embodiments described below provide, among other things, systems, methods, and computer programs for encoding and / or decoding video data using an enhanced quantizer for efficient compression of the video data. Thus, some embodiments have the ability to improve the field of computing by providing an enhanced quantizer for AV2.
[0012] As mentioned before, AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. It was developed as a successor to VP9 by AOMedia (Alliance for Open Media), a consortium founded in 2015 that includes semiconductor companies, video-on-demand providers, video content producers, software development companies, and web browser vendors. Currently, the resolution of AV1 quantization step sizes is limited. The step size range has been expanded, but the valid range of Q_index remains the same. This limitation in the resolution of the quantization steps becomes more evident for internal bit depths of 10 and 12 bits, where the corresponding 8-bit step sizes (obtained using q_idx) are scaled by 4 and 16, respectively. This may affect the bitrate granularity that can be achieved with the codec. It may therefore be advantageous to increase the resolution of the quantization step sizes by extending the range of the quantization index.
[0013] Aspects are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer-readable media according to various embodiments. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0014]
[0023] Referring now to Figure 1, a functional block diagram of a networked computing environment illustrating a video coding system 100 (hereinafter "system") for encoding and / or decoding video data according to an example embodiment as described herein is shown. It should be understood that Figure 1 provides only an illustration of one implementation and is not intended to imply limitations with respect to the environments in which different embodiments may be implemented. Many variations may be made to the depicted environment based on design and implementation requirements.
[0015] The system 100 may include a computer 102 and a server computer 114. The computer 102 may communicate with the server computer 114 via a communications network 110 (hereinafter, "network"). The computer 102 may include a processor 104 and software programs 108 stored in a data storage device 106 and capable of interfacing with a user and communicating with the server computer 114. As discussed below with respect to FIG. 10, the computer 102 may include internal components 800A and external components 900A, respectively, and the server computer 114 may include internal components 800B and external components 900B, respectively. The computer 102 may be, for example, a mobile device, a phone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing device capable of running programs, accessing a network, and accessing a database.
[0016] The server computer 114 may also operate in a cloud computing service model, such as Software as a Service (SaaS), Platform as a Service (PaaS), or Infrastructure as a Service (IaaS), as discussed below with respect to Figures 11 and 12. The server computer 114 may also be located in a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.
[0017] The server computer 114, which may be used to encode the video data, may execute a video encoding program 116 (hereinafter the "program") that may interact with the database 112. The video encoding program method is described in more detail below with respect to FIG. 4. In one embodiment, the computer 102 may act as an input device including a user interface, while the program 116 may execute primarily on the server computer 114. In an alternative embodiment, the program 116 may execute primarily on one or more computers 102, while the server computer 114 may be used for processing and storing data used by the program 116. It should be noted that the program 116 may be a stand-alone program or may be integrated into a larger video encoding program.
[0018] However, it should be noted that the processing of the program 116 may, in some cases, be shared in any ratio between the computer 102 and the server computer 114. In another embodiment, the program 116 may operate on multiple computers, server computers, or some combination of computers and server computers, such as multiple computers 102 communicating with a single server computer 114 over the network 110. In another embodiment, for example, the program 116 may operate on multiple server computers 114 communicating with multiple client computers over the network 110. Alternatively, the program may operate on a network server communicating with the server and multiple client computers over the network.
[0019] The network 110 may include wired, wireless, or fiber optic connections, or any combination thereof. In general, the network 110 may be any combination of connections and protocols that support communication between the computer 102 and the server computer 114. The network 110 may include various types of networks, such as, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, a telecommunications network such as a public switched telephone network (PSTN), a wireless network, a public switched network, a satellite network, a cellular network (e.g., a fifth generation (5G) network, a long term evolution (LTE) network, a third generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a metropolitan network (MAN), a private network, an ad-hoc network, an intranet, an optical fiber-based network, etc., and / or a combination of these or other types of networks.
[0020] The number and arrangement of devices and networks shown in Figure 1 are provided as an example. In practice, there may be additional devices and / or networks, fewer devices and / or networks than those shown in Figure 1, different devices and / or networks, or devices and / or networks in a different arrangement. Furthermore, two or more devices shown in Figure 1 may be implemented within a single device, or a single device shown in Figure 1 may be implemented as multiple distributed devices. Additionally or alternatively, a set of devices (e.g., one or more devices) of system 100 may perform one or more functions that are described as being performed by another set of devices of system 100.
[0021] In HEVC, coding tree units (CTUs) can be divided into coding units (CUs) by using a quad-tree structure, denoted as a coding tree, to adapt to various local characteristics. The decision of whether to code a picture region using inter-picture (temporal) or intra-picture (spatial) prediction can be made at the CU level. Each CU can be further divided into one, two, or four PUs depending on the PU partition type. Inside one PU, the same prediction process can be applied, and related information can be transmitted to the decoder on a PU basis. After applying the prediction process based on the PU partition type to obtain the residual block, the CU can be partitioned into transform units (TUs) according to another quad-tree structure, such as the coding tree of the CU. One of the important features of the HEVC structure is that there is a concept of multiple partitions, including CUs, PUs, and TUs.
[0022] In VVC, a quaternary tree including nested multi-type trees using binary split and ternary split segmentation structures replaces the concept of multiple partition unit types. That is, the quaternary tree eliminates the separation of the concepts of CU, PU, and TU, except when necessary for CUs whose size is too large for the maximum transform length, allowing more flexibility in CU partition shapes. In the coding tree structure, CUs can be either square or rectangular in shape. A coding tree unit (CTU) can be first partitioned by a quaternary tree (aka quadtree) structure. Then, the quaternary tree leaf nodes can be further partitioned by a multi-type tree structure. As shown in FIG. 2, there can be four split types in the multi-type tree structure: vertical binary split (SPLIT_BT_VER), horizontal binary split (SPLIT_BT_HOR), vertical ternary split (SPLIT_TT_VER), and horizontal ternary split (SPLIT_TT_HOR). The multi-type tree leaf nodes are called coding units (CUs), and this segmentation can be used for prediction and transformation processing without further partitioning, as long as the CU is not too large for the maximum transform length. This means that in most cases, CUs, PUs, and TUs have the same block size in a quad-tree with a nested multi-type tree coding block structure. An exception occurs when the maximum supported transform length is smaller than the width or height of the color component of the CU.
[0023] FIG. 3 shows an example of a signaling mechanism of partitioning information in a quadtree with nested multitype tree coding tree structure according to an embodiment. A CTU may be treated as the root of the quadtree and may be partitioned by the quadtree structure first. Then, each quadtree leaf node (if large enough to allow that quadtree leaf node) may be further partitioned by the multitype tree structure. In the multitype tree structure, a first flag (mtt_split_cu_flag) may be signaled to indicate whether the node is further partitioned; if the node is further partitioned, a second flag (mtt_split_cu_vertical_flag) may be signaled to indicate the split direction, and then a third flag (mtt_split_cu_binary_flag) may be signaled to indicate whether the split is a 2-split or 3-split. Based on the values of mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the multi-type tree split mode (MttSplitMode) of the CU can be derived as shown in Table 1. [Table 1]
[0024] FIG. 4 shows an example of a CTU partitioned into multiple CUs with a quadtree and nested multi-type tree coding block structure according to an embodiment, where the bold block edges represent the quadtree partitioning and the remaining edges represent the multi-type tree partitioning. The quadtree with nested multi-type tree partitions provides a content-adaptive coding tree structure that includes the CUs. The size of the CUs can be as large as the CTUs or as small as 4×4 in units of luma samples. For a 4:2:0 chroma format, the maximum chroma CB size can be 64×64 and the minimum chroma CB size can be 2×2.
[0025] In VVC, the maximum supported luma transform size may be 64 x 64, and the maximum supported chroma transform size may be 32 x 32. If the width or height of the CB may be larger than the maximum transform width or height, the CB may be automatically split horizontally and / or vertically to meet the transform size limitation in that direction.
[0026] In VTM7, the coding tree scheme supports the ability for luma and chroma to have separate block tree structures. Currently, for P and B slices, the luma CTB and chroma CTB in one CTU must share the same coding tree structure. However, for I slices, luma and chroma can have separate block tree structures. When the separate block tree mode is applied, the luma CTB may be partitioned into CUs by one coding tree structure, and the chroma CTB is partitioned into chroma CUs by another coding tree structure. This means that a CU in an I slice may consist of a coding block of the luma component or a coding block of two chroma components, and a CU in a P or B slice always consists of coding blocks of all three color components, unless the video is monochrome.
[0027] As shown in Figure 5, VP9 uses a 4-way partition tree that starts at the 64x64 level and goes down to the 4x4 level, but with some additional restrictions on blocks 8x8. As shown in Figure 5, the partitions designated as R may be called recursive in that the same partition tree may be repeated at lower scales until the lowest 4x4 level is reached.
[0028] As shown in Figure 6, AV1 not only extends the partition tree to a 10-way structure, but also extends the maximum size (called superblock in VP9 / AV1 terminology) to start at 128x128. Note that this may include 4:1 / 1:4 rectangular partitions, which did not exist in VP9. Note that rectangular partitions cannot be further subdivided. In addition to the coding block size, a coding tree depth can be specified to indicate the division depth from the root node. Specifically, the coding tree depth of a root node, e.g., 128x128, can be set to 0, and after one further division of the tree block, the coding tree depth can be increased by 1.
[0029] Instead of enforcing a fixed transform unit size as in VP9, AV1 allows partitioning of luma coding blocks into transform units of multiple sizes, which can be represented by a recursive partition going down up to two levels. To incorporate AV1's extended coding block partitions, we support transform sizes from 4x4 to 64x64 square, 2:1 / 1:2, and 4:1 / 1:4. For chroma blocks, only the largest possible transform units are allowed.
[0030] In AV1, luma CUs and chroma CUs in one CTU must share the same coding tree structure. In an embodiment, a CU may correspond to, for example, a block, and a CTU may correspond to, for example, a superblock. However, chroma components may have less texture than luma components, and it may not always be optimal to use the same coding tree structure as luma components.
[0031] In an embodiment, if the luma block region size is larger than a threshold T1 or the coding tree partition depth of the luma block is less than or equal to a threshold T2, then the chroma block may use the same coding tree structure as the luma. Otherwise, if the block region size is less than or equal to T1 or the luma partition depth is greater than T2, the corresponding chroma block may have a different coding block partitioning including the luma component, which may be referred to as flexible block partitioning of the chroma component. T1 may be a positive integer such as 128 or 256. T2 may be a positive integer such as 1 or 2.
[0032] In at least one embodiment, flexible block partitioning for chroma components may only be applied to I-frames (intra-frames).
[0033] In at least one embodiment, if the luma block region size is larger than a threshold T1 or the coding tree depth is less than or equal to a threshold T2, then the chroma blocks may use the same coding tree structure as the luma. Otherwise, if the block region size is less than or equal to T1 or the luma split depth is greater than T2, the coding block depth of the chroma components may be less than or equal to the coding block depth of the luma component.
[0034] In at least one embodiment, if the luma block region size is larger than a threshold T1 or the coding tree depth is less than or equal to a threshold T2, then the chroma block may use the same coding tree structure as the luma. Otherwise, the chroma block may not be further split, although the luma block may still have the flexibility to be further split. The coding block depth of the chroma component may be derived as coLocatedDepthLuma>T2 ? T2:coLocatedDepthLuma, where coLocatedDepthLuma is the coding block depth of the co-located block in the luma component, and T2 is a positive integer such as 1 or 2.
[0035] In at least one embodiment, if the luma block region size is larger than a threshold T1 or the coding tree depth is less than or equal to a threshold T2, then the chroma blocks may use the same coding tree structure as the luma. Otherwise, the coding block depth of the chroma components may depend on the coding block depth of the luma component. In at least one embodiment, if the luma block region size is larger than a threshold T1 or the coding tree depth is less than or equal to a threshold T2, then the chroma blocks may use the same coding tree structure as the luma. Otherwise, the coding block depth of the chroma components is derived as min(max(maxDepthLuma-N1,T2), coLocatedDepthLuma), where maxDepthLuma may be the maximum coding block depth of the luma components in the constrained partitioned region, coLocatedDepthLuma may be the coding block depth of the co-located blocks in the luma component, and N1 may be a positive integer such as 1 or 2. An example is shown in FIG. 7. As shown in Fig. 7, the restricted partitioning region of luma and chroma components is highlighted with dashed circles, and the collocated luma blocks of each chroma block are marked using solid arrows. Furthermore, in this example, T2 is set to 1, and N1 is also set to 1. It can be seen that maxDepthLuma is 3 in the restricted partitioning region. Furthermore, the YUV format in this example is YUV420.
[0036] In at least one embodiment, if the luma block region size is larger than a threshold T1 or the coding tree depth is less than or equal to a threshold T2, then the chroma blocks may use the same coding tree structure as the luma. Otherwise, if the area of the block region size is less than or equal to a threshold T1 or the luma partition depth is greater than T2, the block partitioning of the luma and chroma components may be separated, which means that the block partitioning of the chroma components may be independent from the block partitioning of the luma component. An example is shown in Figure 8. In the example of Figure 8, T2 is set to 1.
[0037] In at least one embodiment, block partitioning may be signaled jointly between different color components when the luma block region size is greater than a threshold T1 or the coding tree depth is less than or equal to a threshold T2. Otherwise, block partitioning may be signaled separately for different color components when the block region size is less than or equal to T1 or the luma partition depth is greater than T2. In one example, when block partitioning is signaled separately for different color components, the Cb and Cr color components may still share the same block partitioning signal, but the signal may be separated from the luma block partitioning signal.
[0038] In at least one embodiment, one or more values of T1 and T2 discussed above may be signaled in a high level syntax, including but not limited to a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, and a tile header.
[0039] 9, an operational flow diagram illustrating steps of a method 9000 for encoding and / or decoding video data is shown. In some implementations, one or more process blocks of FIG. 4 may be performed by computer 102 (FIG. 1) and server computer 114 (FIG. 1). In some implementations, one or more process blocks of FIG. 4 may be performed by another device or group of devices separate from or including computer 102 and server computer 114.
[0040] At 9100, the method 9000 includes acquiring video data.
[0041] At 9200, the method 9000 includes analyzing the acquired video data to obtain partitioning parameters.
[0042] At 9300, method 9000 includes obtaining a partitioned super-block based on the partitioning parameters. In an embodiment, based on a luma block region size of a smallest luma block of the partitioned super-block being greater than a first threshold or a luma partition depth of the smallest luma block being less than a second threshold, the luma blocks of the partitioned super-block and the chroma blocks of the partitioned super-block may be partitioned based on a first block partitioning structure. In an embodiment, based on a luma block region size being less than the first threshold or a luma partition depth being greater than a second threshold, the luma blocks of the partitioned super-block may be partitioned based on the first block partitioning structure and the chroma blocks of the partitioned super-block may be partitioned based on a second block partitioning structure different from the first block partitioning structure.
[0043] At 9400, the method 9000 includes decoding the video data based on the partitioned super-blocks.
[0044] In one or more embodiments, the first threshold may be one of 128 and / or 256, and the second threshold may be one of 1 and / or 2.
[0045] In one or more embodiments, a partitioned super-block may correspond to an intra-frame.
[0046] In one or more embodiments, the chroma partitioning depth of the smallest chroma block partitioned based on the second block partitioning structure may be less than the luma partitioning depth.
[0047] In one or more embodiments, the chroma partitioning depth of the smallest chroma block partitioned based on the second block partitioning structure may be determined based on the luma partitioning depth.
[0048] In one or more embodiments, the first block partitioning structure may include a partition of a second block partitioning structure that includes additional partitions.
[0049] In one or more embodiments, partitioning parameters may be signaled jointly for multiple color components based on the luma block region size being larger than a first threshold or the luma partitioning depth being smaller than a second threshold; Based on the luma block region size being smaller than a first threshold or the luma partition depth being smaller than a second threshold, the partitioning parameters may be signaled separately among the multiple color components.
[0050] In one or more embodiments, the partitioning parameters may be signaled in at least one of a video parameter set, a sequence parameter set, a picture parameter set, an adaptive parameter set, a slice header, and / or a tile header.
[0051] 9 is intended as only an example of one embodiment and is not meant to be a limitation on how different embodiments may be implemented Many modifications to the depicted environments may be made based on design and implementation requirements.
[0052] Figure 10 is a block diagram 500 of the internal and external components of the computer shown in Figure 1 in accordance with an exemplary embodiment. Figure 10 is provided only as an example of one implementation and is not intended to imply limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.
[0053] Computer 102 (FIG. 1) and server computer 114 (FIG. 1) may include respective sets of internal components 800A,B and external components 900A,B shown in FIG. 4. Each set of internal components 800 includes one or more processors 820, one or more computer-readable RAMs 822 and one or more computer-readable ROMs 824 on one or more buses 826, one or more operating systems 828, and one or more tangible computer-readable storage devices 830.
[0054] The processor 820 is implemented in hardware, firmware, or a combination of hardware and software. The processor 820 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another type of processing component. In some implementations, the processor 820 includes one or more processors that can be programmed to perform functions. The bus 826 includes components that enable communication between the internal components 800A,B.
[0055] One or more operating systems 828, software programs 108 (FIG. 1) on server computer 114 (FIG. 1), and video encoding program 116 (FIG. 1) are stored in one or more of respective tangible computer readable storage devices 830, and are executed by one or more of respective processors 820 via one or more of respective RAMs 822 (which typically include cache memory). In the embodiment shown in FIG. 10, each of the tangible computer readable storage devices 830 is a magnetic disk storage device of an internal hard drive. Alternatively, each of the tangible computer readable storage devices 830 is a semiconductor storage device such as ROM 824, EPROM, flash memory, optical disk, magneto-optical disk, solid state disk, compact disk (CD), digital versatile disk (DVD), floppy disk, cartridge, magnetic tape, and / or another type of tangible non-transitory computer readable storage device capable of storing computer programs and digital information.
[0056] Each set of internal components 800A,B also includes a R / W drive or interface 832 for reading from and writing to one or more tangible, portable, computer-readable storage devices 936, such as CD-ROMs, DVDs, memory sticks, magnetic tapes, magnetic disks, optical disks, or semiconductor storage devices. Software programs, such as software program 108 (FIG. 1) and video encoding program 116 (FIG. 1), may be stored in one or more of the respective tangible, portable, computer-readable storage devices 936 and read via the respective R / W drive or interface 832 and loaded onto the respective hard drives 830.
[0057] Each set of internal components 800A,B also includes a network adapter or interface 836, such as a TCP / IP adapter card, a wireless Wi-Fi interface card, or a 3G, 4G, or 5G wireless interface card, or other wired or wireless communication link. The software program 108 (FIG. 1) and the video encoding program 116 (FIG. 1) on the server computer 114 (FIG. 1) can be downloaded from an external computer to the computer 102 (FIG. 1) and the server computer 114 via a network (e.g., the Internet, a local area network, or other wide area network) and the respective network adapter or interface 836. From the network adapter or interface 836, the software program 108 and the video encoding program 116 on the server computer 114 are loaded onto the respective hard drives 830. The network may include copper wire, fiber optic, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers.
[0058] Each set of external components 900A,B may include a computer display monitor 920, a keyboard 930, and a computer mouse 934. The external components 900A,B may also include touch screens, virtual keyboards, touch pads, pointing devices, and other human interface devices. Each set of internal components 800A,B also includes a device driver 840 for interfacing to the computer display monitor 920, the keyboard 930, and the computer mouse 934. The device driver 840, the R / W drive or interface 832, and the network adapter or interface 836 include hardware and software (stored in the storage device 830 and / or the ROM 824).
[0059] Although the present disclosure includes detailed descriptions of cloud computing, it is understood in advance that implementations of the teachings recited herein are not limited to cloud computing environments. Rather, some embodiments may be practiced in conjunction with other types of computing environments now known or later developed.
[0060] Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0061] Its features are as follows. On-Demand Self-Service: Cloud consumers can unilaterally provision computing capabilities such as server time and network storage automatically as needed, without the need for human interaction with a service provider. Broad network access: Functionality is available over the network and accessed via standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., cell phones, laptops, PDAs). Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated according to demand. Consumers typically have no control or knowledge of the exact location of the provided resources, although there is a sense of location independence in that they may be able to specify location at a higher level of abstraction (e.g. country, state, data center, etc.). Elasticity: Capabilities can be provisioned quickly and elastically, and sometimes automatically scaled out quickly, and released quickly and scaled in quickly. To the consumer, the capabilities available for provisioning often appear unlimited and can be purchased in any quantity at any time. Metering Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at an abstraction level appropriate to the type of service (e.g., storage, processing, bandwidth, active user counts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services they consume.
[0062] The service model is as follows: Software as a Service (SaaS): The functionality offered to the consumer is the use of a provider's applications running on a cloud infrastructure. The applications can be accessed from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application functions, except for limited user-specific application configuration settings. Platform as a Service (PaaS): The functionality offered to the consumer is to deploy applications that the consumer creates or acquires, written using programming languages and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the deployed applications and possibly the configuration of the application hosting environment. Infrastructure as a Service (IaaS): The functionality provided to the consumer is to provision processing, storage, network, and other basic computing resources, where the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does control the operating systems, storage, deployed applications, and possibly limited control over selected network components (e.g., host firewalls).
[0063] The deployment model is as follows: Private Cloud: The cloud infrastructure is operated exclusively for an organization. The cloud infrastructure is managed by the organization or a third party and can be on-premise or off-premise. Community Cloud: Cloud infrastructure is shared by multiple organizations to support a particular community of shared concerns (mission, security requirements, policies, compliance considerations, etc.) The cloud infrastructure may be managed by the organizations or a third party and may reside on-premise or off-premise. Public Cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by organizations that sell cloud services. Hybrid Cloud: A cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain a unique entity but are joined by standardized or proprietary technologies (e.g., cloud bursting for load balancing between clouds) that enable data and application portability.
[0064] Cloud computing environments are service-oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that consists of a network of interconnected nodes.
[0065] Referring to FIG. 11, an exemplary cloud computing environment 600 that may be suitable for implementing certain embodiments of the disclosed subject matter is shown. As shown, the cloud computing environment 600 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N, can communicate. The cloud computing nodes 10 can communicate with each other. The nodes can be physically or virtually grouped into one or more networks, such as the private, community, public, or hybrid clouds described above, or combinations thereof (not shown). This allows the cloud computing environment 600 to provide infrastructure, platform, and / or software as a service without the cloud consumer having to maintain resources on the local computing device. It will be understood that the types of computing devices 54A-N shown in FIG. 11 are intended as examples only, and that the cloud computing node 10 and cloud computing environment 600 can communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).
[0066] Referring to Figure 12, a set of functional abstraction layers 700 provided by the cloud computing environment 600 (Figure 11) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 12 are for illustrative purposes only and the embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0067] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components. In some embodiments, software components include network application server software 67 and database software 68.
[0068] The virtualization layer 70 provides an abstraction layer upon which the following examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0069] In one example, the management layer 80 may provide the functionality described below: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks as well as protection of data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides allocation and management of cloud computing resources such that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance provisioning and procurement of cloud computing resources in anticipation of future requirements according to SLAs.
[0070] The workload layer 90 provides examples of functions that can utilize a cloud computing environment. Examples of workloads and functions that can be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction provision 93, data analytics processing 94, transaction processing 95, and video encoding / decoding 96. Video encoding / decoding 96 can encode / decode video data using a delta angle derived from a nominal angle.
[0071] Some embodiments may relate to systems, methods, and / or computer-readable media at any possible level of technical detail integration. The computer-readable media may include a non-transitory computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform operations.
[0072] A computer-readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memories (RAMs), read-only memories (ROMs), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or raised structures in grooves with instructions recorded thereon, and any suitable combination of the foregoing. A computer-readable storage medium as used herein should not be construed as a transitory signal itself, such as an electric signal transmitted over a wire, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electric signal transmitted over a wire.
[0073] The computer readable program instructions described herein can be downloaded from a computer readable storage medium to each computing / processing device or to an external computer or storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can be composed of copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions for storage in a computer readable storage medium in the respective computing / processing device.
[0074] The computer readable program code / instructions for performing the operations may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object oriented programming languages such as Smalltalk, C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer readable program instructions may be executed completely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer, partially on a remote computer, or completely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry to perform an aspect or operation.
[0075] These computer readable program instructions can be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, whereby the instructions, executed via the processor of the computer or other programmable data processing device, create means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer readable program instructions can also be stored on a computer readable storage medium that can direct a computer, programmable data processing device, and / or other device to function in a particular manner, whereby a computer readable storage medium with instructions stored therein includes an article of manufacture containing instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0076] The computer readable program instructions may be loaded into a computer, other programmable data processing device, or other apparatus to cause the computer, other programmable apparatus, or other apparatus to execute a series of operational steps to generate a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other apparatus perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0077] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer-readable media according to various embodiments. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of an instruction, which includes one or more executable instructions for implementing the specified logical function. The methods, computer systems, and computer-readable media may include additional blocks, fewer blocks, different blocks, or blocks in different arrangements than those shown in the figures. In some alternative implementations, the functions shown in the blocks may differ from the order shown in the figures. For example, two blocks shown in succession may actually be executed simultaneously or substantially simultaneously, or the blocks may be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a special purpose hardware-based system that performs the specified functions or actions, or a combination of special purpose hardware and computer instructions.
[0078] It will be apparent that the systems and / or methods described herein may be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specific control hardware or software code used to implement these systems and / or methods is not intended to limit the embodiments. Thus, the operations and behavior of the systems and / or methods have been described herein without reference to any specific software code. It will be understood that software and hardware may be designed to implement the systems and / or methods based on the description herein.
[0079] No element, act, or instruction used herein should be construed as critical or essential unless expressly described as such. Also, as used herein, the article "a" or "an" is intended to include one or more items and may be used interchangeably with "one or more." Additionally, as used herein, the term "set" is intended to include one or more items (e.g., related items, unrelated items, combinations of related and unrelated items, etc.) and may be used interchangeably with "one or more." When only one item is intended, "one" or similar language is used. Also, as used herein, "has, includes, includes, includes" or "includes" is intended to include one or more items (e.g., related items, unrelated items, combinations of related and unrelated items, etc.). Terms such as "have," "having," and the like are intended to be open-ended terms. Further, the phrase "based on" is intended to mean "based at least in part on," unless otherwise specified.
[0080] The description of various aspects and embodiments is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Even if combinations of features are recited in the claims and / or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. Indeed, many of these features can be combined in ways not specifically recited in the claims and / or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes each dependent claim in combination with all other claims in the claim set. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used in this specification have been selected to best explain the principles of the embodiments, practical applications or technical improvements to the technology found in the marketplace, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0081] The contents of the claims as originally filed are described below as examples. [Example 1] 1. A method of video decoding using at least one processor, the method comprising: acquiring video data; analyzing the acquired video data to obtain partitioning parameters; obtaining a partitioned super-block based on the partitioning parameters; and decoding the video data based on the partitioned super-blocks; based on a luma block region size of a smallest luma block of the partitioned super-block being greater than a first threshold or a luma partition depth of the smallest luma block being less than a second threshold, the luma blocks of the partitioned super-block and the chroma blocks of the partitioned super-block are partitioned based on a first block partitioning structure; based on the luma block region size being smaller than the first threshold or the luma partition depth being larger than the second threshold, the luma blocks of the partitioned super-block are partitioned based on the first block partitioning structure and the chroma blocks of the partitioned super-block are partitioned based on a second block partitioning structure different from the first block partitioning structure. method. [Example 2] 2. The method of claim 1, wherein the first threshold is one of 128 and 256, and the second threshold is one of 1 and 2. [Example 3] 3. The method of claim 1 or 2, wherein the partitioned super-block corresponds to an intra-frame. [Example 4] 4. The method of any one of examples 1 to 3, wherein a chroma partitioning depth of a smallest chroma block partitioned based on the second block partitioning structure is less than the luma partitioning depth. [Example 5] 4. The method of any one of examples 1 to 3, wherein a chroma partitioning depth of a smallest chroma block partitioned based on the second block partitioning structure is determined based on the luma partitioning depth. [Example 6] 6. The method of any one of claims 1 to 5, wherein the first block partitioning structure includes a partition of the second block partitioning structure that includes an additional partition. [Example 7] based on the luma block region size being greater than the first threshold or the luma partition depth being less than the second threshold, the partitioning parameters are signaled jointly for multiple color components; 7. The method of any one of claims 1 to 6, wherein the partitioning parameters are signaled separately among the multiple color components based on the luma block region size being smaller than the first threshold or the luma partitioning depth being smaller than the second threshold. [Example 8] 8. The method according to any one of the preceding embodiments, wherein the partitioning parameters are signaled in at least one of a video parameter set, a sequence parameter set, a picture parameter set, an adaptation parameter set, a slice header, and a tile header. [Example 9] 1. An apparatus for video coding, the apparatus comprising: at least one memory configured to store program code; at least one processor configured to read the program code and to operate as directed by the program code; The program code, when executed by the at least one processor, The method according to any one of Examples 1 to 8 is carried out, Device. [Example 10] 1. A computer program comprising one or more instructions that, when executed by one or more processors of an apparatus for video coding, cause the one or more processors to: Carrying out the method according to any one of Examples 1 to 8, Computer program.
[0082] Selected acronyms: HEVC: High Efficiency Video Coding VVC: Versatile Video Coding CfL: Chroma from Luma SDT: Semi-disjoint tree SDP: Semi-isolated partitioning SST: Semi-separate tree SB: Super Block CTU: Coding Tree Unit
Claims
1. 1. A method of video decoding using at least one processor, the method comprising: acquiring video data; analyzing the acquired video data to acquire partitioning parameters, the partitioning parameters including a luma partitioning parameter corresponding to a luma component and one or more chroma partitioning parameters corresponding to a plurality of color components; obtaining a partitioned super-block based on the partitioning parameters; determining whether the one or more chroma partitioning parameters are signaled for the multiple color components individually or jointly based on at least one of a luma block region size of a smallest luma block of the partitioned super-block and a luma partitioning depth of the smallest luma block; and decoding the video data based on the result of the determination. based on the luma block region size of the smallest luma block being greater than a first threshold or the luma partitioning depth being less than or equal to a second threshold, the luma blocks of the partitioned super-block and the chroma blocks of the partitioned super-block are partitioned based on a first block partitioning structure; based on the luma block region size being less than or equal to the first threshold or the luma partitioning depth being greater than the second threshold, the luma blocks of the partitioned super-block are partitioned based on the first block partitioning structure and the chroma blocks of the partitioned super-block are partitioned based on a second block partitioning structure different from the first block partitioning structure. method.
2. based on the luma block region size of the smallest luma block being greater than the first threshold or the luma partition depth of the smallest luma block being less than the second threshold, the one or more chroma partitioning parameters including chroma partitioning parameters signaled jointly for multiple color components; 2. The method of claim 1 , wherein based on the luma block region size being smaller than the first threshold or the luma partitioning depth being greater than the second threshold, the one or more chroma partitioning parameters include multiple chroma partitioning parameters signaled separately for multiple color components.
3. The method of claim 1 or 2, wherein the first threshold is one of 128 and 256, and the second threshold is one of 1 and 2.
4. The method of claim 1 , wherein a chroma partitioning depth of a smallest chroma block that is partitioned based on the second block partitioning structure is less than the luma partitioning depth.
5. 5. The method of claim 1, wherein the first threshold or the second threshold is signaled in at least one of a video parameter set, a sequence parameter set, a picture parameter set, an adaptation parameter set, a slice header, and a tile header.
6. 1. An apparatus for video decoding, the apparatus comprising: at least one memory configured to store program code; at least one processor configured to read the program code and to operate as directed by the program code; The program code, when executed by the at least one processor, The method according to any one of claims 1 to 5 is carried out, Device.
7. 1. A computer program comprising one or more instructions that, when executed by one or more processors of an apparatus for video coding, cause the one or more processors to:
6. Carrying out the method according to any one of claims 1 to 5, Computer program.
Citation Information
Patent Citations
Method and apparatus for encoding / decoding image and recording medium for storing bitstream
KR1020190033036A
Image decoding apparatus and image coding apparatus
WO2018037853A1
Systems and methods for scaling transform coefficient level values
WO2018142823A1