Luma to chroma quantization parameter table signaling

By dynamically deriving chroma QP from luma QP using a luma-to-chroma mapping table, the method addresses inefficiencies in existing video compression schemes, enhancing compression efficiency and reducing bitrate.

JP2025131916APending Publication Date: 2025-09-09INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025108232
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-09-18
Filing Date
2025-06-26
Publication Date
2025-09-09

AI Technical Summary

Technical Problem

Existing video compression schemes like HEVC and VVC face inefficiencies in signaling chroma quantization parameter tables, leading to increased bitrate costs.

Method used

A method for signaling a luma-to-chroma quantization parameter table dynamically, allowing for efficient encoding and decoding by deriving chroma QP from luma QP, reducing bitrate requirements.

Benefits of technology

This approach enhances compression efficiency by optimizing the signaling of chroma quantization parameters, thereby reducing the bitrate needed in video encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025131916000001_ABST
    Figure 2025131916000001_ABST
Patent Text Reader

Abstract

To provide a signaling method that utilizes video compression schemes in order to limit bitrate.SOLUTION: Compression technology comprises deriving chroma quantization parameter (Qpc) based on luma Qp using luma-to-chroma Qp mapping table. Such a table may be shared by an encoder and a decoder. However, in some cases, signaling such a table in the data stream instead of having it fixed by a standard may be advantageous. The syntax used to encode, signal and decode this table has a cost in terms of bitrate. The present principles propose to signaling of a luma-to-chroma mapping table in the data stream according to different embodiments.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] At least one of the present embodiments relates generally 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 technology]

[0002] Video compression schemes such as those defined in the HEVC and VVC standards utilize a quantization parameter QP (or qP) to define the quantization step of the current block to be coded and / or decoded. For example, HEVC uses a quantization process in which the coded frequency-transform coefficients (TransCoeffLevel) are 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[...] are the transform coefficient magnitudes for the current block identified by its spatial coordinates xTbY, yTbY and its component index cIdx; x and y are the horizontal / vertical frequency indices, qP is the current quantization parameter, Multiplication by levelScale[qP%6] and left shift by (qP / 6) is 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 take into account the image sample bit depth. The term (1<<(bdShift-1)) serves the purpose of rounding to the nearest integer. d[...] are the resulting dequantized transform coefficient magnitudes.

[0005] A recent addition to high-compression techniques involves 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 the encoder and decoder. However, in some cases, it may be advantageous to signal such a table in the data stream instead of having it fixed by a technology standard. The syntax used to encode, signal, and decode this table has a cost in terms of bitrate. Thus, there is a need for a signaling method that utilizes the video compression scheme to limit the required bitrate. Summary of the Invention

[0006] This principle is: decoding QP information for luma from the data stream; - obtaining a luma-to-chroma QP mapping table from the data stream; - determining QP information for chroma based on QP information for luma and a luma-to-chroma QP mapping table; decoding a block of an image obtained from the stream using QP information for luma and QP information for chroma; The present invention relates to a method comprising:

[0007] The QP information for luma can indicate a different decision for the QP information for chroma.

[0008] The present principles also relate to a device including a processor configured to implement the above method. The present principles also relate to a data stream carrying data representing an image, a luma-to-chroma QP mapping table, and QP information for luma that indicates how the QP information for chroma is based on the luma-to-chroma QP mapping table for blocks of the image. The present principles also relate to a method of encoding such a data stream and a device including a processor configured to implement the method. [Brief explanation of the drawings]

[0009] [Figure 1] Indicates the encoder. [Figure 2] 1 shows a block diagram of a video decoder. [Figure 3] 1 illustrates a block diagram of an example system in which various aspects and embodiments may be implemented. [Figure 4] 10 shows an example of a luma-to-chroma Qp mapping table. DETAILED DESCRIPTION OF THE INVENTION

[0010] The general aspects described herein are in the field of video compression and 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 these aspects are described in detail and often in a manner that appears limiting, at least to illustrate their individual characteristics. However, this is for purposes of clarity of description and does not limit the scope of the application or these aspects. In fact, all of the different aspects may be combined or interchanged to provide further aspects. Moreover, the aspects may also be combined or interchanged with aspects described in prior applications.

