Method and apparatus for adjacent block availability in video coding

The method improves video coding efficiency by determining the availability and compatibility of adjacent blocks for prediction, enhancing compression performance through efficient utilization of prediction information.

JP7670612B2Active Publication Date: 2025-04-30TENCENT AMERICA LLC

Patent Information

Application Number
JP2021531405
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-04-25
Filing Date
2020-01-06
Publication Date
2025-04-30
Estimated Expiration
2040-01-06

AI Technical Summary

Technical Problem

Existing video coding techniques face challenges in efficiently utilizing adjacent block prediction information, particularly in determining the availability and compatibility of adjacent blocks for intra-block copy prediction modes, which affects coding efficiency and compression performance.

Method used

The proposed method involves a processing circuit that decodes prediction information for the current block and determines whether adjacent blocks use the same prediction mode. It inserts prediction information from adjacent blocks into the predictor list based on specific criteria such as slice, tile, and tile group alignment, as well as overlap conditions, to reconstruct the current block efficiently.

Benefits of technology

This approach enhances coding efficiency by effectively utilizing prediction information from adjacent blocks, improving compression performance and reducing redundancy in video encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007670612000001
    Figure 0007670612000001
  • Figure 0007670612000002
    Figure 0007670612000002
  • Figure 0007670612000003
    Figure 0007670612000003
Patent Text Reader

Abstract

Aspects of the present disclosure provide methods and apparatuses for video encoding / decoding. In some examples, the apparatus for video decoding includes a processing circuit. The processing circuit decodes prediction information for a current block in a current coded picture that is part of a coded video sequence. The prediction information indicates a first prediction mode to be used for the current block. The processing circuit determines whether a neighboring block that is adjacent to the current block and that was reconstructed before the current block uses the first prediction mode. Then, in response to determining that the neighboring block uses the first prediction mode, the processing circuit inserts the prediction information from the neighboring block into a predictor list of the first prediction mode. Finally, the processing circuit reconstructs the current block according to the predictor list of the first prediction mode.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] Incorporation by Reference This disclosure claims the benefit of priority to U.S. Patent Application No. 16 / 394,071, entitled "METHODS FOR NEIGHBORING BLOCK AVAILABILITY OF INTRA BLOCK COPY PREDICTION MODE," filed April 25, 2019, which in turn claims the benefit of priority to U.S. Provisional Application No. 62 / 704,053, entitled "METHODS FOR NEIGHBORING BLOCK AVAILABILITY OF INTRA BLOCK COPY PREDICTION MODE," filed February 6, 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 significant 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 or storage space requirements, sometimes by more than two orders of magnitude. Both lossless and lossy compression, as well as their combinations, 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. 1A, 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. 1A, a square block (104) of 4x4 samples is depicted at the top left (indicated by a dashed bold line). The square block (104) includes 16 samples, each labeled with "S", its position in the Y dimension (e.g., row index), and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Similarly, sample S44 is the fourth sample of the block (104) in both the Y and X dimensions. Since the size of the block is 4x4 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. 1B shows a schematic diagram (105) showing 65 intra prediction directions with 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.

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

[0019] In some video compression techniques, the MV applicable to a particular region of sample data can be predicted from other MVs, e.g., from an MV associated with another region of sample data that is spatially adjacent to the region being reconstructed and precedes that MV in the order of decoding. Doing so can significantly reduce the amount of data required to encode the MV, thus eliminating redundancy and improving compression ratios. For example, when encoding an input video signal derived from a camera (called natural video), MV prediction can work well because it is statistically more likely that a region larger than the region to which a single MV applies moves in the same direction, and therefore, in some cases, can be predicted using similar motion vectors derived from MVs of neighboring regions. As a result, the MV found in a particular region is similar or identical to the MV predicted from the surrounding MVs, and after entropy encoding, can be represented with fewer bits than would be used to directly encode the MV. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, the MV prediction itself can be lossy, e.g., due to rounding errors when computing a predictor from several surrounding MVs.

[0020] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). Among the many MV prediction mechanisms offered by H.265, the one described here is a technique hereafter referred to as "spatial merging".

[0021] Referring to FIG. 1C, the current block (111) may contain samples that the encoder found during the motion search process to be predictable from a previous block of the same size but spatially shifted. Instead of directly encoding its MV, the MV can be derived from metadata associated with one or more reference pictures, e.g., from the most recent (in decoding order) reference picture using the MV associated with one of five surrounding samples, denoted A0, A1, and B0, B1, B2 (112-116, respectively). In H.265, MV prediction can use predictors from the same reference picture that neighboring blocks use. Summary of the Invention [Means for solving the problem]

[0022] Aspects of the present disclosure provide a method and apparatus for video encoding / decoding. In some examples, an apparatus for video decoding includes a receiving circuit and a processing circuit.

[0023] The processing circuit is configured to decode prediction information of a current block in a current coded picture that is part of a coded video sequence. The prediction information indicates a first prediction mode used for the current block. The processing circuit determines whether a neighboring block that is adjacent to the current block and that is reconstructed before the current block uses the first prediction mode. Then, in response to the determination that the neighboring block uses the first prediction mode, the processing circuit inserts the prediction information from the neighboring block into a predictor list of the first prediction mode. Finally, the processing circuit reconstructs the current block according to the predictor list of the first prediction mode.

[0024] According to one aspect of the present disclosure, in response to determining that the neighboring block uses a second prediction mode different from the first prediction mode, the processing circuit is further configured to determine whether the second prediction mode is an intra-prediction mode. Then, in response to determining that the second prediction mode is not an intra-prediction mode, the processing circuit inserts prediction information from the neighboring block into a predictor list of the first prediction mode.

[0025] In one embodiment, the processing circuit determines whether the neighboring block is in the same slice as the current block. A slice is a group of blocks in raster scan order, where the group of blocks in a slice use the same prediction mode. In response to determining that the neighboring block is in the same slice as the current block, the processing circuit inserts prediction information from the neighboring block into a predictor list of a first prediction mode.

[0026] In one embodiment, the processing circuit determines whether the neighboring block is in the same tile or the same tile group as the current block. A tile is a region of a picture that is processed in parallel and independently. A tile group is a group of tiles, and the same header can be shared between groups of tiles. In response to determining that the neighboring block is in the same tile or the same tile group as the current block, the processing circuit inserts prediction information from the neighboring block into a predictor list of the first prediction mode.

