Method, system, and program for coding tree unit size signaling

JP2025114787A5Pending Publication Date: 2026-02-05TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025080184
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-09-17
Filing Date
2025-05-13
Publication Date
2026-02-05

AI Technical Summary

Technical Problem

The existing video coding standards, such as HEVC, waste bits by using fixed-length coding for coding tree unit size syntax, which can be inefficient and result in unnecessary bit usage.

Method used

Implementing a method to signal coding tree unit sizes using separate flags, such as use_32_ctu_size_flag, use_64_ctu_size_flag, and use_128_ctu_size_flag, to replace the fixed-length coding, allowing for more flexible and efficient bit usage.

Benefits of technology

This approach reduces bit waste by providing a more flexible and efficient encoding process, optimizing memory usage and improving video encoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a method, computer program, and computer system for coding video data.SOLUTION: A method comprises: receiving video data having one coding tree unit size; signaling the coding tree unit size associated with the video data by setting two or more flags; and encoding / decoding the video data based on the flags corresponding to the signaled coding tree unit size.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority from U.S. Provisional Patent Application No. 62 / 905,339, filed September 24, 2019, and U.S. Patent Application No. 17 / 024,246, filed September 17, 2020, both of which are incorporated herein in their entireties.

[0002] Field The present disclosure relates generally to the field of data processing, and more particularly to video encoding and decoding. [Background technology]

[0003] 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, the two standards organizations jointly formed the Joint Video Exploration Team (JVET) to explore the possibility of developing the next video coding standard beyond HEVC, and in October 2017, they announced a Joint Call for Proposals (CfP) for video compression with capabilities beyond HEVC. By February 15, 2018, a total of 22 CfP responses had been submitted for standard dynamic range (SDR), 12 for high dynamic range (HDR), and 12 for the 360 video category. In April 2018, all received CfP responses were evaluated at the 122 MPEG / 10th JVET meeting. As a result of this meeting, JVET officially launched the standardization process for next-generation video coding beyond HEVC. The new standard was named Versatile Video Coding (VVC), and JVET was renamed the Joint Video Expert Team. The current version of the VTM (VVC Test Model) is VTM6. Summary of the Invention

[0004] Embodiments relate to methods, systems, and computer-readable media for encoding video data. According to one aspect, a method for encoding video data is provided. The method may include receiving video data having a coding tree unit size. The coding tree unit size associated with the video data is signaled by setting two or more flags. The video data is encoded / decoded based on the flags corresponding to the signaled coding tree unit sizes.

[0005] According to another aspect, a computer system for encoding video data is provided. The computer system may include one or more processors, one or more computer-readable memories, one or more computer-readable tangible storage devices, and program instructions stored in at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, thereby enabling the computer system to perform a method. The method may include receiving video data having a coding tree unit size. The coding tree unit size associated with the video data is signaled by setting two or more flags. The video data is encoded / decoded based on the flags corresponding to the signaled coding tree unit sizes.

[0006] According to yet another aspect, a computer-readable medium for encoding video data is provided. The computer-readable medium may include one or more computer-readable storage devices and program instructions stored in at least one of the one or more tangible storage devices, the program instructions being executable by a processor. The program instructions may be executable by the processor to perform a method, the method including receiving video data having a coding tree unit size accordingly. The coding tree unit size associated with the video data is signaled by setting two or more flags. The video data is encoded / decoded based on the flags corresponding to the signaled coding tree unit sizes. [Brief explanation of the drawings]

[0007] 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, in which various features of the drawings are not to scale, as the drawings are for clarity in facilitating understanding by those skilled in the art in connection with the detailed description.

[0008] [Figure 1] 1 illustrates a networked computing environment in accordance with at least one embodiment.

[0009] [Figure 2] FIG. 1 is a diagram of a quadtree / binary tree (QTBT) block structure according to at least one embodiment.

[0010] [Figure 3A] A is an exemplary syntax element according to at least one embodiment. [Figure 3B] B is an exemplary syntax element according to at least one embodiment. [Figure 3C] C is an exemplary syntax element according to at least one embodiment. [Figure 3D] D is an exemplary syntax element according to at least one embodiment.

[0011] [Figure 4] 1 is an operational flowchart illustrating steps performed by a program for encoding video data, according to at least one embodiment.

[0012] [Figure 5] FIG. 2 is a block diagram of the internal and external components of the computer and server shown in FIG. 1 according to at least one embodiment.

[0013] [Figure 6] 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.

[0014] [Figure 7] FIG. 7 is a block diagram of functional layers of the exemplary cloud computing environment of FIG. 6, in accordance with at least one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0015] Although detailed embodiments of the claimed structures and methods are disclosed herein, it will be understood that the disclosed embodiments are merely illustrative of the claimed structures and methods, which may be embodied in a variety of forms. However, these structures and methods may be embodied in many different forms and should not be construed as limited to the exemplary embodiments set forth herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.

[0016] Embodiments relate generally to the field of data processing, and more particularly to video encoding and decoding. The exemplary embodiments described below provide, among other things, systems, methods, and computer programs for encoding video data using a separate flag to replace coding tree unit size syntax. Thus, some embodiments have the ability to improve the field of computing by enabling less memory usage by saving bits through signaling the coding tree unit size through a flag.

