Luma-to-Chroma Quantization Parameter Table Signaling

By decoding luma QP information and using a luma-to-chroma mapping table to determine chroma QP, the method addresses inefficiencies in existing video compression schemes, reducing bit rate and enhancing encoding and decoding efficiency.

JP7704730B2Active Publication Date: 2025-07-08INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2022502144
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-09-18
Filing Date
2020-07-09
Publication Date
2025-07-08
Estimated Expiration
2040-07-09

AI Technical Summary

Technical Problem

Existing video compression schemes, such as those in HEVC and VVC, face challenges in efficiently signaling a chroma quantization parameter table, leading to increased bit rate costs.

Method used

A method for decoding luma QP information from a data stream, obtaining a luma-to-chroma QP mapping table, and determining chroma QP based on this mapping, reducing bit rate requirements by signaling the table in a data stream.

Benefits of technology

This approach enhances compression efficiency by optimizing the signaling of chroma quantization parameters, thereby reducing the bit rate and improving video encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007704730000014
    Figure 0007704730000014
  • Figure 0007704730000015
    Figure 0007704730000015
  • Figure 0007704730000016
    Figure 0007704730000016
Patent Text Reader

Abstract

The compression technique involves deriving a chroma quantization parameter (QpC) based on the luma Qp using a luma-to-chroma Qp mapping table. Such a table may be shared by the encoder and decoder. However, in some cases, it may be advantageous to signal such a table in the data stream instead of fixing it by a technical standard. The syntax used to encode, signal, and decode this table has a cost in terms of bit rate. The present principles, according to different embodiments, propose signaling the luma-to-chroma mapping table in the data stream.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] At least one of the embodiments generally relates to a method or apparatus for video encoding or decoding, and more particularly to a method or apparatus for signaling a chroma quantization parameter table.

Background Art

[0002] Video compression schemes as defined in the HEVC and VVC standard specifications utilize a quantization parameter QP (or qP) to define the quantization step of the current block to be encoded and / or decoded. For example, in HEVC, a quantization process is used where the coded frequency-conversion coefficient (TransCoeffLevel) is scaled by the current quantization step (levelScale[qP%6]<<(qP / 6)) and further scaled by the quantization matrix m[][] as follows.

[0003]

Number

[0004] TransCoeffLevel[…] is the absolute value of the conversion coefficient for the current block identified by its spatial coordinates xTbY, yTbY and its component index cIdx, x and y are horizontal / vertical frequency indices, qP is the current quantization parameter, Multiplication by levelScale[qP%6] and left shift by (qP / 6) are equivalent to multiplication by the quantization step qStep=(levelScale[qP%6]<<(qP / 6)), m[…][…] is a two-dimensional quantization matrix, bdShift is an additional scaling factor to account for the image sample bit depth. The term (1<<(bdShift-1)) serves the purpose of rounding to the nearest integer, d[…] is the resulting dequantized transform coefficient absolute value.

[0005] What has recently been added to the high compression technology includes deriving a chroma quantization parameter (QpC) based on luma Qp using a luma-to-chroma Qp mapping table. Such a table may be shared by an encoder and a decoder. However, in some cases, instead of having it fixed by a technical standard, it may be advantageous to signal such a table in a data stream. The syntax used to encode, signal, and decode this table has a cost with respect to the bit rate. Thus, there is a need for a signaling method utilizing a video compression scheme to limit the required bit rate.

Summary of the Invention

[0006] This principle is - the step of decoding QP information for luma from a data stream, - the step of obtaining a luma-to-chroma QP mapping table from a data stream, - the step of determining QP information for chroma based on the QP information for luma and the luma-to-chroma QP mapping table, the step of decoding blocks of an image obtained from a stream using the QP information for luma and the QP information for chroma, and relates to a method including.

[0007] The QP information for luma can indicate different determinations of the QP information for chroma.

[0008] The present principle also relates to a device including a processor configured to implement the above method. The present principle also relates to a data stream carrying data representing an image, a luma-to-chroma QP mapping table, and QP information for luma indicating how the QP information for chroma is based on the luma-to-chroma QP mapping table for blocks of the image. The present principle also relates to a method of encoding such a data stream and a device including a processor configured to implement this method.

Brief Description of the Drawings

[0009]

Figure 1

Figure 2

Figure 3

Figure 4

Modes for Carrying Out the Invention

[0010] The overall aspects described herein are in the field of video compression. Those aspects are aimed at improving compression efficiency compared to existing video compression systems.

[0011] This application describes various aspects including tools, features, embodiments, models, approaches, etc. Many of those aspects are described in detail and are often described in a way that may seem restrictive in order to show at least individual characteristics. However, this is for the purpose of clarifying the description and does not limit the scope of the application or those aspects. In fact, all of the different aspects may be combined or interchanged to provide further aspects. Moreover, those aspects may also be combined with or interchanged with aspects described in previous applications.

