Decoupling transformation partitioning
Decoupled transform partitioning for luma and chroma blocks addresses inefficiencies in existing video coding techniques, enhancing compression efficiency by optimizing bit allocation and reducing redundancy.
Patent Information
- Application Number
- JP2024067913
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-12-29
- Filing Date
- 2024-04-19
- Publication Date
- 2025-10-01
- Estimated Expiration
- 2042-01-18
AI Technical Summary
Existing video coding techniques face challenges in efficiently reducing redundancy and optimizing transform block partitioning, particularly in intra-prediction and motion compensation, which affects compression efficiency and bit allocation.
The proposed method involves decoupled transform partitioning for luma and chroma blocks, where chroma blocks are partitioned independently of luma blocks, allowing for more flexible and efficient coding strategies, including separate coding block partitioning trees for luma and chroma components.
This approach enhances compression efficiency by optimizing bit allocation and reducing redundancy, leading to improved video coding performance and reduced data requirements.
Smart Images

Figure 0007747408000002 
Figure 0007747408000003 
Figure 0007747408000004
Abstract
Description
[Technical Field]
[0001] This disclosure relates to video coding and / or decoding techniques, and in particular to improved design and signaling of decoupled transform partitioning.
[0002] This application is based on and claims the benefit of priority to U.S. Provisional Application No. 63 / 157,516, filed March 5, 2021, and U.S. Non-Provisional Application No. 17 / 564,566, filed December 29, 2021, both of which are incorporated herein by reference in their entireties. [Background technology]
[0003] This background discussion provided herein is to generally present the context for the present disclosure. The work of the presently named inventors is not admitted expressly or impliedly as prior art to the present disclosure to the extent that that work is described in this background section, as well as in described aspects that may not otherwise qualify as prior art at the time of the filing of this application.
[0004] Video coding and decoding may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a series of pictures, each having spatial dimensions of, for example, 1920 x 1080 luma samples and associated full or subsampled chrominance samples. The series of pictures may have a fixed or variable picture rate (alternatively referred to as a frame rate), for example, 60 pictures per second or 60 frames per second. Uncompressed video has specific bitrate requirements for streaming or data processing. For example, a video with a pixel resolution of 1920 x 1080, a frame rate of 60 frames per second, and 4:2:0 chroma subsampling with 8 bits per pixel per color channel requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.
[0005] One goal of video coding and decoding can be the reduction of redundancy in an uncompressed input video signal through compression. Compression can sometimes help reduce the aforementioned bandwidth and / or storage requirements by more than two orders of magnitude. Both lossless and lossless compression, as well as combinations thereof, can be employed. Lossless compression refers to a technique in which an exact copy of the original signal can be reconstructed from a compressed original signal through a decoding process. Lossy compression refers to a coding / decoding process in which the original video information is not fully preserved during coding and cannot be fully recovered during decoding. When lossy compression is used, the reconstructed signal may not be identical to the original signal. However, the distortion between the original and reconstructed signal is small enough to make the reconstructed signal useful for its intended application, even with some information loss. For video, lossy compression is widely used in many applications. The amount of acceptable distortion depends on the application. For example, a user of a given consumer video streaming application may tolerate higher distortion than a user of a movie or television broadcast application. The compression ratio achievable by a particular coding algorithm can be selected or adjusted to reflect different distortion tolerances: higher tolerable distortion generally allows for coding algorithms that result in higher loss and higher compression ratios.
[0006] Video encoders and decoders can utilize techniques from several broad categories and steps, including, for example, motion compensation, Fourier transforms, quantization, and entropy coding.
[0007] Video codec technology can include a technique known as intra-coding. In intra-coding, sample values are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, a picture is spatially divided into blocks of samples. If all blocks of samples are coded in intra mode, the picture may be referred to as 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 picture. The samples of the block after intra-prediction can then be transformed into the frequency domain, and the transform coefficients so generated can be quantized before entropy coding. Intra-prediction refers to a technique that minimizes sample values in the pre-transform domain. In some cases, the smaller the DC value and AC coefficients after the transform, the fewer bits are required at a given quantization step size to represent the block after entropy coding.
[0008] Traditional intra-coding, e.g., as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt to code / decode blocks based on surrounding sample data and / or metadata, e.g., obtained during the encoding and / or decoding of spatial neighbors and preceding in decoding order the intra-coded or decoded data. Such techniques are hereafter referred to as "intra prediction" techniques. Note that, at least in some cases, intra-prediction uses reference data only from the current picture being reconstructed, and not from other reference pictures.
[0009] Many different forms of intra-prediction exist. If more than one of these techniques is available in a given video coding technique, the technique used may be referred to as an intra-prediction mode. One or more intra-prediction modes may be provided in a particular codec. In certain cases, a mode may have sub-modes and / or may be associated with various parameters, and the mode / sub-mode information and intra-coding parameters for a block of video may be included individually or collectively in a mode codeword. The codeword used for a given mode, sub-mode, and / or parameter combination may affect the coding efficiency gain through intra-prediction, as may the entropy coding technique used to convert the codeword into a bitstream.
[0010] Certain modes of intra prediction were introduced in H.264, refined in H.265, and further refined in newer coding techniques such as the Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). Generally, for intra prediction, a predictor block may be formed using available neighboring sample values. For example, available values for a particular set of neighboring samples along a given direction and / or line may be copied into the predictor block. A reference to the direction in use may be coded in the bitstream or may itself be predicted.
[0011] Referring to FIG. 1A, shown at the bottom right is a subset of nine predictor directions specified among the 33 possible intra-predictor directions in H.265 (corresponding to the 33 angle modes out of the 35 modes specified in H.265). The point where the arrows converge (101) represents the sample being predicted. The arrows represent the direction in which neighboring samples are used to predict the sample at 101. For example, arrow (102) indicates that sample (101) is predicted to the upper right from neighboring samples at a 45-degree angle from horizontal. Similarly, arrow (103) indicates that sample (101) is predicted to the lower left from neighboring samples at a 22.5-degree angle from horizontal.
[0012] 1A , a square block (104) of 4×4 samples is shown in the upper left (indicated by a thick dashed line). The square block (104) includes 16 samples, each labeled with an “S” and including 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 of the block (104) in both the Y and X dimensions. Because the block size is 4×4 samples, S44 is located in the lower right. Also shown are exemplary reference samples, following a similar numbering scheme. The reference samples are labeled with R and their Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, prediction samples that neighbor the block being reconstructed are used.
[0013] Intra-picture prediction of block 104 can begin by copying reference sample values from adjacent samples according to a signaled prediction direction. For example, assume that a coded video bitstream includes a signal indicating the prediction direction of arrow (102) for this block 104. That is, samples are predicted at a 45-degree angle from horizontal, upward and to the right from the predicted sample. In such a case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted from reference sample R08.
[0014] In certain cases, particularly when the orientation is not evenly divisible by 45 degrees, the values of multiple reference samples may be combined, for example by interpolation, to calculate the reference sample.
[0015] As video coding technology continues to develop, the number of possible directions is increasing. For example, in H.264 (2003), nine different directions are available for intra prediction. This increased to 33 in H.265 (2013), and as of the time of this disclosure, JEM / VVC / BMS can support 65 child directions. Experimental studies have been conducted to help identify the most appropriate intra prediction directions, and certain techniques in entropy coding may be used to encode those most appropriate directions with a small number of bits, accepting a certain bit penalty for the direction. Furthermore, the direction itself can sometimes be predicted from neighboring directions used in intra prediction of decoded neighboring blocks.
[0016] FIG. 1B shows a schematic diagram (180) depicting the 65 intra-prediction directions according to the JEM, showing the increase in the number of prediction directions in the various encoding techniques developed over time.
[0017] The mapping method of bits representing intra-prediction directions to prediction directions in a coded video bitstream may vary from one video coding technique to another and may range, for example, from a simple direct mapping of prediction directions to complex adaptation schemes involving intra-prediction modes, codewords, most-likely modes, and similar techniques. However, in all cases, there may be intra-prediction directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is to reduce redundancy, in a well-designed video coding technique, less likely directions may be represented by more bits than more likely directions.
[0018] Inter-picture prediction, or inter-prediction, may be based on motion compensation. In motion compensation, sample data from a previously reconstructed picture or part thereof (reference picture) may be used for predicting a newly reconstructed picture or picture part (e.g., block) 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 (similar to the temporal dimension).
[0019] In some video compression techniques, the current MV applicable to a given region of sample data can be predicted from other MVs, e.g., from other MVs associated with other regions of sample data that are spatially adjacent to the region being reconstructed and precede the current MV in decoding order. Doing so can substantially reduce the overall amount of data required to code the MV by relying on the elimination of redundancy in correlated MVs, thereby increasing compression efficiency. MV prediction can work effectively, for example, when coding an input video signal derived from a camera (known as natural video), because there is a statistical possibility that regions larger than the region to which a single MV applies move in a similar direction in the video sequence and, therefore, in some cases, can be predicted using similar motion vectors derived from MVs of neighboring regions. As a result, the actual MV for a given region will be similar or identical to the MV predicted from surrounding MVs. Such an MV can then be represented with fewer bits after entropy coding than would be used if the MV were coded directly rather than predicted from neighboring MVs. In some cases, MV prediction may 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 may be lossy, for example, due to rounding errors in computing a predictor from some surrounding MVs.
[0020] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, “High Efficiency Video Coding”, December 2016). Among the many MV prediction mechanisms specified in H.265, one that will be described later is a technique called “spatial merge”.
[0021] Specifically, referring to Figure 2, a current block (201) contains samples found by the encoder during a motion search process to be predictable from a spatially shifted previous block of the same size. Instead of coding its MV directly, the MV can be derived from metadata associated with one or more reference pictures, e.g., using the MV associated with any of five surrounding samples denoted A0, A1, and B0, B1, B2 (202 to 206, respectively) from the most recent reference picture (in decoding order). In H.265, MV prediction can use predictors from the same reference picture as neighboring blocks. Summary of the Invention
[0022] This disclosure describes various embodiments of methods, apparatus, and computer-readable storage media for video encoding and / or decoding.
[0023] According to one aspect, an embodiment of the present disclosure provides a method for transform block partitioning in video decoding. The method includes receiving, by a device, a coded video bitstream for luma blocks and chroma blocks, the luma blocks being co-located with the chroma blocks. The device includes a memory that stores instructions and a processor in communication with the memory. The method also includes partitioning, by the device, the chroma blocks to obtain a luma coding block partitioning tree; partitioning, by the device, the luma coding blocks from the luma coding block partitioning tree to obtain a chroma coding block partitioning tree; and partitioning, by the device, the chroma coding blocks from the chroma coding block partitioning tree to obtain at least one plurality of chroma transform blocks.
[0024] According to another aspect, embodiments of the present disclosure provide an apparatus for video encoding and / or decoding, the apparatus including a memory that stores instructions and a processor in communication with the memory, the processor configured, when executing the instructions, to cause the apparatus to perform the above-described method for video decoding and / or encoding.
[0025] According to another aspect, embodiments of the present disclosure provide a non-transitory computer-readable medium storing instructions that, when executed by a computer for video decoding and / or encoding, cause the computer to perform the above-described method for video decoding and / or encoding.
[0026] These and other aspects and their implementations are described in detail in the drawings, specification, and claims. [Brief explanation of the drawings]
[0027] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Figure 1A] FIG. 1A shows a schematic diagram of an exemplary subset of intra-prediction direction modes. [Figure 1B] FIG. 1B shows an illustration of an exemplary intra-prediction direction. [Figure 2] FIG. 2 shows a schematic diagram of a current block and its surrounding spatial merging candidates for motion vector prediction in one example. [Figure 3] FIG. 3 shows a simplified block diagram of a communication system (300) according to one exemplary embodiment. [Figure 4] FIG. 4 shows a simplified block diagram of a communication system (400) according to one exemplary embodiment. [Figure 5] FIG. 5 shows a simplified block diagram of a video decoder according to one exemplary embodiment. [Figure 6] FIG. 6 shows a simplified block diagram of a video encoder according to one example embodiment. [Figure 7] FIG. 7 shows a block diagram of a video encoder according to another exemplary embodiment. [Figure 8] FIG. 8 shows a block diagram of a video decoder according to another exemplary embodiment. [Figure 9] FIG. 9 illustrates a coding block partitioning scheme according to an exemplary embodiment of the present disclosure. [Figure 10] FIG. 10 illustrates another coding block partitioning scheme in accordance with an exemplary embodiment of the present disclosure. [Figure 11]FIG. 11 illustrates another coding block partitioning scheme in accordance with an exemplary embodiment of the present disclosure. [Figure 12] FIG. 12 illustrates another coding block partitioning scheme in accordance with an exemplary embodiment of the present disclosure. [Figure 13] FIG. 13 illustrates a scheme for partitioning a coding block into multiple transform blocks and the coding order of the transform blocks according to an exemplary embodiment of this disclosure. [Figure 14] FIG. 14 illustrates a scheme for partitioning a coding block into multiple transform blocks and the coding order of the transform blocks according to an exemplary embodiment of this disclosure. [Figure 15] FIG. 15 illustrates another scheme for partitioning a coding block into multiple transform blocks in accordance with an exemplary embodiment of this disclosure. [Figure 16] FIG. 16 illustrates an example of a coding tree structure for luma and chroma components according to an exemplary embodiment of the present disclosure. [Figure 17] FIG. 17 illustrates a flowchart of a method according to an exemplary embodiment of the present disclosure. [Figure 18] FIG. 18 illustrates an example of decoupled transform partitioning for luma and chroma components according to an exemplary embodiment of the present disclosure. [Figure 19] FIG. 19 illustrates a schematic diagram of a computer system according to an exemplary embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0028] The present invention will now be described in detail hereinafter with reference to the accompanying drawings, which form a part hereof and which show, by way of illustration, specific examples of embodiments. It should be noted, however, that the invention may be embodied in a variety of different forms and, therefore, the subject matter covered or claimed is not intended to be construed as limited to any of the embodiments set forth below. It should also be noted that the present invention may be embodied as a method, device, component, or system. Thus, embodiments of the present invention may take the form of, for example, hardware, software, firmware, or any combination thereof.
[0029] Throughout the specification and claims, terms may have a nuanced meaning beyond their explicitly stated meaning, as suggested or implied by the context. As used herein, the phrases "in one embodiment" or "in some embodiments" do not necessarily refer to the same embodiment, and as used herein, the phrases "in another embodiment" or "in other embodiments" do not necessarily refer to different embodiments. Similarly, as used herein, the phrases "in one implementation" or "in some implementations" do not necessarily refer to the same implementation, and as used herein, the phrases "in another implementation" or "in other implementation" do not necessarily refer to different implementations. For example, claimed subject matter is intended to include combinations of example embodiments / implementations in whole or in part.
[0030] Generally, terms can be understood, at least in part, from their usage in context. For example, terms such as "and," "or," or "and / or," when used herein, can include a variety of meanings that can depend, at least in part, on the context in which such terms are used. Typically, when "or" is used to link a list, such as A, B, or C, it is intended to refer to A, B, and C, which is used herein in an inclusive sense, as well as A, B, or C, which is used herein in an exclusive sense. Additionally, as used herein, the terms "one or more" or "at least one" may be used to describe any feature, structure, or characteristic in the singular sense, or may be used to describe a combination of features, structures, or characteristics in the plural sense, depending, at least in part, on the context. Similarly, terms such as "a," "an," or "the" may be understood to convey either a singular use or a plural use, depending, at least in part, on the context. Additionally, the terms "based on" or "determined by" are not intended to convey an exclusive list of factors and instead may allow for the existence of additional factors, not necessarily explicitly stated, again depending at least in part on the context.
[0031] Figure 3 illustrates a simplified block diagram of a communication system (300) according to one exemplary embodiment of the present disclosure. The communication system (300) includes multiple terminal devices capable of communicating with each other, e.g., via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of Figure 3, the first pair of terminal devices (310) and (320) are capable of unidirectional transmission of data. For example, the terminal device (310) may code video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to the other terminal device (320) via the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. The terminal device 320 can receive coded video data from the network 350, decode the coded video data to recover video pictures, and display the video pictures according to the recovered video data. One-way data transmission can be implemented in media provisioning applications, etc.
[0032] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing bidirectional transmission of coded video data, which may be implemented, for example, during a video conferencing application. For the bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) can encode video data (e.g., a stream of video pictures captured by the terminal device) for transmission to the other of the terminal devices (330) and (340) over the network (350). Each of the terminal devices (330) and (340) can also receive coded video data transmitted by the other of the terminal devices (330) and (340), decode the coded video data to recover the video pictures, and display the video pictures on an accessible display device in accordance with the recovered video data.
[0033] In the example of FIG. 3 , terminal devices 310, 320, 330, and 340 may be implemented as servers, personal computers, and smartphones, although the applicability of the underlying principles of the present disclosure is not so limited. Embodiments of the present disclosure may be implemented in desktop computers, laptop computers, tablet computers, media players, wearable computers, dedicated video conferencing equipment, and / or the like. Network 350 represents any number or type of network that carries coded video data between terminal devices 310, 320, 330, and 340, including, for example, wired and / or wireless communication networks. Communication network 350 may exchange data over circuit-switched, packet-switched, and / or other types of channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of network 350 may not be important to the operation of the present disclosure unless explicitly described herein.
[0034] 4 shows the arrangement of a video encoder and a video decoder in a video streaming environment as one example of an application for the disclosed technical subject matter. The disclosed technical subject matter is equally applicable to other video applications, including, for example, video conferencing, digital TV broadcasting, games, virtual reality, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0035] A video streaming system may include a video source (401), such as a video capture subsystem (413), which may include a digital camera, for generating an uncompressed video picture or stream of pictures (402). In one example, the video picture stream (402) includes samples recorded by the digital camera of the video source (401). The video picture stream (402), depicted as a thick line to emphasize its high data volume when compared to the encoded video data (404) (or coded video bitstream), may be processed by an electronic device (420) including a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof, and may enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), depicted as a thin line to emphasize its lower data volume compared to the stream of uncompressed video pictures (402), can be stored on the streaming server (405) for future use or directly downstream to a video device (not shown). One or more streaming client subsystems, such as the client subsystems (406) and (408) of FIG. 4, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include a video decoder (410), for example, within the electronic device (430). The video decoder (410) decodes the input copy of the encoded video data (407) and generates an outgoing stream of video pictures (411) that is uncompressed and can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). Video decoder 410 may be configured to perform some or all of the various functions described in this disclosure.In some streaming systems, the encoded video data 404, 407, and 409 (e.g., video bitstreams) may be encoded according to a predetermined video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC and other video coding standards.
[0036] It should be noted that the electronic devices (420) and (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may also include a video encoder (not shown).
[0037] 5 shows a block diagram of a video decoder (510) according to any embodiment of the present disclosure. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., receiving circuitry). The video decoder (510) may be used in place of the video decoder (410) in the example of FIG. 4.
[0038] The receiver (531) can receive one or more coded video sequences to be decoded by the video decoder (510). In the same or another embodiment, one coded video sequence can be decoded at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. Each video sequence can be associated with multiple video frames or pictures. The coded video sequences can be received from a channel (501). The channel can be a hardware / software link to a storage device that stores the encoded video data or a streaming source that transmits the encoded video data. The receiver (531) can receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, which can be forwarded to their respective processing circuits (not shown). The receiver (531) can separate the coded video sequences from the other data. To combat network jitter, a buffer memory (515) may be located between the receiver (531) and the entropy decoder / parser (520) (hereinafter, "parser (520)"). In certain applications, the buffer memory (515) may be implemented as part of the video decoder (510). In other applications, the buffer memory (515) may be external to and separate from the video decoder (510) (not shown). In still other applications, a buffer memory (not shown) may exist outside the video decoder (510), for example, to combat network jitter. And another buffer memory (515) may exist inside the video decoder (510), for example, to handle playback timing. If the receiver (531) is receiving data from a store-and-forward device with sufficient bandwidth and controllability or from an isosynchronous network, the buffer memory (515) may not be required, or may be small.For use in a best-effort packet network such as the Internet, a buffer memory (515) of sufficient size may be required, and its size may be relatively large. Such a buffer memory may be adaptively sized and implemented, at least in part, in an operating system or similar element (not shown) external to the video decoder (510).
[0039] The video decoder (510) may include a parser (520) for reconstructing symbols (521) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (510) and potentially information for controlling a rendering device, such as a display (512) (e.g., a display screen), which may or may not be an integral part of the electronic device (530), but may be coupled to the electronic device (530), as shown in FIG. 5. The rendering device control information 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 (520) may parse / entropy-decode the coded video sequence received by the parser (520). The coded video sequence may follow entropy coding, a video coding technique or standard, and may follow various principles, including variable length coding, Huffman coding, coding with or without context sensitivity, etc. The parser (520) may extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the subgroup. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (520) may also extract transform coefficients (e.g., Fourier transform coefficients), quantization parameter values, motion vectors, etc. from the coded video sequence information.
[0040] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to generate symbols (521).
[0041] The reconstruction of the symbols (521) may involve several different processing or functional units, depending on the type of coded video picture or portion thereof (inter and intra picture, inter and intra block, etc.) and other factors. The units involved, and how they participate, may be controlled by subgroup control information parsed from the coded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the following several processing or functional units is not depicted for simplicity.
[0042] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually divided into several functional units, as described below. In a practical implementation operating under commercial constraints, many of these functional units will interact closely with each other and may be, at least partially, integrated with each other. However, for the purpose of clearly describing the various functions of the disclosed technical subject matter, a conceptual division into functional units is adopted in the following disclosure.
[0043] The first unit may include a scalar / inverse transform unit (551), which may receive quantized transform coefficients and control information, including information indicating the type of inverse transform to use, block size, quantization coefficients / parameters, quantization scaling matrix, and location as symbols (521) from the parser (520). The scalar / inverse transform unit (551) may output blocks containing sample values, which may be input to the aggregator (555).
[0044] In some cases, the output samples of the scaler / inverse transform (551) may relate 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 portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) may generate blocks of the same size and shape as the reconstructed block using surrounding block information that has already been reconstructed and stored in the current picture buffer (558). The current picture buffer (558), for example, buffers the partially reconstructed and / or fully reconstructed current picture. In some implementations, the aggregator (555) may add, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (552) to the output sample information as provided by the scaler / inverse transform unit (551).
[0045] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to an inter-coded, and potentially motion-compensated, block. In such cases, the motion-compensated prediction unit 553 may access the reference picture memory 557 to retrieve samples used for inter-picture prediction. After motion compensation of the samples fetched according to the symbols (521) related to the block, these samples may be added by the aggregator (555) to the output of the scalar / inverse transform unit (551) (the output of unit 551 may be referred to as a residual sample or residual signal) to generate output sample information. The addresses in the reference picture memory (557) from which the motion-compensated prediction unit (553) fetches prediction samples may be controlled by a motion vector available to the motion-compensated prediction unit (553) in the form of a symbol (521), which may have, for example, an X and Y component (shift), and a reference picture component (time). Motion compensation may also include interpolation of sample values fetched from the reference picture memory (557) when sub-sample accurate motion vectors are used, and may also be associated with a motion vector prediction mechanism, etc.
[0046] The output samples of the aggregator (555) may be subjected to various loop filtering techniques in the loop filter unit (556). Video compression techniques may include in-loop filter techniques that are controlled by parameters contained in the coded video sequence (also referred to as the coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the parser (520). However, they may also include intra-loop filter techniques that may respond to meta-information obtained during decoding of a coded picture or previous portion of the coded video sequence (in decoding order), as well as to previously reconstructed and loop-filtered sample values. Several types of loop filters may be included as part of the loop filter unit 556 in various orders, as described in more detail below.
[0047] The output of the loop filter unit (556) may be a sample stream that may be output to a rendering device (512) and also stored in a reference picture memory (557) for use in future inter-picture prediction.
[0048] Once a given coded picture is fully reconstructed, it can be used as a reference picture for future inter-picture prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can become part of the reference picture memory (557). The fresh current picture buffer can then be reallocated before beginning reconstruction of the next coded picture.
[0049] The video decoder (510) can perform decoding operations according to a predetermined video compression technique adopted in a standard, such as ITU-T Rec. H.265. A coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. Specifically, a profile may select a predetermined tool from all tools available in the video compression technique or standard as the only tool available for use under that profile. To comply with a standard, the complexity of a coded video sequence may be within a range defined by a 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 per second), maximum reference picture size, etc. The limits set by the level may be further limited in some cases through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0050] In some exemplary embodiments, the receiver (531) can receive additional (redundant) data along with the coded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may 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.
[0051] 6 shows a block diagram of a video encoder (603) according to one exemplary embodiment of the present disclosure. The video encoder (603) may be included within an electronic device (620). The electronic device (620) may further include a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) may be used in place of the video encoder (403) in the example of FIG. 4.
[0052] The video encoder (603) can receive video samples from a video source (601) (not part of the electronic device (620) in the example of FIG. 6) that can capture video images to be coded by the video encoder (603). In another example, the video source (601) can be implemented as part of the electronic device (620).
[0053] The video source (601) can provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream, which can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCb, RGB, XYZ, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media distribution system, the video source (601) can be a storage device capable of storing previously prepared video. In a video conferencing system, the video source (601) can be a camera capturing local image sensor information as a video sequence. The video data can be provided as multiple individual pictures or images that convey motion when viewed sequentially. The pictures themselves can be organized as a spatial array of pixels, where each pixel can contain one or more samples, depending on the sampling structure, color space, etc. used. Those skilled in the art can readily understand the relationship between pixels and samples. The following description focuses on samples.
[0054] According to some example embodiments, the video encoder (603) can code and compress pictures of a source video sequence into a coded video sequence (643) in real time or under any other time constraints required by the application. Achieving an appropriate coding rate constitutes one function of the controller (650). In some embodiments, the controller (650) can be functionally coupled to and control other functional units, as described below. This coupling is not shown for simplicity. Parameters set by the controller (650) can 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 (650) can be configured with other appropriate functions related to the video encoder (603), optimized for a given system design.
[0055] In some exemplary embodiments, the video encoder (603) may be configured to operate in a coding loop. As an oversimplified explanation, in one example, the coding loop may include a source coder (630) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be coded and reference pictures) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs symbols to generate sample data in a similar manner to the (remote) decoder, even though the embedded decoder 633 processes the coded video stream by the source coder 630 without entropy coding (because any compression between symbols and the coded video bitstream in entropy coding may be lossless in the video compression techniques considered in the disclosed technical subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Because decoding of the symbol stream yields bit-exact results independent of decoder location (local or remote), the contents in the reference picture memory (634) are also bit-exact between the local and remote encoders. In other words, the predictor of the encoder "sees" exactly the same sample values that the decoder will "see" when using the prediction as a reference picture sample during decoding. This basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, e.g., due to channel errors) is used to improve coding quality.
[0056] The operation of the "local" decoder (633) may be the same as a "remote" decoder, such as the video decoder (510), as already described in detail above in connection with Figure 5. However, and also briefly referring to Figure 5, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (645) and parser (520) may be lossless, the entropy decoding portion of the video decoder (510), including the buffer memory (515), and the parser (520), may not need to be fully implemented in the local decoder (633) within the encoder.
[0057] An observation that can be made at this point is that any decoder technology, with the exception of analysis / entropy decoding, which may only exist in the decoder, may also need to exist, in substantially identical functional form, in the corresponding encoder. For this reason, the technical matters disclosed may sometimes focus on decoder operations associated with the decoder portion of the encoder. Accordingly, descriptions of encoder technology may be omitted, as they are the reverse of the generically described decoder technology. Only in certain areas or aspects is a more detailed description of the encoder provided below.
[0058] During operation in some example implementations, the source coder (630) may perform motion-compensated predictive coding, which predictively codes an input picture with respect to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (632) codes differences (or residuals) in color channels between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.
[0059] The local video decoder (633) can decode coded video data of pictures that may be designated as reference pictures based on symbols generated by the source coder (630). The operation of the coding engine (632) can advantageously be a lossy process. If the coded video data is decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence will typically be a replica of the source video sequence with some errors. The local video decoder (633) replicates the decoding process performed by the video decoder on the reference pictures and may cause the reconstructed reference pictures to be stored in a reference picture cache (634). In this way, the video encoder (603) can locally store copies of reconstructed reference pictures that have common content as reconstructed reference pictures acquired by a far-end (remote) video decoder.
[0060] The predictor (635) can perform a predictive search for the coding engine (632). That is, for a new picture to be coded, the predictor (635) can search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or predefined metadata, such as reference picture motion vectors, block shapes, etc., which can serve as suitable prediction references for the new picture. The predictor (635) can operate on a sample block-by-sample block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (634).
[0061] The controller (650) can manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0062] The output of all of the above-mentioned functional units can undergo entropy coding in an entropy coder (645), which converts the symbols produced by the various functional units into a coded video sequence by lossless compression of the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0063] The transmitter (640) may buffer the coded video sequence as it is generated by the entropy coder (645) in preparation for transmission over a communication channel (660). The communication channel may be a hardware / software link to a storage device that stores the coded video data. The transmitter (640) may merge the coded video data from the video coder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0064] The controller (650) can manage the operation of the video encoder (603). During coding, the controller (650) can assign a predetermined coded picture type to each coded picture, which can affect the coding technique that can be applied to the respective picture. For example, pictures can often be assigned as one of the following picture types:
[0065] An intra picture (I-picture) may be one that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh ("IDR") pictures. Those skilled in the art are aware of these variations of I-pictures and their respective applications and characteristics.
[0066] A predictive picture (P picture) may be one that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0067] Bidirectionally predicted pictures (B-pictures) may be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted pictures can use two or more reference pictures and associated metadata for the reconstruction of a single block.
[0068] A source picture is typically spatially divided into multiple sample coding blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures. Source pictures or intermediate processed pictures may be subdivided into other types of blocks for other purposes. The division of coding blocks and other types of blocks may or may not follow the same method, as will be explained in more detail below.
[0069] The video encoder (603) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The coded video data may thus conform to a syntax specified by the video coding technique or standard being used.
[0070] In some exemplary embodiments, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the coded video sequence. The additional data may include other types of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0071] Video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated intra-picture prediction) exploits spatial correlation within a given picture, and inter-picture prediction exploits temporal or other correlation between pictures. For example, a particular picture being encoded / decoded, referred to as the current picture, may be partitioned into blocks. If a block in the current picture resembles a reference block in a reference picture that was previously coded and is still buffered in the video, it may be coded by a vector called a motion vector. A motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0072] In some exemplary embodiments, bi-prediction techniques may be used for inter-picture prediction. According to such bi-prediction techniques, two reference pictures are used: a first reference picture and a second reference picture, both of which advance the current picture in video in decoding order (but in display order, past or future, respectively). A block in the current picture may be coded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. A block may be simultaneously predicted by a combination of the first and second reference blocks.
[0073] Furthermore, merge mode techniques may be used in inter-picture prediction to improve coding efficiency.
[0074] According to some exemplary embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed in units of blocks. For example, a picture in a sequence of video pictures is partitioned into coding tree units (CTUs) for compression, and the CTUs in a picture may have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU may include three parallel coding tree blocks (CTBs): one luma CTB and two chroma CTBs. Each CTU may be recursively quadtree partitioned into one or more coding units (CUs). For example, a 64x64 pixel CTU may be partitioned into one CU of 64x64 pixels or four CUs of 32x32 pixels. One or more of the 32x32 blocks may be further partitioned into four CUs of 16x16 pixels. In some exemplary embodiments, each CU may be analyzed during encoding to determine the prediction type of the CU among various prediction types, such as inter prediction or intra prediction. A CU may be divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Generally, 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. The division of a CU into PUs (or PBs of different color channels) may be performed in various spatial patterns. A luma or chroma PB may include a matrix of sample values (e.g., luma values), such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 samples, etc.
[0075] 7 shows a diagram of a video encoder (703) according to another exemplary embodiment of this disclosure. The video encoder (703) is configured to receive a processed block (e.g., a predictive block) of sample values in a current video picture in a sequence of video pictures and encode the processed block into a coded picture that is part of a coded video sequence. The exemplary video encoder (703) can be used in place of the video encoder (403) in the example of FIG. 4.
[0076] For example, the video encoder (703) receives a matrix of sample values for a processing block, such as a predictive block of 8x8 samples. The video encoder (703) then determines whether the processing block is best coded using intra-mode, inter-mode, or bi-predictive mode, e.g., using rate-distortion optimization (RDO). If it is determined that the processing block is coded in intra-mode, the video encoder (703) may use intra-prediction techniques to encode the processing block into a coded picture, and if it is determined that the processing block is coded in inter-mode or bi-predictive mode, the video encoder (703) may use inter-prediction techniques or bi-prediction techniques, respectively, to encode the processing block into a coded picture. In some exemplary embodiments, merge mode may be used as a sub-mode of inter-picture prediction, in which motion vectors are derived from one or more motion vector predictors without the benefit of coded motion vector components outside the predictors. In some other exemplary embodiments, there may be motion vector components applicable to the subject block. Therefore, the video encoder (703) may include components not explicitly shown in FIG. 7, such as a mode decision module, to determine the partition mode of a processing block.
[0077] In the example of Figure 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725) coupled together as shown in the example configuration of Figure 7.
[0078] The inter-encoder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block to one or more reference blocks in a reference picture (e.g., blocks in earlier and later pictures in display order), generate inter-prediction information (e.g., a description of redundant information according to an inter-encoding technique, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a predicted 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 encoded video information using a decoding unit 633 embedded in the example encoder 620 of FIG. 6 (shown as residual decoder 728 of FIG. 7, as described in more detail below).
[0079] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), compare the block with previously coded blocks in the same picture, and generate transformed and quantized coefficients, and possibly also generate intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). The intra encoder (722) can calculate intra prediction results (e.g., prediction blocks) based on the intra prediction information and reference blocks in the same picture.
[0080] The general controller (721) can be configured to determine general control data and control other components of the video encoder (703) based on the general control data. In one example, the general controller (721) determines a prediction mode for a block and provides a control signal to a switch (726) based on the prediction mode. For example, if the prediction mode is intra-mode, the general controller 721 controls the switch 726 to select the intra-mode result for use by the residual calculator 723 and controls the entropy encoder 725 to select intra-prediction information and include it in the bitstream. If the prediction mode for the block is inter-mode, the general controller 721 controls the switch 726 to select the inter-prediction result for use by the residual calculator 723 and controls the entropy encoder 725 to select inter-prediction information and include it in the bitstream.
[0081] The residual calculator (723) may be configured to calculate the difference (residual data) between a received block and a prediction result for a block selected from the intra-encoder (722) or inter-encoder (730). The residual encoder (724) may be configured to encode the residual data to generate transform coefficients. For example, the residual encoder (724) may be configured to transform the residual data from the spatial domain to the frequency domain to generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various exemplary embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data may be used by the intra-encoder (722) and inter-encoder (730) as appropriate. For example, the inter-encoder (730) can generate decoded blocks based on the decoded residual data and inter-prediction information, and the intra-encoder (722) can generate decoded blocks based on the decoded residual data and intra-prediction information. The decoded blocks are processed appropriately to generate decoded pictures, which can be buffered in a memory circuit (not shown) and used as reference pictures.
[0082] The entropy encoder (725) may be configured to format a bitstream to include the encoded block and perform entropy encoding. The entropy encoder (725) may be configured to include various information in the bitstream. For example, the entropy encoder (725) may be configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information in the bitstream. When coding a block in a merged sub-mode of either an inter-mode or a bi-prediction mode, residual information may not be present.
[0083] 8 shows a diagram of an exemplary video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) 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 embodiment, the video decoder (810) may be used in place of the video decoder (410) in the embodiment of FIG. 4.
[0084] In the example of Figure 8, the video decoder (810) includes an entropy decoder (871), an inter-decoder (880), a residual decoder (873), a reconstruction module (874), and an intra-decoder (872) coupled together as shown in the example configuration of Figure 8.
[0085] The entropy decoder (871) can be configured to reconstruct, from a coded picture, specific symbols that represent the syntax elements of which the coded picture is composed. Such symbols can include, for example, the mode in which the block is coded (e.g., intra mode, inter mode, bi-predictive mode, merged submode, or other submode), prediction information (e.g., intra-prediction information or inter-prediction information) that can identify specific samples or metadata used for prediction by the intra decoder (872) or inter decoder (880), residual information in the form of quantized transform coefficients, etc. As one example, if the prediction mode is an inter- or bi-predictive mode, the inter-prediction information is provided to the inter decoder (880), and if the prediction type is an intra-prediction type, the intra-prediction information is provided to the intra decoder (872). The residual information can undergo inverse quantization and then be provided to the residual decoder (873).
[0086] The inter decoder (880) can be configured to receive the inter prediction information and generate inter prediction results based on the inter prediction information.
[0087] The intra decoder (872) can be configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0088] The residual decoder (873) may be configured to perform inverse quantization to extract inverse quantized transform coefficients and then process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also utilize certain control information (including quantizer parameters (QP)) that may be provided by the entropy decoder (871) (a data path is not shown, as it may only contain low-volume control information).
[0089] The reconstruction module (874) may be configured to combine, in the spatial domain, the residual as output by the residual decoder (873) and the prediction results (possibly as output by an inter- or intra-prediction module) to form reconstructed blocks that form part of a reconstructed picture as part of the reconstructed video. Note that other suitable operations, such as deblocking operations, may also be performed to improve visual quality.
[0090] It should be noted that the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using any suitable technology. In some exemplary embodiments, the video encoders (403), (603), and (703) and the video decoders (410), (510), and (810) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (603) and the video decoders (410), (510), and (810) may be implemented using one or more processors executing software instructions.
[0091] For coding block partitioning, and in some embodiments, a predetermined pattern may be applied. As shown in FIG. 9, an exemplary four-way partition tree may be used, starting from a first predetermined level (e.g., the 64×64 block level) to a second predetermined level (e.g., the 4×4 level). For example, a base block may follow four partitioning options, indicated by 902, 904, 906, and 908, with partitions designated as R, as allowed for recursive partitioning, in that the same partition tree as shown in FIG. 9 may be repeated at a lower scale, down to the lowest level (e.g., the 4×4 level). In some implementations, additional restrictions may be applied to the partitioning scheme of FIG. 9. In the implementation of FIG. 9, rectangular partitions (e.g., 1:2 / 2:1 rectangular partitions) may be allowed, but they are not allowed to be recursive, while square partitions are allowed to be recursive. Partitioning following FIG. 9 with recursion, if necessary, generates a final set of coding blocks. Such a scheme may be applied to one or more color channels.
[0092] FIG. 10 illustrates another example predefined partitioning pattern that enables recursive partitioning to form a partitioning tree. As shown in FIG. 10, ten exemplary partitioning structures or patterns may be predefined. The root block may start at a predefined level (e.g., a 128×128 level or a 64×64 level). The exemplary partitioning structure of FIG. 10 includes various 2:1 / 1:2 and 4:1 / 1:4 rectangular partitions. Note that the partition type with three subpartitions shown in the second row of FIG. 10 may be referred to as a “T-type” partition. The “T-type” partitions 1002, 1004, 1006, and 1008 may be referred to as Left T-Type, Top T-Type, Right T-Type, and Bottom T-Type. In some implementations, none of the rectangular partitions in FIG. 10 are allowed to be further subdivided. A coding tree depth may be further defined to indicate the partitioning depth from the root node or root block. For example, for a root node or root block, e.g., a 128x128 block, the coding tree depth may be set to 0, and after the root block is further partitioned following FIG. 10, the coding tree depth is increased by 1. In some implementations, for recursive partitioning to the next level of the partitioning tree according to the pattern of FIG. 10, only all-square partitions of 1010 may be allowed. In other words, for square partitions having patterns 1002, 1004, 1006, and 1006, recursive partitioning may not be allowed. Partitioning following FIG. 10 with recursion generates a final set of coding blocks, if necessary. Such a scheme may be applied to one or more color channels.
[0093] After dividing or partitioning the base block according to any of the above partitioning procedures or other procedures, a final set of partitions or coding blocks may be obtained. Each of these partitions is one of various partitioning levels. Each partition is referred to as a coding block (CB). For the various exemplary partitioning implementations described above, each resulting CB may be of any allowable size and partitioning level. They are referred to as coding blocks because they may form the unit at which some basic coding / decoding decisions can be made, and coding / decoding parameters can be optimized, determined, and signaled in the coded video bitstream. The highest level in the final partition represents the depth of the coding block partitioning tree. A coding block may be a luma coding block or a chroma coding block.
[0094] In some other examples, a quadtree structure may be used to recursively partition the base luma and chroma blocks into coding units. Such a partitioning structure may be referred to as a coding tree unit (CTU), which is partitioned into coding units (CUs) using the quadtree structure to adapt the partitioning to various local characteristics of the base CTU. In such implementations, implicit quadtree partitioning may be performed at picture boundaries so that blocks maintain the quadtree partitioning until their size fits the picture boundaries. The term CU is used to collectively refer to units of luma and chroma coding blocks (CBs).
[0095] In some implementations, the CB may be further partitioned. For example, the CB may be further partitioned into multiple prediction blocks (PBs) for the purpose of intra-frame or inter-frame prediction during the coding and decoding process. In other words, the CB may be further partitioned into different subpartitions, at which individual prediction decisions / configurations may be made. In parallel, the CB may be further partitioned into multiple transform blocks for the purpose of representing the level at which a transform or inverse transform of video data is performed. The partitioning scheme of the CB into PBs and TBs may or may not be the same. For example, each partitioning scheme may be performed using its own procedure, for example, based on various characteristics of the video data. The partitioning schemes of the PBs and TBs may be independent in some exemplary implementations. The partitioning schemes and boundaries of the PBs and TBs may be correlated in some other exemplary implementations. In some implementations, for example, the TBs may be partitioned after PB partitioning, and in particular, each PB may be further partitioned into one or more TBs after the next partition of the coding block is determined. For example, in some implementations, the PB may be divided into one, two, four, or some other number of TBs.
[0096] In some implementations, the luma channel and the chroma channels may be processed differently to partition base blocks into coding blocks and further into prediction blocks and / or transform blocks. For example, in some implementations, partitioning of coding blocks into prediction blocks and / or transform blocks may be allowed for the luma channel, while partitioning of such coding blocks into prediction blocks and / or transform blocks may not be allowed for the chroma channels. In such implementations, transform and / or prediction of luma blocks may therefore be performed only at the coding block level. In another example, the minimum transform block sizes for the luma channel and the chroma channels may be different. For example, coding blocks for the luma channel may be allowed to be partitioned into smaller transform blocks and / or prediction blocks than those for the chroma channels. In yet another example, the maximum depth of partitioning of coding blocks into transform blocks and / or prediction blocks may differ between the luma channel and the chroma channels. For example, coding blocks for the luma channel may be allowed to be partitioned into deeper transform and / or prediction blocks than those for the chroma channels. In a particular example, a luma coding block may be divided into transform blocks of multiple sizes, which may be represented by recursive partitioning down to a maximum of two levels, and transform block shapes such as square, 2:1 / 1:2, and 4:1 / 1:4, and transform block sizes from 4x4 to 64x64 may be allowed. However, for chroma blocks, only the largest possible transform block specified for the luma block may be allowed.
[0097] In some example implementations for partitioning a coding block into PBs, the depth, shape, and / or other characteristics of the PB partitioning may depend on whether the PB is intra-coded or inter-coded.
[0098] The partitioning of coding blocks (or prediction blocks) into transform blocks may be implemented with various exemplary schemes, including, but not limited to, quadtree partitioning and predetermined pattern partitioning, recursively or non-recursively, and with additional consideration of transform blocks at coding or prediction block boundaries. In general, the resulting transform blocks may be at different partitioning levels, may not be the same size, and may not need to be square in shape (e.g., they may be rectangular with an allowed size and aspect ratio).
[0099] In some implementations, a coding partitioning tree scheme or structure may be used. The coding partitioning tree schemes used for the luma channel and the chroma channel need not be the same. In other words, the luma channel and the chroma channel may have separate coding tree structures. Furthermore, whether the luma channel and the chroma channel use the same or different coding partitioning tree structures, and the actual coding partitioning tree structure used, may depend on whether the slice being coded is a P, B, or I slice. For example, for an I slice, the chroma channel and the luma channel may have separate coding partitioning tree structures or coding partitioning tree structure modes, while for a P or B slice, the luma and chroma channels may share the same coding partitioning tree scheme. When separate coding partitioning tree structures or modes are applied, the luma channel may be partitioned into CBs by one coding partitioning tree structure, and the chroma channel may be partitioned into chroma CBs by another coding partitioning tree structure.
[0100] Specific exemplary implementations of partitioning coding blocks and transform blocks are described below. In such exemplary implementations, a base coding block may be divided into coding blocks using the recursive quadtree division described above. At each level, whether to continue further quadtree division of a particular partition may be determined by local video data characteristics. The resulting CBs may be of various sizes and quadtree division levels. The decision of whether to code a picture region using inter-picture (temporal) or intra-picture (spatial) prediction may be made at the CB level (or at the CU level, for all three color channels). Each CB may be further divided into one, two, four, or other number of PBs according to the PB division type. Within one PB, the same prediction process may be applied, and related information is transmitted to the decoder on a PB-by-PB basis. After obtaining residual blocks by applying the prediction process based on the PB division type, the CB may be partitioned into TBs according to another quadtree structure similar to the CB coding tree. In this specific implementation, the CB or TB may be, but is not necessarily limited to, a square. Furthermore, in this particular implementation, the PB may be square or rectangular in shape for inter prediction, and only square for intra prediction. A coding block may be further divided, for example, into four square TBs. Each TB may be further divided recursively (using quad-tree partitioning) into smaller TBs, called residual quad-trees (RQTs).
[0101] Another specific example for partitioning a base coding block into CBs and other PBs and / or TBs is described below. For example, rather than using multiple partition unit types, such as those shown in FIG. 10, a quadtree with nested multi-type trees using binary and ternary partition segmentation structures can be used. The separation of the concepts of CB, PB, and TB (i.e., partitioning the CB into PBs and / or TBs, and partitioning the PB into TBs) may be abandoned unless required for CBs with sizes too large for the maximum transform length, which may require further division. This exemplary portioning scheme may be designed to support more flexibility in the partitioning shape of CBs, so that both prediction and transformation can be performed at the CB level without further division. In such a coding tree structure, the CBs may have either a square or rectangular shape. Specifically, the coding tree block (CTB) is first divided by a quadtree structure. The quadtree leaf nodes can then be further partitioned by a multitype tree structure. An example of a multitype tree structure is shown in FIG. 11. Specifically, the exemplary multitype tree structure of FIG. 11 includes four split types: vertical binary split (SPLIT_BT_VER) (1102), horizontal binary split (SPLIT_BT_HOR) (1104), vertical ternary split (SPLIT_TT_VER) (1106), and horizontal ternary split (SPLIT_TT_HOR) (1108). CB then corresponds to the leaf of the multitype tree. In this exemplary implementation, if CB is not too large relative to the maximum transform length, this segmentation is used for both prediction and transform processing without any further partitioning. This means that in most cases, CB, PB, and TB have the same block size in a quadtree with a nested multitype tree coding block structure.An exception occurs when the maximum supported transform length is less than the width or height of a color component of CB.
[0102] An example of a quadtree with a nested multi-type tree coding block structure of block partitions for one CTB is shown in FIG. 12. More specifically, FIG. 12 shows a CTB 1200 quadtree-divided into four square partitions 1202, 1204, 1206, and 1208. A decision to further use the multi-type tree structure of FIG. 11 for partitioning is made for each quadtree-divided partition. In the example of FIG. 12, partition 1204 is not further divided. Partitions 1202 and 1208 each adopt a different quadtree division. For partition 1202, the second-level quadtree-divided top-left, top-right, bottom-left, and bottom-right partitions adopt a third-level division, which are 1104 in FIG. 11, no division, and 1108 in FIG. 11, respectively. Partition 1208 employs another quadtree partitioning, and the top-left, top-right, bottom-left, and bottom-right partitions of the second-level quadtree partitioning employ 1106 in FIG. 11 , no partitioning, and 1104 in FIG. 11 , third-level partitioning, respectively. The two subpartitions of the top-left partition of the third level of 1208 are further divided according to 1104 and 1108. Partition 1206 employs the second-level partitioning pattern following 1102 in FIG. 11 into two partitions, and is further divided at the third level according to 1108 and 1102 in FIG. 11 . A fourth-level partitioning is then applied to one of them according to 1104 in FIG. 11 .
[0103] In the particular example above, the maximum luma transform size may be 64x64, and the maximum supported chroma transform size may differ from the luma, for example, 32x32. If the width or height of a luma coding block or a chroma coding block is larger than the maximum transform width or height, the luma coding block or the chroma coding block is automatically split horizontally and / or vertically to meet the transform size constraint in that direction.
[0104] In a specific example of partitioning base coding blocks into the above CBs, the coding tree scheme can support the ability for luma and chroma to have separate block tree structures. For example, for P and B slices, the luma CTB and chroma CTB in one CTU can share the same coding tree structure. For example, for an I slice, luma and chroma may have separate coding block tree structures. When the separate block tree mode is applied, the luma CTB is partitioned into luma CBs by one coding tree structure, and the chroma CTB is partitioned into chroma CBs by another coding tree structure. This means that a CU in an I slice may consist of a coding block of the luma component or a coding block of two chroma components, and a CU in a P or B slice is always composed of coding blocks of all three color components unless the video is monochrome.
[0105] Exemplary implementations for partitioning coding or prediction blocks into transform blocks and the coding order of the transform blocks are described in further detail below. In some exemplary implementations, transform partitioning can support multiple shapes of transform blocks, such as 1:1 (square), 1:2 / 2:1, and 1:4 / 4:1, with transform block sizes ranging from 4×4 to 64×64. In some implementations, if the coding block is 64×64 or smaller, transform block partitioning is only applicable to the luma component, and for chroma blocks, the transform block size is the same as the size of the coding block. Otherwise, if the width or height of the coding block is greater than 64, both the luma and chroma coding blocks may be implicitly partitioned into multiples of min(W,64)×min(H,64) and min(W,32)×min(H,32) transform blocks, respectively.
[0106] In some example implementations, for both intra- and inter-coding blocks, the coding block may be further partitioned into multiple transform blocks with a partitioning depth up to a predefined number of levels (e.g., two levels). The depth and size of the transform block partitioning may be related. One example of a mapping from the transform size of the current depth to the transform size of the next depth is shown in Table 1. [Table 1] Table 1: Conversion Partition Size Settings
[0107] Based on the example mapping in Table 1, for a 1:1 square block, the next level transform partitioning may generate four 1:1 square sub-transform blocks. The transform partition may stop at, for example, 4x4. Thus, the transform size at the current depth of 4x4 corresponds to the same size at the next depth of 4x4. In the example of Table 1, for a 1:2 / 2:1 non-square block, the next level transform partitioning generates two 1:1 square sub-transform blocks, while for a 1:4 / 4:1 non-square block, the next level transform partitioning generates two 1:2 / 2:1 sub-transform blocks.
[0108] In some example implementations, additional restrictions may be applied to the luma component of an intra-coded block. For example, for each level of transform partitioning, all sub-transform blocks may be constrained to have equal sizes. For example, for a 32x16 coding block, level 1 transform partitioning creates two 16x16 sub-transform blocks, and level 2 transform partitioning creates eight 8x8 sub-transform blocks. In other words, second-level partitioning must be applied to all first-level sub-blocks to maintain equal transform unit sizes. An example of transform block partitioning for an intra-coded square block following Table 1 is shown in FIG. 13, with the coding order indicated by the arrows. Specifically, 1302 denotes a square coding block. The first-level partitioning into four equal-sized transform blocks according to Table 1 is shown in 1304, with the coding order indicated by the arrows. The second-level partitioning of all first-level equal-sized blocks according to Table 1 into 16 equal-sized transform blocks is shown in 1306, with the coding order indicated by the arrows.
[0109] In some example implementations, the above restriction on intra-coding may not apply to the luma component of an inter-coded block. For example, after the first level of transform partitioning, any one of the sub-transform blocks may be further partitioned independently at another level. The resulting transform blocks may or may not therefore be of the same size. An example partitioning of an inter-coded block into transform blocks using a coding order is shown in FIG. 14. In the example of FIG. 14, an inter-coded block 1402 is partitioned into transform blocks at two levels according to Table 1. At the first level, the inter-coded block is partitioned into four transform blocks of equal size. Then, only one (but not all) of the four transform blocks is further partitioned into four sub-transform blocks, resulting in a total of seven transform blocks having two different sizes, as shown at 1404. An example coding order of these seven transform blocks is indicated by the arrows at 1404 in FIG. 14.
[0110] In some example implementations, for chroma components, some additional restrictions on transform blocks may apply: For example, for chroma components, the transform block size may be the same size as the coding block size, but not smaller than a predefined size, e.g., 8x8.
[0111] In some other example implementations, for coding blocks with either width (W) or height (H) greater than 64, both the luma and chroma coding blocks may be implicitly divided into multiples of min(W,64)×min(H,64) and min(W,32)×min(H,32) transform units, respectively.
[0112] Figure 15 further illustrates an alternative exemplary scheme for partitioning coding blocks or prediction blocks into transform blocks. As shown in Figure 15, instead of using recursive transform partitioning, a predefined set of partitioning types may be applied to a coding block according to the transform type of the coding block. In the particular example shown in Figure 15, one of six exemplary partitioning types may be applied to partition the coding block into various numbers of transform blocks. Such a scheme may be applied to either coding blocks or prediction blocks.
[0113] More specifically, the partitioning scheme of Figure 15 provides up to six partitioning types for any given transform type, as shown in Figure 15. In this scheme, every coding block or predictive block may be assigned a transform type, for example, based on a rate-distortion cost. In one example, the partitioning type assigned to a coding block or predictive block may be determined based on the transform partitioning type of the coding block or predictive block. A particular partitioning type may correspond to a transform block partition size and pattern (or partitioning type), as shown by the four partitioning types shown in Figure 15. The correspondence between various transform types and various partitioning types may be predefined. One example correspondence is shown below, with capitalized labels indicating transform types that can be assigned to coding blocks or predictive blocks based on rate-distortion costs.
[0114] · PARTITION_NONE: Allocate a transformation size equal to the block size.
[0115] ·PARTITION_SPLIT: Allocates a transformation size that is 1 / 2 the width of the block size and 1 / 2 the height of the block size.
[0116] P·ARTITION_HORZ: Allocates a transformation size that is the same width as the block size and half the height of the block size.
[0117] ·PARTITION_VERT: Allocates a transformation size that is half the width of the block size and the same height as the block size.
[0118] PARTITION_HORZ4: Allocates a transformation size that is the same width as the block size and 1 / 4 of the height of the block size.
[0119] ·PARTITION_VERT4: Allocates a transformation size that is 1 / 4 of the width of the block size and the same height as the block size.
[0120] In the above example, all partitioning types as shown in Figure 15 include uniform transform sizes for the partitioned transform blocks. This is merely an example and not a limitation. In some other implementations, mixed transform block sizes may be used for transform blocks partitioned with a particular partitioning type (or pattern).
[0121] In various embodiments, a semi-decoupled partitioning (SDP) scheme may be used, where the luma and chroma blocks in one superblock (SB) may have the same or different block partitioning structures. The SDP scheme may also be referred to as a semi-separate tree (SST) or flexible block partitioning for chroma components.
[0122] In some implementations, the SDP scheme may depend on the size of the luma coded block or the depth of the luma block partitioning tree. For example, if the size (e.g., in terms of area) of the luma block is greater than a first threshold (T1) or if the coding tree partitioning depth of the luma block is less than or equal to a second threshold (T2), the chroma block may use the same coding tree structure as the luma block.
[0123] Otherwise, if the size of a luma block is less than or equal to T1, or if the luma partition depth is greater than T2, the corresponding chroma block may have a different coding block partitioning than the luma component. This is called flexible block partitioning for the chroma components. In some implementations, T1 is a positive integer, such as, but not limited to, 128 or 256. T2 is a positive integer, such as, but not limited to, 1 or 2.
[0124] Figure 16 shows an example of different coding block partitioning structures for the luma component (1610) and the chroma component (1650), where T2 is set to 1. At the first level (Level=1), the luma component and the chroma component have the same structure. At the second level (Level=2), some level 1 blocks in the luma component and some level 1 blocks in the chroma component have the same structure, e.g., 1611 and 1651, and 1641 and 168, respectively. And some level 1 blocks in the luma component and some level 1 blocks in the chroma component have different structures, e.g., 1621 and 1661, and 1631 and 1671, respectively.
[0125] In various embodiments, an improved semi-decoupled partitioning (SDP) scheme may be used, where the luma and chroma components can share a partial tree structure from the root node of the superblock, and the conditions when luma and chroma start separate tree partitioning depend on the luma partitioning information.
[0126] There may be several issues / problems associated with implementing semi-decoupled partitioning. For example, in some implementations, the chroma components may not allow transform partitioning, i.e., the transform unit size is the same as the coding unit size. If the luma and chroma components use different coding block partitioning trees, the chroma components may typically prefer a larger partitioning size and / or transform partitioning may be beneficial for the chroma components if signaled separately.
[0127] This disclosure describes various embodiments for transform block partitioning in video coding and / or decoding that address at least one of the above-mentioned problems / issues.
[0128] In various embodiments, referring to FIG. 17, a method 1700 is for transform block partitioning in video decoding. The method 1700 may include some or all of the following steps: At step 1710, a device including a memory storing instructions and a processor in communication with the memory receives a coded video bitstream for luma blocks and chroma blocks, the luma blocks being co-located with the chroma blocks; at step 1720, the device partitions the luma blocks to obtain a luma coding block partitioning tree; at step 1730, the device partitions the chroma blocks to obtain a chroma coding block partitioning tree; at step 1740, the device partitions the luma coding blocks from the luma coding block partitioning tree to obtain a plurality of luma transform blocks; and / or at step 1750, the device partitions the chroma coding blocks from the chroma coding block partitioning tree to obtain at least one plurality of chroma transform blocks.
[0129] In some implementations, the device may partition the luma coding blocks and the chroma coding blocks separately, and the obtained luma transform blocks are different from any one of the obtained at least one chroma transform blocks.
[0130] In other implementations, the device may partition the luma coding blocks and chroma coding blocks separately, and the obtained luma transform blocks are the same as one of the obtained at least one plurality of chroma transform blocks.
[0131] In various embodiments of this disclosure, the size of a block (e.g., but not limited to, a coding block, a prediction block, or a transform block) may refer to the width or height of the block, which may be an integer number in units of pixels.
[0132] In various embodiments of this disclosure, the size of a block (e.g., but not limited to, a coding block, a prediction block, or a transform block) may refer to the area size of the block, which may be an integer value equal to the width of the block multiplied by the height of the block in units of pixels.
[0133] In some various embodiments of this disclosure, the size of a block (e.g., but not limited to, a coding block, a prediction block, or a transform block) may refer to the maximum width or height of the block, the minimum width or height of the block, or the aspect ratio of the block, which may be calculated as the width divided by the height of the block, or the height divided by the width of the block.
[0134] In various embodiments of this disclosure, a superblock (SB) may refer to a largest coding unit (LCU), e.g., a 128x128 block. A luma block may refer to a luma block co-located with a chroma block. A semi-decoupling partitioning (SDP) may also be referred to as a semi-decoupling tree (SDT). Block splitting may also be referred to as block partitioning.
[0135] Referring to step 1710, the device may be the electronic device (530) in Figure 5 or the video decoder (810) in Figure 8. In some implementations, the device may be the decoder (633) within the encoder (620) in Figure 6. In other implementations, the device may be part of the electronic device (530) in Figure 5, part of the video decoder (810) in Figure 8, or part of the decoder (633) within the encoder (620) in Figure 6. The coded video bitstream may be the coded video sequence in Figure 8 or the intermediate coded data in Figures 6 or 7. The coded video bitstream may be for luma blocks (e.g., 1810 in Figure 18) and chroma blocks (e.g., 1850 in Figure 18), and the luma blocks and chroma blocks are co-located with each other.
[0136] In some implementations, separate transform unit division and signaling may be applied to different color components, such as luma and chroma components, which may include one or more color components, such as a first color component (blue) and a second color component (red).
[0137] Figure 18 shows an example of applying separate transform unit partitioning when the coding block partitioning is different. Here, solid lines indicate coding block partitioning boundaries, and dotted lines indicate transform unit partitioning boundaries. The luma block (1810) includes 1811, 1821, 1831, and 1841 at level 1. The chroma block (1850) includes 1851, 1861, 1871, and 1881 at level 1. Figure 18 shows that the coding block partitioning (solid lines) patterns are different between the luma and chroma components. For example, 1811 and 1851, 1821 and 1861, and 1841 and 1881. On the other hand, transform block partitioning (dashed lines) is possible for both luma and chroma, but has different partitioning patterns. For example, 1821 and 1861.
[0138] Referring to step 1720, the device may partition the luma block to obtain a luma coding block partitioning tree. Referring to Figure 18, the luma block (1810) is partitioned to obtain a luma coding block partitioning tree, shown by a solid line at 1810.
[0139] Referring to step 1730, a device may partition a chroma block to obtain a chroma coding block partitioning tree. Referring to Figure 18, a chroma block (1850) is partitioned to obtain a chroma coding block partitioning tree, shown by a solid line at 1850.
[0140] Referring to step 1740, the device may partition luma coding blocks from the luma coding block partitioning tree to obtain multiple luma transform blocks. Some luma coding blocks in 1810 are further partitioned into multiple luma transform blocks, as indicated by dashed lines in 1810. For example, the luma coding block (top half in 1811) is partitioned into two luma transform blocks (1812 and 1813). As another example, the luma coding block (1831) is partitioned into four luma transform blocks (1832, 1833, 1834, and 1835).
[0141] Referring to step 1750, the device may partition chroma coding blocks from the chroma coding block partitioning tree to obtain at least one plurality of chroma transform blocks. Some luma coding blocks in 1850 are further partitioned into multiple luma transform blocks, as indicated by dashed lines in 1850. For example, a chroma coding block (right half in 1861) is partitioned into two chroma transform blocks (1863 and 1864). As another example, a chroma coding block (1871) is partitioned into four chroma transform blocks (1872, 1873, 1874, and 1875).
[0142] In various embodiments, the luma coding block partitioning tree is different from the chroma coding block partitioning tree, and / or the coded video bitstream includes luma parameters and chroma parameters. The luma parameters may be extracted from the coded video bitstream and may indicate a transform partitioning structure from a luma coding block and / or multiple luma transform blocks. The chroma parameters may be extracted from the coded video bitstream and may indicate a transform partitioning structure from a chroma coding block and / or multiple chroma transform blocks.
[0143] Step 1740 may include partitioning the luma coding block according to the luma parameters to obtain a plurality of luma transform blocks, and / or step 1750 may include partitioning the chroma coding block according to the chroma parameters to obtain a plurality of chroma transform blocks.
[0144] In some implementations, when the luma and chroma color channels apply different coding block partitioning trees, transform unit partitioning may be allowed for the chroma channels, and the transform unit partitioning may be signaled separately for the chroma channels compared to the luma channel.
[0145] In various embodiments, the luma coding block partitioning tree is different from the chroma coding block partitioning tree, and / or the coded video bitstream includes luma parameters, first chroma parameters, and second chroma parameters. The luma parameters may be extracted from the coded video bitstream and may indicate a transform partitioning structure from the luma coding block and / or multiple luma transform blocks. The first chroma parameter corresponds to a first color (e.g., blue) in a chroma component, and the second chroma parameter corresponds to a second color (e.g., red) in the chroma component. The first chroma parameter may be extracted from the coded video bitstream and may indicate a transform partitioning structure from the chroma coding block and / or multiple chroma transform blocks for the first color in the chroma component. The second chroma parameter may be extracted from the coded video bitstream and may indicate a transform partitioning structure from the chroma coding block and / or multiple chroma transform blocks for the second color in the chroma component. The transformation partitioning structures for the first and second colors may be different.
[0146] Step 1740 may include partitioning the luma coding block according to the luma parameter to obtain a plurality of luma transform blocks. Step 1750 may include partitioning a first component of a first chroma coding block according to the first chroma parameter to obtain a first plurality of chroma transform blocks, and / or partitioning a second component of a second chroma coding block according to the second chroma parameter to obtain a second plurality of chroma transform blocks. The first component of a chroma coding block may refer to a first color channel (e.g., blue) of the coding block, and / or the second component of the chroma coding block may refer to a second color channel (e.g., red) of the coding block.
[0147] In some implementations, when the luma and chroma color channels apply different coding block partitioning trees, transform unit partitioning is allowed for chroma, and the transform unit partitioning can be signaled separately for different color components of chroma, e.g., Cb and Cr.
[0148] In some other implementations, if the color components apply different coding block partitioning trees, transform unit partitioning is allowed for each color component, and the transform unit partitioning can be signaled separately for each color component.
[0149] In various embodiments, the transform depth of the chroma coding block includes 0 or 1, and / or the chroma coding block includes a quadtree transform partition, and / or the chroma coding block is a non-square rectangular block and exhibits a binary transform partition.
[0150] In some implementations, different transform unit partitioning patterns and / or depths may be applied for different color components. In one example, for a chroma channel or component, the transform depth may be limited to 0 or 1. In another example, for a chroma channel or component, only quadtree transform splitting is allowed. In another example, for a chroma channel or component, only binary transform splitting is allowed for non-square rectangular blocks. In another example, whether horizontal binary transform splitting or vertical binary transform splitting is applied depends on the aspect ratio of the coding block. If the aspect ratio of the coding block is greater than 1 (e.g., the horizontal dimension is longer than the vertical dimension of the coding block), vertical binary transform splitting may be used, and if the aspect ratio of the coding block is less than 1 (e.g., the horizontal dimension is shorter than the vertical dimension of the coding block), horizontal binary transform splitting may be used for the coding block.
[0151] In various embodiments, step 1750 may include partitioning the chroma coding block to obtain at least one of the plurality of chroma transform blocks in response to satisfying at least one of the following conditions: the chroma coding block is larger than a minimum coding block size, the chroma coding block is smaller than a maximum coding block size, the chroma coding block uses at least one intra prediction mode, or the chroma coding block uses at least one transform type. In some implementations, the minimum coding block size corresponds to a minimum coding width including at least one of the following: 4, 8, 16, 32, or 64; the maximum coding block size corresponds to a maximum coding length including at least one of the following: 32, 64, 128, or 256; and / or the at least one intra prediction mode includes at least one directional intra prediction mode.
[0152] In some other implementations, the minimum coding block size that allows transform splitting may be different for different color components. In one example, if a chroma coding block is smaller than M×N, transform unit splitting is not allowed. Example values of M and N include, but are not limited to, 4, 8, 16, 32, and 64.
[0153] In some other implementations, the maximum coding block size that allows for transform splitting may be different for different color components.
[0154] In some other implementations, transform unit splitting may not be allowed for chroma coding blocks having a size greater than M×N. Example values of M and N include, but are not limited to, 32, 64, 128, and 256.
[0155] In some other implementations, for intra-coded blocks, when the luma and chroma color channels apply different coding block partitioning trees, transform unit partitioning in the chroma color channel may be allowed only for certain intra-prediction modes. In one example, transform unit partitioning within a chroma coding block in the chroma color channel may be allowed only for directional intra-prediction modes.
[0156] In some other implementations, if transform unit splitting within chroma is allowed, only certain transform types are allowed.
[0157] In various embodiments, the coded video bitstream includes luma coding parameters, luma transform parameters, chroma coding parameters, and chroma transform parameters, and / or during entropy decoding of the coded video bitstream, the chroma transform parameters use at least one of the luma coding parameters, luma transform parameters, or chroma coding parameters as context.
[0158] Luma coding parameters may be extracted from a coded video bitstream and may indicate a coding block partitioning structure of a luma component. Luma transform parameters may be extracted from a coded video bitstream and may indicate a transform partitioning structure from a luma coding block and / or multiple luma transform blocks. Chroma coding parameters may be extracted from a coded video bitstream and may indicate a coding block partitioning structure of a chroma component. Chroma transform parameters may be extracted from a coded video bitstream and may indicate a transform partitioning structure from a chroma coding block and / or multiple chroma transform blocks.
[0159] In some other implementations, to signal the chroma transform block partitioning pattern, the luma coding block partitioning flag and / or the transform block partitioning flag may be used as context for entropy coding the chroma transform block partitioning flag.
[0160] In various embodiments, when transform unit partitioning from a coded block within a chroma component is allowed, the size of all chroma transform units may be the same within the coded block. In one example, a flag may be signaled at the coded block level to indicate the transform depth of a chroma component (or each chroma channel). In another example, the transform size of the luma transform units may not be the same within a coded block, while the size of all chroma transform units is the same within the coded block.
[0161] The embodiments of the present disclosure may be used separately or in any order in combination. Furthermore, each of the methods (or embodiments), the encoder, and the decoder may be implemented by processing circuitry (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. The embodiments of the present disclosure may be applied to a luma block or a chroma block. And, in a chroma block, the embodiments may be applied to more than one color component separately or to more than one color component together.
[0162] The techniques described above may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 19 illustrates a computer system 2600 suitable for implementing certain embodiments of the disclosed subject matter.
[0163] Computer software may be coded using any suitable machine code or computer language, and may be assembled, compiled, linked, or otherwise processed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., may be subject to similar mechanisms for creating code containing instructions that may be executed directly, or through an interpreter, microcode execution, etc.
[0164] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.
[0165] 19 for computer system 2600 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components shown in the exemplary embodiment of computer system 2600.
[0166] The computer system 2600 may include certain human interface input devices that may respond to input by one or more human users through, for example, tactile input (such as keystrokes, swipes, or data glove movements), audio input (such as voice or clapping), visual input (such as gestures), or olfactory input (not shown). The human interface devices may also be used to capture certain media that do not necessarily involve direct human conscious input, such as audio (such as speech, music, or ambient sounds), images (such as scanned images or photographic images acquired from a still-image camera), or video (such as two-dimensional video or three-dimensional video, including stereoscopic vision).
[0167] The input human interface devices may include one or more of a keyboard (2601), a mouse (2602), a trackpad (2603), a touchscreen (2610), a data glove (not shown), a joystick (2605), a microphone (2606), a scanner (2607), and a camera (2608) (only one of each is depicted).
[0168] The computer system 2600 may also include certain human interface output devices that can stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., a touchscreen (2610), data gloves (not shown), or joysticks (2605), although there are also haptic feedback devices that do not function as input devices), audio output devices (such as speakers (2609), headphones (not shown)), visual output devices (such as screens (2610), including CRT screens, LCD screens, and plasma screens, each with or without touchscreen input capability, and each with or without haptic feedback capability - some of which can output two-dimensional visual output or three or more dimensional output via means such as stereographic output, virtual reality glasses (not shown), holographic displays and smoke tanks (not shown), and printers (not shown)).
[0169] The computer system (2600) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (2620) along with CD / DVD-like media (2621), thumb-drives (2622), removable hard drives or solid-state drives (2623), traditional magnetic media such as tape and floppy disks (not shown), specialized ROM / ASIC / PLD-based devices such as security dongles (not shown), and the like.
[0170] Those skilled in the art should also understand that the term "computer readable media" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transient signals.
[0171] The computer system 2600 may also include interfaces 2654 to one or more communications networks 2655. Networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicular, and industrial, real-time, delay-tolerant, and the like. Examples of networks include local area networks such as Ethernet; cellular networks including WLAN, GSM, 3G, 4G, 5G, LTE, and the like; TV wide-area or wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; and vehicular and industrial networks including CAN bus. Certain networks typically require an external network interface adapter (e.g., a USB port on the computer system 2600) to connect to a particular general-purpose data port or peripheral bus 2649. Others are typically integrated into the core of the computer system 2600 by attachment to a system bus, as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (2600) can communicate with other entities. Such communications may be unidirectional, receive-only (e.g., broadcast television), unidirectional transmit-only (e.g., a CAN bus to a given CAN bus device), or bidirectional to other computer systems using, for example, local or wide-area digital networks. Predetermined protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.
[0172] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core (2640) of the computer system (2600).
[0173] The cores 2640 may include one or more central processing units (CPUs) 2641, graphics processing units (GPUs) 2642, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 2643, hardware accelerators for certain tasks 2644, graphics adapters 2650, etc. These devices may be connected via a system bus 2648, along with read-only memory (ROM) 2645, random access memory 2646, internal mass storage such as an internal non-user-accessible hard drive, SSD, etc. 2647. In some computer systems, the system bus 2648 is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus 2648 or via a peripheral bus 2649. In one example, a screen 2610 may be connected to the graphics adapter 2650. Peripheral bus architectures include PCI, USB, and the like.
[0174] The CPU (2641), GPU (2642), FPGA (2643), and accelerator (2644) can execute predetermined instructions, which in combination can constitute the aforementioned computer code. The computer code can be stored in ROM (2645) or RAM (2646). Transient data can also be stored in RAM (2646), while permanent data can be stored, for example, in internal mass storage (2647). Fast storage and retrieval to any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (2641), GPU (2642), mass storage (2647), ROM (2645), RAM (2646), etc.
[0175] The computer-readable media may have computer code thereon for performing various computer-implemented operations. The media 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.
[0176] As a non-limiting example, a computer system having architecture 2600, and in particular core 2640, can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage, as described above, as well as storage associated with core 2640 of a non-transitory nature, such as core-internal mass storage 2647 or ROM 2645. Software implementing various embodiments of the present disclosure may be stored on such devices and executed by core 2640. Computer-readable media may include one or more memory devices or chips, depending on particular needs. Software can cause the cores (2640), and specifically the processors therein (including CPUs, GPUs, FPGAs, etc.), to perform particular processes or portions of particular processes described herein, including defining data structures stored in RAM (2646) and modifying those data structures according to software-defined processes. Additionally or alternatively, the computer system can provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerators (2644)), which can operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software include logic, and vice versa, as appropriate. References to computer-readable media can include circuitry (such as integrated circuits (ICs)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0177] While the particular invention has been described with reference to exemplary embodiments, this description is not meant to be limiting. Various modifications of the exemplary and additional embodiments of the invention will be apparent to those skilled in the art from this description. Those skilled in the art will readily appreciate that these and various other modifications can be made to the exemplary embodiments shown and described herein without departing from the spirit and scope of the invention. Accordingly, the appended claims are expected to cover such modifications and alternative embodiments. Certain proportions in the figures may be exaggerated, while other proportions may be minimized. Accordingly, the present disclosure and the figures are to be considered illustrative and not restrictive.
Claims
1. 1. A method for transform block partitioning in video decoding, comprising: receiving, by a device including a memory storing instructions and a processor in communication with the memory, a coded video bitstream for luma blocks and chroma blocks, the luma blocks being co-located with the chroma blocks, the coded video bitstream including luma parameters and chroma parameters; partitioning, by the device, the luma blocks to obtain a luma coding block partitioning tree; partitioning, by the device, the chroma blocks to obtain a chroma coding block partitioning tree; partitioning, by the device, a luma coding block from the luma coding block partitioning tree to obtain a plurality of luma transform blocks, wherein the partitioning of the luma coding block to obtain the plurality of luma transform blocks comprises: extracting the luma parameters from the coded video bitstream, the luma parameters indicating a transform partitioning structure from the luma coding block and a plurality of luma transform blocks; and partitioning the luma coding block according to the luma parameters to obtain the plurality of luma transform blocks. Steps and partitioning, by the device, a chroma coding block from the chroma coding block partitioning tree to obtain a plurality of chroma transform blocks, the partitioning of the chroma coding block to obtain the plurality of chroma transform blocks comprising: extracting the chroma parameters from the coded video bitstream, the chroma parameters including a first chroma parameter and a second chroma parameter, the first chroma parameter indicating a first transform partitioning structure from the chroma coding block and a plurality of chroma transform blocks for a first chroma component, and the second chroma parameter indicating a second transform partitioning structure from the chroma coding block and a plurality of chroma transform blocks for a second chroma component, the first transform partitioning structure being different from the second transform partitioning structure; and partitioning the chroma coding block according to the chroma parameters to obtain the plurality of chroma transformation blocks; Steps and Including, the luma coding block partitioning tree is different from the chroma coding block partitioning tree. method.
2. the chroma coding block is larger than a minimum coding block size; The method of claim 1.
3. The step of partitioning the chroma coding block to obtain the plurality of chroma transform blocks comprises: partitioning a first component of the chroma coding block according to the first chroma parameters to obtain a first plurality of chroma transformation blocks; partitioning a second component of the chroma coding block according to the second chroma parameters to obtain a second plurality of chroma transform blocks; Including, The method of claim 1.
4. The chroma coding block includes a quad-tree transform division, or the chroma coding block that is a non-square rectangular block includes a binary tree division. The method of claim 1.
5. The step of partitioning the chroma coding block to obtain a plurality of chroma transform blocks includes: the chroma coding block is larger than a minimum coding block size; the chroma coding block is smaller than a maximum coding block size; the chroma coding block uses at least one intra prediction mode; or the chroma coding block uses at least one transform type; partitioning the chroma coding block to obtain a plurality of chroma transform blocks in response to at least one of the following being satisfied: The method of claim 1.
6. the minimum coding block size corresponds to a minimum coding width including at least one of 4, 8, 16, 32, or 64; the maximum coding block size corresponds to a maximum coding length including at least one of 32, 64, 128, or 256; or the at least one intra-prediction mode includes at least one directional intra-prediction mode; The method of claim 5.
7. the coded video bitstream includes luma coding parameters, luma transform parameters, chroma coding parameters, and chroma transform parameters; During entropy decoding of the coded video bitstream, the chroma transform parameters use at least one of the luma coding parameters, the luma transform parameters, or the chroma coding parameters as a context. The method of claim 1.
8. 1. An apparatus for transform block partitioning in video decoding, comprising: a memory storing instructions; a processor in communication with the memory; 8. Apparatus, wherein the instructions cause the processor to perform the method of any one of claims 1 to 7.
9. A computer program product that, when run on a computer, causes the computer to carry out the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Video Encoding and Decoding with Chrominance Sub-sampling
GB2505408A
Method and Apparatus of Flexible Block Partition for Video Coding
US20170244964A1
Method of Video Coding Using Separate Coding Tree for Luma and Chroma
US20180288446A1
Reconstruction of blocks of video data using block size restriction
US20200296367A1
Method and device for encoding / decoding an image unit comprising image data represented by a luminance channel and at least one chrominance channel
WO2017137311A1