Method, electronic device and storage medium for video encoding
By limiting the minimum block size in video encoding and adopting different chroma subsampling formats and prediction modes, the problem of efficiently encoding large amounts of video data is solved, and more efficient video data decoding and image quality improvement are achieved.
Patent Information
- Application Number
- CN202411201350.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-13
- Filing Date
- 2020-08-14
- Publication Date
- 2025-09-09
- Estimated Expiration
- 2040-08-14
AI Technical Summary
As the quality of digital videos improves, the amount of video data to be encoded/decoded increases exponentially. Existing technologies make it difficult to encode/decode video data more efficiently while maintaining image quality.
The video data is decoded by limiting the minimum available block size in video encoding, adopting 4:4:4, 4:2:2 or 4:2:0 chroma subsampling format, and combining intra-frame prediction mode and inter-frame prediction mode.
It improves the efficiency of video data encoding/decoding, reduces redundant data, and improves image quality.
Smart Images

Figure CN118842924B_ABST
Abstract
Description
[0001] This application is a divisional application of Chinese patent application No. 202080057598.1, which is a Chinese national phase application of international patent application PCT / US2020 / 046501 filed on August 14, 2020, and which claims priority to U.S. patent application No. 62 / 900,424 filed on September 13, 2019 and U.S. patent application No. 62 / 887,650 filed on August 15, 2019. Technical Field
[0002] The present application relates generally to video data coding and compression, and more particularly to methods and systems for limiting the minimum usable block size in video coding. Background Art
[0003] Digital video is supported by a variety of electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smart phones, video teleconferencing devices, video streaming devices, etc. Electronic devices transmit, receive, encode, decode, and / or store digital video data by implementing video compression / decompression standards defined by MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10, Advanced Video Codec (AVC), High Efficiency Video Codec (HEVC), and Versatile Video Codec (VVC) standards. Video compression typically involves performing spatial (intra-frame) prediction and / or temporal (inter-frame) prediction to reduce or remove redundancy inherent in video data. For block-based video codecs, a video frame is partitioned into one or more slices, each slice having multiple video blocks, which may also be referred to as codec tree units (CTUs). Each CTU may contain a codec unit (CU) or be recursively split into smaller CUs until a predefined minimum CU size is reached. Each CU (also called leaf-CU) contains one or more transform units (TUs), and each CU also contains one or more prediction units (PUs). Each CU can be coded or decoded in intra mode, inter mode, or IBC mode. Video blocks in an intra-coded (I) slice of a video frame are coded using spatial prediction, which is relative to reference samples in neighboring blocks within the same video frame. Video blocks in an inter-coded (P or B) slice of a video frame can use spatial prediction or temporal prediction, where spatial prediction is relative to reference samples in neighboring blocks within the same video frame, and temporal prediction is relative to reference samples in other previous and / or future reference video frames.
[0004] A prediction block for the current video block to be coded is generated based on spatial or temporal prediction of previously coded reference blocks (e.g., neighboring blocks). The process of finding the reference block can be accomplished using a block matching algorithm. The residual data representing the pixel differences between the current block to be coded and the prediction block is called a residual block or prediction error. Inter-coded blocks are encoded based on motion vectors and residual blocks, with the motion vectors pointing to reference blocks in the reference frames that form the prediction block. The process of determining motion vectors is typically called motion estimation. Intra-coded blocks are encoded based on intra-frame prediction modes and residual blocks. For further compression, the residual block is transformed from the pixel domain to a transform domain, such as the frequency domain, to produce residual transform coefficients, which can then be quantized. The quantized transform coefficients, initially arranged as a two-dimensional array, can be scanned to produce a one-dimensional vector of transform coefficients and then entropy coded into the video bitstream to achieve even greater compression.
[0005] The coded video bitstream is then stored in a computer-readable storage medium (e.g., flash memory) for access by another electronic device with digital video capabilities, or is directly transmitted to the electronic device in a wired or wireless manner. The electronic device then performs video decompression (which is the reverse process of the video compression described above), for example, by parsing the coded video bitstream to obtain syntax elements from the bitstream, and reconstructing digital video data from the coded video bitstream into its original format based at least in part on the syntax elements obtained from the bitstream, and the electronic device presents the reconstructed digital video data on a display of the electronic device.
[0006] As digital video quality evolves from HD to 4K×2K or even 8K×4K, the amount of video data to be encoded / decoded increases exponentially. Encoding / decoding video data more efficiently while maintaining the image quality of the decoded video data remains a persistent challenge. Summary of the Invention
[0007] The present application describes embodiments related to video data encoding and decoding, and more particularly, the embodiments relate to systems and methods for limiting the minimum usable block size in video encoding and decoding.
[0008] According to a first aspect of the present application, a method for decoding video data includes: receiving data encoded with a codec tree node from a bitstream, wherein the codec tree node is associated with a predefined splitting method; determining a mode type of the codec tree node, including: setting the codec tree node to a first mode type based on determining that the codec tree node is encoded in a 4:4:4 or 4:0:0 chroma subsampling format; setting the codec tree node to a second mode type based on determining that the codec tree node is encoded in a 4:2:2 or 4:2:0 chroma subsampling format and the codec tree node is a minimum chroma intra prediction unit (SCIPU); and if If the luminance block and splitting method of the codec tree node meet the second criterion, the codec tree node is set to the third mode type; and the codec tree unit is decoded based on the mode type, including: according to determining that the codec tree node is the second mode: each codec block in the codec tree node is decoded using the intra-frame prediction mode, according to determining that the codec tree node is the first mode or the third mode: receiving a syntax element indicating the prediction mode associated with the codec tree node from the bitstream: according to determining that the syntax element has a first value: each codec block in the codec tree node is decoded using the inter-frame prediction mode; and according to determining that the syntax element has a second value: each codec block in the codec tree node is decoded using the intra-frame prediction mode.
[0009] According to a second aspect of the present application, an electronic device includes one or more processing units, a memory, and a plurality of programs stored in the memory. When executed by the one or more processing units, the programs enable the electronic device to perform the method for decoding video data as described above.
[0010] According to a third aspect of the present application, a non-transitory computer-readable storage medium stores a plurality of programs for execution by an electronic device having one or more processing units. When executed by the one or more processing units, the programs cause the electronic device to perform the method for decoding video data as described above. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The accompanying drawings, which are included to provide a further understanding of the embodiments and are incorporated in and constitute a part of this specification, illustrate the described embodiments and together with the description serve to explain the basic principles. Like reference numerals designate corresponding parts.
[0012] Figure 1 is a block diagram illustrating an exemplary video encoding and decoding system according to some embodiments of the present disclosure.
[0013] Figure 2 is a block diagram illustrating an exemplary video encoder according to some embodiments of the present disclosure.
[0014] Figure 3 is a block diagram illustrating an exemplary video decoder according to some embodiments of the present disclosure.
[0015] Figures 4A to 4E is a block diagram illustrating how a frame is recursively partitioned into multiple video blocks of different sizes and shapes according to some embodiments of the present disclosure.
[0016] Figure 5 is a block diagram illustrating an example of a minimum chroma intra prediction unit (SCIPU) according to some embodiments of the present disclosure.
[0017] Figures 6A to 6C is a block diagram illustrating examples of chroma formats supported in VVC according to some embodiments of the present disclosure.
[0018] Figure 7 is a block diagram illustrating examples of minimum chroma intra prediction units (SCIPUs) for various chroma formats according to some embodiments of the present disclosure.
[0019] Figure 8 is a flow chart illustrating an exemplary process by which a video decoder implements techniques for decoding a minimum chroma intra prediction unit (SCIPU), according to some embodiments of the present disclosure. DETAILED DESCRIPTION
[0020] Reference will now be made in detail to specific embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous non-limiting specific details are set forth to facilitate an understanding of the subject matter presented herein. However, it will be apparent to one skilled in the art that various alternatives may be employed without departing from the scope of the claims, and that the subject matter may be practiced without these specific details. For example, it will be apparent to one skilled in the art that the subject matter presented herein may be implemented on many types of electronic devices having digital video capabilities.
[0021] Figure 1 is a block diagram illustrating an exemplary system 10 for encoding and decoding video blocks in parallel according to some embodiments of the present disclosure. Figure 1 As shown, system 10 includes a source device 12 that generates and encodes video data to be decoded at a later time by a destination device 14. Source device 12 and destination device 14 may include any of a variety of electronic devices, including desktop or laptop computers, tablet computers, smartphones, set-top boxes, digital televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some implementations, source device 12 and destination device 14 are equipped with wireless communication capabilities.
[0022] In some embodiments, the destination device 14 may receive the encoded video data to be decoded via link 16. Link 16 may include any type of communication medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, link 16 may include a communication medium for enabling the source device 12 to transmit the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated according to a communication standard such as a wireless communication protocol and transmitted to the destination device 14. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be used to facilitate communication from the source device 12 to the destination device 14.
[0023] In some other embodiments, the encoded video data can be transferred from the output interface 22 to a storage device 32. The encoded video data in the storage device 32 can then be accessed by the destination device 14 via the input interface 28. The storage device 32 can include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, flash memory, volatile memory or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In a further example, the storage device 32 can correspond to a file server or another intermediate storage device that can hold the encoded video data generated by the source device 12. The destination device 14 can access the stored video data from the storage device 32 via streaming or downloading. The file server can be any type of computer capable of storing and transferring the encoded video data to the destination device 14. Exemplary file servers include a web server (e.g., for a website), an FTP server, a network attached storage (NAS) device, or a local disk drive. Destination device 14 may access the encoded video data through any standard data connection, including a wireless channel suitable for accessing encoded video data stored on a file server (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of both. The transmission of the encoded video data from storage device 32 may be a streaming transmission, a download transmission, or a combination of both.
[0024] like Figure 1As shown, source device 12 includes a video source 18, a video encoder 20, and an output interface 22. Video source 18 may include a source such as a video capture device (e.g., a camera), a video archive containing previously captured video, a video feed interface for receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as source video. As an example, if video source 18 is a camera of a security monitoring system, source device 12 and destination device 14 may form a camera phone or video phone. However, the embodiments described in this application may be generally applicable to video encoding and decoding, and may be applied to wireless and / or wired applications.
[0025] Captured, pre-captured, or computer-generated video can be encoded by video encoder 20. The encoded video data can be transmitted directly to destination device 14 via output interface 22 of source device 12. The encoded video data can also (or alternatively) be stored on storage device 32 for later access by destination device 14 or other devices for decoding and / or playback. Output interface 22 may further include a modem and / or a transmitter.
[0026] Destination device 14 includes an input interface 28, a video decoder 30, and a display device 34. Input interface 28 may include a receiver and / or a modem and receives encoded video data via link 16. The encoded video data transmitted via link 16 or provided on storage device 32 may include various syntax elements generated by video encoder 20 for use by video decoder 30 in decoding the video data. Such syntax elements may be included within the encoded video data transmitted over a communication medium, stored on a storage medium, or stored in a file server.
[0027] In some implementations, destination device 14 may include a display device 34, which may be an integrated display device or an external display device configured to communicate with destination device 14. Display device 34 displays the decoded video data to a user and may include any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.
[0028] The video encoder 20 and the video decoder 30 may operate according to a proprietary standard or an industry standard, such as VVC, HEVC, MPEG-4 Part 10, Advanced Video Codec (AVC), or an extension of such a standard. It should be understood that the present application is not limited to a particular video codec / decoding standard and may be applicable to other video codec / decoding standards. It is generally contemplated that the video encoder 20 of the source device 12 may be configured to encode the video data according to any of these current or future standards. Similarly, it is generally contemplated that the video decoder 30 of the destination device 14 may be configured to decode the video data according to any of these current or future standards.
[0029] The video encoder 20 and the video decoder 30 can each be implemented as any of a variety of suitable encoder circuit systems, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When implemented partially in software, the electronic device can store instructions for the software in a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the video encoding / decoding operations disclosed in the present disclosure. Each of the video encoder 20 and the video decoder 30 can be included in one or more encoders or decoders, either of which can be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device.
[0030] Figure 2 is a block diagram illustrating an exemplary video encoder 20 according to some embodiments described herein. Video encoder 20 can perform intra-frame prediction and inter-frame prediction codecs on video blocks within a video frame. Intra-frame prediction codecs rely on spatial prediction to reduce or remove spatial redundancy in video data within a given video frame or picture. Inter-frame prediction codecs rely on temporal prediction to reduce or remove temporal redundancy in video data within adjacent video frames or pictures of a video sequence.
[0031] like Figure 2As shown, video encoder 20 includes video data memory 40, prediction processing unit 41, decoded picture buffer (DPB) 64, adder 50, transform processing unit 52, quantization unit 54, and entropy coding unit 56. Prediction processing unit 41 further includes motion estimation unit 42, motion compensation unit 44, segmentation unit 45, intra-prediction processing unit 46, and intra-block copy (BC) unit 48. In some embodiments, video encoder 20 also includes inverse quantization unit 58, inverse transform processing unit 60, and adder 62 for video block reconstruction. A deblocking filter (not shown) may be located between adder 62 and DPB 64 to filter block boundaries to remove blocking artifacts from the reconstructed video. In addition to the deblocking filter, a loop filter (not shown) may also be used to filter the output of adder 62. Video encoder 20 may take the form of fixed or programmable hardware units, or may be divided between one or more of the fixed or programmable hardware units shown.
[0032] The video data memory 40 can store video data to be encoded by the components of the video encoder 20. The video data in the video data memory 40 can be obtained, for example, from the video source 18. The DPB 64 is a buffer that stores reference video data for use by the video encoder 20 when encoding the video data (e.g., in intra-frame or inter-frame prediction codec mode). The video data memory 40 and the DPB 64 can be formed by any of a variety of memory devices. In various examples, the video data memory 40 can be on-chip with the other components of the video encoder 20, or off-chip relative to those components.
[0033] like Figure 2 As shown, after receiving the video data, the segmentation unit 45 within the prediction processing unit 41 segments the video data into video blocks. The segmentation may also include segmenting the video frame into slices, tiles, or other larger codec units (CUs) according to a predefined splitting structure associated with the video data (such as a quadtree structure). The video frame can be divided into multiple video blocks (or sets of video blocks called tiles). The prediction processing unit 41 can select one of multiple possible prediction codec modes for the current video block based on error results (e.g., codec rate and distortion level), such as one of multiple intra-frame prediction codec modes or one of multiple inter-frame prediction codec modes. The prediction processing unit 41 can provide the resulting intra-frame or inter-frame prediction codec block to the adder 50 to generate a residual block, and to the adder 62 to reconstruct the coded block for subsequent use as part of a reference frame. The prediction processing unit 41 also provides syntax elements to the entropy coding unit 56, such as motion vectors, intra-frame mode indicators, segmentation information, and other such syntax information.
[0034] To select an appropriate intra-prediction codec mode for the current video block, intra-prediction processing unit 46 within prediction processing unit 41 may perform intra-prediction codec on the current video block relative to one or more neighboring blocks in the same frame as the current block to be coded to provide spatial prediction. Motion estimation unit 42 and motion compensation unit 44 within prediction processing unit 41 may perform inter-prediction codec on the current video block relative to one or more prediction blocks in one or more reference frames to provide temporal prediction. Video encoder 20 may perform multiple codec passes, for example, to select an appropriate codec mode for each block of video data.
[0035] In some embodiments, motion estimation unit 42 determines the inter-prediction mode for the current video frame by generating a motion vector according to a predetermined pattern within a sequence of video frames. The motion vector indicates the displacement of a prediction unit (PU) of a video block within the current video frame relative to a prediction block within a reference video frame. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors that estimate motion for a video block. A motion vector may, for example, indicate the displacement of a PU of a video block within the current video frame or picture relative to a prediction block (or other coded unit) within a reference frame, the prediction block being relative to the current block (or other coded unit) coded within the current frame. The predetermined pattern may designate video frames in the sequence as P-frames or B-frames. Intra BC unit 48 may determine a vector, such as a block vector, for intra BC coding in a manner similar to how motion estimation unit 42 determines motion vectors for inter prediction, or may utilize motion estimation unit 42 to determine the block vector.
[0036] A prediction block is a block of a reference frame that is considered to closely match the PU of the video block to be coded in terms of pixel difference, which can be determined by sum of absolute difference (SAD), sum of squared difference (SSD), or other difference metrics. In some embodiments, video encoder 20 can calculate values for sub-integer pixel positions of the reference frame stored in DPB 64. For example, video encoder 20 can interpolate values for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference frame. Thus, motion estimation unit 42 can perform motion searches relative to full pixel positions and fractional pixel positions and output motion vectors with fractional pixel precision.
[0037] Motion estimation unit 42 calculates a motion vector for a PU of a video block in an inter-predicted codec frame by comparing the position of the PU to the position of a prediction block of a reference frame selected from a first reference frame list (list 0) or a second reference frame list (list 1), each of which identifies one or more reference frames stored in DPB 64. Motion estimation unit 42 sends the calculated motion vector to motion compensation unit 44 and then to entropy encoding unit 56.
[0038] Motion compensation performed by motion compensation unit 44 may involve obtaining or generating a prediction block based on the motion vector determined by motion estimation unit 42. Upon receiving the motion vector for the PU of the current video block, motion compensation unit 44 may locate the prediction block pointed to by the motion vector in one of the reference frame lists, retrieve the prediction block from DPB 64, and forward the prediction block to adder 50. Adder 50 then forms a residual video block of pixel difference values by subtracting the pixel values of the prediction block provided by motion compensation unit 44 from the pixel values of the current video block being coded. The pixel difference values forming the residual video block may include luma difference components, chroma difference components, or both. Motion compensation unit 44 may also generate syntax elements associated with the video block of the video frame for use by video decoder 30 when decoding the video block of the video frame. The syntax elements may include, for example, syntax elements defining a motion vector for identifying the prediction block, any flags indicating a prediction mode, or any other syntax information described herein. Note that motion estimation unit 42 and motion compensation unit 44 may be highly integrated but are illustrated separately for conceptual purposes.
[0039] In some embodiments, the intra BC unit 48 may generate a vector and obtain a prediction block in a manner similar to that described above in conjunction with the motion estimation unit 42 and the motion compensation unit 44, but the prediction block is in the same frame as the current block being encoded, and the vector is referred to as a block vector rather than a motion vector. Specifically, the intra BC unit 48 may determine an intra prediction mode to use for encoding the current block. In some examples, the intra BC unit 48 may encode the current block using various intra prediction modes, for example, during multiple separate encoding passes, and test their performance using rate-distortion analysis. The intra BC unit 48 may then select an appropriate intra prediction mode to use from among the various tested intra prediction modes and generate an intra mode indicator accordingly. For example, the intra BC unit 48 may calculate rate-distortion values using the rate-distortion analysis for the various tested intra prediction modes and select the intra prediction mode with the best rate-distortion characteristics among the tested modes as the appropriate intra prediction mode to use. Rate-distortion analysis typically determines the amount of distortion (or error) between a coded block and the original uncoded block that was coded to produce the coded block, as well as the bit rate (i.e., number of bits) used to produce the coded block. Intra BC unit 48 may calculate ratios based on the distortion and rate for various coded blocks to determine which intra-prediction mode exhibits the best rate-distortion value for the block.
[0040] In other examples, intra BC unit 48 may utilize, in whole or in part, motion estimation unit 42 and motion compensation unit 44 to perform such functions for intra BC prediction in accordance with embodiments described herein. In either case, for intra block copying, the prediction block may be a block that is deemed to closely match the block to be coded in terms of pixel differences, which may be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference metrics, and identification of the prediction block may include calculating values for sub-integer pixel positions.
[0041] Regardless of whether the prediction block is from the same frame based on intra-frame prediction or from different frames based on inter-frame prediction, video encoder 20 can form a residual video block by subtracting the pixel values of the prediction block from the pixel values of the current video block being encoded and decoded, thereby forming pixel difference values. The pixel difference values forming the residual video block may include luma component differences and chroma component differences.
[0042] Intra-prediction processing unit 46 may perform intra-prediction on the current video block as an alternative to inter-prediction performed by motion estimation unit 42 and motion compensation unit 44, or intra-block copy prediction performed by intra BC unit 48, as described above. Specifically, intra-prediction processing unit 46 may determine an intra-prediction mode to use for encoding the current block. To do so, intra-prediction processing unit 46 may encode the current block using various intra-prediction modes, for example, during multiple separate encoding passes, and intra-prediction processing unit 46 (or a mode selection unit in some examples) may select an appropriate intra-prediction mode to use from the tested intra-prediction modes. Intra-prediction processing unit 46 may provide information indicating the selected intra-prediction mode for the block to entropy encoding unit 56. Entropy encoding unit 56 may encode the information indicating the selected intra-prediction mode in the bitstream.
[0043] After prediction processing unit 41 determines a prediction block for the current video block via inter-prediction or intra-prediction, adder 50 forms a residual video block by subtracting the prediction block from the current video block. The residual video data in the residual block may be included in one or more transform units (TUs) and provided to transform processing unit 52. Transform processing unit 52 transforms the residual video data into residual transform coefficients using a transform, such as a discrete cosine transform (DCT) or a conceptually similar transform.
[0044] Transform processing unit 52 may send the resulting transform coefficients to quantization unit 54. Quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may also reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, quantization unit 54 may then perform a scan of the matrix comprising the quantized transform coefficients. Alternatively, entropy coding unit 56 may perform the scan.
[0045] After quantization, entropy coding unit 56 entropy encodes the quantized transform coefficients into a video bitstream using, for example, context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy coding method or technique. The encoded bitstream may then be transmitted to video decoder 30 or archived in storage device 32 for later transmission to or retrieval by video decoder 30. Entropy coding unit 56 may also entropy encode motion vectors and other syntax elements for the current video frame being encoded.
[0046] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual video block in the pixel domain to generate a reference block used to predict other video blocks. As noted above, motion compensation unit 44 may generate a motion compensated prediction block from one or more reference blocks of a frame stored in DPB 64. Motion compensation unit 44 may also apply one or more interpolation filters to the prediction block to calculate sub-integer pixel values for use in motion estimation.
[0047] Adder 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reference block for storage in DPB 64. The reference block may then be used as a prediction block by intra BC unit 48, motion estimation unit 42, and motion compensation unit 44 to inter-predict another video block in a subsequent video frame.
[0048] Figure 3 is a block diagram illustrating an exemplary video decoder 30 according to some embodiments of the present application. The video decoder 30 includes a video data memory 79, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90, and a DPB 92. The prediction processing unit 81 further includes a motion compensation unit 82, an intra-frame prediction processing unit 84, and an intra-frame BC unit 85. The video decoder 30 can perform a decoding process that is generally combined with the above. Figure 2 The encoding process is reciprocal to that described with respect to video encoder 20. For example, motion compensation unit 82 may generate prediction data based on motion vectors received from entropy decoding unit 80, and intra-prediction unit 84 may generate prediction data based on intra-prediction mode indicators received from entropy decoding unit 80.
[0049] In some examples, units of the video decoder 30 may be tasked with performing embodiments of the present disclosure. Furthermore, in some examples, embodiments of the present disclosure may be divided between one or more units of the video decoder 30. For example, the intra BC unit 85 may perform embodiments of the present disclosure alone or in combination with other units of the video decoder 30, such as the motion compensation unit 82, the intra prediction processing unit 84, and the entropy decoding unit 80. In some examples, the video decoder 30 may not include the intra BC unit 85, and the functionality of the intra BC unit 85 may be performed by other components of the prediction processing unit 81, such as the motion compensation unit 82.
[0050] The video data memory 79 may store video data, such as an encoded video bitstream, to be decoded by other components of the video decoder 30. The video data stored in the video data memory 79 may be obtained, for example, from the storage device 32, from a local video source (such as a camera), via a wired or wireless network communication of video data, or by accessing a physical data storage medium (e.g., a flash drive or hard disk). The video data memory 79 may include a codec picture buffer (CPB) that stores encoded video data from the encoded video bitstream. The decoded picture buffer (DPB) 92 of the video decoder 30 stores reference video data for use when decoding the video data by the video decoder 30 (e.g., in intra-frame or inter-frame prediction codec mode). The video data memory 79 and the DPB 92 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. For illustrative purposes, the video data memory 79 and the DPB 92 are shown in FIG. Figure 3 92 as two distinct components of video decoder 30. However, it will be apparent to those skilled in the art that video data memory 79 and DPB 92 may be provided by the same memory device or separate memory devices. In some examples, video data memory 79 may be on-chip with the other components of video decoder 30, or off-chip relative to those components.
[0051] During the decoding process, the video decoder 30 receives an encoded video bitstream representing video blocks of an encoded video frame and associated syntax elements. The video decoder 30 may receive syntax elements at the video frame level and / or the video block level. The entropy decoding unit 80 of the video decoder 30 entropy decodes the bitstream to generate quantized coefficients, motion vectors or intra-prediction mode indicators, and other syntax elements. The entropy decoding unit 80 then forwards the motion vectors and other syntax elements to the prediction processing unit 81.
[0052] When a video frame is encoded and decoded as an intra-frame prediction codec (I) frame or an intra-frame codec prediction block in other types of frames, the intra-frame prediction processing unit 84 of the prediction processing unit 81 can generate prediction data for the video block of the current video frame based on the intra-frame prediction mode transmitted by the signal and the reference data from the previously decoded block of the current frame.
[0053] When the video frame is encoded as an inter-frame prediction codec (i.e., B or P) frame, the motion compensation unit 82 of the prediction processing unit 81 generates one or more prediction blocks for the video block of the current video frame based on the motion vectors and other syntax elements received from the entropy decoding unit 80. Each prediction block can be generated from a reference frame in one of the reference frame lists. The video decoder 30 can use a default construction technique to construct the reference frame lists: List 0 and List 1 based on the reference frames stored in the DPB 92.
[0054] In some examples, when a video block is encoded or decoded according to the intra BC mode described herein, intra BC unit 85 of prediction processing unit 81 generates a prediction block for the current video block based on the block vector and other syntax elements received from entropy decoding unit 80. The prediction block may be within a reconstructed region of the same picture as the current video block defined by video encoder 20.
[0055] The motion compensation unit 82 and / or the intra BC unit 85 determine prediction information for a video block of the current video frame by parsing the motion vectors and other syntax elements, and then uses the prediction information to generate a prediction block for the current video block being decoded. For example, the motion compensation unit 82 uses some of the received syntax elements to determine a prediction mode (e.g., intra prediction or inter prediction) for encoding or decoding the video block of the video frame, an inter-prediction frame type (e.g., B or P), construction information for one or more reference frame lists in a reference frame list for the frame, a motion vector for each inter-prediction-encoded video block of the frame, an inter-prediction state for each inter-prediction-encoded video block of the frame, and other information for decoding the video block in the current video frame.
[0056] Similarly, the intra BC unit 85 may use some of the received syntax elements (e.g., flags) to determine whether the current video block is predicted using intra BC mode, construction information of which video blocks of the frame are within the reconstruction region and should be stored in the DPB 92, block vectors for each intra BC predicted video block of the frame, intra BC prediction status for each intra BC predicted video block of the frame, and other information for decoding the video blocks in the current video frame.
[0057] Motion compensation unit 82 may also perform interpolation using interpolation filters used by video encoder 20 during encoding of the video block to calculate interpolated values for sub-integer pixels of a reference block. In this case, motion compensation unit 82 may determine the interpolation filters used by video encoder 20 from received syntax elements and use the interpolation filters to produce a prediction block.
[0058] Inverse quantization unit 86 inverse quantizes the quantized transform coefficients provided in the bitstream and entropy decoded by entropy decoding unit 80, using the same quantization parameters that were calculated by video encoder 20 for each video block in the video frame to determine the degree of quantization. Inverse transform processing unit 88 applies an inverse transform (e.g., an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients to reconstruct the residual block in the pixel domain.
[0059] After the motion compensation unit 82 or the intra BC unit 85 generates a prediction block for the current video block based on the vectors and other syntax elements, the adder 90 reconstructs the decoded video block for the current video block by summing the residual block from the inverse transform processing unit 88 and the corresponding prediction block generated by the motion compensation unit 82 and the intra BC unit 85. A loop filter (not shown) can be positioned between the adder 90 and the DPB 92 to further process the decoded video block. The decoded video block in a given frame is then stored in the DPB 92, which stores reference frames for subsequent motion compensation of the next video block. The DPB 92, or a memory device separate from the DPB 92, can also store the decoded video for later presentation on a display device such as a video player. Figure 1 on a display device 34).
[0060] In a typical video encoding and decoding process, a video sequence typically comprises an ordered set of frames or pictures. Each frame may comprise three sample arrays, denoted as SL, SCb, and SCr. SL is a two-dimensional array of luma samples. SCb is a two-dimensional array of Cb chroma samples. SCr is a two-dimensional array of Cr chroma samples. In other instances, a frame may be monochrome and therefore comprise only a two-dimensional array of luma samples.
[0061] like Figure 4A As shown, the video encoder 20 (or more specifically the segmentation unit 45) generates an encoded representation of a frame by first segmenting the frame into a set of codec tree units (CTUs). A video frame may include an integer number of CTUs sequentially ordered from left to right and from top to bottom in a raster scan order. Each CTU is the largest logical codec unit, and the width and height of the CTU are signaled by the video encoder 20 in a sequence parameter set so that all CTUs in a video sequence have the same size, i.e., one of 128×128, 64×64, 32×32, and 16×16. However, it should be noted that the present application is not necessarily limited to a particular size. Figure 4BAs shown, each CTU may include one codec tree block (CTB) of luma samples, two corresponding codec tree blocks of chroma samples, and syntax elements for encoding and decoding the samples of the codec tree block. The syntax elements describe the properties of different types of units of codec blocks of pixels and how the video sequence can be reconstructed at the video decoder 30. The syntax elements include inter-frame prediction or intra-frame prediction, intra-frame prediction mode, motion vector and other parameters. In a monochrome picture or a picture with three separate color planes, a CTU may include a single codec tree block and syntax elements for encoding and decoding the samples of the codec tree block. The codec tree block may be an N×N block of samples.
[0062] To achieve better performance, the video encoder 20 may recursively perform tree partitioning, such as binary tree partitioning, ternary tree partitioning, quadtree partitioning, or a combination of both, on the codec tree block of the CTU and divide the CTU into smaller codec units (CUs). Figure 4C As shown, a 64×64 CTU 400 is first divided into four smaller CUs, each having a block size of 32×32. Of the four smaller CUs, CU 410 and CU 420 are each divided into four 16×16 CUs by block size. Two 16×16 CUs 430 and CU 440 are each further divided into four 8×8 CUs by block size. Figure 4D Depicts a quadtree data structure, which illustrates the Figure 4C As a final result of the partitioning process of the CTU 400 depicted in FIG, each leaf node of the quadtree corresponds to a CU with a corresponding size ranging from 32×32 to 8×8. Figure 4B Each CU may include a codec block (CB) of luma samples and two corresponding codec blocks of chroma samples of the same size frame, as well as syntax elements for encoding and decoding the samples of the codec block. In a monochrome picture or a picture with three separate color planes, a CU may include a single codec block and syntax structures for encoding and decoding the samples of the codec block. It should be noted that Figure 4C and Figure 4D The quadtree partitioning depicted in FIG is for illustration purposes only, and a CTU can be split into CUs based on quadtree / ternary tree / binary tree partitioning to accommodate different local characteristics. In the multi-type tree structure, a CTU is partitioned by a quadtree structure, and each quadtree leaf CU can be further partitioned by a binary tree structure and a ternary tree structure. Figure 4E As shown, there are five types of segmentation, namely, quaternary segmentation, horizontal binary segmentation, vertical binary segmentation, horizontal ternary segmentation, and vertical ternary segmentation.
[0063] In some embodiments, the video encoder 20 may further partition the codec block of the CU into one or more M×N prediction blocks (PBs). A prediction block is a rectangular (square or non-square) block of samples to which the same prediction (inter or intra) is applied. The prediction unit (PU) of a CU may include a prediction block of luminance samples, two corresponding prediction blocks of chrominance samples, and syntax elements for predicting the prediction blocks. In a monochrome picture or a picture with three separate color planes, a PU may include a single prediction block and a syntax structure for predicting the prediction block. The video encoder 20 may generate a predicted luminance block, a predicted Cb block, and a predicted Cr block for the luminance prediction block, the Cb prediction block, and the Cr prediction block of each PU of the CU.
[0064] Video encoder 20 may use intra prediction or inter prediction to generate a prediction block for a PU. If video encoder 20 uses intra prediction to generate a prediction block for a PU, video encoder 20 may generate the prediction block for the PU based on decoded samples of the frame associated with the PU. If video encoder 20 uses inter prediction to generate a prediction block for a PU, video encoder 20 may generate the prediction block for the PU based on decoded samples of one or more frames other than the frame associated with the PU.
[0065] After the video encoder 20 generates the predicted luma block, the predicted Cb block, and the predicted Cr block for one or more PUs of a CU, the video encoder 20 may generate a luma residual block for the CU by subtracting the predicted luma block of the CU from its original luma codec block, such that each sample in the luma residual block of the CU indicates the difference between a luma sample in one of the predicted luma blocks of the CU and a corresponding sample in the original luma codec block of the CU. Similarly, the video encoder 20 may generate a Cb residual block and a Cr residual block for the CU, respectively, such that each sample in the Cb residual block of the CU indicates the difference between a Cb sample in one of the predicted Cb blocks of the CU and a corresponding sample in the original Cb codec block of the CU, and each sample in the Cr residual block of the CU may indicate the difference between a Cr sample in one of the predicted Cr blocks of the CU and a corresponding sample in the original Cr codec block of the CU.
[0066] In addition, if Figure 4CAs illustrated, the video encoder 20 may use quadtree partitioning to decompose the luma residual block, Cb residual block, and Cr residual block of a CU into one or more luma transform blocks, Cb transform blocks, and Cr transform blocks. A transform block is a rectangular (square or non-square) block of samples to which the same transform is applied. A transform unit (TU) of a CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax elements for transforming the transform block samples. Thus, each TU of a CU may be associated with a luma transform block, a Cb transform block, and a Cr transform block. In some examples, the luma transform block associated with a TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In a monochrome picture or a picture with three separate color planes, a TU may include a single transform block and a syntax structure for transforming the samples of the transform block.
[0067] Video encoder 20 may apply one or more transforms to the luma transform block of a TU to generate a luma coefficient block for the TU. A coefficient block may be a two-dimensional array of transform coefficients. A transform coefficient may be a scalar. Video encoder 20 may apply one or more transforms to the Cb transform block of a TU to generate a Cb coefficient block for the TU. Video encoder 20 may apply one or more transforms to the Cr transform block of a TU to generate a Cr coefficient block for the TU.
[0068] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), the video encoder 20 may quantize the coefficient block. Quantization generally refers to a process in which transform coefficients are quantized to potentially reduce the amount of data used to represent the transform coefficients, thereby providing further compression. After the video encoder 20 quantizes the coefficient block, the video encoder 20 may entropy encode syntax elements indicating the quantized transform coefficients. For example, the video encoder 20 may perform context-adaptive binary arithmetic coding (CABAC) on the syntax elements indicating the quantized transform coefficients. Ultimately, the video encoder 20 may output a bitstream comprising a sequence of bits forming a representation of a coded frame and associated data, which is stored in the storage device 32 or transmitted to the destination device 14.
[0069] After receiving the bitstream generated by the video encoder 20, the video decoder 30 can parse the bitstream to obtain syntax elements from the bitstream. The video decoder 30 can reconstruct a frame of video data based at least in part on the syntax elements obtained from the bitstream. The process of reconstructing the video data is generally reciprocal to the encoding process performed by the video encoder 20. For example, the video decoder 30 can perform an inverse transform on the coefficient blocks associated with the TUs of the current CU to reconstruct the residual blocks associated with the TUs of the current CU. The video decoder 30 also reconstructs the codec block of the current CU by adding samples of the prediction block for the PU of the current CU to corresponding samples of the transform block of the TU of the current CU. After reconstructing the codec block for each CU of the frame, the video decoder 30 can reconstruct the frame.
[0070] As noted above, video codecs primarily use two modes, namely, intra-frame prediction (or intra-frame prediction) and inter-frame prediction (or inter-frame prediction) to achieve video compression. Palette-based codecs are another codec scheme that many video codec standards have adopted. In palette-based codecs, which may be particularly suitable for screen-generated content codecs, a video codec (e.g., video encoder 20 or video decoder 30) forms a palette table of colors that represents the video data for a given block. The palette table includes the most dominant (e.g., frequently used) pixel values in a given block. Pixel values that are not frequently represented in the video data for a given block are either not included in the palette table or are included in the palette table as escape colors.
[0071] Each entry in the palette table includes an index for the corresponding pixel value in the palette table. The palette index for a sample in a block can be encoded to indicate which entry from the palette table is to be used to predict or reconstruct which sample. The palette mode begins with a process of generating a palette prediction value for the first block of a picture, strip, tile, or other such grouping of video blocks. As will be explained below, palette prediction values for subsequent video blocks are typically generated by updating previously used palette prediction values. For purposes of illustration, it is assumed that the palette prediction values are defined at the picture level. In other words, a picture can include multiple codec blocks, each with its own palette table, but with one palette prediction value for the entire picture.
[0072] In order to reduce the bits required to signal palette entries in a video bitstream, a video decoder can utilize a palette prediction value to determine a new palette entry in a palette table for reconstructing a video block. For example, the palette prediction value can include palette entries from a previously used palette table, or can even be initialized with a most recently used palette table by including all entries of the most recently used palette table. In some embodiments, the palette prediction value can include fewer than all entries from the most recently used palette table, and then include some entries from other previously used palette tables. The palette prediction value can have the same size as the palette table used to encode and decode a different block, or can be larger or smaller than the palette table used to encode and decode a different block. In one example, the palette prediction value is implemented as a first-in-first-out (FIFO) table that includes 64 palette entries.
[0073] To generate a palette table for a block of video data from palette prediction values, a video decoder can receive a one-bit flag for each entry of the palette prediction value from an encoded video bitstream. The one-bit flag can have a first value (e.g., binary one) or a second value (e.g., binary zero), the first value indicating that the associated entry of the palette prediction value is to be included in the palette table, and the second value indicating that the associated entry of the palette prediction value is not to be included in the palette table. If the size of the palette prediction value is larger than the palette table for the block of video data, the video decoder can stop receiving more flags once a maximum size for the palette table is reached.
[0074] In some embodiments, some entries in the palette table can be directly signaled in the encoded video bitstream rather than being determined using palette prediction values. For such entries, the video decoder can receive three separate m-bit values from the encoded video bitstream that indicate the pixel values for the luma component and two chroma components associated with the entry, where m represents the bit depth of the video data. Compared to the multiple m-bit values required for palette entries that are directly signaled, those palette entries that are derived from palette prediction values only require a one-bit flag. Therefore, signaling some or all palette entries using palette prediction values can significantly reduce the number of bits required to signal new palette table entries, thereby improving the overall codec efficiency of palette mode codecs.
[0075] In many instances, the palette prediction value for a block is determined based on the palette table used to encode one or more previously coded blocks. However, when encoding the first codec tree unit in a picture, slice, or tile, the palette table for the previously coded block may not be available. Therefore, the palette prediction value cannot be generated using the entries of the previously used palette table. In this case, a sequence of palette prediction value initialization values can be signaled in a sequence parameter set (SPS) and / or picture parameter set (PPS), which are the values used to generate the palette prediction value when the previously used palette table is not available. An SPS generally refers to a syntax structure of syntax elements that apply to a series of consecutive coded video pictures called a coded video sequence (CVS), which is determined by the content of the syntax elements found in the PPS, which is referenced by the syntax elements found in each slice segment header. A PPS generally refers to a syntax structure of syntax elements that apply to one or more individual pictures within a CVS, which is determined by the syntax elements found in each slice segment header. Thus, the SPS is generally considered a higher-level syntax structure than the PPS, meaning that syntax elements included in the SPS generally change less frequently and apply to a larger portion of the video data than syntax elements included in the PPS.
[0076] Figure 5 is a block diagram illustrating an example of a minimum chroma intra prediction unit (SCIPU) according to some embodiments of the present disclosure.
[0077] In typical hardware video encoders and decoders, processing throughput decreases when a picture has a large number of small intra blocks due to data dependencies between sample processing between adjacent intra blocks. Generating prediction values for an intra block requires reconstructing samples from the top and left boundaries of adjacent blocks. Therefore, intra prediction must be processed sequentially, block by block.
[0078] In HEVC, the smallest intra CU is 8×8 luma samples. The luma component of the smallest intra CU can be further split into four 4×4 luma intra prediction units (PUs), but the chroma components of the smallest intra CU cannot be further split. Therefore, the worst-case hardware processing throughput occurs when a 4×4 chroma intra block or a 4×4 luma intra block is processed.
[0079] In VTM5.0, 2×2 / 4×2 / 2×4 chroma blocks are disabled in the dual tree. However, in VTM5's single codec tree, because chroma splits always follow luma and the smallest intra CU is 4×4 luma samples, the smallest chroma intra CB is 2×2. Therefore, in VTM5.0, the smallest chroma intra CB in a single codec tree is 2×2. The worst-case hardware processing throughput for VVC decoding is only 1 / 4 of that for HEVC decoding. Furthermore, after adopting tools including the cross-component linear model (CCLM), 4-tap interpolation filter, position-dependent intra prediction combination (PDPC), and combined inter-intra prediction (CIIP), the reconstruction process of chroma intra CBs becomes significantly more complex than that in HEVC. Achieving high processing throughput in hardware decoders is challenging. In this paper, two methods are proposed to improve the worst-case hardware processing throughput.
[0080] The goal of the SCIPU scheme is to not allow chroma intra CBs smaller than 16 chroma samples by constraining the partitioning of chroma intra CBs.
[0081] In a single codec tree, a SCIPU is defined as a codec tree node whose chroma block size is greater than or equal to 16 chroma samples and has at least one sub-luminance block smaller than 4*16 luminance samples. It is required that in each SCIPU, all CBs are inter-frame, or all CBs are non-inter-frame, i.e., intra-frame or intra-frame block copy (IBC). The details of IBC can be referred to ( http: / / phenix.int-evry.fr / jvet / (See document JVET-N1002 at [Illegible]). In the case of non-inter SCIPUs, it is further required that the chroma of non-inter SCIPUs should not be further split, and the luma of SCIPUs is allowed to be further split. In this way, the minimum chroma intra CB size is 16 chroma samples, and 2×2, 2×4, and 4×2 chroma CBs are removed. In addition, in the case of non-inter SCIPUs, chroma scaling is not applied.
[0082] Figure 5Two SCIPU examples are shown. The chroma CB 502 of 8×4 chroma samples and the corresponding luma CB (corresponding to the luma CBs 502(a), 502(b), and 502(c)) form one SCIPU because the ternary tree (TT) split out of the 8×4 chroma samples will result in chroma CBs of less than 16 chroma samples (e.g., chroma CBs 502(a) and 502(c)). The chroma CB 504(a) of 4×4 chroma samples (to the left of the chroma CB 504 of 8×4 chroma samples) and three luma CBs corresponding to chroma CBs 504(c), 504(d), and 504(e) form one SCIPU, and the chroma CB 504(b) of 4×4 samples (to the right of the 8×4 chroma samples) and two luma CBs (e.g., luma CBs corresponding to chroma CBs 504(g) and 504(b)) form one SCIPU because a binary tree (BT) split out from the 4×4 chroma samples will result in chroma CBs of less than 16 chroma samples (e.g., chroma CBs 504(g) and 504(f)).
[0083] If the current slice is an I slice or the current SCIPU has a 4×4 luma split in it after being further split once, the type of the SCIPU is inferred to be non-inter (because inter 4×4 is not allowed in VVC); otherwise, the type of the SCIPU (inter or non-inter) is indicated by a signaled flag before parsing the CU in the SCIPU. In version 6 of the VVC draft specification, the derivation of the SCIPU type is illustrated in Table 1 below. modeTypeCondition1 is defined as a SCIPU with type "non-inter", while modeTypeCondition 2 is defined as a SCIPU with type "inter or non-inter", and a flag "mode_constraint_flag" is signaled into the bitstream to indicate whether the associated SCIPU uses inter or non-inter. modeTypeCondition 0 represents the condition when the current CU split node is not a SCIPU. The definitions of all variables in Table 2 can be found in the 6th edition of the VVC draft specification (document JVET-O2001 at http: / / phenix.int-evry.fr / jvet / ). Note that cbWidth and cbHeight are the width and height of the codec block in luma samples, respectively.
[0084]
[0085] Table 1
[0086] By applying the SCIPU scheme described above, the worst-case hardware processing throughput occurs when 4×4, 2×8, or 8×2 chroma blocks are processed instead of 2×2 chroma blocks. The worst-case hardware processing throughput is the same as the worst-case hardware processing throughput in HEVC and is four times the worst-case hardware processing throughput in VTM5.0.
[0087] Figures 6A to 6C is a block diagram illustrating examples of chroma formats (e.g., also known as chroma subsampling formats) supported in VVC according to some embodiments of the present disclosure. Table 2 below shows information for different chroma formats. For example, the variables SubWidthC and SubHeightC are used to specify the ratio of the width and height of a luma block to its associated chroma block.
[0088]
[0089] Table 2
[0090] In monochrome sampling, there is only one sample array, which is nominally considered to be the luminance array.
[0091] In 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array.
[0092] In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array.
[0093] In 4:4:4 sampling, depending on the value of separate_colour_plane_flag, the following applies: If separate_colour_plane_flag is equal to 0, each of the two chroma arrays has the same height and width as the luma array. Otherwise (separate_colour_plane_flag is equal to 1), the three color planes are processed separately as a monochrome sampled picture.
[0094] When the value of chroma_format_idc is equal to 1, the nominal vertical and horizontal relative positions of the luma and chroma samples in the picture are Figure 6A Alternative relative positions of chroma samples may be indicated in the video usability information.
[0095] When the value of chroma_format_idc is equal to 2, the chroma samples are co-located with the corresponding luma samples, and the nominal positions in the picture are as follows: Figure 6B Shown in.
[0096] When the value of chroma_format_idc is equal to 3, all array samples are co-located for all picture cases, and the nominal positions in the picture are as follows: Figure 6C Shown in.
[0097] Figure 7 is a block diagram illustrating examples of SCIPUs for various chroma formats according to some embodiments of the present disclosure.
[0098] When the concept of SCIPU was adopted into VVC, the design only considered the chroma format 4:2:0. Other chroma formats were not considered, and the design therefore imposed overly restrictive rules on the size of intra chroma blocks for chroma formats other than 4:2:0 (such as 4:4:4 and 4:2:2). Specifically, when SCIPU was proposed, it was defined as a codec tree node whose chroma block size was greater than or equal to 16 chroma samples and had at least one sub-luminance block that was smaller than 4×16 luminance samples. Defining SCIPU using 4x luminance samples (e.g., when a block is encoded in the 4:2:0 chroma format, there are four times as many luminance samples as chroma samples) only works correctly when the chroma format is 4:2:0. In current VVC, chroma size restrictions are always applied by the SCIPU scheme no matter what chroma format is used, and assuming the chroma format is 4:2:0, this means that both the width and height of a chroma block are half the width and height of the associated luma block.
[0099] In addition, the palette mode was newly adopted into VVC at the 15th JVET conference (refer to document JVET-O0119 at http: / / phenix.int-evry.fr / jvet / ), and when the mode of the SCIPU is signaled as inter, only inter mode is allowed within the SCIPU and the chroma block can therefore be split into small blocks, such as 2×4 or 4×2 chroma blocks. When non-inter is signaled as the mode of the SCIPU or the modeTypeCondition of the SCIPU is non-inter (e.g., modeTypeCondition=0), only intra prediction mode, IBC mode, and palette mode are allowed for the SCIPU, and the chroma block cannot be split into small chroma blocks, such as 2×2, 2×4, or 4×2. However, for the palette mode, information from the left and upper neighboring reconstructed pixels is not required, and therefore the palette mode should be regarded as a mode that allows the chroma block to be split into small chroma blocks.
[0100] In some embodiments, a SCIPU is defined as a codec tree node whose chroma block size is greater than or equal to N chroma samples and has at least one sub-luminance block of less than K×N luminance samples in the case of one further CU split. N can be any positive integer (e.g., 16), and for chroma format 4:2:0 (chroma_format_idc=1), K is 4, for chroma format 4:2:2, K is 2, and for chroma format 4:4:4, K is 1. Note that for chroma format 4:4:4, K=1 means that SCIPU is not enabled.
[0101] In some embodiments, a SCIPU is defined as a codec tree node whose chroma block size is greater than or equal to N chroma samples and has at least one sub-chroma block of less than N luma samples in the case of a further CU split. N can be any positive integer (e.g., 16). For example, in Figure 7 , SCIPU 702 is a valid SCIPU because splitting the codec tree node according to a predefined splitting method (e.g., binary vertical splitting) will result in chroma components with less than 16 chroma samples (e.g., chroma components with 2×4 chroma samples). SCIPU 704 is a valid SCIPU because splitting the CB according to a predefined splitting method (e.g., ternary vertical splitting) will result in chroma components with less than 16 chroma samples (e.g., chroma components with 2×2 chroma samples). SCIPU 706 is a valid SCIPU because splitting the CB with a predefined splitting method (e.g., ternary vertical splitting) will result in chroma components with less than 16 chroma samples (e.g., chroma components with 4×2 chroma samples).
[0102] If the current slice is an I slice or the current SCIPU has a 4×4 luma split in it after being further split once, the type of the SCIPU is inferred to be non-inter (because inter 4×4 is not allowed in VVC); otherwise, the type of the SCIPU (inter or non-inter) is indicated by a signaled flag before parsing the CU in the SCIPU.
[0103] When the chroma format is 4:4:4 (chroma_format_idc=3), the number of chroma samples and the number of luminance samples in a block are the same, and therefore when the chroma format is 4:4:4, there is no need to impose any size restrictions on the chroma blocks. For example, for an 8×8 SCIPU using quadtree splitting, since it contains four 4×4 luminance blocks divided by quadtree splitting, the type of SCIPU is inferred to be non-inter according to the current design (see Table 1 above). In addition, according to the current design, the non-inter type SCIPU does not allow the chroma block (8×8 chroma block in this example) to be further split. In addition, it is obvious that the size constraint on the chroma block is overly restrictive because the 8×8 intra-frame chroma block can be split into four 4×4 intra-frame chroma blocks without introducing additional throughput issues. According to a second embodiment, it is proposed to disable the SCIPU scheme when the encoded picture is in the chroma format 4:4:4. An example of the specification is illustrated in Table 3 below.
[0104]
[0105] Table 3: Example of specification of the proposed method Additionally considering the chroma format 4:4:4
[0106] When the chroma format is 4:2:2 (chroma_format_idc=2), the height of the chroma samples within a block is the same as the height of the luma samples, but the width of the chroma samples is half the width of the luma samples, and therefore when the chroma format is 4:2:2, the derivation of modeTypeCondition for SCIPU must be modified accordingly. According to the third embodiment in the present disclosure, it is proposed to consider the chroma format 4:2:2 when applying the SCIPU scheme to avoid over-restricting the chroma intra-frame block size. Specifically, SCIPU is defined as a codec tree node whose chroma block size is greater than or equal to sixteen chroma samples and has at least one sub-chroma block of less than 16 chroma samples in the case of one further split. An example of the restrictions proposed for format 4:2:2 based on the VVC specification is illustrated in Table 4. In the modified modeTypeCondition derivation method, five more conditions are added for the chroma format 4:2:2 for non-inter-type SCIPU. For example, an 8×8 block with quadtree CU splitting applied is considered a SCIPU because its sub-blocks include chroma blocks with less than 16 chroma samples (for 4:2:2 chroma format, it contains four 4×4 luminance blocks and four 2×4 chroma blocks). In addition, since its sub-blocks include 4×4 luminance blocks, the SCIPU is considered a non-inter-type SCIPU. Similarly, a 16×4 block with TT horizontal splitting (SPLIT_TT_VER) is also considered a non-inter-type SCIPU because its sub-blocks include 4×4 luminance blocks and chroma blocks with less than 16 chroma samples (it contains two 4×4 luminance blocks and one 8×4 luminance block, two 2×4 chroma blocks and one 4×4 chroma block). For more examples, please refer to Table 4 below.
[0107]
[0108] Table 4: Example of specification of the proposed method Additionally considering the chroma format 4:2:2
[0109] It should be noted that a CU with width * height equal to 64 may be 8×8, 16×4 or 4×16 in the current VVC. The 8×8 CU is the only size to which quadtree splitting can be applied (split_qt_flag is equal to 1). Ternary tree (TT) splitting is not allowed for 8×8 CU. In addition, only SPLIT_TT_VER is allowed for 16×4 CU in the current VVC, and only SPLIT_TT_HOR is allowed for 4×16 CU. Similarly, a CU with width * height equal to 32 may be 8×4 or 4×8 in the current VVC. Only SPLIT_BT_VER is allowed for 8×4 CU, and only SPLIT_BT_HOR is allowed for 4×8 CU. Therefore, the derivation of modeTypeCondition can be simplified from Table 4 to Table 5 shown below, and it should be noted that the derivation methods in Table 4 and Table 5 will result in the same modeTypeCondition in the current VVC.
[0110]
[0111] Table 5: Example of specification of the proposed method Additionally considering the chroma format 4:2:2
[0112] When the chroma format is monochrome (chroma_format_idc=0), there are no chroma samples within a block, so when the chroma format is monochrome, there is no need to impose any size restrictions on the chroma block. According to the fourth embodiment of the present disclosure, it is proposed to consider the chroma format monochrome when applying the SCIPU scheme to avoid excessive restrictions on the intra-frame block size. An example of the specification is shown in Table 6 below.
[0113]
[0114] Table 6: Example of specification of the proposed method Additionally considering the chroma format monochrome
[0115] To consider the chroma formats monochrome, 4:2:0, 4:4:4 and 4:2:2 all together for the derivation of modeTypeCondition, an example specification is given in Table 7 below.
[0116]
[0117] Table 7: Example of specification of the proposed method Considering chroma formats monochrome, 4:2:0, 4:4:4 and 4:4:2
[0118] It is noted that Table 7 can be further simplified to Table 8 shown below without changing the functionality of modeTypeCondition derivation.
[0119]
[0120] Table 8: Example of specification of the proposed method Considering chroma formats monochrome, 4:2:0, 4:4:4 and 4:4:2
[0121] In some embodiments, it is proposed that when non-inter is signaled as the mode of the SCIPU or the modeTypeCondition of the SCIPU is non-inter (e.g., modeTypeCondition = 0), only intra prediction mode, IBC is allowed for the CU within the SCIPU, and the chroma block cannot be split into small chroma blocks, such as 2×2, 2×4, or 4×2. Otherwise, when inter is signaled as the mode of the SCIPU, inter mode and palette mode are allowed for the CU within the SCIPU, and the chroma block can be split into small chroma blocks, such as 2×2, 2×4, or 4×2. It should be noted that the naming of the mode can be renamed from "non-inter" to "intra+ibc" and from "inter" to "inter+plt" to avoid confusion.
[0122] Figure 8 is a flow chart illustrating an exemplary process 800 by which video decoder 30 implements techniques for decoding a minimum chroma intra prediction unit (SCIPU), according to some embodiments of the present disclosure.
[0123] As a first step, video decoder 30 receives data encoded with codec tree nodes from a bitstream, where the codec tree nodes are associated with predefined splitting methods (e.g., horizontal / vertical binary splitting, horizontal / vertical ternary splitting, etc.) (810). Figure 4E and descriptions of examples for the predefined splitting methods.
[0124] The video decoder 30 then determines the mode type of the codec tree node (e.g., sets a modeTypeCondition flag associated with the codec tree node) (820) as follows: based on determining that the codec tree node is encoded in a 4:4:4 or 4:0:0 chroma subsampling format, the video decoder 30 sets the codec tree node to a first mode type (e.g., modeTypeCondition == 0, indicating that the codec tree node is not a SCIPU) (830); and based on determining that the codec tree node is encoded in a 4:2:2 or 4:2:0 chroma subsampling format and the codec tree node is a minimum chroma intra prediction unit (SCIPU) (840): if the luminance block and splitting method of the codec tree node meet the first criterion (e.g., "modeTypeCondition == 1" means that the codec tree node is split using the splitting method), the video decoder 30 sets the codec tree node to a first mode type (e.g., modeTypeCondition == 0, indicating that the codec tree node is not a SCIPU) (830). If the luma block of the codec tree node will result in a sub-luma block with a block size equal to 16 luma samples; therefore, the prediction mode is inferred to be "intra" and no syntax element of the prediction mode is transmitted with a signal), the video decoder 30 sets the codec tree node to a second mode type (e.g., modeTypeCondition == 1) (840-1); and if the luma block of the codec tree node and the splitting method meet the second criterion (e.g., "modeTypeCondition == 2" means that splitting the luma block of the codec tree node using the splitting method will not result in a sub-luma block with a block size equal to 16 luma samples, and the syntax element of the prediction mode is transmitted with a signal), the video decoder 30 sets the codec tree node to a third mode type (e.g., modeTypeCondition == 2) (840-2).
[0125] After setting the mode type, the video decoder 30 decodes the codec tree unit based on the mode type in the following manner (850): based on determining that the codec tree node is the second mode (e.g., for non-inter mode of SCIPU, modeTypeCondition==1): the video decoder 30 decodes each codec block in the codec tree node using the intra prediction mode (860); and based on determining that the codec tree node is the first mode (e.g., not SCIPU) or the third mode (e.g., for non-inter of SCIPU) (870): the video decoder 30 receives a syntax element (e.g., mode_constraint_flag) indicating the prediction mode associated with the codec tree node from the bitstream (880).
[0126] After receiving the syntax element, based on determining that the syntax element has a first value (e.g., mode_constraint_flag == 0): the video decoder 30 decodes each codec block in the codec tree node using the inter-frame prediction mode (880-1); and based on determining that the syntax element has a second value (e.g., mode_constraint_flag == 1): the video decoder 30 decodes each codec block in the codec tree node using the intra-frame prediction mode (880-2).
[0127] In some embodiments, when the codec tree node is of the first mode type, the chroma blocks of the codec tree node may be further split.
[0128] In some embodiments, when a codec tree node is of the second mode type, the chroma blocks of the codec tree node cannot be further split.
[0129] In some embodiments, when the codec tree node is of the third mode type and the prediction mode indicates that the current codec tree node is in intra mode, the chroma block of the codec tree node cannot be further split.
[0130] In some embodiments, when the codec tree node is of the third mode type and the prediction mode indicates that the current codec tree node is not an intra mode, the chroma block of the codec tree node may be further split.
[0131] In some embodiments, if the chroma block of the codec tree node has a chroma block, and splitting the chroma block using a splitting method will cause the sub-chroma block to violate the minimum size limit of the intra-frame chroma block (for example, having a sub-chroma block size of less than 16 chroma samples), then the codec tree node is a SCIPU.
[0132] In some embodiments, the luma block of the codec tree node and the splitting method satisfy a first criterion if splitting the luma block of the codec tree node using the splitting method would result in sub-luma blocks having a block size equal to 16 luma samples.
[0133] In some embodiments, the luma block and splitting method of the codec tree node meet the first criterion if the following items are present: the luma block size is 64 luma samples and the splitting method is a quaternary split (e.g., as shown in Table 7: cbWidth*cbHeight is equal to 64, and split_qt_flag is equal to 1, and chroma_format_idc is equal to 1 or 2); the luma block size is 64 luma samples and the splitting method is a horizontal or vertical ternary split (e.g., as shown in Table 8: cbWidth*cbHeight is equal to 1, and chroma_format_idc is equal to 1 or 2); cbWidth*cbHeight is equal to 32, and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_TT_HOR or SPLIT_TT_VER); or the size of the luma block is 32 luma samples, and the splitting method is horizontal or vertical binary splitting (for example, as shown in Table 8: cbWidth*cbHeight is equal to 32, and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_BT_HOR or SPLIT_BT_VER).
[0134] In some embodiments, the luma block of the codec tree node and the splitting method satisfy the second criterion if the codec tree node is not in an I-slice and splitting the luma block of the codec tree node using the splitting method does not result in a sub-luma block having a block size equal to 16 luma samples (e.g., the resulting sub-luma block would be larger than 16 luma samples).
[0135] In some embodiments, if the codec tree node does not belong to an I-slice (e.g., in Table 8: slice_type!=I), and: the size of the luma block is 64 luma samples and the splitting method is horizontal or vertical binary splitting (e.g., in Table 8: cbWidth*cbHeight is equal to 64, and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_BT_HOR or SPLIT_BT_VER, and chroma_format_idc is equal to 1); or the size of the luma block is 128 luma samples and the splitting method is horizontal or vertical ternary splitting (e.g., in Table 8: cbWidth*cbHeight is equal to 128, and MttSplitMode[x0][y0][mttDepth] is equal to SPLIT_TT_HOR or SPLIT_TT_VER, and chroma_format_idc is equal to 1), then the luma block and splitting method of the codec tree node meet the second criterion.
[0136] In some embodiments, based on determining that the codec tree node is encoded in a 4:2:2 or 4:2:0 chroma subsampling format and is not a SCIPU (e.g., splitting the chroma block does not result in violating the minimum size restriction of intra-frame chroma blocks), the video decoder 30 sets the codec tree node to the first mode (e.g., splitting does not result in sub-chroma blocks of less than 16 chroma samples).
[0137] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or codes and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media or communication media, where computer-readable storage media corresponds to tangible media such as data storage media, and communication media includes any media that facilitates the transfer of a computer program from one place to another, for example, according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) a non-transitory tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to obtain instructions, codes, and / or data structures for implementing the embodiments described in this application. A computer program product may include computer-readable media.
[0138] The terms used in the description of the embodiments herein are only for the purpose of describing specific embodiments and are not intended to limit the scope of the claims. As used in the description of the embodiments and the appended claims, the singular forms "a", "an" and "the" are intended to also include the plural forms, unless the context clearly indicates otherwise. It will also be understood that the terms "and / or" used herein refer to and encompass any and all possible combinations of one or more items in the associated enumerated items. It will be further understood that, when used in this specification, the terms "comprise" and / or "comprising" specify the presence of stated features, elements and / or components, but do not exclude the presence or addition of one or more other features, elements, components and / or groups thereof.
[0139] It will also be understood that although the terms first, second, etc. may be used to describe various elements in this article, these elements should not be limited by these terms. These terms are merely used to distinguish one element from another. For example, without departing from the scope of the embodiment, the first electrode may be referred to as the second electrode, and similarly, the second electrode may be referred to as the first electrode. Both the first electrode and the second electrode are electrodes, but they are not the same electrode.
[0140] The description of the present application has been presented for the purpose of illustration and description and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications, variations and alternative embodiments will be apparent to those of ordinary skill in the art having benefit of the teachings presented in the foregoing description and the associated drawings. The embodiments are selected and described in order to best explain the principles of the invention, the practical application, and to enable others skilled in the art to understand the various embodiments of the invention and to best utilize the basic principles and various embodiments with various modifications suitable for the specific use intended. Therefore, it will be understood that the scope of the claims will not be limited to the specific examples of the disclosed embodiments, and modifications and other embodiments are intended to be included within the scope of the appended claims.
Claims
1. A method for video encoding, comprising: Splitting the frame into coding units, the coding units being associated with a splitting method, wherein the splitting method comprises a quaternary split, a horizontal ternary split, a vertical ternary split, a horizontal binary split, or a vertical binary split; Determining a mode type condition of one of the coding units includes: In response to the coding unit having a 4:4:4 or 4:0:0 chroma format, setting the mode type condition of the coding unit to a first mode type condition; In response to the coding unit having a 4:2:2 or 4:2:0 chroma format, and the coding unit being a minimum chroma intra prediction unit (SCIPU): If the luma block of the coding unit and the splitting method satisfy a first criterion, setting the mode type condition of the coding unit to a second mode type condition; and If the luminance block and the splitting method of the coding unit meet a second criterion, setting the mode type condition of the coding unit to a third mode type condition; According to determining that the mode type condition of the coding unit is the second mode type condition: encoding each codec block in the coding unit using intra mode, and According to determining that the mode type condition of the coding unit is the third mode type condition: Determining a syntax element, the syntax element indicating a prediction mode associated with the coding unit, comprising: In response to each codec block in the coding unit being in inter mode, determining that the syntax element has a first value; and In response to each codec block in the coding unit being in the intra mode, determining that the syntax element has a second value, When the mode type condition of the coding unit is the second mode type condition, the chroma block of the coding unit is not allowed to be further split. wherein the first standard is different from the second standard, wherein if splitting the luminance block of the coding unit using the splitting method would result in a sub-luminance block having a block size equal to 16, then the luminance block of the coding unit and the splitting method meet the first criterion, The luminance block of the coding unit and the splitting method satisfy the second criterion if splitting the luminance block of the coding unit using the splitting method will not result in a sub-luminance block having a block size equal to 16, wherein the coding unit is not in an I-slice. 2 . The method of claim 1 , wherein when the mode type condition of the coding unit is the first mode type condition, the chroma block of the coding unit is allowed to be further split.
3. The method of claim 1, wherein when the mode type condition of the coding unit is the third mode type condition and the prediction mode indicates that the current coding unit adopts the intra mode, the chroma block of the coding unit is not allowed to be further split.
4. The method of claim 1, wherein when the mode type condition of the coding unit is the third mode type condition and the prediction mode indicates that the current coding unit does not adopt the intra mode, the chroma block of the coding unit is allowed to be further split.
5. The method of claim 1, wherein if the coding unit has a chroma block, and splitting the chroma block using the splitting method will cause the sub-chroma blocks to violate the minimum size restriction of intra-frame chroma blocks, then the coding unit is a SCIPU.
6. The method of claim 1 , wherein the luma block of the coding unit and the splitting method satisfy the first criterion if: The size of the luminance block is 64 and the splitting method is the quaternary splitting; The size of the luminance block is 64 and the splitting method is the horizontal ternary splitting or the vertical ternary splitting; or The size of the luminance block is 32 and the splitting method is the horizontal binary splitting or the vertical binary splitting.
7. The method of claim 1 or 6, wherein the luma block of the coding unit and the splitting method satisfy the second criterion if: The size of the luminance block is 64 and the splitting method is the horizontal binary splitting or the vertical binary splitting; or The size of the luminance block is 128 and the splitting method is the horizontal ternary splitting or the vertical ternary splitting.
8. The method of claim 1, further comprising: In response to the coding unit being encoded in a 4:2:2 or 4:2:0 chroma format and the coding unit being not the SCIPU, the mode type condition of the coding unit is set to the first mode type condition.
9. An electronic device comprising: one or more processing units; a memory coupled to the one or more processing units; as well as A plurality of programs stored in the memory, when executed by the one or more processing units, causes the electronic device to perform the method according to any one of claims 1 to 8 to generate a bit stream, and store the bit stream.
10. A non-transitory computer-readable storage medium storing instructions, wherein: The instructions are executable by at least one processor to perform the method according to any one of claims 1 to 8.
11. A method for storing a bitstream, comprising: A bitstream is stored on a non-transitory computer-readable storage medium, wherein the bitstream is generated by the method of any one of claims 1 to 8.
12. A method for transmitting a bit stream, comprising: A bit stream is sent to a decoding device, wherein the bit stream is generated by the method according to any one of claims 1 to 8.
Citation Information
Patent Citations
Methods of constrained intra block copy for reducing worst case bandwidth in video coding
CN107852499A
Picture coding device, picture coding method, and picture coding program
US20190116363A1