Modified Quantizer

By extending the quantization index range with an offset and unified lookup table, the AV1 video coding format achieves improved quantization step size resolution, enhancing bitrate granularity and encoding/decoding efficiency.

JP7722799B2Active Publication Date: 2025-08-13TENCENT AMERICA LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024028884
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-10-22
Filing Date
2024-02-28
Publication Date
2025-08-13
Estimated Expiration
2040-11-16

AI Technical Summary

Technical Problem

The AV1 video coding format has limited resolution in quantization step sizes, particularly for 10-bit and 12-bit internal bit depths, affecting bitrate granularity and efficiency in video encoding and decoding.

Method used

Extending the range of the quantization index by adding an offset value and using a unified lookup table to derive quantization step sizes for improved resolution, allowing for more precise bitrate control.

Benefits of technology

Enhances the resolution of quantization step sizes, improving bitrate granularity and encoding/decoding efficiency in AV2 video coding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007722799000003
    Figure 0007722799000003
  • Figure 0007722799000004
    Figure 0007722799000004
  • Figure 0007722799000005
    Figure 0007722799000005
Patent Text Reader

Abstract

To provide a method, computer program and computer system for encoding or decoding video data.SOLUTION: Provided is a method carried out by a program that codes video data. The video data may include a syntax element indicating a quantization index, wherein a range of the quantization index is extended by an offset value. The syntax element may be parsed to determine the quantization index. A quantization step size may be obtained from a lookup table based on the quantization index and the offset value, and the video data may be encoded or decoded based on the quantization step size.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority from U.S. Provisional Patent Application No. 63 / 038,010, filed June 11, 2020, and U.S. Patent Application No. 17 / 077,471, filed October 22, 2020, both of which are incorporated herein in their entireties.

[0002] [Technical field] FIELD OF THE DISCLOSURE 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 was developed as the successor to VP9 by the Alliance for Open Media (AOMedia), a consortium founded in 2015. The consortium includes semiconductor companies, video-on-demand providers, video content producers, software development companies, and web browser vendors. Many components of the AV1 project stem from previous research efforts by Alliance members. Individual contributors have been launching experimental technology platforms for several years. Xiph / Mozilla®'s Daala released its code as early as 2010, Google®'s experimental VP9 evolution project VP10 was announced on September 12, 2014, and Cisco's Thor on August 11, 2015. Built on the VP9 codebase, AV1 incorporates additional technologies, some of which were developed in experimental form. The first version 0.1.0 of the AV1 reference codec was published on April 7, 2016. The Alliance announced the release of the AV1 bitstream specification on March 28, 2018, along with reference, software-based encoders and decoders. Validated version 1.0.0 of this specification was released on June 25, 2018. Validated version 1.0.0, including specification errata 1, was released on January 8, 2019. The AV1 bitstream specification includes a reference video codec. AOMedia Video 2 (AV2) is currently under development. In AV1, the quantization step size has limited resolution. Summary of the Invention [Problem to be solved by the invention]

[0004] SUMMARY OF THE INVENTION Embodiments relate to methods, systems, and computer-readable media for encoding and / or decoding video data. [Means for solving the problem]

[0005] According to one aspect, there is provided a method for encoding and / or decoding video data, the method comprising: obtaining video data including a syntax element indicating a quantization index, wherein a range of the quantization index is extended by an offset value; parsing the syntax element to determine the quantization index; obtaining a quantization step size from a lookup table based on the quantization index and the offset value; and encoding and / or decoding the video data based on the quantization step size.

[0006] According to another aspect, a device for encoding and / or decoding video data is provided, the device including: at least one memory configured to store program code; and at least one processor configured to read the program code and operate as directed by the program code, the program code including: first acquisition code configured to cause the at least one processor to acquire video data including a syntax element indicating a quantization index, wherein a range of the quantization index is extended by an offset value; parsing code configured to cause the at least one processor to parse the syntax element to determine the quantization index; second acquisition code configured to cause the at least one processor to acquire a quantization step size from a lookup table based on the quantization index and the offset value; and coding code configured to cause the at least one processor to encode and / or decode the video data based on the quantization step size.