[0012] The aspects described and contemplated in this application may be implemented in many different forms. While Figures 1, 2, and 3 below provide some embodiments, other embodiments are contemplated, and the discussion of Figures 1, 2, and 3 is not intended to limit the scope of 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. These and other aspects may be implemented as methods, apparatus, computer-readable storage media having instructions stored thereon, and computer-readable storage media having stored thereon 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. Typically, but not necessarily, the term "reconstructed" is used on the encoder side and "decoded" is used on the decoder side.

[0014] Various methods are described herein, each of which includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for the proper operation of the method, the order and / or purpose of specific steps and / or actions may be modified or combined.

[0015] Various methods and other aspects described in this application may be used to modify modules, such as motion compensation modules 170 and 275, of video encoder 100 and decoder 200 as shown in Figures 1 and 2. Moreover, the aspects are not limited to VVC or HEVC, but may also apply to, for example, other technical standards and recommendations, whether already in existence or later developed, and extensions of any such technical standards and recommendations (including VVC and HEVC). Unless otherwise indicated or technically precluded, the aspects described in this application may be used individually or in combination.

[0016] 1 shows an encoder 100. Variations of this encoder 100 are contemplated, but for purposes of clarity, the encoder 100 is described below without describing all possible variations.

[0017] Before being encoded, a video sequence may undergo a pre-encoding process 101, for example to obtain a signal distribution more resilient to compression (e.g., using histogram equalization of one of the color components), to apply a color transformation to the input color picture (e.g., converting from RGB 4:4:4 to YCbCr 4:2:0), or to perform a remapping of the input picture components. Metadata may be associated with the pre-processing and may be added to the bitstream.

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

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

[0020] The encoder decodes the coded block 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 an image block. An in-loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / sample adaptive offset (SAO) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).

[0021] Figure 2 shows a block diagram of a video decoder 200, in which the bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs a decoding path that is the inverse of the encoding path described in Figure 1. The encoder 100 also generally performs video decoding as part of encoding the video data.

[0022] In particular, the decoder's input includes a video bitstream, which may be generated by video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other coded information. Picture partition information indicates how the picture is partitioned. Thus, the decoder divides the picture according to the decoded picture partition information (235). The transform coefficients are dequantized (240) and inverse transformed (250) to decode a prediction residual. The decoded prediction residual and the predicted block are combined (255) to reconstruct an image block, which may 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 a reference picture buffer (280).

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

[0024] FIG. 3 shows a block diagram of an example system in which various aspects and embodiments may be implemented. System 1000 may be embodied as a device including various components described below and configured to perform 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, singly or in combination, may be embodied in a single integrated circuit (IC), multiple ICs, and / or discrete components. 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] The 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 embedded memory, input / output interfaces, and various other circuits known in the art. The system 1000 may include at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). The system 1000 may include storage 1040, which may 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 drives, and / or optical disk drives. The storage 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, which may include its own processor and memory. Encoder / decoder module 1030 may represent a module or modules that may be included in a device that performs encoding and / or decoding functions. As is known, a device may include one or both of an encoding module and a decoding module. Additionally, encoder / decoder module 1030 may be implemented as a separate element of system 6000 or may be incorporated within processor 1010 as a combination of hardware and software known to those skilled in the art.

[0027] Program code to be loaded into the processor 1010 or the encoder / decoder 1030 to perform various aspects described herein may be stored in the storage device 1040 and subsequently 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 various items during execution of the processes described herein. Such stored items may include, but are not limited to, point cloud frames, coded / decoded geometry / texture videos / images or portions of coded / decoded geometry / texture videos / images, bitstreams, matrices, and variables, expressions, mathematical formulas, operations, intermediate results from processing of arithmetic logic, or final results.