[0027] In one embodiment, the processing circuit determines whether the neighboring block overlaps with the current block. In response to determining that the neighboring block does not overlap with the current block, the processing circuit inserts prediction information from the neighboring block into a predictor list for the first prediction mode.

[0028] In one embodiment, the first prediction mode includes at least one of an intra block copy prediction mode and an inter prediction mode.

[0029] In one embodiment, the prediction information from the neighboring block includes at least one of a block vector and a motion vector, where the block vector indicates an offset between the neighboring block and the current block and is used to predict the current block if the neighboring block is coded in an intra block copy prediction mode, and the motion vector is used to predict the current block if the neighboring block is coded in an inter prediction mode.

[0030] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer for video decoding, cause the computer to perform a method for video decoding.

[0031] 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]

[0032] [Figure 1A] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes. [Figure 1B] FIG. 2 is a diagram of an example intra-prediction direction. [Figure 1C] FIG. 2 is a schematic diagram of a current block and its surrounding spatial merge candidates in one example. [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Diagram 3] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 6] FIG. 4 is a block diagram of an encoder according to another embodiment. [Figure 7] FIG. 4 is a block diagram of a decoder according to another embodiment. [Figure 8] FIG. 13 is an exemplary diagram of intra block copy prediction modes according to one embodiment. [Figure 9A] FIG. 1 illustrates an exemplary update process for valid search ranges of intra block copy prediction modes, according to one embodiment. [Figure 9B] FIG. 1 illustrates an exemplary update process for valid search ranges of intra block copy prediction modes, according to one embodiment. [Figure 9C] FIG. 1 illustrates an exemplary update process for valid search ranges of intra block copy prediction modes, according to one embodiment. [Figure 9D] FIG. 1 illustrates an exemplary update process for valid search ranges of intra block copy prediction modes, according to one embodiment. [Figure 10] 1 is a flowchart outlining an exemplary process according to one embodiment of the present disclosure. [Figure 11] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0033] FIG. 2 shows a simplified block diagram of a communication system (200) according to an embodiment of the present disclosure. The communication system (200) includes, for example, a plurality of terminal devices that can communicate with each other via a network (250). For example, the communication system (200) includes a first pair of terminal devices (210) and (220) interconnected via the network (250). In the example of FIG. 2, the first pair of terminal devices (210) and (220) perform a one-way transmission of data. For example, the terminal device (210) can encode video data (e.g., a stream of video pictures captured by the terminal device (210)) for transmission to another terminal device (220) via the network (250). The encoded video data can be transmitted in the form of one or more encoded video bitstreams. The terminal device (220) can receive the encoded video data from the network (250), 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.

[0034] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) performing bidirectional transmission of encoded video data, such as may occur during a video conference. For the bidirectional transmission of data, in one example, each of the terminal devices (230) and (240) 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 (230) and (240) over the network (250). Each of the terminal devices (230) and (240) can also receive encoded video data transmitted by the other of the terminal devices (230) and (240), 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.

[0035] In the example of FIG. 2, the terminal devices (210), (220), (230), and (240) may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure 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 (250) represents any number of networks that convey encoded video data between the terminal devices (210), (220), (230), and (240), including, for example, wired (wired) and / or wireless communication networks. The communication network (250) 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 (250) may not be important to the operation of the present disclosure unless otherwise described herein below.

[0036] 3 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.

[0037] The streaming system may include a video source (301) and a capture subsystem (313) that may include, for example, a digital camera, creating, for example, a stream of uncompressed video pictures (302). In one example, the stream of video pictures (302) includes samples taken by a digital camera. The stream of video pictures (302), depicted with thick lines to emphasize the high data volume compared to the encoded video data (304) (or encoded video bitstream), may be processed by an electronic device (320) that includes a video encoder (303) coupled to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (304) (or encoded video bitstream (304)), depicted with thin lines to emphasize the lower data volume compared to the stream of video pictures (302), may be stored in a streaming server (305) for future use. One or more streaming client subsystems, such as the client subsystems (306) and (308) of FIG. 3, can access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) can include, for example, a video decoder (310) within an electronic device (330). The video decoder (310) decodes the incoming copy of the encoded video data (307) and creates an outgoing stream of video pictures (311) that can be rendered on a display (312) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (e.g., a video bitstream) 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 encoding standard under development is a non- Formally known as Versatile Video Coding (VVC), the disclosed subject matter may be used in the context of VVC.

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

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

[0040] The receiver (431) may receive one or more coded video sequences to be decoded by the video decoder (410), 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 (401), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (431) may receive the coded video data 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 (431) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (415) may be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter "parser (420)"). In certain applications, the buffer memory (415) is part of the video decoder (410). In others, it may be external to the video decoder (410) (not shown). There may also be a buffer memory (not shown) external to the video decoder (410) to combat network jitter, and another buffer memory (415) internal to the video decoder (410) to accommodate playout timing. When the receiver (431) is receiving data from a store / forward device of sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (415) may be needed 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 (410).

[0041] The video decoder (410) may include a parser (420) for reconstructing symbols (421) from the encoded video sequence. The categories of symbols include information used to manage the operation of the video decoder (410) and potentially information for controlling a rendering device such as a rendering device (412) (e.g., a display screen) that is not an integral part of the electronic device (430) but may be coupled to the electronic device (430) as shown in FIG. 4. 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 (420) 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 (420) 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 (420) can also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.

[0042] The parser (420) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (415) to produce symbols (421).

[0043] The reconstruction of the symbols (421) 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 (420). The flow of such subgroup control information between the parser (420) and the following units is not shown for clarity.

[0044] Beyond the functional blocks already mentioned, the video decoder (410) may be conceptually subdivided into a number of functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will 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:

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

[0046] In some cases, the output samples of the scaler / inverse transform (451) 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 (452). In some cases, the intra-picture prediction unit (452) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from a current picture buffer (458). The current picture buffer (458) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (455) adds, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451).

