Chrominance prediction mode signaling method, computer system, and program

By identifying contexts for entropy coding the chroma intra prediction mode based on collocated luma blocks, the proposed method addresses the inefficiencies in existing AV1 video coding methods, resulting in improved encoding and decoding efficiency.

JP7698026B2Active Publication Date: 2025-06-24TENCENT AMERICA LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023209279
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-10-02
Filing Date
2023-12-12
Publication Date
2025-06-24
Estimated Expiration
2040-11-09

AI Technical Summary

Technical Problem

In the context of AV1 video coding, the existing methods for signaling the chroma intra prediction mode do not fully utilize the characteristics of semi-decoupled partitioning (SDP), where luma and chroma blocks can have different partitions, leading to suboptimal encoding and decoding efficiency.

Method used

The proposed solution involves identifying contexts for entropy coding the chroma intra prediction mode based on collocated luma blocks at predefined positions, such as the middle and upper left corner of the chroma block, to improve signaling efficiency.

Benefits of technology

This approach enhances the encoding and decoding efficiency by better utilizing the context information associated with collocated luma blocks, leading to improved video data processing performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007698026000001
    Figure 0007698026000001
  • Figure 0007698026000002
    Figure 0007698026000002
  • Figure 0007698026000003
    Figure 0007698026000003
Patent Text Reader

Abstract

To provide a method for encoding or decoding video data, a computer program, and a computer system.SOLUTION: Video data including chroma components and luma components is received. One or more contexts for entropy coding a chroma intra prediction mode are identified based on one or more co-located luma blocks at predefined positions. The video data is decoded based on the identified context.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

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 Oct. 2, 2020, the entire contents of which are incorporated herein by reference.

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

Background Art

[0003] AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. Developed by the Alliance for Open Media (AOMedia), a consortium established in 2015 as a successor to VP9, it includes semiconductor companies, video - on - demand providers, video content producers, software development companies, and web browser vendors. Many of the components of the AV1 project were sourced from previous research efforts by the alliance's members. Individual contributors had started experimental technical platforms several years earlier; for example, Xiph's / Mozilla's Daala had already made its code public in 2010, Google's experimental VP9 evolution project VP10 was announced on September 12, 2014, and Cisco's Thor was made public on August 11, 2015. Built 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 made public on April 7, 2016. The alliance released the AV1 bitstream specification on March 28, 2018, along with reference software - based encoders and decoders. On June 25, 2018, the effective version 1.0.0 of the specification was released. On January 8, 2019, the effective version 1.0.0 with Errata 1 of this specification was released. The AV1 bitstream specification includes the reference video codec. Summary of the Invention Means for Solving the Problems

[0004] 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 a chroma component, and 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 collocated luma blocks at predefined positions. The video data is decoded based on the identified context.

[0005] According to other aspects, 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, whereby the computer system can execute the method. The method may include receiving video data including a chroma component, and 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 collocated luma blocks at predefined positions. The video data is decoded based on the identified context.

[0006] According to yet another aspect, a computer-readable medium is provided for encoding and / or decoding video data. The computer-readable medium may include one or more computer-readable storage devices and program instructions stored in at least one of the one or more tangible storage devices, and the program instructions are executable by a processor. The program instructions are executable by the processor to perform a method that may include receiving video data including a chroma component in response to which a luma component is received. One or more contexts for entropy encoding a chroma intra prediction mode are identified based on one or more multiples of collocated 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 exemplary embodiments to be read in conjunction with the accompanying drawings. The illustrations are for clarity in facilitating the understanding of one of ordinary skill in the art in conjunction with the detailed description and are not to scale. The drawings are as follows.

Brief Description of the Drawings

[0008]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

DETAILED DESCRIPTION OF THE INVENTION

[0009] Although detailed embodiments of the claimed structures and methods are disclosed herein, it is to be understood that the disclosed embodiments are merely illustrative of the claimed structures and methods that 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 the scope to those skilled in the art. In this description, well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.

[0010] Embodiments generally relate 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 context associated with collocated luma blocks at one or more predefined locations. Accordingly, some embodiments have the ability to improve the computing field by improving encoding and decoding efficiency using improved signaling for the chroma intra prediction mode.