[0017] As mentioned above, 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, the two standards organizations jointly formed the Joint Video Exploration Team (JVET) to explore the possibility of developing the next video coding standard beyond HEVC, and in October 2017, they announced a Joint Call for Proposals (CfP) for video compression with capabilities beyond HEVC. By February 15, 2018, a total of 22 CfP responses had been submitted for standard dynamic range (SDR), 12 for high dynamic range (HDR), and 12 for the 360 video category. In April 2018, all received CfP responses were evaluated at the 122 MPEG / 10th JVET meeting. As a result of this meeting, JVET officially launched the standardization process for next-generation video coding beyond HEVC. The new standard was named Versatile Video Coding (VVC), and JVET was renamed the Joint Video Expert Team. The current version of the VTM (VVC Test Model) is VTM6.

[0018] In HEVC, coding tree units are divided into coding units (CUs) using a quadtree structure, referred to as a coding tree, to accommodate various local characteristics. The decision of whether to code a picture region using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the CU level. Each CU can be further divided into one, two, or four PUs depending on the PU partition type. The same prediction process is applied within a PU, and related information is transmitted to the decoder on a PU-by-PU basis. After obtaining a residual block by applying a prediction process based on the PU partition type, the CU can be divided into transform units (TUs) according to another quadtree structure, such as a coding tree for that CU. One of the important features of the HEVC structure is the multiple partition concepts, including coding units, prediction units, and transform units. However, describing the syntax log2_ctu_size_minus5 using fixed-length coding u(2) may waste one bit. There may be only three digits to be coded, 0, 1, and 2 respectively, and u(2) may waste one bit if the digit to be coded is either 0 or 1. Therefore, it may be advantageous to replace the original coding tree unit size syntax with separate flags to save bits in the sequence parameter set.

[0019] 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.

[0020] Referring now to Figure 1, a functional block diagram of a networked computing environment illustrates a video encoding system 100 (hereinafter "system") for encoding video data using a distinct flag that replaces the coding tree unit size syntax. It should be understood that Figure 1 provides only an illustration of one implementation and does not imply any limitation with regard to the environments in which various embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.

[0021] System 100 may include a computer 102 and a server computer 114. Computer 102 may communicate with server computer 114 via a communications network 110 (hereinafter, "network"). Computer 102 may include a processor 104 and a software program 108 stored on a data storage device 106 and configured to interface with a user and communicate with server computer 114. As described below with reference to FIG. 5 , computer 102 may include internal components 800A and external components 900A, respectively, and server computer 114 may include internal components 800B and external components 900B, respectively. 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.

[0022] 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 described below with respect to Figures 6 and 7. The server computer 114 may also be located within a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.

[0023] A server computer 114, which may be used to encode video data, is adapted to execute a video encoding program 116 (hereinafter "program") that can interact with database 112. The video encoding program method is described in more detail below with respect to FIG. 4. In one embodiment, computer 102 may act as an input device, including a user interface, while program 116 may execute primarily on server computer 114. In an alternative embodiment, program 116 may execute primarily on one or more computers 102, while server computer 114 may be used for processing and storing data used by program 116. It should be noted that program 116 may be a stand-alone program or may be integrated into a larger video encoding program.

[0024] It should be noted, however, that processing for program 116 may, in some cases, be divided in any proportion between computer 102 and server computer 114. In another embodiment, program 116 may run on two or more computers, a server computer, or some combination of computers and server computers, e.g., multiple computers 102 communicating with a single server computer 114 across network 110. In another embodiment, for example, program 116 may run on multiple server computers 114 communicating with multiple client computers across network 110. Alternatively, the program may run on a network server communicating with the server and multiple client computers across the network.

[0025] Network 110 may include wired connections, wireless connections, fiber optic connections, or some combination thereof. In general, network 110 can be any combination of connections and protocols that support communication between computer 102 and server computer 114. 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 area network (MAN), a private network, an ad hoc network, an intranet, a fiber optic-based network, etc., and / or a combination of these or other types of networks.

[0026] The number and arrangement of devices and networks shown in Figure 1 are given as an example. In practice, there may be additional devices and / or networks, fewer devices and / or networks, different devices and / or networks, or different arrangements of devices and / or networks than those shown in Figure 1. 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 collection 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 collection of devices of system 100.

[0027] Referring now to FIG. 2, an exemplary QTBT block structure 200 is shown. The QTBT block structure 200 may include block partitioning by using QTBT. A corresponding tree representation may also be drawn. Solid lines may indicate quadtree partitioning, and dotted lines may indicate binary tree partitioning. At each partition (i.e., non-leaf) node of the binary tree, a flag may be signaled to indicate which partition type (i.e., horizontal or vertical) may be used, where 0 may indicate horizontal partitioning and 1 may indicate vertical partitioning. For quadtree partitioning, it may not be necessary to indicate the partition type, since quadtree partitioning always partitions a block both horizontally and vertically to generate four sub-blocks of equal size.