[0007] According to another aspect, a non-transitory computer-readable medium for encoding and / or decoding video data is provided, the non-transitory computer-readable medium including one or more instructions that, when executed by one or more processors of a device for encoding and / or decoding video data, cause the one or more processors to obtain video data including a syntax element indicating a quantization index, where a range of the quantization index is extended by an offset value, analyze the syntax element to determine the quantization index, obtain a quantization step size from a lookup table based on the quantization index and the offset value, and encode and / or decode the video data based on the quantization step size. [Brief explanation of the drawings]

[0008] These and other objects, features and advantages will become apparent from the following detailed description of illustrative embodiments, which is to be read in connection with the accompanying drawings, in which the various features of the drawings are not drawn to scale because the accompanying drawings are used for clarity so that those skilled in the art can readily understand them in combination with the detailed description.

[0009] [Figure 1] FIG. 1 illustrates a networked computer environment according to at least one embodiment.

[0010] [Figure 2A] FIG. 10 illustrates an example of a Q_index to Qstep mapping for AC coefficients, according to at least one embodiment.

[0011] [Figure 2B] FIG. 10 illustrates an example of a mapping from Q_index to Qstep for DC coefficients, according to at least one embodiment.

[0012] [Figure 3A] FIG. 10 illustrates an example of a proposed unified linear mapping from Q_index to Qstep for AV2, according to at least one embodiment.

[0013] [Figure 3B] FIG. 10 illustrates an example of a proposed unified Log2 mapping from Q_index to Qstep for AV2, according to at least one embodiment.

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

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

[0016] [Figure 6] FIG. 2 is a block diagram of an exemplary cloud computing environment including the computer system shown in FIG. 1 according to at least one embodiment.

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

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

[0019]

[0002] Embodiments relate generally to the field of data processing, and in particular 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 using an extended quantizer to efficiently compress the video data. Thus, some embodiments have the ability to improve the computing field by providing an extended quantizer in AV2.

[0020] As mentioned above, 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 founded in 2015. This consortium includes semiconductor companies, video-on-demand providers, video content producers, software development companies, and web browser vendors. Currently, AV1 quantization step sizes have limited resolution. While the range of these step sizes has increased, the valid range of Q_index remains the same. This limitation in quantization step size resolution is more pronounced for 10-bit and 12-bit internal bit depths, where the corresponding 8-bit step size (obtained using q_idx) is scaled by 4 and 16, respectively. This can affect the bitrate granularity achievable by the codec. Therefore, it may be advantageous to improve the resolution of the quantization step size by extending the range of the quantization index.

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

[0022] Reference is now made to Figure 1, which is a functional block diagram of a networked computing environment illustrating a video coding system 100 (hereinafter "system") for encoding and / or decoding video data, according to an example embodiment such as that described herein. It should be understood that Figure 1 provides a description of only one implementation and is not intended to imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.

