Method and apparatus for color conversion in vvc

JP2025061302A5Pending Publication Date: 2025-12-15TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025005309
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-03-12
Filing Date
2025-01-15
Publication Date
2025-12-15

AI Technical Summary

Technical Problem

The existing video encoding technology has the problem of inefficiency in reducing the redundancy of video signals, especially when dealing with complex video content, and traditional video encoding methods are difficult to effectively utilize the spatial and temporal redundancy in the video signals.

Method used

A new video decoding method is adopted, which includes receiving an encoded video bit stream, performing inverse quantization and inverse transformation operations, subsequently performing prediction processing, and performing inverse color transformation when specific conditions are met to optimize the encoding efficiency of the video signal.

Benefits of technology

By this method, the encoding efficiency of video signals can be significantly improved, the bandwidth required for storage and transmission can be reduced, while the video quality can be improved, especially when processing complex video content.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a method of video decoding performed in a video decoder.SOLUTION: A video decoding method includes the steps of receiving an encoded video bitstream including a current picture, performing inverse quantization on a current block included in the current picture, performing an inverse transform on the current block after the step of performing inverse quantization, performing a prediction process on the current block, determining whether a predetermined condition is satisfied for the current block, and performing an inverse color transform on the current block in response to determining that the predetermined condition is satisfied.SELECTED DRAWING: Figure 20
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] [Related Applications] This disclosure claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 817,500, entitled "COLOR TRANSFORM IN VVC," filed March 12, 2019, which claims the benefit of priority to U.S. Patent Application No. 16 / 817,028, entitled "METHOD AND APPARATUS FOR COLOR TRANSFORM IN VVC," filed March 12, 2020. The entire disclosures of the aforementioned applications are hereby incorporated by reference in their entireties.

[0002] [Technical field] This disclosure generally describes embodiments related to video encoding. [Background technology]

[0003] The background description provided herein is to provide an overview of the context of the present disclosure. The work of the presently named inventors is not admitted explicitly or implicitly as prior art to the present disclosure, to the extent that the work described in this background section, as well as aspects of the description that may not be considered prior art at the time of filing, are not admitted explicitly or implicitly as prior art to the present disclosure.