[0028] QTBT may eliminate the concept of multiple partition types. For example, QTBT may eliminate the separation of the concepts of coding units, prediction units, and transform units, supporting greater flexibility in the partition shapes of coding units. In the QTBT block structure 200, coding units may have either square or rectangular shapes. Coding tree units (CTUs) may be partitioned by a quadtree structure. The quadtree leaf nodes may be further partitioned by a binary tree structure. There may be two types of binary tree partitioning: symmetric horizontal partitioning and symmetric vertical partitioning.

[0029] A binary tree leaf node may be called a coding unit (CU), and its segmentation may be used for prediction and transform processes without further division. This means that coding units, prediction units, and transform units may have the same block size in the QTBT coding block structure 200. A coding unit may contain coding blocks (CBs) of different color components (e.g., one coding unit may contain one luma CB and two chroma CBs for P slices and B slices in 4:2:0 chroma format) or may contain CBs of a single component (e.g., one coding unit may contain one luma CB or two chroma CBs for I slices).

[0030] For the QTBT splitting method, the following parameters may be defined: The coding tree unit size may be the root node size of the quadtree, which is the same concept as in HEVC; MinQTSize may be the minimum allowed quadtree leaf node size; MaxBTSize may be the maximum allowed binary tree root node size; MaxBTDepth may be the maximum allowed binary tree depth; MinBTSize may be the minimum allowed binary tree leaf node size.

[0031] In one example of a QTBT partitioning structure 200, the coding tree unit size may be set as 128x128 luma samples with two corresponding 64x64 blocks of chroma samples. MinQTSize may be set to 16x16. MaxBTSize may be set to 64x64. MinBTSize (for both width and height) may be set to 4x4. MaxBTDepth may be set to 4. Quad-tree partitioning may first be applied to the coding tree unit to generate quad-tree leaf nodes. The quad-tree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., the coding tree unit size). If a leaf quad-tree node is 128x128, it cannot be further partitioned by a binary tree because its size may exceed MaxBTSize (i.e., 64x64). Otherwise, the leaf quad-tree node may be further partitioned by a binary tree. Thus, the quadtree leaf node may also be the root node for the binary tree, which has depth zero.

[0032] If the binary tree depth reaches MaxBTDepth (i.e., 4), no further splits may be considered. If a binary tree node has a width equal to MinBTSize (i.e., 4), no further horizontal splits may be considered. Similarly, if a binary tree node has a height equal to MinBTSize, no further vertical splits may be considered. Leaf nodes of the binary tree are further processed by the prediction and transform processes without further splits. In one example, the maximum coding tree unit size may be 256 x 256 luma samples.

[0033] Furthermore, the QTBT scheme may support the flexibility of having separate QTBT structures for luma and chroma. Currently, for P and B slices, the luma and chroma CTBs in one coding tree unit may share the same QTBT structure. However, for I slices, the luma CTB may be divided into CUs by a QTBT structure, and the chroma CTB may be divided into chroma coding units by a different QTBT structure. This means that a CU in an I slice may contain a coding block of the luma component or a coding block of two chroma components, while a coding unit in a P or B slice consists of coding blocks of all three color components.

[0034] 3A-3D, exemplary syntax elements 300A-300D are shown, which may be used to signal coding tree unit sizes to save bits.

[0035] According to one or more embodiments, two of three flags, namely, use_32_ctu_size_flag, use_64_ctu_size_flag, and use_128_ctu_size_flag, may be used to signal the coding tree unit size. In an embodiment, use_32_ctu_size_flag may be signaled first. If use_32_ctu_size_flag is equal to 1, coding tree unit size signaling may end. Otherwise, use_64_ctu_size_flag may be signaled. In an embodiment, use_64_ctu_size_flag may be signaled first. If use_64_ctu_size_flag is equal to 1, coding tree unit size signaling may end. Otherwise, use_32_ctu_size_flag may be signaled. In an embodiment, use_32_ctu_size_flag may be signaled first. If use_32_ctu_size_flag is equal to 1, coding tree unit size signaling may terminate. Otherwise, use_128_ctu_size_flag may be signaled. In an embodiment, use_128_ctu_size_flag may be signaled first. If use_128_ctu_size_flag is equal to 1, coding tree unit size signaling may terminate. Otherwise, use_32_ctu_size_flag may be signaled. In an embodiment, use_64_ctu_size_flag may be signaled first. If use_64_ctu_size_flag is equal to 1, coding tree unit size signaling may terminate. Otherwise, use_128_ctu_size_flag may be signaled. In an embodiment, use_128_ctu_size_flag may be signaled first. If use_128_ctu_size_flag is equal to 1, coding tree unit size signaling may terminate. Otherwise, the use_64_ctu_size_flag may be signaled.

[0036] 3A-B, according to one or more embodiments, individual flags in a sequence parameter set indicate whether a minimum coding tree unit size may be applied (use_smallest_ctu_size_flag) and whether a maximum coding tree unit size may be applied (use_largest_ctu_size_flag). In one embodiment, a sequence parameter set flag indicating whether a minimum coding tree unit size may be applied may be signaled first, and if a minimum coding tree unit size is not applied, another sequence parameter set flag indicating whether a maximum coding tree unit size may be applied may be signaled. In another embodiment, a sequence parameter set flag indicating whether a maximum coding tree unit size may be applied may be signaled first, and if a maximum coding tree unit size is not applied, another sequence parameter set flag indicating whether a minimum coding tree unit size may be applied may be signaled.