[0023] System 100 may include a computer 102 and a server computer 114. Computer 102 can communicate with server computer 114 via a communications network 110 (hereinafter referred to as the “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. 5 , computers 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 personal digital assistant, an Internet book, 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.

[0024] 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 in connection with 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.

[0025] A server computer 114, which may be used to encode video data, is capable of executing a video coding program 116 (hereinafter "program") that can interact with database 112. The video coding program method is described in more detail below with respect to FIG. 4. In one embodiment, computer 102 may act as an input device, including a user interface, while program 116 may execute primarily on server computer 114. In an alternative embodiment, program 116 may execute primarily on one or more computers 102, while server computer 114 may be used to process and store data used by program 116. It should be noted that program 116 may be a standalone program or may be integrated into a larger video coding program.

[0026] It should be noted, however, that processing of the program 116 may, in some cases, be shared between the computer 102 and the server computer 114 in any proportion. In another embodiment, 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 another embodiment, 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.

[0027] Network 110 may include wired connections, wireless connections, fiber optic connections, or some combination thereof. In general, network 110 may be any combination of connections and protocols that support communication between computer 102 and server computer 114. Network 110 may include various types of networks, such as, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, a telecommunications network such as a public switched telephone network (PSTN), a wireless network, a public switched network, a satellite network, a cellular network (e.g., a fifth generation (5G) network, a long term evolution (LTE) network, a third generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a metropolitan area network (MAN), a private network, an ad hoc network, an intranet, a fiber optic-based network, etc., and / or a combination of these or other types of networks.

[0028] The number and arrangement of devices and networks shown in Figure 1 are provided as examples. In practice, there may be additional, fewer, different, or differently arranged devices and / or networks than those shown in Figure 1. Furthermore, two or more devices shown in Figure 1 may be implemented within a single device, and a single device shown in Figure 1 may be implemented as multiple distributed devices. Additionally or alternatively, one 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.

[0029] In AV1, different quantization step sizes for DC and AC transform coefficients and different quantization step sizes for luma and chroma transform coefficients may be applied to quantize transform coefficients. To specify the quantization step size, a syntax element called base_q_idx may be first signaled in the frame header, which may be an 8-bit fixed-length code that specifies the quantization step size for luma AC coefficients. The valid range of base_q_idx is [0, 255]. Then, a delta value (denoted as DeltaQYDc) relative to base_q_idx for the luma DC coefficient is further signaled. In addition, if there are multiple color planes, a flag called diff_uv_delta may be signaled to indicate whether different quantization index values are applied to the Cb and Cr color components. If diff_uv_delta is signaled as 0, only the delta values relative to base_q_idx for the chroma DC coefficients (denoted as DeltaQUDc) and the delta values relative to base_q_idx for the chroma AC coefficients (denoted as DeltaQUAc) may be signaled. Otherwise, the delta values relative to base_q_idx for both Cb and Cr DC coefficients (denoted as DeltaQUDc and DeltaQVDc) and the delta values relative to base_q_idx for both Cb and Cr AC coefficients (denoted as DeltaQUAc and DeltaQVAc) are signaled.

[0030] Quantization indexes Q_index may be derived by adding the above decoded DeltaQYDc, DeltaQUAc, DeltaQUDc, DeltaQVAc, and DeltaQVDc to base_q_idx. These Q_indexes may then be further mapped to quantization step sizes according to two tables. For DC coefficients, the mapping from quantization indexes to quantization step sizes for internal bit depths of 8, 10, and 12 bits may be specified by a lookup table Dc_Qlookup[3]

[0256] , and for AC coefficients, the mapping from quantization indexes to quantization step sizes for internal bit depths of 8, 10, and 12 bits may be specified by a lookup table Ac_Qlookup[3]

[0256] . Figure 2A shows an example of such mapping for AC coefficients, and Figure 2B shows an example of such mapping for DC coefficients.

[0031] In the ongoing AV2 development process, several tools can be used in the design of the quantizer.

[0032] For example, a first method may include removing the separate lookup tables Dc_Qlookup[3]

[0256] and Ac_Qlookup[3]

[0256] . In this example, only Ac_Qlookup[3]

[0256] shown in FIG. 3A is retained, and the DC quantization step size is obtained using an offset from it. The default offset is set to 8.

[0033] In an embodiment, separate lookup tables may be used to obtain quantizer step sizes for 8-bit, 10-bit, and / or 12-bit internal bit depths, and the step sizes do not exhibit any mathematical relationship. As another example, a second method may include replacing the separate lookup table with a modified lookup table for 8-bit internal bit depths. In this example, the quantization step size generation process is unified as follows: for 10-bit and 12-bit internal bit depths, the corresponding 8-bit step sizes (obtained using Q_index) are scaled by 4 and 16, respectively.

[0034] As another example, a second method may include increasing the range of supported step sizes without increasing the range of Q_index.

[0035] As mentioned above, AV1 quantization step sizes currently have limited resolution. While the step size range has increased, the valid range of Q_index remains the same. As shown in Figure 3A, the valid range of Q_index is [0, 255], which maps to the step size range [4, 6879] (after the changes mentioned above). This limitation in the resolution of quantization step sizes becomes more pronounced for internal bit depths of 10 and 12 bits, where the corresponding 8-bit step size (obtained using q_idx) is scaled by 4 and 16, respectively. This can affect the bitrate granularity that can be achieved by the codec.

[0036] The mapping from Q_index to quantization step size does not exhibit a consistent mathematical relationship. As shown in Figure 3B, the initial entries of the step size exhibit a linear relationship with Q_index, while the remainder of the mapping is primarily exponential. The transition from a linear to an exponential mapping is not smooth. Furthermore, at lower Q_indexes, there is an abrupt jump in the step size, which becomes more noticeable as it scales up by 4 and 16 for 10-bit and 12-bit internal bit-depth coding, respectively.

[0037] The exemplary embodiments may be used separately or in combination in any order. In one or more embodiments, the exponential mapping from Q_index to Qstep may be expressed as Equation 1 below:

number

[0038] In one or more embodiments, the linear mapping from Q_index to Qstep may be expressed as Equation 2 below:

number

[0039] In Equation 1 and Equation 2, a, b & c can be constants for a range of Q_index.

[0040] In one or more embodiments, an offset may be added to the Q_index, where the offset depends on the internal bit depth value.

[0041] In one or more embodiments, the offset value may be added in the following manner: after the offset value is added, the quantization step size may be scaled by power (2, bitdepth-8). For example, if the internal bit depth is equal to 8, the quantization step size may not be modified. In another example, if the internal bit depth is not equal to 8, the quantization step size may be scaled by power (2, bitdepth-8).

[0042] In one or more embodiments, the offset value may be m*(bitdepth−8), where example values of m include, but are not limited to, 1, 2, . . . , 30, 32.

[0043] In one or more embodiments, for smaller quantization step sizes (Q_index or Qstep smaller than a predetermined threshold Q0), a linear mapping may be applied, and for larger quantization step sizes (Q_index or Qstep larger than a predetermined threshold Q0), the offset value is proportional to c.

[0044] In one or more embodiments, if Q_index is greater than or equal to a predetermined threshold (e.g., 256), an offset may be added to Q_index to derive a corresponding quantization step size, which may then be scaled by power(2, bitdepth-8). For example, the offset may be the same as the offset value applied above, but with a negative sign. Exemplary values for the absolute value of the offset include, but are not limited to, integers between 6 and 65, e.g., 60, 64 when the internal bit depth is 10, and 120, 128 when the internal bit depth is 12.

[0045] In one or more embodiments, Q_index may be signaled as a 9-bit integer.

[0046] In one or more embodiments, the value of Q_index is limited by an internal bit depth value. For example, Q_index may be limited to be [0, 255 + m * (bitdepth - 8)], where example values of m include, but are not limited to, 1, 2, ..., 30, 32.

[0047] In one or more embodiments, instead of signaling the value of Q_index directly, the Q_index plus an offset may be signaled, for example, Q_index_minus_N. Also, Q_index_minus_N may be signaled as a coded syntax element. In one example, the offset value N may be −128.

[0048] Referring now to Figure 4, there is shown an operational flowchart illustrating steps of a method 400 for encoding and / or decoding video data. In some implementations, one or more process blocks of Figure 4 may be performed by computer 102 (Figure 1) and server computer 114 (Figure 1).

[0049] At 402, the method 400 includes obtaining video data that includes a syntax element indicating a quantization index, the range of which is extended by an offset value.

[0050] At 404, the method 400 includes parsing the syntax elements to determine quantization indexes.

[0051] At 406, the method 400 includes obtaining a quantization step size from a lookup table based on the quantization index and the offset value.

[0052] At 408, the method 400 includes encoding and / or decoding the video data based on the quantization step size.

[0053] In one or more embodiments, the offset value may be determined based on an internal bit depth value of the video data.

[0054] In one or more embodiments, if the quantization index is greater than a threshold value, the quantization step size may be obtained from a lookup table based on the result of adding an offset value to the quantization index.

[0055] In one or more embodiments, the offset value may be a negative integer.

[0056] In one or more embodiments, the threshold may be 255.

[0057] In one or more embodiments, the syntax element may include a 9-bit integer.

[0058] In one or more embodiments, the value of the 9-bit integer may be equal to the result of adding an offset value to the quantization index.

[0059] In one or more embodiments, the size of the lookup table may be 255 values of the quantization step size.

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

[0061] Figure 5 is a block diagram 500 of internal and external components of the computer and server shown in Figure 1, according to an exemplary embodiment. It should be understood that Figure 5 provides only an illustration of one implementation and is not intended to imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made based on design and implementation requirements.

[0062] The computer 102 (FIG. 1) and the server computer 114 (FIG. 1) may include different sets of internal components 800A, B and external components 900A, B shown in FIG. 5. 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.

[0063] The processor 820 may be implemented in hardware, firmware, or a combination of hardware and software. The processor 820 may be a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another type of processing component. In some implementations, the processor 820 includes one or more processors that can be programmed to perform functions. The bus 826 includes components that enable communication between the internal components 800A, B.

[0064] 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 respective RAMs 822 (which typically include cache memory). In the embodiment shown in FIG. 5, 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 another type of non-transitory computer-readable tangible storage device capable of storing computer programs and digital information.

[0065] Each set of internal components 800A,B also includes a R / W drive or interface 832 for reading from and writing to one or more portable computer-readable, tangible storage devices 936, such as, for example, 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, for example, 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.

[0066] 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) are 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 network, a wide area network) and their respective network adapters or interfaces 836. From the network adapters or interfaces 836, the software program 108 and the video coding program 116 on the server computer 114 are loaded onto their respective hard drives 830. The network may include copper wire, fiber optics, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers.