[0004] Video encoding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can include a sequence of pictures, each with spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures can have a fixed or variable picture rate (also known informally as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, a 1080p60 4:2:0 video (1920x1080 luminance sample resolution at 60 Hz frame rate) with 8 bits per sample requires a bandwidth of 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.

[0005] One goal of video encoding and decoding can be the reduction of redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements, in some cases by more than two orders of magnitude. Both lossy and lossless compression, and combinations thereof, can be utilized. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. With lossy compression, the reconstructed signal is not identical to the original signal, but the distortion between the original and reconstructed signals is small enough to produce a reconstructed signal that is useful for the intended application. In the case of video, lossy compression is widely used. The amount of tolerable distortion depends on the application, and users of certain consumer streaming applications can tolerate higher distortion than users of television distribution applications. The achievable compression ratio can reflect that the higher the tolerable / tolerable distortion, the higher the compression ratio that can result.

[0006] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transformation, quantization, and entropy coding.

[0007] Video codec techniques can include a technique known as intra-coding. In intra-coding, sample values ​​are represented without reference to samples or other data from a previous reconstructed reference picture. In some video codecs, a picture is spatially subdivided into blocks of samples. When a whole block of samples is coded in intra mode, the picture may be an intra picture. Intra pictures, and their derivatives such as independent decoder refresh pictures, can be used to reset the decoder state and therefore can be used as the first picture in a coded video bitstream and video session, or as a still image. Samples of an intra block can be transformed, and the transform coefficients can be quantized before entropy coding. Intra prediction can be a technique that minimizes the sample values ​​in the pre-transform domain. In some cases, the smaller the DC value after the transformation and the smaller the AC coefficients, the fewer bits are needed for a given quantization step size to represent the block after entropy coding.

[0008] Traditional intra-coding, for example as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some new video compression techniques attempt to do so, for example from surrounding sample data and / or metadata obtained during the encoding / decoding of spatially neighboring data blocks preceding in the decoding order. Such techniques are hereafter referred to as "intra-prediction" techniques. In at least some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from reference pictures.

[0009] There may be many different forms of intra-prediction. When more than one such technique can be used in a given video coding technique, the technique used may be coded in an intra-prediction mode. In certain cases, a mode may have sub-modes and / or parameters, which may be coded individually or included in a mode codeword. Which codeword to use for a given mode / sub-mode / parameter combination may affect the improvement of coding efficiency through intra-prediction, and therefore entropy coding techniques may be used to convert the codeword into a bitstream.

[0010] Certain intra prediction modes are included by H.264 and improved in H.265 and in more recent coding techniques such as the joint exploration model (JEM), versatile video coding (VVC), and benchmark set (BMS). A prediction block can be formed using neighboring sample values ​​belonging to already available samples. The sample values ​​of the neighboring samples are copied to the prediction block according to a direction. The reference of the direction in use can be coded in the bitstream or it may be predicted itself.

[0011] Referring to FIG. 1A, at the bottom right, a subset of 9 prediction directions known from the 33 possible prediction directions of H.265 (corresponding to the 33 angle modes of the 35 intra modes) is shown. The point where the arrows converge (101) represents the sample being predicted. 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. 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.

[0012] 1A, a square block (104) of 4×4 samples (indicated by a thick dashed line) is shown at the top left. The 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 (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample in the block (104) in both the Y and X dimensions. When the block is of size 4×4 samples, S44 is at the bottom right. Also shown are reference samples that follow a similar numbering scheme. The reference samples are labeled by R, their Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, the predicted samples are in the neighborhood of the block being reconstructed, and therefore negative values ​​do not need to be used.

[0013] Intra-picture prediction can operate by copying reference sample values ​​from neighboring samples when more appropriate for the signaled prediction direction. For example, the coded video bitstream includes signaling for this block indicating a prediction direction consistent with arrow (102). That is, a sample is predicted from one or more prediction samples at an angle of 45 degrees from the horizontal, to the upper right. In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Sample S44 is then predicted from reference sample R08.

[0014] In certain cases, values ​​of multiple reference samples may be combined, for example through interpolation, to calculate a reference sample, particularly when the direction is not evenly divisible by 45 degrees.

[0015] The number of possible directions has increased as video coding techniques have developed. In H.264 (2003), nine different directions could be presented. That increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions at the time of this disclosure. Experiments have been performed to identify the most likely directions, and certain techniques have been used in entropy coding to represent these likely directions with a small number of bits while accepting certain penalties for the less likely directions. Furthermore, the direction itself may be predictable from neighboring directions in neighboring already decoded blocks.

[0016] The intra prediction modes used in HEVC are shown in Figure 1B. There are a total of 35 intra prediction modes in HEVC, among which mode 10 is the horizontal mode, mode 26 is the vertical mode, and modes 2, 18, and 34 are diagonal modes. The intra prediction modes are signaled by three most probable modes (MPM) and 32 remaining modes.

[0017] Figure 1C shows the intra prediction modes used in VVC. As shown in Figure 1C, VVC has a total of 95 intra prediction modes. Among them, mode 18 is a horizontal mode, mode 50 is a vertical mode, and mode 2, mode 34, and mode 66 are diagonal modes. Modes -1 to -14 and modes 67 to 80 are called Wide-Angle Intra Prediction (WAIP) modes.

[0018] The mapping of intra-prediction direction bits in a coded video bitstream to represent directions varies among video coding techniques, ranging, for example, from simple direct mapping of prediction directions to intra-prediction modes to codewords, to complex adaptive schemes including MPM, and similar techniques. However, in all cases, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Since the goal of video compression is to reduce redundancy, these less likely directions will be represented by more bits than more likely directions in a well-performing video coding technique.

[0019] Video encoding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital video can include a sequence of pictures, each with spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures can have a fixed or variable picture rate (also known informally as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, a 1080p60 4:2:0 video (1920x1080 luminance sample resolution at 60 Hz frame rate) with 8 bits per sample requires a bandwidth of 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.

[0020] Motion compensation is a lossy compression technique and may refer to a technique in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used for prediction of a newly reconstructed picture or part of a picture after being spatially shifted in a direction indicated by a motion vector (hereinafter MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions X and Y, or three dimensions, with the third dimension being an indication of the reference picture in use (the latter may indirectly be a temporal dimension).

[0021] In some video compression techniques, the MV applicable to a particular region of sample data can be predicted from other MVs, e.g., from MVs associated with another region of sample data spatially adjacent to the region being reconstructed and preceding it in the decoding order. Doing so can result in a reduction in the amount of data required to encode the MV, thereby removing redundancy and improving compression. MV prediction, for example, when encoding an input video signal (known as natural video) obtained from a camera, is a statistical possibility that regions larger than the region to which a single MV is applicable move in a similar direction and are therefore predictable, in some cases, using similar motion vectors derived from the MVs of neighboring regions. This results in the MV found for a given region being similar or the same as the MV predicted from the surrounding MVs. This can also be represented, after entropy coding, with a smaller number of bits than could be used when encoding the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, MV prediction itself can be lossy, e.g., due to rounding off errors when computing a predictor from several surrounding MVs.

[0022] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). One of the many MV prediction mechanisms provided by H.265 described therein is a technique referred to below as "spatial merge".

[0023] Referring to FIG. 1D, the current block (101) contains samples found by the encoder during the motion search process as predictable from a previous block of the same size as the one that is spatially shifted. Instead of directly encoding the 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 any one of the five surrounding samples A0, A1, and B0, B1, B2 (102 to 106, respectively). In H.265, the MV prediction can use predictors from the same reference picture as that used by the neighboring blocks. The order of forming the candidate list can be A0→B0→B1→A1→B2. Summary of the Invention

[0024] According to an exemplary embodiment, a method of video decoding performed in a video decoder is provided. The method includes receiving an encoded video bitstream including a current picture. The method further includes performing an inverse quantization on a current block included in the current picture. The method further includes, after performing the inverse quantization, performing an inverse transform on the current block. The method further includes, after performing the inverse transform, performing a prediction operation on the current block. The method further includes, after performing the prediction operation on the current block, determining whether a predetermined condition is met. The method further includes, in response to determining that the predetermined condition is met, performing an inverse color transform on the current block.

[0025] According to an exemplary embodiment, a video decoder for video decoding includes a processing circuit configured to receive an encoded video bitstream including a current picture. The processing circuit is further configured to perform an inverse quantization on a current block included in the current picture. The processing circuit is further configured to perform an inverse transform on the current block after performing the inverse quantization. The processing circuit is further configured to perform a prediction operation on the current block after performing the inverse transform. The processing circuit is further configured to determine whether a predetermined condition is met after performing the prediction operation on the current block. The processing circuit is further configured to perform an inverse color transform on the current block in response to a determination that the predetermined condition is met.

[0026] According to an exemplary embodiment, a non-transitory computer-readable medium having instructions stored thereon, the instructions, when executed by a processor in a video decoder, cause the video decoder to perform a method, the method including receiving an encoded video bitstream including a current picture. The method further includes performing an inverse quantization on a current block included in the current picture. The method further includes performing an inverse transform on the current block after the step of performing the inverse quantization. The method further includes performing a prediction operation on the current block after the step of performing the inverse transform. The method further includes determining whether a predetermined condition is met after the step of performing the prediction operation on the current block. The method further includes performing an inverse color transform on the current block in response to determining that the predetermined condition is met. [Brief description of the drawings]

[0027] Further features, characteristics, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.

[0028] [Figure 1A] 2 is a schematic diagram of an example subset of intra-prediction modes.

[0029] [Figure 1B] FIG. 2 is a diagram of an example intra-prediction direction.

[0030] [Figure 1C] FIG. 2 is a diagram of an example intra-prediction direction.

[0031] [Figure 1D] FIG. 2 is a schematic diagram of a current block and its surrounding spatial merging candidates in one example.

[0032] [Diagram 2] FIG. 2 is a schematic diagram of a simplified block diagram of a communication system (200), according to one embodiment.

[0033] [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300), according to one embodiment.

[0034] [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.

[0035] [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.

[0036] [Figure 6] 4 shows a block diagram of an encoder according to another embodiment.

[0037] [Figure 7] 4 shows a block diagram of a decoder according to another embodiment;

[0038] [Figure 8A] 1 illustrates a block partition according to an embodiment.

[0039] [Figure 8B] 1 illustrates a block partition tree according to an embodiment.

[0040] [Figure 9A] 1 illustrates a vertical center-edge ternary tree partition according to an embodiment.

[0041] [Figure 9B] 1 illustrates a horizontal center-edge ternary tree partition according to an embodiment.

[0042] [Figure 10A-D] 4 illustrates different chroma formats according to various embodiments.

[0043] [Figure 11] 1 illustrates an exemplary encoder according to an embodiment.

[0044] [Figure 12] 1 illustrates an exemplary decoder according to an embodiment.

[0045] [Figure 13] 4 illustrates a straight line between minimum and maximum luma values ​​according to an embodiment.

[0046] [Figure 14A] 13 illustrates the locations of samples used for the derivation of α and β in LT_CCLM according to an embodiment. [Figure 14B] 13 illustrates the locations of samples used for the derivation of α and β in LT_CCLM according to an embodiment.

[0047] [Figure 15A] 1 illustrates the locations of samples used for the derivation of α and β in T_CCLM according to an embodiment. [Figure 15B] 1 illustrates the locations of samples used for the derivation of α and β in T_CCLM according to an embodiment.

[0048] [Figure 16A] 1 illustrates the locations of samples used for the derivation of α and β in L_CCLM according to an embodiment. [Figure 16B] 1 illustrates the locations of samples used for the derivation of α and β in L_CCLM according to an embodiment.

[0049] [Figure 17] 1 illustrates an example of classifying neighboring samples into two groups according to an embodiment.

[0050] [Figure 18] FIG. 2 is a schematic diagram of an encoder and a decoder according to one embodiment;

[0051] [Figure 19] FIG. 2 illustrates an embodiment of a process performed by an encoder.

[0052] [Figure 20] FIG. 2 is a diagram of an embodiment of the processing performed by a decoder.

[0053] [Figure 21] FIG. 1 is a schematic diagram of a computer system according to an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0054] FIG. 2 illustrates a simplified block diagram of a communication system (200) according to an embodiment of the present invention. The communication system (200) includes a number of terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminal devices (210) and (220) interconnected via the network (250). In the example of FIG. 2, the first pair of terminal devices (210) and (220) perform unidirectional transmission of data. For example, the terminal device (210) encodes video data (a stream of video pictures captured by the terminal device (210)) for transmission to another terminal device (220) via the network (250). The encoded video data can be transmitted in the form of one or more encoded video bitstreams. The terminal device (220) may receive the encoded video data from the network (250), decode the encoded video data to reconstruct the video pictures, and display the video pictures according to the reconstructed video data. Unidirectional data transmission may be common in media serving applications and the like.

[0055] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) performing a bidirectional transmission of encoded video data, such as may occur during a video conference. In the bidirectional transmission of data, the terminal devices (230) and (240) may encode video data (e.g., a stream of video pictures captured by the terminal devices) for transmission to the terminal devices (230) and (240) over the network (250). Each of the terminal devices (230) and (240) may receive the encoded video data transmitted by the other of the terminal devices (230) and (240), may decode the encoded video data to recover the video pictures, and may display the video pictures on an accessible display device in accordance with the recovered video data.

[0056] In the example of FIG. 2, the terminal devices (210), (220), (230), and (240) may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. The embodiments of the present disclosure may be applied to laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (250) represents any number of networks that carry encoded video data between the terminal devices (210), (220), (230), and (240), including, for example, wired and / or wireless communication networks. The communication network 250 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include electronic communication networks, local area networks, wide area networks, and / or the Internet. For purposes of the present discussion, the architecture and topology of the network (250) may not be important to the operation of the present disclosure, unless otherwise noted below.

[0057] 3 shows an arrangement of video encoders and video decoders in a streaming environment as an example of an application of the disclosed subject matter, which is equally applicable to, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., other video-enabled applications, etc.

[0058] The streaming system may include a capture subsystem (313), which may include, for example, a video source (301) that generates an uncompressed video picture stream (302). In one example, the video picture stream (302) includes samples captured by a digital camera. The video picture stream (302) is shown in bold to emphasize its high data volume when compared to the encoded video data (304) (or encoded video bitstream) and may be processed by an electronic device (320) that includes a video encoder (303) coupled to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (304) (or video bitstream (304)) is shown in thin to emphasize its low data volume when compared to the video picture stream (302) and may be stored on a streaming server for future use. One or more streaming client subsystems, such as the client subsystems (306) and (308) of FIG. 3, can access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) may include a video decoder (310), for example, in an electronic device (330). The video decoder (310) decodes an input copy (307) of the encoded video data and generates an output video picture stream (311) that can be rendered on a display (312) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (e.g., a video bitstream) may be encoded according to a particular video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. In one example, the video encoding standard under development is known informally as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of a VVC.

[0059] It is noted that electronic devices 320 and 330 may include other components (not shown). For example, electronic device 320 may include a video decoder (not shown) and electronic device 330 may also include a video encoder (not shown).

[0060] 4 shows a block diagram of a video decoder (410) according to one embodiment of the present disclosure. The video decoder (410) may be included in an electronic device (430). The electronic device (430) may include a receiver (431) (e.g., a receiving circuit). The video decoder (410) may be used in place of the video decoder (310) in the example of FIG. 3.

[0061] The receiver (431) may receive one or more coded video sequences to be encoded by the video decoder (410), one coded video sequence at a time, in the same or another embodiment, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences may be received from a channel 401, which may be a hardware / software link to a storage device that stores the coded video data. The receiver 431 may receive the coded video data along with other data, for example, coded audio data and / or auxiliary data streams, which may be forwarded to a respective using entity (not shown). The receiver 431 may separate the coded video sequences from the other data. To eliminate network jitter, a buffer memory (415) may be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter "parser (420)"). In certain applications, the buffer memory (415) is part of the video decoder (410). Alternatively, it may be external to the video decoder (410) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (410), e.g., to remove network jitter, in addition to another buffer memory (415) internal to the video decoder (410), e.g., to handle playout timing. When the receiver (431) is receiving data controllably from a store / forward device of sufficient bandwidth or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (415) may be needed, may be relatively large, advantageously of adaptive size, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (410).

[0062] The video decoder (410) may include a parser (420) to reconstruct symbols (421) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (410) and information for controlling a rendering device such as a render device (412) (e.g., a display screen) that may in some cases not be an integral part of the electronic device (430) as shown in FIG. 4 but may be coupled to the electronic device (430). The control information for the rendering device may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (420) may parse / entropy decode the received code or video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser (420) may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the subgroup. The subgroups may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser (420) may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.

[0063] The parser (420) may perform an entropy decoding / parsing operation on the video sequence received from the buffer memory (415) to generate symbols (421).

[0064] The reconstruction of symbols 421 may include a number of different units, depending on the type of coded video picture or portion thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are included and how can be controlled by subgroup control information parsed from the coded video sequence by parser 420. The flow of such subgroup control information between parser 420 and the following units is not shown for clarity.

[0065] Beyond the functional blocks already mentioned, the video decoder (410) may be conceptually subdivided into a number of functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is adequate.

[0066] The first unit is a scalar / inverse transform unit 451. The scalar / inverse transform unit (451) receives quantized transform coefficients and control information including which transform to use, block size, quantization coefficients, quantization scaling matrix, etc. as symbols (421) from the parser (420). The scalar / inverse transform unit (451) can output blocks containing sample values ​​that can be input to an aggregator (455).

[0067] In some examples, the output samples of the scaler / inverse transform unit (451) may belong to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed part of the current picture. Such prediction information may be provided by the intra-picture prediction unit 452. In some cases, the intra-picture prediction unit (452) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current picture buffer (458). The current picture buffer (458) may, for example, buffer the reconstructed current picture partially and / or completely. The aggregator (455) adds the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451) on a sample-by-sample basis.