[0028] In some embodiments, memory internal to the processor 1010 and / or the encoder / decoder module 1030 may be used to store instructions and provide working memory for processes that may be performed during encoding or decoding. However, in other embodiments, 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, e.g., dynamic volatile memory and / or non-volatile flash memory. In some embodiments, the external non-volatile flash memory may be used to store the television's operating system. In at least one embodiment, a high-speed external dynamic volatile memory such as a RAM may be used as working memory for video encoding and decoding operations, such as MPEG-2 (MPEG refers to the 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 (Versatile Video Coding, a new generation standard developed by JVET (Joint Video Experts Team)).

[0029] Input to the elements of system 1000 may be provided through various input devices, as shown in block 1130. Such input devices include, but are not limited to, (i) a radio frequency (RF) section capable of receiving, for example, a radio frequency (RF) signal transmitted wirelessly 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 devices of block 1130 may have associated respective input processing elements known in the art. For example, the RF section may be associated with elements necessary to (i) select a desired frequency (also referred to as selecting a signal or band-limiting a signal to a band of frequencies), (ii) downconvert the selected signal, (iii) band-limit again to a narrower band of frequencies to select a signal frequency band, which in certain embodiments may be referred to as a channel (e.g.,), (iv) demodulate the downconverted, band-limited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF section of various embodiments may include one or more elements to perform those functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner to perform various of those functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or near-baseband frequency) or to baseband. In one set-top box embodiment, the RF section and its associated input processing elements may receive RF signals through a wired (e.g., cable) medium. The RF section may then perform frequency selection by filtering, downconverting, and filtering again to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of them, and / or add other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF section may include an antenna.

[0031] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting system 1000 to other electronic devices over USB and / or HDMI connections. It will be appreciated that various aspects of input processing, e.g., Reed-Solomon error correction, may be implemented, for example, within a separate input processing IC or within processor 1010, as desired. Similarly, aspects of USB interface processing or HDMI interface processing may be implemented, for example, within a separate interface IC or within processor 1010, as desired. The demodulated, error corrected, and demultiplexed stream may be provided to various processing elements, including processor 1010 and encoder / decoder 1030, operating in combination with memory and storage elements, to process the data stream as required for presentation on an output device.

[0032] The various elements of system 1000 may be provided within an integrated housing in which the various elements may be interconnected and data may be transmitted therebetween using a suitable connection arrangement 1140, for example, an internal bus known in the art, including an I2C bus, wiring, and printed circuit boards.

[0033] System 1000 may include a communication interface 1050 that enables communication with other devices over a communication channel 1060. Communication interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data over communication channel 1060. Communication interface 1050 may include, but is not limited to, a modem or a network card, and communication channel 1060 may be implemented, for example, within a wired and / or 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 signal in these embodiments may be received through communication channel 1060 and communication interface 1050, which are adapted for Wi-Fi communication. The communication channel 1060 in these embodiments may typically be connected to an access point or router, which provides access to external networks, including the Internet, to enable streaming applications and other over-the-top communications. Other embodiments may provide streamed data to system 1000 using a set-top box that delivers data through an HDMI connection in input block 1130. Still other embodiments may provide streamed data to system 1000 using an RF connection in input block 1130. As noted above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, such as a cellular network or a Bluetooth network.

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

[0036] In various embodiments, control signals may be communicated between system 1000 and display 1100, speaker 1110, or other peripheral device 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. Output devices may be communicatively coupled to system 1000 via dedicated connections through respective interfaces 1070, 1080, and 1090. Alternatively, output devices may be connected to system 1000 using communication channel 1060 via communication interface 1050. Display 1100 and speaker 1110 may be integrated in a single unit with other components of system 1000 in an electronic device such as, for example, a television. In various embodiments, display interface 1070 may include a display driver, such as, for example, a timing controller (T Con) chip.

[0037] Display 1100 and speakers 1110 may instead be separate from one or more of the other components, for example, if the RF portion of input 1130 is part of a separate set-top box. In various embodiments in which display 1100 and speakers 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 a 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 appropriate to the technical environment and may be implemented using any suitable data storage technology, such as, by way of non-limiting examples, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 6010 may be any type of processor appropriate to the technical environment and may include, by way of non-limiting examples, one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a multi-core-based processor.

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