[0067] Each set of external components 900A,B includes a computer display monitor 920, a keyboard 930, and a computer mouse 934. External components 900A,B may also include touch screens, virtual keyboards, touchpads, pointing devices, and other human interface devices. Each set of internal components 800A,B may also include 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 ROM 824).

[0068] 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 a cloud computing environment. Rather, some embodiments may be implemented in conjunction with other types of computing environments now known or later developed.

[0069] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of deployable 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 service provider. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0070] The features are as follows: On-demand self-service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without requiring any manual interaction with the provider of the service. Widespread network access: This capability is made available over the network and can be accessed through standard mechanisms, facilitating use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated according to demand. Consumers typically have no control or knowledge over the exact location of the provided resources, resulting in a sense of location independence, although they can specify location at a higher level of abstraction (e.g., country, state, or data center). Rapid Elasticity: This capacity can be provisioned quickly and elastically, sometimes automatically, so that it can be quickly scaled out and quickly released, and quickly scaled in. To the consumer, the capacity available for provisioning generally appears unlimited and can be purchased in any quantity at any time. Measurable 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, active user accounts, etc.). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services used.

[0071] The service model is as follows: Software as a Service: The consumer is offered the ability to use the provider's applications running on a cloud infrastructure. These applications can be accessed 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 the network, servers, operating systems, storage, or even individual application capabilities, except for limited user-specific application configuration settings. Platform as a Service (PaaS): The ability offered to consumers is to deploy applications they create or acquire on a cloud infrastructure, where these applications are written using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does have control over the deployed applications and possible application hosting environment configuration. Infrastructure as a Service: The ability offered to consumers is to provision processing, storage, network, and other basic computing resources within which they can deploy and run any software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but they do have control over the operating systems, storage, deployed applications, and may also have limited control over selected network components (e.g., host firewalls).