[0012] Aspects described and contemplated in this application may be implemented in many different forms. The following FIGS. 1, 2, and 3 provide some embodiments, but other embodiments are contemplated, and the discussion of FIGS. 1, 2, and 3 is not intended to limit the scope of the implementation aspects. At least one of the aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a generated or encoded bitstream. Those aspects and other aspects may be implemented as a method, apparatus, computer-readable storage medium storing instructions, for encoding or decoding video data according to any of the described methods, and a computer-readable storage medium storing a bitstream generated according to any of the described methods.

[0013] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image", "picture", and "frame" may be used interchangeably. Although not necessarily so, typically, the term "reconstructed" is used on the encoder side and "decoded" is used on the decoder side.

[0014] Various methods are described herein, and each of the methods includes one or more steps or actions for achieving the described method. The order and / or grouping of specific steps and / or actions may be modified or combined, provided that a particular order of steps or actions is not required for proper operation of the method.

[0015] The various methods and other aspects described in this application may be used to modify modules, such as the motion compensation modules 170 and 275 of the video encoder 100 and decoder 200 as shown in FIGS. 1 and 2. Moreover, this aspect is not limited to VVC or HEVC and may be applied to, for example, other technical standards and recommendations, as well as any such extensions (including VVC and HEVC) of any such technical standards and recommendations, whether existing or later developed. Unless otherwise indicated or technically precluded, the aspects described in this application may be used individually or in combination.

[0016] FIG. 1 shows the encoder 100. Although variations of this encoder 100 are contemplated, the encoder 100 is described below for purposes of clarity without describing all of the predicted variations.

[0017] Before being encoded, the video sequence may undergo pre-encoding processing 101, such as applying a color conversion to the input color picture (e.g., conversion from RGB4:4:4 to YCbCr4:2:0), or performing remapping of the input picture components, for example, to obtain a resilient signal distribution by compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and added to the bitstream.

[0018] In encoder 100, as described below, pictures are encoded by encoder elements. The pictures to be encoded are partitioned (102) and processed, for example, in units of coding units (CUs). Each unit is encoded using, for example, either an intra mode or an inter mode. When a unit is encoded in the intra mode, it performs intra prediction (160). In the inter mode, motion estimation (175) and compensation (170) are performed. The encoder determines (105) whether to use the intra mode or the inter mode to encode the unit, and indicates the intra / inter decision, for example, by a prediction mode flag. For example, a prediction residual is calculated by subtracting (110) a predicted block from the original image block.

[0019] The prediction residual is then transformed (125) and quantized (130). The motion vectors and other syntax elements together with the quantized transform coefficients are entropy-coded (145) to output a bitstream. The encoder may skip the transformation and directly apply quantization to the untransformed residual signal. The encoder may bypass both the transformation and quantization, that is, the residual is directly coded without applying the transformation process or the quantization process.

[0020] The encoder decodes the encoded blocks to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse-transformed (150) to decode the prediction residual. The decoded prediction residual and the predicted block are combined (155) to reconstruct the image block. For example, an in-loop filter (165) is applied to the reconstructed picture to perform deblocking / SAO (sample adaptive offset) filtering to reduce encoding artifacts. The filtered image is stored in the reference picture buffer (180).

[0021] FIG. 2 shows a block diagram of video decoder 200. In decoder 200, as described below, a bitstream is decoded by decoder elements. Video decoder 200 generally executes a decoding path that is the reverse of the encoding path described in FIG. 1. Encoder 100 also generally executes video decoding as part of encoding video data.

[0022] In particular, the input to the decoder includes a video bitstream that can be generated by video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other coded information. Picture partitioning information indicates how a picture is partitioned. Thus, the decoder partitions the picture according to the decoded picture partitioning information (235). The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. By combining the decoded prediction residual and the predicted block (255), an image block can be reconstructed, and the predicted block can be obtained from intra prediction (260) or motion compensated prediction (i.e., inter prediction) (275) (270). An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored in the reference picture buffer (280).

[0023] The decoded picture may further undergo post-decoding processing (285), such as inverse color conversion (e.g., conversion from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping that performs the reverse of the remapping process executed in pre-encoding processing (101). The post-decoding processing may use metadata derived in pre-encoding processing and signaled in the bitstream.

[0024] FIG. 3 shows a block diagram of an example of a system in which various aspects and embodiments are implemented. System 1000 may be embodied as a device that includes various components described below and may be configured to execute one or more of the aspects described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. The elements of system 1000 may be embodied in a single integrated circuit (IC), multiple ICs, and / or discrete components, either alone or in combination. For example, in at least one embodiment, the processing elements and encoder / decoder elements of system 1000 are distributed across multiple ICs and / or discrete components. In various embodiments, system 1000 is communicatively coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more of the aspects described herein.

[0025] System 1000 may include at least one processor 1010 configured to execute instructions loaded therein to implement various aspects described herein, for example. The processor 1010 may include an embedded memory, an input / output interface, and various other circuits known in the art. System 1000 may include at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). System 1000 may include a storage device 1040 that can include non-volatile memory and / or volatile memory, including but not limited to electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash, magnetic disk drive, and / or optical disk drive. The storage device 1040 may include, by way of non-limiting example, internal storage, attached storage, and / or network-accessible storage.