[0047] In other cases, the output samples of the scalar / inverse transform unit (451) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensated prediction unit (453) may access the reference picture memory (457) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (421) related to the block, these samples may be added by the aggregator (455) to the output of the scalar / inverse transform unit (451) (in this case referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (457) from which the motion compensated prediction unit (453) fetches the prediction samples may be controlled by motion vectors available to the motion compensated prediction unit (453) in the form of symbols (421), 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 (457) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.

[0048] The output samples of the aggregator (455) may be subject to various loop filtering techniques in the loop filter unit (456). 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 (456) as symbols (421) from the parser (420), but may also be responsive to meta-information obtained during decoding of previous (in decoding order) parts of the coded picture or coded video sequence, and to previously reconstructed and loop filtered sample values.

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

[0050] 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 (420)), the current picture buffer (458) becomes part of the reference picture memory (457), and a new current picture buffer can be reallocated before beginning reconstruction of the next coded picture.

[0051] The video decoder (410) 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 a particular tool from all tools available in the video compression technique or standard as the only tool 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.

[0052] In one embodiment, the receiver (431) 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 (410) 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.

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

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

[0055] The video source (501) may provide a source video sequence to be encoded by the video encoder (503) in the form of a digital video sample stream 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 (501) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as a number of 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.

[0056] According to one embodiment, the video encoder (503) can encode and compress pictures of a source video sequence into an encoded video sequence (543) in real-time or under any other time constraint required by the application. Enforcing an appropriate encoding rate is one function of the controller (550). In some embodiments, the controller (550) controls and is operatively coupled to other functional units as described below. For clarity, coupling is not shown. Parameters set by the controller (550) 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 (550) can be configured to have other appropriate functions related to the video encoder (503) optimized for a particular system design.

[0057] In some embodiments, the video encoder (503) is configured to operate in an encoding loop. As an oversimplified explanation, in one example, the encoding loop can include a source coder (530) (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 (533) embedded in the video encoder (503). The decoder (533) 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 (534). 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 (534) are also bit-accurate between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values ​​as the reference picture samples that the decoder "sees" when using the prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, e.g., due to channel errors) is also used in some related technologies.

[0058] The operation of the "local" decoder (533) may be the same as that of a "remote" decoder, such as the video decoder (410) already described in detail above in connection with Figure 4. However, with brief reference also to Figure 4, because symbols are available and the encoding / decoding of symbols into an encoded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415) and parser (420), may not be fully implemented in the local decoder (533).

[0059] 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.

[0060] In operation, in some examples, the source coder (530) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (532) 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.

[0061] The local video decoder (533) can decode the encoded video data of pictures that may be designated as reference pictures based on the symbols created by the source coder (530). The operation of the encoding engine (532) may advantageously be a lossy process. If the encoded video data can be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence may be a replica of the source video sequence, typically with some errors. The local video decoder (533) 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 (534). In this way, the video encoder (503) 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).

[0062] The predictor (535) may perform a prediction search for the coding engine (532). That is, for a new picture to be coded, the predictor (535) may search the reference picture memory (534) for sample data (as candidate reference pixel blocks) that may serve as suitable prediction references for the new picture, or for specific metadata, such as the reference picture's motion vectors, block shapes, etc. The predictor (535) 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 (535), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (534).

[0063] The controller (550) can manage the encoding operations of the source coder (530), including, for example, setting the parameters and subgroup parameters used to encode the video data.

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

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

[0066] The controller (550) can manage the operation of the video encoder (503). During encoding, the controller (550) 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:

[0067] 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.

[0068] 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.

[0069] Bidirectionally predicted pictures (B-pictures) may be those 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.

[0070] 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.

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

[0072] In one embodiment, the transmitter (540) can transmit additional data along with the encoded video. The source coder (530) 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.

[0073] 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.

[0074] 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.

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

[0076] 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.

[0077] 6 illustrates a video encoder (603) according to another embodiment of the present disclosure. The video encoder (603) 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 (603) is used in place of the video encoder (303) of the example of FIG. 3.

[0078] In an HEVC example, the video encoder (603) receives a matrix of sample values ​​for a processing block, such as a predictive block of 8x8 samples. The video encoder (603) 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 (603) 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 (603) 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 (603) includes other components, such as a mode decision module (not shown) for determining the mode of the processing block.

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

[0080] The inter-encoder (630) 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.

[0081] The intra encoder (622) 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 (622) also calculates intra prediction results (e.g., a prediction block) based on the intra prediction information and reference blocks in the same picture.

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

[0083] The residual calculator (623) is configured to calculate a difference (residual data) between the received block and a prediction result selected from the intra-encoder (622) or the inter-encoder (630). The residual encoder (624) operates on the residual data and is configured to encode the residual data to generate transform coefficients. In one example, the residual encoder (624) is configured to transform the residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform an inverse transform and generate decoded residual data. The decoded residual data can be used by the intra-encoder (622) and the inter-encoder (630) as appropriate. For example, the inter-encoder (630) may generate decoded blocks based on the decoded residual data and the inter-prediction information, and the intra-encoder (622) 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.

[0084] The entropy encoder (625) is configured to format the bitstream to include the encoded block. The entropy encoder (625) is configured to include various information according to an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (625) 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.

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

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

[0087] The entropy decoder (771) 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 (772) or the inter decoder (780), 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 (780), and if the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (772). The residual information may be subject to inverse quantization and is provided to the residual decoder (773).

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

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

[0090] The residual decoder (773) 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 (773) may also require certain control information (to include quantization parameters (QPs)), which may be provided by the entropy decoder (771) (this may be only a small amount of control information, so a data path is not shown).

[0091] The reconstruction module (774) is configured to combine, in the spatial domain, the residual output by the residual decoder (773) 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.

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

[0093] Generally, block-based compensation is based on a different picture. Such block-based compensation is sometimes called motion compensation. However, block compensation can be performed from previously reconstructed regions within the same picture. Such block compensation is sometimes called intra-picture block compensation, current picture referencing (CPR), or intra block copy (IBC).

[0094] In IBC prediction mode, in some embodiments, a displacement vector indicating an offset between a current block and a reference block in the same picture is called a block vector (BV). Note that the reference block is already reconstructed before the current block. Furthermore, in the case of parallel processing, reference regions that are on tile / slice boundaries or wavefront ladder shape boundaries may be excluded from being used as usable reference blocks. Due to these constraints, a block vector may differ from a motion vector, which can be any value (positive or negative in either the x or y direction) in motion compensation.