[0068] In other cases, the output samples of the scaler / inverse transform unit (451) may relate to an inter-coded, possibly motion-compensated block. In such cases, the motion compensated prediction unit (453) may access the reference picture memory (457) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (421) associated with the block, these samples may be added by the aggregator (455) to the output of the scaler / inverse transform unit (451) to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory (457) from which the motion compensated prediction unit (453) fetches prediction samples may be controlled by the available motion vectors of the motion compensated prediction unit (453), e.g., in the form of symbols (421) that may have X, Y, and reference picture components. Motion compensation may include interpolation of sample values ​​fetched from the reference picture memory (457) when sub-sample accurate motion vectors are in use, motion vector prediction mechanisms, etc.

[0069] The output samples of the aggregator (455) may be subjected to various loop filtering techniques in a loop filter unit (456). The video compression techniques are controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), but may include in-loop filter techniques that are also responsive to meta-information obtained during the decoding of previous portions (in the decoding order) of the coded pictures or coded video sequence, and that may also be responsive to previously reconstructed and loop filtered sample values.

[0070] The output of the loop filter unit (456) may be a sample stream that can be output to a render device (412) and stored in a reference picture memory (457) for use in future inter-picture prediction.

[0071] Once a particular coded picture has been fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture has been fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (420)), the current picture buffer (458) can become part of the reference picture memory (457), and a fresh current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.

[0072] The video decoder (410) may perform decoding operations according to a given video compression technique of a standard, such as ITU-T Rec. H.265. The encoded video sequence may comply with a syntax specified by the video compression technique or standard in use, in the sense that the encoded video sequence complies with both the video compression technique or standard and a profile documented in the video compression technique or standard. In particular, a profile may select certain tools from the total set of tools available in the video compression technique or standard as tools that are only available under the profile. Also, a requirement for compliance may be that the complexity of the encoded video sequence is within the limits defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. The limits set by the level may in some cases be further restricted through a Hypothetical Reference Decoder (HRD) specification and metadata for HDR buffer management signaled in the encoded video sequence.

[0073] In one embodiment, the receiver 431 may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder 410 to correctly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0074] 5 shows a block diagram of a video encoder (503) according to one embodiment of the present disclosure. The video encoder (503) is included in an electronic device (520). The electronic device (520) includes a transmitter (540) (e.g., a transmission circuit). The video encoder (503) can be used in place of the video encoder (303) in the example of FIG. 3.

[0075] The video encoder (503) may receive video samples from a video source (501) (which in the example of FIG. 5 is not part of the electronic device (520)) that may capture video images to be encoded by the video encoder (503). In another example, the video source (501) is part of the electronic device (520).

[0076] The video source (501) may provide a source video sequence to be encoded by the video encoder (503) in the form of a digital video sample stream of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCb, RGB, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media presentation system, the video source 501 may be a storage device that stores previously prepared video. In a video conferencing system, the video source 501 may be a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that, when viewed in succession, give the appearance of motion. 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., being used. Those skilled in the art will readily appreciate the relationship between pixels and samples. The following description focuses on samples.

[0077] According to one embodiment, the video encoder (503) may encode and compress pictures of a source video sequence into a coded video sequence (543) in real-time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (550). In some embodiments, the controller (550) controls and is operatively coupled to other functional units, which are described below, and are not shown for clarity. Parameters set by the controller (550) may include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (550) may be configured to have other appropriate functions associated with the video encoder (503) optimized for a particular system design.

[0078] In some embodiments, the video encoder (503) is configured to operate in an encoding loop. As a very simplified description, in one example, the encoding loop may include a source coder (530) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be encoded and reference pictures) and a (local) decoder (533) built into the video encoder (503). The decoder (533) reconstructs the symbols to generate sample data in a manner similar to that generated by a (remote) decoder (when any compression between the symbols and the encoded bit stream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (534). When the decoding of the symbol stream produces bit-accurate results independent of the decoder location (local or remote), the contents of the reference picture memory (534) are also bit-accurate between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values ​​as the reference picture samples that the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, e.g., due to channel errors) is used in several related techniques as well.

[0079] The operation of the "local" decoder (533) may be the same as that of a "remote" decoder, such as the video decoder (410) detailed above in connection with Figure 4. Referring briefly also to Figure 4, however, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415), and the parser (420), may not be fully implemented in the local decoder (533).

[0080] An observation to be made at this point is that any decoder techniques, other than parsing / entropy decoding, present in the decoder must also be present in substantially the same functional form as in the corresponding encoder. For this reason, the subject matter of the disclosure focuses on the decoder operation. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques, which are described generically. Only in certain areas are more detailed descriptions necessary and are provided below.

[0081] In operation, in some examples, the source coder (530) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as "reference pictures." In this method, the coding engine (532) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as prediction references for the input picture.

[0082] The local video decoder (533) may decode the encoded video data of pictures that may be designated as reference pictures based on the symbols generated by the source coder (530). The operation of the encoding engine 532 may advantageously be lossy. When the encoded video data may be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence may typically be a copy of the source video sequence with some errors. The local video decoder (533) may replicate the decoding process that may be performed by the video decoder on the reference pictures, resulting in reconstructed reference pictures to be stored in the reference picture cache (534). In this way, the video encoder (503) may store copies of reconstructed reference pictures that have common content with the reconstructed reference pictures that would be obtained by the far-end video decoder (in the absence of transmission errors).