[0026] System 1000 may include, for example, an encoder / decoder module 1030 configured to process data to provide encoded or decoded data, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 may represent a module(s) that may be included in a device that performs an encoding function and / or a decoding function. As is known, a device may include one or both of an encoding module and a decoding module. Additionally, the encoder / decoder module 1030 may be implemented as a separate element of system 6000 or may be incorporated within the processor 1010 as a combination of hardware and software known to those skilled in the art.

[0027] The program code that will be loaded into the processor 1010 or the encoder / decoder 1030 to execute the various aspects described herein may be stored in the storage device 1040 and may then be loaded into the memory 1020 for execution by the processor 1010. According to various embodiments, one or more of the processor 1010, the memory 1020, the storage device 1040, and the encoder / decoder module 1030 may store one or more of the various items during the execution of the processes described herein. Such stored items may include, but are not limited to, point cloud frames, encoded / decoded geometry / texture video / images or portions thereof, bitstreams, matrices, as well as variables, expressions, mathematical formulas, operations, intermediate or final results from the processing of operation logic.

[0028] In some embodiments, the memory internal to the processor 1010 and / or the encoder / decoder module 1030 may store instructions for the processes that can be executed during encoding or decoding and may be used to provide a working memory. However, in other embodiments, the memory external to the processing device (e.g., the processing device may be either the processor 1010 or the encoder / decoder module 1030) may be used for one or more of those functions. The external memory may be the memory 1020 and / or the storage device 1040, such as dynamic volatile memory and / or non-volatile flash memory. In some embodiments, the external non-volatile flash memory may be used to store the operating system of the television. In at least one embodiment, a high-speed external dynamic volatile memory such as RAM may be used as the working memory for video encoding and decoding operations, such as MPEG-2 (MPEG refers to Moving Picture Experts Group, MPEG-2 is also referred to as ISO / IEC 13818, 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (a new generation standard developed by JVET (Joint Video Experts Team), Versatile Video Coding).

[0029] Inputs to the elements of the system 1000 may be provided through various input devices, as shown at block 1130. Such input devices include, but are not limited to, (i) an RF portion that can receive, for example, a radio frequency (RF) signal wirelessly transmitted by a broadcaster, (ii) a composite (COMP) input terminal, (iii) a universal serial bus (USB) input terminal, and / or (iv) a high-definition multimedia interface (HDMI) input terminal. Other examples not shown in FIG. 10 include composite video.

[0030] In various embodiments, the input device of block 1130 may have respective input processing elements known in the art. For example, the RF portion may (i) select a desired frequency (also referred to as selecting a signal or band-limiting a signal to a frequency band), (ii) down-convert the selected signal, (iii) re-band-limit to a narrower band of frequencies so as to select a signal frequency band, which may be referred to as a channel in certain embodiments, (iv) demodulate the down-converted and band-limited signal, (v) perform error correction, and (vi) be associated with elements necessary to demultiplex to select a desired stream of data packets. The RF portions of various embodiments may include one or more elements that perform their functions, such as a frequency selector, signal selector, band limiter, channel selector, filter, down-converter, demodulator, error corrector, and demultiplexer. The RF portion may include a tuner that performs various of their functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or near baseband frequency) or baseband. In one set-top box embodiment, the RF portion and its associated input processing elements may receive an RF signal through a wired (e.g., cable) medium. The RF portion may then perform frequency selection by filtering, down-converting, and filtering again to a desired frequency band. Various embodiments may rearrange the order of the (and other) elements described above, remove some of those elements, and / or add other elements that perform similar or different functions. Adding elements may include, for example, inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF portion may include an antenna.

[0031] In addition, the USB terminal and / or HDMI terminal may each include an interface processor for connecting the system 1000 to other electronic devices over a USB connection and / or HDMI connection. It will be appreciated that various aspects of input processing, such as Reed-Solomon error correction, may be implemented, if desired, for example, within a separate input processing IC or within the processor 1010. Similarly, aspects of USB interface processing or HDMI interface processing may be implemented, if desired, within a separate interface IC or within the processor 1010. The demodulated, error-corrected, and de-multiplexed stream may be provided to various processing elements including the processor 1010 and the encoder / decoder 1030 that operate in combination with memory and storage elements to process the data stream required for presentation, for example, on an output device.

[0032] The various elements of the system 1000 may be provided within an integrated housing. Within the integrated housing, various elements may be interconnected and data may be transmitted therebetween using an appropriate connection array 1140, such as an I2C bus, wiring, and a printed circuit board, an internal bus known in the art.

[0033] The system 1000 may include a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data over the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, within a wired medium and / or a wireless medium.