[0095] Figure 8 illustrates an embodiment of an intra block copy prediction mode according to one embodiment of the present disclosure. In Figure 8, a gray block indicates that the block has already been decoded, and a white block indicates that the block has not been decoded or is in the process of being decoded. Thus, in a current picture (800), a block vector (802) points from a current block (801) to a reference block (803). The current block (801) is being reconstructed, and the reference block (803) has already been reconstructed.

[0096] According to some embodiments, the coding of block vectors can be either explicit or implicit. In explicit mode, the difference between the block vector and the predictor of the block vector is signaled. In implicit mode, the block vector is reconstructed from the predictor of the block vector in a manner similar to the motion vector prediction in merge mode. The resolution of the block vector may be limited to integer positions in one embodiment, while in another embodiment it may be able to point to fractional positions.

[0097] According to some embodiments, the use of the IBC prediction mode at the block level can be signaled using either a block level flag (called the IBC flag) or a reference index. When using the reference index approach, the currently decoded picture is treated as a reference picture that is placed at the last position of the reference picture list. This reference picture can also be managed together with other temporal reference pictures in the decoded picture buffer (DPB).

[0098] In addition, there are several variations of the IBC prediction mode. In some examples, the reference block is flipped horizontally or vertically before being used to predict the current block, which may be referred to as an inverted IBC prediction mode. In other examples, each compensation unit in an MxN coding block is Mx1 or 1xN lines, which may be referred to as a line-based IBC prediction mode.

[0099] In the current VVC, the search range of the IBC prediction mode is limited within the current CTU. In some embodiments, the memory for storing reference samples in the IBC prediction mode is one CTU size (for example, four 64x64 regions). For example, the memory stores four 64x64 regions of samples, one 64x64 region of samples may be a currently reconstructed sample, and the other three 64x64 regions may be reference samples.

[0100] In some embodiments, the effective search range of the IBC prediction mode can be extended to some portion of the CTU to the left of the current CTU without changing memory (i.e., one CTU size for a 64x64 region). For example, an update process can be used with such an effective search range.

[0101] 9A-9D illustrate an embodiment of an update process using the effective search range of the IBC prediction mode (i.e., intra-picture block compensation) according to an embodiment of the present disclosure. The update process can be performed on a 64x64 luma sample basis for each of four 64x64 block regions in a CTU-sized memory, and the reference samples of the same region from the left CTU can be used to predict the coding blocks of the current CTU until any of the blocks of the same region of the current CTU are being coded or have been coded.

[0102] During this process, in some embodiments, the stored reference samples from the left CTU are updated with the reconstructed samples from the current CTU. In Figures 9A-9D, the grey blocks indicate already reconstructed blocks, the white blocks indicate unreconstructed blocks, and the block with vertical stripes and the text "Curr" indicates the current encoding / decoding block. Also, in each figure, the left four blocks (911)-(914) belong to the left CTU (910), and the right four blocks (901)-(904) belong to the current CTU (900).

[0103] Note that all four blocks (911)-(914) of the left CTU (910) have already been reconstructed, so the memory first stores all four of these blocks of reference samples from the left CTU (910), and then updates the blocks of reference samples from the left CTU (910) with the current blocks in the same region from the current CTU (900).

[0104] For example, in Figure 9A, a current block (901) in a current CTU (900) is being reconstructed, and the co-located block in the left CTU (910) of the current block (901) is block (911). The co-located block (911) is in the same region of the left CTU (910) as the current block (901) is located in the current CTU (900). As such, the memory area that stores the reference sample for the co-located block (911) is updated to store the reconstructed sample for the current block (901), and the co-located block (911) in Figure 9A is marked with an "X" to indicate that the reference sample for the co-located block (911) is not stored in memory.

[0105] Similarly, in Figure 9B, a current block (902) in a current CTU (900) is being reconstructed, and the co-located block in the CTU (910) to the left of the current block (902) is block (912). The co-located block (912) is in the same area of ​​the left CTU (910) as the current block (902) is located in the current CTU (900). Thus, the memory area that stores the reference sample for the co-located block (912) is updated to store the reconstructed sample for the current block (902), and the co-located block (912) in Figure 9B is marked with an "X" to indicate that the reference sample for the co-located block (912) is not stored in memory.

[0106] In Figure 9C, a current block (903) in a current CTU (900) is being reconstructed, and the co-located block in the CTU (910) to the left of the current block (903) is block (913). The co-located block (913) is in the same area of ​​the left CTU (910) as the current block (903) is located in the current CTU (900). Thus, the memory area that stores the reference sample for the co-located block (913) is updated to store the reconstructed sample for the current block (903), and the co-located block (913) in Figure 9C is marked with an "X" to indicate that the reference sample for the co-located block (913) is not stored in memory.

[0107] In Figure 9D, a current block (904) in a current CTU (900) is being reconstructed, and the co-located block in the CTU (910) to the left of the current block (904) is block (914). The co-located block (914) is in the same region of the left CTU (910) as the current block (904) is located in the current CTU (900). Thus, the memory area that stores the reference sample for the co-located block (914) is updated to store the reconstructed sample for the current block (904), and the co-located block (914) in Figure 9C is marked with an "X" to indicate that the reference sample for the co-located block (914) is not stored in memory.

[0108] According to some embodiments, in intra prediction modes, a neighboring block can be used as a predictor of the current coding block if it exists and has been reconstructed before the current coding block. In some embodiments, in inter prediction modes, a neighboring block can be used as a predictor of the current coding block if it exists and has not been coded in an intra prediction mode, except that it has already been reconstructed before the current coding block.

[0109] However, when the intra block copy prediction mode is included and is considered as a separate mode different from the intra prediction mode or the inter prediction mode, the availability of neighboring blocks becomes more complicated, so it is necessary to develop a suitable method for checking the availability of neighboring blocks. In this regard, the embodiments of the present disclosure present a method for efficiently checking the availability of neighboring blocks for a current coding block.

[0110] When the block vector predictor list (either in the case of a merge list or in the case of block vector differential encoding) for the IBC prediction mode is constructed separately from the motion vector predictor list (either in the case of a merge list or in the case of motion vector differential encoding), in some embodiments, a uniform neighbor availability check condition is used to determine whether related information of a neighboring block can be used as a predictor for the current encoding block.