[0083] The predictor (535) may perform a prediction search for the coding engine (532). That is, for a new picture to be coded, the predictor (535) may search the reference picture memory (534) for sample data (such as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc. that may serve as suitable prediction references for the new picture. The predictor (535) may operate on a sample block-pixel block basis to find a suitable prediction reference. In some examples, the input picture may have prediction references derived from multiple reference pictures stored in the reference picture memory 534, as determined by the search results obtained by the predictor 535.

[0084] The control unit (550) may manage the encoding operations of the source coder (530), including, for example, setting parameters and subgroup parameters used for encoding the video data.

[0085] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (545), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.

[0086] The transmitter (540) may buffer the encoded video sequence generated by the entropy coder (545) to prepare it for transmission over a communication channel (560), which may be a hardware / software link to a storage device that may store the encoded video data. The transmitter 540 may merge the encoded video data from the video coder 503 with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).

[0087] A control unit (550) may manage the operation of the video encoder (503). During encoding, the control unit 550 may assign a particular encoding picture type to each encoded picture, which may affect the encoding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:

[0088] An intra picture (I-picture) may be a picture that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different kinds of intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art will recognize the variations of I-pictures and their respective applications and characteristics.

[0089] A predictive picture (P-picture) may be a picture that can be encoded and decoded using intra- or inter-prediction, in most cases using one motion vector and reference index to predict the sample values ​​of each block.

[0090] A bidirectionally predicted picture (B-picture) may be a picture that can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multi-predictive picture can use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0091] A source picture may commonly be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to the respective picture of the block. For example, blocks of I pictures may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of P pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of B pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0092] The video encoder (503) may perform encoding operations according to a given video encoding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (503) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore conform to a syntax specified by the video encoding technique or standard being used.

[0093] In one embodiment, the transmitter 540 may transmit additional data along with the coded video. The source coder (530) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other types of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0094] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (sometimes abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being coded / decoded is called a current picture and is partitioned into blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture can be coded by a vector called a motion vector. A motion vector points to a reference block in a reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are in use.

[0095] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures are used, such as a first reference picture and a second reference picture, both of which are before the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture can be coded with a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first reference block and the second reference block.

[0096] Furthermore, to improve coding efficiency, merge mode techniques can be used in inter-picture prediction.

[0097] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, pictures in a video picture sequence are partitioned into coding tree units (CTUs) for compression. The CTUs in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), i.e., one luma CTB and two chroma CTBs. Each CTU can be recursively quad-tree partitioned into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be partitioned into one CU of 64×64 pixels, or four CUs of 32×32 pixels, or 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine a prediction type of the CU, such as an inter prediction type or an intra prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values ​​(e.g., luma values) for pixels such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, and so on.

[0098] 6 shows a diagram of a video encoder (603) according to another embodiment of the present disclosure. The video encoder (603) is configured to receive a processed block of sample values ​​(e.g., a predictive block) in a current video picture in a video picture sequence and to encode the processed block into a coded picture that is part of the coded video sequence. In one example, the video encoder (603) is used in place of the video encoder (303) in the example of FIG. 3.

[0099] In an HEVC example, the video encoder (603) receives a matrix of sample values ​​for a processing block, such as a prediction block, such as 8×8 samples. The video encoder (603) determines whether the processing block is best coded using intra mode, inter mode, or bi-prediction mode, for example using rate-distortion optimization. When the processing block is coded in intra mode, the video encoder (603) may use intra prediction techniques to code the processing block into a coded picture. When the processing block is coded in inter mode or bi-prediction mode, the video encoder (603) may use inter prediction or bi-prediction techniques, respectively, to code the processing block into a coded picture. In certain video coding techniques, the merge mode may be an inter picture prediction sub-mode in which motion vectors are obtained from one or more motion vector predictors without a coded motion vector component in the predictor gear. In certain other video coding techniques, there may be a motion vector component applicable to the current block. In one example, the video encoder (603) includes other components, such as a mode decision module (not shown), to determine the mode of the processing block.

[0100] In the example of FIG. 6, the video encoder (603) includes an inter-encoder (630), an intra-encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a general control unit (621), and an entropy encoder (625) together as shown in FIG.

[0101] The inter-encoder (630) is configured to receive samples of a current block (e.g., a block being processed), compare the block to one or more reference blocks in a reference picture (e.g., blocks in previous and subsequent pictures), generate inter-prediction information (e.g., an account of redundant information due to inter-coding techniques, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a prediction block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on the encoded video information.

[0102] The intra encoder (622) is configured to receive samples of a current block (e.g., a block being processed), in some cases compare the block to already encoded blocks in a sample picture, and generate quantized coefficients after transformation, and in some cases also intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). In one example, the intra encoder (622) also calculates intra prediction results (e.g., predicted blocks) based on the intra prediction information and reference blocks in the same picture.

[0103] The general control unit (621) is configured to determine general control data and control other components of the video encoder (603) based on the general control data. In one example, the general control unit (621) determines the mode of the block and provides a control signal to the switch (626) based on the mode. For example, when the mode is an intra mode, the general control unit (621) controls the switch (626) to select an intra mode result for use by the residual calculator (623) and controls the entropy encoder (625) to select intra prediction information and include the intra prediction information in the bitstream, and when the mode is an inter mode, the general control unit (621) controls the switch (626) to select an inter prediction result for use by the residual calculator (623) and controls the entropy encoder (625) to select inter prediction information and include the inter prediction information in the bitstream.

[0104] The residual calculator (623) is configured to calculate a difference (residual data) between the received block and a selected prediction result from the intra-encoder (622) or the inter-encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data and generate transform coefficients. In one example, the residual encoder (624) is configured to transform the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be suitably used by the intra-encoder (622) and the inter-encoder (630). For example, the inter-encoder (630) can generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (622) can generate decoded blocks based on the decoded residual data and the intra-prediction information. The decoded blocks are appropriately processed to generate a decoded picture, which in some examples may be buffered in a memory circuit (not shown) and used as a reference picture.

[0105] The entropy encoder (625) is configured to format the bitstream to include the coded block. The entropy encoder (625) is configured to include various information in accordance with an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (625) is configured to include in the bitstream general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information. It is noted that, according to the disclosed subject matter, when encoding a block in a merged sub-mode of either an inter mode or a bi-prediction mode, the residual information is not present.

[0106] 7 shows a diagram of a video encoder (710) according to another embodiment of the present disclosure. The video decoder (710) is configured to receive coded pictures that are part of a coded video sequence and to decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (710) is used in place of the video decoder (310) in the example of FIG. 3.

[0107] In the example of FIG. 7, the video decoder (710) includes an entropy decoder (771), an inter decoder (780), a residual decoder (773), a reconstruction module (774), and an intra decoder (772) together as shown in FIG.

[0108] The entropy decoder (771) may be configured to reconstruct, from the coded picture, certain symbols that represent generated syntax elements of the coded picture. Such symbols may include, for example, prediction information (e.g., intra-mode, inter-mode, bi-directional mode, merge sub-mode or the latter two of another sub-mode) that can identify the coded mode of the block, certain samples or metadata used for prediction by the intra decoder (772) or the inter decoder (780), respectively, residual information, for example in the form of quantized transform coefficients, etc. In one example, when the prediction mode is an inter or bi-directional prediction mode, the inter prediction information is provided to the inter decoder (780), and when the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (772). The residual information is dequantized and provided to the residual decoder (773).

[0109] The inter decoder (780) is configured to receive the inter prediction information and to generate inter prediction results based on the inter prediction information.

[0110] The intra decoder (772) is configured to receive the intra prediction information and to generate a prediction result based on the intra prediction information.

[0111] The residual decoder (773) is configured to perform inverse quantization to extract inverse quantized transform coefficients, and process the inverse quantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require certain control information (to include Quantizer Parameters (QP)). This information may be provided by the entropy decoder (771) (data path not shown since this is only low capacity control information).

[0112] The reconstruction module (774) is configured to combine, in the spatial domain, the residual as output by the residual decoder (773) and the prediction result (possibly as output by an inter- or intra-prediction module) to form a reconstructed block, which may be part of a reconstructed picture, which in turn may be part of the reconstructed video. Other suitable operations, such as a deblocking operation, may be performed to improve visual quality.