[0011] As described above, AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. It was developed as a successor to VP9 by the Alliance for Open Media (AOMedia), a consortium established in 2015 that includes semiconductor companies, video - on - demand providers, video content producers, software development companies, and web browser vendors. Many of the components of the AV1 project were sourced from previous research efforts by the alliance's members. Individual contributors had started experimental technology platforms years earlier. Namely, Xiph's / Mozilla's Daala had already made its code public in 2010, Google's experimental VP9 evolution project VP10 was announced on September 12, 2014, and Cisco's Thor was made public on August 11, 2015. Built 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 made public on April 7, 2016. The alliance released the AV1 bitstream specification on March 28, 2018, along with reference software - based encoders and decoders. On June 25, 2018, the valid version 1.0.0 of the specification was released. On January 8, 2019, the valid version 1.0.0 with Errata 1 of this specification was released. The AV1 bitstream specification includes the reference video codec.

[0012] In AV1, semi decoupled partitioning (SDP) can be used. However, in SDP, the luma blocks and chroma blocks of one superblock can have different partitions, the area of one chroma block can cover multiple luma coding blocks, and it may not always be optimal to always use the upper left position of the chroma block to identify the corresponding luma mode. In addition, when the luma blocks and chroma blocks of one superblock have different partitions, the CfL mode has a higher likelihood of being selected as the best mode, but this characteristic is not fully utilized in the chroma mode signaling method. Furthermore, when signaling the chroma intra prediction mode, all luma modes within the current superblock are available. However, this is not utilized to design better codewords for signaling the chroma intra prediction mode. Therefore, for improved signaling for the chroma intra prediction mode, it may be advantageous to identify one or more contexts for entropy coding the chroma intra prediction mode based on collocated 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] Referring now to FIG. 1, there is shown a functional block diagram of a network computer environment for a video coding system 100 (hereinafter "system") for encoding and / or decoding video data based on a coding tree structure type. FIG. 1 provides only an example of one implementation form and is not meant to imply limitations regarding an environment in which different embodiments may be implemented. It should be understood that many modifications to the illustrated 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 a communication network 110 (hereinafter "network"). Computer 102 may include a processor 104 and a software program 108 stored in a data storage device 106, interfacing with a user and capable of communicating with server computer 114. As will be 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 a program, accessing a network, and accessing a database.

[0016] 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 FIGS. 6 and 7. 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] The server computer 114 that can be used to encode video data can execute a video coding program 116 (hereinafter referred to as "program") that can interact with the database 112. The video coding program method will be described in more detail below with respect to FIG. 3. In one embodiment, the computer 102 can operate as an input device including a user interface, and the program 116 can mainly be executed on the server computer 114. In an alternative embodiment, the program 116 can mainly be executed on one or more computers 102, and the server computer 114 can be used for processing and storing the data used by the program 116. It should be noted that the program 116 may be a stand-alone program or may be integrated into a larger video coding program.

[0018] However, it should be noted that the processing of the program 116 may, in some cases, be shared between the computer 102 and the server computer 114 in any ratio. In other embodiments, the program 116 can operate on a plurality of computers, server computers, or some combination of computers and server computers, for example, on a plurality of computers 102 that communicate with a single server computer 114 via the network 110. In other embodiments, for example, the program 116 can operate on a plurality of server computers 114 that communicate with a plurality of client computers via the network 110. Alternatively, the program may operate on a network server that communicates with a server and a plurality of client computers via the network.

[0019] Network 110 can include a wired connection, a wireless connection, an optical fiber connection, 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 can be, 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 various types of networks such as combinations of these or other types of networks.

[0020] The number and arrangement of the devices and networks shown in FIG. 1 are provided as an example. In practice, additional devices and / or networks, fewer devices and / or networks, different devices and / or networks, or devices and / or networks arranged differently than those shown in FIG. 1 may exist. Further, two or more of the devices shown in FIG. 1 may be implemented within a single device, or a single device shown in FIG. 1 may be implemented as a plurality of 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 another set of devices of System 100.

[0021] Referring now to FIG. 2, a block diagram 200 of an exemplary coding tree structure for video data is illustrated. The coding tree structure can include a luma component 202 and a chroma component 204.