[0111] According to some embodiments, neighboring blocks can be used to predict the current block if they are coded in the same prediction mode as the current block.

[0112] In one embodiment, if the current block is coded in an IBC prediction mode, the current block can be predicted using neighboring blocks coded in an IBC prediction mode. When the neighboring blocks are determined to be available (as specified in more detail below), prediction information (such as block vectors) from the neighboring blocks is included in the predictor list of the IBC prediction mode.

[0113] In another embodiment, if the current block is coded in an inter prediction mode, the current block can be predicted using neighboring blocks coded in an inter prediction mode. When the neighboring blocks are determined to be available (specified in more detail below), prediction information (such as motion vectors, reference indexes, prediction directions, etc.) from the neighboring blocks are included in the predictor list of the inter prediction mode.

[0114] In another embodiment, if the current block is coded in an intra-prediction mode, the current block can be predicted using a neighboring block coded in an intra-prediction mode. When the neighboring block is determined to be available (as specified in more detail below), the prediction information from the neighboring block is included in the predictor list of the intra-prediction mode.

[0115] In some embodiments, the determination of the availability of a neighboring block may be divided into two steps. The first step includes checking the decoding order. In one example, if the neighboring block is in a different slice, tile, or tile group compared to the current block, the neighboring block is determined to be unavailable to predict the current block. A slice may be a group of blocks in raster scan order, and a group of blocks within a slice may use the same prediction mode. A tile may be a region of a picture, and may be processed independently in parallel. A tile group may be a group of tiles, and may share the same header between the group of tiles. In another example, if the neighboring block is not reconstructed before the current block, the neighboring block is determined to be unavailable to predict the current block.

[0116] After the first step is completed (e.g., after the neighboring block is determined to be available in terms of decoding order), a second step is applied to the neighboring block to check the prediction availability of the neighboring block. In one example, if the neighboring block overlaps with the current block (e.g., the neighboring block is not completely constructed before the current block, at least one sample of the neighboring block is not constructed before the current block), the neighboring block is determined to be unavailable for prediction of the current block. In another example, if the neighboring block is coded in a different prediction mode from the current block, the neighboring block is determined to be unavailable for prediction of the current block.

[0117] According to some embodiments, if a neighboring block is coded in IBC prediction mode and the current block is coded in inter prediction mode, the neighboring block can be used to predict the current block.

[0118] According to some embodiments, if a neighboring block is coded in an inter prediction mode and the current block is coded in an IBC prediction mode, the neighboring block can be used to predict the current block.

[0119] In both of the above determinations, according to some embodiments, the neighboring block is checked whether it is coded in an intra prediction mode. If the neighboring block is coded in an intra prediction mode, it is determined that the neighboring block is not available to predict the current block. In addition, some other conditions of the neighboring block are also checked (e.g., the decoding order of the neighboring block). In one example, if the neighboring block is in a different slice, tile, or tile group compared to the current block, it is determined that the neighboring block is not available to predict the current block. A slice may be a group of blocks in a raster scan order, and a group of blocks within a slice may use the same prediction mode. A tile may be an area of ​​a picture and may be processed independently in parallel. A tile group may be a group of tiles, and may share the same header between the group of tiles. In another example, if the neighboring block is not reconstructed before the current block, it is determined that the neighboring block is not available to predict the current block. In another example, if the neighboring block overlaps with the current block, it is determined that the neighboring block is not available to predict the current block. In another example, if a neighboring block is coded in a different prediction mode than the current block, the neighboring block is determined to be unavailable for predicting the current block.

[0120] In addition to the method for checking the availability of neighboring blocks as predictors for the current block, embodiments of the present disclosure include a method for determining a boundary strength of a deblocking filter used to reconstruct the current block in IBC prediction mode. When the current block is being reconstructed, a deblocking filter can be used to improve visual quality and prediction performance by smoothing sharp edges of boundaries between decoded blocks, and the boundary strength is used to indicate the strength level that the deblocking filter will use. In one embodiment, a strength level of "0" can indicate that a deblocking filter is not performed, and a strength level of "1" can indicate that a deblocking filter is performed. In another embodiment, three or more strength levels are used, for example, a low strength level, a medium strength level, and a high strength level. By performing the deblocking filter at different strength levels, the current block can have different visual qualities.

[0121] In the IBC prediction mode, the luma and chroma components are coded in separate coding tree structures. The chroma CU can operate in a sub-block mode. For example, the sub-blocks of the chroma CU can be derived from the luma positions at the same location of the sub-block, and therefore different sub-blocks can have different block vectors. Therefore, according to an embodiment of the present disclosure, several methods can be used to determine the boundary strength of the deblocking filter when the deblocking filter is performed on the chroma CU.

[0122] According to some embodiments, the deblocking filter is performed at the subblock boundary of the chroma CU, and the boundary strength (BS) at the subblock boundary is determined by evaluating the difference of the chroma block vectors of the two coded subblocks associated with the subblock boundary. In one embodiment, the deblocking filter is performed if the absolute value of the difference of the horizontal component (or vertical component) of the respective block vectors is equal to or greater than 1 in integer luma sample units (or equivalently, 4 in quarter luma sample units). Otherwise, the deblocking filter is not performed.

[0123] According to some embodiments, the deblocking filter is performed on the subblock boundaries of the chroma CU or on the 4x4 block boundaries, whichever is larger. In one embodiment, if the subblock size of the chroma CU is 2x2 in size, the deblocking filter is not performed on some 2x2 subblock boundaries, but instead on each of the 4x4 grid boundaries. For these 4x4 boundaries, the boundary strength (BS) at the boundary can be determined by evaluating the difference between the respective block vectors of the two coding subblocks associated with the subblock boundary. If the absolute difference between the horizontal (or vertical) components of the respective block vectors is 1 or more in units of integer luma samples (or another equivalent expression: 4 in units of ¼ luma samples), the deblocking filter is performed. Otherwise, the deblocking filter is not performed.