[0113] It is noted that the video encoders (303), (503), and (603) and the video decoders (310), (410), and (710) may be implemented using any suitable technology. In one embodiment, the video encoders (303), (503), and (603) and the video decoders (310), (410), and (710) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (303), (503), and (503) and the video decoders (310), (410), and (710) may be implemented using one or more processors executing software instructions.

[0114] According to some embodiments, the CTU is partitioned into CUs using a quad tree binary tree (QTBT) structure, denoted as a coding tree, to accommodate different local characteristics of individual blocks contained in the CU. The decision to code a picture region using inter-picture (temporal) or intra-picture (spatial) prediction may be performed at the CU level. Each CU may be further partitioned into 1, 2, or 4 PUs according to a PU partition type. In some embodiments, within one PU, the same prediction process is applied, and related information is sent to the decoder for each PU. After obtaining the residual block by applying the prediction process based on the PU partition type, the CU may be partitioned into TUs according to another quad tree structure similar to the quad tree structure used for the coding tree of the CTU. In some other embodiments, a PU contains only one TU with the same shape as the PU.

[0115] A coding tree for a CTU may include multiple partition types including CU, PU, ​​and TU. In some embodiments, CU or UTTERLY may only be square, while PU may be square or rectangular for inter-predicted blocks. In other embodiments, square shaped CU, PU, ​​and TU are allowed. At picture boundaries, implicit quadtree partitioning may be applied. As a result, a block continues quadtree partitioning until the size of the partitioned block fits the picture boundary. According to some embodiments, implicit partitioning means that the partition flag is not signaled, but is instead implicitly indicated. For example, implicit QT means that only QT partitioning is allowed for picture boundary blocks. Thus, the partition flag is not signaled at picture boundaries. As another example, when only BT partitioning is allowed at picture boundaries, the implicit partitioning is bipartitioning. In some embodiments, when both QT and BT are allowed at picture boundaries, there is no implicit partitioning and the partitioning method is explicitly signaled.

[0116] According to some embodiments, the QTBT structure does not include multiple partition types (e.g., QTBT does not include the distinction between CU, PU, ​​and TU), and supports more flexibility for CU partition shapes. For example, in the QTBT block structure, a CU may have either a square or a rectangular shape. FIG. 8A illustrates an exemplary CTU (800) partitioned by the QTBT structure. For example, the CTU (800) is partitioned into four equally sized sub-CUs (A), (B), (C), and (D). FIG. 8B illustrates a corresponding coding tree showing branches corresponding to sub-CUs (A), (B), (C), and (D). The solid lines indicate quad-tree partitioning, and the dashed lines indicate binary tree partitioning. The binary tree structure may include two partition types: (i) symmetric horizontal partitioning, and (ii) symmetric vertical partitioning. At each partition (i.e., non-leaf) node of the binary tree, one flag may be signaled to indicate which partition type (e.g., horizontal or vertical) is used. Here, 0 indicates a horizontal split and 1 indicates a vertical split, or vice versa. In quadtree partitioning, the partition type is not indicated because it splits a block both horizontally and vertically to generate four sub-blocks of equal size.

[0117] As shown in Figures 8A and 8B, sub-CU (A) is first partitioned into two sub-blocks by a vertical division, where the left sub-block is again partitioned by another vertical division. Sub-CU (B) is further partitioned by a horizontal division. Sub-CU (C) is further partitioned by another 4-way partition. The top-left sub-block of sub-CU (C) is partitioned by a vertical division and then by a horizontal division. Furthermore, the bottom-right sub-block of sub-CU (C) is partitioned by a horizontal division. The top-right and bottom-left sub-blocks of sub-CU (C) are not further partitioned. Sub-CU (D) is not further partitioned and therefore does not include an additional leaf node in the coding tree under the "D" branch.

[0118] A binary tree leaf node may be called a CU. Here, the bisection may be used for prediction and transformation processes without any further partition. This means that CU, PU, ​​and TU have the same block size in the QTBT coding block structure. A CU may include coding blocks (CBs) of different color components. For example, in the case of P and B slices with 4:2:0 chroma format, one CU includes one luma CB and two chroma CBs, and sometimes may include a CB of a single component (e.g., in the case of an intra picture or I slice, one CU includes only one luma CB or only two chroma CBs). In some embodiments, in an intra picture or I slice, the TU width or height is constrained not to exceed a given limit (e.g., 64 for luma and 32 for chroma). If the CB width or height is larger than the limit, the TU is further divided until the size of the TU does not exceed the limit.

[0119] According to some embodiments, the QTBT partition scheme includes the following parameters: CTU size: The size of the root node of the quadtree. MinQTSize: The minimum allowed quadtree leaf node size. MaxBTSize: The maximum allowed binary tree root node size. MaxBTDepth: The maximum allowed binary tree depth. MinBTSize: The minimum allowable binary tree leaf node size.

[0120] In one example of a QTBT partition structure, the CTU size may be set to 128x128 luma samples with two corresponding 64x64 blocks of chroma samples, MinQTSize may be set to 16x16, MaxBTSize may be set to 64x64, MinBTSize (for both width and height) may be set to 4x4, and MaxBTDepth may be set to 4. The QTBT partition structure is first applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes may have a size from 16x16 (i.e., MinBTSize) to 128x128 (i.e., CTUsize). If the leaf quadtree node is 128x128, it is not further split by a bi-tree because the size exceeds MaxBTSize (i.e., 64x64). Otherwise, the leaf quadtree node may be further partitioned by a bi-tree. Therefore, the quadtree leaf node is also the root node of the binary tree, and the quadtree leaf has a binary tree depth such as 0. When the binary tree depth reaches MaxBTDepth (e.g., 4), no further splitting is performed. When a binary tree node has a width equal to MinBTSize (e.g., 4), no further horizontal splitting is performed. Similarly, when a binary tree node has a height equal to MinBTSize, no further vertical splitting is performed. The leaf node of the binary tree is further processed by the prediction and transform process without any further partitions. In some embodiments, the maximum CTU size is 256x256 luma samples.

[0121] The QTB partition structure may further support the ability for luma and chroma components to each have a separate QTBT structure. For example, in P and B slices, the luma and chroma CTBs in one CTU may share the same QTBT structure. However, in an I slice, the luma CTB is partitioned into CUs with a QTBT structure, and the chroma CTB is partitioned into chroma CUs with another QTBT structure. Thus, in this example, a CU() in an I slice contains a coding block of a luma component or a coding block of two chroma components, and a CU in a P or B slice contains coding blocks of all three color components.

[0122] In some embodiments, inter-prediction of small blocks is constrained to reduce memory access requirements for motion compensation, so bi-prediction is not supported for 4x8 and 8x4 blocks, and inter-prediction is not supported for 4x4 blocks. In other embodiments, the QTBT partition scheme does not include these constraints.

[0123] According to some embodiments, a Multi-type-tree (MTT) structure includes (i) a quadtree partition, (ii) a binary tree partition, and (iii) horizontal and vertical center-edge ternary trees. FIG. 9A shows an embodiment of a vertical center-edge ternary tree. FIG. 9B shows an example of a horizontal center-edge ternary tree. Compared to the QTBT structure, the MTT may be a more flexible tree structure since additional structures are allowed.

[0124] Ternary tree partitioning specifically includes advantageous features such as that ternary tree partitioning can capture objects located in the block center, providing a complement to quad-tree and binary tree partitioning when quad-tree and binary tree divisions are along the block center. Another advantage of ternary tree partitioning is that the width and height of the proposed ternary tree partitions are powers of two. As a result, no additional transformation is required. The two-level tree provides the benefit of reduced complexity. As an example, the complexity of traversing the tree is TD, where T represents the number of division types, and DNN is the depth of the tree.

[0125] There are different YUV or chroma formats, which are illustrated in Figures 10A to 10D. Each chroma format may define a different downsampling grid for different color components.

[0126] The colors of the video samples may be represented in different color formats (e.g., YCbCr or RGB). In the RGB format, the three components (i.e., R, G, and B) have a strong correlation, resulting in statistical redundancy among the three color components. The color representation of the video samples may be converted to a different color space using a linear transformation. Converting the RGB color space to the YUV color space may be performed as follows:

number

[0127] Converting the RGB color space to the YUV color space may be performed as follows.

number

[0128] For efficient encoding of RGB video content, an in-loop Adaptive Colour Transform (ACT) has been developed, where ACT operates in the residual domain. A CU-level flag may be signaled to indicate the use of ACT. The forward ACT colour transform (e.g., the transform performed in the encoder) may be performed as follows:

number

[0129] The inverse ACT color transform (eg, the inverse transform performed in the decoder) may be performed as follows.

number

[0130] FIG. 11 illustrates an example encoder 1100 that performs color space conversion. In FIG. 11, before the color space conversion is performed, prediction is performed. For example, inter-prediction or intra-prediction is performed on the current block to generate a residual signal. The residual signal is applied to a forward color space conversion unit (1102) that performs a forward transform such as the transform in equation (7). The output of the forward color space conversion is provided to a cross component production (CCP) unit (1102). The output of the CCP unit (1102) is provided to a transform (T) unit (1106) that performs a type of transform such as a discrete cosine transform (DCT). The output of the transform unit (1106) is provided to a quantizer (Q) (1108) that generates coefficients. The coefficients are provided to an entropy coder unit (1110) that provides a bitstream. The entropy coder unit (1110) may receive a mode / mv signal to select a particular mode of operation for the entropy coder.

[0131] The encoder (1100) may also include a component that converts the bitstream into a residual signal. For example, the bitstream generated by the entropy coder (1110) may be provided to an inverse quantizer (IQ) unit (1112). The output of the inverse quantizer unit (IQ) may be provided to an inverse transform (IT) unit (1114). The output of the inverse transform unit (1114) may be provided to an inverse CCP unit (1116). The output of the inverse CCP unit (1116) may be provided to an inverse color space transform (1118), where an inverse color transform, such as the transform shown in equation (8), may be performed.

[0132] FIG. 12 illustrates an exemplary decoder (1200) that converts a bitstream into a residual signal. The bitstream illustrated in FIG. 12 may be the bitstream generated by the entropy coder (1110) (FIG. 11). The bitstream may be provided to an entropy decoder unit (1202). An output of the entropy decoder unit (1202) may be provided to an inverse quantizer (IQ) unit (1204). An output of the inverse quantizer unit (IQ) may be provided to an inverse transform (IT) unit (1206). An output of the inverse transform unit (1204) may be provided to an inverse CCP unit (1208). An output of the inverse CCP unit (1208) may be provided to an inverse color space transform (1210), where an inverse color transform, such as the transform shown in equation (8), may be performed to generate a residual signal. Intra prediction or inter prediction may be performed on the residual signal to decode the current block. The units disclosed in Figures 11 and 12 may be implemented in software, by a processor, or by circuitry such as dedicated integrated circuits designed to perform the functions of each unit.

[0133] For the chroma components of an intra PU, the encoder may select the best chroma prediction mode from eight modes, including Planar, DC, Horizontal, Vertical, Direct Copy of Intra Prediction Mode from Luma Component (DM), Left and Top Cross-component Linear Mode (LT_CCLM), Left Cross-component Linear Mode (L_CCLM), and Top Cross-component Linear Mode (T_CCLM). LT_CCLM, L_CCLM, and T_CCLM can be classified as Cross-component Linear Modes (CCLMs). The difference between these three modes is that different regions of neighboring samples may be used to derive the parameters α and β. In LT_CCLM, both the left and top neighboring samples may be used to derive the parameters α and β. In L_CCLM, in some examples, only the left neighboring samples are used to derive the parameters α and β. In T_CCLM, in some examples, only the top neighboring samples are used to derive the parameters α and β.

[0134] A Cross-Component Linear Model (CCLM) prediction mode may be used to reduce cross-component redundancy, where a chroma sample is predicted based on a reconstructed luma sample of the same CU using an exemplary linear model as follows:

number

[0135] where predC(i,j) represents the predicted chroma sample in a CU and recL(i,j) represents the downsampled reconstructed luma sample of the same CU. The parameters α and β may be derived by a linear equation, which may be called a max-min method. Because this computation may be performed as part of the decoding process, rather than as a search operation in the encoder, no syntax may be used to communicate the values ​​of α and β.

[0136] For chroma 4:2:0 format, CCLM prediction may apply a 6-tap interpolation filter to obtain downsampled luma samples corresponding to chroma samples as shown in Figure 13. Based on the formula, the downsampled luma samples Rec'L[x,y] are calculated from the reconstructed luma samples.

[0137] The downsampled luma samples may be used to find the maximum and minimum sample points. Two points (luma and chroma pairs) (A,B) may be the minimum and maximum values ​​among a set of neighboring luma samples, as shown in FIG.

[0138] The linear model parameters α and β may be obtained according to the following equation:

number

[0139] Advantageously, by using multiplication and shift operations, division operations are avoided. A Look-up Table (LUT) may be used to store pre-calculated values, and the absolute difference value between the maximum and minimum luma samples may be used to specify the entry index of the LUT. The size of the LUT may be 512.

[0140] 14A and 14B show exemplary locations of samples used for deriving α and β in LT_CCLM. In T_CCLM mode, in some examples, only upper neighboring samples (including 2*W samples) are used to calculate linear model coefficients. Figures 15A and 15B show exemplary locations of samples used for deriving α and β in T_CCLM.

[0141] In the L_CCLM mode, in some examples, only the left neighboring samples (including 2*H samples) are used to calculate the linear model coefficients. Figures 16A and 16B show example positions of samples used for the derivation of α and β in L_CCLM.

[0142] The CCLM prediction mode may also include prediction between two chroma components (i.e., the Cr component is predicted from the Cb component). Instead of using the reconstructed sample signal, CCLM Cb-to-Cr prediction may be applied in the residual domain. CCLM Cb-to-Cr prediction may be performed by adding a weighted reconstructed Cb residual to the original Cr intra prediction to form the final Cr prediction.

number

[0143] The CCLM luma-chroma prediction mode may be added as one additional chroma intra prediction mode. At the encoder side, an additional rate distortion (RD)c cost check is added for the chroma components to select the chroma intra prediction mode. When an intra prediction mode other than the CCLM luma-chroma prediction mode is used for the chroma components of a CU, CCLM Cb-to-Cr prediction is used for the Cr component prediction.

[0144] Multiple Model CCLM (MMLM) is another extension, where there can be more than one model (e.g., two or more models). In MMLM, neighboring luma samples and neighboring chroma samples of the current block may be classified into two groups, where each group may be used as a training set to derive a linear model (i.e., a specific α and β are derived for a specific group). Furthermore, the samples of the current luma block may be classified based on the same rules for the classification of neighboring luma samples.

[0145] Figure 17 shows an example of classifying neighboring samples into two groups. The threshold shown in Figure 17 may be calculated as the average value of neighboring reconstructed luma samples. Neighboring samples with Rec'L[x,y] <= threshold are classified into group 1, while neighboring samples with Rec'L[x,y] > threshold are classified into group 2.

number

[0146] For efficient encoding of input video in RGB format, in order to enable in-loop color transformation in VVC, the interaction between the post-color transformation and some coding tools in VVC, such as cross-component linear model and dual tree partition, needs to be handled. The embodiments of the present disclosure provide a highly advantageous feature of handling color transformation by coding tools in VVC.

[0147] The embodiments of the present disclosure may be used separately or combined in any order. Furthermore, each of the methods, encoders, and decoders according to the embodiments of the present disclosure may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium. According to the embodiments of the present disclosure, the term "block" may be interpreted as a prediction block, a coding block, or a coding unit (i.e., CU). According to the embodiments of the present disclosure, the term "luma component" may represent any color component (e.g., a red (R) or green (G) color component) that is coded as the first component in coding order. Furthermore, according to the embodiments of the present disclosure, the term "chroma component" may represent any color component that is not coded as the first component in coding order.

[0148] According to some embodiments, color transformations such as ACT are applied before prediction processing is performed in the encoder and after reconstruction processing is performed in the decoder. In the encoder, ACT may be performed before prediction (e.g., inter-prediction, intra-prediction), and when ACT is applied to the current CU, both the reference samples and the input original samples may be mapped to different color spaces. In pixel reconstruction in the decoder, when ACT is applied to the block being reconstructed, the reference samples may be mapped to an alternative color space before being used for prediction, and the reconstructed samples may then be reverse-mapped back to the original color space.