[0040] To signal a custom luma-to-chroma Qp mapping table, a possible syntax 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 applies to both Cb and Cr components as well as 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 specifies the number of points used to describe the chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] must be in the range of 0 to 63 + QpBdOffsetC, inclusive.

[0045] delta_qp_in_val_minus1[i][j] plus 1 specifies the delta value used to derive the input coordinate of the jth pivot point of the ith chroma QP mapping table.

[0046] delta_qp_out_val[i][j] specifies the delta value used to derive the output coordinate of the jth pivot point of the ith chroma QP mapping table.

[0047] The ith 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 conformance requirement that the values ​​of qpInVal[i][j] and qpOutval[i][j] must be in the range -QpBdOffsetC~63, inclusive, for i=0..same_qp_table_for_chroma?0:2 and j=0..num_points_in_qp_table_minus1[i].

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

[0052] In the proposed syntax, because the luma QP of the first pivot point of a piecewise linear model is expected to fall in the range of 20-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 a difference from the normal QP, for example, 26 (as is the case with init_qp_minus26 in PPS), or another related 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. A side effect is that a specific syntax needs to be used for the first point, since it has a luma-QP delta that can be negative.

[0053] The syntax and semantics are 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 applies 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] must be in the range of 0 to 63 + QpBdOffsetC, inclusive.

[0058] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinate of the jth pivot point of the ith chroma QP mapping table. Values ​​for j equal to zero are offset by 26, and subsequent ones are offset by 1.

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

[0060] The ith 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 conformance requirement that the values ​​of qpInVal[i][j] and qpOutval[i][j] must be in the range -QpBdOffsetC~63, inclusive, 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 present principles, the position of the luma QP in the first pair is coded as a 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 26 or another value, such as 22 or 28. Preferably, the given value belongs to the interval [20, 30] because the first point is expected to fall in the range of 20 to 30. The QPc table is signaled by a set of (lumaQP, chromaQP) pairs, and in the first pair, lumaQP is coded as a difference from a given value X, which is the same offset as the one used to signal the starting QP of the picture, or as a value between 20 and 30, e.g., 26. The entropy coding of the syntax elements (ue(v), se(v), etc.) is not limiting, nor are the names, exact syntax arrangement, or semantic description limited.

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

[0066] According to a second embodiment of the present principles, the chroma QP is expected to follow the luma QP with a moderate offset, and thus the chroma QP of the set of (luma QP, chroma QP) pairs that defined the piecewise linear model may be signaled as the difference between the chroma QP and the luma QP instead of the raw chroma QP.

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

[0068] [Table 3]

[0069] 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 applies 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.

[0070] 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] must be in the range of 0 to 63 + QpBdOffsetC, inclusive.

[0071] delta_qp_in_val_minus1[i][j] plus 1 specifies the delta value used to derive the input coordinate of the jth pivot point in the ith chroma QP mapping table.

[0072] delta_qp_diff_val[i][j] specifies the delta value used to derive the output coordinate of the jth pivot point of the ith chroma QP mapping table.

[0073] The ith 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 may be 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 conformance requirement that the values ​​of qpInVal[i][j] and qpOutval[i][j] must be in the range -QpBdOffsetC~63, inclusive, 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, with "+delta_qp_diff_val" changed to "-delta_qp_diff_val", resulting in an equivalent method. Instead of the raw chroma QP (ChromaQpTable), a table of QP offsets (ChromaQpOffsetTable) may be derived and stored in memory. This can reduce memory needs when ranges are limited (both luma QP ranges, and offset bounds). 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, - lumaQP and chromaQPdiff may each be coded in dpcm (difference from previous value), -chromaQPdiff can be either lumaQP-chromaQP or chromaQP-lumaQP, - chromaQPdiff may be coded with an additional implicit offset (eg, 1) because it is expected to have a bias (reducing chroma QPdiff).

[0079] According to a third embodiment of the present principles, the first and second embodiments may be combined, which has the advantage of accumulating the benefits of coding a first luma QP differentially and coding the chroma QPs as offsets 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 applies 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 coordinate of the jth pivot point in the ith chroma QP mapping table. Values ​​for j equal to zero are 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 coordinate of the jth pivot point of the ith chroma QP mapping table.