[0124] FIG. 10 shows a flow chart outlining an exemplary process (1000) according to one embodiment of the present disclosure. The process (1000) can be used for reconstruction of blocks coded in a prediction mode (inter / intra / IBC, etc.) to generate a prediction block of the block being reconstructed. In various embodiments, the process (1000) is performed by processing circuits such as the processing circuits of the terminal devices (210), (220), (230) and (240), the processing circuits performing the functions of the video encoder (303), the processing circuits performing the functions of the video decoder (310), the processing circuits performing the functions of the video decoder (410), the processing circuits performing the functions of the intra prediction module (452), the processing circuits performing the functions of the video encoder (503), the processing circuits performing the functions of the predictor (535), the processing circuits performing the functions of the intra encoder (622), and the processing circuits performing the functions of the intra decoder (772). In some embodiments, the process (1000) is implemented with software instructions, such that the processing circuitry performs the process (1000) when the processing circuitry executes the software instructions.

[0125] The process (1000) may generally begin at step (S1010), where the process (1000) decodes prediction information for a current block in a current coded picture that is part of a coded video sequence. The prediction information indicates that a first prediction mode is used for the current block. The first prediction mode may be one of an intra, inter, or IBC prediction mode.

[0126] The process (1000) proceeds to step (S1020), where the process (1000) determines whether a neighboring block that is adjacent to the current block and that is reconstructed before the current block uses the first prediction mode.

[0127] The process (1000) proceeds to step (S1030), where in response to determining that the neighboring block uses the first prediction mode, the process (1000) inserts prediction information from the neighboring block into a predictor list of the first prediction mode.

[0128] The process (1000) proceeds to step (S1040), where the process (1000) reconstructs the current block according to the predictor list of the first prediction mode.

[0129] After reconstructing the current block, the process (1000) ends.

[0130] 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 11 illustrates a computer system (1100) suitable for implementing certain embodiments of the disclosed subject matter.

[0131] 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.

[0132] 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.

[0133] 11 for computer system (1100) 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 computer system (1100).

[0134] The computer system (1100) 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.).

[0135] The input human interface devices may include one or more (only one of each is depicted) of a keyboard (1101), a mouse (1102), a trackpad (1103), a touch screen (1110), a data glove (not shown), a joystick (1105), a microphone (1106), a scanner (1107), and a camera (1108).

[0136] The computer system (1100) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the senses of a human user, 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 (1110), data gloves (not shown), or joystick (1105), although there may also be haptic feedback devices that do not function as input devices), audio output devices (speakers (1109), headphones (not shown), etc.), visual output devices (screens (1110), including CRT screens, LCD screens, plasma screens, OLED screens, etc., each with or without touch screen input capabilities and with or without haptic feedback capabilities, 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).

[0137] The computer system (1100) may also include human-accessible storage and its associated media, such as optical media, including CD / DVD ROM / RW (1120) with media (1121) such as CDs / DVDs, thumb drives (1122), removable hard drives or solid state drives (1123), legacy magnetic media such as tapes and floppy disks (not shown), and specialized ROM / ASIC / PLD based devices such as security dongles (not shown).

[0138] 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.

[0139] The computer system (1100) 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 (1149) (e.g., the USB port (1100) of the computer system), while others are generally integrated into the core of the computer system (1100) 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 (1100) 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.

[0140] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to the core (1140) of the computer system (1100).

[0141] The cores (1140) may include one or more central processing units (CPUs) (1141), graphics processing units (GPUs) (1142), specialized programmable processing units in the form of field programmable gate areas (FPGAs) (1143), hardware accelerators for specific tasks (1144), and the like. These devices may be connected via a system bus (1148) along with read only memory (ROM) (1145), random access memory (1146), internal mass storage devices (1147) such as internal hard drives, SSDs, etc. that are not user accessible. In some computer systems, the system bus (1148) 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 (1148) or via a peripheral bus (1149). Peripheral bus architectures include PCI, USB, etc.

[0142] The CPU (1141), GPU (1142), FPGA (1143), and accelerator (1144) can execute certain instructions that, in combination, may constitute the aforementioned computer code. That computer code may be stored in a ROM (1145) or a RAM (1146). Persistent data may be stored, for example, in an internal mass storage device (1147), while transient data may also be stored in the RAM (1146). 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 CPU (1141), GPU (1142), mass storage device (1147), ROM (1145), RAM (1146), etc.

[0143] 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.

[0144] As an example, but not by way of limitation, a computer system having the architecture (1100), and specifically the core (1140), 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 specific storage of the core (1140) of a non-transitory nature, such as the core internal mass storage (1147) or ROM (1145). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1140). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (1140) and specifically the processor therein (including a CPU, GPU, FPGA, etc.) to perform certain processes or certain portions of certain processes described herein, including defining data structures stored in RAM (1146) and modifying such data structures according to processes 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 (1144)), 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.

[0145] 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.

[0146] (1) A method for video decoding in a decoder includes the steps of: decoding prediction information for a current block in a current coded picture that is part of a coded video sequence, the prediction information indicating a first prediction mode used for the current block; determining whether a neighboring block that is neighboring the current block and that was reconstructed before the current block uses the first prediction mode; in response to a determination that the neighboring block uses the first prediction mode, inserting the prediction information from the neighboring block into a predictor list of the first prediction mode; and reconstructing the current block according to the predictor list of the first prediction mode.

[0147] (2) The method of feature (1) further includes, in response to a determination that the neighboring block uses a second prediction mode different from the first prediction mode, determining whether the second prediction mode is an intra prediction mode, and, in response to a determination that the second prediction mode is not an intra prediction mode, inserting prediction information from the neighboring block into a predictor list of the first prediction mode.

[0148] (3) The method of feature (1) further includes a step of determining whether the neighboring block is in the same slice as the current block, where a slice is a group of blocks in raster scan order, and where the group of blocks within a slice use the same prediction mode, and in response to a determination that the neighboring block is in the same slice as the current block, inserting prediction information from the neighboring block into a predictor list of the first prediction mode.

[0149] (4) The method of feature (1) further includes a step of determining whether the neighboring block is in the same tile or in the same tile group as the current block, where a tile is a region of a picture and is processed in parallel and independently, and a tile group is a group of tiles and shares the same header among the groups of tiles, and in response to a determination that the neighboring block is in the same tile or in the same tile group as the current block, inserting prediction information from the neighboring block into a predictor list of the first prediction mode.

[0150] (5) The method of feature (1) further includes determining whether the neighboring block overlaps with the current block and, in response to a determination that the neighboring block does not overlap with the current block, inserting prediction information from the neighboring block into a predictor list for the first prediction mode.

