Semi-Decoupled Partitioning for Video Coding
By dynamically determining separate encoding tree structures for luma and chroma components based on specific thresholds and partition types, the method enhances video encoding efficiency and adaptability to content diversity.
Patent Information
- Application Number
- JP2023130259
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-17
- Filing Date
- 2023-08-09
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2041-02-02
AI Technical Summary
Existing video encoding formats like AV1 use semi-decoupled tree partitioning, which relies on fixed thresholds for determining whether luma and chroma components use different encoding tree structures, failing to account for content diversity and resulting in suboptimal bit allocation and distortion reduction.
The method involves determining separate encoding tree structures for luma and chroma components based on specific thresholds and partition types, allowing for flexible block partitioning and optimizing tree depth and partitioning methods based on content complexity.
This approach improves encoding efficiency by allowing for adaptive tree structure selection, optimizing bit allocation, and reducing distortion, particularly for diverse content types.
Smart Images

Figure 0007654727000001 
Figure 0007654727000002 
Figure 0007654727000003
Abstract
Description
[Technical field]
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority to U.S. Provisional Patent Application No. 63 / 023,059, filed in the U.S. Patent and Trademark Office on May 11, 2020, and U.S. Patent Application No. 17 / 125,350, filed on December 17, 2020, the entire contents of which are incorporated by reference.
[0002] [Technical field] The present disclosure relates generally to the field of data processing, and more particularly to video encoding and / or decoding. [Background technology]
[0003] AV1 (AOMedia Video 1) is an open video coding format designed for video transmission over the Internet. It was developed as a successor to VP9 by AOMedia (Alliance for Open Media), a consortium founded in 2015. AOMedia includes semiconductor companies, video-on-demand providers, video content producers, software developers and web browser vendors. Summary of the Invention
[0004] Embodiments relate to methods, systems, and computer-readable media for encoding and / or decoding video data. According to one aspect, a method for encoding and / or decoding video data is provided. The method may include receiving video data including chroma and luma components. A first coding tree structure associated with the luma component and a second coding tree structure associated with the chroma component are determined. The video data is decoded based on the first coding tree structure and the second coding tree structure.
[0005] According to another aspect, a computer system for encoding and / or decoding video data is provided. The computer system includes 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 including chroma and luma components. A first coding tree structure associated with the luma components and a second coding tree structure associated with the chroma components are determined. The video data is decoded based on the first coding tree structure and the second coding tree structure.
[0006] According to yet another aspect, a computer-readable medium for encoding and / or decoding video data is provided. The computer-readable medium may include program instructions stored in at least one of one or more computer-readable storage devices and one or more tangible storage devices, the program instructions being executable by a processor. The program instructions are executable by the processor to perform a method that may include receiving video data including chroma and luma components. A first coding tree structure associated with the luma component and a second coding tree structure associated with the chroma component are determined. The video data is decoded based on the first coding tree structure and the second coding tree structure. [Brief description of the drawings]
[0007] The above 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 drawn to scale for clarity in facilitating understanding by those skilled in the art in connection with the detailed description. [Figure 1]1 illustrates a networked computing environment in accordance with at least one embodiment. [Diagram 2] 1 is a diagram of a coding tree structure for chroma and luma components of video data according to at least one embodiment. [Diagram 3] 1 is an operational flowchart illustrating steps performed by a program for encoding video data according to at least one embodiment. [Figure 4] FIG. 2 is a block diagram of internal and external components of the computer and server shown in FIG. 1 according to at least one embodiment. [Diagram 5] 2 is a block diagram of an exemplary cloud computing environment including the computer system shown in FIG. 1 according to at least one embodiment. [Figure 6] FIG. 6 is a block diagram of functional layers of the example cloud computing environment of FIG. 5 in accordance with at least one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0008] Although detailed embodiments of the claimed structures and methods are disclosed herein, it is understood that the disclosed embodiments are merely examples of the claimed structures and methods that may be embodied in various forms. However, these structures and methods may be embodied in many different forms and should not be construed as being limited to the exemplary embodiments described herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete, and will fully convey 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.
[0009] FIELD OF THE DISCLOSURE The 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, a system, method and computer program for encoding and / or decoding video data based on a coding tree structure of a component of the video data. Accordingly, some embodiments have the ability to improve the field of computing by improving encoding and decoding efficiency through identification of the same or different coding tree structure types between components of the video data and restrictions of a particular coding tree structure type.
[0010] As mentioned above, AV1 (AOMedia Video 1) is an open video coding format designed for video transmission over the Internet. It was developed as a successor to VP9 by AOMedia (Alliance for Open Media), a consortium founded in 2015. AOMedia includes semiconductor companies, video-on-demand providers, video content producers, software developers and web browser vendors.
[0011] In AV1, semi-decoupled tree partitioning, or semi-separate tree or flexible-block partitioning may be used for the chroma components. In this way, the luma blocks and chroma blocks in one superblock may have the same or different block partitioning, which may depend on the luma coding block size or the luma tree depth. If the luma block region size is larger than a certain threshold T1 or the coding tree partition depth of the luma block is smaller than or equal to another threshold T2, the chroma components may use the same coding tree structure as the luma components. Otherwise, if the block region size is smaller than or equal to T1 or the luma partition depth is larger than T2, the corresponding chroma blocks may have a different coding block partitioning than the luma components, which is called flexible block partitioning for the chroma components. T1 may be a positive integer such as 128 or 256. T2 may be a positive integer such as 1 or 2.
[0012] However, in semi-decoupled partitioning, a fixed threshold of luma block size or luma component tree depth is used to determine whether luma and chroma use different trees, which does not consider the diversity of different content. Although luma and chroma can have different trees, they still use the same amount of partition types. Some of the partition types may not be useful for chroma components, so the distortion reduction from these partition types may not justify the extra bits signaled for these partition types. Furthermore, if the luma coding block and the chroma coding block use different block partitioning, the chroma block may have a higher tree depth than the luma block. This may occur rarely, so it may not be optimal to spend extra bits to signal these cases. Furthermore, if the coding depth of the luma block exceeds a certain threshold, the luma and chroma may use different tree structures. However, if the luma block has a very complex texture, the chroma block is also more likely to be a block with a relatively complex texture. Therefore, it may be advantageous to identify whether the chroma and luma components use the same or different coding tree structure types, and to restrict a particular coding tree structure type based on various conditions.
[0013] Aspects are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer-readable media according to various embodiments. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0014]
[0023] Referring now to Figure 1, a functional block diagram of a networked computing environment illustrating a video encoding system 100 (hereinafter "system") for encoding and / or decoding video data based on a coding tree structure type is shown. It should be appreciated that Figure 1 is merely illustrative of one implementation and is not intended to imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.
[0015] The system 100 may include a computer 102 and a server computer 114. The computer 102 may communicate with the server computer 114 via a communication network 110 (hereinafter referred to as the "network"). The computer 102 may include a processor 104 and a software program 108 stored in a data storage device 106 and capable of interfacing with a user and communicating with the server computer 114. As described below with reference to FIG. 4, the computer 102 may include internal components 800A and external components 900A, respectively, and the server computer 114 may include internal components 800B and external components 900B, respectively. The computer 102 may be, for example, a mobile device, a phone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing device capable of running a program to access a network and access a database.
[0016] The server computer 114 may also operate in a cloud computing service model, such as Software as a Service (SaaS), Platform as a Service (PaaS), or Infrastructure as a Service (IaaS), as described below with respect to Figures 6 and 7. The server computer 114 may also be deployed in a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.
[0017] A server computer 114, which may be used to encode video data, may execute a video encoding program 116 (hereinafter "program") that may interact with database 112. The video encoding program method is described in more detail below with respect to FIG. 3. In one embodiment, computer 102 may operate as an input device including a user interface, while program 116 may operate primarily on server computer 114. In another embodiment, program 116 may operate primarily on one or more computers 102, while server computer 114 may be used for processing and storage of 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.
[0018] It should be noted, however, that in some cases the processing of the program 116 may be shared in any proportion between the computer 102 and the server computer 114. In other embodiments, the program 116 may operate on more than one computer, a server computer, or some combination of computers and server computers, such as multiple computers 102 in communication with a single server computer 114 across the network 110. In other embodiments, for example, the program 116 may operate on multiple server computers 114 in communication with multiple client computers across the network 110. Alternatively, the program may operate on a network server that communicates with the server and multiple client computers across the network.
[0019] The network 110 may include wired connections, wireless connections, fiber optic connections, or any combination thereof. In general, the network 110 may be any combination of connections and protocols that support communication between the computer 102 and the server computer 114. The network 110 may include various types of networks, such as, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, a telecommunications network such as a Public Switched Telephone Network (PSTN), a wireless network, a public switched network, a satellite network, a cellular network (e.g., a fifth generation (5G) network, a long term evolution (LTE) network, a third generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a metropolitan area network (MAN), a private network, an ad-hoc network, an intranet, an optical fiber-based network, etc., and / or a combination of the above or other types of networks.
[0020] The number and arrangement of devices and networks shown in Figure 1 are provided as an example. In practice, there may be more 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 set of devices (e.g., one or more devices) of system 100 may perform one or more functions that are described as being performed by other sets of devices of system 100.
[0021] 2, a block diagram of an example coding tree structure for video data is shown 200. The coding tree structure may include a luma component 202 and a chroma component 204.
[0022] In addition to the luma block size and coding tree depth of the luma block, the partition type of the luma coding block may also be used to determine whether the luma or chroma coding blocks in a superblock use the same or different partitioning. In one embodiment, if the luma block size is larger than a certain threshold T1, and / or if the coding tree partition depth of the luma block is equal to or smaller than a certain threshold T2, and / or if only quadtree partitioning (4-way partitioning) can be used for the luma block, then the chroma blocks may use the same coding tree structure as the luma block. Otherwise, they may use different coding tree structures. In one embodiment, if the luma block size is larger than a certain threshold T1, or if the coding tree partition depth of the luma block is equal to or smaller than a certain threshold T2, and / or if only quadtree partitioning (4-way partitioning) or binary partitioning (2-way partitioning) can be used for the luma block, then the chroma blocks may use the same coding tree structure as the luma block. Otherwise, if the luma block size is less than T1 or if the coding tree partition depth of the luma block is equal to or greater than T2, the chroma block and luma block may use different coding tree structures as part of a flexible block partitioning scheme. In one embodiment, if L-type or T-type partitions can be used for the luma coding block, the luma and chroma coding blocks may use different partitioning methods. The L-type block partitioning tree method can partition a block into an L-type partition and a rectangular partition. Similarly, the T-type block partitioning tree method can partition a block into a T-type partition and two rectangular partitions.
[0023] If the luma and chroma coding blocks in one superblock may use different partitioning structures, the partition types allowed for the chroma coding blocks may be a subset of the partition types allowed for the luma coding blocks. In an embodiment, if the luma and chroma coding blocks use different partition trees, L-type partitions or T-type partitions may not be allowed for the chroma coding blocks. In an embodiment, if the luma and chroma coding blocks use different partition tree types, only quad-tree partitions (4-way partitions) and / or binary partitions (2-way partitions) may be allowed for the chroma coding blocks. In an embodiment, if the luma and chroma coding blocks use different partition tree types, L-type partitions may not be allowed for further partitioning for the chroma coding blocks. In an embodiment, if the luma and chroma coding blocks use different partition tree types, only quad-tree partitions (4-way partitions) or binary partitions (2-way partitions) may be further partitioned for the chroma coding blocks.
[0024] If the luma and chroma coding blocks in one superblock may use different tree structures, the tree depth of the chroma coding blocks may not exceed the maximum tree depth of the luma coding blocks in this superblock. In an embodiment, if the luma and chroma coding blocks in one superblock may use different partitioning structures, the region size of the chroma coding blocks cannot be smaller than the minimum region size of the luma coding blocks in this superblock. In an embodiment, if the luma and chroma coding blocks in one superblock use different tree structures, the tree depth of the quadtree partition (4-way partition) for the chroma coding blocks cannot exceed the maximum tree depth of the quadtree partition (4-way partition) for the luma coding blocks in this superblock. In an embodiment, if the luma and chroma coding blocks in one superblock use different tree structures, the tree depth of the binary tree (2-way partition) + ternary tree (3-way partition) for the chroma coding blocks cannot exceed the maximum tree depth of the binary tree (2-way partition) + ternary tree (3-way partition) for the luma coding blocks in this superblock. In one embodiment, if a chroma block may be partitioned to a depth that may be the same as the tree depth of the co-located luma coding block, the partitioning pattern and whether the current chroma block may be partitioned or not are not signaled.
[0025] In one superblock, if the depth of the luma coding block may exceed a certain threshold T1 or the minimum luma block region size may be equal to or smaller than another threshold T2, the luma and chroma coding blocks may share a partial tree structure. In one embodiment, if the minimum luma block region size may be equal to or smaller than a threshold T2, the chroma and luma blocks share a top S level tree structure, where T2 and S may both be non-negative integers. For example, T2 may be 128 or 256, and S may be 1 or 2. In one example, T2 may be set to 256 and S may be set to 1. In another example, the minimum luma coding block may be 16×16, so that the luma and chroma may share the first level tree depth, and below that point in the tree structure the luma and chroma may have different tree structures.
[0026] Within one superblock, the condition under which luma and chroma may start separate tree partitioning may depend on the luma partitioning information. In one embodiment, if luma and chroma have separate tree partitioning structures after a luma (or chroma) block may be partitioned to a depth N0, N0 may depend on the luma partitioning depth (N1).
[0027] Within a superblock, the starting point of when luma and chroma start separate tree partitioning may be signaled in the bitstream. In one embodiment, the starting point of when luma and chroma start separate tree partitioning may be signaled at the superblock level, and thus the starting point of the separate trees may be different for different superblocks. The point at which the separate tree structures begin to differ may be signaled in a high level syntax in the bitstream. The high level syntax may include one or more of a sequence header, a frame header, a slice header, etc.
[0028] Within a superblock starting from the superblock, for each subpartition, a flag may be signaled indicating whether luma and chroma share the same partition tree. If the flag may be signaled as a value that may indicate that luma and chroma share the same partition tree, then chroma may not signal further partitioning information. Otherwise, for the chroma component, partitioning information may be further signaled.
[0029]
[0033] Referring now to Figure 3, an operational flow diagram illustrating steps of a method 300 for encoding and / or decoding video data is shown. In some implementations, one or more of the processing blocks of Figure 3 may be performed by computer 102 (Figure 1) and server computer 114 (Figure 1). In some implementations, one or more of the processing blocks of Figure 3 may be performed by another device or group of devices separate from or including computer 102 and server computer 114.
[0030] At 302, the method 300 includes receiving video data including chroma and luma components.
[0031] At 304, the method 300 includes determining a first coding tree structure associated with the luma component and a second coding tree structure associated with the chroma component, whereby the first coding tree structure and the second coding tree structure share the same top-level coding tree structure.
[0032] At 306, the method 300 includes decoding the video data based on the first coding tree structure and the second coding tree structure.
[0033] It can be appreciated that Figure 3 is intended to provide only one example implementation and is not intended to imply any limitations on how different embodiments may be implemented Many modifications to the depicted environment may be made based on design and implementation requirements.
[0034] Figure 4 is a block diagram 400 of the internal and external components of the computer shown in Figure 1, in accordance with an exemplary embodiment. It should be appreciated that Figure 4 is only an illustration of one implementation and is not intended to imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.
[0035] 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 of the 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.
[0036] 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 other type of processing component. In some implementations, the processor 820 includes one or more processors that are programmable to perform functions. The bus 826 includes components that enable communication between the internal components 800A,B.
[0037] One or more operating systems 828, software programs 108 (FIG. 1), and video encoding programs 116 (FIG. 1) on the server computer 114 (FIG. 1) are stored in one or more of the 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 (which typically include cache memory). In the embodiment shown in FIG. 4, each of the computer-readable tangible storage devices 830 is a magnetic disk storage device of an internal hard drive. Alternatively, each of the computer-readable tangible storage devices 830 is a semiconductor storage device such as a ROM 824, an EPROM, a flash memory, an optical disk, a magneto-optical disk, a solid-state disk, a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a cartridge, a magnetic tape, and / or any other type of non-transitory computer-readable tangible storage device capable of storing computer programs and digital information.
[0038] 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 computer readable tangible 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), may be stored in one or more of the respective portable computer readable tangible storage devices 936 and read via the respective R / W drive or interface 832 and loaded onto the respective hard drive 830.
[0039] Each set of internal components 800A,B also includes a network adapter or interface 836, such as a TCP / IP adapter card, a wireless Wi-Fi interface card, or a 3G, 4G, or 5G wireless interface card or other wired or wireless communication link. The software program 108 (FIG. 1) and the video encoding program 116 (FIG. 1) on the server computer 114 (FIG. 1) can be downloaded from an external computer to the computer 102 (FIG. 1) and the server computer 114 via a network (e.g., the Internet, a local area network, or other wide area network) and the respective network adapter or interface 836. From the network adapter or interface 836, the software program 108 and the video encoding program 116 on the server computer 114 are loaded onto the respective hard drives 830. The network may include copper wire, fiber optic, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers.
[0040] 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, touch pads, pointing devices, and other human interface devices. Each of the set of internal components 800A,B may also include 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).
[0041] Although this disclosure includes detailed descriptions of cloud computing, it is to be understood that implementation of the teachings described herein is not limited to a cloud computing environment. Rather, some embodiments may be implemented in conjunction with any other type of computing environment now known or later developed.
[0042] Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0043] Its features are as follows. On-Demand Self-Service: Cloud customers can unilaterally provision computing capacity such as server time and network storage as needed, automatically and without the need for human interaction with the service provider. · Wide Area Network Access: Functionality is available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, cell phones, laptops and PDAs). Resource Pooling: Provider computing resources are pooled to serve multiple customers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. There is a notion of location independence in that customers generally have no control or knowledge of the exact location of the resources provided, but can specify a location at a higher level of abstraction (e.g. country, state, or data center). Rapid Elasticity: Capabilities can be provisioned rapidly and elastically, in some cases automatically, to rapidly scale out and rapidly release 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. Metering 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 can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being used.
[0044] The service model is as follows: · Software as a Service (SaaS): The functionality provided to the customer is through the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The customer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even the individual application functions, with the possible exception of user-specific application configuration settings. Platform as a Service (PaaS): The functionality provided to the customer is the deployment of applications created or acquired by the customer, written using programming languages and tools supported by the provider, on a cloud infrastructure. The customer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the applications deployed and, in some cases, the configuration of the application hosting environment.
[0045] Infrastructure as a Service (IaaS): The functionality provided to a customer is the provisioning of processing, storage, network, and other basic computing resources on which the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but rather has control over the operating systems, storage, deployed applications, and possibly limited control over selected network components (e.g., host firewalls).
[0046] The deployment model is as follows: Private Cloud: The cloud infrastructure is operated exclusively for the organization. It may be managed by the organization or a third party and may be on-site or off-site. Community Cloud: The cloud infrastructure is shared by several organizations to support a specific community with common concerns (e.g., mission, security requirements, policy and compliance considerations). It may be managed by the organization or a third party and may be on-site or off-site. Public Cloud: The cloud infrastructure is made available to the general public or large industry organizations and is owned by an organization that sells cloud services. Hybrid Cloud: The cloud infrastructure consists of two or more clouds (private, community or public) that remain unique entities but are bound together by standardized or proprietary technologies that allow portability of data and applications (e.g. cloud bursting for load balancing between clouds).
[0047] Cloud computing environments are service-oriented with a focus on statelessness, low coupling, modularity and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0048] Referring to FIG. 5, an exemplary cloud computing environment 500 is shown. As shown, the cloud computing environment 500 includes one or more cloud computing nodes 10, and local computing devices used by cloud users, 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, may communicate with one or more cloud computing nodes 10. The cloud computing nodes 10 may communicate with each other. They may be physically or virtually grouped into one or more networks, such as a private, community, public, or hybrid cloud as described above, or a combination thereof (not shown). This allows the cloud computing environment 600 to provide infrastructure, platform, and / or software as a service without the cloud user having to maintain resources on a local computing device. The types of computing devices 54A-54N shown in FIG. 5 are intended to be exemplary only, and it will be understood that the cloud computing nodes 10 and the cloud computing environment 500 may communicate with any type of computer device over any type of network and / or network addressable connection (e.g., using a web browser).
[0049] Referring to Figure 6, a set of functional abstraction layers 600 provided by cloud computing environment 500 (Figure 5) is shown. It should be understood in advance that the components, layers and functions shown in Figure 6 are intended to be exemplary only, and the embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0050] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, Reduced Instruction Set Computer (RISC) architecture based server 62, server 63, blade server 64, storage devices 65, and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0051] The virtualization layer 70 provides an abstraction layer from which examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0052] In one example, management layer 80 may provide the functions described below: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and charging or billing for the utilization of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, and protection of data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides allocation and management of cloud computing resources such that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-positioning and procurement of cloud computing resources where future requirements are anticipated according to SLAs.
[0053] 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 instructional delivery 93, data analytics processing 94, transaction processing 95, and video encoding / decoding 96. The video encoding / decoding 96 may encode / decode video data based on a coding tree structure type.
[0054] Some embodiments may relate to systems, methods and / or computer-readable media in any possible level of technical detail. The computer-readable media may include a computer-readable non-transitory storage medium (or media) having computer-readable program instructions for causing a processor to perform operations.
[0055] A computer readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or raised structures in grooves having instructions recorded thereon, and any suitable combination of the above. As used herein, computer-readable storage media should not be construed as being, per se, a transitory signal, such as electric 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 wires.
[0056] 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 may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium in each computing / processing device.
[0057] The computer readable program code / instructions for performing the 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 completely 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 completely on a remote computer or server. In the latter 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 made 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), may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuitry to perform an aspect or operation.
[0058] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to create a machine, whereby the instructions executing via the processor of the computer or other programmable data processing apparatus create means for performing the functions / operations specified in the flowchart and / or block diagram blocks. These computer readable program instructions may also be stored on a computer readable storage medium that can direct a computer, programmable data processing apparatus, and / or other device to function in a particular manner, whereby a computer readable storage medium having instructions stored thereon includes an article of manufacture including instructions that implement aspects of the functions / operations specified in the flowchart and / or block diagram blocks.
[0059] The computer readable program instructions may 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 operational steps to create a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus or other device perform the functions / operations specified in the flowchart and / or block diagram blocks.
[0060] The flowcharts and block diagrams in the drawings illustrate the architecture, functionality, and operation of possible implementations of the 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 part of an instruction, including one or more executable instructions for implementing the specified logical function. The methods, computer systems, and computer-readable media may include more, fewer, different, or differently arranged blocks than those shown in the drawings. In some alternative implementations, the functions described in the blocks may occur out of the order described in the drawings. For example, two blocks shown in succession may in fact be executed simultaneously or substantially simultaneously, or the blocks may be executed in reverse order depending on the functionality involved. It is also noted that each block in the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that executes the specified functions or operations, or executes a combination of dedicated hardware and computer instructions.
[0061] It will be apparent that the systems and / or methods described herein may be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and / or methods is not a limitation of 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 may be designed to implement the systems and / or methods based on the description herein.
[0062] No element, act, or instruction used herein should be construed as critical or essential unless expressly stated. Also, as used herein, the singular is intended to include one or more items and may be used interchangeably with "one or more." Additionally, as used herein, the term "set" is intended to include one or more items (e.g., related items, unrelated items, combinations of related and unrelated items, etc.) and may be used interchangeably with "one or more." When only one item is intended, the term "one" or similar language is used. Also, as used herein, terms such as "has," "have," "having," and the like are intended to be open-ended terms. Additionally, the phrase "based on" is intended to mean "based at least in part on" unless expressly stated otherwise.
[0063] The description of various aspects and embodiments is presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Even if combinations of features are disclosed in the claims and / or 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 disclosed in the claims and / or specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes each dependent claim combined with all other claims within the scope of 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 in this specification are selected to best explain the principles of the embodiments, practical applications or technical improvements to the technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.
Claims
1. 1. A method of video decoding executable by a processor, comprising: receiving video data including a luma component and a chroma component; determining a first coding tree structure associated with the luma component and a second coding tree structure associated with the chroma components, the first coding tree structure differing from the second coding tree structure, the luma component and the chroma components having a shared partitioning depth, the luma component and the chroma components having the same partitioning when partitioned at a first depth up to the shared partitioning depth, and the luma component and the chroma components having different partitioning when partitioned at a second depth beyond the shared partitioning depth; decoding the video data based on the first coding tree structure and the second coding tree structure; The method includes:
2. The method of claim 1, wherein the partitioning of the chroma components utilizes a set of chroma partition types that is a subset of the set of luma partition types used to partition the luma components.
3. The method of claim 1 or 2, further comprising receiving a partitioning pattern if the partitioning depth of the chroma component is different from the partitioning depth of the co-located luma component.
4. A method according to any one of claims 1 to 3, wherein the partition division information of the chroma components is not signalled on a shared tree structure up to the shared partition depth.
5. A method according to any one of claims 1 to 4, wherein the first coding tree structure differs from the second coding tree structure based on a partition division depth of the luma component.
6. 1. An apparatus for decoding video data, comprising: A memory for storing instructions; one or more processors configured to execute said instructions to perform the method of any one of claims 1 to 4; An apparatus comprising:
7. 1. A computer program for decoding video data, comprising: The computer program causing one or more computers to carry out the method according to any one of claims 1 to 4.
8. 1. A method of video encoding executable by a processor, comprising: determining, in video data including a luma component and a chroma component, a first coding tree structure associated with the luma component and a second coding tree structure associated with the chroma components, the first coding tree structure being different from the second coding tree structure, the luma component and the chroma components having a shared partitioning depth, the luma component and the chroma components having the same partitioning when partitioned at a first depth up to the shared partitioning depth, and the luma component and the chroma components having different partitioning when partitioned at a second depth beyond the shared partitioning depth; encoding the video data based on the first coding tree structure and the second coding tree structure; The method includes:
Citation Information
Patent Citations
Method and Apparatus of Flexible Block Partition for Video Coding
US20170244964A1
Method and apparatus of syntax interleaving for separate coding tree in video coding
WO2019210857A1
Method and apparatus for video encoding and decoding with partially shared luma and chroma coding trees
WO2019231751A1