[0085] The ith 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. It is a bitstream conformance requirement that the values ​​of qpInVal[i][j] and qpOutval[i][j] must be in the range of -QpBdOffsetC to 63, for i = 0..same_qp_table_for_chroma?0:2 and j = 0..num_points_in_qp_table_minus1[i], inclusive.

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

[0089] In another embodiment, the fact that the luma QP and chroma QP are generally very close to the first pivot point is exploited. In a first variant, the chroma QP is coded as a difference from the luma QP for the first point only, 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 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 residual along with the Cb residual and the Cr residual. 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 is not present in the bitstream, the value of same_qp_table_for_chroma is inferred to be equal to 1.

[0093] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the ith chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] must be in the range of 0 to 63 + QpBdOffsetC, inclusive. When num_points_in_qp_table_minus1[0] is not present in the bitstream, the value of num_points_in_qp_table_minus1[0] is inferred 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 jth pivot point of the ith chroma QP mapping table. When delta_qp_in_val_minus1[0][j] is not present in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.

[0095] delta_qp_out_val[i][j] specifies the delta value used to derive the output coordinate of the jth pivot point of the ith chroma QP mapping table. When delta_qp_out_val[0][j] is not present in the bitstream, the value of delta_qp_out_val[0][j] is inferred to be equal to 0.

[0096] The ith chroma QP mapping table ChromaQpTable[i] for i=0..same_qp_table_for_chroma?0:2 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 between -QpBdOffsetC and 63.

[0099] It is a bitstream conformance requirement that the values ​​of qpInVal[i][j] and qpOutval[i][j] must be in the range -QpBdOffsetC to 63, where i is between 0 and 0 if same_qp_table_for_chroma is true, and 2 otherwise, and j is between 0 and num_points_in_qp_table_minus1[i], inclusive.

[0100] It can be noted that the non-zero luma-chroma QP difference for the first pivot point is redundant with the global chroma QP offset, which can be defined by other means (e.g., PPS). Thus, in another embodiment, the chroma QP is forced 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, which requires at least a second pivot point to make the feature valid.

[0102] In this embodiment, the list length (the number of pivot points in the QP table) needs to be transmitted 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 specified by a single value, the pivot point list length to be transmitted is reduced by 1. The pivot point list is information that is given in addition to the explicit starting point.

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

[0104] [Table 6]

[0105] 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 residual along with the Cb residual and the Cr residual. 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 is not present in the bitstream, the value of same_qp_table_for_chroma is inferred to be equal to 1.

[0106] qp_table_start_minus26[i] plus 26 specifies the starting luma and chroma QP used to describe the ith chroma QP mapping table. The value of start_qp_minus26[i] must be in the range of -26-QpBdOffsetC to 36, inclusive. When start_qp_minus26[i] is not present in the bitstream, the value of start_qp_minus26[i] is inferred to be equal to 0.

[0107] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the ith chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] must be in the range of 0 to 62 + QpBdOffsetC, inclusive. When num_points_in_qp_table_minus1[0] is not present in the bitstream, the value of num_points_in_qp_table_minus1[0] is inferred to be equal to 0.

[0108] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinate of the jth pivot point of the ith chroma QP mapping table. When delta_qp_in_val_minus1[0][j] is not present in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.

[0109] delta_qp_diff_val[i][j] specifies the delta value used to derive the output coordinate of the jth pivot point of the ith chroma QP mapping table. When delta_qp_diff_val[0][j] is not present in the bitstream, the value of delta_qp_diff_val[0][j] is inferred to be equal to 0.

[0110] The i-th chroma QP mapping table ChromaQpTable[i], for i from 0 to 0 if same_qp_table_for_chroma is true, and 2 otherwise, 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 between -QpBdOffsetC and 63.