[0072] The deployment model is as follows: Private Cloud: Cloud infrastructure is operated exclusively for an organization. It can be managed by the organization or a third party and can reside on-premises or off-premises. Community Cloud: Cloud infrastructure is shared by several organizations to support a specific community with shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by these organizations or a third party and can reside on-premises or off-premises. Public cloud: Cloud infrastructure is available to the public or large industry groups and is owned by organizations that sell cloud services. Hybrid Cloud: A cloud infrastructure consists of two or more clouds (private, community, or public) that are still a single entity but are bound together by standard or proprietary technologies, which allow for data and application portability (e.g., cloud bursting for load balancing between clouds).

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

[0074] Reference is made to FIG. 6 , which illustrates an exemplary cloud computing environment 600 suitable for implementing certain embodiments of the disclosed subject matter. As shown, the cloud computing environment 600 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N, can communicate. The cloud computing nodes 10 can communicate with each other. They may be physically or virtually grouped in one or more networks (not shown), such as, for example, the private, community, public, or hybrid clouds described above, or a combination thereof. This enables the cloud computing environment 600 to provide infrastructure, platform, and / or software as a service, for which cloud consumers do not need to maintain resources on their local computing devices. It should be understood that the types of computing devices 54A-54N shown in FIG. 6 are intended to be illustrative only, and that computing node 10 and cloud computing environment 600 may communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).