[0151] (6) The method of feature (1), wherein the first prediction mode includes at least one of an intra block copy prediction mode and an inter prediction mode.

[0152] (7) The method of feature (6), wherein the prediction information from the neighboring block includes at least one of a block vector and a motion vector, the block vector indicating an offset between the neighboring block and the current block and used to predict the current block if the neighboring block is coded in an intra block copy prediction mode, and the motion vector being used to predict the current block if the neighboring block is coded in an inter prediction mode.

[0153] (8) An apparatus including a processing circuit, the processing circuit being configured to decode prediction information for a current block in a current coded picture that is part of an coded video sequence, the prediction information indicating a first prediction mode used for the current block, determine whether a neighboring block that is neighboring the current block and that was reconstructed before the current block uses the first prediction mode, and in response to a determination that the neighboring block uses the first prediction mode, insert the prediction information from the neighboring block into a predictor list of the first prediction mode, and reconstruct the current block in accordance with the predictor list of the first prediction mode.

[0154] (9) The apparatus of feature (8), wherein the processing circuitry is further configured to, in response to a determination that the neighboring block uses a second prediction mode different from the first prediction mode, determine whether the second prediction mode is an intra prediction mode, and, in response to a determination that the second prediction mode is not an intra prediction mode, insert prediction information from the neighboring block into a predictor list of the first prediction mode.

[0155] (10) The apparatus of feature (8), wherein the processing circuitry is further configured to determine whether the neighboring block is in a same slice as the current block, where a slice is a group of blocks in raster scan order, where a group of blocks within a slice uses the same prediction mode, and in response to a determination that the neighboring block is in the same slice as the current block, insert prediction information from the neighboring block into a predictor list for the first prediction mode.

[0156] (11) The apparatus of feature (8), wherein the processing circuitry is further configured to determine whether the neighboring block is in the same tile or in the same tile group as the current block, where a tile is a region of a picture and is processed in parallel and independently, and a tile group is a group of tiles and shares the same header among the groups of tiles, and in response to determining that the neighboring block is in the same tile or in the same tile group as the current block, insert prediction information from the neighboring block into a predictor list for the first prediction mode.

[0157] (12) The apparatus of feature (8), wherein the processing circuitry is further configured to determine whether the neighboring block overlaps with the current block and, in response to a determination that the neighboring block does not overlap with the current block, insert prediction information from the neighboring block into a predictor list for the first prediction mode.

[0158] (13) The device of feature (8), wherein the first prediction mode includes at least one of an intra block copy prediction mode and an inter prediction mode.

[0159] (14) The apparatus of feature (13), wherein the prediction information from the neighboring block includes at least one of a block vector and a motion vector, the block vector indicating an offset between the neighboring block and the current block and used to predict the current block if the neighboring block is coded in an intra block copy prediction mode, and the motion vector being used to predict the current block if the neighboring block is coded in an inter prediction mode.

[0160] (15) A non-transitory computer-readable storage medium storing a program executable by at least one processor, the program performing the steps of: decoding prediction information of a current block in a current coded picture that is part of an coded video sequence, the prediction information indicating a first prediction mode used for the current block; determining whether a neighboring block that is neighboring the current block and that was reconstructed before the current block uses the first prediction mode; in response to a determination that the neighboring block uses the first prediction mode, inserting the prediction information from the neighboring block into a predictor list of the first prediction mode; and reconstructing the current block according to the predictor list of the first prediction mode.

[0161] (16) The non-transitory computer-readable storage medium of feature (15), wherein the storing program further performs the steps of: in response to a determination that the neighboring block uses a second prediction mode different from the first prediction mode, determining whether the second prediction mode is an intra prediction mode; and in response to a determination that the second prediction mode is not an intra prediction mode, inserting prediction information from the neighboring block into a predictor list of the first prediction mode.

[0162] (17) The non-transitory computer-readable storage medium of feature (15), wherein the storing program further performs the steps of determining whether the neighboring block is in a same slice as the current block, where a slice is a group of blocks in raster scan order, where the group of blocks within a slice use the same prediction mode, and in response to determining that the neighboring block is in the same slice as the current block, inserting prediction information from the neighboring block into a predictor list of the first prediction mode.

[0163] (18) The non-transitory computer-readable storage medium of feature (15), wherein the storing program further performs the steps of determining whether the neighboring block is in the same tile or in the same tile group as the current block, where a tile is a region of a picture and is processed in parallel and independently, and a tile group is a group of tiles and shares the same header, and in response to determining that the neighboring block is in the same tile or in the same tile group as the current block, inserting prediction information from the neighboring block into a predictor list for the first prediction mode.

[0164] (19) The non-transitory computer-readable storage medium of feature (15), wherein the storing program further performs the steps of determining whether the neighboring block overlaps with the current block, and in response to a determination that the neighboring block does not overlap with the current block, inserting prediction information from the neighboring block into a predictor list for the first prediction mode.

[0165] (20) The non-transitory computer-readable storage medium of feature (15), wherein the first prediction mode includes at least one of an intra block copy prediction mode and an inter prediction mode. Appendix A: Abbreviations AMVP: Advanced Motion Vector Prediction ASIC: Application Specific Integrated Circuit BMS: Benchmark Set BV: Block Vector CANBus: Controller Area Network Bus CD:Compact Disc CPR: Current Picture Reference CPU: Central Processing Unit CRT: cathode ray tube CTB: coding tree block CTU: Coding Tree Unit CU: Coding Unit DPB: Decoder Picture Buffer DVD: Digital Video Disc FPGA: Field Programmable Gate Area GOP: Group of Pictures GPU: Graphics Processing Unit GSM: Global System for Mobile Communications HEVC: High Efficiency Video Coding HRD: Hypothetical Reference Decoder IBC: Intrablock copy IC: Integrated Circuit JEM: Joint Exploration Model LAN: Local Area Network LCD: Liquid crystal display LTE: Long term evolution MV: Motion Vector OLED: Organic Light Emitting Diode PB: Predicted block PCI: Peripheral Component Interconnect PLD: Programmable Logic Device PU: Prediction Unit RAM: Random Access Memory ROM: Read-Only Memory SCC: Screen Content Coding SEI: Supplemental Extended Information SNR: Signal to Noise Ratio SSD: Solid State Drive TU: conversion unit USB: Universal Serial Bus VUI: Video Usability Information VVC: Versatile Video Coding [Explanation of symbols]