[0034] In various embodiments, data is streamed or provided to system 1000 using a Wi-Fi network such as IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signals of those embodiments may be received through communication channel 1060 and communication interface 1050 that are adapted for Wi-Fi communication. The communication channel 1060 of those embodiments may typically be connected to an access point or a router, which provides access to a network including the Internet to enable streaming applications and other over-the-top communications. Other embodiments may provide the data streamed to system 1000 using a set-top box that distributes data through the HDMI connection of input block 1130. Still other embodiments may provide the data streamed to system 1000 using the RF connection of input block 1130. As shown above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, such as cellular networks or Bluetooth networks.

[0035] System 1000 may provide output signals to various output devices including display 1100, speaker 1110, and other peripheral devices 1120. The display 1100 of various embodiments may include, for example, one or more of a touch screen display, an organic light emitting diode (OLED) display, a curved display, and / or a foldable display. The display 1100 may be for a television, a tablet, a laptop, a cell phone (mobile phone), or other device. The display 1100 may also be integrated with other components (such as in a smartphone) or may be separate (such as an external monitor for a laptop). The other peripheral devices 1120 may include, in various exemplary embodiments, one or more of a stand-alone DVR, a disc player, a stereo system, and a lighting system. Various embodiments use one or more peripheral devices that provide functions based on the output of system 1000. For example, a disc player performs the function of playing back the output of system 1000.

[0036] In various embodiments, the control signal may be communicated between the system 1000 and the display 1100, the speaker 1110, or other peripheral devices 1120 using signaling such as AV.Link (audio / video link), CEC (Consumer Electronics Control), or other communication protocols that enable device-to-device control with or without user intervention. The output devices may be communicatively coupled to the system 1000 via dedicated connections through their respective interfaces 1070, 1080, and 1090. Alternatively, the output devices may be connected to the system 1000 using the communication channel 1060 via the communication interface 1050. The display 1100 and the speaker 1110 may be integrated in a single unit with other components of the system 1000, such as in an electronic device such as a television. In various embodiments, the display interface 1070 may include a display driver, such as a timing controller (T Con) chip, for example.

[0037] Alternatively, the display 1100 and the speaker 1110 may be separate from one or more of the other components, for example, if the RF portion of the input 1130 is part of a separate set-top box. In various embodiments where the display 1100 and the speaker 1110 may be external components, the output signal may be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.

[0038] The embodiments may be implemented by the processor 1010, or hardware, or a combination of hardware and software. As a non-limiting example, the embodiments may also be implemented by one or more integrated circuits. The memory 1020 may be any type of memory suitable for the technical environment, and as a non-limiting example, may be implemented using any suitable data storage technology such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 6010 may be any type of processor suitable for the technical environment, and as a non-limiting example, may include one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a multi-core-based processor.

[0039] Figure 4 shows an example of a luma-to-chroma Qp mapping table.

[0040] The possible syntax for signaling a custom luma-to-chroma Qp mapping table may be as shown in Table 1.

[0041]

Table 1

[0042] The semantics of the different components are as follows.

[0043] same_qp_table_for_chroma equal to 1 specifies that only one chroma Qp mapping table is signaled and that only one chroma Qp mapping table is applied to both the Cb component and the Cr component, as well as to joint Cb-Cr coding. same_qp_table_for_chroma equal to 0 specifies that three chroma Qp mapping tables are signaled in the SPS.

[0044] num_points_in_qp_table_minus1[i] plus 1 defines the number of points used to describe the chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be inclusively in the range of 0 to 63 + QpBdOffsetC.

[0045] delta_qp_in_val_minus1[i][j] plus 1 defines the delta value used to derive the input coordinates of the j-th pivot point in the i-th chroma QP mapping table.

[0046] delta_qp_out_val[i][j] defines the delta value used to derive the output coordinates of the j-th pivot point in the i-th chroma QP mapping table.

[0047] The i-th chroma QP mapping table ChromaQpTable[i] for i = 0..same_qp_table_for_chroma?0:2 is derived as follows.

[0048]

Number

[0049] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] for k = -QpBdOffsetC..63.

[0050] It is a bitstream compliance requirement that, inclusively between i = 0..same_qp_table_for_chroma?0:2 and j = 0..num_points_in_qp_table_minus1[i], the values of qpInVal[i][j] and qpOutval[i][j] need to be in the range of -QpBdOffsetC~63.

[0051] According to the first embodiment of this principle, a syntax for signaling a custom luma-to-chroma Qp mapping table is provided.

[0052] In the proposed syntax, since it is predicted that the luma QP of the first pivot point of the piecewise linear model falls within the range of 20 to 30 and may be coded as a signed integer with a smaller absolute value, the luma QP of the first pivot point is signaled as the difference from the regular QP, for example, 26 (as in the case of init_qp_minus26 in PPS), or as another relevant offset. Such an embodiment of the syntax for signaling the luma-to-chroma Qp mapping table has the advantage of saving bits in the data stream. The side effect is that a specific syntax needs to be used for the first point because the first point may have a luma - QP delta that can be negative.

