METHOD, APPARATUS, AND PROGRAM FOR VIDEO DECODING - Patent application
Patent Information
- Application Number
- JP2023101076
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-02-06
- Filing Date
- 2023-06-20
- Publication Date
- 2025-03-11
- Estimated Expiration
- 2040-02-07
AI Technical Summary
【0026】 開示された主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになるであろう。
Smart Images

Figure 0007644172000001 
Figure 0007644172000002 
Figure 0007644172000003
Abstract
Description
[Technical field]
[0001] Incorporation by Reference This application claims the benefit of priority to U.S. Patent Application No. 16 / 783,388, entitled "METHOD AND APPARATUS FOR VIDEO CODING," filed February 6, 2020, which claims the benefit of priority to U.S. Provisional Application No. 62 / 803,231, entitled "IMPROVED INTRA PREDICTION FOR INTRA SUB-PARTITIONS CODING MODE," filed February 8, 2019, the entire disclosure of which is incorporated herein by reference in its entirety.
[0002] SUMMARY This disclosure describes embodiments generally related to video encoding. [Background technology]
[0003] The background discussion provided herein is intended to generally present the context of the present disclosure. To the extent that the work of the inventors named herein is described in this background section, aspects of the description that may not qualify as prior art at the time of filing are not admitted expressly or impliedly as prior art to the present disclosure.
[0004] Video encoding and decoding may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a sequence of pictures, each having spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures may have a fixed or variable picture rate (also informally called frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has specific bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luminance sample resolution at 60 Hz frame rate) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.
[0005] One of the goals of video encoding and decoding is to reduce redundancy in the input video signal through compression. Compression helps to reduce the aforementioned bandwidth and / or storage space requirements, sometimes by more than two orders of magnitude. Both lossless and lossy compression, as well as combinations of them, can be used. Lossless compression refers to techniques that can reconstruct an exact copy of the original signal from the compressed original signal. When using lossy compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough that the reconstructed signal is useful for the intended application. For video, lossy compression is widely adopted. The amount of distortion that is tolerated varies depending on the application, for example, a user of a particular consumer streaming application may tolerate higher distortion than a user of a television distribution application. The achievable compression ratio can reflect that the greater the tolerable / acceptable distortion, the higher the compression ratio can be.
[0006] Video encoders and decoders can utilize techniques from a number of broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Video codec techniques can include a technique called 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 an intra picture. Intra pictures and their derivatives, such as independent decoder refresh pictures, can be used to reset the state of the decoder and therefore can be used as the first picture of a coded video bitstream and video session or as a still image. Samples of intra blocks can be transformed and the transform coefficients can be quantized before entropy coding. Intra prediction is a technique that minimizes the sample values in the pre-transform domain. In some cases, the smaller the DC value and the smaller the AC coefficients after the transformation, the fewer bits are needed at a particular quantization step size to represent the block after entropy coding.
[0008] Conventional intra-coding, for example as known from MPEG-2 generation encoding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt to do so from, for example, surrounding sample data and / or metadata obtained during encoding / decoding of blocks of spatially adjacent and preceding data in decoding order. Such techniques are hereafter referred to as "intra-prediction" techniques. It should be noted that, at least in some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from reference pictures.
[0009] Intra prediction may take a variety of forms. If more than one of such techniques may be used in a given video coding technique, the technique used may be coded as an intra prediction mode. In some cases, a mode may have sub-modes and / or parameters, which may be coded separately or included in the mode codeword. The codeword used for a particular mode / sub-mode / parameter combination may affect the coding efficiency gains from intra prediction, as well as the entropy coding technique used to convert the codeword into a bitstream.
[0010] A specific mode of intra prediction was introduced in H.264, improved in H.265, and further improved with new coding techniques such as the Joint Search Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). A predictor block may be formed using neighboring sample values belonging to already available samples. The sample values of the neighboring samples are copied into the predictor block according to the direction. The reference to the direction when used may be coded in the bitstream or may be predicted by itself.
[0011] Referring to FIG. 1, shown at the bottom right is a subset of 9 known predictor directions from the 33 possible predictor directions of H.265 (corresponding to the 33 angle modes of the 35 intra modes). The point where the arrows converge (101) represents the sample to be predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the top right at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the bottom left of sample (101) at an angle of 22.5 degrees from the horizontal.
[0012] Continuing to refer to FIG. 1, a square block (104) of 4×4 samples is depicted at the top left (indicated by the dashed bold line). The square block (104) includes 16 samples, each labeled with an “S”, its position in the Y dimension (e.g., row index), and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample of the block (104) in both the Y and X dimensions. Since the size of the block is 4×4 samples, S44 is at the bottom right. Further shown are reference samples following a similar numbering scheme. The reference sample is labeled with R, its Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, the predicted samples are adjacent to the block being reconstructed, and therefore, there is no need to use negative values.
[0013] Intra-picture prediction can work by copying reference sample values from adjacent samples depending on the prediction direction of the signal. For example, assume that the coded video bitstream contains signaling for this block that indicates a prediction direction that coincides with the arrow (102). That is, the sample is predicted from one or more prediction samples to the upper right and at an angle of 45 degrees from the horizontal. In that 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, the values of multiple reference samples may be combined, for example by interpolation, to calculate a reference sample, especially when the orientation is not evenly divisible by 45 degrees.
[0015] As video coding techniques have developed, the number of possible directions has increased. In H.264 (2003), nine different directions could be represented. This has increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions at the time of disclosure. Experiments have been performed to identify the most likely directions, using certain techniques of entropy coding to represent those possible directions with a small number of bits, accepting certain penalties for less likely directions. Furthermore, the direction itself may be predictable from neighboring directions used in neighboring, already decoded blocks.
[0016] FIG. 2 shows a schematic diagram (201) illustrating 65 intra prediction directions according to JEM to illustrate the increasing number of prediction directions over time.
[0017] The mapping of intra-prediction direction bits in the encoded video bitstream representing the directions may vary from one video coding technique to another, ranging, for example, from a simple direct mapping from the prediction direction to an intra-prediction mode, codewords, complex adaptation schemes involving most likely modes, and similar techniques. In all cases, however, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is the reduction of redundancy, these less likely directions are represented by more bits than the more likely directions in a properly performing video coding technique. Summary of the Invention [Means for solving the problem]
[0018] Aspects of the present disclosure provide a method and apparatus for video encoding / decoding. In some examples, the apparatus for video decoding includes a receiving circuit and a processing circuit. The processing circuit decodes prediction information of a current block from an encoded video bitstream. In some embodiments, the processing circuit determines a first subpartition and a second subpartition of the current block based on the decoded prediction information, and then reconstructs the first subpartition and the second subpartition of the current block based on at least adjacent samples of the current block that are outside the adjacent area of at least one of the first subpartition and the second subpartition.
[0019] In one embodiment, the current block is divided vertically into at least a first subpartition and a second subpartition, and the neighboring sample is a bottom left neighboring sample of the current block that is outside the neighboring region of at least one of the first subpartition and the second subpartition. In another embodiment, the current block is divided horizontally into at least a first subpartition and a second subpartition, and the neighboring sample is a top right neighboring sample of the current block that is outside the neighboring region of at least one of the first subpartition and the second subpartition.
[0020] In some embodiments, the prediction information indicates a first intra-prediction mode in a first set of intra-prediction modes for intra-prediction of a square shape. The processing circuit remaps the first intra-prediction mode to a second intra-prediction mode in a second set of intra-prediction modes for intra-prediction of a non-square shape based on a shape of the first sub-partition of the current block, and reconstructs samples of at least the first sub-partition according to the second intra-prediction mode.
[0021] In one embodiment, when the aspect ratio of the first sub-partition is outside a certain range, the number of the subset of intra-prediction modes of the first set of intra-prediction modes that are replaced by the wide-angle intra-prediction mode in the second set of intra-prediction modes is fixed to a predefined number. In an example, the predefined number is one of 15 and 16.
[0022] In another embodiment, the processing circuit determines the angular parameter associated with the second intra-prediction mode based on a look-up table having 1 / 64 precision.
[0023] In one example, if the aspect ratio of the first sub-partition is equal to 16 or 1 / 16, the number of intra prediction modes replaced from the first set to the second set is 13. In another example, if the aspect ratio of the first sub-partition is equal to 32 or 1 / 32, the number of intra prediction modes replaced from the first set to the second set is 14. In another example, if the aspect ratio of the first sub-partition is equal to 64 or 1 / 64, the number of intra prediction modes replaced from the first set to the second set is 15.
[0024] In some embodiments, the processing circuitry determines the partition direction based on size information of the current block and decodes a signal from the encoded bitstream indicating a number of sub-partitions for partitioning the current block in the partition direction.
[0025] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform a method for video decoding.
[0026] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Brief description of the drawings]
[0027] [Figure 1] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes. [Diagram 2] FIG. 2 is a diagram of an example intra-prediction direction. [Diagram 3] FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment. [Figure 4] FIG. 4 is a schematic diagram of a simplified block diagram of a communication system (400) according to one embodiment. [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 6] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 7] FIG. 4 is a block diagram of an encoder according to another embodiment. [Figure 8] FIG. 4 is a block diagram of a decoder according to another embodiment. [Figure 9] FIG. 2 illustrates an example of a partition structure according to one embodiment. [Figure 10A] FIG. 2 illustrates an example of a partition according to some embodiments of the present disclosure. [Figure 10B] FIG. 2 illustrates an example of a partition according to some embodiments of the present disclosure. [Figure 11] A diagram showing exemplary intra-prediction directions and intra-prediction modes in some examples. [Figure 12] A diagram showing exemplary intra-prediction directions and intra-prediction modes in some examples. [Figure 13] FIG. 2 illustrates a table of correspondences between intra-prediction modes and associated angular parameters. [Figure 14] FIG. 13 illustrates a table of intra-prediction modes that are replaced by wide-angle directional modes based on the aspect ratio of the block. [Figure 15] FIG. 2 shows a table relating the number of sub-partitions to block sizes. [Figure 16]FIG. 2 illustrates an example of sub-partitions of a block. [Figure 17] FIG. 2 illustrates another example of sub-partitions of a block. [Figure 18] FIG. 13 is a diagram showing a table used as an example for replacing intra-prediction modes with wide-angle modes. [Figure 19] FIG. 13 is a diagram showing a table used as another example for replacing intra-prediction modes with wide-angle modes. [Figure 20] FIG. 13 is a diagram showing an example of a reference sample in intra sub-partition (ISP) mode. [Figure 21] FIG. 13 is a diagram showing an example of a reference sample in the ISP mode. [Figure 22] FIG. 13 is a diagram showing examples of reference samples in ISP mode for planar mode prediction. [Diagram 23] A diagram showing examples of reference samples in ISP mode for planar intra prediction. [Figure 24] FIG. 1 illustrates a flowchart outlining an example process according to some embodiments of the present disclosure. [Diagram 25] FIG. 1 illustrates a flowchart outlining an example process according to some embodiments of the present disclosure. [Figure 26] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0028] FIG. 3 illustrates a simplified block diagram of a communication system (300) according to an embodiment of the present disclosure. The communication system (300) includes, for example, a plurality of terminal devices that can communicate with each other 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 FIG. 3, the first pair of terminal devices (310) and (320) perform a one-way transmission of data. For example, the terminal device (310) can encode video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to another terminal device (320) via the network (350). The encoded video data can be transmitted in the form of one or more encoded video bitstreams. The terminal device (320) can receive the encoded video data from the network (350), decode the encoded video data to recover the video pictures, and display the video pictures according to the recovered video data. One-way data transmission may be common, such as in media serving applications.
[0029] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) performing a bidirectional transmission of encoded video data, such as may occur during a video conference. In a 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 the encoded video data transmitted by the other of the terminal devices (330) and (340), can decode the encoded video data to recover the video pictures, and can display the video pictures on an accessible display device in accordance with the recovered video data.
[0030] In the example of FIG. 3, the terminal devices (310), (320), (330), and (340) may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure may not be so limited. Embodiments of the present disclosure find application with laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (350) represents any number of networks that convey encoded video data between the terminal devices (310), (320), (330), and (340), including, for example, wired (wired) and / or wireless communication networks. The communication network (350) may exchange data over circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of the network (350) may not be important to the operation of the present disclosure unless otherwise described herein below.
[0031] 4 illustrates the arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter can be equally applied to other video-enabled applications including, for example, video conferencing, digital television, and storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0032] The streaming system may include a video source (401) and a capture subsystem (413) that may include, for example, a digital camera, creating, for example, a stream of uncompressed video pictures (402). In one example, the stream of video pictures (402) includes samples taken by a digital camera. The stream of video pictures (402), depicted with thick lines to emphasize the high data volume compared to the encoded video data (404) (or encoded video bitstream), may be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), depicted with thin lines to emphasize the lower data volume compared to the stream of video pictures (402), may be stored in a streaming server (405) for future use. 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, for example, a video decoder (410) within an electronic device (430). The video decoder (410) decodes the incoming copy of the encoded video data (407) and creates an outgoing stream of video pictures (411) that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be encoded according to a particular video encoding / 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), and the disclosed subject matter may be used in the context of VVC.
[0033] 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).
[0034] 5 shows a block diagram of a video decoder (510) according to one embodiment of the present disclosure. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., a receiving circuit). The video decoder (510) may be used in place of the video decoder (410) of the example of FIG. 4.
[0035] The receiver (531) may 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 at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel (501), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (531) may receive the coded video data together with other data, e.g., coded audio data and / or auxiliary data streams, which may be forwarded to respective usage entities (not shown). The receiver (531) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser (520)"). In certain applications, the buffer memory (515) is part of the video decoder (510). In others, it may be external to the video decoder (510) (not shown). In still others, there may be a buffer memory (not shown) external to the video decoder (510), e.g., to combat network jitter, and another buffer memory (515) internal to the video decoder (510), e.g., to accommodate playout timing. When the receiver (531) is receiving data from a store / forward device of sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (515) may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (515) may be needed and may be relatively large, advantageously adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (510).
[0036] The video decoder (510) may include a parser (520) for reconstructing symbols (521) from the encoded video sequence. The categories of symbols include information used to manage the operation of the video decoder (510) and potentially information for controlling a rendering device such as a rendering device (512) (e.g., a display screen) that is not 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 received encoded video sequence. The encoding of the encoded video sequence may follow a video encoding technique or standard and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) can extract from the coded video sequence at least one set of subgroup parameters for a subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups can include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser (520) can also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.
[0037] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515) to produce symbols (521).
[0038] The reconstruction of the symbols (521) can involve a number of different units, depending on the type of encoded video picture or part thereof (e.g., inter and intra picture, inter and intra block), and other factors. Which units are involved and how can be controlled by subgroup control information parsed from the encoded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the following units is not shown for clarity.
[0039] Beyond the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into a number of functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate:
[0040] The first unit is a scalar / inverse transform unit (551), which receives quantized transform coefficients as well as control information from the parser (520) including the transform used, block size, quantization coefficients, quantization scaling matrix, etc. as symbols (521). The scalar / inverse transform unit (551) can output blocks containing sample values that can be input to an aggregator (555).
[0041] 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 may 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) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from a current picture buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) adds, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551).
[0042] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensated prediction unit (553) may access the reference picture memory (557) to fetch samples used for prediction. After motion compensating the fetched samples 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) (in this case referred to as residual samples or residual signals or residual information) to generate output sample information. The addresses in the reference picture memory (557) from which the motion compensated prediction unit (553) fetches the prediction samples may be controlled by motion vectors available to the motion compensated prediction unit (553) in the form of symbols (521), which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory (557) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.
[0043] The output samples of the aggregator (555) may be subject to various loop filtering techniques in a loop filter unit (556). The video compression techniques may include in-loop filter techniques that are controlled by parameters contained in the coded video sequence (also called coded video bitstream) and available to the loop filter unit (556) as symbols (521) from the parser (520), but may also be responsive to meta-information obtained during decoding of previous (in decoding order) portions of the coded picture or coded video sequence, and to previously reconstructed and loop filtered sample values.
[0044] The output of the loop filter unit (556) may be a sample stream that can be output to a rendering device (512) as well as stored in a reference picture memory (557) for use in future inter-picture prediction.
[0045] Once a particular coded picture has been fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture has been fully reconstructed and that coded picture has been identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) becomes part of the reference picture memory (557), and a new current picture buffer can be reallocated before beginning reconstruction of the next coded picture.
[0046] The video decoder (510) may perform decoding operations according to a given video compression technique in a standard, such as ITU-T Rec. H.265. The encoded video sequence may comply with a syntax specified by the video compression technique or standard being used, in the sense that the encoded video sequence complies with both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. Specifically, the profile may select certain tools from all tools available in the video compression technique or standard as the only tools available in that profile. Also required for compliance is that the complexity of the encoded video sequence is within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstructed 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 by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled in the encoded video sequence.
[0047] In one embodiment, the receiver (531) can receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may take the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0048] 6 shows a block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmission circuit). The video encoder (603) can be used in place of the example video encoder (403) of FIG.
[0049] 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 encoded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0050] The video source (601) may provide a source video sequence to be encoded by the video encoder (603) in the form of a digital video sample stream that may be of any suitable bit depth (e.g.: 8-bit, 10-bit, 12-bit, ...), any color space (e.g.: BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g.: Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (601) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a number of separate pictures that give motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc. in use. Those skilled in the art may easily understand the relationship between pixels and samples. The following description focuses on samples.
[0051] According to one embodiment, the video encoder (603) can encode and compress pictures of a source video sequence into an encoded video sequence (643) in real-time or under any other time constraint required by an application. Enforcing an appropriate encoding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units as described below. For clarity, coupling is not shown. Parameters set by the controller (650) can include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, and maximum motion vector search range, etc. The controller (650) can be configured to have other appropriate functions related to the video encoder (603) optimized for a particular system design.
[0052] In some embodiments, the video encoder (603) is configured to operate in an encoding loop. As an oversimplified explanation, in one example, the encoding loop can include a source coder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be encoded and a reference picture) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a similar manner as the (remote) decoder does (since the compression between the symbols and the encoded video bitstream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since the decoding of the symbol stream results in bit-accurate results regardless of the location of the decoder (local or remote), the contents of the reference picture memory (634) are also bit-accurate between the local and remote encoders. In other words, the predictive part of the encoder "sees" exactly the same sample values as the decoder "sees" when using prediction during decoding as reference picture samples. This basic principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, for example due to channel errors) is also used in some related techniques.
[0053] The operation of the "local" decoder (633) may be the same as that of a "remote" decoder, such as the video decoder (510) already described in detail above in connection with Figure 5. However, with brief reference also to Figure 5, because symbols are available and the encoding / decoding of symbols into an encoded 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 parser (520), may not be fully implemented in the local decoder (633).
[0054] An observation that can be made at this point is that decoder techniques other than parsing / entropy decoding present in a decoder must necessarily be present in a corresponding encoder in substantially identical functional form. For this reason, the disclosed subject matter focuses on decoder operation. A description of the encoder techniques can be omitted, since they are the inverse of the decoder techniques, which have been described generically. Only in certain areas are more detailed descriptions necessary, and are provided below.
[0055] In operation, in some examples, the source coder (630) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (632) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references to the input picture.
[0056] The local video decoder (633) can decode the encoded video data of pictures that may be designated as reference pictures based on the symbols created by the source coder (630). The operation of the encoding engine (632) may advantageously be a lossy process. If the encoded video data can be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a replica of the source video sequence, typically with some errors. The local video decoder (633) can replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures 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 obtained by the far-end video decoder (free of transmission errors).
[0057] The predictor (635) may perform a prediction search for the coding engine (632). That is, for a new picture to be coded, the predictor (635) may search the reference picture memory (634) for sample data (as candidate reference pixel blocks) that may serve as suitable prediction references for the new picture, or for specific metadata such as reference picture motion vectors, block shapes, etc. The predictor (635) may operate on a sample block and pixel block basis to find a suitable prediction reference. 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).
[0058] The controller (650) can manage the encoding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0059] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (645), which converts the symbols produced by the various functional units into an encoded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.
[0060] The transmitter (640) may buffer the encoded video sequence created by the entropy coder (645) and prepare it for transmission over a communication channel (660), which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter (640) may merge the encoded video data from the video coder (603) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0061] The controller (650) can manage the operation of the video encoder (603). During encoding, the controller (650) can assign a particular encoding picture type to each encoded picture, which can affect the encoding technique that can be applied to the respective picture. For example, pictures are often assigned as one of the following picture types:
[0062] An intra picture (I-picture) may be one that can be coded and decoded without using other pictures in a sequence as a source of prediction. Some video codecs allow for various types of intra pictures, such as, for example, independent decoder refresh ("IDR") pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0063] A predictive picture (P picture) may be one that can be encoded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict sample values for each block.
[0064] A bidirectionally predicted picture (B-picture) may be one that can be encoded 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 may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0065] A source picture is usually spatially divided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks as determined by the coding assignment applied to the respective picture of the block. 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.
[0066] The video encoder (603) may perform encoding operations according to a given video encoding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (603) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard being used.
[0067] In one embodiment, the transmitter (640) can transmit additional data along with the encoded video. The source coder (630) can include such data as part of the encoded video sequence. The additional data can include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0068] A video may be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlations of a particular picture, while inter-picture prediction exploits correlations (temporal or otherwise) between pictures. In one example, a particular picture being coded / decoded, called the current picture, is divided into blocks. If a block of the current picture is similar to a reference block of a reference picture of a previously coded and still buffered video, the block of the current picture may be coded by a vector called a motion vector. A motion vector points to a reference block within a reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0069] In some embodiments, bidirectional prediction techniques can be used for inter-picture prediction. According to bidirectional prediction techniques, two reference pictures, such as a first reference picture and a second reference picture, are used that are both earlier in decoding order than the current picture in the video (but may be earlier and later, respectively, in display order). A block in the current picture can be coded by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first and second reference blocks.
[0070] Furthermore, merge mode techniques can be used for inter-picture prediction to improve coding efficiency.
[0071] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed on a block-by-block basis. For example, according to the HEVC standard, a picture of a sequence of video pictures is divided into coding tree units (CTUs) for compression, and the CTUs of a picture are of the same size (such as 64x64 pixels, 32x32 pixels, 16x16 pixels, etc.). In general, a CTU includes three coding tree blocks (CTBs). These are one luma CTB and two chroma CTBs. Each CTU may be recursively quad-tree partitioned into one or more coding units (CUs). For example, a CTU of 64x64 pixels may be partitioned into one CU of 64x64 pixels, four CUs of 32x32 pixels, or sixteen CUs of 16x16 pixels. In one example, each CU is analyzed to determine the prediction type of the CU (e.g., inter-prediction type or intra-prediction type). The CU is partitioned into one or more prediction units (PUs) depending on the temporal and / or spatial predictability. Generally, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed in units of a prediction block. Taking a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels of 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0072] 7 illustrates a video encoder (703) according to another embodiment of the present 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 to encode the processed block into an encoded picture that is part of an encoded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) of the example of FIG. 4.
[0073] In an HEVC 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) determines whether the processing block is optimally encoded using intra mode, inter mode, or bidirectional prediction mode, for example, using rate-distortion optimization. If the processing block is encoded in intra mode, the video encoder (703) can encode the processing block into a coded picture using intra prediction techniques, and if the processing block is encoded in inter mode or bidirectional prediction mode, the video encoder (703) can encode the processing block into a coded picture using inter prediction or bidirectional prediction techniques, respectively. In certain video encoding techniques, the merge mode is an inter-picture prediction sub-mode 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 certain other video encoding techniques, there may be motion vector components applicable to the current block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the mode of the processing block.
[0074] In the example of FIG. 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 FIG.
[0075] 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 of a previous picture and a subsequent picture), generate inter-prediction information (e.g., a description of redundant information due to an inter-coding technique, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a prediction block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on the encoded video information.
[0076] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), possibly compare the block with blocks already encoded in the same picture, 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). In one example, the intra encoder (722) also calculates intra prediction results (e.g., a prediction block) based on the intra prediction information and reference blocks in the same picture.
[0077] The generic controller (721) is configured to determine generic control data and control other components of the video encoder (703) based on the generic control data. In one example, the generic controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, if the mode is an intra mode, the generic controller (721) controls the switch (726) to select an intra mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra prediction information and include the intra prediction information in the bitstream, and if the mode is an inter mode, the generic controller (721) controls the switch (726) to select an inter prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select inter prediction information and include the inter prediction information in the bitstream.
[0078] The residual calculator (723) is configured to calculate a difference (residual data or residual information) between a received block and a prediction result selected from the intra-encoder (722) or the inter-encoder (730). The residual encoder (724) is configured to operate on the residual data and to encode the residual data to generate transform coefficients. In one example, the residual encoder (724) is configured to transform the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (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 can be used by the intra-encoder (722) and the inter-encoder (730) as appropriate. For example, the inter-encoder (730) may generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (722) may generate decoded blocks based on the decoded residual data and the intra-prediction information. The decoded blocks are appropriately processed to generate decoded pictures, which may be buffered in a memory circuit (not shown) and used as reference pictures in some examples.
[0079] The entropy encoder (725) is configured to format the bitstream to include the encoded block. The entropy encoder (725) is configured to include various information according to an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) is 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. It should be noted that, according to the disclosed subject matter, there is no residual information when encoding a block in a merged sub-mode of either the inter mode or the bi-prediction mode.
[0080] 8 illustrates a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive encoded pictures that are part of an encoded video sequence and decode the encoded pictures to generate reconstructed pictures. In one example, the video decoder (810) is used in place of the video decoder (410) of the example of FIG. 4.
[0081] In the example of FIG. 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 FIG. 8.
[0082] The entropy decoder (871) may be configured to reconstruct from the coded picture certain symbols that represent syntax elements that make up the coded picture. Such symbols may include, for example, the mode in which the block is coded (e.g., intra mode, inter mode, bi-predictive mode, the latter two being merged submode or another submode, etc.), prediction information (e.g., intra prediction information or inter prediction information, etc.) that may identify certain samples or metadata used for prediction by the intra decoder (872) or the inter decoder (880), respectively, residual information, e.g., in the form of quantized transform coefficients, etc. In one example, if the prediction mode is an inter prediction mode or a 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 may be subject to inverse quantization and is provided to the residual decoder (873).
[0083] The inter decoder (880) is configured to receive the inter prediction information and to generate inter prediction results based on the inter prediction information.
[0084] The intra decoder (872) is configured to receive the intra prediction information and to generate a prediction result based on the intra prediction information.
[0085] The residual decoder (873) is configured to perform inverse quantization to extract unquantized transform coefficients and process the unquantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (to include quantization parameters (QPs)), which may be provided by the entropy decoder (871) (a data path is not shown as this may be only a small amount of control information).
[0086] The reconstruction module (874) is configured to combine, in the spatial domain, the residual output by the residual decoder (873) and a prediction result (possibly output by an inter-prediction module or an intra-prediction module) to form a reconstructed block, which may be part of a reconstructed picture and thus part of a reconstructed video. It should be noted that other suitable operations, such as deblocking operations, may be performed to improve visual quality.
[0087] 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 one embodiment, 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.
[0088] Aspects of the present disclosure provide intra prediction refinement techniques for intra sub-partitions (ISPs).
[0089] Generally, a picture is partitioned into multiple blocks for encoding and decoding. In some examples, according to the HEVC standard, a picture may be partitioned into multiple coding tree units (CTUs). Furthermore, the CTUs may be partitioned into coding units (CUs) by using a quad tree (QT) structure, denoted as a coding tree, to adapt to various local characteristics of a picture. Each CU corresponds to a leaf of the quad tree structure. The decision of whether to code a picture region using inter-picture prediction (also called temporal prediction or inter prediction type), intra-picture prediction (also called spatial prediction or intra prediction type), etc. is made at the CU level. Each CU may be further partitioned into one, two, or four prediction units (PUs) according to a PU partition type rooted at the CU level. For each PU, the same prediction process is applied, and related prediction information is transmitted to the decoder on a PU basis. After applying a prediction process based on the PU partition type to obtain prediction residual data (also called residual information), the CU may be partitioned into transform units (TUs) according to another QT structure rooted at the CU level. According to the HEVC standard, in some examples, the concept of partition includes CU, PU, and TU. In some examples, the CU, the PU associated with the CU, and the TU associated with the CU may have different block sizes. Furthermore, the CU or TU must have a square shape in the QT structure, but the PU may have a square or rectangular shape.
[0090] Note that in some implementations, the encoding / decoding is performed on blocks. For example, a coding tree block (CTB), a coding block (CB), a prediction block (PB), and a transform block (TB) may be used to specify, for example, a 2D sample array of one color component associated with the corresponding CTU, CU, PU, and TU, respectively. For example, a CTU may include one luma CTB and two chroma CTBs, and a CU may include one luma CB and two chroma CBs.
[0091] To surpass HEVC in compression capabilities, many other partition structures have been proposed for the next generation video coding standard beyond HEVC, namely the so-called Versatile Video Coding (VVC). One of these proposed partition structures is called the QTBT structure, which uses both the Quad Tree (QT) and the Binary Tree (BT). Compared to the QT structure of HEVC, the QTBT structure of VVC removes the separation between the concepts of CU, PU, and TU. In other words, a CU, a PU associated with a CU, and a TU associated with a CU can have the same block size in the QTBT structure of VVC. Furthermore, the QTBT structure supports more flexibility in CU partition shapes. A CU can have a square or rectangular shape in the QTBT structure.
[0092] In some examples, the QTBT partitioning scheme defines certain parameters such as CTU size, MinQTSize, MaxBTsize, MaxBTDepth, and MinBTSize. CTU size is the root node size of the quad tree, which is the same concept as in HEVC. MinQTSize is the minimum allowed quad tree leaf node size. MaxBTSize is the maximum allowed binary tree root node size. MaxBTDepth is the maximum allowed binary tree depth. MinBTSize is the minimum allowed binary tree leaf node size.
[0093] In an example of a QTBT partitioning structure, the CTU size is set as 128x128 luma samples with two corresponding 64x64 blocks of chroma samples, MinQTSize is set as 16x16, MaxBTSize is set as 64x64, MinBTSize (both width and height) is set as 4x4, and MaxBTDepth is set as 4. Quad-tree partitioning is first applied to the CTU to generate quad-tree leaf nodes. The quad-tree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., CTU size). If the leaf quad-tree node is 128x128, it will not be further partitioned by the binary tree since its size exceeds MaxBTSize (i.e., 64x64). Otherwise, the leaf quad-tree node may be further partitioned by the binary tree. Therefore, the quadtree leaf node is also the root node of the binary tree, which has a depth of 0. Once the depth of the binary tree reaches MaxBTDepth (i.e., 4), no further splits are considered. If the width of the binary tree node is equal to MinBTSize (i.e., 4), no further horizontal splits are considered. Similarly, if the height of the binary tree node is equal to MinBTSize, no further vertical splits are considered. The leaf nodes of the binary tree are further processed by the prediction and transformation process without further partitioning. In JEM, the maximum CTU size is 256x256 luma samples.
[0094] FIG. 9 shows an example of a block (901) partitioned using a QTBT structure (900). In the example of FIG. 9, the QT split is represented by a solid line and the BT split is represented by a dotted line. Specifically, the QTBT structure (900) includes nodes corresponding to various blocks during partitioning in the block (901). If a node in the QTBT structure (900) has a branch, the node is called a non-leaf node, and if a node in the QTBT structure (900) does not have a branch, the node is called a leaf node. The non-leaf node corresponds to an intermediate block that is further divided, and the leaf node corresponds to a final block that is not further divided. If a non-leaf node has four branches, the QT split divides the block corresponding to the non-leaf node into four small blocks of the same size. If a non-leaf node has two branches, the BT split divides the block corresponding to the non-leaf node into two small blocks of the same size. There are two types of splits in the BT split: a symmetric horizontal split and a symmetric vertical split. In some examples, for each non-leaf BT split node, a flag is signaled (e.g., in the encoded video bitstream) to indicate the split type (e.g., "0" for a symmetric horizontal split, or "1" for a symmetric vertical split, producing two smaller rectangular blocks of equal size). For a QT split node in the QTBT structure (900), it is not necessary to specify a split type for the QT split, because the QT split splits the block corresponding to the QT split node both horizontally and vertically to produce four smaller blocks of equal size.
[0095] Specifically, in the example of Figure 9, the QTBT structure (900) includes a root node (950) that corresponds to block (901). The root node (950) has four branches that generate nodes (961)-(964), respectively, and thus the block (901) is divided by the QT into four equally sized blocks (911)-(914). The nodes (961)-(964) correspond to the four blocks (911)-(914), respectively.
[0096] Additionally, node (961) has two branches that generate nodes (971) and (972), node (962) has two branches that generate nodes (973) and (974), and node (963) has four branches that generate nodes (975)-(978). Note that node (964) has no branches and is therefore a leaf node. Also note that node (962) is a non-leaf BT split node with a split type of "1" and node (963) is a non-leaf BT split node with a split type of "0". Thus, block (911) is divided vertically by BT into two blocks (921)-(922), block (912) is divided horizontally by BT into two blocks (923)-(924), and block (913) is divided by QT into four blocks (925)-(928).
[0097] Similarly, node (971) has two branches that generate nodes (981) to (982), and node (975) has two branches that generate nodes (983) to (984) that have a split type flag indicating a vertical split (e.g., split type "1"). Similarly, node (978) has two branches that generate nodes (985) to (986) that have a split type flag indicating a horizontal split (e.g., split type "0"). Node (984) has two branches that generate nodes (991) to (992). 9. Nodes (981), (982), (972), (973), (974), (983), (991), (992), (976), (977), (985), and (986) are similar to node (964) which does not have a branch and therefore have a split type flag indicating a horizontal split (e.g., split type "0"). Thus, the right halves of corresponding blocks (921), (928), and (925) are split into smaller blocks as shown in FIG. 9. Then, nodes (981), (982), (972), (973), (974), (983), (991), (992), (976), (977), (985), and (986) are similar to node (964) which does not have a branch and therefore are leaf nodes.
[0098] In the example of Figure 9, leaf nodes (964), (981), (982), (972), (973), (974), (983), (991), (992), (976), (977), (985), and (986) are not further divided and are CUs used for prediction and transform processing. In some examples such as VVC, the CUs are used as PUs and TUs, respectively.
[0099] Furthermore, the QTBT scheme supports the flexibility of having separate QTBT structures for luma and chroma. In some examples, for P and B slices, the luma and chroma CTBs in one CTU share the same QTBT structure. However, for I slices, the luma CTB is partitioned into CUs by a QTBT structure, and the chroma CTB is partitioned into chroma CUs by another QTBT structure. This means that in some examples, a CU in an I slice consists of a coded block of the luma component or a coded block of two chroma components, and a CU in a P or B slice consists of coded blocks of all three color components.
[0100] Some examples, such as HEVC, restrict inter prediction for small blocks to reduce memory accesses for motion compensation, so that bidirectional prediction is not supported for 4×8 and 8×4 blocks, and inter prediction is not supported for 4×4 blocks. Some examples, such as QTBT implemented in JEM-7.0, remove these restrictions.
[0101] In addition to the above QTBT structure, another partition structure called multi-type tree (MTT) structure is also used in VVC, which may be more flexible than the QTBT structure. In the MTT structure, horizontal and vertical center-side triple tree (TT) partitioning is introduced in addition to the quad tree and binary tree, as shown in FIG. 10A and FIG. 10B. Triple tree partitioning is also called triple tree partitioning, ternary tree (TT) partitioning, or ternary partitioning. FIG. 10A shows an example of center-side TT partitioning in the vertical direction. For example, a block (1010) is vertically partitioned into three sub-blocks (1011) to (1013), and the sub-block (1012) is located in the center of the block (1010). FIG. 10B shows an example of center-side TT partitioning in the horizontal direction. For example, a block (1020) is horizontally partitioned into three sub-blocks (1021) to (1023), and the sub-block (1022) is located in the center of the block (1020). Similar to BT partitioning, TT partitioning can signal a flag in the video bitstream, for example from the encoder to the decoder, to indicate the partition type (i.e., symmetric horizontal or vertical partitioning). In one example, "0" indicates symmetric horizontal partitioning and "1" indicates symmetric vertical partitioning.
[0102] According to one aspect of the present disclosure, triple tree partitioning can complement quad tree and binary tree partitioning. For example, triple tree partitioning can capture objects in the center of a block, while quad trees and binary trees always partition along the center of a block. Moreover, the width and height of the partitions of the proposed triple tree are powers of two, so no additional transformation is required.
[0103] Theoretically, the complexity of traversing a tree is T D where T denotes the number of split types and D denotes the depth of the tree. Thus, in some examples, a two-level tree is used to reduce complexity.
[0104] FIG. 11 shows a diagram of example intra prediction directions and intra prediction modes used in HEVC. There are a total of 35 intra prediction modes (mode 0 to mode 34) in HEVC. Mode 0 and mode 1 are non-directional modes, among which mode 0 is planar mode and mode 1 is DC mode. DC mode uses the average of all samples. Planar mode uses the average of two linear predictions. Modes 2 to 34 are directional modes, among which mode 10 is horizontal mode, mode 26 is vertical mode, and mode 2, mode 18 and mode 34 are diagonal modes. In some examples, the intra prediction modes are signaled by the three most likely modes (MPM) and the remaining 32 modes.
[0105] 12 shows exemplary intra-prediction directions and intra-prediction modes in some examples (e.g., VVC). There are a total of 95 intra-prediction modes (mode -14 to mode 80), among which mode 18 is a horizontal mode, mode 50 is a vertical mode, and mode 2, mode 34, and mode 66 are diagonal modes. Modes -1 to -14 and modes 67 to 80 are called wide-angle intra-prediction (WAIP) modes (also called wide-angle modes, wide-angle direction modes, etc.).
[0106] FIG. 13 shows Table 1 of the correspondence between intra prediction modes and associated angle parameters. In Table 1, predModeIntra indicates an intra prediction mode, and intraPredAngle indicates an intra prediction angle parameter of the corresponding intra prediction mode (e.g., a displacement parameter associated with the intra prediction angle, related to the tangent value of the angle). In the example of FIG. 13, the precision of the intra prediction angle parameter is 1 / 32. In some examples, when the intra prediction mode has a corresponding value X in Table 1, the actual intraPredAngle parameter is X / 32. For example, for mode 66, the corresponding value in Table 1 is 32, and the actual intraPredAngle parameter is 32 / 32.
[0107] Note that the conventional angular intra prediction direction is defined from 45° to −135° in a clockwise direction. In some embodiments, some conventional angular intra prediction modes are adaptively replaced with wide-angle intra prediction modes for non-square blocks. The replaced modes are signaled using the original mode index, which is remapped to the index of the wide-angle mode after parsing. The total number of intra prediction modes remains unchanged, i.e., 67, and the coding method of the intra modes remains unchanged.
[0108] In an example, to support the prediction direction, a top reference can be generated with a total width of 2W+1 and a left reference can be generated with a total height of 2H+1, where the width of the current block is W and the height of the current block is H.
[0109] In some examples, the number of replaced modes of the wide-angle directional modes depends on the aspect ratio of the block.
[0110] 14 shows Table 2 of intra prediction modes replaced by wide-angle directional modes based on the aspect ratio of the block. In the example, for the angle mode ang_mode in Table 2, if W / H>1, the angle mode ang_mode is mapped to (65+ang_mode), and if W / H<1, the angle mode ang_mode is mapped to (ang_mode-67).
[0111] According to one aspect of the present disclosure, an intra sub-partition (ISP) coding mode can be used, in which a luma intra prediction block is divided into two or four sub-partitions vertically or horizontally depending on the block size.
[0112] Figure 15 shows Table 3, which relates the number of subpartitions to the block size. For example, if the block size is 4x4, no partitioning is performed on the block in ISP coding mode. If the block size is 4x8 or 8x4, the block is partitioned into two subpartitions in ISP coding mode. For all other block sizes, the block is partitioned into four subpartitions.
[0113] Figure 16 shows examples of subpartitions of a block having size 4x8 or 8x4. In an example of horizontal partitioning, the block is partitioned into two equal subpartitions, each having a size of width x (height / 2). In an example of vertical partitioning, the block is partitioned into two equal subpartitions, each having a size of (width / 2) x height.
[0114] Figure 17 shows another example of subpartitioning of a block having a size other than 4x8, 8x4 and 4x4. In an example of horizontal partitioning, the block is partitioned into four equal subpartitions each having a size of width x (height / 4). In an example of vertical partitioning, the block is partitioned into four equal subpartitions each having a size of (width / 4) x height. In one example, all subpartitions meet the condition that they have at least 16 samples. For chroma components, ISP is not applied.
[0115] In some examples, each subpartition is considered as a TU. For example, for each subpartition, the decoder may entropy decode the coefficients transmitted from the encoder to the decoder, and then the decoder may inverse quantize and inverse transform the coefficients to generate a residual for the subpartition. Furthermore, if the subpartition is intra predicted by the decoder, the decoder may add the residual together with the intra prediction result to obtain a reconstructed sample for the subpartition. Thus, the reconstructed sample for each subpartition may be used to generate a prediction for the next subpartition, and so on. In the example, all subpartitions share the same intra prediction mode.
[0116] In some examples, the ISP algorithm is only tested with intra prediction modes that are part of the MPM list. Therefore, if a block uses ISP, it can be inferred that the MPM flag is set. Furthermore, if ISP is used for a particular block, the MPM list can be modified to exclude DC modes and in some examples to prefer horizontal intra prediction modes for horizontal partitioning and vertical intra prediction modes for vertical partitioning of ISP.
[0117] In some examples, in ISP, each subpartition can be considered a TU since transformation and reconstruction are performed separately for each subpartition.
[0118] In the design of the related ISP algorithm, when the ISP mode is on, the mapping process of the wide-angle mode is performed at the CU level, and when the ISP mode is off, the mapping process of the wide-angle mode is performed at the TU level, which is not a unified design.
[0119] Also, in a related ISP implementation, if the current CU is split horizontally, the top right neighboring sample is marked as unavailable in the second, third, and fourth partitions, and if the current CU is split vertically, the bottom left neighboring sample is marked as unavailable in the second, third, and fourth partitions, which may not be a desirable design.
[0120] Aspects of the present disclosure provide improved intra prediction techniques for intra-subpartition (ISP) coding modes. The proposed methods may be used separately or combined in any order. Furthermore, each of the methods (or embodiments), the encoder, and the decoder may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored in a non-transitory computer-readable medium.
[0121] In this disclosure, if the intra prediction mode is neither planar nor DC mode, the intra prediction mode generates prediction samples according to a given prediction direction, such as intra prediction mode 2-66 defined in VVC draft 2, and the intra prediction mode is referred to as an angular mode. If the intra prediction mode is not directional intra prediction, for example, if the intra prediction mode is either planar or DC mode, the intra prediction mode is referred to as a non-angular mode in this disclosure. Each intra prediction mode is associated with a mode number (also referred to as an intra prediction mode index). For example, in the VVC working draft, the planar, DC, horizontal and vertical intra prediction modes are associated with mode numbers 0, 1, 18, and 50, respectively.
[0122] In this disclosure, a vertical prediction direction is assumed using a prediction angle v, and then a vertical-like intra-prediction direction is defined as an intra-prediction direction associated with a prediction angle that falls in the range of (v-thr, v+thr), where thr is a given threshold. Furthermore, a horizontal prediction direction is assumed using a prediction angle h, and a horizontal-like intra-prediction direction is defined as an intra-prediction direction associated with a prediction angle that falls into the range of (h-thr, h+thr), where thr is a given threshold.
[0123] In this disclosure, a reference line index is used to refer to a reference line. The reference line adjacent to the current block, which is the reference line closest to the current block, is referenced using reference line index 0.
[0124] According to one aspect of the present disclosure, the wide-angle mapping process, i.e., the decision of whether or not a wide-angle intra-prediction angle is applied, is performed at the TU level, regardless of whether the current CU has multiple TUs (or partitions).
[0125] In one embodiment, a first set of intra prediction modes, such as modes 0-66 of the VCC, is used for square shaped blocks. If the block is non-square shaped, a subset of the intra prediction modes of the first set are replaced with wide-angle intra prediction modes. In some examples, the number of intra prediction modes replaced from the first set to the second set is a function of the aspect ratio of the block. However, if the aspect ratio is out of range, in some examples, the number of intra prediction modes replaced from the first set to the second set is clipped to a predefined value. In some examples, if the aspect ratio of the block is greater than Thres1 or less than Thres2, the number of replaced intra prediction modes is set equal to K, so that the wide-angle mapping process works for blocks with the above aspect ratios. The aspect ratio can refer to either width / height or height / width, or max(width / height, height / width), or a function of width / height and / or height / width.
[0126] In one embodiment, K is a positive integer. In an example, K is set equal to 15. In another example, K is set equal to 16.
[0127] In another embodiment, the replaced intra mode of a block whose aspect ratio is greater than Thres1 or less than Thres2 can be determined according to a predefined table.
[0128] FIG. 18 shows Table 4 used as an example for replacing the intra prediction mode with a wide-angle mode. The number of replaced intra prediction modes is 15.
[0129] FIG. 19 shows Table 5 used as another example for replacing the intra prediction mode with a wide-angle mode. The number of replaced intra prediction modes is 16.
[0130] In another embodiment, the upper threshold Thres1 is set equal to 16, and the lower threshold Thres2 is set equal to 1 / 16.
[0131] In another embodiment, the upper threshold Thres1 is set equal to 32, and the lower threshold Thres2 is set equal to 1 / 32.
[0132] In another embodiment, when the aspect ratio of the current block is greater than L1 (W / H > L1), the upper reference sample of length 2W + 1 and the left reference sample of length 4H + 1 are fetched, stored, and used in intra prediction. L1 is a positive integer. In an example, L1 is set equal to 16 or 32.
[0133] In another embodiment, when the aspect ratio of the current block is less than L2 (W / H < L2), the upper reference sample of length 4W + 1 and the left reference sample of length 2H + 1 are fetched, stored, and used in intra prediction. L2 is a positive number. In an example, L2 is set equal to 1 / 16 or 1 / 32.
[0134] In another embodiment, the precision of the intra prediction direction is changed to 1 / 64, and the intra prediction directions with tan(α) equal to 1 / 64, 2 / 64, 4 / 64, 8 / 64, 16 / 64, 32 / 64, 64 / 64 are included. In some examples, the number of modes replaced by the wide-angle mode for blocks with aspect ratios equal to 16 (1 / 16), 32 (1 / 32), and 64 (1 / 64) are set equal to 13, 14, and 15, respectively. For example, the number of modes replaced by the wide-angle mode for blocks with aspect ratios equal to 16 (1 / 16) is set to 13. For example, the number of modes replaced by the wide-angle mode for blocks with aspect ratios equal to 32 (1 / 32) is set to 14. For example, the number of modes replaced by the wide-angle mode for blocks with aspect ratios equal to 64 (1 / 64) is set to 15.
[0135] According to another aspect of the disclosure, when the ISP mode is on, adjacent samples of the first sub-partition may also be used for the second, third, and fourth partitions.
[0136] In one embodiment, when the current CU is divided vertically, the bottom-left neighboring sample used for intra prediction of the first subpartition can also be used as the bottom-left neighboring sample for the second, third, and fourth partitions, and the bottom-left neighboring sample used for intra prediction of the first partition is shown in the following figure.
[0137] 20 shows an example of reference samples in ISP mode. In the example of FIG. 20, a CU 2010 is vertically divided into a first subpartition, a second subpartition, a third subpartition, and a fourth subpartition. The neighboring samples of the CU 2010 include an upper neighboring sample 2020, an upper right neighboring sample 2030, a left neighboring sample 2040, and a lower left neighboring sample 2050.
[0138] In one example, the top, top right, left, and bottom left neighboring samples of the first subpartition are available for intra predicting the first subpartition.
[0139] Further, in the example, the bottom left neighboring sample of the second subpartition has not been decoded and cannot be used to intra predict the second subpartition. Similarly, the bottom left neighboring samples of the third and fourth subpartitions cannot be used. In some embodiments, the bottom left neighboring sample 2050 of the first subpartition is used as the bottom left neighboring sample of the second, third, and fourth subpartitions.
[0140] In another embodiment, when the current CU is divided horizontally, the upper right neighboring sample used for intra prediction of the first subpartition can also be used as the upper right neighboring sample of the second, third, and fourth subpartitions, and the following figure shows the upper right neighboring sample used for intra prediction of the first subpartition.
[0141] 21 is a diagram showing an example of reference samples in ISP mode. In the example of FIG. 21, a CU 2110 is horizontally divided into a first subpartition, a second subpartition, a third subpartition, and a fourth subpartition. The neighboring samples of the CU 2110 include an upper neighboring sample 2120, an upper right neighboring sample 2130, a left neighboring sample 2140, and a lower left neighboring sample 2150.
[0142] In one example, the top, top right, left, and bottom left neighboring samples of the first subpartition are available for intra predicting the first subpartition.
[0143] Further, in the example, the upper right neighboring sample of the second subpartition has not been decoded and cannot be used to intra predict the second subpartition. Similarly, the upper right neighboring samples of the third and fourth subpartitions cannot be used. In some embodiments, the upper right neighboring sample 2130 of the first subpartition is used as the upper right neighboring sample of the second, third, and fourth subpartitions.
[0144] In another embodiment, if the current CU is divided horizontally, for planar intra prediction, the top right sample of the first subpartition is also indicated as the top right sample of the second, third, and fourth subpartitions of the current CU.
[0145] In some examples, if the size of the current CU is N×4 or N×8, where N is any positive integer, such as 2, 4, 8, 16, 32, 64, 128, etc., the current CU is divided horizontally and the right-hand sample of the first subpartition is also denoted as the top-right sample of the second, third, and fourth subpartition of the current CU.
[0146] FIG. 22 is a diagram showing an example of reference samples in ISP mode for planar mode prediction. In the example of FIG. 22, a CU 2210 is horizontally divided into a first subpartition, a second subpartition, a third subpartition, and a fourth subpartition. The neighboring samples used in the planar mode prediction of the CU 2210 include an upper neighboring sample 2220, an upper right neighboring sample 2230, a left neighboring sample 2240, and a lower left neighboring sample 2250.
[0147] In one example, to intra predict the first subpartition in planar mode, the top, top right, left and bottom left neighboring samples of the first subpartition are available.
[0148] Further, in the example, the upper right neighboring sample of the second subpartition has not been decoded and cannot be used to intra predict the second subpartition in planar mode. Similarly, the upper right neighboring sample of the third subpartition and the upper right neighboring sample of the fourth subpartition cannot be used. In some embodiments, the upper right neighboring sample 2230 of the first subpartition is used as the upper right neighboring sample of the second subpartition, the third subpartition, and the fourth subpartition, respectively.
[0149] In some examples, if the size of the current CU is N×4 or N×8, where N is any positive integer such as 2, 4, 8, 16, 32, 64, 128, etc., the current CU is divided horizontally, and the location of the top right sample used for planar prediction of the second, third, and fourth partitions of the current CU may be different for each partition.
[0150] In another embodiment, if the current CU is divided vertically, for planar intra prediction, the bottom left sample of the first subpartition is also indicated as the bottom left sample of the second, third, and fourth subpartitions of the current CU.
[0151] In some examples, if the size of the current CU is 4×N or 8×N, where N is any positive integer, such as 2, 4, 8, 16, 32, 64, 128, etc., the current CU is divided vertically and the left sample of the first subpartition is also denoted as the bottom left sample of the second, third, and fourth subpartition of the current CU.
[0152] Figure 23 is a diagram showing an example of reference samples in ISP mode for planar intra prediction. In the example of Figure 23, a CU 2310 is vertically divided into a first subpartition, a second subpartition, a third subpartition, and a fourth subpartition. The neighboring samples of the CU 2310 (in planar intra prediction) include an upper neighboring sample 2320, an upper right neighboring sample 2330, a left neighboring sample 2340, and a lower left neighboring sample 2350.
[0153] In one example, to intra predict the first subpartition in planar mode, the top, top right, left and bottom left neighboring samples of the first subpartition are available.
[0154] Further, in the example, the bottom left neighboring sample of the second subpartition has not been decoded and cannot be used to intra predict the second subpartition in planar mode. Similarly, the bottom left neighboring sample of the third subpartition and the bottom left neighboring sample of the fourth subpartition cannot be used. In some embodiments, the bottom left neighboring sample 2350 of the first subpartition is used as the bottom left neighboring sample of the second subpartition, the third subpartition, and the fourth subpartition, respectively.
[0155] In some examples, if the size of the current CU is 4×N or 8×N, where N is any positive integer, such as 2, 4, 8, 16, 32, 64, 128, etc., the current CU is partitioned vertically. The location of the bottom-left sample used for planar prediction of the second, third, and fourth partitions of the current CU may be different for each partition.
[0156] According to another aspect of the present disclosure, the number of sub-block partitions can depend on coded information, including but not limited to the block size of the current block, intra-prediction modes of neighboring blocks, etc. Thus, the number of sub-block partitions can be inferred and no explicit signaling is required.
[0157] In one embodiment, for an N×4 or N×8 CU, where N is a positive integer such as 8, 16, 32, 64, 128, etc., the current CU can only be partitioned vertically, and one flag is signaled to indicate whether the current CU is partitioned vertically into two or four partitions.
[0158] For example, if the block size is Nx4, then instead of partitioning horizontally into four Nx1 subpartitions, the block is partitioned vertically into two N / 2x4 partitions. In one example, if the block size is Nx8, then instead of partitioning horizontally into four Nx2 subpartitions, the block is partitioned vertically into two N / 2x8 partitions.
[0159] In another example, if the block size is N×8, instead of partitioning horizontally into four N×2 subpartitions, partition the block horizontally into two N / 2×4 partitions.
[0160] In another embodiment, for a 4×N or 8×N CU, where N is a positive integer such as 8, 16, 32, 64, 128, etc., the current CU can only be partitioned horizontally, and one flag is signaled to indicate whether the current CU is divided horizontally into two or four partitions.
[0161] In one example, if the block size is 4xN, instead of partitioning vertically into four 1xN subpartitions, the block is partitioned horizontally into two 4xN / 2 partitions. In one example, if the block size is 8xN, instead of partitioning vertically into four 2xN subpartitions, the block is partitioned horizontally into two 8xN / 2 partitions.
[0162] In another example, if the block size is 8xN, then instead of partitioning vertically into four 2xN subpartitions, partition the block horizontally into two 4xN / 2 partitions.
[0163] According to another aspect of the present disclosure, the same MPM list construction process is shared and uses the same candidate order for adjacent reference lines with ISP mode disabled, adjacent reference lines with ISP mode enabled, and non-adjacent reference lines. Planar and DC modes are always inserted into the MPM list at indexes 0 and 1 in some examples.
[0164] In one embodiment, for the first bin of an MPM index, two contexts are used if the reference line index is signaled as 0. The first context is used if at least one of the neighboring blocks meets the following conditions: 1) MPM flag is true, 2) reference line index is 0, and 3) MPM index is less than Th. Otherwise, the second context is used. Th is a positive integer such as 1, 2, 3, etc.
[0165] In another embodiment, if the reference line index is signaled as 0, then for the first bin of the MPM index, only one context is used.
[0166] In another embodiment, if the reference line index is reported as 0, the ISP mode is turned off and only one context is used for the second bin of the MPM index.
[0167] In another embodiment, if the neighboring block is beyond the current CTU row, the neighboring block is marked as unavailable for MPM index context derivation.
[0168] In another embodiment, if the reference line index is signaled as 0, the first K bins of the MPM index depend on the MPM flag, and / or the MPM index, and / or the ISP flag, and / or the reference line index of its neighboring block, where K is a positive integer such as 1 or 2.
[0169] In one example, when a neighboring reference line with index 0 is signaled, for the first bin of the MPM index, two contexts are used: if the ISP flag of the current block is on, the first context is used; otherwise, the second context is used.
[0170] In another example, when a neighboring reference line with index 0 is signaled, for the first bin of the MPM index, two contexts are used: if at least one of the ISP flags of the current block and its neighboring block is on, the first context is used; otherwise, the second context is used.
[0171] FIG. 24 shows a flow chart outlining a process (2400) according to one embodiment of the present disclosure. The process (2400) generates a prediction block for a block being reconstructed, which can be used to reconstruct the block. In various embodiments, the process (2400) is performed by a processing circuit, such as the processing circuits of the terminal devices (310), (320), (330) and (340), the processing circuits performing the functions of the video encoder (403), the processing circuits performing the functions of the video decoder (410), the processing circuits performing the functions of the video decoder (510), and the processing circuits performing the functions of the video encoder (603). In some embodiments, the process (2400) is implemented with software instructions, and thus the processing circuits perform the process (2400) as the processing circuits execute the software instructions. The process begins at (S2401) and proceeds to (S2410).
[0172] At (S2410), prediction information of the current block is decoded from the encoded video bitstream. The prediction information indicates a first intra-prediction mode in a first set of intra-prediction modes for square-shaped intra-prediction. In some examples, the prediction information also indicates residual information of a sub-partition of the current block. For example, the prediction information includes residual data of a TU.
[0173] At (S2420), the first intra prediction mode is remapped to a second intra prediction mode in a second set of intra prediction modes for non-square shaped intra prediction based on the shape of the first sub-partition of the current block.
[0174] At (S2430), the samples of the sub-partition are reconstructed according to the second intra-prediction mode and the residual information of the sub-partition. After that, the process proceeds to (S2499) and ends.
[0175] FIG. 25 shows a flow chart outlining a process (2500) according to one embodiment of the present disclosure. The process (2500) generates a prediction block for a block being reconstructed, which can be used to reconstruct the block. In various embodiments, the process (2500) is performed by a processing circuit, such as the processing circuits of the terminal devices (310), (320), (330) and (340), the processing circuits performing the functions of the video encoder (403), the processing circuits performing the functions of the video decoder (410), the processing circuits performing the functions of the video decoder (510), and the processing circuits performing the functions of the video encoder (603). In some embodiments, the process (2500) is implemented with software instructions, and thus the processing circuits perform the process (2500) as the processing circuits execute the software instructions. The process begins at (S2501) and proceeds to (S2510).
[0176] At (S2510), prediction information for the current block is decoded from the encoded video bitstream.
[0177] At (S2520), the current block is partitioned into at least a first sub-partition and a second sub-partition based on the prediction information. For example, the current block may be partitioned as shown in FIG. 16 and FIG. 17.
[0178] At (S2530), samples of the first and second subpartitions are reconstructed based on at least adjacent samples of the current block that are outside the adjacent regions of at least one of the first and second subpartitions, as described with reference to Figures 20 to 23. The process then proceeds to (S2599) and ends.
[0179] The above techniques may be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, Figure 26 illustrates a computer system (2600) suitable for implementing certain embodiments of the disclosed subject matter.
[0180] Computer software can be coded using any suitable machine code or computer language, which can be subject to mechanisms of assembly, compiling, linking, and the like, to produce code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), and the like, either directly, or through interpretation, microcode execution, and the like.
[0181] The instructions may be executed on various types of computers or components thereof including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.
[0182] 26 for the 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 the embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of the computer system (2600).
[0183] The computer system (2600) may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users through, for example, tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (speech, music, environmental sounds, etc.), images (scanned images, photographic images captured by still image cameras, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).
[0184] The input human interface devices may include one or more (only one of each is depicted) of a keyboard (2601), a mouse (2602), a trackpad (2603), a touch screen (2610), a data glove (not shown), a joystick (2605), a microphone (2606), a scanner (2607), and a camera (2608).
[0185] The computer system (2600) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen (2610), data gloves (not shown), or joystick (2605), although there may also be haptic feedback devices that do not function as input devices), audio output devices (speakers (2609), headphones (not shown), etc.), visual output devices (screens (2610), including CRT screens, LCD screens, plasma screens, OLED screens, etc., each with or without touch screen input capability and with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or three- or more-dimensional output by means of stereoscopic output, etc., virtual reality glasses (not shown), holographic displays, smoke tanks (not shown)), as well as printers (not shown).
[0186] The computer system (2600) may also include human accessible storage and its associated media, such as optical media, including CD / DVD ROM / RW (2620) with media (2621) such as CDs / DVDs, thumb drives (2622), removable hard drives or solid state drives (2623), legacy magnetic media such as tapes and floppy disks (not shown), and specialized ROM / ASIC / PLD based devices such as security dongles (not shown).
[0187] Those skilled in the art will also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not include transmission media, carrier waves, or other transitory signals.
[0188] The computer system (2600) may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, optical. The networks may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks such as Ethernet, cellular networks including wireless LAN, GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, etc., vehicular and industrial including CANBus, etc. Certain networks typically require an external network interface adapter connected to a specific general-purpose data port or peripheral bus (2649) (e.g., a USB port on the computer system (2600)), while others are generally integrated into the core of the computer system (2600) by connecting 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) may communicate with other entities. Such communications may be unidirectional, receive only (e.g., television broadcast), unidirectional transmit only (e.g., from the CANbus to a particular CANbus device), or bidirectional, e.g., to other computer systems using local or wide area digital networks. As noted above, specific protocols and protocol stacks may be used with each of these networks and network interfaces.
[0189] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to the core (2640) of the computer system (2600).
[0190] 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 areas (FPGAs) (2643), and hardware accelerators (2644) for specific tasks, 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 devices (2647) such as internal hard drives, SSDs, etc. that are not accessible to the user. In some computer systems, the system bus (2648) may be 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). Peripheral bus architectures include PCI, USB, etc.
[0191] The CPU (2641), GPU (2642), FPGA (2643), and accelerator (2644) can execute certain instructions that, in combination, may constitute the aforementioned computer code. That computer code may be stored in a ROM (2645) or a RAM (2646). Persistent data may be stored, for example, in an internal mass storage device (2647), while transitory data may also be stored in the RAM (2646). Rapid storage and retrieval from any of the memory devices may be made possible through the use of cache memories closely associated with one or more of the CPUs (2641), GPUs (2642), mass storage devices (2647), ROMs (2645), RAMs (2646), and the like.
[0192] The computer-readable media can have computer code thereon for performing various computer-implemented operations. The media and computer code can be those specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those skilled in the computer software arts.
[0193] As an example, but not by way of limitation, a computer system (2600) having an architecture, and specifically a 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 can be the user-accessible mass storage devices introduced above, as well as media associated with a particular storage device of the core (2640) that is non-transitory in nature, such as a core internal mass storage device (2647) or a ROM (2645). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2640). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (2640) and specifically the processor therein (including a CPU, GPU, FPGA, etc.) to perform a particular process or a particular portion of a particular process described herein, including defining data structures stored in RAM (2646) and modifying such data structures according to a process defined by the software. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (2644)), which may operate in place of or in conjunction with software to perform particular processes or particular portions of particular processes described herein. Where appropriate, references to software may include logic, and vice versa. Where appropriate, references to computer-readable media may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software. Appendix A: Abbreviations JEM: Joint Exploration Model VVC: Versatile Video Coding BMS: Benchmark Set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplemental Extended Information VUI: Video Usability Information GOP: Group of Pictures TU: conversion unit PU: Prediction Unit CTU: Coding Tree Unit CTB: coding tree block PB: Predicted block HRD: Hypothetical Reference Decoder SNR: Signal to Noise Ratio CPU: Central Processing Unit GPU: Graphics Processing Unit CRT: cathode ray tube LCD: Liquid crystal display OLED: Organic Light Emitting Diode CD:Compact Disc DVD: Digital Video Disc ROM: Read-only memory RAM: Random Access Memory ASIC: Application Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile Communications LTE: Long Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Area SSD: Solid State Drive IC: Integrated Circuit CU: Coding Unit
[0194] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that are within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and are therefore within its spirit and scope. [Explanation of symbols]
[0195] 101 Samples 102 Arrow 103 Arrow 104 Block 201 Schematic diagram 300 Communication Systems 310 Terminal Equipment 320 Terminal Equipment 330 Terminal Equipment 350 Network 400 Communication Systems 401 Video Source 402 Video Picture Stream 403 Video Encoder 404 encoded video data 405 Streaming Server 406 Client Subsystem 407 Incoming Copy 410 Video Decoder 411 Video Picture 412 Display 413 Capture Subsystem 420 Electronic Devices 430 Electronic Devices 501 Channel 510 Video Decoder 512 Rendering Device 515 Buffer Memory 520 Entropy Decoder / Parser 521 Symbols 530 Electronic Devices 531 Receiver 551 Scaler / Descaler Unit 552 Intra-picture prediction unit 553 Motion Compensation Prediction Unit 555 Aggregator 556 Loop Filter Unit 557 Reference Picture Memory 558 Picture Buffer 601 Video Sources 603 Video Encoder 620 Electronic Devices 630 Source Coder 632 encoding engine 633 Local Decoder 634 Reference Picture Memory 635 Predictor 640 Transmitter 643 coded video sequence 645 Entropy Coder 550 Controller 660 Communication Channels 703 Video Encoder 721 General-purpose controller 722 Intra Encoder 723 Residual Calculator 724 Residual Encoder 725 Entropy Encoder 726 Switch 728 Residual Decoder 730 InterEncoder 810 Video Decoder 871 Entropy Decoder 872 Intra Decoder 873 Residual Decoder 874 Reconstruction Module 880 Interdecoder 900 QTBT Construction 901 Block 911 Block 912 Block 913 Block 914 Block 921 Block 922 Block 923 Block 924 Block 925 Block 926 Block 927 Block 928 Block 950 Root Node 961 nodes 962 nodes 963 nodes 964 nodes 971 nodes 972 nodes 973 nodes 974 nodes 975 nodes 976 nodes 977 nodes 978 nodes 981 nodes 982 nodes 983 nodes 984 nodes 985 nodes 986 nodes 991 nodes 992 nodes 1010 Block 1011 Subblock 1012 subblocks 1013 Subblock 1020 Block 1021 Subblock 1022 subblocks 1023 subblocks 2020 Top Adjacent Sample 2030 Upper right adjacent sample 2040 left adjacent samples 2050 Bottom Left Adjacent Samples 2120 Upper adjacent sample 2130 Upper Right Adjacent Sample 2140 Left Adjacent Samples 2150 Lower Left Adjacent Sample 2220 Upper adjacent sample 2230 Upper Right Adjacent Sample 2240 Left Adjacent Samples 2250 Lower Left Adjacent Samples 2320 Upper adjacent sample 2330 Upper Right Adjacent Sample 2340 Left Adjacent Samples 2350 Lower Left Adjacent Samples 2400 processes 2500 processes 2600 Computer Systems 2601 Keyboard 2602 Mouse 2603 Trackpad 2605 Joystick 2606 Mike 2607 Scanner 2608 Camera 2609 Speaker 2610 Touch Screen 2621 Medium 2622 Thumb Drive 2623 Solid State Drive 2640 cores 2643 Field Programmable Gate Area (FPGA) 2644 Accelerator 2645 Read-Only Memory (ROM) 2646 Random Access Memory 2647 Mass Storage 2648 System Bus 2649 Peripheral Bus
Claims
1. decoding prediction information of a current block from an encoded bitstream, the prediction information indicating a partition of the current block and indicating an index indicating a first intra-prediction mode in a first set of intra-prediction modes for a first partition of the current block; when the first partition has a non-square shape, replacing the first intra prediction mode with a second intra prediction mode in a second set of wide-angle intra prediction modes based on an aspect ratio of the first partition; decoding the current block according to the second intra-prediction mode; Including, if the aspect ratio of the first partition is 16, the number of intra prediction modes from the first set of intra prediction modes replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 2 through 15; if the aspect ratio of the first partition is 8, the number of intra prediction modes from the first set of intra prediction modes replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 2 to 13; if the aspect ratio of the first partition is 4, then the number of intra prediction modes from the first set of intra prediction modes replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 2 through 11; if the aspect ratio of the first partition is 2, then the number of intra prediction modes from the first set of intra prediction modes that are replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 2 to 7; if the aspect ratio of the first partition is ½, the number of intra prediction modes from the first set of intra prediction modes replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 61 to 66; when the aspect ratio of the first partition is ¼, the number of intra prediction modes from the first set of intra prediction modes replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 57 to 66; if the aspect ratio of the first partition is 1 / 8, the number of intra-prediction modes from the first set of intra-prediction modes replaced by the wide-angle intra-prediction mode in the second set is intra-prediction modes 55 to 66; or When the aspect ratio of the first partition is 1 / 16, the number of intra prediction modes from the first set of intra prediction modes replaced by the wide-angle intra prediction mode in the second set is intra prediction modes 53 to 66. A method for video decoding.
2. A method for decoding prediction information of a current block from an encoded bitstream, the prediction information indicating a partition of the current block and indicating an index indicating a first intra-prediction mode in a first set of intra-prediction modes for a first partition of the current block; when the first partition has a non-square shape, replacing the first intra prediction mode with a second intra prediction mode in a second set of wide-angle intra prediction modes based on an aspect ratio of the first partition; decoding the current block according to the second intra-prediction mode; Including, When an intra sub-partition (ISP) mode is on, the replacement of the first intra prediction mode with the second intra prediction mode is performed at a coding unit (CU) level; When the ISP mode is off, the substitution of the first intra prediction mode with the second intra prediction mode is performed at a transform unit (TU) level. A method for video decoding.
3. A method for decoding prediction information of a current block from an encoded bitstream, the prediction information indicating a partition of the current block and indicating an index indicating a first intra-prediction mode in a first set of intra-prediction modes for a first partition of the current block; when the first partition has a non-square shape, replacing the first intra prediction mode with a second intra prediction mode in a second set of wide-angle intra prediction modes based on an aspect ratio of the first partition; decoding the current block according to the second intra-prediction mode; Including, if the aspect ratio of the first partition is greater than an upper threshold defining a particular range, the intra-prediction modes from the first set of intra-prediction modes that are replaced by the wide-angle intra-prediction modes in the second set are intra-prediction modes 2 to 16. A method for video decoding.
4. A method for decoding prediction information of a current block from an encoded bitstream, the prediction information indicating a partition of the current block and indicating an index indicating a first intra-prediction mode in a first set of intra-prediction modes for a first partition of the current block; when the first partition has a non-square shape, replacing the first intra prediction mode with a second intra prediction mode in a second set of wide-angle intra prediction modes based on an aspect ratio of the first partition; decoding the current block according to the second intra-prediction mode; Including, if the aspect ratio of the first partition is less than a lower threshold defining a particular range, the intra-prediction mode from the first set of intra-prediction modes that is replaced by the wide-angle intra-prediction mode in the second set is intra-prediction mode 52 to 66. A method for video decoding.
5. 5. The method of claim 1, wherein if the aspect ratio of the first partition is within a certain range, the number of intra prediction modes from the first set of intra prediction modes that are replaced by the wide-angle intra prediction mode in the second set is a function of the aspect ratio.
6. 6. The method of claim 1, wherein the aspect ratio is one of: (i) height / width, (ii) width / height, (iii) max(height / width, width / height), or (iv) a function of height / width and / or width / height of the first partition.
7. 7. The method of claim 1, 2, or 6, wherein if the aspect ratio of the first partition is outside a certain range, the number of intra-prediction modes in the first set of intra-prediction modes that are replaced by a wide-angle intra-prediction mode in the second set of intra-prediction modes is fixed to a predefined number.
8. The method of claim 7 , wherein the predefined number is one of 15 or 16.
9. the first set of intra prediction modes includes angular prediction modes corresponding to angles within a range of 45° to −135° relative to a vertical direction; The method according to any one of claims 1 to 8, wherein the second set of intra prediction modes comprises at least one angular prediction mode corresponding to an angle outside the range of 45° to −135° with respect to the vertical direction.
10. if the aspect ratio of the first partition is equal to 16 or 1 / 16, the number of replaced intra-prediction modes in the first set of intra-prediction modes is 13; if the aspect ratio of the first partition is equal to 32 or 1 / 32, the number of replaced intra-prediction modes in the first set of intra-prediction modes is 14; 5. The method of claim 2, wherein if the aspect ratio of the first partition is equal to 64 or 1 / 64, the number of replaced intra-prediction modes in the first set of intra-prediction modes is 15.
11. determining, in response to determining that the size of the current block is Nx4 or Nx8, that the current block is to be split vertically; decoding a signal from the encoded bitstream indicating a number of sub-partitions into which to vertically partition the current block; 11. The method of any one of claims 1 to 10, further comprising:
12. Apparatus configured to carry out the method according to any one of claims 1 to 11.
13. A method for performing a method according to any one of claims 1 to 11, comprising: A program for
Citation Information
Patent Citations
Method and apparatus for prediction based on block shape
KR1020180107762A
Video and image coding with wide-angle intra prediction
WO2018127624A1