WO2020056763A1 - Adaptive coding of video coding units based on coding block type - Google Patents
Adaptive coding of video coding units based on coding block type Download PDFInfo
- Publication number
- WO2020056763A1 WO2020056763A1 PCT/CN2018/107096 CN2018107096W WO2020056763A1 WO 2020056763 A1 WO2020056763 A1 WO 2020056763A1 CN 2018107096 W CN2018107096 W CN 2018107096W WO 2020056763 A1 WO2020056763 A1 WO 2020056763A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- coding units
- luma
- samples
- chroma
- block size
- 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.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Definitions
- a coding mode In H. 265/HEVC (High Efficiency Video Coding) , a coding mode, pulse code modulation (PCM) , is included. If PCM is applied for a coding unit, the samples of a coding unit are encoded by directly representing the sample values without prediction or application of a transform. In other words, both luma and chroma sample values are directly encoded into the bitstream.
- PCM pulse code modulation
- coding units are square and contain both luma and chroma samples.
- a coding unit may be non-square (Multi-Type Tree) and may contain only chroma samples (Separated Tree Block Partition) .
- FIG. 1 schematically illustrates an example of a picture 100 divided into CTUs 102.
- a CTU (frame) is split into square coding units (CUs) (each CTU is divided into several square CUs) by using a quaternary-tree structure denoted as a coding tree to adapt to various local characteristics.
- the decision whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level.
- Each CU may be further split into one, two or four prediction units (PUs) according to the PU splitting type.
- a CU may be partitioned into transform units (TUs) according to another quaternary-tree structure similar to the coding tree for the CU.
- transform units TUs
- One of key feature of the HEVC structure is that it has the multiple partition conceptions including CU, PU and TU.
- a quadtree with nested multi-type tree using binary and ternary splits segmentation structures replaces the concepts of multiple partition unit types, i.e. it removes the separation of the CU, PU and TU concepts except as needed for CUs that have a size too large for the maximum transform length and supports more flexibility for CU partition shapes.
- a CU may have either a square or rectangular shape.
- a CTU may be first partitioned by a quaternary tree (a.k.a. quadtree) structure. The quaternary tree leaf nodes may then be further partitioned by a multi-type tree structure.
- H. 265/HEVC all coding units are square and contain both luma and chroma samples.
- HEVC/H. 265 PCM mode both luma and chroma sample values are directly encoded into the bitstream.
- the constrain of enabling PCM mode is for a square coding unit only.
- a coding unit can be non-square (multi-type tree) and may contain only chroma samples (Separated Tree Block Partition) .
- HEVC/H. 265 PCM mode may not be ideal for the developing H. 266/VVC.
- FIG. 1 schematically illustrates an example of a picture divided into CTUs.
- FIG. 2 schematically illustrates four splitting types in a multi-type tree structure.
- FIG. 3 schematically illustrates a signaling mechanism of the partition splitting information in quadtree structure with nested multi-type tree coding tree structure.
- FIG. 4 schematically illustrates a CTU divided into multiple CUs with a quadtree and nested multi-type tree coding block structure.
- FIG. 5 illustrates example syntax of a PCM mode.
- FIG. 6 illustrates example syntax for HEVC/H. 265 for determining whether the PCM mode is enabled for a coding unit.
- FIG. 7 illustrates example syntax of a PCM sample in accordance with configurations.
- FIG. 8 illustrates an example of modified syntax, with respect to FIGS. 5 and/or 6, in accordance with configurations.
- FIG. 9 illustrates an example of modified syntax, with respect to FIGS. 5, 6 and/or 8, in accordance with configurations.
- FIG. 10 illustrates an example of modified syntax, with respect to FIGS. 5, 6, 8 and/or 9, in accordance with configurations.
- FIG. 11 illustrates an example of syntax constraints in the log domain for the first example syntax previously described with respect to FIG. 8.
- FIG. 12 schematically illustrates an example of a CU for 4: 2: 0 video, where the CU includes both luma and chroma samples.
- FIG 13 schematically illustrates an example scenario where a CU for 4: 2: 0 video includes only luma samples.
- FIG 14 schematically illustrates an example scenario where a CU for 4: 2: 0 video includes only chroma samples.
- FIG. 15 illustrates an example flowchart describing a process for improving PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) .
- FIG. 16 illustrates an example computing device for implementing the system and methods for improving PCM for coding units that may be non- square (multi-type tree) and that may contain only chroma samples (Separated Tree Block Partition) .
- Systems and methods discussed herein are directed to improving video coding and PCM, and more specifically to improving video coding and PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) , e.g., a modified PCM for H. 266/VVC.
- a quadtree with nested multi-type tree using binary and ternary splits segmentation structures replaces the concepts of multiple partition unit types, i.e. it removes the separation of the CU, PU and TU concepts except as needed for CUs that have a size too large for the maximum transform length and supports more flexibility for CU partition shapes.
- a CU may have either a square or rectangular shape.
- a CTU may be first partitioned by a quaternary tree (a.k.a. quadtree) structure. The quaternary tree leaf nodes may then be further partitioned by a multi-type tree structure.
- FIG. 2 schematically illustrates four example splitting types in a multi-type tree structure, including vertical binary splitting (SPLIT_BT_VER) 202, horizontal binary splitting (SPLIT_BT_HOR) 204, vertical ternary splitting (SPLIT_TT_VER) 206, and horizontal ternary splitting (SPLIT_TT_HOR) 208.
- the multi-type tree leaf nodes are referred to as CUs and unless the CU is too large for the maximum transform length, such segmentation is used for prediction and transform processing without any further partitioning. In other words, in most cases, the CU, PU and TU have the same block size in the quadtree with nested multi-type tree coding block structure.
- a CU consists of coding blocks (CBs) of different color components, e.g., one CU may contain one luma CB and two chroma CBs (unless the video is monochrome –i.e., having only one color component) .
- CBs coding blocks
- FIG. 3 schematically illustrates a signaling mechanism 300 of the partition splitting information in quadtree structure with nested multi-type tree coding tree structure.
- a CTU is treated as the root of a quaternary tree and is first partitioned by a quaternary tree structure.
- Each quaternary tree leaf node (when sufficiently large to allow it) may then be further partitioned by a multi-type tree structure.
- a first flag mtt_split_flag
- a second flag (mtt_split_vertical_flag) is enabled to indicate the splitting direction, and then a third flag (mtt_split_binary_flag) is enabled at 306 to indicate whether the split is a binary split or a ternary split.
- mtt_split_vertical_flag a second flag
- mtt_split_binary_flag a third flag
- the multi-type tree splitting mode (MttSplitMode) of a CU is derived as illustrated in Table 1.
- FIG. 4 schematically illustrates a CTU 400 divided into multiple CUs 402 with a quadtree and nested multi-type tree coding block structure, where the bold block edges 404 represent quadtree partitioning and the remaining non-bold edges 406 represent multi-type tree partitioning.
- the quadtree with nested multi-type tree partition provides a content-adaptive coding tree structure comprised of CUs 402.
- the size of the CU may be as large as the CTU or as small as 4 ⁇ 4 in units of luma samples. For the case of the 4: 2: 0 chroma format, the maximum chroma CB size is 64 ⁇ 64 and the minimum chroma CB size is 2 ⁇ 2.
- SPSS syntax elements for the quadtree with nested multi-type tree coding tree scheme (SPSS originally stood for Statistical Package for the Social Sciences (SPSS) ) .
- SPSS syntax is a programming language that is unique to SPSS.
- CTU size the root node size of a quaternary tree
- MinQTSize the minimum allowed quaternary tree leaf node size
- MaxBtSize the maximum allowed binary tree root node size
- MaxTtSize the maximum allowed ternary tree root node size
- MaxMttDepth the maximum allowed hierarchy depth of multi-type tree splitting from a quadtree leaf
- MinBtSize the minimum allowed binary tree leaf node size
- MinTtSize the minimum allowed ternary tree leaf node size
- the CTU size is set as 128 ⁇ 128 luma samples with two corresponding 64 ⁇ 64 blocks of 4: 2: 0 chroma samples
- the MinQTSize is set as 16 ⁇ 16
- the MaxBtSize is set as 128 ⁇ 128
- MaxTtSize is set as 64 ⁇ 64
- the MinBtSize and MinTtSize (for both width and height) is set as 4 ⁇ 4
- the MaxMttDepth is set as 4.
- the quaternary tree partitioning is applied to the CTU first to generate quaternary tree leaf nodes.
- the quaternary tree leaf nodes may have a size from 16 ⁇ 16 (i.e., the MinQTSize) to 128 ⁇ 128 (i.e., the CTU size) . If the leaf QT node is 128 ⁇ 128, it will not be further split by the ternary tree since the size exceeds the MaxTtSize (i.e., 64 ⁇ 64) . Otherwise, the leaf quadtree node may be further partitioned by the multi-type tree. Therefore, the quaternary tree leaf node is also the root node for the multi-type tree and it has multi-type tree depth (mttDepth) as 0. When the multi-type tree depth reaches MaxMttDepth (i.e., 4) , no further splitting is considered.
- the coding tree scheme supports the ability for the luma and chroma samples to have a separate block tree structure.
- the luma and chroma coding tree blocks (CTBs) in one CTU have to share the same coding tree structure.
- the luma and chroma samples may have a separate block tree structure.
- a CU in an I slice may consist of a coding block of the luma component or coding blocks 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.
- the minimum luma CB size is 4x4 luma samples and the minimum chroma CB size is 2x2 chroma samples for the 4: 2: 0 sample format.
- the 2x2 chroma CB is difficult for hardware implementation.
- the minimum chroma CB size cannot be adjusted independently from the minimum luma CB size.
- a coding mode In H. 265/HEVC, a coding mode, pulse code modulation (PCM) , is included. If PCM mode is applied for a coding unit, the samples of a coding unit are encoded by directly representing the sample values without prediction or application of a transform. In other words, both luma and chroma sample values are directly encoded into the bitstream.
- FIG. 5 illustrates example syntax of the PCM mode.
- H. 265/HEVC there is a mechanism to determine whether the PCM mode is enabled for a coding unit (based upon CB size) .
- block size of a coding unit is larger than Log2MinIpcmCbSizeY and less than Log2MaxIpcmCbSizeY
- PCM is enabled. Otherwise, PCM mode is disabled.
- two syntax elements log2_min_pcm_luma_coding_block_size_minus3 and log2_diff_max_min_pcm_luma_coding_block_size
- FIG. 6 illustrates example syntax for HEVC/H. 265 for determining whether the PCM mode is enabled for a coding unit.
- the variable log2_min_pcm_luma_coding_block_size_minus3 plus 3 specifies the minimum size of coding blocks with a pcm_flag equal to 1.
- the variable Log2MinIpcmCbSizeY is set equal to log2_min_pcm_luma_coding_block_size_minus3 + 3.
- the value of Log2MinIpcmCbSizeY may be in the range of Min (MinCbLog2SizeY, 5 ) to Min (CtbLog2SizeY, 5 ) , inclusive.
- Log2MaxIpcmCbSizeY is set equal to log2_diff_max_min_pcm_luma_coding_block_size + Log2MinIpcmCbSizeY.
- the value of Log2MaxIpcmCbSizeY shall be less than or equal to Min (CtbLog2SizeY, 5 ) .
- coding units are square and contain both luma and chroma samples.
- HEVC/H. 265 PCM mode both luma and chroma sample values are directly encoded into the bitstream.
- the constrain of enabling PCM mode is for a square coding unit only.
- a coding unit can be non-square (multi-type tree) and may contain only chroma samples (Separated Tree Block Partition) .
- adaptive coding of video CUs based on CB type e.g., luma samples and chroma samples
- an adaptive PCM mode includes syntax that is adaptively switched according to the coding block types included in the CUs, e.g., luma samples and chroma samples.
- Three example cases include:
- both luma and chroma sample values are directly encoded into the bitstream.
- a coding unit contains only luma samples (luma coding unit under separated tree partition or luma coding unit for 400 color format) , only luma sample values are directly encoded into the bitstream.
- FIG. 7 illustrates example syntax of a PCM sample in accordance with configurations.
- a coding unit can be non-square (multi-type tree) .
- height and width of a coding unit may be different. Therefore, in accordance with configurations, the condition of enabling PCM may be modified for a coding unit.
- FIG. 8 illustrates example modified syntax 802, with respect to FIGS. 5 and/or 6, for a first example of enabling PCM for a coding unit.
- height and width of a coding unit are larger than MinIpcmCbSizeY (or compared in log domain, e.g., Log2MinIpcmCbSizeY in FIG. 11) and less than MaxIpcmCbSizeY (or compared in log domain, e.g., Log2MaxIpcmCbSizeY in FIG. 11)
- the PCM mode is enabled. Otherwise, the PCM mode is disabled.
- the variable log2_min_pcm_luma_coding_block_size_minus3 plus 3 specifies the minimum size of coding blocks with the pcm_flag equal to 1.
- the variable Log2MinIpcmCbSizeY is set equal to log2_min_pcm_luma_coding_block_size_minus3 + 3.
- the value of Log2MinIpcmCbSizeY shall be in the range of Min (MinCbLog2SizeY, 5 ) to Min (CtbLog2SizeY, 5 ) , inclusive.
- the variable MinIpcmCbSizeY may be set equal to 2 ⁇ Log2MinIpcmCbSizeY.
- the variable log2_diff_max_min_pcm_luma_coding_block_size specifies the difference between the maximum and minimum size of coding blocks with the pcm_flag equal to 1.
- the variable Log2MaxIpcmCbSizeY is set equal to log2_diff_max_min_pcm_luma_coding_block_size + Log2MinIpcmCbSizeY.
- the value of Log2MaxIpcmCbSizeY shall be less than or equal to Min (CtbLog2SizeY, 5 ) .
- the variable MaxIpcmCbSizeY is set equal to 2 ⁇ Log2MaxIpcmCbSizeY.
- FIG. 9 illustrates example modified syntax 902, with respect to FIGs. 5, 6 and/or 8, for a second example of enabling PCM for a coding unit.
- the PCM mode is enabled. Otherwise, the PCM mode is disabled.
- This example is different from the first example in that if the separated tree is used and the coding unit is a chroma sample (block) , the height and width are defined as the chroma sample’s height and width.
- the variable log2_min_pcm_luma_coding_block_size_minus3 plus 3 specifies the minimum size of coding blocks with the pcm_flag equal to 1.
- the variable Log2MinIpcmCbSizeY is set equal to log2_min_pcm_luma_coding_block_size_minus3 + 3.
- the value of Log2MinIpcmCbSizeY shall be in the range of Min (MinCbLog2SizeY, 5 ) to Min (CtbLog2SizeY, 5 ) , inclusive.
- the variable MinIpcmCbSizeY is set equal to 2 ⁇ Log2MinIpcmCbSizeY.
- the variable log2_diff_max_min_pcm_luma_coding_block_size specifies the difference between the maximum and minimum size of coding blocks with the pcm_flag equal to 1.
- the variable Log2MaxIpcmCbSizeY is set equal to log2_diff_max_min_pcm_luma_coding_block_size + Log2MinIpcmCbSizeY.
- the value of Log2MaxIpcmCbSizeY shall be less than or equal to Min (CtbLog2SizeY, 5 ) .
- the variable MaxIpcmCbSizeY is set equal to 2 ⁇ Log2MaxIpcmCbSizeY.
- FIG. 10 illustrates example modified syntax 1002 with respect to FIGs. 5, 6, 8 and/or 9 for a third example of enabling PCM for a coding unit.
- (height*width) of a coding unit is larger than MinIpcmCbSizeY and less than MaxIpcmCbSizeY, the PCM mode is enabled. Otherwise, the PCM mode is disabled.
- the height and width is defined as the individual chroma samples’height and width.
- log2_min_pcm_luma_coding_block_size_minus3 and log2_diff_max_min_pcm_luma_coding_block_size are signaled in SPSS for both luma and chroma coding units. Instead of using shared parameters, separated parameters may be signaled for luma and chroma coding units.
- FIG. 11 illustrates an example of syntax constraints in the log domain for the first example syntax previously described with respect to FIG. 8.
- FIG. 12 schematically illustrates an example of a CU 1200 for 4: 2: 0 video, where the CU 1200 includes both a luma sample 1202 and chroma samples 1204, 1206.
- the size Lcb of chroma samples is less than the size Ly of luma samples.
- the size Ly of luma samples may be used to determine whether the PCM should be enabled by comparing Ly with a maximum size and a minimum size, e.g., minimum size ⁇ Ly ⁇ maximum size.
- a CU may contain only luma samples or may contain only chroma samples.
- FIG 13 schematically illustrates an example scenario where a CU 1300 for 4: 2: 0 video includes only a luma sample 1302. If the luma sample 1302 is square in shape (Ly by Ly) , the size Ly of the luma sample 1302 may be used to determine whether the PCM should be enabled by comparing Ly with a maximum size and a minimum size, e.g., minimum size ⁇ Ly ⁇ maximum size.
- both the height and width of the luma sample may be compared with the maximum size and the minimum size in order to determine whether the PCM should be enabled, e.g., both the height and width need to be greater than the minimum size and less than the maximum size.
- FIG 14 schematically illustrates an example scenario where a CU 1400 for 4: 2: 0 video includes only chroma samples 1402, 1404. Since chroma samples are smaller than corresponding luma samples, in configurations, the size of a corresponding luma sample (e.g., equivalent Ly size) , even though not included in the CU 1400, may still be used to determine whether the PCM should be enabled by comparing the equivalent size Ly of the equivalent Luma sample with a maximum size and a minimum size, e.g., minimum size ⁇ Ly ⁇ maximum size.
- equivalent Ly size e.g., equivalent Ly size
- both the equivalent height and equivalent width of a corresponding luma sample may be compared with the maximum size and the minimum size in order to determine whether the PCM should be enabled, e.g., both the equivalent height and equivalent width need to be greater than the minimum size and less than the maximum size.
- the size Lcb of the chroma samples 1402, 1404 may be used to determine whether the PCM should be enabled by comparing Lcb with a maximum size and a minimum size, e.g., minimum size ⁇ Lcb ⁇ maximum size. If a chroma sample 1402 and/or 1404 is non-square, then both the height and width of the chroma sample 1402 and/or 1404 may be compared with the maximum size and the minimum size in order to determine whether the PCM should be enabled, e.g., both the height and width need to be greater than the minimum size and less than the maximum size.
- FIG. 15 illustrates an example flowchart 1500 describing a process for improving PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) .
- a CTU such as CTU 400
- CUs such as CUs 402, as illustrated in FIG. 4. It may then be determined, at block 1504, if the CUs include luma samples and/or chroma samples. If the CUs include both luma samples and chroma samples, at block 1506, it is determined if PCM is enabled, e.g., the sizes of the CUs are within a predetermined size range. If yes, luma sample values and chroma sample values are encoded into a bitstream at block 1508. If not, the process ends at block 1510.
- the process ends at block 1510.
- FIG. 16 illustrates an example computing device 1600 for implementing the system and methods for improving PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) .
- the techniques and mechanisms described herein may be implemented by multiple instances of the computing device 1600, as well as by any other computing device, system, and/or environment.
- the computing device 1600 shown in FIG. 16 is only one example of a computing device and is not intended to suggest any limitation as to the scope of use or functionality of any computing device utilized to perform the processes and/or procedures described above.
- the computing device 1600 may include one or more processors 1602 and system memory 1604 communicatively coupled to the processor (s) 1602.
- the processor (s) 1602 may execute one or more modules and/or processes to cause the computing device 1600 to perform a variety of functions.
- the processor (s) 1602 may include a central processing unit (CPU) , a graphics processing unit (GPU) , both CPU and GPU, or other processing units or components known in the art. Additionally, each of the processor (s) 1602 may possess its own local memory, which also may store program modules, program data, and/or one or more operating systems.
- the system memory 1604 may be volatile, such as RAM, non-volatile, such as ROM, flash memory, miniature hard drive, memory card, and the like, or some combination thereof.
- the system memory 1604 may include an operating system 1606, one or more program modules 1608, and may include program data 1610.
- the operating system 1606 may include a component based framework 1612 that may support components including properties and events, objects, inheritance, polymorphism, reflection, and may provide an object-oriented component-based application programming interface (API) .
- API application programming interface
- the computing device 1600 may be of a very basic illustrative configuration demarcated by a dashed line 1614.
- the program modules 1608 may include, but are not limited to, a partition module 1616, a determination module 1618, an encoding module 1620, a user interface 1622, and/or other components 1624.
- the partition module 1616 may be configured to partition a CTU, such as the CTUs 102 and 400, into a plurality of coding units, e.g., CUs 402.
- the determination module 1618 may be configured to determine if the CUs include luma samples and/or chroma samples.
- the determination module 1618 may also be configured to determine if PCM is enabled.
- the encoding module 1620 may be configured to encode the luma sample values and/or the chroma samples into a bitstream if PCM is enabled..
- the computing device 1600 may have additional features and/or functionality.
- the computing device 1600 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape.
- additional storage is illustrated in FIG. 16 as removable storage 1626 and non-removable storage 1628.
- the computing device 1600 may also have input device (s) 1630 such as a keyboard, a mouse, a pen, a voice input device, a touch input device, and the like.
- input device (s) 1630 such as a keyboard, a mouse, a pen, a voice input device, a touch input device, and the like.
- Output device (s) 1632 such as a display, speakers, a printer, and the like, may also be included.
- the computing device 1600 may also contain communication connections 1634 that allow the computing device 1600 to communicate with other computing devices 1636, over a network 1638.
- the network 1638, communication media, and/or communication connections may include the Internet, wired media such as a wired network or direct-wired connections, and wireless media such as acoustic, radio frequency (RF) , infrared, and other wireless media.
- the communication connections 1634 are some examples of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, and the like.
- Computer-readable instructions include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like.
- Computer-readable instructions can be implemented on various system configurations, including single-processor or multiprocessor systems, minicomputers, mainframe computers, personal computers, hand-held computing devices, microprocessor-based, programmable consumer electronics, combinations thereof, and the like.
- the computer-readable storage media may include volatile memory (such as random access memory (RAM) ) and/or non-volatile memory (such as read-only memory (ROM) , flash memory, etc. ) .
- volatile memory such as random access memory (RAM)
- non-volatile memory such as read-only memory (ROM) , flash memory, etc.
- the computer-readable storage media may also include additional removable storage and/or non-removable storage including, but not limited to, flash memory, magnetic storage, optical storage, and/or tape storage that may provide non-volatile storage of computer-readable instructions, data structures, program modules, and the like.
- a non-transient computer-readable storage medium is an example of computer-readable media.
- Computer-readable media includes at least two types of computer-readable media, namely computer-readable storage media and communications media.
- Computer-readable storage media includes volatile and non-volatile, removable and non-removable media implemented in any process or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.
- Computer-readable storage media includes, but is not limited to, phase change memory (PRAM) , static random-access memory (SRAM) , dynamic random-access memory (DRAM) , other types of random-access memory (RAM) , read-only memory (ROM) , electrically erasable programmable read-only memory (EEPROM) , flash memory or other memory technology, compact disk read-only memory (CD-ROM) , digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device.
- communication media may embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transmission mechanism. As defined herein, computer-readable storage media do not include communication media.
- the computer-readable instructions stored on one or more non-transitory computer-readable storage media that, when executed by one or more processors, may perform operations described above with reference to FIGs. 1-12.
- computer-readable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types.
- the order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and/or in parallel to implement the processes.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Systems and methods are provided for improving pulse code modulation (PCM) for coding units that may be non-square (multi-type tree) and that may contain only chroma samples (Separated Tree Block Partition), e.g., a modified PCM for H. 266/VVC by partitioning a coding tree unit (CTU) into coding units, determining if the coding units include luma samples and/or chroma samples, and based upon the determining, performing one of (a) if the PCM is enabled and the coding units include both luma samples and chroma samples, encoding luma sample values and chroma sample values into a bitstream, (b) if the PCM is enabled and the coding units include only luma samples, encoding luma sample values into the bitstream, and if the PCM is enabled and the coding units include only chroma samples, encoding chroma sample values into the bitstream.
Description
In H. 265/HEVC (High Efficiency Video Coding) , a coding mode, pulse code modulation (PCM) , is included. If PCM is applied for a coding unit, the samples of a coding unit are encoded by directly representing the sample values without prediction or application of a transform. In other words, both luma and chroma sample values are directly encoded into the bitstream.
In H. 265/HEVC, all coding units are square and contain both luma and chroma samples. However, in the developing H. 266/VVC (Versatile Video Coding) , a coding unit may be non-square (Multi-Type Tree) and may contain only chroma samples (Separated Tree Block Partition) .
In HEVC and current developing H. 266/VVC, pictures are divided into a sequence of coding tree units (CTUs) , e.g., frames. For a picture that has three sample arrays, a CTU consists of an N×N block of luma samples together with two corresponding blocks of chroma samples. In current H. 266/VVC, the maximum allowed size of the luma block in a CTU is specified to be 128×128 blocks. FIG. 1 schematically illustrates an example of a picture 100 divided into CTUs 102.
In HEVC, a CTU (frame) is split into square coding units (CUs) (each CTU is divided into several square CUs) by using a quaternary-tree structure denoted as a coding tree to adapt to various local characteristics. The decision whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU may be further split into one, two or four prediction units (PUs) according to the PU splitting type.
Inside one PU, the same prediction process is applied and the relevant information is transmitted to a decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the PU splitting type, a CU may be partitioned into transform units (TUs) according to another quaternary-tree structure similar to the coding tree for the CU. One of key feature of the HEVC structure is that it has the multiple partition conceptions including CU, PU and TU.
In current VVC/H. 266 development, a quadtree with nested multi-type tree using binary and ternary splits segmentation structures replaces the concepts of multiple partition unit types, i.e. it removes the separation of the CU, PU and TU concepts except as needed for CUs that have a size too large for the maximum transform length and supports more flexibility for CU partition shapes. In the coding tree structure, a CU may have either a square or rectangular shape. A CTU may be first partitioned by a quaternary tree (a.k.a. quadtree) structure. The quaternary tree leaf nodes may then be further partitioned by a multi-type tree structure.
In H. 265/HEVC, all coding units are square and contain both luma and chroma samples. In HEVC/H. 265 PCM mode, both luma and chroma sample values are directly encoded into the bitstream. Thus, the constrain of enabling PCM mode is for a square coding unit only. However, in the developing H. 266/VVC, a coding unit can be non-square (multi-type tree) and may contain only chroma samples (Separated Tree Block Partition) . Thus, HEVC/H. 265 PCM mode may not be ideal for the developing H. 266/VVC.
The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit (s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features.
FIG. 1 schematically illustrates an example of a picture divided into CTUs.
FIG. 2 schematically illustrates four splitting types in a multi-type tree structure.
FIG. 3 schematically illustrates a signaling mechanism of the partition splitting information in quadtree structure with nested multi-type tree coding tree structure.
FIG. 4 schematically illustrates a CTU divided into multiple CUs with a quadtree and nested multi-type tree coding block structure.
FIG. 5 illustrates example syntax of a PCM mode.
FIG. 6 illustrates example syntax for HEVC/H. 265 for determining whether the PCM mode is enabled for a coding unit.
FIG. 7 illustrates example syntax of a PCM sample in accordance with configurations.
FIG. 8 illustrates an example of modified syntax, with respect to FIGS. 5 and/or 6, in accordance with configurations.
FIG. 9 illustrates an example of modified syntax, with respect to FIGS. 5, 6 and/or 8, in accordance with configurations.
FIG. 10 illustrates an example of modified syntax, with respect to FIGS. 5, 6, 8 and/or 9, in accordance with configurations.
FIG. 11 illustrates an example of syntax constraints in the log domain for the first example syntax previously described with respect to FIG. 8.
FIG. 12 schematically illustrates an example of a CU for 4: 2: 0 video, where the CU includes both luma and chroma samples.
FIG 13 schematically illustrates an example scenario where a CU for 4: 2: 0 video includes only luma samples.
FIG 14 schematically illustrates an example scenario where a CU for 4: 2: 0 video includes only chroma samples.
FIG. 15 illustrates an example flowchart describing a process for improving PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) .
FIG. 16 illustrates an example computing device for implementing the system and methods for improving PCM for coding units that may be non- square (multi-type tree) and that may contain only chroma samples (Separated Tree Block Partition) .
Systems and methods discussed herein are directed to improving video coding and PCM, and more specifically to improving video coding and PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) , e.g., a modified PCM for H. 266/VVC.
As previously noted, in current VVC/H. 266 development, a quadtree with nested multi-type tree using binary and ternary splits segmentation structures replaces the concepts of multiple partition unit types, i.e. it removes the separation of the CU, PU and TU concepts except as needed for CUs that have a size too large for the maximum transform length and supports more flexibility for CU partition shapes. In the coding tree structure, a CU may have either a square or rectangular shape. A CTU may be first partitioned by a quaternary tree (a.k.a. quadtree) structure. The quaternary tree leaf nodes may then be further partitioned by a multi-type tree structure.
FIG. 2 schematically illustrates four example splitting types in a multi-type tree structure, including vertical binary splitting (SPLIT_BT_VER) 202, horizontal binary splitting (SPLIT_BT_HOR) 204, vertical ternary splitting (SPLIT_TT_VER) 206, and horizontal ternary splitting (SPLIT_TT_HOR) 208. The multi-type tree leaf nodes are referred to as CUs and unless the CU is too large for the maximum transform length, such segmentation is used for prediction and transform processing without any further partitioning. In other words, in most cases, the CU, PU and TU have the same block size in the quadtree with nested multi-type tree coding block structure. An exception may occur when a maximum supported transform length is smaller than the width or height of the color component of a CU. A CU consists of coding blocks (CBs) of different color components, e.g., one CU may contain one luma CB and two chroma CBs (unless the video is monochrome –i.e., having only one color component) .
FIG. 3 schematically illustrates a signaling mechanism 300 of the partition splitting information in quadtree structure with nested multi-type tree coding tree structure. A CTU is treated as the root of a quaternary tree and is first partitioned by a quaternary tree structure. Each quaternary tree leaf node (when sufficiently large to allow it) may then be further partitioned by a multi-type tree structure. At 302, in the multi-type tree structure, a first flag (mtt_split_flag) is enabled to indicate whether the node is further partitioned. When a node is further partitioned, at 304 a second flag (mtt_split_vertical_flag) is enabled to indicate the splitting direction, and then a third flag (mtt_split_binary_flag) is enabled at 306 to indicate whether the split is a binary split or a ternary split. Based on the values of mtt_split_vertical_flag and mtt_split_binary_flag, the multi-type tree splitting mode (MttSplitMode) of a CU is derived as illustrated in Table 1.
| MttSplitMode | mtt_split_vertical_flag | mtt_split_binary_flag |
| SPLIT_TT_HOR | 0 | 0 |
| |
0 | 1 |
| |
1 | 0 |
| |
1 | 1 |
Table 1 –MttSplitMode derviation based on multi-type tree syntax elements
FIG. 4 schematically illustrates a CTU 400 divided into multiple CUs 402 with a quadtree and nested multi-type tree coding block structure, where the bold block edges 404 represent quadtree partitioning and the remaining non-bold edges 406 represent multi-type tree partitioning. The quadtree with nested multi-type tree partition provides a content-adaptive coding tree structure comprised of CUs 402. The size of the CU may be as large as the CTU or as small as 4×4 in units of luma samples. For the case of the 4: 2: 0 chroma format, the maximum chroma CB size is 64×64 and the minimum chroma CB size is 2×2.
As an example, the following parameters are defined and specified by SPSS syntax elements for the quadtree with nested multi-type tree coding tree scheme (SPSS originally stood for Statistical Package for the Social Sciences (SPSS) ) . As is known, SPSS syntax is a programming language that is unique to SPSS.
– CTU size: the root node size of a quaternary tree
– MinQTSize: the minimum allowed quaternary tree leaf node size
– MaxBtSize: the maximum allowed binary tree root node size
– MaxTtSize: the maximum allowed ternary tree root node size
– MaxMttDepth: the maximum allowed hierarchy depth of multi-type tree splitting from a quadtree leaf
– MinBtSize: the minimum allowed binary tree leaf node size
– MinTtSize: the minimum allowed ternary tree leaf node size
In one example of the quadtree with nested multi-type tree coding tree structure, the CTU size is set as 128×128 luma samples with two corresponding 64×64 blocks of 4: 2: 0 chroma samples, the MinQTSize is set as 16×16, the MaxBtSize is set as 128×128 and MaxTtSize is set as 64×64, the MinBtSize and MinTtSize (for both width and height) is set as 4×4, and the MaxMttDepth is set as 4. The quaternary tree partitioning is applied to the CTU first to generate quaternary tree leaf nodes. The quaternary tree leaf nodes may have a size from 16×16 (i.e., the MinQTSize) to 128×128 (i.e., the CTU size) . If the leaf QT node is 128×128, it will not be further split by the ternary tree since the size exceeds the MaxTtSize (i.e., 64×64) . Otherwise, the leaf quadtree node may be further partitioned by the multi-type tree. Therefore, the quaternary tree leaf node is also the root node for the multi-type tree and it has multi-type tree depth (mttDepth) as 0. When the multi-type tree depth reaches MaxMttDepth (i.e., 4) , no further splitting is considered. When the multi-type tree node has width equal to MinBtSize and smaller or equal to 2 *MinTtSize, no further horizontal splitting is considered. Similarly, when the multi-type tree node has height equal to MinBtSize and smaller or equal to 2 *MinTtSize, no further vertical splitting is considered.
As previously noted, in current H. 266/VVC, the coding tree scheme supports the ability for the luma and chroma samples to have a separate block tree structure. Currently, for P and B slices, the luma and chroma coding tree blocks (CTBs) in one CTU have to share the same coding tree structure. However, for I slices, the luma and chroma samples may have a separate block tree structure. When separate block tree mode is applied, a luma CTB is partitioned into luma CBs by a coding tree structure, and the chroma CTBs are partitioned into chroma CBs 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 coding blocks 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.
Currently, the minimum luma CB size is 4x4 luma samples and the minimum chroma CB size is 2x2 chroma samples for the 4: 2: 0 sample format. The 2x2 chroma CB is difficult for hardware implementation. However, for the shared tree structure as in P and B slices, the minimum chroma CB size cannot be adjusted independently from the minimum luma CB size.
In H. 265/HEVC, a coding mode, pulse code modulation (PCM) , is included. If PCM mode is applied for a coding unit, the samples of a coding unit are encoded by directly representing the sample values without prediction or application of a transform. In other words, both luma and chroma sample values are directly encoded into the bitstream. FIG. 5 illustrates example syntax of the PCM mode.
In H. 265/HEVC, there is a mechanism to determine whether the PCM mode is enabled for a coding unit (based upon CB size) . When block size of a coding unit is larger than Log2MinIpcmCbSizeY and less than Log2MaxIpcmCbSizeY, PCM is enabled. Otherwise, PCM mode is disabled. And, two syntax elements (log2_min_pcm_luma_coding_block_size_minus3 and log2_diff_max_min_pcm_luma_coding_block_size) are signaled in SPSS Log2MinIpcmCbSizeY and Log2MaxIpcmCbSizeY are derived from those two elements. FIG. 6 illustrates example syntax for HEVC/H. 265 for determining whether the PCM mode is enabled for a coding unit.
The variable log2_min_pcm_luma_coding_block_size_minus3 plus 3 specifies the minimum size of coding blocks with a pcm_flag equal to 1. The variable Log2MinIpcmCbSizeY is set equal to log2_min_pcm_luma_coding_block_size_minus3 + 3. The value of Log2MinIpcmCbSizeY may be in the range of Min (MinCbLog2SizeY, 5 ) to Min (CtbLog2SizeY, 5 ) , inclusive. The variable Log2MaxIpcmCbSizeY is set equal to log2_diff_max_min_pcm_luma_coding_block_size + Log2MinIpcmCbSizeY. The value of Log2MaxIpcmCbSizeY shall be less than or equal to Min (CtbLog2SizeY, 5 ) .
However, as previously noted, in H. 265/HEVC, all coding units are square and contain both luma and chroma samples. In HEVC/H. 265 PCM mode, both luma and chroma sample values are directly encoded into the bitstream. Thus, the constrain of enabling PCM mode is for a square coding unit only. Yet, in the developing H. 266/VVC, a coding unit can be non-square (multi-type tree) and may contain only chroma samples (Separated Tree Block Partition) .
Accordingly, in accordance with configurations, adaptive coding of video CUs based on CB type, e.g., luma samples and chroma samples, is provided that includes an adaptive PCM mode includes syntax that is adaptively switched according to the coding block types included in the CUs, e.g., luma samples and chroma samples. Three example cases include:
(1) If a coding unit contains both luma and chroma samples, both luma and chroma sample values are directly encoded into the bitstream.
(2) If a coding unit contains only luma samples (luma coding unit under separated tree partition or luma coding unit for 400 color format) , only luma sample values are directly encoded into the bitstream.
(3) If a coding unit contains only chroma samples (chroma coding unit under separated tree partition) , only chroma sample values are directly encoded into the bitstream. Note this case occurs when separated tree block partition is applied. FIG. 7 illustrates example syntax of a PCM sample in accordance with configurations.
As previously noted, in H. 265/HEVC, there is a mechanism to determine whether the PCM mode is enabled for a coding unit. When a block size of a coding unit (based upon CB size) is larger than Log2MinIpcmCbSizeY and less than Log2MaxIpcmCbSizeY, the PCM mode is enabled. Otherwise, the PCM mode is disabled. Also, two syntax elements (log2_min_pcm_luma_coding_block_size_minus3 and log2_diff_max_min_pcm_luma_coding_block_size) are signaled in SPSS Log2MinIpcmCbSizeY and Log2MaxIpcmCbSizeY are derived from these two elements. However, as previously noted, in VVC/H. 266, a coding unit can be non-square (multi-type tree) . In other words, height and width of a coding unit may be different. Therefore, in accordance with configurations, the condition of enabling PCM may be modified for a coding unit.
FIG. 8 illustrates example modified syntax 802, with respect to FIGS. 5 and/or 6, for a first example of enabling PCM for a coding unit. When height and width of a coding unit are larger than MinIpcmCbSizeY (or compared in log domain, e.g., Log2MinIpcmCbSizeY in FIG. 11) and less than MaxIpcmCbSizeY (or compared in log domain, e.g., Log2MaxIpcmCbSizeY in FIG. 11) , the PCM mode is enabled. Otherwise, the PCM mode is disabled. The variable log2_min_pcm_luma_coding_block_size_minus3 plus 3 specifies the minimum size of coding blocks with the pcm_flag equal to 1. The variable Log2MinIpcmCbSizeY is set equal to log2_min_pcm_luma_coding_block_size_minus3 + 3. The value of Log2MinIpcmCbSizeY shall be in the range of Min (MinCbLog2SizeY, 5 ) to Min (CtbLog2SizeY, 5 ) , inclusive. The variable MinIpcmCbSizeY may be set equal to 2^ Log2MinIpcmCbSizeY. The variable log2_diff_max_min_pcm_luma_coding_block_size specifies the difference between the maximum and minimum size of coding blocks with the pcm_flag equal to 1. The variable Log2MaxIpcmCbSizeY is set equal to log2_diff_max_min_pcm_luma_coding_block_size + Log2MinIpcmCbSizeY. The value of Log2MaxIpcmCbSizeY shall be less than or equal to Min (CtbLog2SizeY, 5 ) . The variable MaxIpcmCbSizeY is set equal to 2^Log2MaxIpcmCbSizeY.
FIG. 9 illustrates example modified syntax 902, with respect to FIGs. 5, 6 and/or 8, for a second example of enabling PCM for a coding unit. When height and width of a coding unit are larger than Log2MinIpcmCbSizeY and less than Log2MaxIpcmCbSizeY, the PCM mode is enabled. Otherwise, the PCM mode is disabled. This example is different from the first example in that if the separated tree is used and the coding unit is a chroma sample (block) , the height and width are defined as the chroma sample’s height and width. The variable log2_min_pcm_luma_coding_block_size_minus3 plus 3 specifies the minimum size of coding blocks with the pcm_flag equal to 1. The variable Log2MinIpcmCbSizeY is set equal to log2_min_pcm_luma_coding_block_size_minus3 + 3. The value of Log2MinIpcmCbSizeY shall be in the range of Min (MinCbLog2SizeY, 5 ) to Min (CtbLog2SizeY, 5 ) , inclusive. The variable MinIpcmCbSizeY is set equal to 2^ Log2MinIpcmCbSizeY. The variable log2_diff_max_min_pcm_luma_coding_block_size specifies the difference between the maximum and minimum size of coding blocks with the pcm_flag equal to 1. The variable Log2MaxIpcmCbSizeY is set equal to log2_diff_max_min_pcm_luma_coding_block_size + Log2MinIpcmCbSizeY. The value of Log2MaxIpcmCbSizeY shall be less than or equal to Min (CtbLog2SizeY, 5 ) . The variable MaxIpcmCbSizeY is set equal to 2^Log2MaxIpcmCbSizeY.
FIG. 10 illustrates example modified syntax 1002 with respect to FIGs. 5, 6, 8 and/or 9 for a third example of enabling PCM for a coding unit. When (height*width) of a coding unit is larger than MinIpcmCbSizeY and less than MaxIpcmCbSizeY, the PCM mode is enabled. Otherwise, the PCM mode is disabled. In another and similar example, if the separated tree is used and the coding units are only chroma samples (blocks) , the height and width is defined as the individual chroma samples’height and width.
In the above examples, log2_min_pcm_luma_coding_block_size_minus3 and log2_diff_max_min_pcm_luma_coding_block_size are signaled in SPSS for both luma and chroma coding units. Instead of using shared parameters, separated parameters may be signaled for luma and chroma coding units.
In configurations, to simplify syntax parsing for the above examples, the above syntax constraints may be defined in Log domain. FIG. 11 illustrates an example of syntax constraints in the log domain for the first example syntax previously described with respect to FIG. 8.
Accordingly, in accordance with configurations, for 4: 2: 0 video (as an example) , chroma samples are subsampled by a factor of 4. FIG. 12 schematically illustrates an example of a CU 1200 for 4: 2: 0 video, where the CU 1200 includes both a luma sample 1202 and chroma samples 1204, 1206. Thus, since the video is 4: 2: 0 format, if a CU contains both luma and chroma samples, the size Lcb of chroma samples is less than the size Ly of luma samples. Accordingly, the size Ly of luma samples may be used to determine whether the PCM should be enabled by comparing Ly with a maximum size and a minimum size, e.g., minimum size < Ly < maximum size.
However, as previously noted, a CU may contain only luma samples or may contain only chroma samples. FIG 13 schematically illustrates an example scenario where a CU 1300 for 4: 2: 0 video includes only a luma sample 1302. If the luma sample 1302 is square in shape (Ly by Ly) , the size Ly of the luma sample 1302 may be used to determine whether the PCM should be enabled by comparing Ly with a maximum size and a minimum size, e.g., minimum size < Ly < maximum size. If the luma sample 1302 is non-square, then both the height and width of the luma sample may be compared with the maximum size and the minimum size in order to determine whether the PCM should be enabled, e.g., both the height and width need to be greater than the minimum size and less than the maximum size.
FIG 14 schematically illustrates an example scenario where a CU 1400 for 4: 2: 0 video includes only chroma samples 1402, 1404. Since chroma samples are smaller than corresponding luma samples, in configurations, the size of a corresponding luma sample (e.g., equivalent Ly size) , even though not included in the CU 1400, may still be used to determine whether the PCM should be enabled by comparing the equivalent size Ly of the equivalent Luma sample with a maximum size and a minimum size, e.g., minimum size < Ly < maximum size. If a chroma sample 1402 and/or 1404 is non-square, then both the equivalent height and equivalent width of a corresponding luma sample, even though not included in the CU 1400, may be compared with the maximum size and the minimum size in order to determine whether the PCM should be enabled, e.g., both the equivalent height and equivalent width need to be greater than the minimum size and less than the maximum size.
In configurations, the size Lcb of the chroma samples 1402, 1404 may be used to determine whether the PCM should be enabled by comparing Lcb with a maximum size and a minimum size, e.g., minimum size < Lcb < maximum size. If a chroma sample 1402 and/or 1404 is non-square, then both the height and width of the chroma sample 1402 and/or 1404 may be compared with the maximum size and the minimum size in order to determine whether the PCM should be enabled, e.g., both the height and width need to be greater than the minimum size and less than the maximum size.
FIG. 15 illustrates an example flowchart 1500 describing a process for improving PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) .
At block 1502, a CTU, such as CTU 400, is partitioned into CUs, such as CUs 402, as illustrated in FIG. 4. It may then be determined, at block 1504, if the CUs include luma samples and/or chroma samples. If the CUs include both luma samples and chroma samples, at block 1506, it is determined if PCM is enabled, e.g., the sizes of the CUs are within a predetermined size range. If yes, luma sample values and chroma sample values are encoded into a bitstream at block 1508. If not, the process ends at block 1510.
If at block 1504 it is determined that the CUs do not include both luma samples and chroma samples, at block 1512, it is determined if the CUs include only luma samples. If the CUs include only luma samples, at block 1514 it is determined if PCM is enabled, e.g., the sizes of the CUs are within a predetermined size range. If yes, luma sample values are encoded into the bitstream at block 1516. If not, the process ends at block 1510.
If at block 1512 it is determined that the CUs do not include only luma samples, at block 1518, it is determined if the CUs include only chroma samples. If the CUs include only chroma samples, at block 1520 it is determined if PCM is enabled, e.g., the sizes of the CUs are within a predetermined size range. If yes, chroma sample values are encoded into the bitstream at block 1522. If not, the process ends at block 1510.
FIG. 16 illustrates an example computing device 1600 for implementing the system and methods for improving PCM for coding units that may be non-square (multi-type tree) and that may contain only luma samples or only chroma samples (Separated Tree Block Partition) .
The techniques and mechanisms described herein may be implemented by multiple instances of the computing device 1600, as well as by any other computing device, system, and/or environment. The computing device 1600 shown in FIG. 16 is only one example of a computing device and is not intended to suggest any limitation as to the scope of use or functionality of any computing device utilized to perform the processes and/or procedures described above. Other well-known computing devices, systems, environments and/or configurations that may be suitable for use with the embodiments include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, game consoles, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, implementations using field programmable gate arrays ( “FPGAs” ) and application specific integrated circuits ( “ASICs” ) , and/or the like.
The computing device 1600 may include one or more processors 1602 and system memory 1604 communicatively coupled to the processor (s) 1602. The processor (s) 1602 may execute one or more modules and/or processes to cause the computing device 1600 to perform a variety of functions. In some embodiments, the processor (s) 1602 may include a central processing unit (CPU) , a graphics processing unit (GPU) , both CPU and GPU, or other processing units or components known in the art. Additionally, each of the processor (s) 1602 may possess its own local memory, which also may store program modules, program data, and/or one or more operating systems.
Depending on the exact configuration and type of the computing device 1600, the system memory 1604 may be volatile, such as RAM, non-volatile, such as ROM, flash memory, miniature hard drive, memory card, and the like, or some combination thereof. The system memory 1604 may include an operating system 1606, one or more program modules 1608, and may include program data 1610. The operating system 1606 may include a component based framework 1612 that may support components including properties and events, objects, inheritance, polymorphism, reflection, and may provide an object-oriented component-based application programming interface (API) . The computing device 1600 may be of a very basic illustrative configuration demarcated by a dashed line 1614.
The program modules 1608 may include, but are not limited to, a partition module 1616, a determination module 1618, an encoding module 1620, a user interface 1622, and/or other components 1624. The partition module 1616 may be configured to partition a CTU, such as the CTUs 102 and 400, into a plurality of coding units, e.g., CUs 402. The determination module 1618 may be configured to determine if the CUs include luma samples and/or chroma samples. The determination module 1618 may also be configured to determine if PCM is enabled. The encoding module 1620 may be configured to encode the luma sample values and/or the chroma samples into a bitstream if PCM is enabled..
The computing device 1600 may have additional features and/or functionality. For example, the computing device 1600 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 16 as removable storage 1626 and non-removable storage 1628.
The computing device 1600 may also have input device (s) 1630 such as a keyboard, a mouse, a pen, a voice input device, a touch input device, and the like. Output device (s) 1632, such as a display, speakers, a printer, and the like, may also be included.
The computing device 1600 may also contain communication connections 1634 that allow the computing device 1600 to communicate with other computing devices 1636, over a network 1638. The network 1638, communication media, and/or communication connections may include the Internet, wired media such as a wired network or direct-wired connections, and wireless media such as acoustic, radio frequency (RF) , infrared, and other wireless media. The communication connections 1634 are some examples of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, and the like.
Some or all operations of the methods described above can be performed by execution of computer-readable instructions stored on a computer-readable storage medium, as defined below. The term “computer-readable instructions” as used in the description and claims, include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions can be implemented on various system configurations, including single-processor or multiprocessor systems, minicomputers, mainframe computers, personal computers, hand-held computing devices, microprocessor-based, programmable consumer electronics, combinations thereof, and the like.
The computer-readable storage media may include volatile memory (such as random access memory (RAM) ) and/or non-volatile memory (such as read-only memory (ROM) , flash memory, etc. ) . The computer-readable storage media may also include additional removable storage and/or non-removable storage including, but not limited to, flash memory, magnetic storage, optical storage, and/or tape storage that may provide non-volatile storage of computer-readable instructions, data structures, program modules, and the like.
A non-transient computer-readable storage medium is an example of computer-readable media. Computer-readable media includes at least two types of computer-readable media, namely computer-readable storage media and communications media. Computer-readable storage media includes volatile and non-volatile, removable and non-removable media implemented in any process or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer-readable storage media includes, but is not limited to, phase change memory (PRAM) , static random-access memory (SRAM) , dynamic random-access memory (DRAM) , other types of random-access memory (RAM) , read-only memory (ROM) , electrically erasable programmable read-only memory (EEPROM) , flash memory or other memory technology, compact disk read-only memory (CD-ROM) , digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device. In contrast, communication media may embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transmission mechanism. As defined herein, computer-readable storage media do not include communication media.
The computer-readable instructions stored on one or more non-transitory computer-readable storage media that, when executed by one or more processors, may perform operations described above with reference to FIGs. 1-12. Generally, computer-readable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and/or in parallel to implement the processes.
CONCLUSION
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.
Claims (20)
- A method comprising:partitioning a coding tree unit (CTU) into coding units;determining if the coding units include luma samples and/or chroma samples; andbased at least in part on the determining, if pulse code modulation (PCM) is enabled, encoding at least one of luma sample values and/or chroma sample values into a bitstream.
- The method of claim 1, wherein encoding at least one of luma sample values and/or chroma sample values comprises:if the coding units include both luma samples and chroma samples, encoding luma sample values and chroma sample values into the bitstream;if the coding units include only luma samples, encoding luma sample values into the bitstream; andif the coding units include only chroma samples, encoding chroma sample values into the bitstream.
- The method of claim 2, wherein the PCM is enabled for coding units that include both luma samples and chroma samples if the luma samples have a block size greater than a minimum block size and less than a maximum block size.
- The method of claim 2, wherein the PCM is enabled for coding units that include only luma samples if the luma samples have (a) a height greater than a minimum block size and less than a maximum block size and (b) a width greater than the minimum block size and less than the maximum block size.
- The method of claim 4, wherein partitioning the CTU into coding units comprises partitioning the CTU into coding units having only luma samples based upon separated tree partitioning.
- The method of claim 4, wherein partitioning the CTU into coding units comprises partitioning the CTU into coding units having only luma samples based upon 400 color format.
- The method of claim 2, wherein the PCM is enabled for coding units that include only chroma samples if the chroma samples have (a) a height greater than a minimum block size and less than a maximum block size and (b) a width greater than the minimum block size and less than the maximum block size.
- The method of claim 2, wherein the PCM is enabled for coding units that include only chroma samples if an equivalent size of a luma sample that would correspond to the chroma samples has (a) a height greater than a minimum block size and less than a maximum block size and (b) a width greater than the minimum block size and less than the maximum block size.
- The method of claim 8, wherein partitioning the CTU into coding units comprises partitioning the CTU into coding units having only chroma samples based upon separated tree partitioning.
- A computer-readable storage medium storing computer-readable instructions executable by one or more processors, that when executed by the one or more processors, cause the one or more processors to perform operations comprising:partitioning a coding tree unit (CTU) into coding units;determining if the coding units include luma samples and/or chroma samples; andbased at least in part on the determining, if pulse code modulation (PCM) is enabled, encoding at least one of luma sample values and/or chroma sample values into a bitstream.
- The computer-readable storage medium of claim 10, wherein encoding at least one of luma sample values and/or chroma sample values comprises:if the coding units include both luma samples and chroma samples, encoding luma sample values and chroma sample values into the bitstream;if the coding units include only luma samples, encoding luma sample values into the bitstream; andif the coding units include only chroma samples, encoding chroma sample values into the bitstream.
- The computer-readable storage medium of claim 11, wherein the PCM is enabled for coding units that include both luma samples and chroma samples if the coding units have a block size greater than a minimum block size and less than a maximum block size.
- The computer-readable storage medium of claim 11, wherein the PCM is enabled for coding units that include only luma samples if the luma samples have (a) a height greater than a minimum block size and less than a maximum block size and (b) a width greater than the minimum block size and less than the maximum block size.
- The computer-readable storage medium of claim 13, wherein partitioning the CTU into coding units comprises partitioning the CTU into coding units having only luma samples based upon separated tree partitioning.
- The computer-readable storage medium of claim 13, wherein partitioning the CTU into coding units comprises partitioning the CTU into coding units having only luma samples based upon 400 color format.
- The computer-readable storage medium of claim 11, wherein the PCM is enabled for coding units that include only chroma samples if the chroma samples have (a) a height greater than a minimum block size and less than a maximum block size and (b) a width greater than the minimum block size and less than the maximum block size.
- The computer-readable storage medium of claim 11, wherein the PCM is enabled for coding units that include only chroma samples if an equivalent size of a luma sample that would correspond to the chroma samples has (a) a height greater than a minimum block size and less than a maximum block size and (b) a width greater than the minimum block size and less than the maximum block size.
- The computer-readable storage medium of claim 17, wherein partitioning the CTU into coding units comprises partitioning the CTU into coding units having only chroma samples based upon separated tree partitioning.
- A computing device comprising:one or more processors; andmemory communicatively coupled to the one or more processors, the memory storing computer-executable modules executable by the one or more processors, the computer-executable modules including:a partition module configured to partition a coding tree unit (CTU) into coding units;a determination module configured to determine (a) if the coding units include luma samples and/or chroma samples and (b) if pulse code modulation (PCM) is enabled; andan encoding module configured to, if the PCM is enabled, encode at least one of luma sample values and/or chroma sample values into a bitstream.
- The computing device of claim 19, wherein the encoding module is further configured to:if the coding units include both luma samples and chroma samples, encode luma sample values and chroma sample values into the bitstream;if the coding units include only luma samples, encode luma sample values into the bitstream; andif the coding units include only chroma samples, encode chroma sample values into the bitstream.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2018/107096 WO2020056763A1 (en) | 2018-09-21 | 2018-09-21 | Adaptive coding of video coding units based on coding block type |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2018/107096 WO2020056763A1 (en) | 2018-09-21 | 2018-09-21 | Adaptive coding of video coding units based on coding block type |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020056763A1 true WO2020056763A1 (en) | 2020-03-26 |
Family
ID=69888093
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2018/107096 Ceased WO2020056763A1 (en) | 2018-09-21 | 2018-09-21 | Adaptive coding of video coding units based on coding block type |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2020056763A1 (en) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1246246A (en) * | 1996-12-17 | 2000-03-01 | 汤姆森消费电子有限公司 | Pixel block compression apparatus in image processing system |
| CN103404144A (en) * | 2011-03-04 | 2013-11-20 | 高通股份有限公司 | Quantized pulse code modulation in video coding |
| US20140092984A1 (en) * | 2012-10-01 | 2014-04-03 | General Instrument Corporation | Processing of pulse code modulation (pcm) parameters |
| CN104904210A (en) * | 2013-01-07 | 2015-09-09 | 日本电气株式会社 | Video encoding device, video decoding device, video encoding method, video decoding method, and program |
| CN104935921A (en) * | 2014-03-20 | 2015-09-23 | 联发科技股份有限公司 | Method and apparatus for transmitting one or more encoding patterns selected from a set of patterns |
-
2018
- 2018-09-21 WO PCT/CN2018/107096 patent/WO2020056763A1/en not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1246246A (en) * | 1996-12-17 | 2000-03-01 | 汤姆森消费电子有限公司 | Pixel block compression apparatus in image processing system |
| CN103404144A (en) * | 2011-03-04 | 2013-11-20 | 高通股份有限公司 | Quantized pulse code modulation in video coding |
| US20140092984A1 (en) * | 2012-10-01 | 2014-04-03 | General Instrument Corporation | Processing of pulse code modulation (pcm) parameters |
| CN104904210A (en) * | 2013-01-07 | 2015-09-09 | 日本电气株式会社 | Video encoding device, video decoding device, video encoding method, video decoding method, and program |
| CN104935921A (en) * | 2014-03-20 | 2015-09-23 | 联发科技股份有限公司 | Method and apparatus for transmitting one or more encoding patterns selected from a set of patterns |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12256089B2 (en) | Coded-block-flag coding and derivation | |
| KR102382410B1 (en) | Position-dependent prediction combinations in video coding | |
| US10638126B2 (en) | Intra reference filter for video coding | |
| RU2674332C2 (en) | Method of video coding with the use of a separate coding tree for brightness and color | |
| US10382795B2 (en) | Method of video coding using binary tree block partitioning | |
| CN108781282B (en) | Method, device and storage medium for decoding video data | |
| US10951895B2 (en) | Context model selection based on coding unit characteristics | |
| US12010310B2 (en) | Method and apparatus for quantization, adaptive block partitioning and codebook coding for neural network model compression | |
| US20190014315A1 (en) | Adaptive loop filter with enhanced classification methods | |
| KR102604239B1 (en) | Video decoding method and device in video coding system | |
| CN110720217A (en) | Apparatus and method for image encoding or decoding supporting various block sizes | |
| KR102793489B1 (en) | Method and device for quantization, adaptive block partitioning and codebook coding for neural network model compression | |
| US10652537B1 (en) | Coding unit size adaptive palette mode for video compression system | |
| CN117201821A (en) | Devices for encoding or decoding video data and methods of storing bitstreams | |
| AU2025220695A1 (en) | Processing the in-between points of a point cloud | |
| WO2020177545A1 (en) | Palette size constraint in palette mode for video compression system | |
| AU2023202525B2 (en) | Coding tree unit size signaling | |
| US10708625B2 (en) | Adaptive deblocking filter | |
| WO2020056763A1 (en) | Adaptive coding of video coding units based on coding block type | |
| WO2020056757A1 (en) | Method, apparatus, and computer-readable storage medium for block partitioning tree separation under separation node | |
| WO2020056760A1 (en) | Transform selection for small size block | |
| CN112219399B (en) | Palette-based residual coding in video compression systems | |
| WO2020056759A1 (en) | Method, apparatus, and computer-readable storage medium for small size block coding | |
| WO2020243881A1 (en) | Simplified intra block copy | |
| US11546592B2 (en) | Flexible block partitioning for chroma component |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18933913 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 18933913 Country of ref document: EP Kind code of ref document: A1 |