[0053] The syntax and semantics are as shown in Table 2.

[0054]

Table 2

[0055] The semantics are as follows.

[0056] same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled and that only one chroma QP mapping table is applied to both the Cb and Cr components as well as to joint Cb - Cr coding. same_qp_table_for_chroma equal to 0 specifies that three chroma QP mapping tables are signaled in the SPS.

[0057] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be inclusively in the range of 0 to 63 + QpBdOffsetC.

[0058] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinate of the j - th pivot point of the i - th chroma QP mapping table. The value for j equal to zero is offset by 26 and the following ones are offset by 1.

[0059] delta_qp_out_val[i][j] specifies the delta value used to derive the output coordinate of the j - th pivot point of the i - th chroma QP mapping table.

[0060] The i - th chroma QP mapping table ChromaQpTable[i] for i = 0..same_qp_table_for_chroma?0:2 is derived as follows.

[0061]

Number

[0062] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] for k = -QpBdOffsetC..63.

[0063] It is a bitstream compliance requirement that the values of qpInVal[i][j] and qpOutval[i][j] be in the range of -QpBdOffsetC to 63, inclusively, for i = 0..same_qp_table_for_chroma?0:2 and j = 0..num_points_in_qp_table_minus1[i].

[0064] In this embodiment of the principle, the position of the luma QP in the first pair is coded as the difference from a given value, such as init_qp_minus26 in the PPS, which defines the starting QP for the first slice of the picture. The given value may be another value such as 26 or 22 or 28. Since it is expected that the first point falls within the range of 20 to 30, it is preferred that the given value belongs to the interval [20, 30]. The QPc table is signaled by a set of (lumaQP, chromaQP) pairs. In the first pair, lumaQP is coded as the difference from a given value X, which is the same offset as the one used to signal the starting QP of the picture, or, for example, as a value in the range of 20 to 30, for example, 26. The entropy coding of the syntax elements (ue(v), se(v), etc.) is not limited, nor is the name, the exact syntax arrangement, or the semantic description.

[0065] In a variant, considering that the luma QP and the chroma QP may be the same for the first pair, the signaling of the luma-to-chroma QP difference for the first pair is removed.

[0066] According to the second embodiment of this principle, with an appropriate offset, it is predicted that the chroma QP follows the luma QP. Thus, the chroma QP of a set of (lumaQP, chromaQP) pairs defining the piecewise linear model may be signaled as the difference between the chroma QP and the luma QP instead of the unprocessed chroma QP.

[0067] Exemplary syntax and semantics are as shown in Table 3.

[0068] [Table 3]

[0069] same_qp_table_for_chroma equal to 1 stipulates that only one chroma QP mapping table is signaled and only one chroma QP mapping table is applied to both the Cb component and the Cr component, as well as joint Cb - Cr coding. same_qp_table_for_chroma equal to 0 stipulates that three chroma QP mapping tables are signaled in the SPS.

[0070] num_points_in_qp_table_minus1[i] plus 1 stipulates the number of points used to describe the chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] must be inclusively in the range of 0 to 63 + QpBdOffsetC.

[0071] delta_qp_in_val_minus1[i][j] plus 1 stipulates the delta value used to derive the input coordinate of the j - th pivot point of the i - th chroma QP mapping table.

[0072] The delta_qp_diff_val[i][j] defines a delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table.

[0073] The i-th chroma QP mapping table ChromaQpTable[i] for i = 0..same_qp_table_for_chroma?0:2 is derived as follows.

[0074]

Number

[0075] For example, the value bias is set to 0 or -1.

[0076] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] for k = -QpBdOffsetC..63.

[0077] It is a bitstream compliance requirement that the values of qpInVal[i][j] and qpOutval[i][j] need to be in the range of -QpBdOffsetC~63 inclusively for i = 0..same_qp_table_for_chroma?0:2 and j = 0..num_points_in_qp_table_minus1[i].

[0078] The sign of delta_qp_diff_val may be inverted by changing "+delta_qp_diff_val" to "-delta_qp_diff_val", which results in an equivalent method. Instead of the unprocessed chroma QP (ChromaQpTable), a table of QP offsets (ChromaQpOffsetTable) may be derived and stored in memory. When the range is restricted (both luma QP ranges and offset boundaries), this can reduce the memory requirement. In this embodiment, the QPc table is signaled by a set of (lumaQP, chromaQPdiff) pairs, where chromaQPdiff is the difference between the luma QP and the chroma QP, - Each of -lumaQP and chromaQPdiff may be coded in differential pulse code modulation (DPCM, difference from the previous value), - chromaQPdiff may be either lumaQP - chromaQP or chromaQP - lumaQP, - Due to the expected presence of a bias (reducing chromaQPdiff), chromaQPdiff may be coded with an additional implicit offset (e.g., 1).