[0022] A semi-separate partition (SDP) scheme (i.e., a semi-separate tree (SST) for chroma components or flexible block separation) 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 partitions, which may depend on the luma coding block size or luma tree depth. When the luma block area size is greater than a threshold T1 or the coding tree partition depth of the luma block is less 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 less than or equal to T1 or the luma partition depth is greater than T2, the corresponding chroma block can have a different coding block partition with the luma component, which may be called flexible block partition for the chroma component. T1 may be a positive integer such as 128 or 256. T2 may be a positive integer such as 1 or 2.

[0023] According to one or more embodiments, when SDP can be applied and one chroma coding block can be associated with multiple luma coding blocks, the context used to entropy code the chroma intra prediction mode may depend on the corresponding luma blocks located at one or more predefined positions. In one embodiment, the one or more predefined positions may include the 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 upper left corner of the current chroma block can be used to identify the corresponding luma block, these two luma modes may be quantized before performing context selection. In one embodiment, the luma mode may be quantized to two values before performing the context selection process, which may be a directional mode or a non-directional mode.

[0025] In other embodiments, the omni-directional mode may be quantized to a single value, and the directional modes may be quantized to a smaller set according to their angles. In one example, the directional modes may be quantized to four values, where 0 means that the angle of the current mode can be less than 90 degrees, 1 means that the angle of the current mode can be from 90 degrees to 135 degrees, 2 means that the angle of the current mode can be from 135 degrees to 180 degrees, and 3 means that 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 can be used to predict a majority of the samples of the collocated luma blocks.

[0027] In one embodiment, a plurality of sample positions may be predefined, an intra prediction mode associated with these positions for predicting the collocated luma blocks may be identified, and then a context value may be derived using one of these identified prediction modes. In one example, the context value may be derived using the prediction mode that can be most frequently used among the identified prediction modes. 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, collocated luma blocks at one or more predefined positions may not be predicted by the intra prediction mode, and if the current chroma coding block can be predicted by the intra prediction mode, the prediction mode of the one or more collocated luma blocks may be mapped to one or more predefined intra prediction modes. In one example, when the collocated luma blocks can be coded by IBC or the palette mode, the default intra prediction mode may be used to derive a context for entropy coding the chroma intra prediction mode. The default intra prediction mode includes, but is not limited to, the DC, SMOOTH, SMOOTH-H, SMOOTH-V, or Paeth prediction mode.

[0029] According to one or more embodiments, when signaling the chroma intra prediction mode, one flag, i.e., the CfL flag, may be signaled first to indicate whether the current chroma mode can be the CfL mode. In one embodiment, the context for signaling the CfL flag may be derived using the chroma intra prediction mode of neighboring blocks. In one example, the first context may be used when none of the neighboring chroma modes are likely to be the CfL mode. Otherwise, the second context may be used. In another example, the first context may be used when none of the neighboring chroma modes are likely to be the CfL mode. Otherwise, when one of the neighboring chroma modes may be the CfL mode, the second context may be used. Otherwise, the third context may be used.

[0030] In one embodiment, a context for signaling the CfL flag may be derived using the corresponding luma mode. 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 other embodiments, when the corresponding luma mode can be a directional mode, a first context may be used. Otherwise, a second context may be used. In other embodiments, when two corresponding luma modes may be employed to determine the context of the CfL flag, three contexts may be used. When both corresponding luma modes can be non-directional modes, a first context may be used. Otherwise, when one of the corresponding luma modes can be a non-directional mode, a second context may be used. Otherwise, a third context may be used.

[0031] According to one or more embodiments, a list may be constructed that includes previously encoded luma modes within the current picture / slice / tile for signaling the chroma intra prediction mode. Only the N most frequently occurring luma modes may be allowed and may be signaled for the current chroma block, where N may be a positive integer. In one embodiment, N may be a power of two. In one embodiment, only previously encoded luma modes within the current superblock row may be used. In one embodiment, when SDP may be enabled, only previously encoded luma modes within the current superblock may be used.

