Method and apparatus for video coding
By dequantizing transformation coefficients in video coding using varying quantization steps, the method addresses inefficiencies in intra-prediction direction bit allocation, achieving enhanced compression efficiency and reduced data requirements.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2021-06-30
- Publication Date
- 2026-05-26
AI Technical Summary
Existing video coding technologies face inefficiencies in reducing redundancy and optimizing bit allocation for intra-prediction directions, particularly with the increasing number of possible directions in advanced video coding techniques like H.265 and JEM/VVC/BMS, leading to suboptimal compression ratios.
The proposed method involves dequantizing transformation coefficients in a conversion block based on varying quantization steps, with the first coefficient in a specific direction dequantized using the smallest step, and subsequent coefficients using different steps, guided by a flag and quantization matrix, to optimize bit allocation and reduce redundancy.
This approach enhances video coding efficiency by optimizing bit allocation and reducing redundancy, leading to improved compression ratios and reduced data requirements for video transmission and storage.
Smart Images

Figure 0007865506000001 
Figure 0007865506000002 
Figure 0007865506000003
Abstract
Description
[Technical Field]
[0001] Built-in by reference This application claims priority to a U.S. provisional application filed on 24 September 2020, application number 63 / 082812, titled "QUANTIZER DESIGN FOR ONE-DIMENSIONAL TRANSFORM SKIP," and to a U.S. patent application filed on 17 May 2021, application number 17 / 322258, titled "METHOD AND APPARATUS FOR VIDEO CODING." All contents of these applications are incorporated into this application by reference.
[0002] Technical field This disclosure generally describes embodiments relating to video coding. [Background technology]
[0003] The description of “Background Art” provided herein is intended to provide a general overview of the background to this disclosure. The research of the inventors named herein, to the extent described herein, is not considered prior art to this disclosure, either explicitly or implicitly, with respect to any manner of description that would not ordinarily be considered prior art at the time of filing.
[0004] Video coding and decoding can be performed using interpicture prediction with motion compensation. Uncompressed digital video can contain a series of pictures, each picture having spatial dimensions of, for example, 1920×1080 luminance samples and associated saturation samples. The series of pictures can have a fixed or variable picture rate (informally also called the "frame rate") of, for example, 60 pictures per second or 60Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video at 8 bits per sample (1920×1080 luminance sample resolution at a 60Hz frame rate) requires a bandwidth of nearly 1.5 Gbit / s. Using such video for one hour requires more than 600 GB of storage space.
[0005] One purpose of video coding and decoding may be to reduce the redundancy of the input video signal through compression. Compression helps reduce the aforementioned bandwidth and / or storage space requirements, sometimes by more than two orders of magnitude. Both lossless and lossy compression, and combinations thereof, can be used. Lossless compression refers to a technique that allows an exact copy of the original signal to be reconstructed from the compressed original signal. When using lossy compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough that the reconstructed signal is useful for the intended application. For video, lossy compression is widely adopted. The amount of distortion that can be tolerated varies depending on the application. For example, users of a certain consumer streaming application may tolerate more distortion than users of a television distribution application. The achievable compression ratio can reflect that the greater the acceptable / tolerable distortion, the higher the compression ratio.
[0006] Video encoders and decoders can utilize techniques from a wide range of categories, including, for example, motion compensation, transformation, quantization, and entropy coding.
[0007] Video codec techniques may include a technique known as intra coding. In intra coding, sample values are represented without referencing samples from a pre-reconstructed reference picture or other data. In some video codecs, the picture is subdivided spatially into blocks of samples. When all blocks of samples are coded in intra mode, the picture can become an intra picture. Intra pictures, and their derivatives such as independent decoder refresh pictures, can be used to reset the decoder state and can therefore be used as the first picture in a coded video bitstream or as a still image in a video session. Samples in intra blocks can be subjected to transformations, and the transformation coefficients can be quantized before entropy coding. Intra prediction may be a technique to minimize sample values in the pre-transformation region. In some cases, the smaller the DC value and the smaller the AC coefficient after transformation, the fewer bits are needed at a given quantization step size to represent the block after entropy coding.
[0008] Traditional intra-coding, such as that known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include methods that attempt intra-prediction from surrounding sample data and / or metadata obtained during encoding and / or decoding of spatially adjacent blocks of data that are located ahead in the decoding order. Such techniques are hereafter referred to as “intra-prediction” techniques. Note that in at least some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not reference data from the reference picture.
[0009] Intra-prediction can exist in different forms. If two or more such techniques can be used with a given video coding technique, the technique in use can be coded in intra-prediction mode. In some cases, a mode may have submodes and / or parameters, which can be coded individually or included in a mode codeword. The entropy coding technique used to convert the codeword into a bitstream may also be affected, as which codeword is used with a given combination of mode / submodes and / or parameters may affect the coding efficiency gain by intra-prediction.
[0010] Specific modes of intra-prediction were introduced in H.264, improved in H.265, and further refined with newer coding techniques such as Joint Search Models (JEM), Versatile Video Coding (VVC), and Benchmark Sets (BMS). Predictor blocks can be formed using neighboring sample values belonging to already available samples. The sample values of neighboring samples are copied to the predictor block according to direction. References to the direction in use can be coded in the bitstream or predicted themselves.
[0011] Referring to Figure 1A, the lower right shows a subset of nine prediction directions known from the 33 predictable directions of H.265 (corresponding to 33 of the 35 intra-modes, or angular modes). The point where the arrows converge (101) represents the predicted sample. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right at an angle of 45 degrees from the horizontal axis. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101) at an angle of 22.5 degrees from the horizontal axis.
[0012] Continuing to refer to Figure 1A, the upper left shows a 4x4 sample square block (104) (indicated by a thick dashed line). Each square block (104) contains 16 samples, each labeled with "S", its position in the Y dimension (e.g., row index), and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample in block (104) in both the Y and X dimensions. Because the block is 4x4 sample size, S44 is in the lower right. Furthermore, reference samples are shown following a similar numbering system. The reference samples are labeled with R, its Y position (e.g., row index) and X position (column index) relative to block (104). In both H.264 and H.265, the predicted samples are adjacent to the block being reconstructed. Therefore, there is no need to use negative values.
[0013] Intra-picture prediction can function by copying reference sample values from appropriate adjacent samples in the signaled prediction direction. For example, suppose the coded video bitstream includes signaling for this block that corresponds to the prediction direction (i.e., the sample is predicted from one or more prediction samples to the upper right at a 45-degree angle from the horizontal axis), indicated by arrow (102). In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted from reference sample R08.
[0014] In certain cases, particularly when the directions are not evenly divided at 45-degree intervals, the values of multiple reference samples can be combined, for example, by interpolation, to calculate a reference sample.
[0015] As video coding technology has advanced, the number of possible directions has increased. H.264 (2003) could represent nine different directions. This increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions at disclosure. Experiments have been conducted to identify the most likely direction, and certain techniques in entropy coding are used to represent the most likely direction with fewer bits, accepting a certain penalty for the less likely direction. Furthermore, the direction itself may be predicted from the adjacent directions used in adjacent, already decoded blocks.
[0016] Figure 1B shows a schematic diagram (180) illustrating 65 different intra-prediction directions by JEM to show the increase in the number of prediction directions over time.
[0017] The mapping of intra-predicted direction bits in a coded video bitstream representing direction can vary depending on the video coding technique and can range from simple direct mapping of predicted direction to intra-predicted mode or codeword to complex adaptive schemes involving most probable mode or similar techniques. However, in all cases, there may be certain directions that are statistically less likely to occur in video content than other particular directions. Since the purpose of video compression is to reduce redundancy, in a properly functioning video coding technique, these less likely directions are represented by more bits than the more likely directions.
[0018] Motion compensation can be a lossy compression technique that involves spatially shifting blocks of sample data from a pre-reconstructed picture or a portion thereof (reference picture) in the direction indicated by a motion vector (hereinafter, "MV"), and then using this to predict the newly reconstructed picture or portion of a picture. In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV can have two dimensions, X and Y, or three dimensions, where the third dimension represents the reference picture being used (the latter can indirectly be the time dimension).
[0019] In some video compression techniques, the motion vector (MV) applicable to a specific region of sample data can be predicted from other MVs, for example, from MVs related to another region of sample data that is spatially adjacent to the region being reconstructed and precedes that MV in the decoding order. This significantly reduces the amount of data required to code the MV, thereby eliminating redundancy and enhancing compression. For example, when coding an input video signal derived from a camera (called "natural video"), MV prediction can be effective because regions larger than the region to which a single MV applies move in a similar direction, and therefore, statistically, can be predicted using similar motion vectors derived from the MVs of adjacent regions. As a result, the detected MV for a particular region is similar to or identical to the MV predicted from the surrounding MVs and can be represented with fewer bits after entropy coding than if the MV were coded directly. In some cases, MV prediction can be an example of lossless compression of the signal (i.e., the "MV") derived from the original signal (i.e., the "sample stream"). In other cases, MV prediction itself may be lossy, for example, due to rounding errors when calculating the predictor from some surrounding MVs.
[0020] H.265 / HEVC (ITU-T recommended H.265, "High Efficiency Video Coding," December 2016) describes various MV prediction mechanisms. Of the many MV prediction mechanisms provided by H.265, the one described here is the technique hereafter referred to as "spatial merging."
[0021] Referring to Figure 2, the current block (201) can contain samples discovered during the motion search process by the encoder, which are predictable from previous blocks of the same size but spatially shifted. Instead of directly coding its MV, the MV can be derived from metadata associated with one or more reference pictures, for example, from the most recent reference picture (in decoding order), using the MV associated with one of the five surrounding samples indicated by A0, A1, B0, B1, and B2 (202 through 206, respectively). In H.265, the MV prediction can use predictors from the same reference pictures used by the adjacent blocks. [Overview of the Initiative]
[0022] Aspects of this disclosure provide methods and apparatus for video encoding and / or decoding. In some examples, the apparatus for video decoding includes a processing circuit. The processing circuit can decode coding information of a conversion block (TB) from a coded video bitstream. The coding information may indicate a conversion skip in one direction of the TB. The processing circuit may dequantize the conversion coefficients in the TB based on a plurality of quantization steps. A first conversion coefficient in the TB may be dequantized based on the smallest of the plurality of quantization steps. The first conversion coefficient in the TB may include a conversion coefficient from one of a first row and a first column in the TB having a DC spatial frequency. One of the first row and the first column may align with the one direction of the conversion skip. An inverse conversion can be performed on the dequantized conversion coefficient in the TB.
[0023] In one example, the direction is horizontal, and one of the first row and the first column is the first row of the transformation coefficients in the TB. The processing circuit can dequantize the transformation coefficients of the first row in the TB based on the smallest of the plurality of quantization steps, and dequantize the transformation coefficients of the remaining rows in the TB based on another of the plurality of quantization steps.
[0024] In one example, the direction is horizontal, and one of the first row and the first column is the first row of transformation coefficients in the TB. The processing circuit can dequantize the transformation coefficients of the first row and one or more additional rows in the TB adjacent to the first row based on the smallest of the plurality of quantization steps. The first transformation coefficients in the TB may further include the transformation coefficients of one or more additional rows in the TB. The processing circuit can dequantize the transformation coefficients of the remaining rows in the TB based on another of the plurality of quantization steps.
[0025] In one example, the direction is vertical, and one of the first row and the first column is the first column of the transformation coefficients in the TB. The processing circuit can dequantize the transformation coefficients of the first column in the TB based on the smallest of the plurality of quantization steps, and dequantize the transformation coefficients of the remaining columns in the TB based on another of the plurality of quantization steps.
[0026] In one example, the direction is vertical, and one of the first row and the first column is the first column of transformation coefficients in the TB. The processing circuit can dequantize the transformation coefficients of the first column and one or more additional columns in the TB adjacent to the first column based on the smallest of the plurality of quantization steps. The first transformation coefficients in the TB may further include the transformation coefficients of one or more additional columns in the TB. The processing circuit can dequantize the transformation coefficients of the remaining columns in the TB based on another of the plurality of quantization steps.
[0027] In one embodiment, the processing circuit can decode a flag. The flag may indicate whether the first transformation coefficient should be dequantized based on the smallest of the plurality of quantization steps. In response to the flag indicating that the first transformation coefficient should be dequantized based on the smallest of the plurality of quantization steps, the processing circuit may dequantize the first transformation coefficient in the TB based on the smallest of the plurality of quantization steps. In one example, the flag is associated with the TB, a plurality of TBs including the TB, a coding tree block, and a tile. In one example, the flag is represented by one of the video parameter set (VPS), sequence parameter set (SPS), adaptive parameter set (APS), picture parameter set (PPS), and slice header.
[0028] In one example, the height and width of the TB are 2 N and 2 M This is an example where N and M are integers greater than 1.
[0029] In one embodiment, the coding information further indicates that a quantization matrix is valid. The quantization matrix may include elements corresponding to each transformation coefficient in the TB. Elements in each row or column of the quantization matrix along one direction may have the same value. The processing circuit can obtain the plurality of quantization steps based on the initial quantization step and the quantization matrix.
[0030] In one example, the first conversion coefficient corresponds to one of the initial quantization steps, and the remaining conversion coefficient in the TB, corresponding to one of the remaining rows and (ii) remaining columns in the TB having an AC spatial frequency, corresponds to another of the initial quantization steps. One of the remaining rows and (ii) remaining columns in the TB can align in one direction. The processing circuit can obtain the minimum of the plurality of quantization steps based on one of the initial quantization steps and the value of one of the first row and first column of the quantization matrix. One of the first row and first column of the quantization matrix can align in one direction. The processing circuit can obtain the remainder of the plurality of quantization steps for one of the remaining rows and remaining columns in the TB, based on another of the initial quantization steps and the respective values of one of the remaining rows and remaining columns of the quantization matrix. One of the remaining rows and remaining columns of the quantization matrix can align in one direction.
[0031] In one example, the first transformation coefficient may further include one of (i) transformation coefficients for one or more rows in the TB adjacent to the first row, and (ii) transformation coefficients for one or more columns in the TB adjacent to the first column. One of (i) one or more rows and (ii) one or more columns in the TB may align in the one direction. The first transformation coefficient may correspond to one of the initial quantization steps, and the remaining transformation coefficients in the TB may correspond to another of the initial quantization steps. The processing circuit may obtain the minimum of the plurality of quantization steps based on one of the initial quantization steps and a value in one of the first row and first column of the quantization matrix. One of the first row and first column of the quantization matrix may align in the one direction.
[0032] Aspects of the present disclosure also provide a non-temporary computer-readable medium that, when executed by a computer for video decoding, stores instructions causing the computer to perform a method for video decoding. [Brief explanation of the drawing]
[0033] Further features, properties, and various advantages of the subject matter to be disclosed will become clearer from the detailed description below and the accompanying drawings.
[0034] [Figure 1A] This is a schematic diagram of an exemplary subset of intra-predictive modes.
[0035] [Figure 1B] This is an illustrative diagram of an example of an intra-prediction direction.
[0036] [Figure 2] This is a schematic diagram of the current block and its surrounding spatial merge candidates in one example.
[0037] [Figure 3]This is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment.
[0038] [Figure 4] This is a schematic diagram of a simplified block diagram of a communication system (400) according to one embodiment.
[0039] [Figure 5] This is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.
[0040] [Figure 6] This is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.
[0041] [Figure 7] A block diagram of an encoder according to another embodiment is shown.
[0042] [Figure 8] A block diagram of a decoder according to another embodiment is shown.
[0043] [Figure 9] Examples of linear transformation basis functions according to the embodiments of this disclosure are shown.
[0044] [Figure 10A] The embodiments of this disclosure illustrate the exemplary dependence of the availability of various transformation kernels on the transformation block size and prediction mode.
[0045] [Figure 10B] The following describes an exemplary selection of transformation types based on an intra-prediction mode of the saturation component according to an embodiment of this disclosure.
[0046] [Figure 11] An example of a general line graph transformation (LGT) characterized by self-loop weights and edge weights, according to one embodiment of this disclosure, is shown.
[0047] [Figure 12] An exemplary generalized graph-Laplacian (GGL) matrix according to one embodiment of this disclosure is shown.
[0048] [Figure 13] An exemplary mapping relationship between a quantization index and a quantization step is shown according to one embodiment of this disclosure.
[0049] [Figure 14] An exemplary mapping relationship between a quantization index and a quantization step is shown according to one embodiment of this disclosure.
[0050] [Figure 15] Exemplary transformation blocks and exemplary quantization matrices according to embodiments of this disclosure are shown.
[0051] [Figure 16] A flowchart outlining process (1600) according to one embodiment of this disclosure is shown.
[0052] [Figure 17] This is a schematic diagram of a computer system according to one embodiment. [Modes for carrying out the invention]
[0053] Figure 3 shows a simplified block diagram of a communication system (300) according to one embodiment of the present disclosure. The communication system (300) includes a plurality of terminal devices that can communicate with each other, for example, via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of Figure 3, the first pair of terminal devices (310) and (320) perform unidirectional transmission of data. For example, terminal device (310) may code video data (e.g., a stream of video pictures captured by terminal device (310)) for transmission to the other terminal device (320) via the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. Terminal device (320) may receive coded video data from the network (350), decode the coded video data to reconstruct video pictures, and display video pictures according to the reconstructed video data. One-way data transmission may be common in applications such as media supply.
[0054] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) that perform bidirectional transmission of coded video data, for example, during a video conference. In the case of bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) may code video data (e.g., a stream of video pictures captured by the terminal device) for transmission to the other terminal device of the terminal devices (330) and (340) via the network (350). One of the terminal devices (330) and (340) can receive coded video data transmitted by the other terminal device of the terminal devices (330) and (340), decode the coded video data to restore the video pictures, and display the video pictures on an accessible display device according to the restored video data.
[0055] In the example in Figure 3, terminal devices (310), (320), (330), and (340) may be represented as a server, a personal computer, and a smartphone, but the principles of this disclosure are not limited thereto. Embodiments of this disclosure find applications in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment, etc. Network (350) represents any number of networks that transmit coded video data between terminal devices (310), (320), (330), and (340), including, for example, wired and / or wireless communication networks. Communication network (350) can exchange data over circuit-switched and / or packet-switched channels. Typical networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For the purposes of this discussion, the architecture and topology of network (350) may not be important to the operation of this disclosure unless described below herein.
[0056] Figure 4 shows an example of the application of the disclosed subject matter, illustrating the arrangement of a video encoder and video decoder in a streaming environment. The disclosed subject matter is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, and the storage of compressed video on digital media such as CDs, DVDs, and memory sticks.
[0057] The streaming system may include a capture subsystem (413) which can include a video source (401), such as a digital camera, which creates a stream of uncompressed video pictures (402). In one example, the stream of video pictures (402) includes samples acquired by the digital camera. The stream of video pictures (402), shown in thick lines to emphasize the high data volume compared to encoded video data (404) (or encoded video bitstream), can be processed by an electronic device (420) which includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof to enable or implement aspects of the subject disclosed, as will be described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), shown in thin lines to emphasize the lower data volume compared to the stream of video pictures (402), can be stored in a streaming server (405) for future use. One or more streaming client subsystems, such as client subsystems (406) and (408) in Figure 4, can access a streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). Client subsystem (406) may include, for example, a video decoder (410) in an electronic device (430). The video decoder (410) decodes an incoming copy (407) of the encoded video data and creates an outgoing stream of a video picture (411) that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., video bitstreams) can be encoded according to specific video coding / compression standards. Examples of these standards include ITU-T Recommendation H.265.For example, an evolving video coding standard is informally known as Multipurpose Video Coding (VVC). The subject matter disclosed may be used in the context of VVC.
[0058] The electronic devices (420) and (430) may include other components (not shown). For example, electronic device (420) may include a video decoder (not shown), and electronic device (430) may include a video encoder (not shown).
[0059] Figure 5 shows a block diagram of a video decoder (510) according to an embodiment of the present disclosure. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., a receiving circuit). The video decoder (510) can be used in place of the video decoder (410) in the example of Figure 4.
[0060] The receiver (531) can receive one or more coded video sequences to be decoded by the video decoder (510), and in the same or different embodiments, it may receive one coded video sequence at a time, with the decoding of each coded video sequence being independent of other coded video sequences. The coded video sequences can be received from a channel (501), which may be a hardware / software link to a storage device that stores coded video data. The receiver (531) may receive coded video data together with other data, such as coded audio data and / or auxiliary data streams, which may be transferred to their respective usage entities (not shown). The receiver (531) can isolate coded video sequences from other data. To prevent network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter, "Parser (520)"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other cases, the buffer memory (515) may be located outside the video decoder (510) (not shown). In yet other cases, for example, a buffer memory (not shown) may be located outside the video decoder (510) to prevent network jitter, and further, for example, another buffer memory (515) may be located inside the video decoder (510) to handle playback timing. When the receiver (531) receives data from a storage / transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (515) may not be required or may be small. For use in best-effort packet networks such as the Internet, the buffer memory (515) may be required, and the buffer memory (515) may be relatively large, advantageously adaptive in size, and may be implemented at least in part in an operating system or similar element (not shown) outside the video decoder (510).
[0061] The video decoder (510) may include a parser (520) that reconstructs symbols (521) from the coded video sequence. These categories of symbols include information used to manage the operation of the video decoder (510) and potentially include information that controls a rendering device, such as a rendering device (512) (e.g., a display screen), which, while not an integral part of the electronic device (530), can be coupled to the electronic device (530) as shown in Figure 5. The control information for the rendering device may be in the form of auxiliary enhancement information (SEI messages) or video usability information (VUI) parameter set fragments (not shown). The parser (520) can parse / entropy decode the received coded video sequence. The coding of the coded video sequence can conform to video coding techniques or standards and may follow various principles, including variable-length coding, Huffman coding, and context-sensitive or non-context-sensitive arithmetic coding. The parser(520) can extract a set of subgroup parameters for at least one subgroup of pixels in the video decoder from the coded video sequence, based on at least one parameter corresponding to a group. Subgroups can include picture groups (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), and predictive units (PU). The parser(520) can also extract information such as transform coefficients, quantization parameter values, and motion vectors from the coded video sequence.
[0062] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from buffer memory (515) in order to create symbols (521).
[0063] The reconstruction of the symbol (521) may involve multiple different units, depending on the type of the coded video picture or part thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are involved and how they are involved can be controlled by subgroup control information parsed from the coded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the following multiple units is not shown for clarity.
[0064] In addition to the functional blocks already described, the video decoder (510) can be conceptually subdivided into several functional units, as described below. In a real implementation operating under commercial constraints, many of these units can interact closely with each other and integrate with each other at least partially. However, for the purpose of illustrating the subject matter to be disclosed, the following conceptual subdivision into functional units is appropriate.
[0065] The first unit is the scaler / inverse unit (551). The scaler / inverse unit (551) receives control information, including the transformation to be used, block size, quantization factor, and quantization scaling matrix, as well as the quantized transformation coefficients as symbols (521) from the parser (520). The scaler / inverse unit (551) can output a block containing sample values that can be input to the aggregator (555).
[0066] In some cases, the output samples of the scaler / inverse unit (551) may relate to intracoded blocks, i.e., blocks that do not use prediction information from a pre-reconstructed picture, but can use prediction information from a pre-reconstructed portion of the current picture. Such prediction information can be provided by the intrapicture prediction unit (552). In some cases, the intrapicture prediction unit (552) generates a block of the same size and shape as the block being reconstructed, using the surrounding already reconstructed information taken from the current picture buffer (558). The current picture buffer (558) buffers, for example, partially reconstructed current pictures and / or fully reconstructed current pictures. The aggregator (555) may, in some cases, add the prediction information generated by the intraprediction unit (552) to the output sample information provided by the scaler / inverse unit (551) on a sample-by-sample basis.
[0067] In other cases, the output samples of the scaler / inverse unit (551) may relate to an intercoded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (553) can access the reference picture memory (557) to retrieve samples to be used for prediction. After the retrieved samples are motion-compensated according to the symbols (521) related to the block, these samples can be added to the output of the scaler / inverse unit (551) by the aggregator (555) to generate output sample information (in this case, called residual samples or residual signals). The address in the reference picture memory (557) from which the motion-compensated prediction unit (553) retrieves prediction samples can be controlled by motion vectors available to the motion-compensated prediction unit (553) in the form of symbols (521) which may have X, Y, and reference picture components, for example. Motion compensation may also include interpolation of sample values retrieved from the reference picture memory (557) when the exact motion vectors of subsamples are in use, motion vector prediction mechanisms, etc.
[0068] The output samples of the aggregator (555) may be subjected to various loop filtering techniques in the loop filter unit (556). The video compression technique can be controlled by parameters made available to the loop filter unit (556) as symbols (521) from the parser (520) contained in the coded video sequence (also called the coded video bitstream), and may include in-loop filtering techniques that can respond to metadata obtained during decoding of earlier parts (in decoding order) of the coded picture or coded video sequence, as well as to pre-reconstructed and loop-filtered sample values.
[0069] The output of the loop filter unit (556) can be a sample stream that can be output to the rendering device (512) and can also be stored in the reference picture memory (557) for use in future interpicture prediction.
[0070] A particular coded picture, once fully reconstructed, can be used as a reference picture for future predictions. For example, when a coded picture corresponding to the current picture is fully reconstructed and that coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can become part of the reference picture memory (557) and can be reallocated before starting the reconstruction of the next coded picture.
[0071] The video decoder (510) can perform decoding operations according to a specified video compression technique of a standard such as H.265 recommended by the ITU-T. A coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. Specifically, a profile can select specific tools from all the tools available in the video compression technique or standard as tools that can be used in that profile. The complexity of the coded video sequence must also be within the limits set by the level of the video compression technique or standard for compliance to be required. In some cases, the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc., are limited by the level. Limitations set by the level may in some cases be further limited by the virtual reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0072] In one embodiment, the receiver (531) 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 (510) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may take the form of, for example, a temporal, spatial, or signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, or forward error correction code.
[0073] Figure 6 shows a block diagram of a video encoder (603) according to an embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) can be used instead of the video encoder (403) in the example of Figure 4.
[0074] The video encoder (603) can receive video samples from a video source (601) (not part of the electronic device (620) in the example in Figure 6) from which it can capture video images to be coded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0075] The video source (601) may provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream, which may have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media supply system, the video source (601) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a series of separate pictures, which are given motion when viewed sequentially. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following description will focus on samples.
[0076] According to one embodiment, the video encoder (603) can encode pictures of a source video sequence in real time or under any other time constraints required by the application and compress them into a coded video sequence (643). Implementing an appropriate coding speed is one of the functions of the controller (650). In some embodiments, the controller (650) controls and is functionally coupled to other functional units, which are described below. For clarity, the couplings are not shown. Parameters set by the controller (650) may include rate control-related parameters (picture skip, quantization, lambda values for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) may be configured to have other appropriate functions for the video encoder (603) optimized for a particular system design.
[0077] In some embodiments, the video encoder (603) is configured to operate in a coding loop. For an overly simplified explanation, in one example, the coding loop may include a source coder (630) (responsible for creating symbols, such as a symbol stream based on the input and reference pictures to be coded) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a similar manner to that created by a (remote) decoder (because any compression between the symbols and the coded video bitstream is reversible in the video compression techniques considered in the subject disclosed). The reconstructed sample stream (sample data) is input to the reference picture memory (634). Because decoding the symbol stream yields bit-accurate results regardless of the decoder's location (local or remote), the contents of the reference picture memory (634) are also bit-accurate between the local and remote encoders. In other words, the predictive part of the encoder "sees" the exact same sample values as the reference picture samples that the decoder "sees" when using the predictions during decoding. This fundamental principle of reference picture synchronization (and the drift that occurs when synchronization cannot be maintained due to, for example, channel errors) is also used in several related techniques.
[0078] The operation of the “local” decoder (633) may be similar to that of a “remote” decoder, such as the video decoder (510), which has already been described in detail in the preceding paragraph in relation to Figure 5. However, as also briefly referring to Figure 5, since symbols are available and the encoding / decoding of symbols into the coded video sequence by the entropy coder (645) and parser (520) may be reversible, the entropy decoding portion of the video decoder (510), including the buffer memory (515) and parser (520), may not be fully performed by the local decoder (633).
[0079] As can be seen, any decoder techniques other than parsing / entropy decoding present in the decoder must necessarily be present in the corresponding encoder in substantially the same functional form. For this reason, the subject matter disclosed focuses on the operation of the decoder. The description of encoder techniques can be omitted as it is the inverse of the comprehensively described decoder techniques. More detailed explanations are necessary only in specific areas and are provided below.
[0080] During operation, in some examples, the source coder (630) may perform motion-compensated predictive coding, predictively coding the input picture by referencing one or more pre-coded pictures from a video sequence designated as “reference pictures”. In this way, the coding engine (632) codes the difference between the pixel blocks of the input picture and the pixel blocks of the reference picture that may be selected as the prediction criterion for the input picture.
[0081] The local video decoder (633) can decode coded video data of a picture that may be designated as a reference picture based on symbols created by the source coder (630). The operation of the coding engine (632) may be advantageously a lossy process. When coded video data can be decoded by a video decoder (not shown in Figure 6), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (633) can reproduce the decoding process that may be performed on the reference picture by the video decoder and have the reconstructed reference picture stored in the reference picture cache (634). In this way, the video encoder (603) can locally store a copy of the reconstructed reference picture that has content (no transmission errors) in common with the reconstructed reference picture obtained by the far-end video decoder.
[0082] The predictor (635) can perform a predictive search of the coding engine (632). That is, for a new picture to be coded, the predictor (635) can search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or specific metadata that can function as appropriate prediction criteria for the new picture, such as motion vectors or block shapes of reference pictures. The predictor (635) can operate sample block / pixel block by sample block to find appropriate prediction criteria. In some cases, the input picture may have prediction criteria drawn from multiple reference pictures stored in the reference picture memory (634), as determined by the search results obtained by the predictor (635).
[0083] The controller (650) can manage the coding operations of the source coder (630), including, for example, setting parameters and subgroup parameters used to encode video data.
[0084] The outputs of all the aforementioned functional units can be entropy-coded by the entropy coder (645). The entropy coder (645) converts the symbols generated by the various functional units into coded video sequences by lossless compression of the symbols according to techniques such as Huffman coding, variable-length coding, and arithmetic coding.
[0085] The transmitter (640) can buffer the coded video sequence created by the entropy coder (645) in preparation for transmission over a communication channel (660), which may be a hardware / software link to a storage device that stores the coded video data. The transmitter (640) can merge the coded video data from the video encoder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (source not shown).
[0086] The controller (650) may manage the operation of the video encoder (603). During coding, the controller (650) may assign a specific coded picture type to each coded picture, which may affect the coding technique that may be applied to each picture. For example, a picture may often be assigned as one of the following picture types:
[0087] An intra-picture (I-picture) may be one that can be coded and decoded without using any other pictures 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. Those skilled in the art are familiar with variations of I-pictures and their respective uses and characteristics.
[0088] The prediction picture (P-picture) may be coded and decoded by intra-prediction or inter-prediction using up to one motion vector and reference index to predict the sample values of each block.
[0089] A bidirectional predictive picture (B-picture) may be coded and decoded by intra-prediction or inter-prediction using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multiple predictive picture may use three or more reference pictures and associated metadata for the reconstruction of a single block.
[0090] A source picture can generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each), and each block can be coded. Blocks can be predictively coded by referencing other (already coded) blocks determined by the coded assignments applied to each picture in the block. For example, blocks of picture I may be coded non-predictively, or they may be coded predictively by referencing already coded blocks (spatial or intra-predictive) of the same picture. Pixel blocks of picture P may be coded predictively via spatial or temporal prediction by referencing one pre-coded reference picture. Blocks of picture B may be coded predictively via spatial or temporal prediction by referencing one or two pre-coded reference pictures.
[0091] The video encoder (603) can perform coding operations according to pre-configured video coding techniques or standards, such as ITU-T recommended H.265. During operation, the video encoder (603) can perform various compression operations, including predictive coding operations that utilize the temporal and spatial redundancy of the input video sequence. Therefore, the coded video data may conform to the syntax specified by the video coding technique or standard used.
[0092] In one embodiment, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, redundant data in other forms such as redundant pictures and slices, SEI messages, VUI parameter set fragments, and the like.
[0093] Video can be captured as multiple source pictures (video pictures) in a time series. Intra-picture prediction (often abbreviated as "intra-prediction") utilizes spatial correlations within a given picture, while inter-picture prediction utilizes (temporal or other) correlations between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. If the blocks in the current picture are analogous to reference blocks in a pre-coded, yet-buffered, reference picture in the video, then the blocks in the current picture can be coded by a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0094] In some embodiments, a dual prediction technique can be used in interpicture prediction. The dual prediction technique uses two reference pictures, such as a first reference picture and a second reference picture, which are decoded earlier than the current picture in the video (but can be past and future in display order, respectively). Blocks in the current picture can be coded by a first motion vector pointing to a first reference block in the first reference picture, and a second motion vector pointing to a second reference block in the second reference picture. Blocks can be predicted by a combination of the first and second reference blocks.
[0095] Furthermore, applying merge mode techniques to interpicture prediction can improve coding efficiency.
[0096] According to some embodiments of this disclosure, predictions such as interpicture prediction and intrapicture prediction are performed in block units. For example, according to the HEVC standard, pictures within a series of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU contains three coding tree blocks (CTBs), which are one luminance CTB and two saturation CTBs. Each CTU can be recursively quadtree-divided into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, four 32x32 pixel CUs, or sixteen 16x16 pixel CUs. In one example, each CU is analyzed to determine the prediction type of the CU, such as inter-prediction type or intra-prediction type. The CU is divided into one or more prediction units (PUs) depending on its temporal and / or spatial predictability. Typically, each PU includes one luminance prediction block (PB) and two saturation PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed in units of prediction blocks. Using a luminance prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values (e.g., luminance values) such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0097] Figure 7 shows a diagram of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) is configured to receive a processing block (e.g., a prediction block) of sample values in the current video picture within a series of video pictures, and to encode the processing block into a coded picture which is part of a coded video sequence. In one example, the video encoder (703) is used instead of the video encoder (403) in the example of Figure 4.
[0098] In the HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a prediction block with 8x8 samples. The video encoder (703) determines whether to best code the processing block in intra-mode, inter-mode, or bi-prediction mode, for example, using rate-distortion optimization. If the processing block is to be coded in intra-mode, the video encoder (703) can encode the processing block into a coded picture using the intra-prediction technique. If the processing block is to be coded in inter-mode or bi-prediction mode, the video encoder (703) can encode the processing block into a coded picture using the inter-prediction or bi-prediction technique, respectively. In certain video coding techniques, the merge mode may be an inter-picture prediction submode that derives motion vectors from one or more motion vector predictors without the convenience of coded motion vector components other than predictors. In certain other video coding techniques, there may be motion vector components applicable to the target block. In one example, the video encoder (703) includes other components, such as a mode determination module (not shown) for determining the mode of the processing block.
[0099] In the example shown in Figure 7, the video encoder (703) includes an interencoder (730), an intraencoder (722), a residual calculation unit (723), a switch (726), a residual encoder (724), a control unit (721), and an entropy encoder (725), all of which are coupled together as shown in Figure 7.
[0100] The interencoder (730) is configured to receive a sample of the current block (e.g., a processing block), compare the block with one or more reference blocks in the reference picture (e.g., blocks in the previous and subsequent pictures), generate interprediction information (e.g., a description of redundant information by the interencoding technique, motion vectors, merge mode information), and calculate an interprediction result (e.g., a predicted block) using any appropriate technique based on the interprediction information. In some examples, the reference picture is a decoded reference picture decoded based on encoded video information.
[0101] The intra encoder (722) is configured to receive a sample of the current block (e.g., a processing block), and optionally compare the block with a block already coded in the same picture to generate quantized post-conversion coefficients, and optionally also generate intra-prediction information (e.g., intra-prediction direction information using one or more intra-encoding techniques). In one example, the intra encoder (722) also calculates an intra-prediction result (e.g., a predicted block) based on the intra-prediction information and a reference block in the same picture.
[0102] The control unit (721) is configured to determine overall control data and control other components of the video encoder (703) based on the overall control data. In one example, the control unit (721) determines the mode of a block and provides control signals to the switch (726) based on the mode. For example, if the mode is intra-mode, the control unit (721) controls the switch (726) to select intra-mode results for use by the residual calculation unit (723), and controls the entropy encoder (725) to select intra-prediction information and include it in the bitstream. If the mode is inter-mode, the control unit (721) controls the switch (726) to select inter-prediction results for use by the residual calculation unit (723), and controls the entropy encoder (725) to select inter-prediction information and include it in the bitstream.
[0103] The residual calculation unit (723) is configured to calculate the difference (residual data) between the received block and the prediction result selected from the intra-encoder (722) or inter-encoder (730). The residual encoder (724) operates based on the residual data and is configured to encode the residual data and generate conversion coefficients. In one example, the residual encoder (724) is configured to convert the residual data from the spatial domain to the frequency domain and generate conversion coefficients. The conversion coefficients are then subjected to quantization to obtain quantized conversion coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse conversion and generate decoded residual data. The decoded residual data can be appropriately used by the intra-encoder (722) and inter-encoder (730). For example, an interencoder (730) can generate a decode block based on decode residual data and interprediction information, and an intraencoder (722) can generate a decode block based on decode residual data and intraprediction information. In some examples, the decode block is appropriately processed to generate a decode picture, which is buffered in a memory circuit (not shown) and can be used as a reference picture.
[0104] The entropy encoder (725) is configured to format the bitstream to include an encoded block. The entropy encoder (725) is configured to include various information in the bitstream according to an appropriate standard such as the HEVC standard. For example, the entropy encoder (725) is configured to include overall control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information in the bitstream. Note that, according to the subject matter disclosed, there is no residual information when coding a block in inter-mode or bi-prediction mode merge submode.
[0105] Figure 8 shows a diagram of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive a coded picture which is part of a coded video sequence, decode the coded picture, and generate a reconstructed picture. In one example, the video decoder (810) is used instead of the video decoder (410) in the example of Figure 4.
[0106] In the example shown in Figure 8, the video decoder (810) includes an entropy decoder (871), an interdecoder (880), a residual decoder (873), a reconstruction module (874), and an intradecoder (872) coupled together as shown in Figure 8.
[0107] The entropy decoder (871) can be configured to reconstruct specific symbols from the coded picture that represent the syntax elements constituting the coded picture. Such symbols may include, for example, the mode in which the block is coded (e.g., intra-mode, inter-mode, bi-prediction mode, the latter two merge sub-modes, or other sub-modes), prediction information (e.g., intra-prediction information or inter-prediction information) that can identify specific samples or metadata used for prediction by the intra-decoder (872) or inter-decoder (880), respectively, and residual information in the form of quantized transformation coefficients. For example, if the prediction mode is inter or bi-prediction mode, the inter-prediction information is provided to the inter-decoder (880). If the prediction type is intra-prediction type, the intra-prediction information is provided to the intra-decoder (872). The residual information can be inversely quantized and provided to the residual decoder (873).
[0108] The interdecoder (880) is configured to receive interprediction information and generate interprediction results based on the interprediction information.
[0109] The intra decoder (872) is configured to receive intra prediction information and generate prediction results based on the intra prediction information.
[0110] The residual decoder (873) is configured to perform inverse quantization to extract inversely quantized conversion coefficients, and to process these inversely quantized conversion coefficients to convert the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (such as quantizer parameters (QP)), which may be provided by the entropy decoder (871) (the data path is not shown as it may only contain low-volume control information).
[0111] The reconstruction module (874) is configured to combine the residual output by the residual decoder (873) and the prediction results (which may be output by the inter or intra prediction module) in the spatial domain to form a reconstruction block that may be part of a reconstruction picture that may be part of a reconstruction video. In addition, other appropriate operations such as deblocking operations can be performed to improve visual quality.
[0112] The video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) can be implemented using any suitable technique. In one embodiment, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) can be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (603) and the video decoders (410), (510), and (810) can be implemented using one or more processors that execute software instructions.
[0113] Aspects of this disclosure include quantizers for one-dimensional (1D) conversion skipping. This disclosure relates to a set of video coding techniques designed for efficient compression of video data, including the design of quantizers for 1D conversion skipping, such as those used in AOMedia Video 2 (AV2). For example, AV2 and others may utilize 8-bit and / or 10-bit conversion cores.
[0114] An embodiment of primary conversion, such as that used in AOMedia Video 1 (AV1), is described below. To support extended coding block partitioning, AV1 and others can use multiple conversion sizes (e.g., ranging from 4 to 64 points in each dimension) and conversion shapes (e.g., squares, rectangles with height-to-width ratios of 2:1, 1:2, 4:1, or 1:4).
[0115] In the 2D transformation process, a hybrid transformation kernel can be used that can include different 1D transformations for each dimension of the coded residual block. The linear 1D transformations can include a) DCT-2 for 4, 8, 16, 32, and 64 points, b) asymmetric DST (ADST) for 4, 8, and 16 points (e.g., DST-4, DST-7) and their corresponding inverted versions, and / or c) identity transformation (IDX) for 4, 8, 16, and 32 points. Figure 9 shows an example of linear transformation basis functions according to the embodiments of this disclosure. The linear transformation basis functions in the example in Figure 9 include basis functions for DCT-2 and asymmetric DST (DST-4 and DST-7) with N-point inputs. The linear transformation basis functions shown in Figure 9 can be used in AV1.
[0116] The availability of hybrid transformation kernels may depend on the transformation block size and prediction mode. Figure 10A illustrates the exemplary dependency of various transformation kernels (e.g., the transformation types shown in the first and second columns) on the transformation block size (e.g., the size shown in the third column) and prediction mode (e.g., intra-prediction and inter-prediction shown in the third column). Exemplary hybrid transformation kernels and their availability based on prediction mode and transformation block size can be used in AV1. Referring to Figure 10A, the symbols "→" and "↓" represent the horizontal dimension (also called the horizontal direction) and the vertical dimension (also called the vertical direction), respectively. The symbols "✓" and "×" indicate the availability of the transformation kernel for the corresponding block size and prediction mode. For example, the symbol "✓" indicates that the transformation kernel is available, and the symbol "×" indicates that the transformation kernel is unavailable.
[0117] In one example, the transformation type (1010) is represented by ADST_DCT, as shown in the first column of Figure 10A. The transformation type (1010) includes vertical ADST and horizontal DCT, as shown in the second column of Figure 10A. According to the third column of Figure 10A, the transformation type (1010) is available for intra-prediction and inter-prediction when the block size is 16 × 16 or less (e.g., 16 × 16 samples, 16 × 16 luminance samples).
[0118] In one example, the transformation type (1020) is represented by V_ADST, as shown in the first column of Figure 10A. The transformation type (1020) includes ADST vertically and IDTX (i.e., the identity matrix) horizontally, as shown in the second column of Figure 10A. Therefore, the transformation type (1020) (e.g., V_ADST) is performed vertically and not horizontally. According to the third column of Figure 10A, the transformation type (1020) is not available for intra-prediction, regardless of the block size. The transformation type (1020) is available for inter-prediction when the block size is smaller than 16×16 (e.g., 16×16 samples, 16×16 luminance samples).
[0119] In one example, Figure 10A is for the luminance component. For the saturation component, the selection of the conversion type (or conversion kernel) can be performed implicitly. In one example, for intra-predicted residuals, the conversion type can be selected according to the intra-prediction mode, as shown in Figure 10B. For inter-predicted residuals, the conversion type can be selected according to the selection of the conversion type for the co-positioned luminance block. Therefore, in one example, the conversion type for the saturation component is not signaled in the bitstream.
[0120] Line graph transformations (LGTs) can be used with transformations such as linear transformations like AV2. For example, LGTs can include various DCTs and discrete sine transforms (DSTs), as described below. LGTs can include 32-point and 64-point one-dimensional (1D) DSTs.
[0121] A graph is a general mathematical structure containing a set of vertices and edges that can be used to model affinity relationships between objects of interest. A weighted graph, where a set of weights is assigned to the edges and optionally to the vertices, can provide a sparse representation for robust modeling of signals / data. LGTs can improve coding efficiency by providing better adaptation to diverse block statistics. Separable LGTs can be designed and optimized by learning a line graph from data to model the row and column statistics underlying the block residual signals, and LGTs can be derived using the relevant generalized graph-Laplacian (GGL) matrix.
[0122] Figure 11 shows the weights of a self-loop (e.g., v) according to one embodiment of the present disclosure. c1 , v c2 ) and edge weight w c Here is an example of a general LGT characterized by the following: For a weighted graph G(W, V), the GGL matrix can be defined as follows: L c =D-W+V (Formula 1) Here, W is an adjacency matrix including non - negative edge weights w c and D is a diagonal degree matrix, and V can be a diagonal matrix indicating the weights v c1 and v c2 Figure 12 shows an example of the matrix L c .
[0123] LGT can be derived by the eigenvalue decomposition of the GGL matrix L c as follows. L c = UΦU T (Equation 2) Here, the columns of the orthogonal matrix U are the basis vectors of LGT, and Φ can be a diagonal eigenvalue matrix.
[0124] In various examples, certain DCTs and DSTs (e.g., DCT - 2, DCT - 8, and DST - 7) are subsets of a series of LGTs derived from a specific form of GGL. DCT - 2 can be derived by setting v c1 to 0 (e.g., v c1 = 0). DST - 7 can be derived by setting v c1 to w c (e.g., v c1 = w c ). DCT - 8 can be derived by setting v c2 to w c (e.g., v c2 = w c ). DST - 4 can be derived by setting v c1 to 2w c (e.g., v c1 = 2w c ). DCT - 4 can be derived by setting v c2 to 2w c (e.g., v c2 = 2w c ).
[0125] In some examples, such as in AV2, LGT can be implemented as matrix multiplication. The 4 - point (4p) LGT core has v c1 set to 2 wcSince it can be derived by setting it to this, the 4p LGT core is DST-4. The 8-point (8p) LGT core is v c1 1.5w c This can be derived by setting it to v. For example, LGT cores such as a 16-point (16p) LGT core, a 32-point (32p) LGT core, or a 64-point (64p) LGT core are v c1 w c ni, v c2 This can be derived by setting it to 0, and the LGT core can be DST-7.
[0126] According to aspects of this disclosure, V_DCT refers to a 1D transformation scheme that applies DCT only in the vertical direction, H_DCT refers to a 1D transformation scheme that applies DCT only in the horizontal direction, V_ADST refers to a 1D transformation scheme that applies ADST or any appropriate non-DCT transformation only in the vertical direction, and H_ADST refers to a 1D transformation scheme that applies ADST or any appropriate non-DCT transformation only in the horizontal direction. Furthermore, V_LGT refers to a 1D transformation scheme that applies LGT only in the vertical direction, and H_LGT refers to a 1D transformation scheme that applies LGT only in the horizontal direction.
[0127] In various embodiments, such as AV1, the quantization of the conversion coefficients may apply different quantization step sizes (e.g., Qstep) to the DC and AC conversion coefficients, and / or different Qsteps to the luminance and chrominance conversion coefficients. In one example, to specify the quantization step size (e.g., Qstep), a base quantization syntax element (e.g., an index such as base_q_idx) is first signaled in the frame header. The base quantization syntax element (e.g., base_q_idx) may be an 8-bit fixed-length code specifying the Qstep of the luminance AC coefficient. The valid range of the base quantization syntax element (e.g., base_q_idx) may be [0, 255]. After signaling the base quantization syntax element (e.g., base_q_idx), the delta value of the luminance DC coefficient associated with the base quantization syntax element (e.g., base_q_idx) may be further signaled. The delta value of the luminance DC coefficient may be represented as DeltaQYDc.
[0128] If there are two or more color planes (also called color components), a flag (e.g., the diff_uv_delta flag) can be signaled to indicate whether different quantization index values apply to the color components (e.g., Cb and Cr color components). If the flag (e.g., the diff_uv_delta flag) is signaled as 0, different color components can have the same quantization index value. This means that only the delta values (e.g., shown as DeltaQUDc) associated with the base quantization syntax element (e.g., base_q_idx) of the saturation DC coefficient and the delta values (e.g., shown as DeltaQUAc) associated with the base quantization syntax element (e.g., base_q_idx) of the AC coefficient are signaled. Otherwise, if a flag (e.g., the diff_uv_delta flag) is signaled to be non-zero, then delta values are signaled, for example, that include the delta values of the DC coefficients of the Cb saturation component (e.g., denoted as DeltaQUDc), the delta values of the DC coefficients of the Cr saturation component (e.g., denoted as DeltaQVDc), the delta values of the AC coefficients of the Cb saturation component (e.g., denoted as DeltaQUAc), and the delta values of the AC coefficients of the Cr saturation component (e.g., denoted as DeltaQVAc), all related to a base quantization syntax element (e.g., base_q_idx).
[0129] One or more of the decoded delta values (e.g., DeltaQYDc, DeltaQUAc, DeltaQUDc, DeltaQVAc, and DeltaQVDc) can be added to a base quantization syntax element (e.g., base_q_idx) to derive quantization indices (e.g., Q_indices). These quantization indices (e.g., Q_indices) can then be mapped to Qsteps according to the mapping relationship between the quantization indices (e.g., Q_indices) and Qsteps. In one example, the mapping relationship is represented by a table (e.g., a lookup table), a graph, etc. The mapping relationship for DC coefficients may differ from that for AC coefficients.
[0130] In general, the mapping from a quantization index to a Qstep can be performed for the internal bit depth of N1 and the quantization index of N2, where N1 and N2 are positive integers. Therefore, the mapping relationship can be specified by a lookup table (for example, Dc_Qlookup[N1][N2] for DC coefficients and Ac_Qlookup[N1][N2] for AC coefficients).
[0131] Figure 13 shows an exemplary mapping relationship between a quantization index (e.g., Q_index) and a Qstep for a DC coefficient, according to one embodiment of the present disclosure. In the example shown in Figure 13, N1 is 3 and N2 is 256, so the mapping from the quantization index to the Qstep is performed for three internal bit depths (e.g., 8 bits, 10 bits, 12 bits) and 256 quantization indices. Thus, the mapping relationship can be specified by one or more lookup tables (e.g., Dc_Qlookup[3]
[0256] ). In one example, the lookup table Dc_Qlookup[3]
[0256] includes three tables, each containing 256 entries or values.
[0132] Figure 14 shows an exemplary mapping relationship between a quantization index (e.g., Q_index) and a Qstep for an AC coefficient, according to one embodiment of the present disclosure. In the example shown in Figure 14, N1 is 3 and N2 is 256, so the mapping from the quantization index to the Qstep is performed for three internal bit depths (e.g., 8 bits, 10 bits, 12 bits) and 256 quantization indices. Thus, the mapping relationship can be specified by one or more lookup tables (e.g., Ac_Qlookup[3]
[0256] ). In one example, the lookup table Ac_Qlookup[3]
[0256] includes three tables, each containing 256 entries or values.
[0133] One or more quantization matrices (represented as QMatrix, such as wt_matrix_ref and iwt_matrix_ref) can be used for adaptive quantization of different transformation coefficient bands. In one example, the transformation coefficient band includes transformation coefficients within a spatial frequency range. Depending on the size of the transformation block (TB), the quantization matrix can specify values for the scale factor applied to different transformation coefficients. Thus, the final Qstep can be defined based on the initial Qstep and the scale factor. In one example, the final Qstep (Qstep f ) is the first Qstep (Qstep i Based on the scale factor, it is defined as follows: Qstep f =( Qstep i *Scale factor + 16) / 32 (Equation 3)
[0134] Figure 15 shows an example of a quantization matrix (QMatrix)(1500) according to one embodiment of the present disclosure. The quantization matrix (QMatrix)(1500) includes several scale factors c11-c14, c21-c24, c31-c34 and c41-c44 that can be used to determine the final Qstep.
[0135] One or more quantization matrices can be specified for the transformation coefficients (e.g., Y, U, and V transformation coefficients). Referring to Figure 15, in one example, QMatrix(1500) is specified for the transformation coefficients in TB(1501) (e.g., t11-t14, t21-t24, t31-t34, and t41-t44). The dimensions of QMatrix(1500), such as width and height, can be the same as the dimensions of TB(1501). One of the one or more quantization matrices can be represented by a Qmatrix index. In one embodiment, up to 15 quantization matrices (QMatrices) can be specified for the Y, U, and V transformation coefficients. The Qmatrix index (e.g., an integer in the range of 0-14) can indicate the flatness of the scale factor in one of the 15 quantization matrices (QMatrices).
[0136] The quantization process described with reference to Figures 13 and 14 can be appropriately adapted. In one embodiment, such as AV2, the individual lookup tables shown in Figures 13 and 14 (e.g., six lookup tables Dc_Qlookup[3]
[0256] and Ac_Qlookup[3]
[0256] ) can be replaced with an integrated lookup table. For example, multiple lookup tables used in the AV1 quantization process can be integrated into a single lookup table. Thus, the mapping relationship between Qindex and Qstep (e.g., mapping from Qindex to Qstep) can be defined using an exponential function instead of a mapping table (or lookup table). Furthermore, Qstep values defined for 10-bit and / or 12-bit video can be derived from a lookup table defined for 8-bit video.
[0137] In one embodiment, AV1, etc., the conversion coefficients in a block (e.g., TB) are quantized and / or dequantized using separate Qstep values for the DC conversion coefficients (e.g., the first conversion coefficient in the block, such as t11 in TB(1501)) and the AC conversion coefficients (e.g., the remaining conversion coefficients in the block, such as t12~t14, t21~t24, t31~t34, t41~t44 in TB(1501)). The Qstep used for the DC conversion coefficients in a block is the DC Qstep (Qstep DC It can also be called AC Qstep(Qstep), and the Qstep used as the AC conversion coefficient in a block is AC Qstep(Qstep AC It may also be called DC Qstep(Qstep). For example, DC Qstep(Qstep) DC ) is AC Qstep (Qstep AC It is smaller than ).
[0138] In some examples, if valid, a scaling factor (e.g., c11 in Figure 15) can be applied to each transformation coefficient (e.g., t11 in Figure 15) as described by the quantization matrix (QMatrix such as wt_matrix_ref and iwt_matrix_ref). If the transformation type used for a block (e.g., coding block, transformation block TB) involves transformation skipping in the horizontal and / or vertical dimensions (e.g., identity transformation), the QMatrix (if valid) can be chosen to be a flat matrix (e.g., unweighted). In one example, if the transformation type used for a block involves transformation skipping in both the horizontal and vertical dimensions, the transformation is not applied to the block because the transformation matrix is the identity matrix (or IDTX).
[0139] In one example, the transformation type used in a block includes transformation skipping in the horizontal dimension but not in the vertical dimension, so the transformation type is performed vertically and not horizontally. Transformation types can include V_DCT, V_ADST, V_FLIPADST, etc. The above scheme may have the following problem: Referring to Figure 15, in one example, the transformation coefficients (e.g., t11~t14) of the first row (e.g., row (1511)) in a block using transformation types such as V_DCT, V_ADST, V_FLIPADST are DC coefficients, and the transformation coefficients of subsequent rows in the block (e.g., rows (1512)~(1514)) are AC coefficients where the sinusoidal frequency increases row by row. Therefore, since the entire first row (e.g., row (1511)) in the block contains DC coefficients, only the first coefficient (e.g., t11) in the block contains DC Qstep(Qstep DC Using ), the subsequent coefficients in the block (e.g., t12~t14, t21~t24, t31~t34 and t41~t44) are calculated using AC Qstep(Qstep AC Using ) may be suboptimal. Therefore, it is important to perform more accurate quantization / dequantization for the first row. Thus, a smaller Qstep (e.g., Qstep DCIt is advantageous to quantize or dequantize the first row using ). Furthermore, QMatrix (if valid) is flat across the entire range, for example, the elements of QMatrix have the same value.
[0140] In one example, the transformation type used for a block includes vertical dimension transformation skipping but does not include horizontal dimension transformation skipping, so the transformation type is performed horizontally and not vertically. Transformation types can include H_DCT, H_ADST, H_FLIPADST, etc. The above scheme may have the following problem: Referring to Figure 15, in one example, in a block (e.g., TB(1501)) using transformation types such as H_DCT, H_ADST, H_FLIPADST, the transformation coefficients (e.g., t11, t21, t31, and t41) of the first column (e.g., column (1521)) are DC coefficients, and the transformation coefficients of subsequent columns in the block (e.g., columns (1522)~(1524)) are AC coefficients where the sinusoidal frequency increases with each column. Referring to Figure 15, column (1522) contains the conversion coefficients t12, t22, t32, and t42, column (1523) contains the conversion coefficients t13, t23, t33, and t43, and column (1524) contains the conversion coefficients t14, t24, t34, and t44. Therefore, since the DC coefficient is contained in the entire first column in the block (e.g., column (1521)), only the first coefficient in the block (e.g., t11) contains the DC Qstep(Qstep DC Using ), the subsequent coefficients in the block (e.g., t12~t14, t21~t24, t31~t34 and t41~t44) are calculated using AC Qstep(Qstep AC Using ) may be suboptimal. Therefore, it is important to perform more accurate quantization / inverse quantization for the first column. Thus, a smaller Qstep (e.g., Qstep DC It is advantageous to quantize or dequantize the first column in ). Furthermore, the QMatrix (if valid) is flat over the entire range, for example, the elements of the QMatrix have the same value.
[0141] A 1D transformation skip can refer to a transformation skip in one dimension (e.g., the horizontal or vertical dimension), so a transformation using a 1D transformation skip is performed in one dimension of the block. A 1D transformation can refer to a transformation that applies to only one dimension of the block, and the transformation includes a 1D transformation skip. A 1D transformation can refer to a 1D horizontal transformation or a 1D vertical transformation. A 1D horizontal transformation can refer to a transformation that applies to only the horizontal dimension of the block, and the transformation includes a 1D transformation skip in the vertical dimension. A 1D vertical transformation can refer to a transformation that applies to only the vertical dimension of the block, and the transformation includes a 1D transformation skip in the horizontal dimension.
[0142] A 2D transformation skip can refer to a transformation skip in two dimensions (e.g., horizontal and vertical dimensions), so the block has no transformation and the transformation matrix is the identity matrix. In one example, for a block using a 2D transformation skip, only one quantization step (e.g., Qstep) is used on the block. If there is no transformation skip, transformations can be performed in both dimensions of the block.
[0143] Referring to Figure 15, in one example, TB(1501) is converted using a 2D conversion without conversion skips. Thus, the first conversion coefficient t11 is a DC conversion coefficient, and therefore the DC step (Qstep) is used. DC ) is quantized or inversely quantized, and the remaining transformation coefficients in TB(1501) or AC transformation coefficients are the AC step (Qstep AC It is quantized or dequantized in a DC step (Qstep). DC ) is AC step (Q step AC Because it is smaller than the AC conversion coefficient, the DC coefficient is quantized and / or dequantized more precisely than the AC conversion coefficient.
[0144] According to aspects of this disclosure, as described above, different quantization and / or inverse quantization processes can be used for blocks transformed with 1D transformation skips (e.g., TB, CB, PB, luminance blocks, chrominance blocks, luminance TB, chrominance TB, etc.) compared to quantization and / or inverse quantization processes for blocks transformed with or without 2D transformation skips. Referring again to Figure 15, in one example, TB(1501) is transformed with 1D transformation skips. For example, TB(1501) is transformed with 1D transformation skips in the vertical or horizontal dimension. Thus, in addition to the first transformation coefficient (e.g., t11), the remaining transformation coefficients in the first column (1521) or first row (1511) may be DC transformation coefficients. In general, DC transformation coefficients may be more important than AC transformation coefficients and can therefore be quantized or inversely quantized more accurately (e.g., using smaller quantization steps). Thus, only the first transformation coefficient (e.g., t11) can be quantized in DC steps (Qstep). DC Instead of quantizing or inversely quantizing at the same DC step (Qstep), the DC conversion coefficients in the first column (1521) or first row (1511) are used at the same DC step (Qstep). DC It can be quantized and / or dequantized using ).
[0145] According to aspects of this disclosure, coding information for a block (e.g., TB) can be decoded from a coded video bitstream. In one example, the block is a luminance block. In another example, the block is a saturation block. The coding information can indicate a one-way conversion skip (1D conversion skip) of the block (also called a skip direction). The conversion coefficients in the block can be dequantized based on a plurality of quantization steps. In one example, the plurality of quantization steps is a DC step (Qstep). DC ) and AC step (Q step) ACThis includes two quantization steps, such as ). However, in other examples, three or more quantization steps can be used. The first transformation coefficient in the block can be inversely quantized based on the smallest of multiple quantization steps. The first transformation coefficient in the block can include one of the transformation coefficients of the first row and first column in the block having a DC spatial frequency. One of the first row and first column can be aligned in one direction of transformation skipping. Furthermore, an inverse transformation can be performed on the inversely quantized transformation coefficient in the block.
[0146] One direction may be horizontal or vertical. If one direction is horizontal, the first conversion coefficient in the block includes the conversion coefficient of the first row in the block having a DC spatial frequency, where the conversion coefficient of the first row is the DC conversion coefficient.
[0147] When one direction is perpendicular, the first conversion coefficient in the block includes the conversion coefficient of the first column in the block having a DC spatial frequency, where the conversion coefficient of the first column is the DC conversion coefficient.
[0148] In one example, multiple quantization steps are the DC step (Qstep). DC ) and AC step (Q step) AC ) includes the smallest of the multiple quantization steps, which is the DC step (Qstep). DC )
[0149] For example, the height (or block height) and width (or block width) of the block are each 2. N and 2 M This is a sample, and N and M can be integers greater than 1.
[0150] In one embodiment, one direction is the horizontal direction. The transformation type of the block is a 1D vertical transformation. One of the first row and first column is the first row of transformation coefficients in the block. The transformation coefficients of the first row in the block are the smallest of a plurality of quantization steps (e.g., DC step (Q step)). DC The transformation coefficients of the remaining rows in the block can be dequantized based on one of several quantization steps (e.g., AC step (Q step)). AC It can be dequantized based on )).
[0151] According to aspects of this disclosure, if the block transformation type is a 1D vertical transformation such as V_LGT, V_DCT, V_ADST, V_FLIPADST, then the DC step (Qstep) DC ) can be applied to quantize or dequantize the transformation coefficients (or DC transformation coefficients) of the first row in the block. AC step (Qstep) AC ) can be applied to quantize or inversely quantize the transformation coefficients (or AC transformation coefficients) of the remaining rows in the block. Referring to Figure 15, TB(1501) is obtained by the 1D vertical transformation. Thus, the transformation coefficients t11~t14 of the first row (1511) are DC transformation coefficients, and the transformation coefficients of the remaining rows (1512)~(1514) are AC transformation coefficients. This gives us the DC step (Qstep). DC ) can be applied to the conversion coefficients t11~t14 of the first row (1511) in TB(1501). AC step (Qstep AC ) can be applied to the conversion coefficients t21~t24, t31~t34 and t41~t44 of the remaining rows (1512)~(1514) in TB(1501).
[0152] In one embodiment, one direction is the horizontal direction. One of the first row and first column is the first row of transformation coefficients in the block. The transformation type of the block is a 1D vertical transformation. The transformation coefficients between the first row and one or more additional rows in the block adjacent to the first row are the smallest of several quantization steps (e.g., DC step (Q step)). DC It can be dequantized based on ). The first transformation coefficient in the block may further include the transformation coefficients of one or more additional rows in the block. The transformation coefficients of the remaining rows in the block may be one of several quantization steps (e.g., AC step (Q step) AC It can be dequantized based on )).
[0153] In one embodiment, the transformation type of the block is a 1D vertical transformation such as V_LGT, V_DCT, V_ADST, V_FLIPADST. In addition to the DC transformation coefficients of the first row of the block, the AC transformation coefficients of one or more rows adjacent to the first row are also important and are quantized and / or dequantized in a smaller quantization step than the remaining AC transformation coefficients of the remaining rows in the block. This results in a DC step (Qstep). DC ) can be applied to the conversion coefficient between the first row in a block and one or more rows adjacent to the first row. AC step (Qstep AC ) can be applied to the remaining AC conversion coefficients of the remaining rows in the block. Referring to Figure 15, TB(1501) is obtained by the 1D vertical conversion. Thus, the conversion coefficients t11~t14 of the first row (1511) are DC conversion coefficients, and the conversion coefficients of the remaining rows (1512)~(1514) are AC conversion coefficients. In one example, one or more rows adjacent to the first row include row (1512). This results in a DC step (Qstep). DC ) can be applied to the conversion coefficients t11~t14 of the first row (1511) and the conversion coefficients t21~t24 of row (1512). AC step (Qstep AC ) can be applied to the remaining AC conversion coefficients t31~t34 and t41~t44 of the remaining rows (1513)~(1514) in TB(1501).
[0154] In one embodiment, one direction is the vertical direction. The transformation type of the block is a 1D horizontal transformation. One of the first rows and the first column is the first column of transformation coefficients in the block. The transformation coefficients of the first column in the block are the smallest of a plurality of quantization steps (e.g., DC step (Q step)). DC The remaining columns in the block can be dequantized based on the AC step (Qstep). AC It can be dequantized based on )).
[0155] According to aspects of this disclosure, if the block transformation type is a 1D horizontal transformation such as H_LGT, H_DCT, H_ADST, H_FLIPADST, then the DC step (Qstep) DC ) can be applied to the conversion coefficient (or DC conversion coefficient) of the first column in the block. AC step (Qstep AC ), can be applied to the conversion coefficients (or AC conversion coefficients) of the remaining columns in the block. Referring to Figure 15, TB(1501) is obtained by 1D horizontal conversion. Thus, the conversion coefficients t11, t21, t31 and t41 of the first column (1521) are DC conversion coefficients, and the conversion coefficients of the remaining columns (1522) to (1524) are AC conversion coefficients. This gives us the DC step (Qstep). DC ) can be applied to the transformation coefficients t11, t21, t31 and t41 of the first column (1521) in TB(1501). AC step (Qstep AC ) can be applied to the transformation coefficients t12~t14, t22~t24, t32~t34 and t42~t44 of the remaining columns (1522)~(1524) in TB(1501).
[0156] In one embodiment, one direction is the vertical direction. One of the first rows and the first column is the first column of transformation coefficients in the block. The transformation type of the block is a 1D horizontal transformation. The transformation coefficients in the block between the first column and one or more additional columns adjacent to the first column are the smallest of several quantization steps (e.g., DC step (Q step)). DC It can be dequantized based on ). The first transformation coefficient in the block may further include the transformation coefficients of one or more additional columns in the block. The transformation coefficients of the remaining columns in the block may be one of several quantization steps (e.g., AC step (Q step) AC It can be dequantized based on )).
[0157] In one embodiment, the transformation type of the block is a 1D horizontal transformation such as H_LGT, H_DCT, H_ADST, H_FLIPADST. In addition to the DC transformation coefficients of the first column of the block, the AC transformation coefficients of one or more columns adjacent to the first column are also important and are quantized and / or dequantized in a smaller quantization step than the remaining AC transformation coefficients of the remaining columns in the block. This results in a DC step (Qstep). DC ) can be applied to the conversion coefficients of the first column in the block and one or more columns adjacent to the first column. AC step (Qstep AC ) can be applied to the remaining AC conversion coefficients of the remaining columns in the block. Referring to Figure 15, TB(1501) is obtained by 1D vertical conversion. Thus, the conversion coefficients t11, t21, t31 and t41 of the first column (1521) are DC conversion coefficients, and the conversion coefficients of the remaining columns (1522)~(1524) are AC conversion coefficients. In one example, one or more columns adjacent to the first column include column (1522). This results in a DC step (Qstep). DC ) can be applied to the transformation coefficients t11, t21, t31 and t41 of the first column (1521), and the transformation coefficients t12, t22, t32 and t42 of column (1522). AC step (Qstep AC) can be applied to the remaining AC conversion coefficients t13, t14, t23, t24, t33, t34, t43 and t44 of the remaining columns (1523)~(1524) in TB(1501).
[0158] According to aspects of this disclosure, signaling information, such as a flag (or control flag) indicating whether the first transformation coefficient should be dequantized based on the smallest of a plurality of quantization steps, can be dequantized from the coding information. If the flag indicates that the first transformation coefficient should be dequantized based on the smallest of a plurality of quantization steps, then the first transformation coefficient can be dequantized based on the smallest of a plurality of quantization steps. In one example, the remaining transformation coefficients in the block are dequantized based on another of the plurality of quantization steps.
[0159] The flag should dequantize the first transformation coefficient based on the smallest of several quantization steps. do not have If we show that one of the first transformation coefficients in the block (for example, the top-left transformation coefficient in the block) can be dequantized based on the smallest of the multiple quantization steps, and the remaining transformation coefficients in the block can be dequantized based on another of the multiple quantization steps.
[0160] Flags can be associated with different levels, such as a block (e.g., a TB), multiple blocks containing a block (e.g., a TB), a coding tree block (CTB), and one of the tiles. For example, a flag might be at the block level. For example, a flag might be signaled to a block, multiple blocks containing a block, a CTB, a tile, etc.
[0161] Flags can be indicated using high-level syntax such as video parameter sets (VPS), sequence parameter sets (SPS), adaptive parameter sets (APS), picture parameter sets (PPS), and slice headers (for example, they can be signaled).
[0162] According to an aspect of the present disclosure, a flag (or control flag) is used to perform quantization and / or inverse quantization of a plurality of transform coefficients in at least a first row or at least a first column in a block (e.g., TB (1501)) using a single quantization step (e.g., a DC step (Qstep DC )) can be indicated whether it is applied. In one example, the flag is used to control (e.g., enable or disable) the application of a single quantization step when quantizing and / or inverse quantizing a plurality of transform coefficients in at least a first row or at least a first column in a block. The flag can be associated with any suitable level, such as a block level (e.g., TB level, PB level or CTB level), a tile level, etc.
[0163] In one embodiment, the flag is written and read only when the transform type of the block is a 1D transform, such as a 1D horizontal transform or a 1D vertical transform. In one embodiment, the flag is written and read only when the transform type is one of at least one predefined transform type. In one example, the flag is written and read only when the transform type of the block is one of V_DCT, H_DCT, V_ADST, H_ADST, V_FLIPADST and H_FLIPADST.
[0164] In one example, when the flag is off, a single quantization step (e.g., a DC step (Qstep DC )) is applied to quantize and / or inverse quantize a plurality of transform coefficients in at least a first row or at least a first column in the block.
[0165] When the flag is on, a single quantization step (e.g., a DC step (Qstep DC )) is not applied to quantize and / or inverse quantize a plurality of transform coefficients in at least a first row or at least a first column in the block. Instead, a quantization step (e.g., a DC step (Qstep DC)) is applied to a single transformation coefficient (e.g., the first transformation coefficient) in a block, and another quantization step (e.g., the AC step (Qstep AC )) is applied to the remaining transformation coefficients in the block. For example, the transformation coefficients t11~t14 in the first row (e.g., row (1511)) are DC transformation coefficients. When the flag is on, the DC step (Qstep DC )) is applied to t11 in row (1511), and the AC step (Qstep AC ) is applied to the transformation coefficients t12~t14 in row (1511). Further, the AC step is applied to the transformation coefficients t21~t24, t31~t34, and t41~t44 in rows (1512)~(1514) respectively.
[0166] According to an aspect of the present disclosure, a single quantization step (e.g., the DC step (Qstep DC )) can be applied to quantize and / or inverse quantize a plurality of transformation coefficients in at least the first row or at least the first column in a block (e.g., TB(1501)), where the block width and block height of the block exceed a size threshold (e.g., 2). In one example, when the block width and / or block height is less than or equal to the size threshold, the application of a single quantization step when quantizing and / or inverse quantizing a plurality of transformation coefficients in at least the first row or at least the first column in the block is invalidated.
[0167] According to an aspect of the present disclosure, the block width and block height of the block are each 2 N and 2 M samples, the application of a single quantization step when quantizing and / or inverse quantizing a plurality of transformation coefficients in at least the first row or at least the first column in the block becomes valid. In one example, the block width is one of 4, 8, 16, 32, 64, and 128 sizes, but is not limited thereto. The block height is one of 4, 8, 16, 32, 64, and 128 sizes, but is not limited thereto.
[0168] According to aspects of the present disclosure, the application of a single quantization step in quantizing and / or dequantizing a plurality of transformation coefficients in at least a first row or at least a first column of a block can be indicated by a high-level syntax flag and signaled, for example, by a high-level parameter set (e.g., VPS, SPS, APS, and PPS) or a high-level header (e.g., a slice header).
[0169] According to aspects of this disclosure, adaptive quantization using a quantization matrix (QMatrix) can be applied to blocks obtained using a transformation with 1D transformation skipping. The quantization matrix (QMatrix) can be extended to support blocks using unidirectional transformation skipping, for example, by adding additional options (e.g., one or more matrices). Transformations using 1D transformation skipping may be 1D transformations (e.g., 1D vertical transformation, 1D horizontal transformation). The scale factor (or element) of the quantization matrix (QMatrix) can be used to determine the quantization step for quantization and / or inverse quantization of a block, as described by equation (3). In one embodiment, adaptive quantization using a quantization matrix (QMatrix) can support blocks having block widths and block heights including, but not limited to, 4, 8, 16, 32, 64, and 128. An index indicating the quantization matrix (QMatrix) to be applied to a block can be signaled as an unsigned 5-bit integer.
[0170] In one embodiment, the elements (or scale factors) of a quantization matrix (QMatrix) may be based on one or more elements of a quantization matrix used for (i) a transformation with 2D transformation skipping (IDTX) or (ii) a 2D transformation without transformation skipping. For example, a first quantization matrix (e.g., first QMatrix) used for a 2D transformation without transformation skipping of a 4x4 luminance block may be {32,43,73,97,43,67,94,110,73,94,137,150,97,110,150,200}. The elements of a second quantization matrix (e.g., second QMatrix) may be derived from the first quantization matrix (e.g., first QMatrix), and the second QMatrix may support blocks (e.g., luminance blocks) using a 1D vertical transformation (e.g., V_DCT). For example, the first row of the second QMatrix can be 32, the second row of the second QMatrix can be 43, and the second QMatrix is {32,32,32,32,43,43,43,43,67,67,67,67,73,73,73,73}.
[0171] In one embodiment, the transformation is a 1D vertical transformation such as V_LGT, V_DCT, V_ADST, or V_FLIPADST, and the quantization matrix (QMatrix) can be extended to a row-oriented flat matrix to support blocks using the 1D vertical transformation. The quantization matrix (QMatrix) can be a row-oriented flat matrix in which the elements (or scale factors) of each row are identical. Referring again to Figure 15, if the quantization matrix (QMatrix)(1500) is a row-oriented flat matrix, then the scale factors c11-c14 are identical, the scale factors c21-c24 are identical, the scale factors c31-c34 are identical, and the scale factors c41-c44 are identical. In one embodiment, the quantization matrix (QMatrix) can be selected from a portion of the quantization matrix (such as predefined rows) used for (i) a transformation with 2D transformation skipping (IDTX) or (ii) a 2D transformation without transformation skipping.
[0172] In one embodiment, the transformation is a 1D horizontal transformation such as H_LGT, H_DCT, H_ADST, or H_FLIPADST, and the quantization matrix (QMatrix) can be extended to a columnar flat matrix to support blocks using the 1D horizontal transformation. The quantization matrix (QMatrix) may be a columnar flat matrix in which the elements (or scale factors) of each column are identical. Referring again to Figure 15, if the quantization matrix (QMatrix)(1500) is a columnar flat matrix, then the scale factors c11, c21, c31, and c41 are identical, the scale factors c12, c22, c32, and c42 are identical, the scale factors c13, c23, c33, and c43 are identical, and the scale factors c14, c24, c34, and c44 are identical. In one embodiment, the quantization matrix (QMatrix) can be selected from a portion of the quantization matrix (such as a predefined column) used for (i) a transformation with 2D transformation skipping (IDTX) or (ii) a 2D transformation without transformation skipping.
[0173] The embodiments in this disclosure may be combined in any order. In one embodiment, in addition to indicating a one-way transformation skip (1D transformation skip) of a block, the coding information indicates that a quantization matrix (QMatrix) is valid. The quantization matrix may include elements corresponding to each transformation coefficient in the block. Elements in each row or column of the quantization matrix along one direction may have the same value. Multiple quantization steps can be obtained based on an initial quantization step and a quantization matrix, for example, as described by equation (3). In one example, the initial quantization step includes an initial DC step and an initial AC step. The initial DC step may be smaller than the initial AC step.
[0174] In one example, the quantization matrix and the blocks to be quantized and / or dequantized have the same dimensions (same width and same height, etc.).
[0175] The quantization matrix may be a row-oriented or column-oriented flat matrix. When one direction is horizontal, the quantization matrix is a row-oriented flat matrix and has identical values (also called row values) because the elements or scale factors in the same row of the quantization matrix are identical. Multiple quantization steps can be obtained based on the initial quantization steps corresponding to the rows of transformation coefficients in the block and the corresponding row values in the row-oriented flat matrix.
[0176] Referring to Figure 15, the row-direction flat matrix is the quantization matrix (1530). The quantization matrix (1530) contains rows (1531) to (1534), each having row values a to d. The dimensions of the quantization matrix (1530), such as width and height, may be the same as the dimensions of TB(1501), such as width and height.
[0177] When one direction is perpendicular, the quantization matrix is a column-direction flat matrix and has identical values (also called column values) because the elements or scale factors in the same column of the quantization matrix are identical. Multiple quantization steps can be obtained based on the initial quantization step corresponding to the column of transformation coefficients in the block and the corresponding column values in the column-direction flat matrix.
[0178] Referring to Figure 15, the column-oriented flat matrix is the quantization matrix (1540). The quantization matrix (1540) contains columns (1541) to (1544), each having column values e to h. The dimensions of the quantization matrix (1540), such as width and height, may be the same as the dimensions of TB(1501), such as width and height.
[0179] In one embodiment, the first transformation coefficient corresponds to one of the initial quantization steps. The remaining transformation coefficients in the block correspond to another of the initial quantization steps. The remaining transformation coefficients in the block correspond to one of (i) the remaining rows and (ii) the remaining columns in the block having AC spatial frequencies. One of (i) the remaining rows and (ii) the remaining columns in the block can be aligned in one direction. The smallest of the multiple quantization steps can be obtained based on one of the initial quantization steps and one of the first rows and first columns of the quantization matrix. One of the first rows and first columns of the quantization matrix can be aligned in one direction. The remaining of the multiple quantization steps can be obtained for one of the remaining rows and columns in the block based on another of the initial quantization steps and the respective values of one of the remaining rows and columns of the quantization matrix. One of the remaining rows and columns of the quantization matrix can be aligned in one direction.
[0180] In one example, the first transformation coefficients include the transformation coefficients (e.g., t11~t14) of the first row (e.g., row (1511)) of a block (e.g., TB(1501)). The first transformation coefficients (e.g., t11~t14) correspond to one of the initial quantization steps (e.g., the initial DC step), and the remaining transformation coefficients in the block correspond to the transformation coefficients of the remaining rows (e.g., rows (1512)~(1514)) in the block having AC spatial frequencies. The remaining transformation coefficients in the block correspond to another of the initial quantization steps (e.g., the initial AC step).
[0181] Multiple quantization steps can be obtained based on the initial quantization step and the quantization matrix (1530). The smallest of the multiple quantization steps for the first row (1511) (e.g., the final DC step) can be obtained based on the initial DC step and the value of the first row of the quantization matrix (e.g., row value a of the quantization matrix (1530)). The final AC step for row (1512) can be obtained based on another initial quantization step (e.g., the initial AC step) and row value b. The final AC step for row (1513) can be obtained based on another initial quantization step (e.g., the initial AC step) and row value c. The final AC step for row (1514) can be obtained based on another initial quantization step (e.g., the initial AC step) and row value d. The remaining multiple quantization steps for the remaining rows (1512) to (1514) each include the final AC step for row (1512) to (1514). As can be seen here, in one example, multiple quantization steps include three or more quantization steps, such as four quantization steps including a final DC step for the first row (1511) and final AC steps for rows (1512) to (1514).
[0182] In one example, the first transformation coefficients include the transformation coefficients (e.g., t11, t21, t31, and t41) of the first column (e.g., column (1521)) of the block (e.g., TB(1501)). The first transformation coefficients (e.g., t11, t21, t31, and t41) correspond to one of the initial quantization steps (e.g., the initial DC step), and the remaining transformation coefficients in the block correspond to the transformation coefficients of the remaining columns (e.g., columns (1522) to (1524)) in the block having AC spatial frequencies. The remaining transformation coefficients in the block correspond to another of the initial quantization steps (e.g., the initial AC step).
[0183] Multiple quantization steps can be obtained based on the initial quantization step and the quantization matrix (1540). The smallest of the multiple quantization steps for the first column (1521) (e.g., the final DC step) can be obtained based on the initial DC step and the value of the first column of the quantization matrix (e.g., column value e of the quantization matrix (1540)). The final AC step for column (1522) can be obtained based on another initial quantization step (e.g., the initial AC step) and column value f. The final AC step for column (1523) can be obtained based on another initial quantization step (e.g., the initial AC step) and column value g. The final AC step for column (1524) can be obtained based on another initial quantization step (e.g., the initial AC step) and column value h. The remaining multiple quantization steps for the remaining columns (1522) to (1524) each include the final AC step for column (1522) to (1524).
[0184] In one embodiment, the first transformation coefficients further include one of (i) transformation coefficients for one or more rows in a block adjacent to the first row, and (ii) transformation coefficients for one or more columns in a block adjacent to the first column. One of (i) one or more rows and (ii) one or more columns in a block can be aligned in one direction. The first transformation coefficients correspond to one of the initial quantization steps, and the remaining transformation coefficients in the block correspond to another of the initial quantization steps. The smallest of the multiple quantization steps can be obtained based on one of the initial quantization steps and one of the first row and first column of the quantization matrix. One of the first row and first column of the quantization matrix can be aligned in one direction.
[0185] Referring again to Figure 15, in one example, one direction is the horizontal direction. One of (i) one or more rows and (ii) one or more columns in a block is aligned horizontally and therefore includes the transformation coefficients of one or more rows in the block adjacent to the first row (e.g., row (1511)) (e.g., row (1512)). The first transformation coefficient further includes the transformation coefficients of one or more rows in the block adjacent to the first row (e.g., row (1511)) (e.g., row (1512)), and the remaining transformation coefficients in the block correspond to the transformation coefficients of the remaining rows in the block (e.g., rows (1513) - (1514)). The first set of transformation coefficients (e.g., t11-t14 of row (1511) and t21-t24 of row (1512)) corresponds to one of the initial quantization steps (e.g., the initial DC step), and the remaining transformation coefficients in the block (e.g., t31-t34 of row (1513) and t41-t44 of row (1514)) correspond to the other initial quantization step (e.g., the initial AC step). Multiple quantization steps can be obtained based on the initial quantization steps and the quantization matrix (1530). Multiple quantization steps may include the final step for the first row (1511), the final step for row (1512), the final step for row (1513), and the final step for row (1514). The final step for the first row (1511) can be obtained based on the initial DC step and row value a. The final step for row (1512) can be obtained based on the initial DC step and row value b. The final step for row (1513) can be obtained based on the initial AC step and row value c. The final step for row (1514) can be obtained based on the initial AC step and row value d. The smallest of the multiple quantization steps is the final step for the first row (1511). The remaining multiple quantization steps for the remaining rows (1512) to (1514) each include the final step for row (1512) to (1514).
[0186] Referring again to Figure 15, in one example, one direction is the vertical direction. One of (i) one or more rows and (ii) one or more columns in a block is aligned vertically and therefore includes the transformation coefficients of one or more columns in the block adjacent to the first column (e.g., column (1521)) (e.g., column (1522)). The first transformation coefficient further includes the transformation coefficients of one or more columns in the block adjacent to the first column (e.g., column (1521)) (e.g., column (1522)), and the remaining transformation coefficients in the block correspond to the transformation coefficients of the remaining columns in the block (e.g., columns (1523) - (1524)). The first set of transformation coefficients (e.g., t11, t21, t31, and t41 of column (1521), and t12, t22, t32, and t42 of column (1522)) correspond to one of the initial quantization steps (e.g., the initial DC step), and the remaining transformation coefficients in the block (e.g., t13, t23, t33, and t43 of column (1523), and t14, t24, t34, and t44 of column (1524)) correspond to another of the initial quantization steps (e.g., the initial AC step). Multiple quantization steps can be obtained based on the initial quantization steps and the quantization matrix (1540). Multiple quantization steps may include the final step for the first column (1521), the final step for column (1522), the final step for column (1523), and the final step for column (1524). The final step for the first column (1521) can be obtained based on the initial DC step and column value e. The final step for column (1522) can be obtained based on the initial DC step and column value f. The final step for column (1523) can be obtained based on the initial AC step and column value g. The final step for column (1524) can be obtained based on the initial AC step and column value h. The smallest of the multiple quantization steps may be the final step for the first column (1521). The remaining multiple quantization steps for the remaining columns (1522) to (1524) each include the final step for columns (1522) to (1524).
[0187] Figure 16 shows a flowchart outlining process (1600) according to one embodiment of the present disclosure. Process (1600) can be used to reconstruct blocks such as TBs. The term "block" in this disclosure may refer to TBs, TUs, etc. In various embodiments, process (1600) is executed by processing circuits such as processing circuits for terminal devices (310), (320), (330), and (340), processing circuits that perform the functions of a video encoder (403), processing circuits that perform the functions of a video decoder (410), processing circuits that perform the functions of a video decoder (510), and processing circuits that perform the functions of a video encoder (603). In some embodiments, process (1600) is implemented by software instructions, so that when a processing circuit executes a software instruction, the processing circuit executes process (1600). The process starts at (S1601) and proceeds to (S1610).
[0188] In (S1610), the coding information of a block (e.g., TB) can be decoded from the coded video bitstream. The coding information indicates a one-way conversion skip of the TB. The one-way direction may be horizontal or vertical.
[0189] In (S1620), the transformation coefficients in a block can be inversely quantized based on multiple quantization steps. In one example, the multiple quantization steps are DC steps (e.g., Qstep) DC ) and AC step (for example, Qstep) AC ) includes. The first transformation coefficient in the block is the smallest of the multiple quantization steps (e.g., Qstep). DC It can be inversely quantized based on ), and the first transformation coefficient in the block can include one of the transformation coefficients of the first row and first column in the block having a DC spatial frequency. The first row and first column can be aligned in one direction of the transformation skip.
[0190] In one example, one direction is the horizontal direction, and one of the first row and first column is the first row of the transformation coefficients in the block. The transformation coefficients in the first row of the block include DC transformation coefficients having a DC spatial frequency. The transformation coefficients in the first row of the block are the smallest of several quantization steps (e.g., Qstep). DC ) can be inversely quantized based on, and the transformation coefficients of the remaining rows in the block are one of several quantization steps (e.g., Qstep) AC It can be dequantized based on ).
[0191] In one example, one direction is horizontal, and one of the first row and first column is the first row of transformation coefficients in the block. The first transformation coefficient in the block may further include transformation coefficients for one or more additional rows in the block adjacent to the first row. The transformation coefficient between the first row and one or more additional rows in the block is the smallest of several quantization steps (e.g., Qstep). DC The remaining rows in the block can be dequantized based on (e.g., Qstep). AC It can be dequantized based on ).
[0192] In one example, one direction is the vertical direction, and one of the first rows and first columns is the first column of the transformation coefficients in the block. The transformation coefficients in the first column of the block include DC transformation coefficients having a DC spatial frequency. The transformation coefficients in the first column of the block are the smallest of several quantization steps (e.g., Qstep). DC ) can be inversely quantized based on, and the transformation coefficients of the remaining columns in the block are one of several quantization steps (e.g., Qstep) AC It can be dequantized based on ).
[0193] In one example, one direction is the vertical direction, and one of the first rows and the first column is the first column of transformation coefficients in the block. The first transformation coefficient in the block may further include transformation coefficients of one or more additional columns in the block adjacent to the first column. The transformation coefficients of the first column and one or more additional columns in the block are the smallest of several quantization steps (e.g., Qstep). DC The remaining columns in the block can be dequantized based on (Qstep). The transformation coefficients of the remaining columns in the block are determined by one of the multiple quantization steps (e.g., (Qstep). AC It can be dequantized based on )).
[0194] In (S1630), an inverse transform can be performed on the inversely quantized transformation coefficients in the block.
[0195] Process (1600) can be appropriately adapted. The steps of process (1600) can be modified and / or omitted. Additional steps can be added. Any suitable implementation order can be used. For example, the coding information may further include a flag or other signaling information indicating whether the first transformation coefficient should be dequantized based on the smallest of multiple quantization steps. If the decoded flag indicates that the first transformation coefficient should be dequantized based on the smallest of multiple quantization steps, then the first transformation coefficient in TB is dequantized based on the smallest of multiple quantization steps.
[0196] In one example, coding information further indicates when the quantization matrix becomes effective. The quantization matrix contains each element corresponding to each transformation coefficient in the block. Elements in each row or column of the quantization matrix along one direction have the same value. Multiple quantization steps can be obtained based on the initial quantization step and the quantization matrix.
[0197] Embodiments of this disclosure may be used separately or in any order. Furthermore, each of the methods (or embodiments), encoders, and decoders may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored on a non-temporary computer-readable medium.
[0198] The techniques described above are executed as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, Figure 17 shows a computer system (1700) suitable for performing a particular embodiment of the subject matter disclosed.
[0199] Computer software can be coded using any suitable machine code or computer language that produces code containing instructions that can be assembled, compiled, linked, or otherwise executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., either directly or by interpretation, microcode execution, etc.
[0200] The instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things (IoT) devices.
[0201] With respect to the computer system (1700), the components shown in Figure 17 are essentially illustrative and are not intended to imply any limitation on the use or functionality of computer software implementing embodiments of the present disclosure. The configuration of the components should not be construed as having any dependence or necessity on any one or combination of components shown in the exemplary embodiments of the computer system (1700).
[0202] The computer system (1700) may include certain human interface input devices. Such human interface input devices can respond to input from one or more human users, for example, through haptic input (keystrokes, swipes, data glove movements, etc.), audio input (voices, applause, etc.), visual input (gestures, etc.), and olfactory input (not shown). Human interface devices can also be used to capture certain media that are not necessarily directly related to conscious human input, such as voice (speech, music, ambient sounds, etc.), images (scanned images, photographic images taken from still image cameras, etc.), and video (2D video, 3D video including stereoscopic video, etc.).
[0203] Input human interface devices may include one or more of the following: keyboard (1701), mouse (1702), trackpad (1703), touchscreen (1710), data glove (not shown), joystick (1705), microphone (1706), scanner (1707), and camera (1708) (only one of each is shown).
[0204] The computer system (1700) may also include certain human interface output devices. Such human interface output devices can stimulate the senses of one or more human users, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include tactile output devices (e.g., tactile feedback via a touchscreen (1710), data glove (not shown), or joystick (1705), but may be tactile feedback devices that do not function as input devices), audio output devices (e.g., speakers (1709), headphones (not shown)), visual output devices (e.g., screens (1710), including CRT screens, LCD screens, plasma screens, OLED screens, etc., each with or without touchscreen input capability, tactile feedback capability, and some of which can output two-dimensional visual output or three-dimensional or more output via means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0205] The computer system (1700) may also include human-accessible storage devices and associated media, such as CD / DVD ROM / RW (1720) or similar media (1721) having CDs / DVDs, thumb drives (1722), and optical media including removable hard drives or solid-state drives (1723), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0206] Those skilled in the art should also understand that the term “computer-readable medium” as used in relation to the subject matter disclosed herein does not include a transmission medium, carrier wave, or other transient signal.
[0207] The computer system (1700) may further include interfaces (1754) to one or more communication networks (1755). These networks may be, for example, wireless, wired, or optical networks. Networks may further include local, wide-area, metropolitan, automotive, and industrial, real-time, and latency-tolerant networks. Examples of networks include local area networks such as Ethernet and wireless LANs; cellular networks such as GSM, 3G, 4G, 5G, and LTE; wired or wireless wide-area digital TV networks such as cable TV, satellite TV, and terrestrial broadcast TV; and automotive and industrial networks such as CANBus. Certain networks generally require external network interface adapters connected to specific general-purpose data ports or peripheral buses (1749) (e.g., USB ports on the computer system (1700)). Other networks are generally integrated into the core of the computer system (1700) by connecting to system buses as described below (e.g., Ethernet interfaces to PC computer systems or cellular network interfaces to smartphone computer systems). Using any of these networks, the computer system (1700) can communicate with other entities. Such communication may be unidirectional reception only (e.g., broadcast TV), unidirectional transmission only (e.g., from CANbus to a specific CANbus device), or bidirectional, for example, using a local or wide-area digital network to other computer systems. As described above, specific protocols and protocol stacks can be used for each of these networks and network interfaces.
[0208] The aforementioned human interface devices, human-accessible storage devices, and network interfaces can be connected to the core (1740) of the computer system (1700).
[0209] The core (1740) may include one or more central processing units (CPUs) (1741), graphics processing units (GPUs) (1742), dedicated programmable processing units in the form of field-programmable gate arrays (FPGAs) (1743), hardware accelerators for specific tasks (1744), graphics adapters (~~50), etc. These devices may be connected via a system bus (1748) to read-only memory (ROM) (1745), random access memory (1746), and internal mass storage devices such as internal hard drives and SSDs (1747) that are not accessible to the user. In some computer systems, the system bus (1748) may be accessible in the form of one or more physical plugs, allowing for expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1748) or via a peripheral bus (1749). In one example, a screen (1710) can be connected to a graphics adapter (1750). Peripheral bus architectures include PCI, USB, etc.
[0210] The CPU (1741), GPU (1742), FPGA (1743), and accelerator (1744) can be combined to execute specific instructions that constitute the aforementioned computer code. This computer code can be stored in ROM (1745) or RAM (1746). Transitional data can also be stored in RAM (1746), while permanent data can be stored, for example, in internal mass storage (1747). High-speed storage and retrieval of any memory device can be enabled using cache memory that can be closely associated with one or more of the CPU (1741), GPU (1742), mass storage (1747), ROM (1745), RAM (1746), etc.
[0211] A computer-readable medium may contain computer code for performing various computer implementation operations. The medium and computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of a type that is well known and available to those skilled in the computer software field.
[0212] As an example, and not an limitation, a computer system having an architecture (1700), specifically a core (1740), 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 may be media associated with user-accessible mass storage as described above, in addition to specific storage devices of the core (1740) that are non-transient in nature, such as mass storage (1747) or ROM (1745) within the core. Software implementing various embodiments of this disclosure can be stored in such devices and executed by the core (1740). The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software can cause the core (1740), specifically the processor (including a CPU, GPU, FPGA, etc.) within it, to execute specific processes or specific parts of specific processes as described herein, including defining data structures stored in RAM (1746) and modifying such data structures according to processes defined by the software. In addition or alternatively, a computer system may provide functionality as a result of logic wired to or otherwise embodied in circuits (e.g., accelerators (1744)) that can operate in place of or in conjunction with software to perform specific processes or specific parts of specific processes described herein. References to software may, as necessary, include logic, and vice versa. References to computer-readable media may, as necessary, include circuits that store software for execution (such as integrated circuits (ICs)), circuits that embody logic for execution, or both. This disclosure includes any suitable combination of hardware and software. Appendix A: Acronyms JEM: Joint Exploration Model VVC: Versatile Video Coding BMS: benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Video Usability Information GOP: Groups of Pictures TU: Transform Unit PU: Prediction Unit CTU: Coding Tree Unit CTB: Coding Tree Block PB: Prediction Block HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPU: Central Processing Unit GPU: Graphics Processing Unit CRT: Cathode Ray Tube LCD: Liquid-Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile Communication LTE: Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Arrays SSD: Solid-state Drive IC: Integrated Circuit CU: Coding Unit
[0213] While this disclosure has described some exemplary embodiments, there are many variations, substitutions, and alternative equivalents that fall within the scope of this disclosure. Therefore, those skilled in the art should understand that numerous systems and methods, not expressly shown or described herein, can be devised to embody the spirit and scope of the disclosure.
Claims
1. A method for video decoding in a decoder, A step of decoding coding information of a conversion block (TB) from a coded video bitstream, wherein the coding information indicates a one-way conversion skip of the TB, and decoding the coding information includes decoding a flag indicating whether a first conversion coefficient is dequantized based on the smallest of a plurality of quantization steps; A step of dequantizing a transformation coefficient in the TB based on the plurality of quantization steps, wherein, in response to a flag indicating that the first transformation coefficient should be dequantized based on the minimum of the plurality of quantization steps, the first transformation coefficient in the TB is dequantized based on the minimum of the plurality of quantization steps, the first transformation coefficient in the TB includes one transformation coefficient from a first row and a first column in the TB having a DC spatial frequency, the one from the first row and the first column aligns with the one direction of the transformation skip, the plurality of quantization steps include a DC step and an AC step, and the minimum of the plurality of quantization steps includes a DC step, A method comprising the step of performing an inverse transform on the inversely quantized transformation coefficients in the TB.
2. The aforementioned one direction is the horizontal direction, One of the first row and the first column is the first row of the conversion coefficients in TB, The step of inverse quantizing the transformation coefficients in the aforementioned TB is: A step of inverse quantizing the transformation coefficients of the first row in the TB based on the smallest of the plurality of quantization steps, The method according to claim 1, comprising the step of dequantizing the transformation coefficients of the remaining rows in the TB based on another one of the plurality of quantization steps.
3. The aforementioned one direction is the horizontal direction, One of the first row and the first column is the first row of the conversion coefficients in TB, The step of inverse quantizing the transformation coefficients in the aforementioned TB is: A step of inverse quantizing the transformation coefficients of the first row and one or more additional rows in the TB adjacent to the first row, based on the smallest of the plurality of quantization steps, wherein the first transformation coefficient in the TB further includes the transformation coefficients of the one or more additional rows in the TB, The method according to claim 1, comprising the step of dequantizing the transformation coefficients of the remaining rows in the TB based on another one of the plurality of quantization steps.
4. The aforementioned one direction is the vertical direction, One of the first row and the first column is the first column of the conversion coefficients in TB, The step of inverse quantizing the transformation coefficients in the aforementioned TB is: A step of inverse quantizing the transformation coefficients of the first column in the TB based on the smallest of the plurality of quantization steps, The method according to claim 1, further comprising the step of inverse quantizing the transformation coefficients of the remaining columns in the TB based on another one of the plurality of quantization steps.
5. The aforementioned one direction is the vertical direction, One of the first row and the first column is the first column of the conversion coefficients in TB, The step of inverse quantizing the transformation coefficients in the aforementioned TB is: A step of inverse quantizing the transformation coefficients of the first column and one or more additional columns in the TB adjacent to the first column, based on the smallest of the plurality of quantization steps, wherein the first transformation coefficient in the TB further includes the transformation coefficients of the one or more additional columns in the TB, The method according to claim 1, further comprising the step of inverse quantizing the transformation coefficients of the remaining columns in the TB based on another one of the plurality of quantization steps.
6. The method according to claim 1, wherein the flag is associated with one of the following: the TB, a plurality of TBs including the TB, a coding tree block, and a tile.
7. The method according to claim 1, wherein the flag is indicated by one of the following: video parameter set (VPS), sequence parameter set (SPS), adaptive parameter set (APS), picture parameter set (PPS), and slice header.
8. The height and width of the aforementioned TB are 2 N and 2 M The method according to claim 1, wherein the sample is such that N and M are integers greater than 1.
9. The aforementioned coding information further indicates that the quantization matrix is valid. The quantization matrix includes each element corresponding to each transformation coefficient in the TB, Each row or column of the quantization matrix along the aforementioned one direction has the same value, The method according to claim 1, further comprising an initial quantization step and a step of obtaining the plurality of quantization steps based on the quantization matrix.
10. The first conversion coefficient corresponds to one of the initial quantization steps, The remaining transformation coefficients in the TB, which have an AC spatial frequency, correspond to one of the remaining rows and (ii) the remaining columns in the TB, which correspond to another of the initial quantization steps, where the one of the remaining rows and (ii) the remaining columns in the TB is aligned in one direction. The step of obtaining the aforementioned multiple quantization steps is: A step of obtaining the minimum of the plurality of quantization steps based on one of the initial quantization steps and one value of the first row and first column of the quantization matrix, wherein one of the first row and first column of the quantization matrix is aligned in one direction. The method according to claim 9, comprising the step of obtaining the remainder of the plurality of quantization steps for one of the remaining rows and columns in the TB based on another of the initial quantization steps and the respective values of one of the remaining rows and columns of the quantization matrix, wherein the one of the remaining rows and columns of the quantization matrix is aligned in one direction.
11. The first conversion coefficient further includes one of (i) a conversion coefficient for one or more rows in the TB adjacent to the first row, and (ii) a conversion coefficient for one or more columns in the TB adjacent to the first column, wherein one of (i) the one or more rows and (ii) the one or more columns in the TB is aligned in the one direction. The first conversion coefficient corresponds to one of the initial quantization steps, The remaining transformation coefficients in the aforementioned TB correspond to another of the initial quantization steps, The step of obtaining the aforementioned multiple quantization steps is: The method according to claim 9, comprising the step of obtaining the minimum of the plurality of quantization steps based on one of the initial quantization steps and a value of one of the first row and first column of the quantization matrix, wherein one of the first row and first column of the quantization matrix is aligned in one direction.
12. A device for video decoding including a processing circuit, wherein the processing circuit is An apparatus configured to perform the method described in any one of claims 1 to 11.
13. A computer program configured to cause a computer to perform the method described in any one of claims 1 to 11.