[0037] use_smallest_ctu_size_flag equal to 1 may specify that the luma coding tree block size of each coding tree unit may be equal to 32x32, and use_smallest_ctu_size_flag equal to 0 may specify that use_largest_ctu_size_flag may be present.

[0038] use_largest_ctu_size_flag equal to 1 may specify that the luma coding tree block size for each coding tree unit may be equal to 128x128, and use_largest_ctu_size_flag equal to 0 may specify that the luma coding tree block size for each coding tree unit may be equal to 64x64.

[0039] log2_min_luma_coding_block_size_minus2 plus 2 may specify the minimum luma coding block size.

[0040] The variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC may be derived as follows: if(use_smallest_ctu_size_flag) CtbLog2SizeY=0 elseif(use_largest_ctu_size_flag) CtbLog2SizeY=2 else CtbLog2SizeY=1 CtbSizeY=1< <CtbLog2SizeY

[0041] 3C , according to one or more embodiments, sps_max_luma_transform_size_64_flag may be signaled only if the coding tree unit size may be greater than or equal to 64x64. In one embodiment, use_32_ctu_size_flag may be signaled first, and if equal to 1, sps_max_luma_transform_size_64_flag may not be signaled. In one embodiment, use_64_ctu_size_flag may be signaled first, and if equal to 0, then use_32_ctu_size_flag may be signaled, and may be equal to 1, and sps_max_luma_transform_size_64_flag may not be signaled. In an embodiment, if use_128_ctu_size_flag may be signaled first and may be equal to 0, then use_32_ctu_size_flag may be signaled and may be equal to 1, and sps_max_luma_transform_size_64_flag may not be signaled.

[0042] use_32_ctu_size_flag equal to 1 may specify that the luma coding tree block size for each coding tree unit may be equal to 32x32, use_32_ctu_size_flag equal to 0 may specify that use_128_ctu_size_flag may be present, use_128_ctu_size_flag equal to 1 may specify that the luma coding tree block size for each coding tree unit may be 128x128, and use_128_ctu_size_flag equal to 0 may specify that the luma coding tree block size for each coding tree unit may be equal to 64x64.

[0043] log2_min_luma_coding_block_size_minus2 plus 2 may specify the minimum luma coding block size.

[0044] sps_max_luma_transform_size_64_flag equal to 1 may specify that the maximum transform size in luma samples may be equal to 64, and sps_max_luma_transform_size_64_flag equal to 0 may specify that the maximum transform size in luma samples may be equal to 32. If not present, the value of sps_max_luma_transform_size_64_flag may be inferred to be equal to 0.

[0045] The variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC and PicHeightInSamplesC may be derived as follows: if(use_32_ctu_size_flag) CtbLog2SizeY=0 elseif(use_128_ctu_size_flag) CtbLog2SizeY=2 else CtbLog2SizeY=1 CtbSizeY=1< <CtbLog2SizeY

[0046] Referring now to FIG. 3D, according to one or more embodiments, sps_max_luma_transform_size_64_flag may be signaled only if the coding tree unit size is not the minimum coding tree unit size.

[0047] use_smallest_ctu_size_flag equal to 1 may specify that the luma coding tree block size of each coding tree unit may be equal to 32x32, and use_smallest_ctu_size_flag equal to 0 may specify that use_largest_ctu_size_flag may be present.

[0048] use_largest_ctu_size_flag equal to 1 may specify that the luma coding tree block size for each coding tree unit may be equal to 128x128, and use_largest_ctu_size_flag equal to 0 may specify that the luma coding tree block size for each coding tree unit may be equal to 64x64.

[0049] log2_min_luma_coding_block_size_minus2 plus 2 may specify the minimum luma coding block size.

[0050] sps_max_luma_transform_size_64_flag equal to 1 may specify that the maximum transform size in luma samples may be equal to 64, and sps_max_luma_transform_size_64_flag equal to 0 may specify that the maximum transform size in luma samples may be equal to 32. If not present, the value of sps_max_luma_transform_size_64_flag may be inferred to be equal to 0.

[0051] The variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC and PicHeightInSamplesC may be derived as follows: if(use_smallest_ctu_size_flag) CtbLog2SizeY=0 elseif(use_largest_ctu_size_flag) CtbLog2SizeY=2 else CtbLog2SizeY=1 CtbSizeY=1< <CtbLog2SizeY

[0052] 4, an operational flowchart illustrating steps of a method 400 for encoding 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 devices separate from or including computer 102 and server computer 114.

[0053] At 402, the method 400 includes receiving video data having a coding tree unit size.

[0054] At 404, the method 400 includes signaling a coding tree unit size associated with the video data by setting two or more flags.

[0055] At 406, the method 400 includes encoding the video data based on a flag corresponding to the signaled coding tree unit size.

