Extended quantizer with finer step size
By extending quantization step sizes and using interpolation methods, the method and apparatus improve video encoding/decoding efficiency and quality, addressing the lack of granularity in existing technologies.
Patent Information
- Application Number
- JP2025540248
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-02-15
- Filing Date
- 2024-02-16
- Publication Date
- 2026-01-16
AI Technical Summary
Existing video encoding/decoding technologies lack sufficient granularity in quantization step sizes, leading to suboptimal compression efficiency and quality in video coding.
Implementing a method and apparatus for video encoding/decoding that determines a set of candidate quantization step sizes from a plurality of sets, allowing for finer granularity by extending the range of quantization step sizes and using linear or nonlinear interpolation between adjacent step sizes.
Enhances video coding efficiency by providing more precise quantization, improving compression quality and reducing data loss during transmission.
Smart Images

Figure 2026501799000001_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to U.S. Patent Application No. 18 / 443,056, entitled "EXTENDED QUANTIZER WITH FINER STEP SIZE," filed February 15, 2024, and to U.S. Provisional Application No. 63 / 446,285, entitled "Extended Quantizer with Finer Step Size," filed February 16, 2023, both of which are incorporated herein by reference in their entireties.
[0002] This disclosure generally describes embodiments related to video coding. [Background technology]
[0003] The background discussion provided herein is intended to generally present the context for the present disclosure. To the extent described in this background section, the inventors' work, as well as aspects of the description that may not be admitted as prior art at the time of filing, are not admitted expressly or implicitly as prior art to the present disclosure.
[0004] Image / video compression can help transmit image / video data across different devices, storage, and networks while minimizing quality loss. In some examples, video codec technology is capable of compressing video based on spatial and temporal redundancy. In one example, a video codec may use a technique called intra-prediction, which can compress images based on spatial redundancy. For example, intra-prediction can use reference data from a current picture being reconstructed for sample prediction. In another example, a video codec may use a technique called inter-prediction, which can compress images based on temporal redundancy. For example, inter-prediction can predict samples in a current picture from a previously reconstructed picture using motion compensation. Motion compensation can be indicated by a motion vector (MV). Summary of the Invention [Problem to be solved by the invention]
[0005] Aspects of the present disclosure provide a method and apparatus for video encoding / decoding. In some examples, the apparatus for video encoding / decoding includes a processing circuit. [Means for solving the problem]
[0006] According to one aspect of the present disclosure, a method of video decoding is provided. In the method, a video bitstream including a current block in a current picture is received. A set of candidate quantization step sizes for the current block is determined from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP). Each of the plurality of sets of candidate quantization step sizes includes a different number of candidate quantization step sizes. One or more quantization step sizes are determined from the set of candidate quantization step sizes for the current block. Transform coefficients of the current block are determined based on the determined one or more quantization step sizes. The current block is reconstructed based on the determined transform coefficients of the current block.
[0007] In one example, based on a first quantization parameter of the quantization parameters being equal to a multiple of a second quantization parameter of the quantization parameters of the current picture, a first quantization step size of a set of candidate quantization step sizes associated with the first quantization parameter is determined to be equal to a second quantization step size of a set of candidate quantization step sizes associated with the second quantization parameter.
[0008] In one example, the number of candidate quantization step sizes in the set of candidate quantization step sizes for the current block is a multiple of 64.
[0009] In one aspect, to determine the transform coefficients, a first transform coefficient of the transform coefficients of the current block is determined based on a product of the first quantized transform coefficient and a first value obtained from the two-dimensional array, wherein a plurality of row indices in a row dimension of the two-dimensional array include 0 and 1, and a number of a plurality of column indices in a column dimension of the two-dimensional array is equal to a multiple of 6.
[0010] In one example, the first value is obtained based on an entry value of a two-dimensional array indicated by a row index of the plurality of row indexes and a column index of the plurality of column indexes, where the row index is determined based on a flag, and the column index is determined based on a modulo operation performed based on (i) a sum of a quantization parameter of the current block and 1, and (ii) a multiple of 6, where the value of the quantization parameter of the current block is within a range from 0 to a multiple of 64 minus 1.
[0011] In one example, to determine the set of candidate quantization step sizes, a set of initial quantization step sizes is determined, and one or more quantization step sizes are interpolated between at least two adjacent initial quantization step sizes of the set of initial quantization step sizes based on one of a linear interpolation and a nonlinear model.
[0012] In one example, the set of candidate quantization step sizes includes a first subset of candidate quantization step sizes for luma components of the current block and a second subset of candidate quantization step sizes for chroma components of the current block, wherein the number of the first subset of candidate quantization step sizes is different from the number of the second subset of candidate quantization step sizes.
[0013] In one example, a first set of quantization parameters is determined for a first one of the current picture, a tile of the current picture, a CTU of the current picture, and a current block of the current picture. A second set of quantization parameters is determined for a second one of the current picture, a tile of the current picture, a CTU of the current picture, and a current block of the current picture. The number of quantization parameters in the first set is different from the number of quantization parameters in the second set.
[0014] In one example, a candidate value for a quantization parameter associated with a luma component of a current block is within a first range, and a candidate value for a quantization parameter offset between the luma and chroma components of the current block is within a second range that is different from the first range.
[0015] In one example, to determine a set of candidate quantization step sizes, a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for a current block are determined, and a first clip range of candidate values of quantization parameter offsets associated with the first set of candidate quantization step sizes is different from a second clip range of candidate values of quantization parameter offsets associated with the second set of candidate quantization step sizes.
[0016] In one example, to determine a set of candidate quantization step sizes, a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for a current block are determined, and a first range of candidate offset values associated with the first set of candidate quantization step sizes used in the deblocking filter is different from a second range of candidate offset values associated with the second set of candidate quantization step sizes used in the deblocking filter.
[0017] In one example, to determine a set of candidate quantization step sizes, a first set of candidate quantization step sizes associated with a first coding mode and a second set of candidate quantization step sizes associated with a second coding mode are determined for a current block, and a first range of quantization parameter offset values associated with the first set of candidate quantization step sizes differs from a second range of quantization parameter offset values associated with the second set of candidate quantization step sizes.
[0018] In one example, the number of the first subset of candidate quantization step sizes is equal to a first value, and the number of the second subset of candidate quantization step sizes is equal to a second value. A first QP bit depth offset value associated with the luma component is QpBDOffsetY, and a second QP bit depth offset value associated with the chroma component is QpBDOffsetC. An input range of the piecewise linear model of the luma-to-chroma QP mapping table is [-QpBdOffsetY, first value - 1], and an output range of the piecewise linear model of the luma-to-chroma QP mapping table is [-QpBdOffsetC, second value - 1].
[0019] According to another aspect of the present disclosure, an apparatus is provided. The apparatus includes a processing circuit. The processing circuit can be configured to perform any of the described methods for video decoding / encoding. In one example, the processing circuit is configured to receive a video bitstream including a current block in a current picture. The processing circuit is configured to determine a set of candidate quantization step sizes for the current block from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP), each of the plurality of sets of candidate quantization step sizes including a different number of candidate quantization step sizes. The processing circuit is configured to determine one or more quantization step sizes from the set of candidate quantization step sizes for the current block. The processing circuit is configured to determine transform coefficients of the current block based on the determined one or more quantization step sizes. The processing circuit is configured to reconstruct the current block based on the determined transform coefficients of the current block.
[0020] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform any of the methods for video decoding / encoding.
[0021] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0022] [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4] 1 shows a flowchart outlining a decoding process according to some embodiments of the present disclosure. [Figure 5] 1 shows a flowchart outlining an encoding process according to some embodiments of the present disclosure. [Figure 6] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0023] 1 shows a block diagram of a video processing system 100 in some examples. The video processing system 100 is an example application for the disclosed subject matter, a video encoder and video decoder in a streaming environment. The disclosed subject matter may be equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, streaming services, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0024] The video processing system (100) includes a capture subsystem (113) that may include a video source (101), such as a digital camera, that generates a stream of uncompressed video pictures (102). In one example, the stream of video pictures (102) includes samples taken by the digital camera. The stream of video pictures (102) is depicted with bold lines to emphasize its large amount of data compared to the encoded video data (104) (or coded video bitstream) that may be processed by an electronic device (120) that includes a video encoder (103) coupled to the video source (101). The video encoder (103) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (104) (or coded video bitstream) is depicted with thin lines to emphasize its small amount of data compared to the stream of video pictures (102) that may be stored on a streaming server (105) for future use. One or more streaming client subsystems, such as the client subsystems (106) and (108) of FIG. 1, can access the streaming server (105) to retrieve copies (107) and (109) of the encoded video data (104). The client subsystem (106) may include, for example, a video decoder (110) within an electronic device (130). The video decoder (110) decodes an input copy (107) of the encoded video data and creates an output stream (111) of video pictures that can be rendered on a display (112) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (104), (107), and (109) (e.g., a video bitstream) may be encoded according to a particular video coding / compression standard. Examples of such standards include ITU-T Recommendation H.265.In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC), and the disclosed subject matter may be used in conjunction with VVC.
[0025] It should be noted that the electronic devices (120) and (130) may include other components (not shown). For example, the electronic device (120) may also include a video decoder (not shown), and the electronic device (130) may also include a video encoder (not shown).
[0026] 2 shows an example block diagram of a video decoder (210). The video decoder (210) may be included in an electronic device (230). The electronic device (230) may include a receiver (231) (e.g., a receiving circuit). The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.
[0027] The receiver (231) may receive one or more coded video sequences, e.g., included in a bitstream, to be decoded by the video decoder (210). In one embodiment, one coded video sequence is received at a time, and the decoding of each coded video sequence is independent of the decoding of the other coded video sequences. The coded video sequences may be received from a channel (201), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (231) may also receive the encoded video data along with other data, e.g., coded audio data and / or auxiliary data streams, which may be forwarded to their respective using entities (not shown). The receiver (231) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter, "parser (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In other cases, the buffer memory (215) may be external to the video decoder (210) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (210), for example, to combat network jitter, plus another buffer memory (215) internal to the video decoder (210), for example, to handle playout timing. When the receiver (231) receives data from a store-and-forward device with sufficient bandwidth and controllability, or from an asynchronous network, the buffer memory (215) may be unnecessary or may be small.For use over a best-effort packet network such as the Internet, a buffer memory (215) may be required, which may be relatively large, advantageously adaptively sized, and may be implemented at least in part within an operating system or similar element (not shown) external to the video decoder (210).
[0028] The video decoder (210) may include a parser (220) for reconstructing symbols (221) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and, potentially, information for controlling a rendering device, such as a rendering device (212) (e.g., a display screen) that is not an integral part of the electronic device (230) but may be coupled to the electronic device (230), as shown in FIG. 2. Control information for the rendering device may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) may extract from the coded video sequence a set of subgroup parameters for at least one subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. A subgroup may include a Group of Pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (220) may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0029] The parser (220) may perform entropy decoding / parsing operations on the video sequence received from the buffer memory (215) to create symbols (221).
[0030] The reconstruction of the symbols (221) can involve several different units, depending on the type of video picture or portion thereof being coded (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how may be controlled by subgroup control information parsed from the coded video sequence by the parser (220). The flow of such subgroup control information between the parser (220) and the following units is not depicted for clarity.
[0031] In addition to the functional blocks already mentioned, the video decoder (210) may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, a conceptual subdivision into the following functional units is appropriate:
[0032] The first unit is a scalar / inverse transform unit (251), which receives quantized transform coefficients from the parser (220) as well as control information including which transform to use, block size, quantization coefficients, quantization scaling matrices, etc. as symbols (221). The scalar / inverse transform unit (251) can output blocks containing sample values that can be input to an aggregator (255).
[0033] In some cases, the output samples of the scaler / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) generates a block of the same size and shape as the block being reconstructed using surrounding, already reconstructed information fetched from the current picture buffer (258). The current picture buffer (258), for example, buffers partially reconstructed and / or fully reconstructed current pictures. The aggregator (255) may add, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251).
[0034] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (253) may access a reference picture memory (257) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (221) associated with the block, these samples may be added by the aggregator (255) to the output of the scalar / inverse transform unit (251) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (257) from which the motion-compensated prediction unit (253) fetches prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (253) in the form of symbols (221), which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of fetched sample values from the reference picture memory (257) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.
[0035] The output samples of the aggregator (255) can be subjected to various loop filtering techniques in the loop filter unit (256). Video compression techniques can include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression can also be responsive to meta-information obtained during decoding of a coded picture or previous portion (in decoding order) of the coded video sequence, and to previously reconstructed loop-filtered sample values.
[0036] The output of the loop filter unit (256) may be a sample stream that may be output to a rendering device (212) and stored in a reference picture memory (257) for use in future inter-picture prediction.
[0037] Once a particular coded picture is fully reconstructed, it may be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) may become part of the reference picture memory (257), and a new current picture buffer may be reallocated before beginning reconstruction of a subsequent coded picture.
[0038] The video decoder (210) may perform decoding operations according to a given video compression technology or standard, such as ITU-T Recommendation H.265. A coded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence adheres to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, a profile may select certain tools from among all tools available in the video compression technology or standard as the only tools available under that profile. Compliance may also require that the complexity of the coded video sequence be within a range defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further constrained by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled within the coded video sequence.
[0039] In one embodiment, the receiver (231) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (210) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0040] 3 shows an example block diagram of a video encoder (303). The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmitting circuit). The video encoder (303) may be used in place of the video encoder (103) in the example of FIG. 1.
[0041] The video encoder (303) may receive video samples from a video source (301) (which is not part of the electronic device (320) in the example of FIG. 3) that may capture video images to be coded by the video encoder (303). In other examples, the video source (301) is part of the electronic device (320).
[0042] The video source (301) may provide a source video sequence to be coded by the video encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (301) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. The following discussion focuses on samples.
[0043] According to one embodiment, the video encoder (303) may code and compress pictures of a source video sequence into a coded video sequence (343) in real time or under any other required time constraints. Enforcing an appropriate coding rate is one function of the controller (350). In some embodiments, the controller (350) controls and is operatively coupled to other functional units described below. Coupling is not shown for clarity. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, ...), picture size, Group of Pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured with other appropriate functions associated with the video encoder (303) optimized for a particular system design.
[0044] In some embodiments, the video encoder (303) is configured to operate in a coding loop. As an overly simplified explanation, in one example, the coding loop can include a source coder (330) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and a reference picture) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a manner similar to that used by a (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding of the symbol stream produces bit-exact results regardless of the location of the decoder (local or remote), the contents of the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values as the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchronism (and the resulting drift when synchronism cannot be maintained, for example due to channel errors) is also used in several related techniques.
[0045] The operation of the "local" decoder (333) may be the same as the operation of a "remote" decoder, such as the video decoder (210), already described in detail above in conjunction with Figure 2. However, with brief reference also to Figure 2, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).
[0046] In one embodiment, decoder technology, with the exception of parsing / entropy decoding, present in the decoder is present in the corresponding encoder in the same or substantially the same functional form. Therefore, the disclosed subject matter focuses on decoder operation. Descriptions of encoder technology may be omitted, as they are the reverse of the decoder technology described generically. In certain areas, more detailed descriptions are provided below.
[0047] In operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.
[0048] The local video decoder (333) may decode the coded video data of pictures that may be designated as reference pictures based on symbols created by the source coder (330). The operation of the coding engine (332) may advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence may typically be a copy of the source video sequence, with some errors. The local video decoder (333) may replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures in the reference picture memory (334). In this manner, the video encoder (303) may locally store copies of reconstructed reference pictures that have content in common with reconstructed reference pictures obtained by a far-end video decoder (free of transmission errors).
[0049] The predictor (335) may perform the prediction search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) may search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., which may serve as appropriate prediction references for the new picture. The predictor (335) may operate on sample blocks, pixel block by pixel block, to find appropriate prediction references. In some cases, as determined by search results obtained by the predictor (335), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (334).
[0050] The controller (350) may manage the coding operations of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0051] The output of all of the aforementioned functional units may be entropy coded by an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0052] The transmitter (340) may buffer the coded video sequence created by the entropy coder (345) in preparation for transmission over a communication channel (360), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (340) may merge the coded video data from the video encoder (303) with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (source not shown).
[0053] The controller (350) may manage the operation of the video encoder (303). During coding, the controller (350) may assign a particular coded picture type to each coded picture, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:
[0054] Intra-pictures (I-pictures) can be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, independent decoder refresh ("IDR") pictures.
[0055] Predictive pictures (P pictures) may be coded and decoded using intra- or inter-prediction, which uses motion vectors and reference indices to predict the sample values of each block.
[0056] Bidirectionally predicted pictures (B pictures) can be coded and decoded using intra- or inter-prediction, which uses two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predicted pictures can use three or more reference pictures and associated metadata for the reconstruction of a single block.
[0057] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0058] The video encoder (303) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Recommendation H.265. In doing so, the video encoder (303) may implement various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0059] In one embodiment, the transmitter (340) may transmit additional data along with the encoded video. The source coder (330) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0060] Video may be captured in time sequence as multiple source pictures (video pictures). Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. If a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. The motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0061] In some embodiments, bi-prediction techniques may be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures, such as a first reference picture and a second reference picture, are used, both of which are before the decoding order of the current picture in the video (but the display order may be past and future, respectively). A block in the current picture may be coded by a first motion vector pointing to a first reference block in the first reference picture and by a second motion vector pointing to a second reference block in the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.
[0062] Furthermore, merge mode techniques may be used in inter-picture prediction to improve coding efficiency.
[0063] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed block-by-block. For example, according to the HEVC standard, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU may be recursively quadtree-divided into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one CU of 64x64 pixels, four CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In one example, each CU is analyzed to determine a prediction type for the CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) according to temporal predictability and / or spatial predictability. Generally, each PU includes one luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels of 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0064] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technology. In one embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In other embodiments, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.
[0065] This disclosure includes aspects related to an extended quantizer with finer step sizes, for example, the quantization step size range may be extended from 64 to K different quantization step sizes.
[0066] In one aspect, the maximum quantization parameter (QP) can be extended from 51 to 63, and the signaling of the initial QP can be changed accordingly. The initial value of SliceQpY can be modified at the slice segment layer when a non-zero value of slice_qp_delta is coded. For example, the value of init_qp_minus26 can be modified to range from (-26 + QpBdOffsetY) to +37. If the size of the transform block is not a power of 4, the transform coefficients can be processed with modifications to the QP or QP levelScale table to compensate for the implicit scaling due to the transform process, rather than being multiplied by 181 / 256 (or 181 / 128). For transform skip blocks, the minimum allowed QP can be defined as 4, since the quantization step size is 1 when QP is equal to 4.
[0067] In one embodiment, a fixed lookup table is used to determine the luma quantization parameter QP Y is the chroma quantization parameter QP C In one aspect, a more flexible luma-to-chroma QP mapping can be used. Instead of having a fixed table, the luma-to-chroma QP mapping relationship can be signaled in the SPS using a flexible piecewise linear model. Constraints on the linear model can be applied such that the gradient of each piece is non-negative. For example, as the luma QP increases, the chroma QP can remain flat or increase, but not decrease. The piecewise linear model can be defined by (1) the number of pieces in the model, and (2) the input (luma) and output (chroma) delta QPs for each piece. The input range of the piecewise linear model is [-QpBdOffset Y ,63], and the output range of the piecewise linear model is [-QpBdOffset C,63]. The QP mapping relationship may be signaled separately for Cb, Cr, and joint Cb / Cr coding, or may be signaled jointly for all three types of residual coding.
[0068] In one aspect, CU-level QP adaptation can be enabled. Delta QP values for luma and chroma components can be signaled separately. For the chroma component, allowed chroma QP offset values can be signaled in the form of an offset list in the PPS. Lists can be defined separately for Cb, Cr, and joint Cb / Cr coding. Up to six offset values can be allowed for each of the Cb, Cr, and joint Cb / Cr lists. At the CU level, an index can be signaled to indicate which offset value in the offset list is used to adjust the chroma QP of that CU. CU chroma QP offset signaling can also be aligned with the virtual pipeline decoding unit (VPDU) CU QP delta availability. For CUs larger than 64x64, the chroma QP offset can be transmitted with the first transform unit regardless of whether the first transform unit has a non-zero coding block flag (CBF).
[0069] In an embodiment such as VVC, the inverse quantization process for transform coefficients can be formulated in equation (1) as follows: dqx[x][y]=(qx[x][y]*levelScale[rectNonTsFlag][(qP+1)%6])<<((qP+1) / 6) Equation (1) where qP is the QP value, qx[x][y] and dqx[x][y] are the input and output quantized transform coefficients, respectively, and rectNonTsFlag is a flag derived as follows in equation (2) when transform skip mode is not applied: rectNonTsFlag=(((Log2(nTbW)+Log2(nTbH)))&1)==1)?1:0 Formula (2) If transform skip mode is applied, rectNonTsFlag can be set to 0. levelScale[][] can be a hard-coded lookup table as shown in equation (3) below. levelScale[j][k]={{40,45,51,57,64,72}, {57,64,72,80,90,102}} Equation (3)
[0070] The quantization parameter related syntax in the slice header can be seen in Table 1 below.
[0071] [Table 1]
[0072] In one embodiment, the maximum QP can be set to 63. However, a small QP change, such as +1 or −1 at the frame level, can have a significant impact on the coding results. In such instances, there may not be enough granularity of quantizer adjustment for practical applications.
[0073] According to one aspect of the present disclosure, a set of candidate quantization step sizes for a current block is determined from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP), each of the plurality of sets of candidate quantization step sizes including a different number of candidate quantization step sizes.
[0074] In one aspect, the quantization step size range can be expanded from 64 to K different quantization step sizes. In one example, the expanded quantization step size range can be generalized to other values for different codecs. Example values of K include, but are not limited to, 128, 256, 512, 1024, and 2048.
[0075] In one example, the current block may have a set of candidate quantization step sizes. The number of sets of candidate quantization step sizes for the current block may be K greater than a threshold, such as 64. In one example, K may include, but is not limited to, 128, 256, 512, 1024, 2048. In one example, the number of sets of candidate quantization step sizes K for the current block may be a multiple of 64. Thus, candidate quantization step sizes that are multiples of 64 (e.g., 128, 256, 512, 1024, 2048) may be applied to the current block.
[0076] In one aspect, the quantization step size associated with a QP value q0 in a VVC may be the same quantization step size associated with a QP value that is a multiple of q0, such as q0×M, where example values of M may include, but are not limited to, 2, 4, 8, 16, K / 64.
[0077] In one example, if the first quantization parameter is a multiple of the second quantization parameter, a first quantization step size of the set of candidate quantization step sizes associated with the first quantization parameter may be equal to a second quantization step size of the set of candidate quantization step sizes associated with the second quantization parameter. In one example, the first quantization parameter is equal to the product of M and the second quantization parameter, where M may include, but is not limited to, 2, 4, 8, 16, K / 64.
[0078] In one embodiment, the value of K can be an integer multiple of 64. For example, K is equal to 64×N, where N is an integer.
[0079] In one embodiment, the value of K is an integer multiple of 64. For example, K is equal to 64×N, where N is a power of two.
[0080] According to one aspect of the present disclosure, the transform coefficients of a current block are determined based on one or more quantization step sizes.
[0081] In one aspect, the inverse quantization process is defined in equation (4) as follows: dqx[x][y]=(qx[x][y]*levelScale[rectNonTsFlag][(qP+1)%(6*N)]) <<((qP+1) / (6*N)) Equation (4) Here, qP may indicate a QP value. qx[x][y] and dqx[x][y] may be input and output quantized transform coefficients, respectively. rectNonTsFlag is a flag derived, for example, according to Equation (2). N in Equation (4) may indicate a finer quantization step size.
[0082] In one embodiment, the definitions of the qP value ranges and levelScale arrays are also different from the definitions of the qP value ranges and levelScale arrays above.
[0083] In one embodiment, for a two-dimensional array levelScale[j][k], k can range from 0 to 6×N−1. An example of levelScale when N is equal to 4 can be shown in equation (5) as follows: levelScale[j][k]={{40, 41, 43, 44, 45, 47, 48, 50, 51, 53, 54, 56, 57, 59, 61, 62, 64, 66, 68, 70, 72, 74, 76, 78}, {57, 59, 61, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 86, 88, 90, 94, 96, 100, 102, 106, 108, 112}} Formula (5)
[0084] In one example, as shown in equation (5), j represents a two-dimensional direction. j can be 0 or 1. When j is 0, K corresponds to {40....78}. When j is 1, K corresponds to {57....112}. Therefore, when [j][k]=[0][0], levelScale[0][0]=40, and when [j][k]=[0]
[23] , levelScale[0]
[23] =78.
[0085] In one embodiment, the value of qP can range from 0 to 64×N−1.
[0086] In one example, the value of qP may be a value between 0 and 64×N−1, where N may be an integer, or N may be a power of 2. In one example, the value of qP may be a value between −6×N×(Bitdepth−8) and 64×N−1.
[0087] In one aspect, the quantization step size can be extended from the VVC quantization step size as follows: the original quantization step size defined in VVC is retained, and the extended quantization step size is derived by interpolating two adjacent quantization step sizes within the original quantization step size with a predetermined formula.
[0088] In one aspect, the predetermined equation represents a linear interpolation.
[0089] In one aspect, the predetermined equation represents a non-linear model such that the mapping from QP to quantization step size is not linear between two adjacent QPs (or quantization step sizes) in VVC.
[0090] In one example, a set of initial quantization step sizes may be determined, and one or more quantization step sizes may be interpolated between at least two adjacent initial quantization step sizes of the set of initial quantization step sizes based on one of a linear interpolation and a nonlinear model.
[0091] In one aspect, interpolation can be applied to add entries in a levelScale array defined in the VVC specification to perform inverse quantization, where the levelScale array can be derived by extending entry values between adjacent entry values in the original levelScale array defined by VVC.
[0092] In one example, the original levelScale array can be defined by VVC as levelScale[j][k]={{40, 45, 51, 57, 64, 72}, {57, 64, 72, 80, 90, 102}. Through interpolation, additional entries can be added between two adjacent entry values in the levelScale array, such as 40 and 45. The interpolation can be linear or nonlinear.
[0093] In an aspect, the values of K and / or N may be signaled in a high-level syntax including, but not limited to, a sequence header, a picture header, a slice header, or a tile header.
[0094] In one embodiment, the values of K and / or N may be different for different color components. For example, the number of quantization step sizes applied to the luma color components may be larger than the number of quantization step sizes applied to the chroma color components.
[0095] In one aspect, the granularity of signaling quantization parameters or delta quantization parameters at different frame / tile / CTU / CU levels may be different.
[0096] In one example, a first set of quantization parameters can be determined for a first one of the current picture, a tile of the current picture, a CTU of the current picture, and a current block of the current picture. A second set of quantization parameters can be determined for a second one of the current picture, a tile of the current picture, a CTU of the current picture, and a current block of the current picture. The number of quantization parameters in the first set is different from the number of quantization parameters in the second set.
[0097] In one aspect, at the frame level, the quantization parameters may be signaled with coarser granularity compared to the maximum range of quantization step sizes. For example, a set of 64 quantization step sizes may be selected from a total of 256 quantization step sizes to apply to the frame level. However, at the block level, the quantization parameters or delta quantization parameters may be signaled with finer granularity. For example, a quantization step size of 256 may be applied to the block level.
[0098] In one aspect, the granularity of signaling the quantization parameter difference / offset between different color components (e.g., delta QP, which may be the syntax slice_cb_qp_offset and slice_cr_qp_offset signaled in the slice header in VVC) may be different from the signaling of the quantization parameters of the same color component.
[0099] In one example, a candidate value for a quantization parameter associated with a luma component of a current block is within a first range, and a candidate value for a quantization parameter offset between the luma and chroma components of the current block is within a second range different from the first range.
[0100] In one aspect, the quantization parameters of the luma component may be signaled using 256 different QP values, but the difference / offset between the luma and chroma components (e.g., delta QP between the luma and chroma components) may be signaled using only 64 QP values.
[0101] In one aspect, the quantization parameter of the luma component may be signaled with 64 different QP values, while the difference / offset between the luma and chroma components (e.g., delta QP between the luma and chroma components) is signaled with 256 QP values.
[0102] In one aspect, for different granularities (or different choices) of the quantization step size, the clip range of the quantization parameter offset may also be different.
[0103] In one example, a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for a current block can be determined, wherein a first clip range of candidate values of quantization parameter offsets associated with the first set of candidate quantization step sizes is different from a second clip range of candidate values of quantization parameter offsets associated with the second set of candidate quantization step sizes.
[0104] In one aspect, different granularities of the quantization step size may result in different valid ranges of quantization-related offset values used in the deblocking filter (eg, beta offset and / or tc offset).
[0105] In one example, a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for a current block can be determined, where a first range of candidate offset values associated with the first set of candidate quantization step sizes used in the deblocking filter is different from a second range of candidate offset values associated with the second set of candidate quantization step sizes used in the deblocking filter.
[0106] In one aspect, for different granularity of quantization step size, the quantization-related offsets or thresholds in different coding tools, for example, JCCR, may be different.
[0107] In one example, a first set of candidate quantization step sizes associated with a first coding mode and a second set of candidate quantization step sizes associated with a second coding mode for a current block are determined, and a first range of quantization parameter offset values associated with the first set of candidate quantization step sizes differs from a second range of quantization parameter offset values associated with the second set of candidate quantization step sizes.
[0108] In one embodiment, the values of K and / or N also determine the size of the luma-to-chroma QP mapping table.
[0109] In one aspect, when the quantization step size range is equal to 256 for all color components, the input range of the piecewise linear model for the luma-to-chroma QP mapping table may be [-QpBdOffsetY, 255], and the output range of the piecewise linear model for the luma-to-chroma QP mapping table may be [-QpBdOffsetC, 255].
[0110] In one aspect, if the quantization step size range of the luma component is equal to 256 and the quantization step size range of the chroma component is equal to 64, the input range of the piecewise linear model of the luma-to-chroma QP mapping table may be [-QpBdOffsetY, 255], and the output range of the piecewise linear model of the luma-to-chroma QP mapping table may be [-QpBdOffsetC, 63].
[0111] In one aspect, if the quantization step size range of the luma component is equal to 64 and the quantization step size range of the chroma component is equal to 256, the input range of the piecewise linear model of the luma-to-chroma QP mapping table may be [-QpBdOffsetY, 63], and the output range of the piecewise linear model of the luma-to-chroma QP mapping table may be [-QpBdOffsetC, 255].
[0112] In one example, the number of a first set of candidate quantization step sizes associated with the luma component is equal to a first value (e.g., 64 or 256), and the number of a second set of candidate quantization step sizes associated with the chroma component is equal to a second value (e.g., 64 or 256). The first QP bit depth offset value associated with the luma component is QpBDOffsetY, and the second QP bit depth offset value associated with the chroma component is QpBDOffsetC. The input range of the piecewise linear model of the luma-to-chroma QP mapping table is [-QpBdOffsetY, first value - 1], and the output range of the piecewise linear model of the luma-to-chroma QP mapping table is [-QpBdOffsetC, second value - 1].
[0113] In one example, the value of -QpBdOffsetY may be equal to -6*N*(Bitdepth-8), and -QpBdOffsetC may be different from -QpBdOffsetY.
[0114] 4 shows a flowchart outlining a process (400) according to one embodiment of the present disclosure. The process (400) can be used in a video decoder. In various embodiments, the process (400) is performed by a processing circuit, such as a processing circuit that performs the functions of the video decoder (110), a processing circuit that performs the functions of the video decoder (210), or the like. In some embodiments, the process (400) is implemented by software instructions, and thus, the processing circuit performs the process (400) when it executes the software instructions. The process begins at (S401) and proceeds to (S410).
[0115] At (S410), a video bitstream including a current block in a current picture is received.
[0116] At (S420), a set of candidate quantization step sizes for the current block is determined from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP), each of the plurality of sets of candidate quantization step sizes including a different number of candidate quantization step sizes.
[0117] At (S430), one or more quantization step sizes are determined from a set of candidate quantization step sizes for the current block.
[0118] At (S440), transform coefficients of the current block are determined based on the determined one or more quantization step sizes.
[0119] At (S450), the current block is reconstructed based on the determined transform coefficients of the current block.
[0120] In one example, based on a first quantization parameter of the quantization parameters being equal to a multiple of a second quantization parameter of the quantization parameters of the current picture, a first quantization step size of a set of candidate quantization step sizes associated with the first quantization parameter is determined to be equal to a second quantization step size of a set of candidate quantization step sizes associated with the second quantization parameter.
[0121] In one example, the number of candidate quantization step sizes in the set of candidate quantization step sizes for the current block is a multiple of 64.
[0122] In one aspect, to determine the transform coefficients, a first transform coefficient of the transform coefficients of the current block is determined based on a product of the first quantized transform coefficient and a first value obtained from the two-dimensional array, wherein a plurality of row indices in a row dimension of the two-dimensional array include 0 and 1, and a number of a plurality of column indices in a column dimension of the two-dimensional array is equal to a multiple of 6.
[0123] In one example, the first value is obtained based on an entry value of a two-dimensional array indicated by a row index of the plurality of row indexes and a column index of the plurality of column indexes, where the row index is determined based on a flag, and the column index is determined based on a modulo operation performed based on (i) a sum of a quantization parameter of the current block and 1, and (ii) a multiple of 6, where the value of the quantization parameter of the current block is within a range from 0 to a multiple of 64 minus 1.
[0124] In one example, to determine the set of candidate quantization step sizes, a set of initial quantization step sizes is determined, and one or more quantization step sizes are interpolated between at least two adjacent initial quantization step sizes of the set of initial quantization step sizes based on one of a linear interpolation and a nonlinear model.
[0125] In one example, the set of candidate quantization step sizes includes a first subset of candidate quantization step sizes for luma components of the current block and a second subset of candidate quantization step sizes for chroma components of the current block, wherein the number of the first subset of candidate quantization step sizes is different from the number of the second subset of candidate quantization step sizes.
[0126] In one example, a first set of quantization parameters is determined for a first one of the current picture, a tile of the current picture, a CTU of the current picture, and a current block of the current picture. A second set of quantization parameters is determined for a second one of the current picture, a tile of the current picture, a CTU of the current picture, and a current block of the current picture. The number of quantization parameters in the first set is different from the number of quantization parameters in the second set.
[0127] In one example, a candidate value for a quantization parameter associated with a luma component of a current block is within a first range, and a candidate value for a quantization parameter offset between the luma and chroma components of the current block is within a second range that is different from the first range.
[0128] In one example, to determine a set of candidate quantization step sizes, a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for a current block are determined, and a first clip range of candidate values of quantization parameter offsets associated with the first set of candidate quantization step sizes is different from a second clip range of candidate values of quantization parameter offsets associated with the second set of candidate quantization step sizes.
[0129] In one example, to determine a set of candidate quantization step sizes, a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for a current block are determined, and a first range of candidate offset values associated with the first set of candidate quantization step sizes used in the deblocking filter is different from a second range of candidate offset values associated with the second set of candidate quantization step sizes used in the deblocking filter.
[0130] In one example, to determine a set of candidate quantization step sizes, a first set of candidate quantization step sizes associated with a first coding mode and a second set of candidate quantization step sizes associated with a second coding mode are determined for a current block, and a first range of quantization parameter offset values associated with the first set of candidate quantization step sizes differs from a second range of quantization parameter offset values associated with the second set of candidate quantization step sizes.
[0131] In one example, the number of the first subset of candidate quantization step sizes is equal to a first value, and the number of the second subset of candidate quantization step sizes is equal to a second value. A first QP bit depth offset value associated with the luma component is QpBDOffsetY, and a second QP bit depth offset value associated with the chroma component is QpBDOffsetC. An input range of the piecewise linear model of the luma-to-chroma QP mapping table is [-QpBdOffsetY, first value - 1], and an output range of the piecewise linear model of the luma-to-chroma QP mapping table is [-QpBdOffsetC, second value - 1].
[0132] Thereafter, the process proceeds to (S499) and ends.
[0133] The process (400) may be adapted as appropriate. Steps of the process (400) may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0134] 5 shows a flowchart outlining a process (500) according to one embodiment of the present disclosure. The process (500) can be used in a video encoder. In various embodiments, the process (500) is performed by a processing circuit, such as a processing circuit that performs the functions of the video encoder (103), a processing circuit that performs the functions of the video encoder (303), or the like. In some embodiments, the process (500) is implemented by software instructions, such that the processing circuit performs the process (500) when it executes the software instructions. The process begins at (S501) and proceeds to (S510).
[0135] At (S510), a set of candidate quantization step sizes for the current block is determined from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP), each of the plurality of sets of candidate quantization step sizes having a different number of candidate quantization step sizes.
[0136] At (S520), one or more quantization step sizes are determined from a set of candidate quantization step sizes for the current block.
[0137] At (S530), transform coefficients of the current block are determined based on the determined one or more quantization step sizes.
[0138] At (S540), the current block is encoded based on the determined transform coefficients of the current block.
[0139] Thereafter, the process proceeds to (S599) and ends.
[0140] The process (500) may be adapted as appropriate. Steps of the process (500) may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0141] The techniques described above can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 6 illustrates a computer system (600) suitable for implementing certain embodiments of the disclosed subject matter.
[0142] The computer software may be coded using any suitable machine code or computer language that can be subjected to assembly, compilation, linking, or similar mechanisms to generate code containing instructions that can be executed by one or more computer central processing units (CPUs) and graphics processing units (GPUs), etc., directly, or through interpretation and execution of microcode, etc.
[0143] The instructions may be executed by various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.
[0144] 6 for computer system (600) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be construed as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system (600).
[0145] The computer system (600) may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input (not shown). The human interface devices may be used to capture certain media that do not necessarily involve direct conscious human input, such as sound (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).
[0146] The input human interface devices may include one or more (only one of each is shown) of a keyboard (601), a mouse (602), a trackpad (603), a touchscreen (610), a data glove (not shown), a joystick (605), a microphone (606), a scanner (607), and a camera (608).
[0147] The computer system (600) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (610), data gloves (not shown), or joystick (605), although some haptic feedback devices may not function as input devices), audio output devices (such as speakers (609), headphones (not shown)), visual output devices (such as screens (610) including CRT screens, LCD screens, plasma screens, and OLED screens (each with or without touchscreen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or output in more than three dimensions by means of stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0148] The computer system (600) may also include human-accessible storage devices and associated media, such as optical media including CD / DVD ROM / RW (620) along with CD / DVD or similar media (621), thumb drives (622), removable hard drives or solid state drives (623), legacy magnetic media such as tape and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0149] Those skilled in the art will also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.
[0150] The computer system (600) also includes an interface (654) to one or more communication networks (655). The networks can be, for example, wireless, wired, or optical. The networks can further be local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant, and the like. Examples of networks include local area networks such as Ethernet and wireless LAN; cellular networks including GSM, 3G, 4G, 5G, LTE, and the like; TV wired or wireless wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; and vehicular and industrial networks including CAN Bus. Certain networks generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (649) (e.g., a USB port on the computer system (600)); others are generally integrated into the core of the computer system (600) by attachment to a system bus, as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (600) can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or two-way, for example, to other computer systems using local or wide area digital networks. Specific protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.
[0151] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be connected to the core (640) of the computer system (600).
[0152] The core (640) may include one or more central processing units (CPUs) (641), graphics processing units (GPUs) (642), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (643), task-specific hardware accelerators (644), graphics adapters (650), etc. These devices may be connected via a system bus (648), along with read-only memory (ROM) (645), random access memory (646), and internal mass storage (647) such as a non-user-accessible internal hard drive or SSD. In some computer systems, the system bus (648) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus (648) or via a peripheral bus (649). In one example, a screen (610) may be connected to the graphics adapter (650). Architectures for peripheral buses include PCI, USB, etc.
[0153] The CPU (641), GPU (642), FPGA (643), and accelerator (644) can execute specific instructions that, in combination, can constitute the aforementioned computer code. The computer code can be stored in ROM (645) or RAM (646). Temporary data can also be stored in RAM (646), while persistent data can be stored, for example, in internal mass storage (647). Rapid storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (641), GPU (642), mass storage (647), ROM (645), RAM (646), etc.
[0154] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0155] By way of example and not limitation, a computer system (600) having the architecture, and specifically the core (640), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be the user-accessible mass storage introduced above, as well as media associated with specific storage of the core (640) that is non-transitory in nature, such as the core's internal mass storage (647) or ROM (645). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (640). The computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause the core (640), and specifically the processor (including a CPU, GPU, FPGA, etc.) therein, to perform specific processes or specific portions of specific processes described herein, including defining data structures stored in RAM (646) and modifying such data structures according to software-defined operations. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (644)), which may operate in place of or in conjunction with software to perform specific operations or portions of specific operations described herein. References to software may, where appropriate, encompass logic, and vice versa. References to computer-readable media may, where appropriate, encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.
[0156] The use of "at least one of" or "one of" in this disclosure is intended to include any one or combination of the listed elements. For example, reference to at least one of A, B, or C, i.e., at least one of A, B, and C, at least one of A, B, and / or C, and at least one of A through C, is intended to include A only, B only, C only, or any combination thereof. Reference to one of A or B and one of A and B is intended to include A or B or (A and B). The use of "one of" does not exclude any combination of the listed elements where applicable, such as when the elements are not mutually exclusive.
[0157] While this disclosure has described several exemplary embodiments, there are alternatives, modifications, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure. [Explanation of symbols]
[0158] 100 Video processing system, communication system, 101 Video source, 102 Stream, 103 Video encoder, 104 Video data, 105 Streaming server, 106 Client subsystem, 108 Client subsystem, 107 Video data, input copy, 109 Video data, input copy, 110 Video decoder, 111 Output stream, 112 Display, 113 Capture subsystem, 120 Electronic device, 130 Electronic device, 201 Channel, 210 Video decoder, 212 Rendering device, 215 Buffer memory, 220 Parser, 221 Symbol, 230 Electronic device, 231 Receiver, 251 Inverse transform unit, 252 Intra-picture prediction unit, 253 Motion compensation prediction unit, 255 Aggregator, 256 Loop filter unit, 257 Reference picture memory, 258 Current picture buffer, 301 Video source, 303 Video encoder, 320 Electronic device, 330 Source coder, 332 coding engine, 333 local video decoder, 334 reference picture memory, 335 predictor, 340 transmitter, 343 video sequence, 345 entropy coder, 350 controller, 360 communication channel, 400 processing, 500 processing, 600 computer system, 601 keyboard, 602 mouse, 603 trackpad, 605 joystick, 606 microphone, 607 scanner, 608 camera, 609 audio output device, speaker, 610 touchscreen, 621 medium, 622 thumb drive, 623 solid-state drive, 640 core, 641 CPU, 642 GPU, 643 field-programmable gate array (FPGA), 644 hardware accelerator, 645 read-only memory (ROM), 646 random-access memory, 647 internal mass storage, 648 System bus, 649 Peripheral bus, 650 Graphics adapter, 654 Interface, 655 Communication network
Claims
1. 1. A method of video decoding, said method comprising: receiving a video bitstream including a current block in a current picture; determining a set of candidate quantization step sizes for a current block from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP), each of the plurality of sets of candidate quantization step sizes including a different number of the candidate quantization step sizes; determining one or more quantization step sizes from the set of candidate quantization step sizes for the current block; determining transform coefficients of the current block based on the determined one or more quantization step sizes; reconstructing the current block based on the determined transform coefficients of the current block; A method of video decoding, comprising:
2. based on a first one of the quantization parameters being equal to a multiple of a second one of the quantization parameters of the current picture, determining that a first quantization step size of the set of candidate quantization step sizes associated with the first quantization parameter is equal to a second quantization step size of the set of candidate quantization step sizes associated with the second quantization parameter; The method of claim 1 further comprising:
3. The method of claim 1 , wherein the number of candidate quantization step sizes in the set of candidate quantization step sizes for the current block is a multiple of 64.
4. the step of determining the transform coefficients includes determining a first transform coefficient of the transform coefficients of the current block based on a product of a first quantized transform coefficient and a first value obtained from a two-dimensional array; a plurality of row indices in a row dimension of the two-dimensional array including 0 and 1; the number of column indices in the column dimension of the two-dimensional array is equal to a multiple of 6; The method of claim 1.
5. 5. The method of claim 4, wherein the first value is obtained based on an entry value of the two-dimensional array indicated by one row index of the plurality of row indexes and one column index of the plurality of column indexes, the one row index being determined based on a flag, and the one column index being determined based on a modulo operation performed based on (i) the sum of a quantization parameter of the current block and 1, and (ii) the multiple of 6, and the value of the quantization parameter of the current block is within a range of 0 to a multiple of 64 minus 1.
6. determining the set of candidate quantization step sizes determining a set of initial quantization step sizes; interpolating one or more quantization step sizes between at least two adjacent initial quantization step sizes of the set of initial quantization step sizes based on one of a linear interpolation and a non-linear model; The method of claim 1 further comprising:
7. 2. The method of claim 1 , wherein the set of candidate quantization step sizes includes a first subset of candidate quantization step sizes for luma components of the current block and a second subset of candidate quantization step sizes for chroma components of the current block, and the number of the first subset of candidate quantization step sizes differs from the number of the second subset of candidate quantization step sizes.
8. determining a first set of quantization parameters for a first one of the current picture, a tile of the current picture, a CTU of the current picture, and the current block of the current picture; determining a second set of quantization parameters for a second one of the current picture, the tile of the current picture, the CTU of the current picture, and the current block of the current picture; further comprising the number of the first set of quantization parameters is different from the number of the second set of quantization parameters; The method of claim 1.
9. a candidate value of a quantization parameter associated with a luminance component of the current block is in a first range; a candidate value of the quantization parameter offset between the luma component and the chroma component of the current block is in a second range different from the first range; The method of claim 1.
10. determining a set of candidate quantization step sizes further comprises determining a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for the current block; a first clip range of candidate values of quantization parameter offsets associated with the first set of candidate quantization step sizes is different from a second clip range of candidate values of quantization parameter offsets associated with the second set of candidate quantization step sizes; The method of claim 1.
11. determining a set of candidate quantization step sizes includes determining a first set of candidate quantization step sizes and a second set of candidate quantization step sizes for the current block; a first range of candidate offset values associated with the first set of candidate quantization step sizes used in a deblocking filter is different from a second range of candidate offset values associated with the second set of candidate quantization step sizes used in the deblocking filter; The method of claim 1.
12. determining a set of candidate quantization step sizes further comprises determining a first set of candidate quantization step sizes associated with a first coding mode and a second set of candidate quantization step sizes associated with a second coding mode for the current block; a first range of quantization parameter offset values associated with the first set of candidate quantization step sizes is different from a second range of quantization parameter offset values associated with the second set of candidate quantization step sizes; The method of claim 1.
13. the number of the first subset of candidate quantization step sizes is equal to a first value, the number of the second subset of candidate quantization step sizes is equal to a second value, a first QP bit depth offset associated with the luma component is QpBDOffsetY, and a second QP bit depth offset value associated with the chroma component is QpBDOffsetC; the input range of the piecewise linear model of the luma-to-chroma QP mapping table is [−QpBdOffsetY, the first value−1]; an output range of the piecewise linear model of the luma-to-chroma QP mapping table is [−QpBdOffsetC, second value−1]; The method of claim 7.
14. 1. An apparatus comprising: A processing circuit, receiving a video bitstream including a current block in a current picture; determining a set of candidate quantization step sizes for a current block from a plurality of sets of candidate quantization step sizes associated with a quantization parameter (QP), each of the plurality of sets of candidate quantization step sizes including a different number of the candidate quantization step sizes; determining one or more quantization step sizes from the set of candidate quantization step sizes for the current block; determining transform coefficients for the current block based on the determined one or more quantization step sizes; reconstructing the current block based on the determined transform coefficients of the current block; a processing circuit configured to:
1. An apparatus comprising:
15. the processing circuitry based on a first one of the quantization parameters being equal to a multiple of a second one of the quantization parameters of the current picture, determining that a first quantization step size of the set of candidate quantization step sizes associated with the first quantization parameter is equal to a second quantization step size of the set of candidate quantization step sizes associated with the second quantization parameter; The apparatus of claim 14 configured to:
16. The apparatus of claim 14 , wherein the number of candidate quantization step sizes in the set of candidate quantization step sizes for the current block is a multiple of 64.
17. the processing circuitry configured to determine a first transform coefficient of the transform coefficients of the current block based on a product of a first quantized transform coefficient and a first value obtained from a two-dimensional array; a plurality of row indices in a row dimension of the two-dimensional array including 0 and 1; the number of column indices in the column dimension of the two-dimensional array is equal to a multiple of 6; 15. The apparatus of claim 14.
18. 18. The apparatus of claim 17, wherein the first value is obtained based on an entry value of the two-dimensional array indicated by one row index of the plurality of row indexes and one column index of the plurality of column indexes, the one row index being determined based on a flag, and the one column index being determined based on a modulo operation performed based on (i) the sum of the quantization parameter of the current block and 1, and (ii) a multiple of 6, and the value of the quantization parameter of the current block is within a range of 0 to a multiple of 64 minus 1.
19. the processing circuitry determining a set of initial quantization step sizes; interpolating one or more quantization step sizes between at least two adjacent initial quantization step sizes of the set of initial quantization step sizes based on one of a linear interpolation and a nonlinear model; and The apparatus of claim 14 configured to:
20. the set of candidate quantization step sizes includes a first subset of candidate quantization step sizes for luma components of the current block and a second subset of candidate quantization step sizes for chroma components of the current block, and the number of the first subset of candidate quantization step sizes is different from the number of the second subset of candidate quantization step sizes.
15. The apparatus of claim 14.
Citation Information
Patent Citations
Encoding device, decoding device, and control method thereof
JP2017085498A