[0113] It is a bitstream conformance requirement that the values ​​of qpInVal[i][j] and qpOutVal[i][j] must be in the range -QpBdOffsetC to 63, inclusive, 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. As used herein, "decoding" may encompass all or part of the processing performed on a received encoded sequence, e.g., to generate a final output suitable for display. In various embodiments, such processing includes processing typically performed by a decoder, e.g., one or more of entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processing may additionally or alternatively include processing performed by a decoder in various implementations described herein, e.g., retrieving chroma quantization parameters used by module 240 of FIG. 2 .

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

[0116] Various implementations involve encoding. In a manner similar to the discussion of “decoding,” “encoding,” as used herein, may encompass all or part of the processing performed on, for example, an input video sequence to generate an encoded bitstream. In various embodiments, such processing includes one or more of the processing typically performed by an encoder, such as partitioning, differential encoding, transforming, quantizing, and entropy encoding. In various embodiments, such processing also or instead includes the processing performed by the encoder of various implementations described herein, such as signaling and processing chroma quantization parameters used by modules 130 and 140 of FIG. 1 .

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

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

[0119] Implementations and aspects described herein may be implemented in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even when discussed in the context of only a single form (e.g., discussed only as a method), implementations of the discussed features may also be implemented in other forms (e.g., an apparatus or a computer program). An apparatus may also be implemented in, for example, appropriate hardware, software, and firmware. A method may also be implemented in a processor, which generally refers to a processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic circuit. Processors also include communication devices such as computers, mobile phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.

[0120] "One embodiment," "embodiment," "one implementation," or "implementation," along with other variations thereof, also means that the particular features, structures, characteristics, etc. associated with an embodiment are included in at least one embodiment. Thus, the appearances of any other variations along with the phrases "in one embodiment," "in an embodiment," "in one implementation," or "in an implementation" appearing in various places throughout this application do not necessarily all refer to the same embodiment.

[0121] Additionally, the application may refer to "determining" various portions of information. Determining information may include, for example, one or more of evaluating information, calculating information, predicting information, or retrieving information from memory.

[0122] Additionally, the application may refer to "accessing" various portions of information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from memory), storing information, transferring information, replicating information, computing information, determining information, predicting information, or evaluating information.

[0123] Additionally, the application may refer to "receiving" various portions of information. Receiving, like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from memory). Furthermore, "receiving" typically involves, in one manner or another, during an operation such as, for example, storing information, processing information, transmitting information, moving information, duplicating information, erasing information, calculating information, determining information, predicting information, or evaluating information.

[0124] It will be recognized that the symbols / terms " / ," "and / or," and "at least one" are intended to encompass the selection of only the first listed alternative (A), the selection of only the second listed alternative (B), or the selection of both (A and B), for example, in the case of "A / B," "A and / or B," and "at least one of A and B." As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such phrases are intended to encompass the selection of only the first listed alternative (A), the selection of only the second listed alternative (B), the selection of only the third listed alternative (C), the selection of only the first listed alternative and the second listed alternative (A and B), the selection of only the first listed alternative and the third listed alternative (A and C), the selection of only the second listed alternative and the third listed alternative (B and C), or the selection of all three alternatives (A, B, and C). This may be expanded as many items are labeled as would be clear to one skilled in the art.

[0125] Also, as used herein, the word "signaling" refers, among other things, to indicating something to a corresponding decoder. For example, in certain embodiments, an encoder signals a particular syntax element SE1, and possibly a syntax element SE2. In this manner, in embodiments, the same parameters may be used on both the encoder and decoder sides. Thus, for example, an encoder may transmit a particular parameter to a decoder (explicit signaling), so that the decoder can use the same particular parameter. Conversely, if the decoder already has a particular parameter as well as other parameters, signaling may be used without transmission (implicit signaling) to simply allow the decoder to recognize and select the particular parameter. By avoiding transmitting any actual function, bit savings are realized in various embodiments. It will be appreciated that signaling can be achieved in various manners. In various embodiments, one or more syntax elements, flags, etc. are used to signal information to a corresponding decoder. While the foregoing relates to the verb form of the word "signaling," the word "signal" may also be used as a noun herein.