[0075] Please refer to Figure 7, which illustrates a set of functional abstraction layers 700 provided by cloud computing environment 600 (of Figure 6). It should be understood in advance that the components, layers, and functions illustrated in Figure 7 are intended to be illustrative only and embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:

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

[0077] The virtualization layer 70 provides an abstraction layer over 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.

[0078] In one example, management layer 80 may provide the following functions: Resource provisioning 81 provides dynamic procurement of computing and other resources used to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are used within the cloud computing environment and billing or invoicing for the consumption of those resources. In one example, these resources may include application software licenses. Security provides identity authentication verification for cloud consumers and tasks, and protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides allocation and management of cloud computing resources so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangements and procurement for cloud computing resources for predicted future demand according to SLAs.

[0079] The workload layer 90 provides examples of functions for which a cloud computing environment may be used. 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 teaching 93, data analytics processing 94, transaction processing 95, and video coding 96. Video coding 96 may encode / decode video data using a delta angle derived from a nominal angle.

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

[0081] A computer-readable medium may be a tangible device capable of retaining and storing instructions for use by an instruction-execution device. A computer-readable 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 of the foregoing. A non-exhaustive list of more specific examples of computer-readable 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, mechanically encoded devices such as punch cards or protrusion structures in grooves onto which instructions are written, and any suitable combination of the foregoing. As used herein, a computer-readable 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 over a wire.

[0082] The computer-readable program instructions described herein may be downloaded from a computer-readable 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, fiber optic transmission cables, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable medium within the respective computing / processing device.

[0083] The computer-readable program code / instructions for carrying out operations may be 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-related instructions, microcode, firmware instructions, state configuration data, integrated circuit configuration data, or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, etc., and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In 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), can execute computer-readable program instructions by utilizing state information in the computer-readable program instructions to personalize the electronic circuitry to perform each aspect or operation.

[0084] 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 produce a machine, whereby the instructions, executed by the processor of the computer or other programmable data processing apparatus, can create a method for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may be stored on a computer-readable medium, which can instruct a computer, programmable data processing apparatus, and / or other device to operate in a particular manner, whereby a computer-readable medium having instructions stored thereon includes an article of manufacture, where the article of manufacture includes instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0085] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device, so that a series of operational steps may be executed on the computer, other programmable apparatus, or other device to create a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0086] 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 code, which includes one or more executable instructions for implementing the specified logical function(s). The methods, computer systems, and computer-readable media may include additional, fewer, different, or differently arranged blocks than those shown in the figures. In some alternative implementations, the functions shown in the blocks may occur in an order other than that shown in the figures. For example, two blocks shown in succession may actually be executed concurrently or substantially concurrently, or the blocks may be executed in the reverse order, depending on the functionality involved. It should be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a special-purpose hardware-based system that performs the specified functions or operations or a combination of special-purpose hardware and computer instructions.