[0056] It can be appreciated that Figure 4 is only intended to provide an illustration of one implementation and is not intended to imply limitations on how different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.

[0057] Figure 5 is a block diagram 500 of internal and external components of the computer shown in Figure 1, according to an example embodiment. It should be understood that Figure 5 is intended to provide an illustration of one implementation and is not intended to imply any limitations with regard 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.

[0058] The computer 102 (FIG. 1) and the 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 on one or more buses 826, one or more computer-readable RAMs 822 and one or more computer-readable ROMs 824, one or more operating systems 828, and one or more computer-readable tangible storage devices 830.

[0059] The processor 820 may be implemented in hardware, firmware, or a combination of hardware and software. The processor 820 may be 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.

[0060] One or more operating systems 828, software programs 108 (FIG. 1), and video encoding program 116 (FIG. 1) on server computer 114 (FIG. 1) are stored in one or more respective computer-readable tangible storage devices 830 for execution by one or more of the respective processors 820 via one or more of the respective RAMs 822. In the embodiment shown in FIG. 5, each of the computer-readable tangible storage devices 830 is an internal hard drive magnetic disk storage device. Alternatively, each of the computer-readable tangible 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 other type of non-transitory computer-readable tangible storage device capable of storing computer programs and digital information.

[0061] 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 portable, tangible, computer-readable storage devices 936, such as a CD-ROM, a DVD, a memory stick, a magnetic tape, a magnetic disk, an optical disk, or a semiconductor storage device. Software programs, such as software program 108 (FIG. 1) and video encoding program 116 (FIG. 1), can be stored in one or more of the respective portable, tangible, computer-readable storage devices 936, read via the respective R / W drive or interface 832, and loaded onto the respective hard drive 830.

[0062] 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 to the computer 102 (FIG. 1) and the server computer 114 from an external computer via a network (e.g., the Internet, a local area network, or other wide area network) and the respective network adapters or interfaces 836. From the network adapters or interfaces 836, the software program 108 and the video encoding program 116 on the server computer 114 are loaded onto their respective hard drives 830. The network can include copper wire, fiber optics, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers.

[0063] Each of the 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, touchpads, pointing devices, and other human interface devices. Each of the 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).

[0064] Although this disclosure includes detailed descriptions of cloud computing, it is understood that implementation of the teachings described herein is not limited to cloud computing environments. Rather, some embodiments can be implemented in connection with any other type of computing environment now known or later developed.

[0065] Cloud computing is a service delivery model 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, services) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0066] Features include: On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without requiring human interaction with the service provider. Wide Area Network Access: Functionality is available over the network and accessed through standard mechanisms, facilitating use by heterogeneous thin-client or thick-client platforms (e.g., cell phones, laptops, and 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 generally have no control or knowledge regarding 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). Rapid Elasticity: Capabilities are quickly and elastically provisioned, sometimes automatically, to rapidly scale out, and quickly released to rapidly scale in. To the consumer, the capabilities available for provisioning often appear unlimited, and can be purchased in any quantity at any time. Metered Services: Cloud systems automatically control and optimize resource usage by utilizing metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage is monitored, controlled, and reported, providing transparency to both providers and consumers of the services it utilizes.

[0067] The service models are as follows: Software as a Service (SaaS): The functionality provided to the consumer is through the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface like a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functions, with the possible exception of limited, user-specific application configuration settings. Platform as a Service (PaaS): The capability offered to consumers is the deployment of applications they create or acquire, 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 the network, servers, operating systems, or storage, but does have control over the deployed applications and potentially the configuration of the application hosting environment. Infrastructure as a Service (IaaS): The capability offered to consumers is to provision processing, storage, network, and other basic computing resources on which they can deploy and run any software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but do have control over the operating system, storage, deployed applications, and limited control over selected network components (e.g., host firewalls).

[0068] The deployment models are as follows: Private Cloud: Cloud infrastructure is operated exclusively for an organization. It may be managed by that organization or a third party and may reside on-site or off-site. Community Cloud: The cloud infrastructure is shared by several organizations and supports a specific community with shared interests (e.g., mission, security requirements, policy, and compliance considerations), which may be managed by the organization or a third party and may reside on-site or off-site. Public Cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by an organization that sells cloud services. Hybrid Cloud: A cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain distinct entities but are tied together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0069] Cloud computing environments are service-oriented and focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure consisting of a network of interconnected nodes.

[0070] Referring to FIG. 6, an exemplary cloud computing environment 600 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 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. They may be grouped (not shown), physically or virtually, into one or more networks, such as private, community, public, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing environment 600 to provide infrastructure, platform, and / or software as a service, eliminating the need for cloud consumers to maintain resources on their local computing devices. It will be understood that the types of computing devices 54A-N shown in FIG. 5 are intended to be merely exemplary, and that the cloud computing node 10 and cloud computing environment 600 may communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).

[0071] Referring to Figure 7, there is shown a collection of functional abstraction layers 700 provided by the cloud computing environment 600 (Figure 6). It should be understood that the components, layers, and functions shown in Figure 7 are intended to be merely exemplary, and that embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0072] 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 network components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0073] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers 71; virtual memory 72; virtual networks, including virtual private networks 73; virtual applications and operating systems 74; and virtual clients 75.