[0166] 101 Samples 102 Arrow 103 Arrow 104 Block 105 Schematic diagram 111 Block 200 Communication Systems 210 Terminal Equipment 220 Terminal Equipment 230 Terminal Equipment 250 Network 301 Video Source 302 Video Picture Stream 303 Video Encoder 304 Encoded Video Data 305 Streaming Server 306 Client Subsystem 307 Incoming Copy 310 Video Decoder 311 Video Picture 312 Display 313 Capture Subsystem 320 Electronic Devices 330 Electronic Devices 401 Channel 410 Video Decoder 412 Rendering Device 415 Buffer Memory 420 Entropy Decoder / Parser 421 Symbols 430 Electronic Devices 431 Receiver 451 Scaler / Descaler Unit 452 Intra-picture Prediction Unit 453 Motion Compensation Prediction Unit 455 Aggregator 456 Loop Filter Unit 457 Reference Picture Memory 458 Picture Buffer 501 Video Sources 503 Video Encoder 520 Electronic Devices 530 Source Coder 532 encoding engine 533 Local Decoder 534 Reference Picture Memory 535 Predictor 540 Transmitter 543 coded video sequence 545 Entropy Coder 550 Controller 560 Communication Channels 603 Video Encoder 621 General-purpose controller 622 Intra Encoder 623 Residual Calculator 624 Residual Encoder 625 Entropy Encoder 626 Switch 628 Residual Decoder 630 InterEncoder 710 Video Decoder 771 Entropy Decoder 772 Intra Decoder 773 Residual Decoder 774 Reconstruction Module 780 Inter Decoder 800 Current Picture 801 Current Block 802 Block Vector 803 Reference Block 900 Coding Tree Units (CTU) 901 Current Block 902 Current Block 903 Current Block 904 Current Block 910 Coding Tree Unit (CTU) 911 Blocks in the same location 912 Co-located Blocks 913 Co-located Blocks 914 Co-located Blocks 1000 processes 1100 Computer Systems 1101 Keyboard 1102 Mouse 1103 Trackpad 1105 Joystick 1106 Mike 1107 Scanner 1108 Camera 1109 Speaker 1110 Touch Screen 1121 Medium 1122 Thumb Drive 1123 Solid State Drive 1140 cores 1143 Field Programmable Gate Area (FPGA) 1144 Accelerator 1145 Read-Only Memory (ROM) 1146 Random Access Memory 1147 Mass storage 1148 System Bus 1149 Peripheral Bus

Claims

1. 1. A method for video decoding performed by a decoder, comprising: decoding first prediction information indicating a first prediction mode to be used for a current block in a current coded picture that is part of a coded video sequence, the first prediction mode being one of an intra block copy prediction mode and an inter prediction mode; determining whether a neighboring block adjacent to the current block and reconstructed before the current block uses an intra prediction mode; In response to (i) a determination that the neighboring block does not use the intra prediction mode, and then (ii) a determination that the neighboring block uses a second prediction mode different from the current block, and (iii) a determination that the neighboring block is in at least one of a same slice, a same tile, or a same tile group as the current block, inserting second prediction information from the neighboring block into a predictor list of the first prediction mode; reconstructing the current block according to the predictor list of the first prediction mode; Including, The second prediction information decoded from the neighboring block includes a block vector when the second prediction mode is an intra block copy prediction mode, and includes a motion vector when the second prediction mode is an inter prediction mode. method.

2. determining whether the neighboring block is in the same slice as the current block, the slice being a group of blocks in raster scan order, the group of blocks within the slice using the same prediction mode; The method of claim 1, further comprising:

3. determining whether the neighboring block is in the same tile or in the same tile group as the current block, where the tile is a region of the picture and is processed in parallel and independently, and the tile group is a group of tiles and shares the same header between the groups of tiles; 3. The method of claim 1 or 2, further comprising:

4. determining whether the neighboring block overlaps with the current block; in response to determining that the neighboring block does not overlap with the current block, inserting the second prediction information into the predictor list of the first prediction mode; 4. The method of claim 1, further comprising:

5. decoding first prediction information indicating a first prediction mode to be used for a current block in a current coded picture that is part of a coded video sequence, the first prediction mode being one of an intra block copy prediction mode and an inter prediction mode; determining whether a neighboring block adjacent to the current block and reconstructed before the current block uses an intra prediction mode; In response to (i) a determination that the neighboring block does not use the intra prediction mode, and then (ii) a determination that the neighboring block uses a second prediction mode different from the current block, and (iii) a determination that the neighboring block is in at least one of a same slice, a same tile, or a same tile group as the current block, inserting second prediction information from the neighboring block into a predictor list of the first prediction mode; a processing circuit configured to reconstruct the current block according to the predictor list of the first prediction mode; The second prediction information decoded from the neighboring block includes a block vector when the second prediction mode is an intra block copy prediction mode, and includes a motion vector when the second prediction mode is an inter prediction mode. Device.

6. The processing circuitry includes:

6. The apparatus of claim 5, further configured to determine whether the neighboring block is in a same slice as the current block, the slice being a group of blocks in raster scan order, and the group of blocks within the slice using a same prediction mode.

7. 7. The apparatus of claim 5 or 6, wherein the processing circuitry is further configured to determine whether the neighboring block is in the same tile or in the same tile group as the current block, a tile being a region of the picture and being processed in parallel and independently, a tile group being a group of tiles, and sharing the same header between the groups of tiles.

8. The processing circuitry includes: determining whether the neighboring block overlaps with the current block; 8. The apparatus of claim 5, further configured to: insert the second prediction information into the predictor list of the first prediction mode in response to determining that the neighboring block does not overlap with the current block.

9. A program for causing at least one processor to carry out the method according to any one of claims 1 to 4.

Citation Information

Patent Citations

  • Intra-block copy-merge mode and padding for ibc reference regions not available

    JP2018530249A

  • Advanced Coding Techniques For High Efficiency Video Coding (HEVC) Screen Content Coding (SCC) Extensions

    US20160373756A1

Cited By

  • Method and apparatus for neighboring block availability in video coding

    JP2023111920A