Method and apparatus for intrablock copy mode coding using search range switching
Intra-block copy coding with search range switching optimizes video coding efficiency by using reconstructed blocks within the same frame for prediction, addressing inefficiencies in intra-prediction and improving compression ratios.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2026-03-06
- Publication Date
- 2026-06-16
AI Technical Summary
Existing video coding techniques face inefficiencies in intra-prediction modes, particularly in intra-block copy coding, leading to suboptimal compression ratios and increased bit usage for less likely prediction directions.
Intra-block copy coding mode with search range switching, utilizing reconstructed blocks within the same frame to predict current blocks, optimizing prediction directions and reducing bit usage by leveraging intra-prediction techniques like intra-block copy (IBC) and motion vector prediction.
Enhances video coding efficiency by reducing redundancy and improving compression ratios through optimized intra-prediction, specifically addressing inefficiencies in intra-block copy coding.
Smart Images

Figure 2026097969000001_ABST
Abstract
Description
Technical Field
[0001] Cross - reference to Related Applications This application claims the benefit of priority based on U.S. Non - Provisional Patent Application No. 17 / 704,948, filed on Mar. 25, 2022, which claims the benefit of priority based on U.S. Provisional Patent Application No. 63 / 245,665, entitled "Method and Apparatus for Intra Block Copy (IntraBC) Mode Coding with Search Range Switching", filed on Sep. 17, 2021. Both of the prior patent applications are hereby incorporated by reference in their entirety.
[0002] The present disclosure generally relates to video coding, and more particularly to intra - block copy coding mode.
Background Art
[0003] The description of the background art provided herein is for the purpose of generally presenting the context of the present disclosure. The inventors' research is not admitted as prior art to the present disclosure, either explicitly or implicitly, insofar as that research is described in this background art section and in aspects of the description that may not be considered prior art at the time of filing of the present application.
[0004] Video coding and decoding can be performed using interpicture prediction with motion compensation. Uncompressed digital video can contain a series of pictures, each picture having spatial dimensions of, for example, 1920×1080 luminance samples and associated fully sampled or subsampled color difference samples. The series of pictures can have a fixed or variable picture rate (also called frame rate), for example, 60 pictures per second or 60 frames per second. Uncompressed video has specific bitrate requirements for streaming or data processing. For example, video with a pixel resolution of 1920×1080, a frame rate of 60 frames / second, and 4:2:0 chroma subsampling with 8 bits per pixel per color channel requires a bandwidth of nearly 1.5 Gbit / s. One hour of such video requires more than 600 GByte of storage space.
[0005] One purpose of video coding and decoding may be to reduce the redundancy of uncompressed input video signals through compression. Compression can help reduce the aforementioned bandwidth and / or storage space requirements by more than two orders of magnitude, in some cases. Both lossless and lossy compression, and combinations thereof, can be used. Lossless compression refers to a technique in which an exact copy of the original signal can be reconstructed from the compressed original signal by the decoding process. Lossy compression refers to a coding / decoding process in which the original video information is not fully preserved during coding and cannot be fully recovered during decoding. When 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, with some information loss, to make the reconstructed signal useful for its intended purpose. In the case of video, lossy compression is widely adopted in many applications. The amount of distortion that can be tolerated depends on the application. For example, users of certain consumer video streaming applications may tolerate higher distortion than users of film or television broadcast applications. The compression ratio achievable by a particular coding algorithm can be selected or adjusted to reflect varying distortion tolerances. In other words, generally speaking, the higher the distortion tolerance, the more possible coding algorithms are that result in higher loss and higher compression ratios.
[0006] Video encoders and video decoders can utilize techniques from several broad categories and steps, including, for example, motion compensation, Fourier transform, quantization, and entropy coding.
[0007] Video codec techniques may include a technique known as intra-coding. In intra-coding, sample values are represented without referencing samples or other data from a previously reconstructed reference picture. In some video codecs, the picture is spatially subdivided into blocks of samples. If all blocks of samples are coded in intra-mode, the picture can be called an intra-picture. Intra-pictures and their derived pictures, such as independent decoder refresh pictures, can be used to reset the decoder state and therefore can be used as the first picture in a coded video bitstream and video session, or as a still image. The samples in the intra-predicted blocks can then be transformed into the frequency domain, and the resulting transformation coefficients can be quantized before entropy coding. Intra-prediction represents the technique of minimizing the sample values in the pre-transformation domain. In some cases, smaller post-transformation DC values and smaller AC coefficients result in fewer bits being required at a given quantization step size to represent the block after entropy coding.
[0008] For example, traditional intra-coding, as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt to code / decode blocks based on surrounding sample data and / or metadata that precede the block of data being intra-coded or intra-decoded in the decoding order, obtained, for example, during spatially adjacent coding and / or decoding. Such techniques will henceforth be referred to as “intra-prediction” techniques. It should be noted that, at least in some cases, intra-prediction uses reference data only from the current picture being reconstructed and not from reference data from other reference pictures.
[0009] Intra-prediction can take many different forms. If two or more of these techniques are available in a given video coding technique, the techniques used can be called intra-prediction modes. One or more intra-prediction modes may be provided in a particular codec. In certain cases, a mode may have submodes and / or be associated with various parameters, and mode / submode information and intra-coding parameters for blocks of video may be coded individually or collectively included in the mode's codeword. Which codeword is used for a given combination of mode, submode, and / or parameters may affect the improvement of coding efficiency via intra-prediction, and therefore the entropy coding technique used to convert the codeword to a bitstream may also have an effect.
[0010] Certain modes of intra-prediction were introduced in H.264, improved in H.265, and further refined with newer coding techniques such as Joint Search Models (JEM), Versatile Video Coding (VVC), and Benchmark Sets (BMS). Generally, intra-prediction allows predictor blocks to be formed using available neighboring sample values. For example, available values for a particular set of neighboring samples along a specific direction and / or line may be copied into a predictor block. References to the direction used can be coded within the bitstream or predicted themselves.
[0011] Referring to Figure 1A, shown in the lower right is a subset of the nine predictor directions specified by the 33 possible intra-predictor directions in H.265 (corresponding to 33 of the 35 intra-modes specified in H.265, i.e., 33 angular modes). The point where the arrows converge (101) represents the predicted sample. The arrows represent the directions from which neighboring samples predict 101 samples. For example, arrow (102) indicates that sample (101) is predicted from one or more neighboring samples to the upper right at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more neighboring samples to the lower left of sample (101) at an angle of 22.5 degrees from the horizontal.
[0012] Referring further to Figure 1A, a 4x4 sample square block (104) is depicted in the upper left (indicated by a thick dashed line). The square block (104) contains 16 samples, each labeled with "S", its position in the Y dimension (e.g., row index), and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample in both the Y and X dimensions within block (104). Since the block size is 4x4 samples, S44 is in the lower right. Further examples of reference samples following a similar numbering scheme are shown. The reference samples are labeled with R, its Y position (e.g., row index) and X position (column index) relative to block (104). In both H.264 and H.265, predicted samples adjacent to the block being reconstructed are used.
[0013] Intra-picture prediction in block 104 may begin by copying reference sample values from adjacent samples according to the signaled prediction direction. For example, suppose the coded video bitstream includes signaling for this block 104 indicating the prediction direction of arrow (102), i.e., a sample is predicted from one or more prediction samples to the upper right at an angle of 45 degrees from the horizontal. In such a case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted from reference sample R08.
[0014] In certain cases, to calculate the reference sample, especially when the direction is not evenly divisible by 45 degrees, the values of multiple reference samples may be combined, for example, by interpolation.
[0015] The number of possible directions has increased as video coding techniques continue to develop. In H.264 (2003), for example, nine different directions are available for intra-prediction. This increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions as of the present disclosure. Experimental studies have been conducted to help identify the most appropriate intra-prediction directions, and using certain techniques of entropy coding, those most appropriate directions may be coded with a small number of bits, accepting a certain bit penalty for the direction. Furthermore, the direction itself may be predictable from the adjacent directions used in the intra-prediction of the decoded adjacent block.
[0016] Figure 1B shows a schematic diagram (180) illustrating the 65 intra-prediction directions by JEM, illustrating the increasing number of prediction directions in various encoding technologies that have developed over time.
[0017] The method for mapping bits representing intra-prediction directions in a coded video bitstream to prediction directions can vary depending on the video coding technique, ranging from, for example, a simple direct mapping of prediction direction versus intra-prediction mode to complex adaptive schemes involving codewords, most probable modes, and similar techniques. However, in all cases, there may be certain intra-prediction directions that are statistically less likely to occur in video content than other particular directions. Since the purpose of video compression is to reduce redundancy, in a well-designed video coding technique, those less likely directions may be represented by more bits than the more likely directions.
[0018] Interpicture prediction, or interpretation, may be based on motion compensation. In motion compensation, sample data from a previously reconstructed picture or a portion of it (a reference picture) may be spatially shifted in the direction indicated by a motion vector (MV) and then used to predict the newly reconstructed picture or portion of a picture (e.g., a block). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions, X and Y, or three dimensions, the third of which is an indication of the reference picture used (similar to the time dimension).
[0019] Some video compression techniques allow the current motion vector (MV) applicable to a specific area of sample data to be predicted from other MVs, for example, from other MVs related to other areas of the sample data that are spatially adjacent to the area being reconstructed and precede the current MV in the decoding order. Doing so significantly reduces the overall amount of data required to code the MV by relying on the removal of redundancy in correlated MVs, thereby increasing compression efficiency. MV prediction can work effectively, for example, when coding an input video signal derived from a camera (known as natural video), areas larger than the area to which a single MV is applicable have a statistical likelihood of moving in a similar direction in the video sequence, and therefore, in some cases, can be predicted using similar motion vectors derived from the MVs of adjacent areas. As a result, the actual MV of a given area is similar to or identical to the MV predicted from the surrounding MVs. Such an MV may further be represented with fewer bits after entropy coding than the number of bits that would be used if the MV were coded directly rather than predicted from (one or more) adjacent MVs. In some cases, MV prediction can be an example of lossless compression of the signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, for example, due to rounding errors when calculating the predictor from several surrounding MVs, the MV prediction itself may be irreversible.
[0020] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Rec.H.265, "High Efficiency Video Coding," December 2016). Of the many MV prediction mechanisms specified in H.265, the one described below is the technique hereafter referred to as "spatial merging."
[0021] Specifically, referring to FIG. 2, the current block (201) contains samples that have been detected by the encoder to be predictable from the previous block of the same size that has been spatially shifted during the motion search process. Instead of directly coding the MV, the MV can be derived from metadata associated with one or more reference pictures using an MV associated with any one of five surrounding samples represented by A0, A1, and B0, B1, B2 (202 to 206 respectively), for example, from the last reference picture (in decoding order). In H.265, the MV prediction can use predictors from the same reference picture that the neighboring blocks are using. SUMMARY OF THE INVENTION MEANS FOR SOLVING THE PROBLEM
[0022] Aspects of the present disclosure generally relate to video coding, and more particularly to intra block copy coding modes. In some exemplary implementations, TBD.
[0023] Aspects of the present disclosure also provide a video coding or decoding device or apparatus that includes a circuit configured to execute any of the above method implementations.
[0024] Aspects of the present disclosure also provide a non - transient computer - readable medium that stores instructions which, when executed by a computer for video decoding and / or video encoding, cause the computer to execute a method for video decoding and / or video encoding.
[0025] Further features, properties, 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
[0026] [Figure 1A] A schematic diagram showing a typical subset of intra prediction direction modes is shown. [Figure 1B] Shows a diagram of a typical intra-prediction direction. [Figure 2] Shows a schematic diagram of a target block in an example and spatial merge candidates around the target block used for motion vector prediction. [Figure 3] Is a schematic diagram showing a simplified block diagram of a communication system (300) according to an exemplary embodiment. [Figure 4] Is a schematic diagram showing a simplified block diagram of a communication system (400) according to an exemplary embodiment. [Figure 5] Is a schematic diagram showing a simplified block diagram of a video decoder according to an exemplary embodiment. [Figure 6] Is a schematic diagram showing a simplified block diagram of a video encoder according to an exemplary embodiment. [Figure 7] Is a block diagram showing a video encoder according to another exemplary embodiment. [Figure 8] Is a block diagram showing a video decoder according to another exemplary embodiment. [Figure 9] Is a diagram showing a method of coding block splitting according to an exemplary embodiment of the present disclosure. [Figure 10] Is a diagram showing another method of coding block splitting according to an exemplary embodiment of the present disclosure. [Figure 11] Is a diagram showing another method of coding block splitting according to an exemplary embodiment of the present disclosure. [Figure 12] Is a diagram showing an example of splitting a base block into coding blocks according to an exemplary splitting method. [Figure 13] Is a diagram showing an exemplary three-split method. [Figure 14] Is a diagram showing an exemplary quadtree binary tree coding block splitting method. [Figure 15] Is a diagram showing a method of splitting a coding block into a plurality of transform blocks and a coding order of the transform blocks according to an exemplary embodiment of the present disclosure. [Figure 16]This figure shows another method for dividing a coding block into multiple transformation blocks and the coding order of the transformation blocks, according to exemplary embodiments of the present disclosure. [Figure 17] This figure shows another method for dividing a coding block into multiple transformation blocks, according to an exemplary embodiment of the present disclosure. [Figure 18] This diagram illustrates the concept of intra-block copying (IBC), which uses reconstructed coding blocks within the same frame to predict the current coding block. [Figure 19] This figure shows an exemplary reconstructed sample that can be used as an IBC reference sample. [Figure 20] This figure shows an exemplary reconstructed sample that can be used as a reference sample for IBCs, with some exemplary limitations. [Figure 21] This diagram illustrates an exemplary on-chip reference sample memory (RSM) update mechanism for IBC. [Figure 22] Figure 21 illustrates a spatial diagram of an exemplary on-chip RSM update mechanism. [Figure 23] This diagram illustrates another exemplary on-chip reference sample memory (RSM) update mechanism in IBC. [Figure 24] This figure illustrates a comparison of spatial diagrams of exemplary RSM update mechanisms for IBCs (Integrated Broadcast Blocks) for horizontally divided superblocks and vertically divided superblocks. [Figure 25] This diagram illustrates exemplary non-local and local search regions for an IBC reference block. [Figure 26] This diagram illustrates an example of restricting the location of reference blocks in an IBC that uses both local and non-local reference block search regions. [Figure 27] This flowchart shows a method according to an exemplary embodiment of the present disclosure. [Figure 28] This is a schematic diagram illustrating a computer system according to an exemplary embodiment of the present disclosure. [Modes for carrying out the invention]
[0027] Next, the present invention will be described in detail below with reference to the accompanying drawings, which form part of the present invention and illustrate specific examples of embodiments. However, it should be noted that the present invention may be embodied in various different forms, and therefore the subject matter included or claimed is not intended to be limited to any of the embodiments described below. It should also be noted that the present invention may be embodied as a method, apparatus, component, or system. Thus, embodiments of the present invention may take the form of, for example, hardware, software, firmware, or any combination thereof.
[0028] Throughout this specification and the claims, terms may have nuances implied or suggested in context beyond their expressly stated meanings. The phrases “in one embodiment” or “in some embodiments” used herein do not necessarily refer to the same embodiment, and the phrases “in another embodiment” or “in other embodiments” used herein do not necessarily refer to different embodiments. Similarly, the phrases “in one implementation” or “in some implementations” used herein do not necessarily refer to the same implementation, and the phrases “in another implementation” or “in other implementations” used herein do not necessarily refer to different implementations. For example, the claimed subject matter is intended to include all or some combinations of exemplary embodiments / implementations.
[0029] In general, terms can be understood, at least partially, from their usage in context. For example, terms such as “and,” “or,” or “and / or” as used herein may have various meanings that depend, at least partially, on the context in which such terms are used. Typically, when “or” is used to relate a list such as A, B, or C, it is intended to mean A, B, and C, used here in an inclusive sense, as well as A, B, or C, used here in an exclusive sense. Furthermore, the terms “one or more” or “at least one” as used herein may, at least partially, be used to describe any feature, structure, or characteristic in a singular sense, or in a plural sense, or to describe a combination of features, structures, or characteristics, depending at least partially on the context. Similarly, terms such as “a,” “an,” or “the” can also be understood, at least partially on the context, to convey either a singular or plural usage. Furthermore, the terms “based on” or “determined by” are not necessarily intended to convey an exclusive set of factors, and instead, again, at least partially on the context, may allow for the presence of additional factors that are not necessarily explicitly described.
[0030] Figure 3 shows a simplified block diagram of a communication system (300) according to one embodiment of the present disclosure. The communication system (300) includes, for example, a plurality of terminal devices that can communicate with each other over a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected over the network (350). In the example of Figure 3, the first pair of terminal devices (310) and (320) may perform unidirectional transmission of data. For example, terminal device (310) may code video data (for example, a stream of video pictures captured by terminal device (310)) for transmission to the other terminal device (320) over the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. Terminal device (320) may receive coded video data from the network (350), decode the coded video data to restore the video pictures, and display the video pictures according to the restored video data. Unidirectional data transmission can be implemented in applications such as media serving.
[0031] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) that perform bidirectional transmission of coded video data, which may be performed, for example, during video conferencing. For bidirectional transmission of data, in one example, each terminal device of terminal devices (330) and (340) may code video data (e.g., a stream of video pictures captured by that terminal device) for transmission to the other terminal device of terminal devices (330) and (340) via the network (350). Each terminal device of terminal devices (330) and (340) may also receive coded video data transmitted by the other terminal device of terminal devices (330) and (340), decode the coded video data to restore the video pictures, and display the video pictures on an accessible display device according to the restored video data.
[0032] In the example in Figure 3, terminal devices (310), (320), (330), and (340) may be implemented as servers, personal computers, and smartphones, but the applicability of the underlying principles of this disclosure is not limited in this way. Embodiments of this disclosure may be implemented in desktop computers, laptop computers, tablet computers, media players, wearable computers, dedicated video conferencing equipment, etc. Network (350) represents any number of networks or any type of network that transmit coded video data between terminal devices (310), (320), (330), and (340), including, for example, wired and / or wireless communication networks. The communication network (350)9 may exchange data over circuit-switched channels, packet-switched channels, and / or other types of channels. Typical networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For the purposes of this discussion, the architecture and topology of network (350) may not be important to the operation of this disclosure unless expressly described herein.
[0033] Figure 4 shows an example of the application of the subject matter of disclosure, illustrating the arrangement of a video encoder and video decoder in a video streaming environment. The subject matter of disclosure may equally apply to other video-enabled applications, including, for example, video conferencing, digital television broadcasting, games, virtual reality, and storage of compressed video on digital media such as CDs, DVDs, and memory sticks.
[0034] A video streaming system may include a video acquisition subsystem (413) which may include a video source (401), such as a digital camera, for creating a stream (402) of uncompressed video pictures or images. In one example, the stream (402) of video pictures includes samples recorded by the digital camera of the video source 401. The stream (402) of video pictures is shown in bold to highlight its high data volume compared to encoded video data (404) (or encoded video bitstream) and may be processed by an electronic device (420) which includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof to enable or implement aspects of the subject matter of the disclosure as described in more detail below. The encoded video data (404) (or encoded video bitstream (404)) is shown in thin lines to highlight its low data size compared to the stream of uncompressed video pictures (402), and may be stored in a streaming server (405) or directly in a downstream video device (not shown) for future use. One or more streaming client subsystems, such as client subsystems (406) and (408) in Figure 4, may access the streaming server (405) to obtain copies (407) and (409) of the encoded video data (404). The client subsystem (406) may include, for example, a video decoder (410) in an electronic device (430). The video decoder (410) decodes the input copy (407) of the encoded video data and creates an output stream (411) of a video picture that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). The video decoder 410 may be configured to perform some or all of the various functions described herein.Some streaming systems can encode (404), (407), and (409) (e.g., video bitstreams) according to specific video coding / compression standards. Examples of such standards include ITU-T Recommendation H.265. For example, a video coding standard under development is informally known as Multipurpose Video Coding (VVC). The subject of this disclosure may be used in the context of VVC and other video coding standards.
[0035] It should be noted that electronic devices (420) and (430) may include other components (not shown). For example, electronic device (420) may include a video decoder (not shown), and electronic device (430) may also include a video encoder (not shown).
[0036] Figure 5 shows a block diagram of a video decoder (510) according to any embodiment of the present disclosure described below. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., a receiving circuit). The video decoder (510) can be used in place of the video decoder (410) in the example of Figure 4.
[0037] The receiver (531) may receive one or more coded video sequences to be decoded by the video decoder (510). In the same or another embodiment, one coded video sequence may be decoded at a time, and the decoding of each coded video sequence is independent of other coded video sequences. Each video sequence may be associated with multiple video frames or video images. Coded video sequences may be received from a channel (501), which may be a hardware / software link to a storage device storing encoded video data, or a streaming source transmitting encoded video data. The receiver (531) may receive coded video data together with other data, such as coded audio data and / or auxiliary data streams, which may be transferred to their respective processing circuits (not shown). The receiver (531) may isolate coded video sequences from other data. To counteract network jitter, a buffer memory (515) may be placed between the receiver (531) and the entropy decoder / parser (520) (hereinafter referred to as "Parser (520)"). For certain applications, the buffer memory (515) may be implemented as part of the video decoder (510). For other applications, the buffer memory (515) may be separate from the video decoder (510) and located externally (not shown). For yet other applications, the buffer memory (not shown) may be located externally to the video decoder (510), for example, to counter network jitter, and another buffer memory (515) may be located internally to the video decoder (510), for example, to handle playback timing. When the receiver (531) is receiving data from a storage / transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (515) may be unnecessary or can be made small. For use in best-effort packet networks such as the Internet, a sufficiently large buffer memory (515) may be required, and its size may be relatively large.Such buffer memory may be implemented with an adaptive size and may be at least partially implemented in an operating system or similar element (not shown) outside the video decoder (510).
[0038] The video decoder (510) may include a parser (520) to recover symbols (521) from the coded video sequence. The categories of those symbols include information used to manage the operation of the video decoder (510) and information for controlling rendering devices such as a display (512) (e.g., a display screen) which may or may not be an integral part of the electronic device (530) as shown in Figure 5, but which can be coupled to the electronic device (530). The control information for (one or more) rendering devices may include supplemental extension information (SEI messages) or video usability information. (VUI) may take the form of a parameter set fragment (not shown). The parser (520) can parse / entropy decode the coded video sequence received by the parser (520). The entropy coding of the coded video sequence may conform to a video coding technique or standard and may conform to various principles, including variable-length coding, Huffman coding, context-dependent or non-context-dependent arithmetic coding, etc. The parser (520) may extract from the coded video sequence a set of at least one subgroup parameters of a subgroup of pixels in the video decoder, based on at least one parameter corresponding to a subgroup. Subgroups may include Groups of Pictures (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), predictive units (PU), etc. The parser (520) may also extract information from the coded video sequence such as transform coefficients (e.g., Fourier transform coefficients), quantization parameter values, and motion vectors.
[0039] The analyzer (520) can perform an entropy decoding / analysis operation on the video sequence received from the buffer memory (515) in order to create a symbol (521).
[0040] The reconstruction of the symbol (521) may include multiple different processing units or functional units, depending on the type of the coded video picture or part thereof (interpicture and intrapicture, interblock and intrablock, etc.) and other factors. The units to be included and how they are included may be controlled by subgroup control information parsed from the video sequence coded by the parser (520). The flow of such subgroup control information between the parser (520) and the following multiple processing units or functional units is not illustrated for brevity.
[0041] In addition to the functional blocks already described, the video decoder (510) can be conceptually subdivided into several functional units, as described below. In actual implementations operating under commercial constraints, many of these functional units may interact closely with each other and, at least partially, be integrated with one another. However, in order to clearly illustrate the various functions of the subject of this disclosure, the following disclosure adopts a conceptual subdivision into functional units.
[0042] The first unit may include a scaler / inverse unit (551). The scaler / inverse unit (551) may receive control information from the parser (520) as one or more symbols (521), including quantization transformation coefficients, information indicating which type of inverse transformation to use, block size, quantization coefficients / parameters, and a quantization scaling matrix. The scaler / inverse unit (551) may output a block containing sample values that can be input to the aggregator (555).
[0043] In some cases, the output samples of the scaler / inverse transform (551) may relate to intracoded blocks, i.e., blocks that do not use prediction information from previously reconstructed pictures but can use prediction information from previously reconstructed portions of the current picture. Such prediction information can be provided by the intrapicture prediction unit (552). In some cases, the intrapicture prediction unit (552) may generate a block of the same size and shape as the block being reconstructed, using information from surrounding blocks that have already been reconstructed and are stored in the current picture buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. In some implementations, the aggregator (555) may, sample by sample, add the prediction information generated by the intraprediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551).
[0044] In other cases, the output samples of the scaler / inverse unit (551) may relate to an intercoded and potentially motion-compensated block. In such cases, the motion-compensated prediction unit (553) can access the reference picture memory (557) to fetch the samples used for interpicture prediction. The samples are fetched according to the symbols (521) related to the block. After motion-compensating the selected samples, these samples can be added by an aggregator (555) to the output of a scaler / inverse transform unit (551) to generate output sample information (the output of unit 551 may be called residual samples or residual signals). The addresses in the reference picture memory (557) from which the motion-compensated prediction unit (553) fetches predicted samples may be controlled by motion vectors available to the motion-compensated prediction unit (553) in the form of symbols (521) which may have, for example, an X component, a Y component (shift), and a reference picture component (time). Motion compensation may also include interpolation of sample values fetched from the reference picture memory (557) when the exact motion vectors of the subsamples are used, and may be associated with a motion vector prediction mechanism, etc.
[0045] The output samples of the aggregator (555) can be subjected to various loop filtering techniques in the loop filter unit (556). The video compression technique is controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and may include in-loop filtering techniques available to the loop filter unit (556) as symbols (521) from the parser (520), but may also respond to metadata obtained during decoding of previous parts (in decoding order) of the coded picture or coded video sequence, and may also respond to previously reconstructed and loop-filtered sample values. Several types of loop filters may be included as part of the loop filter unit 556 in various orders, as will be described in more detail below.
[0046] The output of the loop filter unit (556) can be a sample stream that can be output to the rendering device (512) and can also be stored in reference picture memory (557) for use in future interpicture prediction.
[0047] A particular coded picture, once fully reconstructed, can be used as a reference picture for future interpicture prediction. For example, once the coded picture corresponding to the current picture is fully restored and the coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can become part of the reference picture memory (557), and any unused current picture buffer can be reallocated before starting the restoration of the next coded picture.
[0048] The video decoder (510) may perform decoding operations according to a predetermined video compression technique adopted in a standard such as ITU-T Rec.H.265. The coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence is faithful to both the syntax of the video compression technique or standard and the profile documented in the video compression technique or standard. Specifically, a profile may select a particular tool from all the tools available in the video compression technique or standard as a tool made available for use only under that profile. In order to conform to the standard, the complexity of the coded video sequence may be within the 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 reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limitations set by the level may, in some cases, be further limited by the virtual reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0049] In some exemplary embodiments, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of one or more encoded video sequences. The additional data may be used by the video decoder (510) to properly decode the data and / or to more accurately restore the original video data. The additional data may take the form of, for example, a time, space, or signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant images, or forward error correction codes.
[0050] Figure 6 shows a block diagram of a video encoder (603) according to an exemplary embodiment of the present disclosure. The video encoder (603) may be included in an electronic device (620). The electronic device (620) may further include a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) can be used in place of the video encoder (403) in the example of Figure 4.
[0051] The video encoder (603) may receive video samples from a video source (601) (not part of the electronic device (620) in the example in Figure 6) which can capture (one or more) video images to be coded by the video encoder (603). In another example, the video source (601) may be implemented as part of the electronic device (620).
[0052] The video source (601) may provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream, which can have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCb, RGB, XYZ, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (601) may be a storage device capable of storing previously prepared video. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a series of separate pictures or images that give motion when viewed sequentially. The pictures themselves may be organized as spatial arrays of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc., used. Those skilled in the art will readily understand the relationship between pixels and samples. The following description will focus on samples.
[0053] According to some exemplary embodiments, the video encoder (603) can encode and compress pictures of a source video sequence into an encoded video sequence (643) in real time or under any other time constraints required by the application. Enforcing an appropriate coding rate constitutes one function of the controller (650). In some embodiments, the controller (650) can be functionally coupled to and control other functional units, as described below. For brevity, the couplings are not illustrated. Parameters set by the controller (650) may include rate control-related parameters (such as picture skip, quantizer, lambda value of rate distortion optimization technique), picture size, Group of Pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured to have other appropriate functions related to the video encoder (603) optimized for a particular system design.
[0054] In some exemplary embodiments, the video encoder (603) may be configured to operate in a coding loop. For the sake of oversimplification, in one example, the coding loop may include a source coder (630) (for example, responsible for creating symbols such as a symbol stream based on an input picture to be coded and one or more reference pictures) and a (local) decoder (633) built into the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a similar manner to what a (remote) decoder would create, even though the built-in decoder 633 processes the video stream coded by the source coder 630 without entropy coding (because in the video compression techniques considered in the subject of disclosure, any compression between the symbols and the coded video bitstream may be reversible). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Symbol stream decoding leads to bit-accurate results regardless of the decoder's location (local or remote), so the contents within reference picture memory (634) are also bit-accurate between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values as the reference picture samples that the decoder will "see" when using predictions during decoding. This fundamental principle of reference picture synchronization (and the resulting drift if synchronization cannot be maintained due to, for example, channel errors) is used to improve coding quality.
[0055] The operation of the “local” decoder (633) may be the same as that of a “remote” decoder, such as the video decoder (510), which has already been described in detail above with reference to Figure 5. However, as also briefly referring to Figure 5, the entropy decoding portion of the video decoder (510), including the buffer memory (515) and parser (520), may not be fully implemented in the local decoder (633) within the encoder, since symbols are available and the encoding / decoding of symbols to the coded video sequence by the entropy coder (645) and parser (520) may be reversible.
[0056] At this point, it can be said that any decoder technique other than parsing / entropy decoding, which can only exist within the decoder, must also necessarily exist in the corresponding encoder in substantially the same functional form. For this reason, the subject of disclosure may focus on decoder operation, which is similar to the decoding portion of the encoder. Thus, the description of encoder technique can be omitted, as it is the inverse of the comprehensively described decoder technique. A more detailed description of the encoder is given below only in specific areas or embodiments.
[0057] In operation, in some exemplary implementations, the source coder (630) may perform motion-compensated predictive coding, predictively coding the input picture by referencing one or more previously coded pictures from a video sequence designated as “reference pictures”. In this way, the coding engine (632) codes the difference (or residual) of color channels between the pixel blocks of the input picture and the pixel blocks of the reference pictures (one or more) that may be selected as predictive references to the input picture. The terms “residue” and its adjective form “residual” may be used interchangeably.
[0058] The local video decoder (633) can decode the coded video data of a picture that may be designated as a reference picture, based on symbols created by the source coder (630). The operation of the coding engine (632) may, advantageously, be a lossy process. When coded video data can be decoded by a video decoder (not shown in Figure 6), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (633) can replicate the decoding process that may be performed by the video decoder on the reference picture and have the reconstructed reference picture stored in the reference picture cache (634). In this way, the video encoder (603) can locally store a copy of the reconstructed reference picture that has content common to the reconstructed reference picture obtained by the far-end (remote) video decoder (without transmission errors).
[0059] The predictor (635) can perform predictive searches of the coding engine (632). That is, for a new picture to be coded, the predictor (635) can search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or reference picture motion vectors, block shapes, and other specific metadata that can serve as appropriate predictive references for the new picture. The predictor (635) can operate on sample blocks pixel by pixel to find appropriate predictive references. In some cases, the input image may have predictive references drawn from multiple reference pictures stored in the reference picture memory (634), as determined by the search results obtained by the predictor (635).
[0060] The controller (650) can manage the coding operations of the source coder (630), including, for example, setting parameters and subgroup parameters used to encode video data.
[0061] The output of all the aforementioned functional units can undergo entropy coding within the entropy coder (645). The entropy coder (645) converts the symbols generated by the various functional units into coded video sequences by lossless compression of symbols according to techniques such as Huffman coding, variable-length coding, and arithmetic coding.
[0062] The transmitter (640) can buffer the coded video sequence generated by the entropy coder (645) and prepare it for transmission over a communication channel (660), which may be a hardware / software link to a storage device that stores the coded video data. The transmitter (640) can merge the coded video data from the video coder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0063] The controller (650) can manage the operation of the video coder (603). During coding, the controller (650) can assign a specific coded picture type to each coded picture, which may affect the coding technique that can be applied to each picture. For example, an image is often assigned as one of the following image formats:
[0064] Furthermore, intra-images (I-images) may be capable of coding and decoding without relying on other images in the sequence as prediction sources. Some video codecs enable different types of intra-pictures, including, for example, independent decoder refresh ("IDR") pictures. Those skilled in the art will recognize these variations of I-pictures and their respective uses and characteristics.
[0065] The predicted image (P-image) may be coded and decoded using intra-prediction or inter-prediction, which uses up to one motion vector and reference index to predict the sample value for each block.
[0066] Bidirectional prediction images (B images) may be coded and decoded using intra-prediction or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values for each block. Similarly, multiple prediction images may use three or more reference pictures and associated metadata for the reconstruction of a single block.
[0067] A source picture can generally be spatially subdivided into multiple sample coding blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each), and each block can be coded. Blocks can be predictively coded by referencing other (already coded) blocks, as determined by the coding assignment applied to each picture in the block. For example, a block of picture I can be coded non-predictively or predictively (spatial or intra-predictively) by referencing already coded blocks of the same picture. A pixel block of picture P may be predictedly coded by spatial or temporal prediction by referencing one previously coded reference picture. A block of picture B may be predictedly coded by spatial or temporal prediction by referencing one or two previously coded reference pictures. A source picture or an intermediate picture may be subdivided into other types of blocks for other purposes. The division of coding blocks and other types of blocks may or may not follow the same method, as will be described in more detail below.
[0068] The video encoder (603) can perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec.H.265. In this operation, the video encoder (603) can perform various compression operations, including predictive coding operations that utilize temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to the syntax specified by the video coding technique or standard being used.
[0069] In some exemplary embodiments, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the encoded video sequence. The additional data may include time / space / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, and the like.
[0070] Video can be captured chronologically as multiple source pictures (video pictures). Intra-picture prediction (often abbreviated as intra-prediction) utilizes spatial correlations within a given picture, while inter-picture prediction utilizes temporal or other correlations between pictures. For example, a particular picture being encoded / decoded, called the current picture, may be divided into blocks. Blocks within the current picture may be coded by vectors called motion vectors if they are analogous to reference blocks within previously coded, still-buffered reference pictures in the video. Motion vectors point to reference blocks within reference pictures and may have a third dimension to identify the reference pictures if multiple reference pictures are used.
[0071] In some exemplary embodiments, a biprediction technique can be used for interpicture prediction. According to such a biprediction technique, two reference pictures are used, such as a first reference picture and a second reference picture, both of which advance the current picture in the video in decoding order (however, in display order, they may be in the past or future, respectively). Blocks in the current picture may be coded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. Blocks can be predicted in conjunction by combinations of the first and second reference blocks.
[0072] Furthermore, merge mode techniques may be used to improve coding efficiency in interpicture prediction.
[0073] According to some exemplary embodiments of this disclosure, predictions such as interpicture prediction and intrapicture prediction are performed in block units. For example, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs in a picture may have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU may include three parallel coding tree blocks (CTBs), i.e., one luminance CTB and two saturation CTBs. Each CTU can be recursively quadtree-partitioned into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU or four 32x32 pixel CUs. Each of one or more of the 32x32 blocks may be further divided into four 16x16 pixel CUs. In some exemplary embodiments, each CU may be analyzed during encoding to determine the prediction type of that CU from among various prediction types, such as inter-prediction type and intra-prediction type. A CU can be divided into one or more prediction units (PUs) depending on its temporal and / or spatial predictability. Generally, each PU includes one luminance prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed in units of prediction blocks. The division of a CU into PUs (or PBs for different color channels) can be performed in various spatial patterns. A luminance PB or chroma PB may include a matrix of sample values (e.g., luminance values), such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0074] Figure 7 shows a diagram of a video encoder (703) according to another exemplary embodiment of the present disclosure. The video encoder (703) is configured to receive a processing block (e.g., a prediction block) of sample values in the current video picture in a sequence of video pictures, and to encode the processing block into a coded picture which is part of a coded video sequence. The exemplary video encoder (703) may be used instead of the video encoder (403) in the example of Figure 4.
[0075] For example, the video encoder (703) receives a matrix of sample values for a processing block, such as an 8x8 sample prediction block. The video encoder (703) then determines, for example, using rate-distortion optimization (RDO), whether the processing block is best coded using intra-mode, inter-mode, or bi-prediction mode. If it is determined that the processing block is coded in intra-mode, the video encoder (703) encodes the processing block into a coded picture using the intra-prediction technique; if it is determined that the processing block is coded in inter-mode or bi-prediction mode, the video encoder (703) may encode the processing block into a coded picture using the inter-prediction technique or the bi-prediction technique, respectively. In some exemplary embodiments, a merged mode may be used as a submode of inter-picture prediction, in which the motion vector is derived from one or more motion vector predictors without benefiting from coded motion vector components outside the predictor. In some other exemplary embodiments, there may be motion vector components applicable to the target block. Therefore, the video encoder (703) may include components not explicitly shown in Figure 7, such as a mode determination module, to determine the prediction mode of the processing block.
[0076] In the example shown in Figure 7, the video encoder (703) includes an interencoder (730), an intraencoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general-purpose controller (721), and an entropy encoder (725), all coupled together as shown in the exemplary configuration of Figure 7.
[0077] The interencoder (730) is configured to receive a sample of the current block (e.g., a processing block), compare that block to one or more reference blocks in the reference picture (e.g., blocks in the previous and subsequent pictures in display order), generate interprediction information (e.g., a description of redundant information, motion vectors, and merge mode information by the interencoding technique), and compute an interprediction result (e.g., a predicted block) based on the interprediction information using any appropriate technique. In some examples, the reference picture is a decoded reference picture decoded based on video information encoded using a decoding unit 633 incorporated into the exemplary encoder 620 in Figure 6 (shown as a residual decoder 728 in Figure 7, as will be described in more detail below).
[0078] The intra encoder (722) is configured to receive a sample of the current block (e.g., a processing block), compare the block to an already coded block in the same picture, generate transformed quantization coefficients, and optionally also generate intra prediction information (e.g., intra prediction direction information by one or more intra encoding techniques). Based on the intra prediction information and a reference block in the same picture, the intra prediction result (e.g., a predicted block) may be calculated.
[0079] The general-purpose controller (721) may be configured to determine general-purpose control data and control other components of the video encoder (703) based on the general-purpose control data. For example, the general-purpose controller (721) determines the prediction mode of a block and provides a control signal to the switch (726) based on the prediction mode. For example, if the prediction mode is intra-mode, the general-purpose controller (721) controls the switch (726) to select an intra-mode result for use by the residual calculator (723), and controls the entropy encoder (725) to select intra-prediction information and include that intra-prediction information in the bitstream. If the description mode of a block is inter-mode, the general-purpose controller (721) controls the switch (726) to select an inter-prediction result for use by the residual calculator (723), and controls the entropy encoder (725) to select inter-prediction information and include that inter-prediction information in the bitstream.
[0080] A residual calculator (723) may be configured to calculate the difference (residual data) between the received block and the prediction result for a block selected from an intra-encoder (722) or inter-encoder (730). A residual encoder (724) may be configured to encode the residual data to generate conversion coefficients. For example, the residual encoder (724) may be configured to convert the residual data from the spatial domain to the frequency domain to generate conversion coefficients. The conversion coefficients are then quantized to obtain quantized conversion coefficients. In various exemplary embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform to produce decoded residual data. The decoded residual data can be appropriately used by the intra-encoder (722) and inter-encoder (730). For example, an interencoder (730) can generate a decoded block based on decoded residual data and interprediction information, and an intraencoder (722) can generate a decoded block based on decoded residual data and intraprediction information. The decoded block is appropriately processed to generate a decoded picture, which is buffered in a memory circuit (not shown) and can be used as a reference picture.
[0081] The entropy encoder (725) may be configured to format the bitstream to include encoded blocks and to perform entropy coding. The entropy encoder (725) may be configured to include various types of information in the bitstream. For example, the entropy encoder (725) may be configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other appropriate information in the bitstream. Residual information may not be present when coding blocks in either inter-mode or bi-prediction mode merge submodes.
[0082] Figure 8 shows a diagram of an exemplary video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive a coded picture, which is part of a coded video sequence, and to decode the coded picture to produce a reconstructed picture. In one example, the video decoder (810) may be used instead of the video decoder (410) in the example of Figure 4.
[0083] In the example shown in Figure 8, the video decoder (810) includes a coupled entropy decoder (871), an interdecoder (880), a residual decoder (873), a reconfiguration module (874), and an intradecoder (872), as shown in the exemplary configuration of Figure 8.
[0084] The entropy decoder (871) can be configured to recover specific symbols from the coded picture that represent the syntactic 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-prediction mode, merge sub-mode, or another sub-mode), prediction information (e.g., intra-prediction information or inter-prediction information) that can identify specific samples or metadata used for prediction by the intra-decoder (872) or inter-decoder (880), and residual information in the form of quantization transformation coefficients. For example, if the prediction mode is inter-mode or bi-prediction mode, inter-prediction information is provided to the inter-decoder (880), and if the prediction type is intra-prediction type, intra-prediction information is provided to the intra-decoder (872). The residual information may undergo inverse quantization and be provided to the residual decoder (873).
[0085] The interdecoder (880) may be configured to receive interprediction information and generate interprediction results based on the interprediction information.
[0086] The intra decoder (872) may be configured to receive intra prediction information and generate prediction results based on the intra prediction information.
[0087] The residual decoder (873) may be configured to perform inverse quantization to extract inverse quantization conversion coefficients, and then process these coefficients to convert the residual from the frequency domain to the spatial domain. The residual decoder (873) may also utilize certain control information (to include quantization parameters (QP)), which may be provided by the entropy decoder (871) (the data path is not shown as this may only involve a small amount of control information).
[0088] The reconstruction module (874) may be configured to combine the residuals as output from the residual decoder (873) and the prediction results (optionally as output from the inter-prediction module or intra-prediction module) in the spatial domain to form reconstructed blocks that form part of the reconstructed picture as part of the reconstructed video. Note that other appropriate operations, such as deblocking operations, may be performed to improve visual quality.
[0089] It should be noted that the video encoders (403), (603), and (703), as well as the video decoders (410), (510), and (810), can be implemented using any suitable technique. In some exemplary embodiments, the video encoders (403), (603), and (703), as well as the video decoders (410), (510), and (810), can be implemented using one or more integrated circuits. In another embodiment, the video encoders (403), (603), and (603), as well as the video decoders (410), (510), and (810), can be implemented using one or more processors that execute software instructions.
[0090] Turning to block partitioning for coding and decoding, a general partition can begin with a base block and follow a given set of rules, a specific pattern, a partitioning tree, or any partitioning structure or scheme. The partitioning may be hierarchical and recursive. After partitioning or dividing the base block according to one of the exemplary partitioning procedures or other procedures described below, or a combination thereof, a final set of partitions or coding blocks may be obtained. Each of these partitions may be at one of the various partitioning levels in the partitioning hierarchy and may be of various shapes. Each partition may be called a coding block (CB). In the various exemplary partitioning implementations described further below, each resulting CB may be of any of the allowed size and partitioning level. Such partitions are called coding blocks because some basic coding / decoding decisions can be made for them, and the coding / decoding parameters can form units that can be optimized, determined, and signaled in the encoded video bitstream. The highest or deepest level in the final partition represents the depth of the coding block partitioning structure of the tree. Coding blocks may be luminance coding blocks or saturation coding blocks. The CB tree structure for each color is sometimes called a coding block tree (CBT).
[0091] The coding blocks for all color channels are sometimes collectively called a coding unit (CU). The hierarchical structure of all color channels is sometimes collectively called a coding tree unit (CTU). The division patterns or structures of the various color channels within a CTU may or may not be the same.
[0092] In some implementations, the coding partitioning tree scheme or structure used for the luminance channel and the saturation channel may not be the same. In other words, the luminance channel and the saturation channel may have separate coding tree structures or patterns. Furthermore, whether the luminance channel and the saturation channel use the same coding partitioning tree structure or different coding partitioning tree structures, and the actual coding partitioning tree structure to be used, may depend on whether the slice being coded is a P slice, a B slice, or an I slice. For example, in the case of an I slice, the saturation channel and the luminance channel may have separate coding partitioning tree structures or coding partitioning tree structure modes, but in the case of a P slice or a B slice, the luminance channel and the saturation channel may share the same coding partitioning tree scheme. When separate coding partitioning tree structures or modes are applied, the luminance channel may be partitioned into CBs by one coding partitioning tree structure, and the saturation channel may be partitioned into saturation CBs by another coding partitioning tree structure.
[0093] In some exemplary implementations, a predetermined partitioning pattern can be applied to the base block. As shown in Figure 9, the exemplary four-way partition tree may start at a first predetermined level (e.g., a 64x64 block level or other size as the base block size), and the base block may be hierarchically partitioned down to a predetermined lowest level (e.g., a 4x4 level). For example, the base block can follow four predetermined partitioning options or patterns shown in 902, 904, 906, and 908, and the partitions represented in R can be recursively partitioned in such a way that the same partitioning options shown in Figure 9 can be repeated at lower scales down to the lowest level (e.g., a 4x4 level). In some implementations, additional restrictions may be applied to the partitioning scheme in Figure 9. In the implementation of Figure 9, rectangular partitions (e.g., 1:2 / 2:1 rectangular partitions) can be used repeatedly, while square partitions can be used repeatedly. If necessary, recursive partitioning following Figure 9 generates the final set of coding blocks. A coding tree depth may be further defined to indicate the division depth from the root node or root block. For example, the coding tree depth of the root node or root block of a 64x64 block may be set to 0, and after the root block is divided one more time following Figure 9, the coding tree depth increases by 1. The maximum or deepest level from a 64x64 base block to a minimum 4x4 partition is 4 (starting from level 0) in the above scheme. Such a division scheme may be applied to one or more of the color channels. Each color channel may be divided independently according to the scheme in Figure 9 (for example, for each color channel at each hierarchical level, a division pattern or option from a given pattern may be determined independently). Alternatively, two or more color channels may share the same hierarchical pattern tree in Figure 9 (for example, the same division pattern or option from a given pattern may be selected for two or more color channels at each hierarchical level).
[0094] Figure 10 shows another exemplary predetermined partitioning pattern that allows for the formation of a partitioning tree by recursive partitioning. As shown in Figure 10, an exemplary 10 we A partition structure or pattern may be predefined. The root block may start from a predetermined level (e.g., from a 128x128 level or 64x64 level base block). The exemplary partition structure in Figure 10 includes various 2:1 / 1:2 and 4:1 / 1:4 rectangular partitions. The partition type with three subpartitions shown in the second column of Figure 10, 1002, 1004, 1006, and 1008, may be called a "T-shaped" partition. The "T-shaped" partitions 1002, 1004, 1006, and 1008 may also be called left T-shaped, top T-shaped, right T-shaped, and bottom T-shaped. In some exemplary implementations, none of the rectangular partitions in Figure 10 can be further subdivided. A coding tree depth may be further defined to indicate the partition depth from the root node or root block. For example, the coding tree depth of the root node or root black of a 128x128 block may be set to 0, and after the root block is further partitioned following Figure 10, the coding tree depth increases by 1. In some implementations, only the all-square partitions of 1010 may allow recursive partitioning to the next level of the partition tree following the pattern in Figure 10. In other words, recursive partitioning is not possible with the square partitions in the T-shaped patterns 1002, 1004, 1006, and 1008. If necessary, the recursive partitioning procedure following Figure 10 generates the final set of coding blocks. Such a scheme may be applied to one or more of the color channels. In some implementations, more flexibility can be added to the use of partitions with fewer than 8x8 levels. For example, in some cases, 2x2 chroma interpretation can be used.
[0095] In several other exemplary implementations of coding block partitioning, a quadtree structure can be used to partition a base block or intermediate block into quadtree partitions. Such quadtree partitioning can be applied hierarchically and recursively to any square partition. Whether the base block or intermediate block or partition is further quadtree partitioned can be adapted to various local characteristics of the base block or intermediate block / partition. Further quadtree partitioning at picture boundaries can be applied. For example, implicit quadtree partitioning can be performed at picture boundaries so that the block continues to quadtree partition until its size fits within the picture boundary.
[0096] In some other exemplary implementations, hierarchical binary partitioning from a base block may be used. In such a scheme, the base block or intermediate level block may be divided into two partitions. The bipartite division can be either horizontal or vertical. For example, horizontal bipartite division can divide the base block or intermediate block into equal left and right partitions. Similarly, vertical bipartite division can divide the base block or intermediate block into equal upper and lower partitions. Such bipartite divisions may be hierarchical and recursive. Whether the bipartite scheme should be continued, and if so, whether horizontal or vertical bipartite should be used, can be determined at the level of the base block or intermediate block. In some implementations, further division can be stopped at a predetermined minimum partition size (in one or both dimensions). Alternatively, further division can be stopped when a predetermined division level or depth is reached from the base block. In some implementations, the aspect ratio of the partitions may be restricted. For example, the aspect ratio of the partitions may not be less than 1:4 (or greater than 4:1). Therefore, a vertical strip partition with a 4:1 vertical-to-horizontal aspect ratio can only be further divided vertically into an upper partition and a lower partition, each having a 2:1 vertical-to-horizontal aspect ratio.
[0097] In several other examples, a ternary partitioning scheme can be used to partition a base block or any intermediate block, as shown in Figure 13. The ternary pattern may be implemented vertically, as shown in 1302 of Figure 13, or horizontally, as shown in 1304 of Figure 13. The exemplary partitioning ratios in Figure 13 are shown as 1:2:1 for either vertical or horizontal, but other ratios may be predefined. In some implementations, two or more different ratios may be predefined. Such ternary partitioning schemes may be used to complement quadtree or binary structures, and such ternary partitioning can capture objects located at the center of a block within a single contiguous partition, whereas quadtrees and binary trees always partition along the center of a block and therefore divide objects into separate partitions. In some implementations, the width and height of the exemplary ternary partitioning are always powers of 2 to avoid additional transformations.
[0098] The above partitioning schemes can be combined in any way at different partitioning levels. For example, the quadtree and binary partitioning schemes described above may be combined to partition a base block into a quadtree-binary (QTBT) structure. In such a scheme, the base block or intermediate block / partition may be either quadtree partitioned or binary partitioned, provided, if specified, that a given set of conditions are met. A specific example is shown in Figure 14. In the example in Figure 14, the base block is initially quadtree partitioned into four partitions, as shown by 1402, 1404, 1406, and 1408. Each of the resulting partitions is then quadtree partitioned into four further partitions (e.g., 1408), or binary partitioned into two further partitions at the next level (e.g., either horizontally or vertically, e.g., both are symmetric, such as 1402 or 1406), or not partitioned at all (e.g., 1404). Binary or quadtree partitioning may be recursively permitted for square partitions, as shown by the overall exemplary partition pattern in 1410 and the corresponding tree structure / representation in 1420, where solid lines represent quadtree partitioning and dashed lines represent binary partitioning. A flag may be used for each binary node (non-leaf binary) to indicate whether the binary is horizontal or vertical. For example, as shown in 1420, consistent with the partition structure in 1410, a flag "0" may represent horizontal binary and a flag "1" may represent vertical binary. In the case of quadtree partitioning, there is no need to specify the partition type, as quadtree partitioning always divides a block or partition both horizontally and vertically to produce four subblocks / partitions of the same size. In some implementations, a flag "1" may represent horizontal binary and a flag "0" may represent vertical binary.
[0099] In some exemplary implementations of QTBT, the quadtree and the binary rule set may be represented by the following predetermined parameters and their associated corresponding functions. -CTU size: The size of the root node of the quadtree (the size of the base block). -MinQTSize: Minimum allowable quadtree leaf node size -MaxBTSize: Maximum allowable binary tree root node size -MaxBTDepth: Maximum allowable binary tree depth -MinBTSize: Minimum allowable binary tree leaf node size In some exemplary implementations of the QTBT partitioning structure, the CTU size may be set as 128×64 luminance samples with two corresponding 64×128 blocks of chrominance samples (when exemplary chroma subsampling is considered and used), MinQTSize may be set as 16×16, MaxBTSize may be set as 64×64, MinBTSize (for both width and height) may be set as 4×4, and MaxBTDepth may be set as 4. The quadtree partitioning is first applied to the CTU, and quadtree leaf nodes may be generated. Quadtree leaf nodes can have sizes from their minimum allowable size (i.e., MinQTSize) of 16×16 to 128×128 (i.e., CTU size). If a renode is 128×128, it will not be partitioned by the binary tree first because its size exceeds MaxBTSize (i.e., 64×64). Otherwise, nodes that do not exceed MaxBTSize may be partitioned by the binary tree. In the example in Figure 14, the base block is 128x128. The base block can only be quadtree-partitioned according to a given set of rules. The base block has a partitioning depth of 0. Each of the four resulting partitions is 64x64 and does not exceed MaxBTSize, and can be further quadtree-partitioned or binary-partitioned at level 1. The process continues. When the binary tree depth reaches MaxBTDepth (i.e., 4), no further partitioning is considered. When the width of a binary tree node is equal to MinBTSize (i.e., 4), no further horizontal partitioning is considered. Similarly, when the height of a binary tree node is equal to MinBTSize, no further vertical partitioning is considered.
[0100] In some exemplary implementations, the above QTBT scheme may be configured to support the flexibility of having luminance and chroma in the same QTBT structure or separate QTBT structures. For example, in the case of P-slice and B-slice, the luminance CTB and chroma CTB within one CTU may share the same QTBT structure. However, in the case of I-slice, the luminance CTB may be divided into CUs by the QTBT structure, and the chroma CTB may be divided into chroma CUs by a separate QTBT structure. This means that CUs can be used to refer to different color channels within an I-slice; for example, a CU in an I-slice may consist of a coding block for the luminance component or a coding block for two chroma components, while a CU in a P-slice or B-slice may consist of a coding block for all three color components.
[0101] In some other implementations, the QTBT scheme may be complemented by the ternary scheme described above. Such implementations are sometimes called multi-type tree (MTT) structures. For example, in addition to the bipartiteization of nodes, one of the ternary patterns in Figure 13 may be selected. In some implementations, only square nodes may be subject to ternaryization. Additional flags may be used to indicate whether the ternaryization is horizontal or vertical.
[0102] Designing two-level or multi-level trees, such as QTBT implementations and QTBT implementations complemented by tripartitioning, can be motivated primarily by complexity reduction. Theoretically, the complexity of traversing a tree is T D Here, T represents the number of partition types and D is the depth of the tree. A trade-off can be made by using multiple types (T) while reducing the depth (D).
[0103] In some implementations, the CB may be further subdivided. For example, the CB may be further subdivided into multiple prediction blocks (PBs) for the purpose of intra-frame prediction or inter-frame prediction during the coding and decoding processes. In other words, the CB may be further subdivided into different subpartitions where individual prediction decisions / constructions may take place. In parallel, the CB may be further subdivided into multiple transformation blocks (TBs) for the purpose of describing the level at which transformation or inverse transformation of the video data is performed. The subdivision schemes of the CB into PBs and TBs may be the same or different. For example, each subdivision scheme may be performed using its own procedure based on, for example, various characteristics of the video data. The subdivision schemes of the PBs and TBs may be independent in some exemplary implementations. The subdivision schemes and boundaries of the PBs and TBs may be correlated in some other exemplary implementations. In some implementations, for example, the TBs may be subdivided after the PB subdivision, and in particular, each PB may be determined after the subdivision of the coding blocks and then further subdivided into one or more TBs. For example, in some implementations, the PBs may be subdivided into one, two, four, or other numbers of TBs.
[0104] In some implementations, luminance and chroma channels may be handled differently in order to divide the base block into coding blocks, and further into prediction and / or transformation blocks. For example, in some implementations, the division of the coding block into prediction and / or transformation blocks may be permitted for the luminance channel, but such division may not be permitted for the (one or more) chroma channel. In such implementations, the transformation and / or prediction of the luminance block may therefore only be performed at the coding block level. In another example, the minimum transformation block size for the luminance channel and the (one or more) chroma channel may differ; for example, the coding block of the luminance channel may be divided into smaller transformation and / or prediction blocks than the chroma channel. In yet another example, the maximum depth of the division of the coding block into transformation and / or prediction blocks may differ between the luminance channel and the chroma channel; for example, the coding block of the luminance channel may be divided into deeper transformation and / or prediction blocks than the (one or more) chroma channel. For example, a luminance coding block may be divided into transformation blocks of multiple sizes that can be represented by recursive partitioning that goes down by up to two levels, and transformation block shapes such as square, 2:1 / 1:2, and 4:1 / 1:4, and transformation block sizes from 4x4 to 64x64 may be allowed. However, for saturation blocks, only the largest possible transformation block specified for the luminance block may be allowed.
[0105] In some exemplary implementations for dividing a coding block into PBs, the depth, shape, and / or other properties of the PB division may depend on whether the PB is intracoded or intercoded.
[0106] The partitioning of coding blocks (or prediction blocks) into transformation blocks can be carried out recursively or non-recursively, taking into account the transformation blocks at the boundaries of the coding or prediction blocks, in a variety of exemplary schemes including, but not limited to, quadtree partitioning and predetermined pattern partitioning. In general, the resulting transformation blocks may be at different partitioning levels, may not be the same size, and may not be square in shape (for example, the blocks may be rectangles with several acceptable sizes and aspect ratios). Further examples are described in more detail below in relation to Figures 15, 16, and 17.
[0107] However, in some other implementations, the CB obtained through any of the above partitioning schemes can be used as the basic or smallest coding block for prediction and / or transformation. In other words, no further partitioning is performed for inter-prediction / intra-prediction and / or transformation. For example, the CB obtained from the above QTBT scheme may be used as is as the unit for performing prediction. Specifically, such a QTBT structure eliminates the concept of multiple partitioning types, i.e., the concept of separation of CU, PU, and TU, and increases the flexibility of the CU / CB partition shape as described above. In such a QTBT block structure, the CU / CB can be either square or rectangular in shape. The leaf nodes of such a QTBT are used as units for prediction and transformation processing without further partitioning. This means that the CU, PU, and TU have the same block size in such an exemplary QTBT coding block structure.
[0108] The various CB partitioning schemes described above, as well as further partitioning of the CB into PB and / or TB (including no PB / TB partitioning), can be combined in any manner. The following specific implementations are provided as non-limiting examples.
[0109] Specific exemplary implementations of the partitioning of coding blocks and transformation blocks are described below. In such an exemplary implementation, the base block may be partitioned into coding blocks using recursive quadtree partitioning or one of the predetermined partitioning patterns described above (e.g., those in Figures 9 and 10). At each level, whether further quadtree partitioning of a particular partition should be continued may be determined by the local video data characteristics. The resulting CBs can have various quadtree partitioning levels and various sizes. The decision of whether to code a picture area using interpicture (temporal) prediction or intrapicture (spatial) prediction may be made at the CB level (or at the CU level in the case of 3 color channels). Each CB may be further partitioned into one, two, four, or other number of PBs according to a predefined PB partitioning type. The same prediction process may be applied within a single PB, and the relevant information may be sent to the decoder on a PB basis. After obtaining residual blocks by applying a prediction process based on the PB partitioning type, the CB can be partitioned into TBs according to another quadtree structure similar to the coding tree of the CB. In this particular implementation, the CB or TB does not have to be square in shape. Furthermore, in this particular example, the PB may be square or rectangular in shape for interpretation, and square only for intrapretation. A coding block may be divided into, for example, four square-shaped TBs. Each TB may be recursively divided (using quadtree partitioning) into smaller TBs called Residual Quadtrees (RQTs).
[0110] Further exemplary implementations for partitioning a base block into CBs, PBs, and / or TBs are described below. For example, instead of using multiple partition unit types as shown in Figure 9 or Figure 10, a quadtree with nested multi-type trees using binary and ternary segmentation structures (e.g., QTBT or QTBT with ternary partitioning as described above) may be used. The separation of CBs, PBs, and TBs (i.e., partitioning a CB into PBs and / or TBs, and partitioning a PB into TBs) may be abandoned unless required for a CB that is too large for the maximum transformation length, which may require further partitioning. This exemplary partitioning scheme may be designed to support greater flexibility in the CB partition shape so that both prediction and transformation can be performed at the CB level without further partitioning. In such a coding tree structure, the CB may have either a square or rectangular shape. Specifically, a coding tree block (CTB) may first be partitioned by a quadtree structure. Then, the leaf nodes of the quadtree may be further partitioned by nested multi-type tree structures. Figure 11 shows an example of a nested multitype tree structure using bipartite or tripartite. Specifically, the exemplary multitype tree structure in Figure 11 includes four segmentation types: vertical bipartite (SPLIT_BT_VER)(1102), horizontal bipartite (SPLIT_BT_HOR)(1104), vertical tripartite (SPLIT_TT_VER)(1106), and horizontal tripartite (SPLIT_TT_HOR)(1108). In this case, the CB corresponds to the leaf of the multitype tree. In this exemplary implementation, this segmentation is used for both prediction and transformation processing without further segmentation, as long as the CB is not too large relative to the maximum transformation length. This means that in most cases, the CB, PB, and TB have the same block size in a quadtree with a nested multitype tree coding block structure. An exception occurs when the supported maximum transformation length is smaller than the width or height of the color component of the CB. In some implementations, in addition to two- or three-partitioning, the nested pattern in Figure 11 can further include quadtree partitioning.
[0111] Figure 12 shows a specific example of a quadtree having a nested multi-type tree coding block structure (including quadtree, bipartite, and tripartite options) of block partitions for a single base block. More specifically, Figure 12 shows that the base block 1200 is quadtree-partitioned into four square partitions 1202, 1204, 1206, and 1208. The decision to further use the multi-type tree structure and quadtrees of Figure 11 for further partitioning is made for each of the quadtree-partitioned partitions. In the example of Figure 12, partition 1204 is not further partitioned. Partitions 1202 and 1208 adopt different quadtree partitions, respectively. In partition 1202, the second-level quadtree-partitioned upper-left, upper-right, lower-left, and lower-right partitions adopt third-level partitions of quadtree, horizontal bipartite 1104 in Figure 11, unpartitioned, and horizontal tripartite 1108 in Figure 11, respectively. Partition 1208 employs a different quadtree partitioning pattern, with the second-level quadtree-partitioned upper-left, upper-right, lower-left, and lower-right partitions employing third-level partitioning patterns of vertical tripartitioning 1106, unpartitioned, unpartitioned, and horizontal bipartitioning 1104 in Figure 11, respectively. Two of the subpartitions of the third-level upper-left partition of 1208 are further partitioned according to horizontal bipartitioning 1104 and horizontal tripartitioning 1108 in Figure 11, respectively. Partition 1206 employs a second-level partitioning pattern of vertical partitioning 1102 in Figure 11 into two partitions, and the two partitions are further partitioned at the third level according to horizontal tripartitioning 1108 and vertical bipartitioning 1102 in Figure 11. A fourth-level partitioning pattern is further applied to one of them according to horizontal bipartitioning 1104 in Figure 11.
[0112] In the example above, the maximum luminance conversion size may be 64x64, and the maximum supported saturation conversion size may be different from luminance, for example, 32x32. The exemplary CB in Figure 12 is generally not further divided into smaller PB and / or TB, but if the width or height of a luminance coding block or saturation coding block is greater than the maximum conversion width or maximum conversion height, the luminance coding block or saturation coding block may be automatically divided horizontally and / or vertically to satisfy the horizontal and / or vertical conversion size limitations.
[0113] In the specific example of dividing the above base block into CBs, as mentioned above, the coding tree scheme can support the ability for luminance and saturation to have separate block tree structures. For example, in the case of P-slice and B-slice, the luminance CTB and saturation CTB within a single CTU may share the same coding tree structure. In the case of I-slice, for example, luminance and saturation may have separate coding block tree structures. When separate block tree structures are applied, the luminance CTB may be divided into luminance CBs by one coding tree structure, and the saturation CTB may be divided into saturation CBs by another coding tree structure. This means that a CU in an I-slice may consist of coding blocks for the luminance component or coding blocks for two saturation components, and a CU in a P-slice or B-slice always consists of coding blocks for all three color components unless the video is monochrome.
[0114] If a coding block is further divided into multiple transformation blocks, these transformation blocks may be ordered within the bitstream according to various orders or scanning schemes. Exemplary implementations for dividing a coding block or prediction block into transformation blocks, and the coding order of the transformation blocks, are described in more detail below. In some exemplary implementations, as described above, transformation division can support multiple shapes of transformation blocks, e.g., 1:1 (square), 1:2 / 2:1, and 1:4 / 4:1, with transformation block sizes ranging from, for example, 4x4 to 64x64. In some implementations, if the coding block is 64x64 or less, transformation block division may be applied only to the luminance component of the saturation block, such that the transformation block size is the same as the coding block size. Otherwise, if the width or height of the coding block is greater than 64, both the luminance coding block and the saturation coding block may be implicitly divided into multiples of transformation blocks of min(W,64)×min(H,64) and min(W,32)×min(H,32), respectively.
[0115] In some exemplary implementations of transform block partitioning, for both intra-coded and interconnected blocks, a coding block may be further divided into multiple transform blocks having a predetermined number of partitioning depths (e.g., 2 levels). The partitioning depth and size of the transform blocks may be related. Table 1 below shows exemplary mappings from the transform size at the current depth to the transform size at the next depth for several exemplary implementations.
[0116] [Table 1]
[0117] According to the illustrative mapping in Table 1, for a 1:1 square block, the next level of transformation partitioning can create four 1:1 square subtransformation blocks. The transformation partitioning can stop at, for example, 4x4. Thus, the transformation size of the current depth of 4x4 corresponds to the same size of 4x4 at the next depth. In the example in Table 1, for a 1:2 / 2:1 non-square block, the next level of transformation partitioning can create two 1:1 square subtransformation blocks, while for a 1:4 / 4:1 non-square block, the next level of transformation partitioning can create two 1:2 / 2:1 subtransformation blocks.
[0118] In some exemplary implementations, further restrictions may be applied to the luminance components of intra-coded blocks with respect to the transformation block division. For example, at each level of transformation division, all sub-transformation blocks may be restricted to having equal sizes. For instance, for a 32×16 coding block, a level 1 transformation division would create two 16×16 sub-transformation blocks, and a level 2 transformation division would create eight 8×8 sub-transformation blocks. In other words, to keep the transformation units of equal size, the second level division must be applied to all first-level sub-blocks. An example of transformation block division for an intra-coded square block according to Table 1 is shown in Figure 15, along with the coding order indicated by the arrows. Specifically, 1502 shows a square coding block. The first level division into four equally sized transformation blocks according to Table 1 is shown in 1504, along with the coding order indicated by the arrows. The second level division of all first-level equally sized blocks into 16 equally sized transformation blocks according to Table 1 is shown in 1506, along with the coding order indicated by the arrows.
[0119] In some exemplary implementations, the above restrictions on intracoding may not apply to the luminance components of the intercoded block. For example, after the first level of transformation partitioning, one of the sub-transformation blocks may be further independently partitioned at another level. Thus, the resulting transformation blocks may or may not be the same size. An exemplary partitioning of an intercoded block into transformation blocks with a coding order is shown in Figure 16. In the example in Figure 16, the intercoded block 1602 is partitioned into transformation blocks at two levels according to Table 1. At the first level, the intercoded block is partitioned into four transformation blocks of equal size. Then, only one of the four transformation blocks (but not all of them) is further partitioned into four sub-transformation blocks, resulting in a total of seven transformation blocks of two different sizes, as shown in 1604. The exemplary coding order of these seven transformation blocks is indicated by arrows in 1604 of Figure 16.
[0120] In some exemplary implementations, additional restrictions may be applied to the transformation block for (one or more) saturation components. For example, for (one or more) saturation components, the transformation block size can be the same as the coding block size, but it cannot be smaller than a predetermined size, such as 8x8.
[0121] In some other exemplary implementations, for coding blocks with a width (W) or height (H) greater than 64, both the luminance coding block and the saturation coding block may be implicitly divided into multiples of conversion units of min(W,64) × min(H,64) and min(W,32) × min(H,32), respectively. Herein, "min(a, b)" may return the smaller value between a and b.
[0122] Figure 17 further illustrates another alternative exemplary method for splitting a coding block or prediction block into transformation blocks. As shown in Figure 17, instead of using recursive transformation partitioning, a predetermined set of partition types may be applied to the coding block according to the transformation type of the coding block. In the particular example shown in Figure 17, one of six exemplary partition types may be applied to split the coding block into a varying number of transformation blocks. Such a method for generating transformation block partitions may be applied to either the coding block or the prediction block.
[0123] More specifically, the partitioning scheme in Figure 17 provides up to six exemplary partition types for any given transformation type (where "transformation type" refers to the type of primary transformation, such as ADST). In this scheme, every coding block or prediction block may be assigned a transformation partition type, for example, based on rate distortion cost. In one example, the transformation partition type assigned to a coding block or prediction block may be determined based on the transformation type of the coding block or prediction block. As illustrated by the six transformation partition types illustrated in Figure 17, a particular transformation partition type may correspond to the partition size and pattern of the transformation block. The correspondence between various transformation types and various transformation partition types can be predefined. An example with capital letter labels indicating the transformation partition types that may be assigned to a coding block or prediction block based on rate distortion cost is shown below.
[0124] • PARTITION_NONE: Allocates a conversion size equal to the block size.
[0125] • PARTITION_SPLIT: Assigns a conversion size that is half the width and half the height of the block size.
[0126] • PARTITION_HORZ: Assigns a conversion size that is the same width as the block size and half the height of the block size.
[0127] • PARTITION_VERT: Assigns a conversion size that is half the width of the block size and the same height as the block size.
[0128] • PARTITION_HORZ4: Assigns a conversion size that is the same width as the block size and 1 / 4 the height of the block size.
[0129] • PARTITION_VERT4: Assigns a conversion size that is 1 / 4 the width of the block size and the same height as the block size.
[0130] In the example above, all transformation partitioning types shown in Figure 17 include a uniform transformation size for the partitioned transformation blocks. This is merely an example, not an limitation. In some other implementations, a mixed transformation block size may be used for the partitioned transformation blocks in a particular partitioning type (or pattern).
[0131] A video block (also called a PB or CB if not further divided into multiple prediction blocks) can be predicted in various ways rather than being directly encoded, thereby improving compression efficiency by leveraging various correlations and redundancies within the video data. Accordingly, such predictions can be performed in various modes. For example, a video block can be predicted by intra-prediction or inter-prediction. In particular, in inter-prediction mode, a video block can be predicted by one or more other reference blocks or inter-prediction blocks from one or more other frames, either via single-reference or composite-reference inter-prediction. To perform inter-prediction, a reference block can be specified by its frame identifier (the time position of the reference block) and a motion vector (the spatial position of the reference block) indicating the spatial offset between the current block being encoded or decoded and the reference block. The reference frame identifier and motion vector can be signaled within the bitstream. The motion vector as a spatial block offset may be signaled directly or may be predicted by another reference motion vector or predictor motion vector. For example, the current motion vector may be predicted directly by a reference motion vector (e.g., of a candidate adjacent block) or by a combination of the reference motion vector and the motion vector difference (MVD) between the current motion vector and the reference motion vector. The latter is sometimes called a motion vector difference merge mode (MMVD). The reference motion vector may be identified in the bitstream, for example, as a pointer to a spatially adjacent block or a temporally adjacent but spatially collated block of the current block.
[0132] In some other exemplary implementations, intra-block copy (IBC) prediction may be used. In IBC, the current block in the current frame may be predicted using another block in the current frame (not in a temporally different frame, hence the term "intra"), combined with an intra-predictor or block vector (BV) indicating an offset of the reference block's position to the predicted block's position. The position of a coding block can be represented, for example, by the pixel coordinates of the left corner relative to the top-left corner of the current frame (or slice). Thus, the IBC mode uses a similar inter-prediction concept within the current frame. For example, the BV may be predicted directly by another reference BV or by a combination of BV differences between the current BV and the reference BV, which is analogous to predicting the MV using a reference MV and MV difference in inter-prediction. IBC is particularly useful in providing improved coding efficiency for encoding and decoding video frames with screen content that has a considerable number of repeating patterns, such as text information, where identical text segments (characters, symbols, words, phases, etc.) appear in different parts of the same frame and can be used to predict each other.
[0133] In some implementations, IBC may be treated as a separate prediction mode other than the normal intra-prediction mode and the normal inter-prediction mode. Thus, the selection of the prediction mode for a particular block can be performed and signaled among three different prediction modes: intra-prediction, inter-prediction, and IBC mode. These implementations can incorporate flexibility into each of these modes to optimize coding efficiency in each of them. In some other implementations, IBC may be treated as a sub-mode or branch within the inter-prediction mode, using similar motion vector determination, referencing, and coding mechanisms. In such implementations (integrated inter-prediction mode and IBC mode), the flexibility of IBC may be somewhat limited in order to harmonize the general inter-prediction mode and the IBC mode. However, such implementations are not as complex and can still utilize IBC to improve coding efficiency, for example, for video frames characterized by screen content. In some exemplary implementations, the inter-prediction mode can be extended to support IBC using existing pre-defined mechanisms for separate inter-prediction and intra-prediction modes.
[0134] The selection of these prediction modes can be made at various levels, including but not limited to sequence level, frame level, picture level, slice level, CTU level, CT level, CU level, CB level, or PB level. For example, for IBC purposes, a decision may be made as to whether the IBC mode is adopted, and this may be signaled at the CTU level. If the CTU is signaled as adopting the IBC mode, then all coding blocks in the entire CTU can be predicted by IBC. In some other implementations, the IBC prediction may be determined at the superblock (SB) level. Each SB can be slit into multiple CTUs or partitions in various ways (e.g., quadtree partitioning). Further examples are provided below.
[0135] Figure 18 shows an exemplary snapshot of a section of the current frame containing multiple CTUs from the decoder's perspective. Each square block, such as 1802, represents a CTU. A CTU may be one of several predetermined sizes, as described in detail above. Each CTU may contain one or more coding blocks (or predictive blocks for a particular color channel). CTUs shaded with horizontal lines represent CTUs that have already been reconstructed. CTU 1804 represents the current CTU being reconstructed. Within the current CTU 1804, coding blocks shaded with horizontal lines represent blocks that have already been reconstructed within the current CTU, coding block 1806 shaded with diagonal lines is currently being reconstructed, while unshaded coding blocks within the current CTU 1804 are awaiting reconstruction. Other unshaded CTUs have not yet been processed.
[0136] The position or offset of a reference block (relative to the current block) used to predict the current coding block in an IBC may be represented by a BV, as indicated by the illustrative arrow in Figure 18. For example, the BV may represent the positional difference between the upper-left corner of the reference block (labeled "Ref" in Figure 18) and the current block in vector form. Figure 18 is shown using a CTU as the base IBC unit. The underlying principle applies to implementations where an SB is used as the base IBC unit. In such implementations, each superblock may be divided into multiple CTUs, and each CTU may be further divided into multiple coding blocks, as will be described in more detail below.
[0137] As will be further disclosed in detail below, depending on the location of the reference CTU / SB relative to the current CTU / SB of the IBC, the reference CTU / SB may be called a local CTU / SB or a non-local CTU / SB. A local CTU / SB can refer to a CTU / SB that matches the current CTU / SB, or a CTU / SB that is near the current CTU / SB and being reconfigured (e.g., the CTU / SB to the left of the current CTU / SB). A non-local CTU / SB can refer to a CTU / SB that is further away from the current CTU / SB. Either or both of the local and non-local CTU / SBs may be searched for when performing an IBC prediction of the current coding block to find the reference block. Since on-chip and off-chip storage management (such as off-chip picture buffers (DPBs) and / or on-chip memory) for reconfigured samples for local or non-local CTU / SB references may differ, the specific way in which the IBC is implemented may depend on whether the reference CTU / SB is local or non-local. Reconstructed local CTU / SB samples may be suitable for storage, for example, in the on-chip memory of an encoder or decoder for IBC. Reconstructed non-local CTU / SB samples can be stored, for example, in off-chip DPB memory.
[0138] In some implementations, the location of a reconstructed block that can be used as a reference block for the current coding block 1804 may be restricted. Such restrictions may be the result of various factors and may depend on whether IBC is implemented as an integrated part of a general interprediction mode, as a special extension of the interprediction mode, or as a separate, independent IBC mode. In some examples, the IBC reference block can be identified by searching only the current reconstructed CTU / SB sample. In some other examples, the current reconstructed CTU / SB sample and another adjacent reconstructed CTU / SB sample (e.g., the CTU / SB to the left) can be used to search for and select the reference block, as shown in the thick dotted box 1808 in Figure 18. In such implementations, only the local reconstructed CTU / SB sample may be used to search for and select the IBC reference block. In some other examples, a particular CTU / SB may not be available for searching for and selecting the IBC reference block for various other reasons. For example, CTU / SB 1810, marked with a cross in Figure 18, may be used for special purposes (e.g., wavefront parallel processing), as will be explained further below, and therefore may not be available for searching and selecting the reference block for the current block 1804.
[0139] In some implementations, limitations on already reconstructed CTU / SBs, which are permitted to be used to provide IBC reference blocks or reference samples, may arise from the adoption of parallel decoding, where two or more coding blocks are decoded simultaneously. An example is shown in Figure 19, where each square represents a CTU / SB. As indicated by the shaded CTU / SBs in Figure 19, parallel decoding may be implemented in which several consecutive rows and multiple CTU / SBs every other column (every two columns) can be reconstructed in parallel. Other CTU / SBs shaded with horizontal lines have already been reconstructed, while unshaded CTU / SBs have not yet been constructed. In such parallel processing, for a currently parallel-processed CTU / SB with top-left coordinates (x0, y0), the reconstructed sample of (x, y) can only be accessed to predict the current CTU / SB in the IBC if the vertical coordinate y is less than y0 and the horizontal coordinate x is less than x0+2(y0-y). Thus, an already constructed CTU / SB shaded with horizontal lines may be available as a reference for the currently parallel-processed block.
[0140] In some implementations, the delay of immediately writing back reconstructed samples to the off-chip DPB can impose further restrictions on the CTU / SB that may be used to provide the IBC reference samples of the current block, especially when the off-chip DPB is used to hold the IBC reference samples. An example is shown in Figure 20, where additional restrictions may apply in addition to those shown in Figure 19. Specifically, to allow for hardware write-back delays, the directly reconstructed regions cannot be accessed by IBC predictions for the search and selection of reference blocks. The number of directly reconstructed regions that are restricted or prohibited can be 1 to n CTU / SBs (where n is a positive integer). Thus, in addition to the specific parallel processing restrictions in Figure 19, if the coordinates of the top-left position of one current CTU / SB are (x0, y0), then the prediction at position (x, y) can be accessed by the IBC if the vertical coordinate y is less than y0 and the horizontal coordinate is less than x0 + 2(y0 - y) - D, where D is the number of directly reconstructed regions (e.g., to the left of the current CTU / SB) that are restricted / prohibited as IBC references. Figure 20 shows such additional CTU / SBs restricted as IBC reference samples with D=2. These additional CTU / SBs that are not available as IBC references are shown with reverse diagonal shading.
[0141] In some implementations, which are described in more detail below, both local and non-local CTU / SB search regions can be used for IBC reference block search and selection. Furthermore, when on-chip memory is used, some of the limitations on the availability of already constructed CTU / SBs as IBC references with respect to write-back delay can be mitigated or eliminated. In some further implementations, the method used when local and non-local CTU / SBs coexist may differ, for example, depending on the management of buffering of reference blocks using either on-chip or off-chip memory. These implementations are described in more detail in the following disclosures.
[0142] In some implementations, IBC can be implemented as an extension of interprediction mode, treating the current frame as a reference frame in interprediction mode, such that blocks within the current frame can be used as predictive references. Thus, such an IBC implementation can follow the coding path for interprediction even if the IBC process only includes the current frame. In such implementations, the reference structure of interprediction mode can be adapted to IBC, and the representation of the addressing mechanism for reference samples using BV can be analogous to the motion vector (MV) in interprediction. Therefore, IBC can be implemented as a special interprediction mode, relying on similar or identical syntactic structures and decoding processes, based on the current frame as a reference frame.
[0143] In such implementations, IBC can be treated as interprediction mode, so intra-only predictive slices must become predictive slices that enable the use of IBC. In other words, intra-only predictive slices are not interpredicted (since intraprediction mode does not invoke any interprediction processing paths), and therefore IBC is not permitted for prediction in such intra-only slices. If IBC is applicable, the coder extends the reference picture list with only one entry for a pointer to the current picture. Thus, the current picture can occupy at most one picture-size buffer in the shared decoded picture buffer (DPB). Signaling for the use of IBC may be implicit in the selection of reference frames in interprediction mode. For example, if the selected reference picture points to the current picture, the coding unit will use IBC with an interprediction-like coding path that has a special IBC extension, if necessary and available. In some specific implementations, reference samples within the IBC process may not be loop-filtered before being used for prediction, as opposed to normal interprediction. Furthermore, the corresponding reference current picture can be a long-term reference frame, as it will be near the next frame to be encoded or decoded. In some implementations, to minimize memory requirements, the coder can immediately free the buffer after reconstructing the current picture. The coder can return a filtered version of the reconstructed picture to the DPB as a short-term reference when it becomes the reference picture for a later frame in true interpretation, even if it was unfiltered when used for IBC.
[0144] In the exemplary implementation described above, IBC may be merely an extension of the interprediction mode, but IBC may be handled with several special procedures that deviate from normal interprediction. For example, IBC reference samples may not be filtered. In other words, reconstructed samples prior to an in-loop filtering process, including deblocking filtering, sample adaptive offset (SAO) filtering, and cross-component sample offset (CCSO) filtering, may be used for IBC prediction, while normal interprediction mode uses filtered samples for prediction. In another example, luminance sample interpolation for IBC may not be performed, and chroma sample interpolation may only be necessary if the chroma BV is a non-integer when derived from the chroma BV. In yet another example, if the chroma BV is a non-integer and the IBC reference block is near the boundary of the region available for IBC reference, the surrounding reconstructed samples may be outside the boundary to perform chroma interpolation. A single BV pointing to the next boundary cannot avoid such cases.
[0145] In such implementations, the prediction of the current block by IBC can reuse the prediction and coding mechanisms of the interpretation process, including using the current BV and, for example, a reference BV to predict additional BV differences. However, in some specific implementations, the luminance BV may be implemented with integer resolution rather than fractional precision, like the MV in normal interpretation.
[0146] In some implementations, as shown as 1810 in Figure 18, to enable wavefront parallel processing (WPP), all CTUs and SBs shown by the horizontal shaded lines in Figure 18, except for the two CTUs in the upper right of the current CTU (shown by the cross in Figure 18), can be used for searching and selecting IBC reference blocks. Thus, with a few exceptions for parallel processing purposes, this is almost the entire already reconstructed region of the current picture.
[0147] In some other implementations, the region in which IBC reference blocks can be searched and selected may be limited to the local CTU / SB. One example is shown in the thick dotted box 1808 in Figure 18. In such an example, the CTU / SB to the left of the current CTU can serve as the IBC reference sample region at the start of the current CTU reconstruction process. When using such a local reference region, instead of allocating additional external memory space to the DPB, on-chip memory space may be allocated to hold the local CTU / SB for IBC references. In some implementations, fixed on-chip memory can be used for the IBC, thereby reducing the complexity of implementing the IBC in the hardware architecture. Thus, a dedicated IBC mode independent of normal interprediction may be implemented for the use of on-chip memory rather than being implemented as a mere extension of the interprediction mode.
[0148] For example, the fixed on-chip memory size for storing local IBC reference samples, such as left CTUs or SBs, may be 128 x 128 for each color component. In some implementations, the maximum CTU size may also be 128 x 128. In such cases, the reference sample memory (RSM) can hold a sample having the size of a single CTU. In some other alternative implementations, the CTU size may be smaller. For example, the CTU size may be 64 x 64. Thus, the RSM can hold multiple (four in this example) CTUs simultaneously. In several other implementations, the RSM can hold multiple SBs, each SB may contain one or more CTUs, and each CTU may contain multiple coding blocks.
[0149] In some implementations of local on-chip IBC references, the on-chip RSM can hold one CTU and implement a continuous update mechanism to replace the reconstructed sample of the CTU to its left with the reconstructed sample of the current CTU. Figure 21 shows a simplified example of such a continuous RSM update mechanism at four intermediate time points during the reconstruction process. In the example in Figure 21, the RSM has a fixed size to hold one CTU. The CTU may include implicit partitions. For example, the CTU may be implicitly partitioned into four separate areas (e.g., quadtree partitions). Each area may contain multiple coding blocks. The CTU may be 128×128 in size, but each of the exemplary areas or partitions may be 64×64 in size, as is the size of the exemplary quadtree partition. In each intermediate time step, the RSM regions / sections shaded with horizontal lines hold the corresponding reconstructed reference sample of the CTU to their left, and the regions / sections shaded with vertical gray lines hold the corresponding reconstructed reference sample of the current CTU. The coding blocks in the RSM shaded with diagonal lines represent the current coding block within the current region being coded / decoded / reconstructed.
[0150] At the first intermediate time, which marks the start of the current CTU reconstruction, the RSM may contain only the reconstruction reference sample of the CTU to its left for each of the four exemplary regions, as shown by 2102. In the other three intermediate times, the reconstruction process gradually replaces the reconstruction reference sample of the CTU to its left with the reconstruction sample of the current CTU. A reset of a 64x64 region / split in the RSM occurs when the coder processes the first coding block of that region / split. When a region in the RSM is reset, that region is considered blank and is not considered to hold an IBC reconstruction reference sample (in other words, that region in the RSM is not ready to be used as an IBC reference sample). Once the corresponding current coding block in that region has been processed, the corresponding block in the RSM is recorded along with the reconstruction sample of the corresponding block in the current CTU, which should be used as the IBC reference sample for the next current block, as shown in Figure 21 for intermediate times 2104, 2106, and 2108. Once all coding blocks have been processed in accordance with the regions / partitions of the RSM, the entire region is filled with reconstructed samples of these current coding blocks as IBC reference samples, as indicated by the regions fully shaded with vertical lines in Figure 21 at various intermediate times. Thus, at intermediate times 2104 and 2106, some regions / partitions within the RSM hold IBC reference samples from adjacent CTUs, some other regions / partitions hold reference samples entirely from the current CTU, while some regions / partitions partially hold reference samples from the current CTU and are partially blank (not used for IBC references as a result of the reset process described above).Once the last region (e.g., the bottom right region) is processed, all the other three regions retain the reconstructed sample of the current CTU as the reference sample for the IBC, but the last region / section partially retains the reconstructed sample of the corresponding coding block in the current CTU and is partially blank until the last coding block of the CTU is reconstructed, at which point the entire RSM retains the reconstructed sample of the current CTU and is ready for use in the next CTU, if it is also coded in IBC mode.
[0151] Figure 22 illustrates the implementation of the above continuous updating of the spatial RSM, particularly in intermediate time, showing both the CTU to the left and the current CTU with the current coding block (the block shaded with diagonal shading lines). The corresponding reconstructed samples of these two CTUs, which are within the RSM and valid as IBC reference samples for the current coding block, are indicated by horizontal and vertical shading lines. During a particular reconstruction in this example, the process replaces the samples covered by the unshaded area in the CTU to the left in the RSM with the area of the current CTU shaded with vertical shading lines. The remaining effect samples from the adjacent CTU are shown as horizontal shading lines.
[0152] In the exemplary implementation described above, if the fixed RSM size is the same as the CTU size, the RSM is implemented to contain one CTU. In some other implementations, if the CTU size is smaller, the RSM can contain multiple CTUs. For example, the size of a CTU may be 32×32, but the fixed RSM size may be 128×128. Thus, the RSM can hold a sample of 16 CTUs. Following the same underlying RSM update principle described above, the RSM can hold 16 adjacent CTUs of the current 128×128 patch before being reconstructed. As soon as processing of the first coding block of the current 128×128 patch begins, the first 32×32 region of the RSM, initially filled with a reconstructed sample of one adjacent CTU, can be updated, as described above for an RSM holding a single CTU. The remaining 15 32×32 regions contain 15 adjacent CTUs as reference samples for the IBC. When the CTU corresponding to the first 32x32 region of the currently decoded 128x128 patch is reconstructed, the first 32x32 region of the RSM is updated with the reconstructed sample of this CTU. Next, the CTU corresponding to the second 32x32 region of the current 128x128 patch can be processed and finally updated with the reconstructed sample. This process continues until all 16 32x32 regions of the RSM contain the reconstructed samples of the current 128x128 patch (all 15 CTUs). After that, the decoding process moves on to the next 128x128 patch.
[0153] In some other implementations, as an extension of Figures 21 and 22, the RSM can hold a set of adjacent CTUs. One current CTU is processed at a time, and the portion of the RSM holding the furthest adjacent CTU is updated in the manner described above with the reconfigured current CTU. For the next current CTU, the furthest adjacent CTU in the RSM is also updated and replaced. Thus, multiple CTUs held in a fixed-size RSM are updated as a moving window of adjacent CTUs in the IBS.
[0154] Figure 23 shows a further specific example of a local IBC using an on-chip RSM. In this example, the maximum block size in IBC mode may be limited. For example, the largest IBC block may be 64x64. The on-chip RSM can be configured with a fixed size corresponding to the superblock (SB), e.g., 128x128. The RSM implementation in Figure 23 uses similar basic principles to the implementations in Figures 21 and 22. In Figure 23, the RSM can hold multiple adjacent and / or current CTUs as IBC reference samples. In the example in Figure 23, the SB may be a quadtree partition. Correspondingly, the RSM may be quadtree partitioned into four regions or units, each of which is 64x64. Each of these regions may hold one or more coding blocks. Alternatively, each of these regions may hold one or more CTUs, and each CTU may hold one or more coding blocks. The coding order of the quadtree regions may be predefined. For example, the coding order may be top-left, top-right, bottom-left, bottom-right. The quadtree partitioning of the SB in Figure 23 is just one example. In several other alternative implementations, the SB may be partitioned according to any other scheme. The RSM update implementations of the local IBC described herein apply to these alternative partitioning schemes.
[0155] Such a local SBC implementation may restrict the local reference blocks that can be used for SBC prediction. For example, it may be required that the reference block and the current block reside in the same SB row. Specifically, the local reference block may be located in only the current SB or one SB to the left of the current SB. An exemplary current block predicted in the SBC by another permitted coding block is shown by the dashed arrow in Figure 23. When the current SB or the left SB is used for SBC reference, the reference sample update procedure in the RSM may follow the reset procedure described above. For example, if any of the 64x64 units of reference sample memory begin updating with reconstructed samples from the current SB, the previously stored reference samples (from the left SB) across the entire 64x64 unit are marked as unavailable for generating IBC prediction samples and are gradually updated with reconstructed samples from the current block.
[0156] Figure 23 shows five exemplary states of the RSM during local IBC decoding of the current SB in panel 2302. Here again, in each exemplary state, the horizontally shaded areas of the RSM hold the corresponding reference samples of the corresponding quadtree region of the SB to its left, and the vertically shaded areas / sections hold the corresponding reference samples of the current SB. The diagonally shaded coding blocks of the RSM represent the current coding block within the current quadtree region being coded / decoded. At the start of coding for each current SB, the RSM stores samples from the previously coded SB (RSM state (0) in Figure 23). When the current block is located in one of the four 64x64 quadtree regions of the current SB, the corresponding area in the RSM is reset and used to store samples from the current 64x64 coding region. This process is used. In this way, the samples within each 64x64 quadtree region of the RSM are gradually updated by the samples in the current SB (states (1) to (3)). When the current SB is fully coded, the entire RSM is filled with all the samples in the current SB (state (4)).
[0157] Each of the 64x64 regions in panel 2302 of Figure 23 is labeled with a spatial coding sequence number. Sequences 0-3 represent the four 64x64 quadtree regions of the left-side SB, and sequences 4-7 represent the four 64x64 quadtree regions of the current SB panel. In Figure 23, panel 2304 further shows the corresponding spatial distribution of the reference sample in the left-side and current SB for RSM states (1), (2), and (3) of panel 2302 of Figure 23. Shaded regions without a cross represent regions with reconstructed samples in the RSM. Shaded regions with a cross represent regions where the reconstructed sample of the left SB in the RSM has been reset (and therefore cannot be used as a reference sample for the local SBC).
[0158] The coding order of a 64x64 region and the corresponding RSM update order can follow either a horizontal scan (as shown earlier in Figure 23) or a vertical scan. A horizontal scan starts from the top left, top right, bottom left, and bottom right. A vertical scan starts from the top left, bottom left, top right, and bottom left. The left-to-left neighboring SB and current SB reference sample update processes for horizontal and vertical scans are shown in panels 2402 and 2404 of Figure 24, respectively, for comparison as each of the four 64x64 regions of the current SB is being reconstructed. In Figure 24, 64x64 regions shaded with horizontal lines without crosses represent regions with available samples in the SBC. Regions shaded with horizontal lines with crosses represent regions of the left-to-left neighboring SB that have been updated with the corresponding reconstructed sample of the current SB. Unshaded regions represent unprocessed regions of the current SB. Blocks shaded with diagonal lines represent the current coding block being processed.
[0159] As shown in Figure 24, depending on the position of the current coding block relative to the current SB, the following restrictions may apply to the reference block of the IBC.
[0160] If the current block falls within the top-left 64x64 region of the current SB, then, in addition to the already reconstructed sample of the current SB, reference samples from the bottom-right, bottom-left, and top-right 64x64 blocks of the left SB can also be referenced, as shown in Figure 2412 (for horizontal scanning) and 2422 (for vertical scanning).
[0161] If the current block is located in the upper right 64x64 block of the current SB, then, in addition to the already reconstructed samples of the current SB, the current block can also reference reference samples in the lower left 64x64 block and the lower right 64x64 block of the left SB, provided that the luminance sample located at (0,64) relative to the current SB has not yet been reconstructed (Figure 24, 2414). Otherwise, the current block can also reference reference reference samples in the lower right 64x64 block of the left SB of the SBC (Figure 24, 2426).
[0162] If the current block is located in the lower left 64x64 block of the current SB, then in addition to the already reconstructed samples of the current SB, the current block can also reference reference samples in the upper right 64x64 block and the lower right 64x64 block of the left SB if the luminance position (64,0) has not yet been reconstructed for the current SB (Figure 24, 2424). Otherwise, the current block can also reference reference reference samples in the lower right 64x64 block of the left SB of the SBC (Figure 24, 2416).
[0163] If the current block is located in the lower right 64x64 block of the current SB, then only already reconstructed samples within the current SB of the SBC can be referenced (2418 and 2428 in Figure 24).
[0164] As described above, in some exemplary implementations, either or both local and non-local based CTU / SBs may be used for searching and selecting IBC reference blocks. Furthermore, when an on-chip RSM is used for local references, some of the limitations on the availability of already constructed CTU / SBs as IBC references regarding write-back delays can be mitigated or eliminated. Such implementations may be applicable regardless of whether parallel decoding is used.
[0165] Figure 25 shows exemplary implementations of local and non-local reference CTU / SBs that can be used for IBC, where each square represents a CTU / SB. CTU / SBs shaded with diagonal lines represent the current CTU / SB (labeled "0"), while CTU / SBs shaded with horizontal lines (labeled "1"), vertical lines (labeled "2"), and reverse diagonal lines (labeled "3") represent already configured regions. Unshaded CTU / SBs represent regions that have not yet been reconfigured. Parallel decoding similar to that in Figures 19 and 20 is assumed to be used. CTU / SBs shaded with vertical lines ("2") and reverse diagonal lines ("3") represent exemplary regions that are typically limited as SBC references for the current CTU / SB due to write-back delays to the DPB when only off-chip memory is used for SBC references (see Figure 20). When an on-chip RSM is used, one or more of the restricted areas in Figure 20 do not need to be restricted, as they can be referenced directly from the RSM. The number of restricted areas that can be accessed via the RSM for IBC reference may depend on the size of the RSM. In the example in Figure 25, the RSM may hold one CTU / SB and employ the RSM update mechanism described above. Thus, one of the two sets of adjacent CTU / SBs shaded with inverted diagonal lines in Figure 20, labeled "3", may be available for local reference. The RSM then holds samples from the left CTU / SB and the current CTU / SB. Thus, in the example in Figure 25, the search area available for the non-local SBC reference block includes the CTU / SB labeled "1" (search area 1, or SA1), the scan area available for the local SBC reference block includes the CTU / SBs labeled "2" and "0" (SA2), and the restricted area of the SBC reference block includes the CTU / SB labeled "3" due to the write-back delay. In some other implementations, if the on-chip RSM size is large enough to hold the entire limited CTU / SB, all these potentially limited areas can be included in the RSM for local reference.
[0166] Figure 26 further illustrates additional restrictions on reference coding blocks that may be used by the IBC to predict the current coding block when both local and non-local reference lookups are allowed and enabled. In Figure 26, each square also represents a CTU / SB. CTU / SBs shaded with horizontal lines represent already configured CTU / SBs. Unshaded CTU / SBs represent areas that have not yet been reconfigured. CTU / SBs with reverse diagonal shading lines are not allowed as IBC criteria (although here only the current CTU / SB is shown as allowed for IBC references, the basic principle applies to situations where only the first of two CTU / SBs with reverse diagonal shading lines is not allowed, as in Figure 25). The coding block with diagonal lines is the current coding block. Coding blocks A, B, and C are potential reference blocks for the IBC to the current coding block. Other shaded coding blocks within the current CTU / SB are already configured. In this implementation, reference coding block B is acceptable because it lies entirely outside the restricted area, within SA2 (local search area), and has already been reconfigured. Coding block C is also acceptable because it lies entirely outside the restricted area, within SA1 (non-local search area), and has already been reconfigured. Coding block A cannot be used as a prediction block because it takes precedence over SA1 and SA2. In other words, reference coding blocks that override both SA1 and SA2 may not be acceptable because IBC's handling of SA1 and SA2 is different and may not be easily harmonized.
[0167] Turning to the coding of block vectors (BVs) in IBC, several exemplary implementations can use a process similar to that specified for interpretation, but with simpler rules for constructing BV prediction candidate lists. For example, the candidate list construction in some interpretation implementations may consist of five spatial, one time, and six history-based candidates. In such interpretations, multiple candidate comparisons can be performed on history-based candidates to avoid duplicate entries in the final candidate list. Furthermore, the list construction can include pairwise averaged candidates. In some exemplary implementations of BV prediction, the IBC list construction process can consider several (e.g., two) spatially adjacent BVs and several (e.g., five) history-based BVs (HBVPs), and only the first HBVP can be compared with the spatial candidate when added to the candidate list. While typical interpretation can use two different candidate lists, one for merge mode and one for normal mode, the IBC candidate list can be used in both cases with respect to BVs. However, merge mode can use up to six candidates in the list, while normal mode uses only the first two candidates. In some exemplary implementations, block vector difference (BVD) coding can use the motion vector difference (MVD) process to yield a final BV of any size. The reconstructed BV can point to a region outside the reference sample region and requires correction by removing absolute offsets in each direction using modulo operations with the width and height of the RSM.
[0168] In the above implementations where either local or non-local IBC references, or both, are used, loop filtering can be utilized under certain circumstances. For example, when a non-local based IBC search range is used (with or without a local based IBC search range), loop filtering can be disabled for the same picture in the IBC, for example, for a single picture. On the other hand, when only a local based IBC search range is used (without a non-local based IBC search range), loop filtering may be applied to the same picture. Loop filtering can include, but is not limited to, deblocking filters, constrained directional enhancement filters (CDEF), sample adaptive offset (SAO) filtering, cross-component sample offset (CCSO) filtering, and loop restoration filters (LR). In this way, a dedicated second picture buffer for enabling the IBC can be avoided.
[0169] Turning to IBC-related signaling, in some implementations, a flag is initially sent in the bitstream for the current block, used to indicate whether IBC is enabled for the current block. Such a flag may be signaled at a higher level, such as CTU, CU, sequence, slice, or picture level. Next, if the current block is in IBC mode (either as a separate mode from interprediction mode or as an integral part of interprediction mode), a reference block can be looked up and the corresponding BV can be determined by the encoder. For BV prediction, the BV difference is derived by the decoder by subtracting the predicted BV from the current BV, and the BV difference can then be classified into several types (e.g., four types) according to the horizontal and vertical components of the BV difference value. BV difference type information may be further signaled in the bitstream, and the two (horizontal and vertical) components of the BV difference value may then be signaled. In some exemplary implementations, a set of high-level syntax flags is further included in the bitstream and used to indicate the acceptable local and / or non-local reference range for IBC prediction. Such a set of flags can be signaled at various levels, such as CTU, CU, sequence, slice, or picture level.
[0170] For example, a syntax flag called global_ibc_flag can be used to turn the non-local base region on / off, and another syntax flag called local_ibc_flag can be used to turn the local base region on / off for IBC prediction. These two syntax flags may be controlled independently of each other. In other words, these flags can have any combination of flag values. Each of these flags may be signaled at the same different level. In one example, if both flags are turned off, IBC is effectively disabled. In this case, the non-local IBC flag and the local IBC flag are at a certain level. If signaling is done independently, the IBC enable flag at that level (such as picture level or sequence level) does not need to be signaled in the bitstream.
[0171] In some exemplary implementations, the non-local IBC syntax flag `global_ibc_flag` and the local IBC syntax flag `local_ibc_flag` may be composed of certain dependencies. For example, the non-local `global_ibc_flag` may be signaled first. Depending on its value, `local_ibc_flag` may be signaled or inferred. If `global_ibc_flag` is equal to 0 (meaning not used), then `local_ibc_flag` may be inferred to be 1 (meaning used), in relation to the IBC being signaled as being used by (e.g., a high-level IBC enabling the syntax described above) rather than being signaled. In this example, either or both of the local and non-local flags are signaled only if the IBC enablement flag is turned on. Otherwise, neither of these two flags needs to be signaled.
[0172] In some exemplary implementations, if a non-local-based IBC search range is used for a single picture, for example, the loop filter is disabled for the same picture. On the other hand, if only a local-based IBC search range (and not a non-local-based IBC search range) is used, the loop filter may be used for the same picture. Therefore, the loop filter enable flag for IBC is signaled under the condition that IBC is used and a non-local-based IBC search range is not used. In other words, if the other flags mentioned above indicate that a non-local-based IBC is not used, the loop filter enable flag may be signaled. The loop filter enable flag indicates whether a local-based IBC should invoke the loop filter. Otherwise, if IBC is not used, or if only a non-local IBC is used, it is assumed that loop filtering is disabled and the loop filter enable flag does not need to be signaled. Specifically, the signaling of loop filter use can be conditional on the value of global_ibc_flag. If global_ibc_flag is on (meaning non-local IBC lookup is used), the picture loop filter enable flag is presumed to be 0 (or turned off) and does not need to be signaled.
[0173] As described above, the various flags or syntactic elements can, individually or in various combinations, indicate or signal the IBC referencing mode of the current block. The IBC referencing mode represents how the local and non-local search regions are accessible to the IBC referencing block. For example, a combination of these flags or syntactic elements may indicate that only CTUs or SBs in the local search region are available for IBC referencing, and therefore for the local referencing IBC mode. In another example, a combination of these flags or syntactic elements may indicate that only CTUs or SBs in the non-local search region are available for IBC referencing, and therefore for the non-local IBC referencing mode. In yet another example, a combination of these flags or syntactic elements may indicate that both CTUs or SBs in the local and non-local search regions are available for IBC referencing, and therefore for both the local and non-local referencing IBC modes. The decoder can extract these syntactic elements independently or based on their dependencies as described above to determine the IBC referencing mode, thereby obtaining information to determine the search regions of the IBC referencing block.
[0174] Figure 27 shows a flowchart 2700 of an example method that follows the principles underlying the above implementation of IBC. The example method flow begins at 2701. In S2710, at least one syntactic element associated with intra-block copy (IBC) prediction of a video block is extracted from the video stream. In S2720, the IBC reference mode for IBC prediction of the video block is determined, and the IBC reference mode can include one of the following: no IBC mode, local reference IBC mode, non-local reference IBC mode, and local and non-local reference IBC mode. In S2730, a reconstructed sample of the video block is generated from the video stream based on the IBC reference mode. The example method flow ends at S2799.
[0175] In embodiments and implementations of this disclosure, any steps and / or operations may be combined or arranged in any quantity or order as needed. Two or more steps and / or operations may be executed in parallel. Embodiments and implementations of this disclosure may be used separately or combined in any order. Furthermore, each of the methods (or embodiments), encoders, and decoders may be implemented by processing circuits (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-temporary computer-readable medium. Embodiments of this disclosure may be applied to luminance blocks or saturation blocks. The term "block" may be interpreted as a prediction block, coding block, or coding unit, i.e., CU. The term "block" as used herein may also be used to refer to a transformation block. In the following sections, "block size" may refer to the block width or height, or the maximum width and height, or the minimum width and height, or the size of the area (width * height), or the aspect ratio of the block (width:height, or height:width).
[0176] The techniques described above can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, Figure 28 shows a computer system (2800) suitable for carrying out a particular embodiment of the disclosed subject matter.
[0177] Computer software can be coded using any suitable machine code or computer language that can undergo assembly, compilation, linking, or similar mechanisms to generate code that includes instructions that can be executed directly by one or more computer central processing units (CPUs) and graphics processing units (GPUs), or through interpretation and microcode execution, etc.
[0178] Instructions may be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, game devices, and Internet of Things devices.
[0179] The components shown in Figure 28 with respect to the computer system (2800) are essentially illustrative and are not intended to imply any limitation on the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The configuration of the components should not be construed as having any dependencies or requirements relating to any one or combination of components shown in the exemplary embodiment of the computer system (2800).
[0180] The computer system (2800) may include certain human interface input devices. Such human interface input devices can respond to input from one or more human users via, for example, tactile input (e.g., keystrokes, swipes, data glove movements), voice input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input (not shown). Using the human interface device, certain media not necessarily directly related to conscious human input may be captured, such as sound (speech, music, ambient sounds, etc.), images (scanned images, photographic images acquired from still image cameras, etc.), and video (2D video, 3D video including stereoscopic video, etc.).
[0181] The input human interface device may include one or more of the following (only one of each is shown): keyboard (2801), mouse (2802), trackpad (2803), touch screen (2810), data glove (not shown), joystick (2805), microphone (2806), scanner (2807), and camera (2808).
[0182] The computer system (2800) may also include certain human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, by tactile output, sound, light, and smell / taste. Such human interface output devices may include tactile output devices (e.g., which may include tactile feedback by touch screen (2810), data glove (not shown), or joystick (2805), but which may not function as input devices), audio output devices (e.g., speakers (2809), headphones (not shown)), and visual output devices (e.g., screens (2810) including CRT screens, LCD screens, plasma screens, and OLED screens, each having or not having touch screen input functionality, each having or not having tactile feedback functionality, some of which may be capable of outputting two-dimensional visual output or three-dimensional or more output through means such as stereographic output, virtual reality glasses (not shown), holographic displays and smoke tanks (not shown), and printers (not shown)).
[0183] The computer system (2800) may also include human-accessible storage devices and related media such as optical media including CD / DVD ROM / RW (2820) with CD / DVD or similar media (2821), thumb drives (2822), removable hard drives or solid-state drives (2823), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0184] Those skilled in the art will also understand that the term “computer-readable medium” as used in relation to the subject matter now disclosed does not include a transmission medium, carrier wave, or other transient signal.
[0185] The computer system (2800) may also include an interface (2854) to one or more communication networks (2855). The networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicle and industrial, real-time, latency-tolerant, etc. Examples of networks include local area networks such as Ethernet, cellular networks including Wi-Fi, GSM, 3G, 4G, 5G, LTE, etc., wired or wireless wide-area digital networks for television including cable television, satellite television, and terrestrial television, and vehicle and industrial networks including CAN bus. Certain networks typically require an external network interface adapter connected to a specific general-purpose data port or peripheral bus (2849) (e.g., a USB port on the computer system (2800)), while others are generally integrated into the core of the computer system (2800) 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 (2800) can communicate with other entities. Such communications may be unidirectional, receiving only (e.g., broadcast television), unidirectional, transmitting only (e.g., CANbus to a specific CANbus device), or bidirectional, for example, to other computer systems using a local or wide-area digital network. Specific protocols and protocol stacks may be used on each of those networks and network interfaces, as described above.
[0186] The aforementioned human interface device, human-accessible storage device, and network interface can be mounted on the core (2840) of the computer system (2800).
[0187] The core (2840) may include one or more central processing units (CPUs) (2841), graphics processing units (GPUs) (2842), dedicated programmable processing units in the form of field-programmable gate arrays (FPGAs) (2843), hardware accelerators for specific tasks (2844), and graphics adapters (2850), etc. These devices may be connected via a system bus (2848) along with read-only memory (ROM) (2845), random access memory (2846), internal non-user-accessible hard drives, SSDs, and other internal mass storage devices (2847). In some computer systems, the system bus (2848) is accessible in the form of one or more physical plugs, allowing for expansion with additional CPUs, GPUs, etc. Peripheral devices can be connected directly to the core's system bus (2848) or via a peripheral bus (2849). For example, a display (2810) may be connected to a graphics adapter (2850). The peripheral bus architecture includes PCI, USB, and others.
[0188] The CPU (2841), GPU (2842), FPGA (2843), and accelerator (2844) can be combined to execute specific instructions that constitute the aforementioned computer code. This computer code can be stored in ROM (2845) or RAM (2846). While RAM (2846) can also store transient data, immutable data can be stored, for example, in internal mass storage (2847). The use of cache memory, which can be closely associated with one or more CPUs (2841), GPUs (2842), mass storage (2847), ROM (2845), RAM (2846), etc., enables high-speed storage and retrieval of any of the memory devices.
[0189] Computer-readable media may contain computer code for performing various computer operations. The media and computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of a type that is well known and available to persons skilled in computer software technology.
[0190] As a non-limiting example, a computer system having an architecture (2800), particularly a core (2840), can provide functionality as a result of (one or more) processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage devices as described above, as well as media associated with specific storage devices of the core (2840) that are of a non-transient nature, such as mass storage devices (2847) or ROM (2845) within the core. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2840). The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software can cause the core (2840), specifically the processors within it (including CPUs, GPUs, FPGAs, etc.), to execute specific processes or specific parts of specific processes as described herein, including defining data structures stored in RAM (2846) and modifying such data structures according to processes defined by the software. In addition, or as an alternative, a computer system may provide functionality as a result of logic embodied in hardwired or otherwise in circuits (e.g., accelerators (2844)) that can operate in place of or in conjunction with software to perform a particular process or a particular part of a particular process as described herein. Where appropriate, references to software may encompass logic, and vice versa. Where necessary, references to computer-readable media may encompass circuits that store software for execution (e.g., integrated circuits (ICs)), circuits that embody logic for execution, or both. This disclosure encompasses any appropriate combination of hardware and software.
[0191] While this disclosure has described several exemplary embodiments, there are many modifications, substitutions, and alternative equivalents within the scope of this disclosure. Those skilled in the art will therefore understand that numerous systems and methods embodying the principles of this disclosure and thus falling within its spirit and scope can be devised, although these are not expressly shown or described herein.
[0192] Note A: Acronym JEM: Collaborative Search Model VVC: Versatile Video Coding BMS: Benchmark Set MV: Motion Vector HEVC: High-Efficiency Video Coding SEI: Supplementary and Extended Information VUI: Video Usability Information GOP: Picture Group TU: Conversion Unit PU: Prediction Unit CTU: Coding Tree Unit CTB: Coding Tree Block PB: Prediction Block HRD: Virtual Reference Decoder SNR: Signal-to-Noise Ratio CPU: Central Processing Unit GPU: Graphics Processing Unit CRT: cathode ray tube LCD: Liquid crystal display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-only memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logical Device LAN: Local Area Network GSM: Global System for Mobile Communications LTE: Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral component interconnection FPGA: Field-Programmable Gate Area SSD: Solid State Drive IC: Integrated Circuit HDR: High Dynamic Range SDR: Standard Dynamic Range JVET: Joint Video Exploration Team MPM: Highest probability mode WAIP: Wide-angle intra-prediction CU: Coding Unit PU: Prediction Unit TU: Conversion Unit CTU: Coding Tree Unit PDPC: Location-dependent prediction combination ISP: Intra Subpartition SPS: Sequence Parameter Settings PPS: Picture Parameter Set APS: Adaptive Parameter Set VPS: Video Parameter Set DPS: Decoding parameter set ALF: Adaptive Loop Filter SAO: Sample Adaptive Offset CC-ALF: Cross-Component Adaptive Loop Filter CDEF: Constrained Directional Enhancement Filter CCSO: Cross-component sample offset LSO: Local Sample Offset LR: Loop Restoration Filter AV1: AOMedia Video 1 AV2:AOMedia Video 2 RPS: Reference Picture Set DPB: Decoded Picture Buffer MMVD: Merge mode with motion vector difference IntraBC or IBC: Intrablock Copy BV: Block Vector BVD: Block Vector Difference RSM: Reference Sample Memory [Explanation of Symbols]
[0193] 101 samples 102 Arrow 103 Arrow 201 blocks 202 surrounding samples 203 Surrounding samples 204 Surrounding samples 205 surrounding samples 206 surrounding samples 104 blocks 300 Communication Systems 310 Terminal devices 320 terminal devices 330 terminal devices 340 terminal devices 350 Networks 400 Communication Systems 401 Video Source 402 Video picture or image stream 403 Video Encoder 404 Encoded video data (or encoded video bitstream) 405 Streaming Server 406 Client Subsystem 407 Copy of encoded video data 408 Client Subsystem 409 Copy of encoded video data 410 Video Decoder 411 Video picture output stream 412 displays 413 Video Acquisition Subsystem 420 Electronic equipment 430 Electronic equipment 501 Channel 510 Video Decoder 512 displays 515 buffer memory 520 Parser 521 Symbols 530 Electronic Devices 531 Receiver 551 Scaler / Inverse Unit 552 Intra Prediction Units 553 Motion Compensation Prediction Unit 555 Aggregator 556 Loop Filter Unit 557 Reference Picture Memory 558 Current picture buffer 601 Video Sources 603 Video Encoder 620 Electronic Devices, Encoders 630 Source Coder 632 Coding Engine 633 Decoder, Decoding Unit 634 Reference Picture Memory 635 Predictor 640 Transmitter 643 coded video sequence 645 Entropy Coder 650 Controller 660 channels 703 Video Encoder 721 General-purpose controller 722 Intra Encoders 723 Residual Calculator 724 Residual Encoder 725 Entropy Encoder 726 switches 728 Residual Decoder 730 Interencoder 810 Video Decoder 871 Entropy Decoder 872 Intra Decoder 873 Residual Decoder 874 Reconfiguration Module 880 Interdecoder 902 Split options or patterns 904 Split options or patterns 906 division options or patterns 908 division options or patterns 1002 partitions, pattern 1004 partitions, pattern 1006 partitions, pattern 1008 partitions, pattern 1102 Vertical bisection 1104 Horizontal bisection 1106 Vertical third division 1108 Horizontal third division 1200 base block 1202 Square Partition 1204 Square Partition 1206 Square Partition 1208 Square Partition 1402 partitions 1404 partitions 1406 partitions 1408 partitions 1410 Overall Exemplary Partition Pattern 1420 Corresponding tree structure / representation 1502 Square Coding Blocks 1602 blocks 1802 Block 1804 Current CTU 1806 Coding Blocks 1808 Thick dotted line frame 1810 CTU / SB 2104 Intermediate time 2106 Intermediate time 2108 Intermediate time 2302 Panel 2304 Panel 2402 Panel 2404 Panel 2700 Flowchart 2800 Computer Systems 2801 Keyboard 2802 Mouse 2803 Trackpad 2805 Joystick 2806 Microphone 2807 Scanner 2808 Camera 2809 Speaker 2810 screen 2820 CD / DVD ROM / RW 2821 Medium 2822 Thumb Drive 2823 Removable hard drive or solid-state drive 2840 cores 2841 Central Processing Unit (CPU) 2842 Graphics Processing Unit (GPU) 2843 Field-Programmable Gate Array (FPGA) 2844 Hardware Accelerators 2845 Read-only memory (ROM) 2846 random access memory 2847 Internal Mass Storage 2848 System Bus 2849 Local buses 2850 Graphics Adapter 2854 Network Interface 2855 Communication Network
Claims
1. A method for reconstructing video blocks within a video stream, The steps include receiving the aforementioned video stream, A step of extracting at least one syntactic element from the video stream, wherein the at least one syntactic element is associated with an intra-block copy (IBC) prediction of the video block; A step of determining an IBC reference mode for IBC prediction of the video block, wherein the IBC reference mode comprises one of the following: no IBC mode, local reference IBC mode, non-local reference IBC mode, and local and non-local reference IBC mode. A method comprising the step of generating a reconstructed sample of the video block from the video stream based on the IBC reference mode.
2. The method according to claim 1, wherein the video block belongs to a current IBC prediction unit comprising a plurality of video blocks.
3. The method according to claim 2, wherein, in the non-local reference IBC mode, the reference block of the IBC prediction in the video block comprises a reference sample in a reconstructed frame region that is not adjacent to the current IBC prediction unit in the coding direction of the current IBC prediction unit.
4. The method according to any one of claims 1 to 3, wherein, in the local reference IBC mode, the reference block of the IBC prediction in the video block comprises a reference sample in a predetermined set of adjacent units of the current IBC prediction unit or a video block already reconstructed in the current IBC prediction unit.
5. The method according to claim 4, wherein a predetermined set of adjacent units comprises a single unit to the left of the current IBC prediction unit.
6. The method according to claim 4, wherein, in the local reference IBC mode, the reference samples for IBC prediction are maintained in a fixed-size on-chip reference sample memory (RSM).
7. The method according to claim 6, wherein the fixed size of the RSM corresponds to the size of one IBC prediction unit.
8. The first portion of the RSM comprises the corresponding sample of the video block already reconstructed by the current IBC prediction unit, The second portion of the RSM comprises corresponding reconstituted samples from a predetermined set of adjacent units. The method according to claim 7.
9. The method of claim 8, further comprising the step of replacing the reconstructed sample of the adjacent unit in the RSM corresponding to the video block in the current IBC prediction unit with the reconstructed sample of the video block.
10. The current IBC prediction unit is divided into predetermined partition sets, The video block is a first coding block to be reconfigured from the current section of the predetermined division set, The method further includes the step of resetting the RSM segment corresponding to the current segment as unavailable for IBC reference before the video block is reconfigured. The method according to claim 6.
11. The method according to any one of claim 1 or 2, wherein the at least one syntactic element comprises a first flag for indicating that a local IBC reference is valid when set, and a second flag for indicating that a non-local reference IBC is valid when set.
12. The steps include determining that the IBC reference mode is the local reference IBC mode in response to the first flag being set and the second flag not being set, The steps include determining that the IBC reference mode is the non-local reference IBC mode in response to the second flag being set and the first flag not being set, In response to the fact that neither the first flag nor the second flag is set, the step of determining that the IBC reference mode is the local and non-local reference IBC mode, The further step of determining that the IBC reference mode is the no-IBC mode in response to the fact that neither the first flag nor the second flag is set, The method according to claim 11.
13. The method according to claim 11, wherein the first flag and the second flag are signaled in the video stream at the coding block level, coding unit level, coding tree unit level, slice level, picture level, or sequence level.
14. The method according to any one of claims 1 or 2, wherein the at least one syntactic element comprises a first flag for indicating whether IBC is used for the video block.
15. The step of determining that the IBC reference mode is the no-IBC mode in response to a first flag indicating that IBC is not used for the video block, further comprising: The method according to claim 14.
16. The steps include: In response to the first flag indicating that an IBC is used in the video block, further extracting a second flag as part of the at least one syntactic element to indicate whether a non-local IBC reference is used; The further step of inferring that the IBC reference mode of the video block is the local reference IBC mode in response to the second flag indicating that a non-local IBC reference is not used, The method according to claim 15.
17. The steps include: in response to the second flag indicating that a non-local IBC reference is used, further extracting a third flag as part of the at least one syntactic element to indicate whether a local IBC reference is used; In response to the third flag indicating that a local IBC reference is used, the steps include determining that the IBC reference mode is the local and non-local reference IBC mode, The further step of determining that the IBC reference mode is the non-local reference IBC mode in response to the third flag indicating that a local IBC reference is not used, The method according to claim 16.
18. Loop filtering is enabled when the IBC reference mode is the local reference IBC mode. The loop filtering process is disabled when the IBC reference mode is the non-local reference IBC mode or the local and non-local reference IBC mode. The method according to any one of claims 1 to 3.
19. The method according to claim 18, wherein whether the loop filtering is effective is derived from the at least one syntactic element for signaling the IBC reference mode.
20. A video processing device for reconfiguring video blocks in a video stream, comprising a memory for storing computer instructions, and executing the computer instructions, Extracting at least one syntactic element from the video stream, wherein the at least one syntactic element is associated with an intra-block copy (IBC) prediction of the video block; Determining the IBC reference mode for the IBC prediction of the video block, wherein the IBC reference mode comprises one of the following: no IBC mode, local reference IBC mode, non-local reference IBC mode, and local and non-local reference IBC mode. A video processing device comprising: a processor for generating reconstructed samples of the video blocks from the video stream based on the IBC reference mode; and a processor for performing these tasks.