[0074] In one example, the management layer 80 may provide the following functions: 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 for cloud consumers and tasks and protection for 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 so that requested service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangement and procurement of cloud computing resources for anticipated future requirements according to SLAs.

[0075] The workload layer 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom instruction delivery 93; data analytics processing 94; transaction processing 95; and video encoding 96. Video encoding 96 may encode video data using a separate flag that replaces the coding tree unit size syntax.

[0076] Some embodiments may relate to systems, methods, and / or computer-readable media at any possible level of technical detail of integration. The computer-readable media may include a computer-readable non-transitory storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform operations.

[0077] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disk read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as a punch card or a ridge structure in a groove on which instructions are recorded, and any suitable combination thereof. As used herein, a computer-readable storage medium is not to be understood as a transitory signal itself, such as, for example, radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through a wire.

[0078] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium into each computing / processing device, or can be downloaded to an external computer or external 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 include copper transmission cables, optical fiber transmissions, wireless transmissions, 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.

[0079] The computer-readable program code / instructions for performing operations may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object-oriented programming languages such as Smalltalk, C++, etc., and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In this last scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., through 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 aspects or operations.

[0080] 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, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, generate means for performing the functions / steps specified in the flowchart and / or block diagram block(s). These computer-readable program instructions can also be stored on a computer-readable storage medium that can direct a computer, programmable data processing apparatus, and / or other apparatus to function in a particular manner, such that the computer-readable storage medium having instructions stored therein includes an article of manufacture containing instructions that implement aspects of the functions / steps specified in the flowchart and / or block diagram block(s).

[0081] Computer-readable program instructions can also be loaded into a computer, other programmable data processing apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operating steps to produce a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device perform the functions / steps specified in the flowchart and / or block diagram block(s).

[0082] 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 instructions, including one or more executable instructions for implementing the specified logical function(s). The methods, computer systems, and computer-readable media may include additional, fewer, different, or differently arranged blocks than those shown in the figures. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may actually be executed concurrently or substantially concurrently, 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 illustrations, and combinations of blocks in the block diagrams and / or flow illustrations, can be realized by special-purpose hardware-based systems that perform the specified functions or steps or execute a combination of special-purpose hardware and computer instructions.

[0083] It will be apparent that the systems and / or methods described herein may be implemented in various forms of hardware, firmware, or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and / or methods is not intended to limit the implementation. Thus, the operation and behavior of the systems and / or methods are described herein without reference to specific software code, and it will be understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.

[0084] No element, step, or instruction used herein should be construed as critical or required unless explicitly stated. Also, as used herein, the articles "a" and "an" are intended to include one or more items and can be used interchangeably with "one or more." Furthermore, as used herein, the term "collection" is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.) and can be used interchangeably with "one or more." Where only one item is intended, the term "one" or similar language is used. Also, as used herein, the terms "have," "have," "having," and the like are intended to be open-ended terms. Furthermore, the phrase "based on" is intended to mean "based at least in part on," unless expressly specified otherwise.

[0085] The descriptions of various aspects and embodiments have been presented for illustrative purposes, but are not intended to be exhaustive or limited to the disclosed embodiments. Although 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 may be combined in ways not specifically recited in the claims and / or disclosed in the specification. While each dependent claim listed below may depend directly on only one claim, the disclosure of possible implementations includes each dependent claim combined with all other claims in the claims. 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 herein have been selected to best explain the principles of the embodiments, practical applications, or technical improvements to technologies found in the marketplace, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. 1. A method for transmitting a bitstream, performed by an encoder, comprising: generating encoded video data; transmitting a bitstream containing the encoded video data; the encoded video data includes one or more syntax elements corresponding to a signaled coding tree unit size; Generating the encoded video data includes: generating video data having a coding tree unit size; signaling the coding tree unit size associated with the video data by setting one or more syntax elements; encoding the video data based on the one or more syntax elements corresponding to a signaled coding tree unit size; signaling sps_max_luma_transform_size_64_flag at the SPS level only if the coding tree unit size is 64x64 or greater, where sps_max_luma_transform_size_64_flag equal to 1 indicates that the maximum transform size in luma samples is equal to 64, sps_max_luma_transform_size_64_flag equal to 0 indicates that the maximum transform size in luma samples is equal to 32, and if not present the value of sps_max_luma_transform_size_64_flag is inferred to be equal to 0; method.

2. 2. The method of claim 1, wherein the one or more syntax elements include two of a 32-pixel coding tree unit size flag, a 64-pixel coding tree unit size flag, and a 128-pixel coding tree unit size flag.

3. 3. The method of claim 2, wherein the 32-pixel coding tree unit size flag is signaled first, and the 64-pixel coding tree unit size flag is signaled based on the 32-pixel coding tree unit size flag not being equal to 1.

4. 3. The method of claim 2, wherein the 64-pixel coding tree unit size flag is signaled first, and the 32-pixel coding tree unit size flag is signaled based on the 64-pixel coding tree unit size flag not being equal to 1.