[0032] According to one or more embodiments, all nominal intra prediction angles allowed for luma coded blocks are also allowed for chroma coded blocks and can be signaled, whereas only a subset of the delta angles with respect to the nominal angle is allowed for chroma intra coded blocks and can be signaled. In one embodiment, all non-directional modes such as DC, SMOOTH, SMOOTH-H, SMOOTH-V modes are allowed for chroma intra coded blocks and can be signaled. In one embodiment, only the delta angles with respect to collocated luma intra prediction modes are allowed for chroma coded blocks and can be signaled. In one embodiment, the nominal angle may first be signaled together with the non-directional mode. Thereafter, if the current mode can be a directional mode and is equal to the collocated luma nominal mode, a second flag can be signaled to indicate the index of the delta angle with respect to the nominal angle. In other embodiments, all intra prediction modes allowed for chroma coded blocks can be signaled together.

[0033] Referring now to FIG. 3, an operational flowchart showing 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 other devices or a group of devices separate from or including computer 102 and server computer 114.

[0034] At 302, method 300 includes receiving video data including chroma and luma components.

[0035] At 304, method 300 includes identifying, for entropy coding of the chroma intra prediction mode, one or more contexts based on collocated luma blocks at one or more predefined positions.

[0036] At 306, method 300 includes decoding video data based on the identified context.

[0037] It should be understood that FIG. 3 provides only an illustration of one implementation form and does not imply any limitation as to how different embodiments may be implemented. Many modifications to the illustrated environment may be made based on design and implementation requirements.

[0038] FIG. 4 is a block diagram 400 of the internal and external components of the computer illustrated in FIG. 1 according to an exemplary embodiment. It should be understood that FIG. 4 provides only an illustration of one implementation form and does not imply any limitation as to the environment in which different embodiments may be implemented. Many modifications to the illustrated environment may be made based on design and implementation requirements.

[0039] Computer 102 (FIG. 1) and server computer 114 (FIG. 1) may each include a respective set of internal components 800A, 800B and external components 900A, 900B shown in FIG. 4. Each set of internal components 800 includes one or more processors 820, one or more computer-readable RAMs 822 and one or more computer-readable ROMs 824 on one or more buses 826, one or more operating systems 828, and one or more computer-readable tangible storage devices 830.

[0040] Processor 820 is implemented in hardware, firmware, or a combination of hardware and software. Processor 820 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another type of processing component. In some implementations, Processor 820 includes one or more processors that can be programmed to perform functions. Bus 826 includes components that enable communication between 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 respective processors 820 via one or more of respective RAMs 822 (which typically include cache memory). In the embodiment shown in FIG. 4, each of computer-readable tangible storage devices 830 is a magnetic disk storage device of an internal hard drive. Alternatively, each of 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 disk (CD), a digital versatile disk (DVD), a floppy disk, a cartridge, a 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 memory devices 936, such as a CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk, or semiconductor memory device. Software programs, such as software program 108 (FIG. 1) and video coding program 116 (FIG. 1), can be stored in one or more of the respective portable computer-readable tangible memory devices 936, read via the respective R / W drives or interfaces 832, and loaded onto the respective hard drives 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. Software programs 108 (FIG. 1) and video coding program 116 (FIG. 1) on server computer 114 (FIG. 1) can be downloaded from an external computer to computer 102 (FIG. 1) and server computer 114 via a network (e.g., the Internet, a local area network, or other wide area network) and the respective network adapters or interfaces 836. From the network adapter or interface 836, the software programs 108 and video coding program 116 on server computer 114 are loaded onto the respective hard drives 830. The network can include copper wire, optical fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers.

[0044] Each set of external components 900A, 900B can include a computer display monitor 920, a keyboard 930, and a computer mouse 934. The external components 900A, 900B can also include a touch screen, a virtual keyboard, a touch pad, a pointing device, and other human interface devices. Each set of internal components 800A, 800B also includes a device driver 840 for interfacing with 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] This disclosure includes a detailed description of cloud computing, but it should be understood upfront that the implementations of the teachings recited herein are not limited to a cloud computing environment. Rather, some embodiments can be implemented in conjunction with any other type of computing environment, whether currently known or later developed.