[0079] According to a third embodiment of this principle, the first and second embodiments may be combined. This embodiment has the advantage of accumulating the advantages of coding the first luma QP by difference and coding the chroma QP as an offset from the luma QP.

[0080] The syntax is as shown in Table 4.

[0081]

Table 4

[0082] same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled and that only one chroma QP mapping table is applied to both the Cb and Cr components, as well as to joint Cb-Cr coding. same_qp_table_for_chroma equal to 0 specifies that three chroma QP mapping tables are signaled in the SPS.

[0083] delta_qp_in_val[i][j] specifies the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP mapping table. The value for j equal to zero is offset by 26 and subsequent ones are offset by 1.

[0084] delta_qp_diff_val[i][j] specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table.

[0085] The i-th chroma QP mapping table ChromaQpTable[i] for i = 0..same_qp_table_for_chroma?0:2 is derived as follows.

[0086]

Number

[0087] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] for k between -QpBdOffsetC and 63. This is a bitstream compliance requirement that the values of qpInVal[i][j] and qpOutval[i][j] need to be in the range of -QpBdOffsetC to 63 inclusively for i = 0..same_qp_table_for_chroma?0:2 and j = 0..num_points_in_qp_table_minus1[i].

[0088] In a variant, delta_qp_diff_val is renamed to delta_qp_diff_val_plus1 to reflect a -1 bias in the calculation of qpOutVal.

[0089] In another embodiment, the fact that the luma QP and chroma QP are overall very close to the first pivot point is utilized. In a first variant, the chroma QP is coded as a difference from the luma QP only for the first point, i.e., instead of a positive offset from (-QpBdOffset, -QpBdOffset), the first pivot point is coded as a difference from (26, 26).

[0090] Exemplary syntax and semantics are as shown in Table 5.

[0091]

Table 5

[0092] same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled and that this table is applied to the joint Cb - Cr residuals along with the Cb and Cr residuals. same_qp_table_for_chroma equal to 0 specifies that three chroma QP mapping tables are signaled in the SPS. When same_qp_table_for_chroma does not exist in the bitstream, the value of same_qp_table_for_chroma is assumed to be equal to 1.

[0093] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be inclusively in the range of 0 to 63 + QpBdOffsetC. When num_points_in_qp_table_minus1[0] does not exist in the bitstream, the value of num_points_in_qp_table_minus1[0] is assumed to be equal to 0.

[0094] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinate of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_in_val_minus1[0][j] does not exist in the bitstream, the value of delta_qp_in_val_minus1[0][j] is assumed to be equal to 0.

[0095] delta_qp_out_val[i][j] specifies the delta value used to derive the output coordinate of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_out_val[0][j] does not exist in the bitstream, the value of delta_qp_out_val[0][j] is assumed to be equal to 0.

[0096] For the i-th chroma QP mapping table ChromaQpTable[i] where i ranges from 0 to (same_qp_table_for_chroma? 0 : 2), it is derived as follows.

[0097]

Number

[0098] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] for k ranging from -QpBdOffsetC to 63.

[0099] It is a bitstream compliance requirement that the values of qpInVal[i][j] and qpOutval[i][j] be in the range of -QpBdOffsetC to 63 inclusively, where i ranges from 0 to 0 if same_qp_table_for_chroma is true, otherwise from 0 to 2, and j ranges from 0 to num_points_in_qp_table_minus1[i].

[0100] It can be noted that the non-zero luma-chroma QP difference for the first pivot point is redundant by the global chroma QP offset that can be defined by other means (e.g., PPS). Thus, in another embodiment, the chroma QP is forced to be equal to the luma QP for the first pivot point, thus eliminating the need to transmit it.

[0101] This makes the first pivot point neutral, and when alone, it results in an identity QPc table. This requires at least a second pivot point to enable the feature.

[0102] In this embodiment, the list length (the number of pivot points in the QP table) needs to be sent with an offset of -2 instead of -1, which can prevent meaningless values and result in fewer coding bits. In other words, after the first pivot point position is defined by a single value, the pivot point list length to be sent is reduced by 1. The pivot point list is information given in addition to the explicit start point.

[0103] Exemplary syntax and semantics are as shown in Table 6.

[0104] [Table 6]

[0105] same_qp_table_for_chroma equal to 1 stipulates that only one chroma QP mapping table is signaled and this table is applied to the joint Cb-Cr residuals along with the Cb and Cr residuals. same_qp_table_for_chroma equal to 0 stipulates that three chroma QP mapping tables are signaled in the SPS. When same_qp_table_for_chroma does not exist in the bitstream, the value of same_qp_table_for_chroma is presumed to be equal to 1.

[0106] qp_table_start_minus26[i] plus 26 defines the starting luma and chroma QPs used to describe the i-th chroma QP mapping table. The value of start_qp_minus26[i] needs to be inclusively in the range of -26 - QpBdOffsetC to 36. When start_qp_minus26[i] does not exist in the bitstream, the value of start_qp_minus26[i] is presumed to be equal to 0.