5. 3. The method of claim 2, wherein the 32-pixel coding tree unit size flag is signaled first, and the 128-pixel coding tree unit size flag is signaled based on the 32-pixel coding tree unit size flag not being equal to 1.

6. 3. The method of claim 2, wherein the 128-pixel coding tree unit size flag is signaled first, and the 32-pixel coding tree unit size flag is signaled based on the 128-pixel coding tree unit size flag not being equal to 1.

7. 3. The method of claim 2, wherein the 64-pixel coding tree unit size flag is signaled first, and the 128-pixel coding tree unit size flag is signaled based on the 64-pixel coding tree unit size flag not being equal to 1.

8. 3. The method of claim 2, wherein the 128-pixel coding tree unit size flag is signaled first, and the 64-pixel coding tree unit size flag is signaled based on the 128-pixel coding tree unit size flag not being equal to 1.

9. 2. The method of claim 1, wherein the sps_max_luma_transform_size_64_flag is not signaled based on the 32 pixel coding tree unit size flag being initially signaled and equal to 1.

10. 2. The method of claim 1, wherein, based on the 64-pixel coding tree unit size flag being initially signaled and equal to 0, the 32-pixel coding tree unit size flag is signaled and set equal to 1, and the sps_max_luma_transform_size_64_flag is not signaled.

11. 2. The method of claim 1, wherein, based on the 128-pixel coding tree unit size flag being initially signaled and equal to 0, the 32-pixel coding tree unit size flag is signaled and set equal to 1, and the sps_max_luma_transform_size_64_flag is not signaled.

12. 2. The method of claim 1, wherein a first syntax element and a second syntax element of the one or more syntax elements correspond to a sequence parameter set associated with the video data, the first syntax element indicating whether a minimum coding tree unit size applies, and the second syntax element indicating whether a maximum coding tree unit size applies.

13. 13. The method of claim 12, wherein the first syntax element is signaled first and the second syntax element is signaled based on the minimum coding tree unit size not being applied.

14. 13. The method of claim 12, wherein a second syntax element is signaled first and the first syntax element is signaled based on the maximum coding tree unit size not being applied.

15. A video encoding method performed by an encoder, comprising: generating encoded video data; the encoded video data includes one or more syntax elements corresponding to a signaled coding tree unit size; Generating the encoded video data includes: generating video data having a coding tree unit size; signaling the coding tree unit size associated with the video data by setting one or more syntax elements; encoding the video data based on the one or more syntax elements corresponding to a signaled coding tree unit size; signaling sps_max_luma_transform_size_64_flag at the SPS level only if the coding tree unit size is 64x64 or greater, where sps_max_luma_transform_size_64_flag equal to 1 indicates that the maximum transform size in luma samples is equal to 64, sps_max_luma_transform_size_64_flag equal to 0 indicates that the maximum transform size in luma samples is equal to 32, and if not present the value of sps_max_luma_transform_size_64_flag is inferred to be equal to 0; method.

16. A method for video decoding, performed by a decoder, the method comprising: receiving coded video data, where sps_max_luma_transform_size_64_flag is signaled at the SPS level only if the coding tree unit size is 64x64 or greater, where sps_max_luma_transform_size_64_flag equal to 1 indicates that the maximum transform size in luma samples is equal to 64, sps_max_luma_transform_size_64_flag equal to 0 indicates that the maximum transform size in luma samples is equal to 32, and if not present, the decoder infers that the value of sps_max_luma_transform_size_64_flag is equal to 0; determining from the encoded video data a coding tree unit size associated with the video data signaled by setting one or more syntax elements; decoding the video data using the maximum transform size and the coding tree unit size. method.

17. 1. A method for transmitting a bitstream, performed by an encoder, comprising: generating encoded video data; transmitting a bitstream containing the encoded video data; the encoded video data includes a syntax element corresponding to a coding tree unit size signaled in a sequence parameter set or a slice header; Generating the encoded video data includes: generating video data having a coding tree unit size; signaling a syntax element corresponding to the coding tree unit size in a sequence parameter set or a slice header; signaling sps_max_luma_transform_size_64_flag at the SPS level only if the coding tree unit size is 64x64 or greater, where sps_max_luma_transform_size_64_flag equal to 1 indicates that the maximum transform size in luma samples is equal to 64, sps_max_luma_transform_size_64_flag equal to 0 indicates that the maximum transform size in luma samples is equal to 32, and if not present the value of sps_max_luma_transform_size_64_flag is inferred to be equal to 0; The step of signaling the syntax element comprises: signaling a first syntax element of the syntax elements, the first syntax element corresponding to a first coding tree unit size; The method comprises: if the first syntax element is 1, encoding the video data based on the first coding tree unit size without signaling a second syntax element of the syntax elements; signaling the second syntax element of the syntax elements when the first syntax element is 0, and encoding the video data based on the signaled second syntax element; If the second syntax element is 1, the video data is encoded based on a second coding tree unit size, and if the second syntax element is 0, the video data is encoded based on a third coding tree unit size. method.