[0126] Several 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. In addition, those skilled in the art will understand that other structures and processes may be substituted for those other disclosed structures and processes, with the resulting implementation performing at least substantially the same function(s) in at least substantially the same way(s) to achieve at least substantially the same result(s) as the disclosed implementations. Accordingly, these and other implementations are contemplated by this application.

Claims

1. decoding QP information for luma from the 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 a chroma QP value is a sum between a corresponding chroma QP value in the first luma-to-chroma QP mapping table and a corresponding luma QP value in the second luma-to-chroma QP mapping table; decoding a block of an image obtained from the data stream using the second luma-to-chroma QP mapping table and the QP information for the decoded luma; A method comprising:

2. 2. The method of claim 1 , wherein the QP information for luma indicates that the luma QP value at a location in the first luma-to-chroma QP mapping table corresponds to a first pivot point of a piecewise linear model that is a difference from a predetermined QP value.

3. The method of claim 2 , wherein the predetermined QP value is 26.

4. 2. The method of claim 1 , wherein the QP information for luma in the first luma-to-chroma QP mapping table indicates that the QP information for chroma is encoded as a difference from a luma value only for a first pivot point.

5. Decoding QP information for luma from the 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 a chroma QP value is a sum between a corresponding chroma QP value in the first luma-to-chroma QP mapping table and a corresponding luma QP value in the second luma-to-chroma QP mapping table; Decoding a block of an image obtained from the data stream using the second luma-to-chroma QP mapping table and the QP information for the decoded luma.

1. A device comprising a processor configured to:

6. 6. The device of claim 5, wherein the QP information for luma indicates that the luma QP value at a position in the first luma-to-chroma QP mapping table corresponds to a first pivot point of a piecewise linear model that is a difference from a predetermined QP value.

7. The device of claim 6 , wherein the predetermined QP value is 26.

8. 6. The device of claim 5, wherein the QP information for luma in the first luma-to-chroma QP mapping table indicates that the QP information for chroma is encoded as a difference from a luma value only for a first pivot point.

9. obtaining a first luma-to-chroma QP mapping table and QP information for luma; determining a second luma-to-chroma QP mapping table, wherein a chroma QP value is a difference between a chroma QP value in the first luma-to-chroma QP mapping table and a corresponding luma QP value in the second luma-to-chroma QP mapping table; encoding the block of an image, the second luma-to-chroma QP mapping table, and the QP information for luma into a data stream; A method comprising:

10. 10. The method of claim 9, wherein the QP information for luma indicates that the luma QP value at a location in the second luma-to-chroma QP mapping table corresponds to a first pivot point of a piecewise linear model that is a difference from a predetermined QP value.

11. The method of claim 10 , wherein the predetermined QP value is 26.

12. 2. The method of claim 1, wherein the QP information for luma in the second luma-to-chroma QP mapping table indicates that the QP information for chroma is encoded as a difference from a luma value only for a first pivot point.

13. Obtain a first luma-to-chroma QP mapping table and QP information for luma; determining a second luma-to-chroma QP mapping table, wherein a chroma QP value is a difference between a chroma QP value in the first luma-to-chroma QP mapping table and a corresponding luma QP value in the first luma-to-chroma QP mapping table; encoding the block of the image, the second luma-to-chroma QP mapping table, and QP information for luma into a data stream; 1. A device comprising a processor configured to:

14. 14. The device of claim 13, wherein the QP information for luma indicates that the luma QP value at a position in the second luma-to-chroma QP mapping table corresponds to a first pivot point of a piecewise linear model that is a difference from a predetermined QP value.

15. The device of claim 14 , wherein the predetermined QP value is 26.

16. 14. The device of claim 13, wherein the QP information for luma in the second luma-to-chroma QP mapping table indicates that the QP information for chroma is encoded as a difference from a luma value only for a first pivot point.

17. 10. A non-transitory computer-readable medium having stored thereon instructions that, when executed by one or more processors, cause the method of claim 1 to be performed.

18. 10. A non-transitory computer-readable medium having instructions stored thereon that, when executed by one or more processors, cause the method of claim 9 to be performed.