[0087] It is understood 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 implementation. Thus, the operations and acts of the systems and / or methods are described herein without reference to specific software code. It should be understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.

[0088] No element, act, or instruction used herein should be construed as critical or essential unless explicitly described 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 language is used. Also, as used herein, the terms "having," "comprising," "including," and the like are intended to be open-ended. Furthermore, the phrase "based on" is intended to mean "based at least in part on," unless otherwise specified.

[0089] The descriptions of various aspects and embodiments are presented for illustrative purposes but are not intended to be exhaustive or limited to the disclosed embodiments. Although combinations of features are recited in the claims and / or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features can be combined in ways not specifically recited in the claims and / or disclosed in the specification. While each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes the combination 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 herein have been selected to best explain the principles of the embodiments, practical applications or technical improvements to commercially discovered technologies, or to enable those skilled in the art to understand the embodiments disclosed herein.

Claims

1. 1. A method for encoding video data, the method being performed by at least one processor of a device, comprising: obtaining quantization indexes; adding an offset value to the quantization index; obtaining a quantization step size from a lookup table based on the quantization index and the offset value; encoding video data based on the quantization step size; wherein the encoded video data includes a syntax element indicating the quantization index, and if the quantization index is greater than a threshold, the quantization step size is obtained from the lookup table by scaling a result of adding the offset value to the quantization index.

2. the offset value is determined based on an internal bit depth value of the video data.

2. The method of claim 1 .

3. the range of the quantization indexes is expanded by the offset value; 2. The method of claim 1 .

4. the offset value is a negative integer.

4. The method of claim 3.

5. The threshold is 255.

4. The method of claim 3.

6. The syntax element includes a 9-bit integer.

2. The method of claim 1 .

7. the value of the 9-bit integer is equal to the result of adding the offset value to the quantization index; 7. The method of claim 6.

8. The size of the lookup table is 255 values of the quantization step size.

2. The method of claim 1 .

9. 1. A device for encoding video data, comprising: at least one memory configured to store program code; at least one processor configured to read the program code and to operate as directed by the program code; The program code first obtaining code configured to cause the at least one processor to obtain quantization indexes; additional code configured to cause the at least one processor to add an offset value to the quantization index; second retrieval code configured to cause the at least one processor to retrieve a quantization step size from a lookup table based on the quantization index and the offset value; coding code configured to cause the at least one processor to encode video data based on the quantization step size; the encoded video data includes a syntax element indicating the quantization index, and if the quantization index is greater than a threshold, the quantization step size is obtained from the lookup table by scaling a result of adding the offset value to the quantization index. A device characterized by:

10. the offset value is determined based on an internal bit depth value of the video data.

10. The device of claim 9.

11. the range of the quantization indexes is expanded by the offset value; 11. The device of claim 10.

12. the offset value is a negative integer.

12. The device of claim 11 .

13. The threshold is 255.

12. The device of claim 11 .

14. The syntax element includes a 9-bit integer.

10. The device of claim 9.

15. the value of the 9-bit integer is equal to the result of adding the offset value to the quantization index; 15. The device of claim 14.

16. The size of the lookup table is 255 values of the quantization step size.

10. The device of claim 9.

17. A computer program, characterized in that it causes one or more processors of a device for encoding video data to carry out the method according to any one of claims 1 to 8.

Citation Information

Patent Citations

  • Image transmission system

    JP2014082651A

  • Apparatus and method for adaptive computation of quantization parameters in display stream compression

    JP2019512970A

  • JPP7447258B

  • Apparatus and methods for adaptive calculation of quantization parameters in display stream compression

    WO2017165529A1