[0107] num_points_in_qp_table_minus1[i] plus 1 defines the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be inclusively in the range of 0 to 62 + QpBdOffsetC. When num_points_in_qp_table_minus1[0] does not exist in the bitstream, the value of num_points_in_qp_table_minus1[0] is presumed to be equal to 0.

[0108] delta_qp_in_val_minus1[i][j] defines the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_in_val_minus1[0][j] does not exist in the bitstream, the value of delta_qp_in_val_minus1[0][j] is presumed to be equal to 0.

[0109] delta_qp_diff_val[i][j] defines the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_diff_val[0][j] does not exist in the bitstream, the value of delta_qp_diff_val[0][j] is presumed to be equal to 0.

[0110] For i from 0 to 0 if same_qp_table_for_chroma is true, or 2 otherwise, the i-th chroma QP mapping table ChromaQpTable[i] is derived as follows.

[0111]

Number

[0112] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] for k ranging from -QpBdOffsetC to 63.

[0113] It is a bitstream compliance requirement that the values of qpInVal[i][j] and qpOutVal[i][j] be in the range from -QpBdOffsetC to 63, inclusively, for i = 0..same_qp_table_for_chroma?0:2 and j = 0..num_points_in_qp_table_minus1[i]+1.

[0114] Various implementations involve decoding. "Decoding", as used in this application, may include, for example, all or part of the processing performed on a received encoded sequence to produce a final output suitable for display. In various embodiments, such processing typically includes one or more of the processing performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processing may additionally or alternatively include the processing performed by the decoders of the various implementations described in this application, such as extracting the chroma quantization parameters used by module 240 in FIG. 2.

[0115] As a further example, in one embodiment, "decoding" may refer to only entropy decoding, in another embodiment, "decoding" may refer to only differential decoding, and in another embodiment, "decoding" may refer to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer to a subset of operations or more broadly to the decoding process as a whole will be apparent based on the context of a particular description and is believed to be well understood by those skilled in the art.

[0116] Various implementations involve encoding. In a similar manner to the discussion regarding "decoding", "encoding", as used in this application, may include all or part of the processes performed on, for example, an input video sequence to generate an encoded bitstream. In various embodiments, such processes typically include one or more of the processes performed by an encoder, such as partitioning, differential encoding, transformation, quantization, and entropy encoding. In various embodiments, such processes may additionally or alternatively include the processes performed by the encoders of the various implementations described in this application, such as signaling and processing the chroma quantization parameters used by modules 130 and 140 of FIG. 1.

[0117] As a further example, in one embodiment, "encoding" may refer to only entropy encoding, in another embodiment, "encoding" may refer to only differential encoding, and in another embodiment, "encoding" may refer to a combination of entropy encoding and differential encoding. Whether the phrase "encoding process" is intended to refer to a subset of operations or more broadly to the overall encoding process in general can be apparent based on the context of a particular description and is believed to be well understood by those skilled in the art. The syntactic elements used in this specification are descriptive terms and the disclosure is not limited thereto. As such, they do not preclude the use of other syntactic element names.

[0118] When a figure is presented as a flowchart, it should be understood that a block diagram of the corresponding apparatus is also provided. Similarly, when a figure is presented as a block diagram, it should be understood that a flowchart of the corresponding method / process is also provided.

[0119] The implementations and aspects described in this specification may be implemented, for example, in a method or process, an apparatus, a software program, a data stream, or a signal. Even when discussed in only a single form of context (e.g., only discussed as a method), the implementation of the features discussed may also be implemented in other forms (e.g., an apparatus or a computer program). The apparatus may be implemented, for example, in suitable hardware, software, and firmware. The method may be implemented, for example, in a processor that generally refers to a processing device including a computer, a microprocessor, an integrated circuit, or a programmable logic circuit. The processor also includes communication devices such as a computer, a mobile phone, a portable / personal information terminal (“PDA”), and other devices that facilitate the communication of information among end users.

[0120] Together with “one embodiment”, “an embodiment”, “one implementation”, or “an implementation”, their other variations also mean that specific features, structures, and characteristics, etc. are included in at least one embodiment in relation to the embodiment. Thus, throughout this application, phrases such as “in one embodiment”, “in an embodiment”, “in one implementation”, or “in an implementation” that appear in various places, the appearance of any other variations does not necessarily refer to the same embodiment.

[0121] In addition, this application may refer to “determining” various parts of information. Determining information may include, for example, one or more of evaluating information, calculating information, predicting information, or retrieving information from memory.

[0122] Furthermore, this application may refer to "accessing" various parts of information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, computing information, determining information, predicting information, or evaluating information.

[0123] In addition, this application may refer to "receiving" various parts of information. Receiving is intended to be a broad term, similar to "accessing". Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from memory). Further, "receiving" typically involves, in one way or another, during operations such as storing information, processing information, transmitting information, moving information, copying information, deleting information, computing information, determining information, predicting information, or evaluating information.

