Signaling method for chroma intra prediction mode, computer system, and program
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2025-06-11
- Publication Date
- 2026-05-15
AI Technical Summary
In AV1 video coding format, the semi-decoupled partitioning (SDP) method does not optimally utilize the relationship between luma and chroma blocks for chroma intra-prediction mode signaling, leading to inefficiencies in encoding and decoding processes.
Identify contexts for entropy coding chroma intra-prediction modes based on co-located luma blocks at predefined positions, using quantized luma modes and omnidirectional or directional modes to improve signaling efficiency.
Enhances encoding and decoding efficiency by optimizing chroma intra-prediction mode signaling, reducing computational overhead and improving video data processing speed.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 63 / 026,495, filed May 18, 2020, and U.S. Patent Application No. 17 / 061,854, filed October 2, 2020, both of which are incorporated herein in their entireties.
[0002] The present disclosure relates generally to the field of data processing, and more particularly to video encoding and / or decoding. [Background technology]
[0003] AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. It is the successor to VP9 and was developed by the Alliance for Open Media (AOMedia), a consortium founded in 2015 that includes semiconductor companies, video-on-demand providers, video content producers, software developers, and web browser vendors. Many of the components of the AV1 project were sourced from previous research efforts by Alliance members. Individual contributors initiated experimental technology platforms several years ago: Xiph's / Mozilla's Daala released their code in 2010; Google's experimental VP9 evolution project, VP10, was announced on September 12, 2014; and Cisco's Thor, released on August 11, 2015. Building on the VP9 codebase, AV1 incorporates additional technologies, some of which were developed in these experimental formats. The first version, 0.1.0, of the AV1 reference codec was released on April 7, 2016. The Alliance announced the release of the AV1 Bitstream Specification on March 28, 2018, along with a reference software-based encoder and decoder. The effective version 1.0.0 of the specification was released on June 25, 2018. The effective version 1.0.0 with Errata 1 of the specification was released on January 8, 2019. The AV1 Bitstream Specification includes a reference video codec. Summary of the Invention [Means for solving the problem]
[0004]
[0003] Embodiments relate to a method, a system, and a computer-readable medium 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 components, wherein a luma component is received. One or more contexts for entropy coding of chroma intra-prediction modes are identified based on one or more multiples of co-located luma blocks at predefined positions. The video data is decoded based on the identified contexts.
[0005] According to another aspect, a computer system for encoding and / or decoding 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 including chroma components, wherein a luma component is received. One or more contexts for entropy coding a chroma intra-prediction mode are identified based on one or more multiples of co-located luma blocks at predefined positions. The video data is decoded based on the identified contexts.
[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 one or more computer-readable storage devices and program instructions stored in at least one of 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 components in response to which a luma component is received. One or more contexts for entropy coding a chroma intra-prediction mode are identified based on one or more multiples of co-located luma blocks at predefined positions. The video data is decoded based on the identified contexts.
[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. The various features of the drawings are not to scale, as the illustrations are for clarity in facilitating understanding by those skilled in the art in conjunction with the detailed description. The drawings are as follows: [Brief explanation of the drawings]
[0008] [Figure 1] FIG. 1 illustrates a networked computer environment in accordance with at least one embodiment. [Figure 2] FIG. 2 is a diagram of a coding tree structure for chroma and luma components of video data, according to at least one embodiment. [Figure 3] 1 is an operational flowchart illustrating steps performed by a program for coding 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 illustrated in FIG. 1 according to at least one embodiment. [Figure 5]2 is a block diagram of an exemplary cloud computing environment including the computer system illustrated in FIG. 1 according to at least one embodiment. [Figure 6] FIG. 6 is a block diagram of functional layers of the exemplary cloud computing environment of FIG. 5 in accordance with at least one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0009] Although detailed embodiments of the claimed structures and methods are disclosed herein, it should be understood that the disclosed embodiments are merely exemplary of the claimed structures and methods, which may be embodied in various forms. These structures and methods, however, 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 its scope to those skilled in the art. In this description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.
[0010]
[0002] 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 and / or decoding video data based on context associated with co-located luma blocks at one or more predefined positions. Accordingly, some embodiments are capable of improving computational overhead by improving encoding and decoding efficiency using improved signaling for chroma intra-prediction modes.
[0011] As previously mentioned, AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. It was developed as the successor to VP9 by the Alliance for Open Media (AOMedia), a consortium formed in 2015 that includes semiconductor companies, video-on-demand providers, video content producers, software developers, and web browser vendors. Many of the components of the AV1 project were sourced from previous research efforts by Alliance members. Individual contributors initiated experimental technology platforms many years ago: Xiph's / Mozilla's Daala released their code in 2010; Google's experimental VP9 evolution project, VP10, was announced on September 12, 2014; and Cisco's Thor, released on August 11, 2015. Building on the VP9 codebase, AV1 incorporates additional technologies, some of which were developed in these experimental formats. The first version, 0.1.0, of the AV1 reference codec was released on April 7, 2016. The Alliance announced the release of the AV1 Bitstream Specification on March 28, 2018, along with a reference software-based encoder and decoder. The effective version 1.0.0 of the specification was released on June 25, 2018. The effective version 1.0.0 with Errata 1 of the specification was released on January 8, 2019. The AV1 Bitstream Specification includes a reference video codec.
[0012] In AV1, semi-decoupled partitioning (SDP) may be used. However, in SDP, the luma blocks and chroma blocks of one superblock may have different partitions, and the area of one chroma block may cover multiple luma coding blocks. Therefore, always using the top-left position of a chroma block to identify the corresponding luma mode may not be optimal. In addition, when the luma blocks and chroma blocks of one superblock have different partitions, the CfL mode has a higher probability of being selected as the best mode, but this characteristic is not fully utilized in the chroma mode signaling method. Furthermore, when signaling a chroma intra prediction mode, all luma modes in the current superblock are available. However, this is not utilized to design a better codeword for signaling the chroma intra prediction mode. Therefore, for improved signaling of chroma intra prediction modes, it may be advantageous to identify one or more contexts for entropy coding the chroma intra prediction mode based on co-located luma blocks at one or more predefined positions.
[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 illustrates a video coding system 100 (hereinafter "system") for encoding and / or decoding video data based on a coding tree structure type. It should be understood that Figure 1 provides only an illustration of one implementation and is not meant to be limiting 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] System 100 may include a computer 102 and a server computer 114. Computer 102 may communicate with server computer 114 via 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 capable of interfacing with a user and communicating with server computer 114. As described below with reference to FIG. 4 , 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.
[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 (laaS), as described below with respect to Figures 6 and 7. The server computer 114 may also be located in a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.
[0017] Server computer 114, which may be used to encode video data, is capable of executing video coding program 116 (hereinafter "program"), which may interact with database 112. The video coding program method is described in more detail below with respect to FIG. 3. In one embodiment, computer 102 may act as an input device, including a user interface, and program 116 may execute primarily on server computer 114. In an alternative embodiment, program 116 may execute primarily on one or more computers 102, and server computer 114 may be used to process and store data used by program 116. Note that program 116 may be a standalone program or may be integrated into a larger video coding program.
[0018] However, it should be noted that the processing of the program 116 may, in some cases, be shared in any proportion between the computer 102 and the server computer 114. In other embodiments, the program 116 may run on multiple computers, server computers, or some combination of computers and server computers, e.g., multiple computers 102 communicating with a single server computer 114 over the network 110. In other embodiments, for example, the program 116 may run on multiple server computers 114 communicating with multiple client computers over the network 110. Alternatively, the program may run on a network server that communicates with the server and multiple client computers over the network.
[0019] 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, an optical fiber-based network, etc., and / or a combination of these or other types of networks.
[0020] The number and arrangement of devices and networks shown in Figure 1 are provided as an example. In practice, there may be additional, fewer, different, or differently arranged devices and / or networks. 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 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] A semi-separate partitioning (SDP) scheme (i.e., semi-separate tree (SST) or flexible block partitioning for chroma components) may be used. According to SDP, the luma component 202 and chroma component 204 of a certain superblock (SB) may have the same or different block partitioning, which may depend on the luma coding block size or luma tree depth. When the luma block area size is larger than a threshold T1 or the coding tree partitioning depth of the luma block is smaller than or equal to a threshold T2, the chroma block may use the same coding tree structure as the luma. Otherwise, when the block area size is smaller than or equal to T1 or the luma partitioning depth is larger than T2, the corresponding chroma block may have a different coding block partitioning with the luma component, which may be referred to as flexible block partitioning for chroma components. T1 may be a positive integer such as 128 or 256. T2 may be a positive integer such as 1 or 2.
[0023] According to one or more embodiments, when SDP may be applied and one chroma coding block may be associated with multiple luma coding blocks, the context used for entropy coding the chroma intra prediction mode may depend on the corresponding luma block located at one or more predefined positions. In one embodiment, the one or more predefined positions may include a middle position and / or the upper left corner of the current chroma block. In one embodiment, the middle position of the current chroma block may be the upper left corner of the current chroma block.
[0024] In one embodiment, when both the middle position and the top-left corner of the current chroma block can be used to identify the corresponding luma block, these two luma modes can be quantized before performing context selection. In one embodiment, the luma mode can be quantized to two values before performing the context selection process, which can be a directional mode or an omnidirectional mode.
[0025] In other embodiments, the omnidirectional mode may be quantized to a single value, and the directional modes may be quantized to a smaller set according to their angle. In one example, the directional modes may be quantized to four values, where 0 means the angle of the current mode can be less than 90 degrees, 1 means the angle of the current mode can be between 90 and 135 degrees, 2 means the angle of the current mode can be between 135 and 180 degrees, and 3 means the angle of the current mode can be greater than 180 degrees.
[0026] In one embodiment, the context may be derived as an intra prediction mode that may be used to predict most of the samples of the co-located luma block.
[0027] In one embodiment, multiple sample positions may be predefined, intra-prediction modes associated with these positions for predicting the co-located luma block may be identified, and then one of the identified prediction modes may be used to derive a context value. In one example, the most frequently used prediction mode among the identified prediction modes may be used to derive a context value. In a second example, the predefined sample positions include four corner samples and a center / middle sample. In a third example, the predefined sample positions include four corner samples. In a fourth example, the predefined sample positions include two selected positions of the four corner samples and one center / middle sample. In a fifth example, the predefined sample positions include three selected positions of the four corner samples and one center / middle sample.
[0028] In one embodiment, if a co-located luma block at one or more predefined positions may not be predicted by an intra prediction mode and the current chroma coding block may be predicted by an intra prediction mode, the prediction mode of the co-located luma block or blocks may be mapped to one or more pre-defined intra prediction modes. In one example, when a co-located luma block may be coded by IBC or palette mode, a default intra prediction mode may be used to derive a context for entropy coding the chroma intra prediction mode. The default intra prediction mode may include, but is not limited to, DC, SMOOTH, SMOOTH-H, SMOOTH-V, or Paeth prediction mode.
[0029] According to one or more embodiments, when signaling a chroma intra prediction mode, one flag, i.e., a CfL flag, may be signaled first to indicate whether the current chroma mode may be a CfL mode. In one embodiment, the chroma intra prediction modes of neighboring blocks may be used to derive a context for signaling the CfL flag. In one example, when none of the neighboring chroma modes are likely to be a CfL mode, the first context may be used. Otherwise, the second context may be used. In another example, when none of the neighboring chroma modes are likely to be a CfL mode, the first context may be used. Otherwise, when one of the neighboring chroma modes is likely to be a CfL mode, the second context may be used. Otherwise, the third context may be used.
[0030] In one embodiment, the corresponding luma mode may be used to derive a context for signaling the CfL flag. In one embodiment, the coordinates of the corresponding luma mode may be located at the middle position and the upper left corner of the current chroma block. In another embodiment, the first context may be used when the corresponding luma mode may be a directional mode. Otherwise, the second context may be used. In another embodiment, three contexts may be used when two corresponding luma modes may be employed to determine the context of the CfL flag. The first context may be used when both corresponding luma modes may be an omnidirectional mode. Otherwise, the second context may be used when one of the corresponding luma modes may be an omnidirectional mode. Otherwise, the third context may be used.
[0031] According to one or more embodiments, to signal chroma intra-prediction modes, a list may be constructed that includes previously encoded luma modes within the current picture / slice / tile. Only the N luma modes with the highest occurrence may be allowed and signaled for the current chroma block, where N may be a positive integer. In one embodiment, N may be a power of 2. In one embodiment, only previously encoded luma modes within the current super-block row may be used. In one embodiment, when SDP may be enabled, only previously encoded luma modes within the current super-block may be used.
[0032] According to one or more embodiments, all nominal intra-prediction angles allowed for luma-coded blocks may also be allowed and signaled for chroma-coded blocks, while only a subset of delta angles relative to the nominal angles may be allowed and signaled for chroma-coded blocks. In one embodiment, all omnidirectional modes, such as DC, SMOOTH, SMOOTH-H, and SMOOTH-V modes, may be allowed and signaled for chroma-coded blocks. In one embodiment, only delta angles relative to the co-located luma intra-prediction mode may be allowed and signaled for chroma-coded blocks. In one embodiment, the nominal angle may be signaled first together with the omnidirectional mode. Then, if the current mode may be a directional mode and is equal to the co-located luma nominal mode, a second flag may be signaled to indicate the index of the delta angle relative to the nominal angle. In other embodiments, all intra-prediction modes allowed for chroma-coded blocks may be signaled together.
[0033] 3, an operational flowchart illustrating steps of a method 300 for encoding and / or decoding video data is illustrated. In some implementations, one or more process blocks of FIG. 3 may be performed by computer 102 (FIG. 1) and server computer 114 (FIG. 1). In some implementations, one or more process blocks of FIG. 3 may be performed by another device or group of devices separate from or including computer 102 and server computer 114.
[0034] At 302, the method 300 includes receiving video data including chroma and luma components.
[0035] At 304, the method 300 includes identifying one or more contexts for entropy coding of chroma intra prediction modes based on co-located luma blocks at one or more predefined positions.
[0036] At 306, the method 300 includes decoding the video data based on the identified context.
[0037] It will be appreciated that Figure 3 is only provided as an illustration of one implementation and is not meant to limit how different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.
[0038] Figure 4 is a block diagram 400 of the internal and external components of the computer shown in Figure 1, according to one exemplary embodiment. It should be understood that Figure 4 is provided only as an example of one implementation and is not meant to imply limitation 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.
[0039] The computer 102 (FIG. 1) and the server computer 114 (FIG. 1) may include respective sets of internal components 800A, 800B and external components 900A, 900B shown in FIG. 4. Each of the set of internal components 800 includes one or more processors 820, one or more computer-readable RAMs 822 and one or more computer-readable ROMs 824 on one or more buses 826, one or more operating systems 828, and one or more computer-readable tangible storage devices 830.
[0040] The processor 820 is implemented in hardware, firmware, or a combination of hardware and software. The processor 820 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or other 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, 800B.
[0041] One or more operating systems 828, software programs 108 (FIG. 1), and video coding programs 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 (which typically include cache memory). In the embodiment shown in FIG. 4, each of computer-readable tangible storage devices 830 is an internal hard drive magnetic disk storage device. Alternatively, each of 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 types of non-transitory computer-readable tangible storage devices capable of storing computer programs and digital information.
[0042] Each set of internal components 800A,B also includes an 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 coding program 116 (FIG. 1), may be stored on one or more of the respective portable computer-readable tangible storage devices 936, read via the respective R / W drive or interface 832, and loaded onto the respective hard drive 830.
[0043] 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 coding 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 adapter or interface 836. From the network adapter or interface 836, the software program 108 and the video coding program 116 on the server computer 114 are loaded onto the respective hard drives 830. The network may include copper wire, optical fiber, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers.
[0044] Each of the set of external components 900A, 900B may include a computer display monitor 920, a keyboard 930, and a computer mouse 934. The external components 900A, 900B may also include a touch screen, a virtual keyboard, a touchpad, a pointing device, and other human interface devices. Each of the set of internal components 800A, 800B 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).
[0045] Although this disclosure includes detailed descriptions related to cloud computing, it should be understood in advance that implementation of the teachings recited herein is not limited to cloud computing environments. Rather, some embodiments may be practiced in conjunction with any other type of computing environment now known or later developed.
[0046] Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the provider of the service. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0047] The characteristics are as follows: On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time or network storage, automatically as needed, without requiring human interaction with the provider of the service. Pervasive 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: Providers' computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. Consumers generally have no control or knowledge over the exact location of the provided resources, but there is a sense of location independence in that they can specify location at a higher level of abstraction (e.g., country, state, or data center). Rapid Elasticity: Features can be rapidly and elastically provisioned, sometimes automatically, to scale out quickly, and rapidly released to scale in quickly. To the consumer, the features available for provisioning often appear unlimited and can be purchased at any time and in any quantity. Measured Services: Cloud systems automatically control and optimize resource usage by leveraging 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 to provide transparency to both providers and consumers of utilized services.
[0048] The service model is as follows: Software as a Service (SaaS): The functionality offered to the consumer is the use of a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application functions, except for limited user-specific application configuration settings. Platform as a Service (PaaS): The capability offered to consumers is the deployment of consumer-created or acquired applications, 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 control the deployed applications and, in some cases, the application hosting environment configuration. Infrastructure as a Service (laaS): The functionality provided to consumers is the provisioning of processing, storage, network, and other basic computing resources, upon which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but rather controls the operating system, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
[0049] The deployment model is as follows: Private Cloud: The cloud infrastructure operates solely for the organization. It may be managed by the organization or a third party and may exist on-premise or off-premise. Community Cloud: Cloud infrastructure is shared by several organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organization or a third party and may exist on-premises or off-premises. Public cloud: Cloud infrastructure is 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 composition of two or more clouds (private, community, or public) that remain distinct entities but are tied together by standardized or proprietary technologies that allow for data and application portability (e.g., cloud bursting for load balancing between clouds).
[0050] 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.
[0051] Referring to FIG. 5, an exemplary cloud computing environment 500 is illustrated. As shown, the cloud computing environment 500 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N, may communicate. The cloud computing nodes 10 may communicate with each other. They may be physically or virtually grouped (not shown) in one or more networks, such as the private cloud, community cloud, public cloud, hybrid cloud, or combinations thereof described above. This enables the cloud computing environment 600 to provide infrastructure, platform, and / or software as a service without the need for cloud consumers to maintain resources on their local computing devices. The types of computing devices 54A-54N illustrated in FIG. 5 are intended for illustrative purposes only, and it will be understood that the cloud computing nodes 10 and the cloud computing environment 500 may communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).
[0052] Referring to Figure 6, a set of functional abstraction layers 600 provided by the 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 examples only, and embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0053] 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.
[0054] The virtualization layer 70 provides an abstraction layer at which the following examples of virtual entities can 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.
[0055] 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 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, as well as protection for data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-allocation and procurement of cloud computing resources whose future requirements are anticipated according to SLAs.
[0056] Workload layer 90 provides examples of functions that may utilize a cloud computing environment. 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 coding 96. Video coding 96 may encode and / or decode video data based on context associated with co-located luma blocks at one or more predefined locations.
[0057] Some embodiments may relate to systems, methods, and / or computer-readable media at any possible level of technical detail. The computer-readable media may include a computer-readable non-transitory storage medium having computer-readable program instructions for causing a processor to perform operations.
[0058] 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 any suitable combination thereof. 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 disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, instruction-recorded punch cards or mechanically encoded devices such as ridge-in-groove structures, and any suitable combination of the above. As used herein, a computer-readable storage medium should not be construed as a transitory signal itself, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or an electrical signal transmitted through a wire.
[0059] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or 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 fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.
[0060] The computer-readable program code / instructions for carrying out 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++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer, partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may 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.
[0061] 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 manufacture a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions 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, such that a computer-readable storage medium having instructions stored thereon includes a product containing instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0062] The computer-readable program instructions may also be loaded onto a computer, other programmable apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operational steps to generate a computer-implemented process, such that the instructions, executing on the computer, other programmable apparatus, or other device, perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0063] 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 illustrated 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 sometimes be executed in the reverse order, depending on the functionality involved. It should also be 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 performs the specified functions or operations or executes a combination of dedicated hardware and computer instructions.
[0064] It will be apparent that the systems and / or methods described herein may be implemented in different forms, such as hardware, firmware, or a combination of hardware and software. The actual dedicated 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.
[0065] No element, act, or instruction used herein should be construed as critical or essential unless explicitly stated as such. Also, as used herein, the articles "a" and "an" are intended to include one or more items and may be used interchangeably with "one or more." Furthermore, as used herein, the term "set" is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.) and may be used interchangeably with "one or more." Where only one item is intended, the term "one" or similar term is used. Also, as used herein, terms such as "has," "have," and "having" are intended to be open-ended terms. Furthermore, the phrase "based on" is intended to mean "based, at least in part, on," unless otherwise specified.
[0066] The descriptions of various aspects and embodiments are presented for illustrative purposes and are not intended to be exhaustive or limited to the disclosed embodiments. While combinations of features are recited in the claims and / or disclosed herein, 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 in combination with all other claims in the claim set. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been selected to best explain the principles of the embodiments, practical applications, or technical improvements to technology found in the marketplace, or to enable those skilled in the art to understand the embodiments disclosed herein. [Explanation of symbols]
[0067] 10 cloud computing nodes 54A Computing Devices (Mobile Phones) 54B Computing Devices (Desktop Computers) 54C Computing Devices (Laptop Computers) 54N Computing Devices (Automotive Computer Systems) 60 Hardware and Software Layers 61 Mainframe 62 RISC (Reduced Instruction Set Computer) architecture-based servers 63 servers 64 Blade Servers 65 Storage Devices 66 Networks and Network Components 67 Network Application Server Software 68 Database Software 70 Virtualization Layer 71 Virtual Servers 72 Virtual Storage 73 Virtual Networks, including Virtual Private Networks 74 Virtual Applications and Operating Systems 75 Virtual Clients 80 Management layer 81 Resource Provisioning 82 Measurement and Pricing 83 User Portal 84 Service Level Management 85 Service Level Agreement (SLA) Planning and Implementation 90 Workload Tier 91 Mapping and Navigation 92 Software Development and Lifecycle Management 93 Virtual Classroom Educational Delivery 94 Data analysis processing 95 Transaction Processing 96 Video Coding 100 Video Coding System 102 Computer 104 processors 106 Data storage device 108 Software Programs 110 Communication Network 112 databases 114 Server Computer 116 Video Coding Program 200 Block diagram of coding tree structure 202 Luma component 204 Chroma Components 400 Block diagram of internal and external components 500 Cloud Computing Environments 600 Functional Abstraction Layer 800A, 800B internal components 820 processor 822 RAM 824 ROM 826 Bus 828 Operating Systems 830 Tangible storage devices, hard drives 832 R / W drive or interface 836 Network Adapters or Interfaces 840 Device Drivers 900A, 900B External Components 920 Computer Display Monitor 930 keyboard 934 Computer Mouse 936 Portable computer-readable tangible storage device
Claims
1. A video decoding method that can be executed by one or more processors, The steps include receiving a video bitstream having multiple blocks, including the current chroma block, and a first flag for the current chroma block, A step of selecting an entropy decoding context for entropy decoding one or more parameters of the current chroma block, based on the number of neighboring blocks of the current block using chroma-from-luma (CfL) mode, If the number of neighboring blocks using the CfL mode is less than a threshold, the step of selecting a first context as the entropy decoding context, If the number of neighboring blocks using the CfL mode is greater than the threshold, the step of selecting a second context as the entropy decoding context, wherein the second context is different from the first context. Steps including, A step of entropy decoding the first flag from the video bitstream using the entropy decoding context, wherein the first flag indicates whether the CfL mode is enabled for the current chroma block. A step of decoding the current chroma block according to the value of the first flag, A method that includes [a certain feature].
2. The method according to claim 1, wherein the first flag is entropy-decoded based on the respective intra-prediction modes of one or more neighboring chroma blocks of the current chroma block.
3. The method according to claim 1, wherein the threshold value is 1.
4. The method according to claim 1, wherein the first flag is entropy-decoded based on the prediction mode of one or more luma blocks corresponding to the current chroma block.
5. The method according to claim 4, wherein the one or more luma blocks include a first luma block located in the upper left corner of the current chroma block.
6. The method according to claim 4, wherein the one or more luma blocks include a first luma block located in the middle of the current chroma blocks.
7. If the prediction mode of the first luma block of the one or more luma blocks is a directional mode, the first flag is entropy-decoded using the third context, If the prediction mode of the first luma block is omnidirectional mode, the first flag is entropy-decoded using the fourth context. The method according to claim 4.
8. The method according to claim 1, further comprising the step of constructing a list of possible chromatic intraprediction modes for the current chromatic block based on the set of N chromatic modes with the highest occurrence rate, wherein N is a positive integer.
9. The method according to claim 8, wherein the set of N luma modes is signaled in the video bitstream.
10. The method according to claim 8, wherein N is a power of 2.
11. A computer program for causing one or more processors to perform the method described in any one of claims 1 to 10.