18. 20. The method of claim 17, wherein the syntax elements include two of a 32-pixel coding tree unit size flag, a 64-pixel coding tree unit size flag, and a 128-pixel coding tree unit size flag.

19. 20. The method of claim 18, wherein the 32-pixel coding tree unit size flag is signaled first, and the 64-pixel coding tree unit size flag is signaled based on the 32-pixel coding tree unit size flag not being equal to 1.

20. 20. The method of claim 18, wherein the 64-pixel coding tree unit size flag is signaled first, and the 32-pixel coding tree unit size flag is signaled based on the 64-pixel coding tree unit size flag not being equal to 1.

21. 20. The method of claim 18, wherein the 32-pixel coding tree unit size flag is signaled first, and the 128-pixel coding tree unit size flag is signaled based on the 32-pixel coding tree unit size flag not being equal to 1.

22. 20. The method of claim 18, wherein the 128-pixel coding tree unit size flag is signaled first, and the 32-pixel coding tree unit size flag is signaled based on the 128-pixel coding tree unit size flag not being equal to 1.

23. 20. The method of claim 18, wherein the 64-pixel coding tree unit size flag is signaled first, and the 128-pixel coding tree unit size flag is signaled based on the 64-pixel coding tree unit size flag not being equal to 1.

24. 20. The method of claim 18, wherein the 128-pixel coding tree unit size flag is signaled first, and the 64-pixel coding tree unit size flag is signaled based on the 128-pixel coding tree unit size flag not being equal to 1.

25. 18. The method of claim 17, wherein the sps_max_luma_transform_size_64_flag is not signaled based on the 32 pixel coding tree unit size flag being initially signaled and equal to 1.

26. 18. The method of claim 17, wherein based on the 64-pixel coding tree unit size flag being initially signaled and equal to 0, the 32-pixel coding tree unit size flag is signaled and set equal to 1, and the sps_max_luma_transform_size_64_flag is not signaled.

27. 18. The method of claim 17, wherein based on the 128-pixel coding tree unit size flag being initially signaled and equal to 0, the 32-pixel coding tree unit size flag is signaled and set equal to 1, and the sps_max_luma_transform_size_64_flag is not signaled.

28. 20. The method of claim 17, wherein the first syntax element indicates whether a minimum coding tree unit size applies and the second syntax element indicates whether a maximum coding tree unit size applies.

29. 29. The method of claim 28, wherein the first syntax element is signaled first and the second syntax element is signaled based on the minimum coding tree unit size not being applied.

30. 20. The method of claim 17, wherein the second syntax element indicates whether a minimum coding tree unit size applies and the first syntax element indicates whether a maximum coding tree unit size applies.

31. A video encoding method performed by an encoder, comprising: generating encoded video data; the encoded video data includes a syntax element corresponding to a coding tree unit size signaled in a sequence parameter set or a slice header; Generating the encoded video data includes: generating video data having a coding tree unit size; signaling a syntax element corresponding to the coding tree unit size in a sequence parameter set or a slice header; signaling sps_max_luma_transform_size_64_flag at the SPS level only if the coding tree unit size is 64x64 or greater, where sps_max_luma_transform_size_64_flag equal to 1 indicates that the maximum transform size in luma samples is equal to 64, sps_max_luma_transform_size_64_flag equal to 0 indicates that the maximum transform size in luma samples is equal to 32, and if not present the value of sps_max_luma_transform_size_64_flag is inferred to be equal to 0; The step of signaling the syntax element comprises: signaling a first syntax element of the syntax elements, the first syntax element corresponding to a first coding tree unit size; The video encoding method comprises: if the first syntax element is 1, encoding the video data based on the first coding tree unit size without signaling a second syntax element of the syntax elements; signaling the second syntax element of the syntax elements when the first syntax element is 0, and encoding the video data based on the signaled second syntax element; If the second syntax element is 1, the video data is encoded based on a second coding tree unit size, and if the second syntax element is 0, the video data is encoded based on a third coding tree unit size. method.

32. A method for video decoding performed by a decoder, comprising: receiving coded video data, where sps_max_luma_transform_size_64_flag is signaled at the SPS level only if the coding tree unit size is 64x64 or greater, where sps_max_luma_transform_size_64_flag equal to 1 indicates that the maximum transform size in luma samples is equal to 64, sps_max_luma_transform_size_64_flag equal to 0 indicates that the maximum transform size in luma samples is equal to 32, and if not present, the decoder infers that the value of sps_max_luma_transform_size_64_flag is equal to 0; receiving a syntax element corresponding to the coding tree unit size in a sequence parameter set or a slice header; Including, The step of receiving the syntax element comprises: receiving a first syntax element of the syntax elements, the first syntax element corresponding to a first coding tree unit size; The method comprises: If the first syntax element is 1, decoding the video data based on the first coding tree unit size without receiving a second syntax element of the syntax elements; receiving the second syntax element of the syntax elements when the first syntax element is 0, and decoding the video data based on the received second syntax element; If the second syntax element is 1, the video data is decoded based on a second coding tree unit size, and if the second syntax element is 0, the video data is decoded based on a third coding tree unit size. method.