[0124] The symbols / terms " / " and "and / or" and "at least one" are intended, for example, in cases such as "A / B", "A and / or B", and "at least one of A and B", to encompass a selection of only the first recited alternative (A), a selection of only the second recited alternative (B), or a selection of both (A and B). As a further example, in cases such as "A, B, and / or C" and "at least one of A, B, and C", such phrases are intended to encompass a selection of only the first recited alternative (A), a selection of only the second recited alternative (B), a selection of only the third recited alternative (C), a selection of only the first and second recited alternatives (A and B), a selection of only the first and third recited alternatives (A and C), a selection of only the second and third recited alternatives (B and C), or a selection of all three alternatives (A, B, and C). This may be extended as is clear to one of ordinary skill in the art as more items are recited.

[0125] Also, as used herein, the word "signaling" refers, among other things, to indicating something to the corresponding decoder. For example, in certain embodiments, the encoder signals a particular syntax element SE1 and optionally a syntax element SE2. In this way, in embodiments, the same parameters may be used on both the encoder side and the decoder side. Thus, for example, the encoder can transmit (explicitly signal) a particular parameter to the decoder, as a result of which the decoder can use the same particular parameter. Conversely, if the decoder already has other parameters along with a particular parameter, signaling may be used (implicitly signal) without transmission so as to simply enable the decoder to recognize and select the particular parameter. By avoiding transmitting any actual function, bit savings are achieved in various embodiments. It will be appreciated that signaling can be accomplished in various ways. In various embodiments, one or more syntax elements and flags, for example, are used to signal information to the corresponding decoder. The foregoing relates to the verb form of the word "signaling", although the word "signal" may also be used as a noun herein.

[0126] Some implementations have been described. However, it will be understood that various modifications may be made. For example, elements of different implementations may be combined, supplemented, modified, or removed to produce other implementations. Additionally, one of ordinary skill in the art will understand that other structures and processes may be substituted for those disclosed, and that resulting implementations will perform at least substantially the same functions in at least substantially the same ways (s) to achieve at least substantially the same results (s) as the disclosed implementations. Accordingly, those implementations and other implementations are contemplated by this application.

Claims

1. - decoding QP information about luma from a data stream; - obtaining a first luma-to-chroma QP mapping table from the data stream; - determining a second luma-to-chroma QP mapping table, wherein the chroma value is a sum between the chroma value in the first luma-to-chroma QP mapping table and the corresponding luma value in the first luma-to-chroma QP mapping table only for a first pivot point; - decoding a block of an image obtained from the data stream using the second luma-to-chroma QP mapping table; A method characterized by comprising the above.

2. The method according to claim 1, characterized in that the QP information about luma indicates that the luma QP value at a position in the second luma-to-chroma QP mapping table corresponding to the first pivot point of the piecewise linear model is a sum to the normal QP.

3. - Decoding QP information about luma from a data stream, - obtaining a first luma-to-chroma QP mapping table from the data stream, - determining a second luma-to-chroma QP mapping table, wherein the chroma value is a sum between the chroma value in the first luma-to-chroma QP mapping table and the corresponding luma value in the first luma-to-chroma QP mapping table only for a first pivot point, - decoding a block of an image obtained from the data stream using the second luma-to-chroma QP mapping table, A device characterized by comprising a processor configured as above.

4. The device according to claim 3, characterized in that the QP information about luma indicates that the luma QP value at a position in the second luma-to-chroma QP mapping table corresponding to the first pivot point of the piecewise linear model is a sum to the normal QP.

5. - obtaining a first luma-to-chroma QP mapping table; - Determining a second luma-to-chroma QP mapping table, wherein the chroma value is a difference between the chroma value in the first luma-to-chroma QP mapping table and the corresponding luma value in the first luma-to-chroma QP mapping table only for the first pivot point, and the QP information about luma indicates that the chroma value is coded as a difference only from the luma value for the first pivot point; - Encoding the image and the second luma-to-chroma QP mapping table in a data stream; A method characterized by comprising the above.

6. The method according to claim 5, characterized in that the QP information about the luma indicates that the luma QP value at the position in the second luma-to-chroma QP mapping table corresponding to the first pivot point of the piecewise linear model is a difference from the normal QP.

7. - Obtaining a first luma-to-chroma QP mapping table; - Determining a second luma-to-chroma QP mapping table, wherein the chroma value is a difference between the chroma value in the first luma-to-chroma QP mapping table and the corresponding luma value in the first luma-to-chroma QP mapping table only for the first pivot point, and the QP information about luma indicates that the chroma value is coded as a difference only from the luma value for the first pivot point; - Encoding the image and the second luma-to-chroma QP mapping table in a data stream; A device characterized by comprising a processor configured as above.

8. The device according to claim 7, characterized in that the QP information about the luma indicates that the luma QP value at the position in the second luma-to-chroma QP mapping table corresponding to the first pivot point of the piecewise linear model is a difference from the normal QP.