[0149] FIG. 18 shows an embodiment of an encoder and decoder using ACT. The units disclosed in FIG. 18 may be implemented in software, by a processor, or by a circuit such as a dedicated integrated circuit designed to perform the functions of each unit disclosed in FIG. 18. In the encoder, the ACT units (1800) and (1804) perform an ACT transform on both the reference signal and the input signal, respectively. The ACT transform performed in the encoder by the ACT units (1800) and (1804) may be the ACT transform disclosed in equation (7). The output of the ACT (1800) is provided to a prediction (P) unit (1802). In addition, the reference signal is provided to a prediction (P) unit (1806). The prediction (P) units (1802) and (1806) may perform inter prediction or intra prediction. The transform (T) unit 1808 receives one of: (i) a difference between the output of the prediction (P) unit (1802) and the output of the prediction (P) unit (1806); and (ii) a difference between the output of the prediction (P) unit (1806) and the input signal. The transform unit (1808) may perform a transform operation, such as a discrete cosine transform (DCT). The output of the transform (T) unit (1808) is provided to a quantizer unit (Q) (1810), which performs a quantization operation to generate a set of coefficients.

[0150] At the decoder, an inverse quantizer (IQ) unit (1812) receives the coefficients to perform an inverse quantization process. The output of the inverse quantizer (IQ) unit (1812) may be provided to an inverse transform (IT) unit (1814) that performs an inverse transform. An ACT unit (1820) receives the sum of the output of the prediction (P) unit (1818) and the output of the inverse transform (IT) (1814) unit. An ACT unit (1816) receives the output of the prediction (P) unit (1818). The ACT units (1816) and (1820) may perform an inverse color transform, such as the inverse color transform disclosed in equation (8). The prediction (P) units (1818) and (1822) may perform inter prediction or intra prediction. A reconstructed reference signal is provided by the output of the ACT unit (1816), and a reconstructed original signal is provided by the output of the ACT unit (1820).

[0151] According to some embodiments, in the ACT process, the second and third color components are further offset by a constant c after and before the color transformation for the forward and inverse transforms, respectively. Equation (14) shows the modified forward transform, and equation (15) shows the modified inverse (i.e., inverse) transform.

number

[0152] According to some embodiments, color transform is applied only when different color components are coded using the same transform unit partition tree. In one embodiment, when DualTree is applied to intra slices, color transform is applied only to inter slices.

[0153] According to some embodiments, when a color transform is applied, the CCLM mode is not applied or signaled since the generation of residual samples from one component depends on the reconstruction of another component. In another embodiment, when a CCLM mode is used, the color transform is not applied or signaled. In one embodiment, when a color transform is applied to intra residual samples, the CCLM mode is not applied or signaled since the generation of residual samples from one component depends on the reconstruction of another component. In one embodiment, when a color transform is applied to residual samples and a CCLM mode is used, the color transform is not applied or signaled.

[0154] In some embodiments, the color transform is signaled per CTU, which is the largest coding unit (CU).

[0155] In some embodiments, color transforms are signaled and applied only for intra-coded blocks or only for inter-coded blocks, and in some embodiments, when color transforms are applied, DualTree is not applied (i.e., different color components share the same transform unit partition).

[0156] FIG. 19 illustrates an embodiment of a process performed by an encoder such as encoder (603). The process begins at step (S1900) where it is determined whether a color conversion condition is satisfied. For example, the color conversion condition may be a flag indicating whether color conversion is enabled for the current block. As another example, the color conversion condition may be a flag indicating whether color conversion is enabled for each block in the CTU. If the color conversion condition is satisfied, the process proceeds to step (S1902) where a color conversion is performed on the current block. For example, the color conversion may be the ACT operation shown in equation (7).

[0157] The process proceeds from step (S1902) to step (S1904) where a prediction is performed on the color transformed current block. The prediction may be an inter prediction or an intra prediction. If the color transformation condition is not satisfied in step (S1900), the process proceeds from step (S1900) to step (S1904). The process proceeds from step (S1904) to step (S1906) where a transform operation such as a DCT is performed on the predicted current block. The process proceeds to step (S1908) where a quantization operation is performed on the color transformed current block. The output of the quantization operation may be a set of coefficients included in the bitstream sent to the decoder. The process shown in FIG. 19 may end after step (S1908) is performed.

[0158] FIG. 20 illustrates an embodiment of a process performed by a decoder, such as the decoder (710). The process may begin at step (S2000), where an encoded video bitstream is received. The bitstream may include coefficients generated by step (S1908) (FIG. 19). The process proceeds to step (S2002), where inverse quantization is performed on a set of coefficients corresponding to a current block. The process proceeds to step (S2004), where an inverse transform is performed on an output of the inverse quantization of the current block. The process proceeds to step (S2006), where prediction, such as inter-prediction or intra-prediction, is performed on an output of the inverse transform corresponding to the current block. At step (S2008), it is determined whether a color transform condition is satisfied for the current block. For example, the color transform condition may be a flag indicating whether color transform is enabled for the current block. As another example, the color transform condition may be a flag indicating that color transform is enabled for each block in the CTU. If the color transformation condition is met, the process proceeds to step (S2010), where an inverse color transformation is performed on the current block. For example, the inverse color transformation may be the ACT operation shown in equation (8). If the color transformation condition is not met, the process shown in FIG. 20 ends. The process shown in FIG. 20 may end after step (S2010) is performed.

[0159] The techniques described above can be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, Figure 21 illustrates a computer system (2100) suitable for implementing certain embodiments of the subject matter of this disclosure.

[0160] Computer software can be encoded using any suitable machine code or computer language that can be processed by mechanisms such as assembly, compilation, linking, etc. to generate code including instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., directly or through interpretation, microcode execution, etc.

[0161] The instructions may be executed in a variety of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.

[0162] 21 of the computer system (2100) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. Furthermore, the configuration of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of the computer system (2100).

[0163] The computer system (2100) may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, through sensory input (e.g., keystrokes, swipes, data grabbing actions), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as sound (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a digital camera), and video (including, for example, two-dimensional video, three-dimensional video, stereoscopic video).

[0164] The input human interface devices may include one or more of a keyboard (2101), a mouse (2102), a trackpad (2103), a touch screen (2110), a data glove (not shown), a joystick (2105), a microphone (2106), a scanner (2107), and a camera (2108) (only one of which is shown).

[0165] The computer system (2100) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through sensory output, sound, light, and smell / taste. Such human interface output devices may include sensory output devices (e.g., sensory feedback via a touch screen (2110), data glove (not shown), or joystick (2105 (although there may also be sensory feedback devices that do not function as input devices)), audio output devices (e.g., speakers (2109), headphones (not shown), visual output devices (e.g., screens (2110), including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capability, each with or without sensory feedback capability, some of which may be capable of outputting two-dimensional visual output or three or more dimensional output through such means as stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (not shown)).

[0166] The computer system (2100) may also include human accessible storage and associated media such as optical media such as CD / DVD ROM / RW (2120) with media such as CDs / DVDs (2121), thumb drives (2122), removable hard drives or solid state drives (2123), legacy magnetic media such as tape and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), etc.

[0167] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.

[0168] The computer system (2100) may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan area, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LET, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, vehicular and industrial including CANBus, etc. Certain networks generally require an external network interface that is attached to a specific general purpose data port or peripheral bus (2149) (e.g., a USB port on the computer system (2100)). Others are generally integrated into the core of the computer system (2100) by attachment to a system bus as described below (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using these networks, the computer system (2100) can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a specific CANbus device), or two-way to other computer systems, for example, using local or wide area digital networks. Specific protocols and protocol stacks may be used in each of the above mentioned networks and network interfaces.

[0169] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to a core (2140) of the computer system (2100).

[0170] The cores (2140) may include one or more central processing units (CPUs) (2141), graphics processing units (GPUs) (2142), dedicated programmable processing units (2143) in the form of GPS, hardware accelerators (2144) for specific tasks, etc. These devices may be connected through a system bus (2148), along with read only memory (ROM) (2145), random access memory (2146), internal mass storage devices (2147) such as internal non-user accessible hard drives, SSDs, etc. In some computer systems, the system bus 2148 is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripherals may be attached directly to the core's system bus 2148 or through a peripheral bus 2149. Peripheral bus architectures include PCI, USB, etc.

[0171] The CPU (2141), GPU (2142), FPGA (2143), and accelerator (2144) may execute certain instructions that may be combined to generate the aforementioned computer code. The computer code may be stored in a ROM (2145) or a RAM (2146). Temporary data may also be stored in the RAM (2146), while permanent data may be stored, for example, in an internal mass storage device (2147). Rapid storage and retrieval from any of the memory devices may be made possible through the use of a cache memory that may be closely associated with one or more of the CPU (2141), GPU (2142), mass storage device (2147), ROM (2145), RAM (2146), etc.

[0172] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0173] As an example and not by way of limitation, the computer system (2100) having the architecture, and specifically the core (2140), can provide functionality as a result of the processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be specific storage of the core (2140) of a non-transitory nature, such as the core's internal mass storage (2147) or ROM (2145), and media associated with user-accessible mass storage as described above. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2140). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (2140) and specifically the processor therein (including CPU, GPU, FPGA, etc.) to perform certain operations or certain parts of certain operations described herein, including defining and modifying data structures stored in RAM (2146) according to software-defined operations. Additionally or alternatively, the computer system may provide functionality as a result of implementation in hardwired or other circuitry (e.g., accelerator (2144)) that can operate in conjunction with or in place of software to perform certain processes or certain portions of certain processes described herein. Reference to software includes logic, and vice versa, where appropriate. Reference to computer-readable medium may include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that implements logic for execution, or both, where appropriate. The present disclosure includes any appropriate combination of hardware and software. Appendix A: Glossary 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 GOPs: Groups of Pictures TUs: Transform Units, PUs: Prediction Units CTUs: Coding Tree Units CTBs: Coding Tree Blocks PBs: Prediction Blocks HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPUs: Central Processing Units GPUs: Graphics Processing Units 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 communications LTE: Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Areas SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit

[0174] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents, which are encompassed within the scope of this disclosure. It will be apparent to those skilled in the art that numerous systems and methods can be devised that, although not explicitly shown or described herein, embody the principles of the disclosure and thus are encompassed within the spirit and scope of the disclosure.

[0175] (1) A method of video decoding performed in a video decoder, the method comprising: receiving an encoded video bitstream including a current picture; performing inverse quantization on a current block included in the current picture; performing an inverse transform on the current block after performing the inverse quantization; performing a prediction process on the current block after performing the inverse transform; determining whether a predetermined condition is met after performing the prediction process on the current block; in response to determining that the predetermined condition is satisfied, performing an inverse color transform on the current block; The method includes:

[0176] (2) The method according to feature (1), wherein the inverse color transform is an inverse adaptive color transform (ACT), and performing the inverse color transform converts the constructed current block from the recolor space transform into an RGB format.

[0177] (3) The method of any one of features (1) to (2), wherein the step of performing the inverse color transform includes the step of subtracting a constant from one or more color components of the inverse color transform.

[0178] (4) The method of feature (3), wherein the constant is derived by performing a left shift operation that subtracts one from the bit depth of the input samples.

[0179] (5) The method of any one of features (1) to (4), wherein the predetermined condition is satisfied in response to a determination that a color transform is signaled for the current block.

[0180] (6) The method according to feature (5), wherein the color transform is signaled for each coding tree unit (CTU) having a largest coding unit (CU).

[0181] (7) A method according to any one of features (1) to (6), wherein the predetermined condition is satisfied in response to a determination that different color components of the inverse color transform are coded using the same transform unit partition tree.

[0182] (8) The method according to feature (7), wherein in response to a determination that DualTree is applied to intra slices, the inverse color transform is applied only to inter slices.

[0183] (9) A method according to any one of features (1) to (8), further comprising: in response to a determination that the predetermined condition is met, a cross-component linear mode (CCLM) is not applied to the chroma units of the current block.

[0184] (10) The video decoding method according to any one of features (1) to (9), wherein the prediction process is one of inter prediction or intra prediction.

[0185] (11) A video decoder for video decoding, comprising: a processing circuit, the processing circuit comprising: receiving an encoded video bitstream including a current picture; performing inverse quantization on a current block included in the current picture; performing an inverse transform on the current block after performing the inverse quantization; After performing the inverse transform, a prediction process is performed on the current block; determining whether a predetermined condition is met after performing the prediction process on the current block; in response to determining that the predetermined condition is satisfied, performing an inverse color transform on the current block. A video decoder configured for:

[0186] (12) The video decoder of feature (11), wherein the inverse color transform is an inverse adaptive color transform (ACT), and performing the inverse color transform converts a reconstructed current block from a color space transformation into an RGB format.

[0187] (13) The video decoder of feature (11) or (12), wherein performing the inverse color transform includes the processing circuit being configured to subtract a constant from one or more color components of the inverse color transform.

[0188] (14) The video decoder of feature (13), wherein the constant is derived from performing a left shift operation that subtracts one from a bit depth of the input samples.

[0189] (15) The video decoder according to any one of features (11) to (14), wherein the predetermined condition is satisfied in response to a determination that a color transform is signaled for the current block.

[0190] (16) The video decoder of feature (15), wherein the color transform is signaled for each coding tree unit (CTU) having a largest coding unit (CU).

[0191] (17) A video decoder according to any one of features (11) to (16), wherein the predetermined condition is satisfied in response to a determination that different color components of the inverse color transform are encoded using the same transform unit partition tree.

[0192] (18) The video decoder of feature (17), wherein in response to a determination that DualTree is applied to intra slices, the inverse color transform is applied only to inter slices.

[0193] (19) The video decoder of feature (11), wherein in response to determining that the predetermined condition is met, a cross-component linear mode (CCLM) is not applied to the chroma units of the current block.

[0194] (20) A non-transitory computer-readable medium having instructions stored thereon, the instructions, when executed by a processor within a video decoder, causing the video decoder to perform a method, the method comprising: receiving an encoded video bitstream including a current picture; performing inverse quantization on a current block included in the current picture; performing an inverse transform on the current block after performing the inverse quantization; performing a prediction process on the current block after performing the inverse transform; determining whether a predetermined condition is met after performing the prediction process on the current block; in response to determining that the predetermined condition is satisfied, performing an inverse color transform on the current block; A non-transitory computer readable medium comprising:

Claims

1. 1. A method of video encoding performed in a video encoder, comprising: generating residual samples of a first format for the current block; determining whether a predetermined condition is met; generating second-format residual samples by performing a color transformation on the first-format residual samples if the predetermined condition is met; performing a transform and a quantization on the second format residual samples; Including, The color transformation is applied to intra-coded blocks only when DualTree is not applied. method.

2. the color transformation is an adaptive color transformation (ACT), the first format is an RGB format; the second format is a non-RGB format; The method of claim 1.

3. performing the color transform includes offsetting one or more color components of the color transform by a constant. The method according to claim 1 or 2.

4. The constant is determined based on 1<<(bitDepth-1), where bitDepth represents the bit depth of the input samples. The method of claim 3.

5. the predetermined condition is satisfied in response to determining that the color transform is signaled for the current block.

4. The method according to any one of claims 1 to 3.

6. The color transform is signaled for each coding tree unit (CTU) having a largest coding unit (CU). The method of claim 5.

7. the predetermined condition is satisfied in response to determining that different color components of the color transform are coded using the same transform unit partition tree.

7. The method according to any one of claims 1 to 6.

8. In response to determining that a DualTree partition is applied to an intra-slice, the color transform is applied only to an inter-slice, and the DualTree partition includes a different transform unit partition for each color component. The method of claim 7.

9. If the predetermined condition is met, a cross-component linear mode (CCLM) is not applied to the chroma units of the current block.

9. The method according to any one of claims 1 to 8.

10. the color transform is applied only to intra-coded blocks when different color components share the same coding unit partition tree; 10. The method according to any one of claims 1 to 9.

11. 1. A method of video encoding performed in a video encoder, comprising: generating residual samples of a first format for the current block; determining whether a predetermined condition is met; generating second-format residual samples by performing a color transformation on the first-format residual samples if the predetermined condition is met; performing a transform and a quantization on the residual samples in the second format; generating an encoded video bitstream; storing the encoded video bitstream on a storage medium; Including, The color transformation is applied to intra-coded blocks only when DualTree is not applied. method.

12. 1. A method of video encoding performed in a video encoder, comprising: generating residual samples for the current block; determining whether a predetermined condition is met; generating a first output by performing a color transform on the residual samples if the predetermined condition is met; generating a second output by transforming and quantizing the first output; Including, The color transformation is applied to intra-coded blocks only when DualTree is not applied. method.

13. 1. A method of video encoding performed in a video encoder, comprising: generating residual samples for the current block; determining whether a predetermined condition is met; generating a first output by performing a color transform on the residual samples if the predetermined condition is met; generating a second output by transforming and quantizing the first output; generating an encoded video bitstream based on the second output; storing the encoded video bitstream on a storage medium; Including, The color transformation is applied to intra-coded blocks only when DualTree is not applied. method.