[0046] Cloud computing is a service delivery model that enables convenient on-demand network access to a shared pool of configurable computing resources (such as 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 a service provider. This cloud model can 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 capabilities, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider. Broad network access: The capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, and different physical and virtual resources are dynamically assigned and reassigned according to demand. Consumers generally have no control or knowledge over the exact location of the provided resources, but have 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: The capabilities can be rapidly and elastically provisioned in some cases automatically to scale out quickly and released quickly to scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. Measured service: The cloud system automatically controls and optimizes resource use by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource use can be monitored, controlled, and reported to provide transparency for both the provider and consumer of the utilized service.

[0048] The service model is as follows. Software as a Service (SaaS): The functionality provided to consumers is to use the provider's applications running on cloud infrastructure. The applications are accessible from various client devices via a client interface such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functionality, except for limited user-specific application configurations. Platform as a Service (PaaS): The functionality provided to consumers is to deploy consumer-created or -acquired applications on cloud infrastructure, created using programming languages and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but control the deployed applications and, in some cases, the application hosting environment configuration. Infrastructure as a Service (IaaS): The functionality provided to consumers is to provision processing, storage, network, and other basic computing resources, and consumers can deploy and run any software, including operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but have limited control over the operating system, storage, deployed applications, and, in some cases, selected networking components (e.g., host firewalls).

[0049] The deployment models are as follows. Private cloud: The cloud infrastructure operates only for an organization. It may be managed by the organization or a third party and may exist on-premises or off-premises. Community Cloud: The cloud infrastructure is shared by several organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). This can be managed by an organization or a third party and can exist on-premises or off-premises. Public Cloud: The cloud infrastructure is provided to the general public or a large industry group and is owned by an organization that sells cloud services. Hybrid Cloud: The cloud infrastructure remains as its own entity but is a configuration of two or more clouds (private, community, or public) tied together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load distribution between clouds).

[0050] The cloud computing environment is service-oriented, focusing on statelessness, loose coupling, modularity, and semantic interoperability. At the center 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, cloud computing environment 500 includes one or more cloud computing nodes 10 that can communicate with local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automotive computer system 54N. The cloud computing nodes 10 can 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. Thereby, cloud computing environment 600 can provide infrastructure, platform, and / or software as a service such that a cloud consumer need not maintain resources on a local computing device. The types of computing devices 54A - 54N shown in FIG. 5 are for illustration only, and it is understood that cloud computing node 10 and cloud computing environment 500 can 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 FIG. 6, a set of functional abstraction layers 600 provided by cloud computing environment 500 (FIG. 5) is shown. It should be understood upfront that the components, layers, and functions shown in FIG. 6 are for illustration only and embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided.

[0053] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (Reduced Instruction Set Computer) architecture-based server 62, server 63, blade server 64, storage device 65, and network and network components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[0054] The virtualization layer 70 provides an abstraction layer that can provide the following examples of virtual entities, namely, virtual server 71, virtual storage 72, virtual network 73 including a virtual private network, virtual applications and operating systems 74, and virtual client 75.

[0055] In one example, the management layer 80 can provide the functions described below. Resource provisioning 81 provides for the dynamic procurement of computing resources and other resources utilized to execute tasks within a cloud computing environment. Metering and pricing 82 provides for cost tracking when resources are utilized within a cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources can include application software licenses. Security provides for authentication for cloud consumers and tasks and protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides for the allocation and management of cloud computing resources such that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides for the pre-placement and procurement of cloud computing resources whose future requirements are anticipated to conform to the SLA.

[0056] The workload layer 90 provides examples of functions that can utilize a cloud computing environment. Examples of workloads and functions that can be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom education delivery 93, data analysis processing 94, transaction processing 95, and video coding 96. Video coding 96 can encode and / or decode video data based on context associated with collocated luma blocks at one or more predefined locations.

[0057] Some embodiments may relate to systems, methods, and / or computer-readable media in any possible technical detail level of integration. The computer-readable media may include a computer-readable non-transitory storage medium having computer-readable program instructions for causing a processor to execute an operation.

[0058] A computer-readable storage medium can be a tangible device that holds and stores instructions for use by an instruction execution device. The computer-readable storage medium can 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 disc read-only memory (CD-ROM), digital versatile discs (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or raised structures in grooves in which instructions are recorded, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be construed to be a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through an optical fiber 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 respective computing devices / processing devices, 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 can include copper transmission cables, optical transmission fibers, wireless transmission, 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 transfers the computer-readable program instructions for storage in a computer-readable storage medium within each respective computing / processing device.

[0060] The computer-readable program code / instructions for performing the operations may be in any combination of one or more programming languages, including assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or source code or object code written in any combination of object-oriented programming languages such as Smalltalk, C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on the 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 to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, for example, an electronic circuit including a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute the computer-readable program instructions by personalizing the electronic circuit using the state information of the computer-readable program instructions to perform an aspect or an operation.

[0061] These computer-readable program instructions may be provided to a processor of a general purpose computer, a special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / operations specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer-readable storage medium having the instructions stored therein comprises an article of manufacture including instructions for implementing the aspects of the functions / operations specified in one or more blocks of the flowchart and / or block diagram.

[0062] The computer-readable program instructions may also be loaded onto a computer, other programmable apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / operations specified in one or more blocks of the flowchart and / or block diagram.

[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 flowchart or block diagram may represent a module, segment, or portion of one or more executable instructions for implementing the specified logical function. The methods, computer systems, and computer-readable media may include additional blocks, fewer blocks, different blocks, or differently arranged blocks than those illustrated in the figures. In some alternative implementations, the functions described in the blocks may be performed in a different order than that described in the figures. For example, two blocks shown in succession may actually be performed simultaneously or substantially simultaneously, or the blocks may sometimes be performed in the reverse order depending on the related functionality. It should also be noted that each block in the block diagrams and / or flowchart diagrams, as well as combinations of blocks in the block diagrams and / or flowchart diagrams, can be implemented by a dedicated hardware-based system that performs the specified function or operation, or 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 of 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 limiting 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 is understood that software and hardware can be designed based on the description herein to implement the systems and / or methods.

[0065] Elements, operations, or instructions used in this specification should not be construed as important or essential unless explicitly described as such. Also, as used in this specification, the articles "a" and "an" are intended to include one or more items and may be used interchangeably with "one or more". Further, as used in this specification, 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". The term "one" or similar terms are used when only one item is intended. Also, as used in this specification, terms such as "has", "have", "having", etc. are intended to be open-ended terms. Further, the phrase "based on" is intended to mean "at least in part, based 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. Combinations of features are described in the claims and / or disclosed herein, but these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and / or not disclosed in the specification. Each of the dependent claims listed below may depend directly on only one claim, but the disclosure of possible implementations includes combinations of each dependent claim with all other claims in the claim set. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used in this specification are chosen to best explain the principles of the embodiments, the practical application, or a technical improvement over the technology found in the marketplace, or to enable those skilled in the art to understand the embodiments disclosed herein.

Description of Reference Numerals

[0067] 10 Cloud computing nodes 54A Computing device (mobile phone) 54B Computing device (desktop computer) 54C Computing device (laptop computer) 54N Computing device (automobile computer system) 60 Hardware and software layers 61 Mainframe 62 Server based on RISC (Reduced Instruction Set Computer) architecture 63 Server 64 Blade server 65 Memory device 66 Network and network components 67 Network application server software 68 Database software 70 Virtualization layer 71 Virtual server 72 Virtual storage 73 Virtual network including virtual private network 74 Virtual applications and operating systems 75 Virtual client 80 Management layer 81 Resource provisioning 82 Measurement and pricing 83 User portal 84 Service level management 85 Planning and fulfillment of service level agreement (SLA) 90 Workload layer 91 Mapping and navigation 92 Software development and lifecycle management 93 Virtual classroom education delivery 94 Data analysis processing 95 Transaction processing 96 Video coding 100 Video coding system 102 Computer 104 Processor 106 Data storage device 108 Software program 110 Communication network 112 Database 114 Server computer 116 Video coding program 200 Block diagram of a coding tree structure 202 Luma component 204 Chroma component 400 Block diagram of internal and external components 500 Cloud computing environment 600 Functional abstraction layer 800A, 800B Internal components 820 Processor 822 RAM 824 ROM 826 Bus 828 Operating system 830 Tangible storage device, hard drive 832 R / W drive or interface 836 Network adapter or interface 840 Device driver 900A, 900B External components 920 Computer display monitor 930 Keyboard 934 Computer mouse 936 Portable computer-readable tangible storage device

Claims

1. A method of video encoding executable by a processor, comprising: receiving video data including a chroma component and a luma component; setting one or more contexts for entropy encoding a chroma intra prediction mode corresponding to one or more collocated luma blocks at one or more predefined positions; signaling a first flag indicating that a chroma intra prediction mode associated with a current chroma block is a chroma-from-luma (CfL) mode based on the one or more set contexts, wherein when a corresponding luma mode of the one or more collocated luma blocks is a non-directional mode, a first context of the one or more contexts is used, and otherwise, a second context of the one or more contexts is used; encoding the video data based on the one or more set contexts; and a method comprising the steps of:

2. The method according to claim 1, wherein the one or more predefined positions include one or more from among an intermediate position and an upper left corner of the current chroma block.

3. The method according to claim 2, wherein the intermediate position of the current chroma block corresponds to the upper left corner of the chroma block.

4. identifying one or more predefined sample positions; identifying one or more intra prediction modes associated with the one or more predefined sample positions for predicting the one or more collocated luma blocks; and The method according to claim 1, wherein the one or more set contexts are further based on a prediction mode selected from among the identified one or more intra prediction modes.

5. The method according to claim 1, wherein the one or more set contexts are further based on the one or more chroma intra prediction modes including the CfL mode.

6. The method according to claim 4, wherein the most frequently used prediction mode among the identified prediction modes is used to derive a value of the context.

7. The method according to claim 4, wherein the one or more predefined sample positions include one or more corner samples and a central sample.

8. The method according to claim 4, wherein the one or more predefined sample positions include four corner samples.

9. The method according to claim 1, wherein the set one or more contexts are further based on one or more luma intra prediction modes associated with the one or more collocated luma blocks.

10. The method according to claim 9, wherein the set one or more contexts include a first context based on a determination that the one or more luma intra prediction modes include one or more directional modes.

11. The method according to claim 9, wherein the set one or more contexts include a second context based on a determination that at least one of the one or more luma intra prediction modes is a directional mode.

12. The method according to claim 9, wherein the set one or more contexts include a third context based on a determination that none of the one or more luma intra prediction modes are directional modes.

13. The method according to claim 5, wherein the set one or more contexts include a second context based on a determination that at least one of the one or more chroma intra prediction modes is the CfL mode.

14. The method according to claim 1, further comprising mapping the intra prediction mode to one or more predefined intra prediction modes based on the collocated luma blocks at one or more predefined positions not predicted by the intra prediction mode and based on the current chroma coding block predicted by the intra prediction mode.

15. The method according to claim 14, wherein the default intra prediction mode is used to derive the context for entropy coding the chroma intra prediction mode based on the collocated luma blocks coded by block copy or palette mode.

16. The method according to claim 15, wherein the default intra prediction mode includes one or more of DC, SMOOTH, SMOOTH-H, SMOOTH-V, and Paeth prediction modes.

17. The method according to claim 1, wherein a flag is signaled to indicate whether the current chroma mode is the CfL mode based on signaling the chroma intra prediction mode.

18. The method according to claim 17, wherein the corresponding luma mode is used to derive the context for signaling the flag.

19. The method according to claim 1, wherein all nominal intra prediction angles allowed for a luma coded block are allowed and signaled for a chroma coded block.

20. The method according to claim 19, wherein only a subset of delta angles for a nominal intra prediction angle is allowed and signaled for a chroma intra coded block.

21. The method according to claim 20, wherein all non-directional modes are allowed and signaled for a chroma intra coded block.

22. The method according to claim 20, wherein only the delta angle corresponding to the collocated luma intra prediction mode is allowed and signaled for the chroma coded block.

23. signaling the nominal intra prediction angle together with the non-directional mode; signaling a second flag to indicate an index of a delta angle with respect to the nominal intra prediction angle based on the chroma intra prediction mode associated with the current chroma block being a directional mode and equal to the collocated luma nominal mode The method according to claim 22, further comprising.

24. The method according to claim 22, wherein all allowed intra prediction modes for a chroma coded block are signaled together.

25. A computer system for encoding video data, the computer system configured to execute the method according to any one of claims 1 to 24.

26. A computer program for encoding video data, the computer program being configured to cause one or more computer processors to execute the method according to any one of claims 1 to 24.

Citation Information

Patent Citations

  • Using luma information for chroma prediction with separate luma-chroma framework in video coding

    US20170272748A1

  • Intra video coding using a decoupled tree structure

    US20180048889A1