Interaction of intra block copy and optional temporal motion vector prediction

By selectively applying intra-block copying and motion compensation algorithms in video coding, combined with optional temporal motion vector prediction technology, the problem of insufficient compatibility of intra-block copying and motion compensation algorithms in existing technologies is solved, thereby improving coding efficiency and quality, and significantly reducing redundancy, especially when processing screen content.

CN115442612BActive Publication Date: 2026-03-17DOUYIN VISION CO LTD +1
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2019-06-05
Publication Date
2026-03-17

AI Technical Summary

Technical Problem

Existing video coding technologies struggle to effectively utilize the compatibility between intra-frame block copying and motion compensation algorithms when processing high-resolution visual information, especially screen content, resulting in limitations in coding efficiency and quality.

Method used

By selectively applying intra-block copying and motion compensation algorithms, combined with optional temporal motion vector prediction (ATMVP) technology, the video coding process is optimized, avoiding the use of unavailable space or reference blocks and improving coding efficiency.

Benefits of technology

It improves the efficiency and quality of video encoding, especially when processing screen content, reducing redundancy and improving encoding efficiency and decoding performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115442612B_ABST
    Figure CN115442612B_ABST
Patent Text Reader

Abstract

Devices, systems, and methods for applying intra-block copying (IBC) in video coding are described. Generally, methods for combining IBC with existing motion compensation algorithms used for video coding and decoding are described. In one typical aspect, a method for video coding using IBC includes: determining whether to encode a current block of a current frame using a motion compensation algorithm; and, based on that determination, encoding the current block by selectively applying intra-block copying to the current block. In another typical aspect, a method for video coding using IBC includes: determining whether to encode a current block of a current frame using intra-block copying; and, based on that determination, encoding the current block by selectively applying a motion compensation algorithm to the current block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of Chinese Patent Application No. 201910488488.X, filed on June 5, 2019. Technical Field

[0002] Generally speaking, this patent document relates to video coding technology. Background Technology

[0003] Motion compensation is a technique in video processing that predicts frames in a video given previous and / or future frames by taking into account the motion of objects in the camera and / or video. Motion compensation can be used in the encoding and decoding of video data to achieve video compression. Summary of the Invention

[0004] The apparatus, system and method related to intra-block copying for motion compensation are described.

[0005] In a typical aspect, the disclosed techniques can be used to provide a video coding method using intra-block copying. The method includes: determining whether to encode the current block of the current image using a motion compensation algorithm; and, based on that determination, encoding the current block by selectively applying intra-block copying to the current block.

[0006] In another typical aspect, the disclosed techniques can be used to provide an alternative method for video coding using intra-block copying. This method includes: determining whether to encode the current block of the current image using intra-block copying; and, based on that determination, encoding the current block by selectively applying a motion compensation algorithm to the current block.

[0007] In another typical aspect, the disclosed techniques can be used to provide a video decoding method using intra-block copying. The method includes: determining whether to use a motion compensation algorithm to decode the current block of the current image; and based on that determination, decoding the current block by selectively applying intra-block copying to the current block.

[0008] In another typical aspect, the disclosed techniques can be used to provide an alternative method for video decoding using intra-block copying. This method includes: determining whether to decode the current block of the current image using intra-block copying; and, based on that determination, decoding the current block by selectively applying a motion compensation algorithm to the current block.

[0009] In another typical aspect, a method for decoding visual information is disclosed. The method includes: determining from the coded representation that a block to be decoded, representing a portion of the visual information, is encoded using an optional temporal motion vector prediction (ATMVP) coding technique; determining that spatially adjacent blocks of the decoded block are encoded using an intra-block copy (IBC) coding technique; determining that the spatially adjacent blocks cannot provide motion vectors to derive temporal vectors for the decoded block; and deriving temporal vectors by using an ATMVP decoding technique corresponding to the ATMVP coding technique and by avoiding the use of spatially adjacent blocks to provide motion vectors for the decoded block.

[0010] In another typical aspect, a different method for decoding visual information is disclosed. This method includes: determining from the coded representation that a block representing a portion of the visual information is encoded using an optional temporal motion vector prediction (ATMVP) coding technique; determining that a juxtaposed block in a reference image is encoded using an intra-block copy (IBC) coding technique; determining that the juxtaposed block in the reference image cannot be used to derive motion vectors for sub-blocks of the decoded block; and providing temporal motion vector candidates for sub-blocks of the decoded block by using an ATMVP decoding technique corresponding to the ATMVP coding technique and by avoiding the use of the juxtaposed block in the reference image.

[0011] In another typical aspect, a different visual information processing method is disclosed. This method includes encoding visual information into multiple encoded pictures and multiple indicators, the multiple indicators indicating one or more encoding techniques applied, the multiple indicators including an intra-block copying (IBC) technique indicator and an ATMVP technique indicator, wherein a first block of a first picture associated with the visual information is encoded using the IBC technique, and a second block of a second picture associated with the visual information is encoded using the ATMVP technique, wherein the IBC technique uses different blocks of the first picture to encode the first block of the first picture, and the ATMVP technique uses a third picture associated with the visual information to encode the second picture. In yet another typical aspect, the above method is implemented in the form of processor-executable code and stored in a computer-readable program medium.

[0012] In another typical aspect, an apparatus is disclosed that is configured or operable to perform the methods described above. The apparatus may include a processor programmed to implement the methods.

[0013] In another typical aspect, a video decoder device can be implemented as described in this paper.

[0014] The above-mentioned aspects, as well as other aspects and features, of the disclosed technology are described in more detail in the accompanying drawings, description, and claims. Attached Figure Description

[0015] Figure 1 An example of intra-frame block copying technology is shown.

[0016] Figure 2 An example of motion prediction using the Optional Temporal Motion Vector Prediction (ATMVP) algorithm is shown.

[0017] Figure 3 A flowchart is shown as an example method for video encoding using intra-frame block copying according to the disclosed techniques.

[0018] Figure 4 A flowchart is shown as another example method for video encoding using intra-frame block copying according to the disclosed techniques.

[0019] Figure 5 A flowchart is shown as an example method for video decoding using intra-frame block copying according to the disclosed techniques.

[0020] Figure 6 A flowchart is shown as another example method for video decoding using intra-frame block copying according to the disclosed techniques.

[0021] Figure 7 It is a block diagram illustrating an example of the structure of a computer system or other control device that can be used to implement various parts of the present disclosure.

[0022] Figure 8 A block diagram of an example embodiment of a mobile device that can be used to implement various parts of the technology disclosed herein is shown.

[0023] Figure 9 This is a flowchart of an example method for visual information processing.

[0024] Figure 10 This is a flowchart of an example method for visual information processing. Detailed Implementation

[0025] For ease of understanding, chapter headings are used in this document, and the scope of the techniques and embodiments discussed in each chapter is not limited to that chapter.

[0026] With the increasing demand for high-resolution visual information such as videos, images, and 3D scenes, video coding methods and technologies are ubiquitous in modern technology. The technologies described in this application can be applied to various types of visual information, including videos, images, and 3D scenes. A picture of visual information can be a frame in a video, a portion of an image, an object in a 3D scene, or a portion of a 3D scene. A block can be a portion of a visual information picture, such as a coding unit (CU), maximum coding unit (LCU), sample, prediction unit (PU), etc., as described in this application. A sub-block of visual information can be a PU, such as a sub-CU, sample, etc. A PU can be a pixel, voxel, or minimum resolution quantum of visual information. Video codecs typically include electronic circuitry or software that compresses or decompresses digital video and are constantly being improved to provide higher coding efficiency. A video codec converts uncompressed video into a compressed format, or vice versa. There is a complex relationship between video quality, the amount of data used to represent the video (determined by the bit rate), the complexity of the encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, and end-to-end latency (delay). Compression formats typically conform to standard video compression specifications, such as the High Efficiency Video Coding (HEVC) standard (also known as H.265 or MPEG-H Part 2), a general video coding standard yet to be finalized, or other current and / or future video coding standards.

[0027] Embodiments of the disclosed technology can be applied to existing video coding standards (e.g., HEVC, H.265) and future standards to improve runtime performance. In this document, section headings are used to improve readability and do not in any way limit the discussion or embodiments (and / or implementations) to their respective sections.

[0028] 1. Examples of reference images and lists of reference images

[0029] In HEVC, there are two types of reference images: short-term and long-term. When a reference image is no longer needed for prediction, it can be marked as "not used for reference." HEVC introduces a new method for managing reference images, called the Reference Image Set (RPS) or buffer description.

[0030] The concept of RPS (Reference Pointer Set) is used to mark pictures as "for short-term reference," "for long-term reference," or "not for reference." An RPS is a set of picture indicators that signals in each slice header and consists of a set of short-term pictures and a set of long-term pictures. After decoding the first slice header of a picture, the pictures in the DPB (Diagram Block Perimeter) are marked according to the RPS. Pictures indicated by the short-term picture portion of the RPS in the DPB are retained as short-term pictures. Short-term or long-term pictures indicated by the long-term picture portion of the RPS in the DPB are converted to or retained as long-term pictures. Finally, pictures in the DPB that have no indicator in the RPS are marked as "not for reference." Therefore, all decoded pictures that might be used as a reference for predicting the decoding order of any subsequent pictures must be included in the RPS.

[0031] The RPS consists of a set of Picture Order Count (POC) values ​​used to identify pictures in the DPB. In addition to signaling POC information, the RPS also sends a flag for each picture. Each flag indicates whether the current picture has a corresponding picture available or unavailable for reference. It should be noted that even if a reference picture is signaled as unavailable for the current picture, it is still retained in the DPB and may later be available for reference and used to decode future pictures.

[0032] From the POC information and availability flags, five reference image lists, as shown in Table 1, can be created. The list RefPicSetStCurrBefore consists of short-lived images that are available for reference to the current image and have a POC value lower than the current image. RefPicSetStCurrAfter consists of available short-lived images with a POC value higher than the current image. RefPicSetStFoll is a list of all short-lived images that are not available for the current image but can be used as reference images for decoding subsequent images in the decoding order. Finally, the lists RefPicSetLtCurr and RefPicSetLtFoll contain long-lived images that are available for reference to the current image and those that are not, respectively.

[0033] Table 1 List of Reference Images

[0034]

[0035] 1.1 Examples of short-term and long-term reference images

[0036] The syntax for the general sequence parameter set is shown below:

[0037]

[0038] The syntax for the general slice segment header is shown below:

[0039]

[0040] The semantic definitions used in the above syntax table are as follows:

[0041] `num_short_term_ref_pic_sets` specifies the number of `st_ref_pic_set()` syntax structures included in the SPS. The value of `num_short_term_ref_pic_sets` should be between 0 and 64 (inclusive).

[0042] In some embodiments, the decoder can allocate memory for a total number of `num_short_term_ref_pic_sets+1st_ref_pic_set()` syntax structures, since a `st_ref_pic_set()` syntax structure may be directly signaled in the stripe header of the current image. The `st_ref_pic_set()` syntax structure that is directly signaled in the stripe header of the current image has an index equal to `num_short_term_ref_pic_set`.

[0043] A long_term_ref_pics_present_flag value of 0 indicates that inter-frame prediction of any coded picture in CVS does not use a long-term reference picture. A long_term_ref_pics_present_flag value of 1 indicates that inter-frame prediction of one or more coded pictures in CVS can use a long-term reference picture.

[0044] `num_long_term_ref_pics_sps` specifies the number of candidate long-term reference pictures specified in the SPS. The value of `num_long_term_ref_pics_sps` should be between 0 and 32 (inclusive).

[0045] lt_ref_pic_poc_lsb_sps[i] specifies the picture order counting module MaxPicOrderCntLsb for the i-th candidate long-term reference picture in the SPS. The number of bits used to represent lt_ref_pic_poc_lsb_sps[i] is equal to log2_max_pic_order_cnt_lsb_minus4+4.

[0046] The value of used_by_curr_pic_lt_sps_flag[i] being 0 indicates that the i-th candidate long-term reference image specified in the SPS is not used for reference by the image specified in the SPS that is included in its Long-Term Reference Image Set (RPS).

[0047] `short_term_ref_pic_set_sps_flag` equal to 1 indicates that the short-term RPS of the current image is derived from a `st_ref_pic_set()` syntax structure based on the active SPS, which is identified by the syntax element `short_term_ref_pic_set_idx` in the stripe header. `short_term_ref_pic_set_sps_flag` equal to 0 indicates that the short-term RPS of the current image is derived from a `st_ref_pic_set()` syntax structure directly included in the current image's stripe header. When `num_short_term_ref_pic_sets` equals 0, the value of `short_term_ref_pic_set_sps_flag` should be 0.

[0048] `short_term_ref_pic_set_idx` assigns the index of the syntax structure `st_ref_pic_set()` used to derive the shortest RPS (Reference Shortest Specified Photon) for the current image to the list of syntax structures `st_ref_pic_set()` contained in the active SPS. The syntax element `short_term_ref_pic_set_idx` is represented by `Ceil(log2(num_short_term_ref_pic_set))` bits. When it does not exist, the value of `short_term_ref_pic_set_idx` is inferred to be 0. The value of `short_term_ref_pic_set_idx` should be in the range of 0 to `num_short_term_ref_pic_sets–1` (inclusive).

[0049] In some embodiments, the variable CurrRpsIdx is exported as follows:

[0050] --If short_term_ref_pic_set_sps_flag equals 1, then CurrRpsIdx is set to equal short_term_ref_pic_set_idx.

[0051] --Otherwise, set CurrRpsIdx to equal num_short_term_ref_pic_sets.

[0052] `num_long_term_sps` specifies the number of entries in the long-term reference frames (RPS) of the current image, which is derived from a candidate long-term reference image specified in the active long-term reference frames (SPS). The value of `num_long_term_sps` should be in the range of 0 to `num_long_term_ref_pics_sps` (inclusive). If it does not exist, the value of `num_long_term_sps` is inferred to be equal to 0.

[0053] `num_long_term_pics` specifies the number of entries in the long-term RPS of the current image that directly emits a signal at the stripe header. When it does not exist, the value of `num_long_term_pics` is inferred to be 0.

[0054] In some embodiments, when nuh_layer_id equals 0, the value of num_long_term_pics should be less than or equal to sps_max_dec_pic_buffering_minus1[TemporalId]-NumNegativePics[CurrRpsIdx]-NumPositivePics[CurrRpsIdx]-num_long_term_sps–TwoVersionsOfCurrDecPicFlag.

[0055] `lt_idx_sps[i]` assigns the index of the i-th entry in the long-term reference pics (RPS) of the current image to the list of candidate long-term reference pics specified in the active long-term reference pics (SPS). The number of bits used to represent `lt_idx_sps[i]` is equal to `Ceil(Log2(num_long_term_ref_pics_sps))`. If it does not exist, the value of `lt_idx_sps[i]` is inferred to be equal to 0. The value of `lt_idx_sps[i]` should be in the range of 0 to `num_long_term_ref_pics_sps-1` (inclusive).

[0056] poc_lsb_lt[i] specifies the value of the MaxPicOrderCntLsb module for the i-th entry in the long-term RPS of the current image. The length of the poc_lsb_lt[i] syntax element is log2_max_pic_order_cnt_lsb_minus4+4 bits.

[0057] The value of used_by_curr_pic_lt_flag[i] being equal to 0 indicates that the i-th entry in the long-term RPS of the current image is not used as a reference by the current image.

[0058] In some embodiments, the variables PocLsbLt[i] and UsedByCurrPicLt[i] are derived as follows:

[0059] --If i is less than num_long_term_sps, then set PocLsbLt[i] to equal lt_ref_pic_poc_lsb_sps[lt_idx_sps[i]] and set UsedByCurrPicLt[i] to equal used_by_curr_pic_lt_sps_flag[lt_idx_sps[i]].

[0060] --Otherwise, set PocLsbLt[i] to equal poc_lsb_lt[i] and UsedByCurrPicLt[i] to equal used_by_curr_pic_lt_flag[i].

[0061] A value of 1 for delta_poc_msb_present_flag[i] indicates that delta_poc_msb_cycle_lt[i] exists. A value of 0 for delta_poc_msb_present_flag[i] indicates that delta_poc_msb_cycle_lt[i] does not exist.

[0062] In some embodiments, `prevTid0Pic` is the previous image in decoding order, which has a TemporalId equal to 0 and is not a RASL, RADL, or SLNR image. `setOfPrevPocVals` is a set containing the following:

[0063] --prevTid0Pic's PicOrderCntVal,

[0064] --prevTid0Pic's RPS for each image's PicOrderCntVal

[0065] --PicOrderCntVal for each image whose decoding order is after prevTid0Pic and before the current image.

[0066] In some embodiments, when there is more than one value in setOfPrevPocVals (where the value module MaxPicOrderCntLsb is equal to PocLsbLt[i]), delta_poc_msb_present_flag[i] should be equal to 1.

[0067] delta_poc_msb_cycle_lt[i] is used to determine the most significant bit of the image sequence count value for the i-th entry in the current image's long-term RPS. If delta_poc_msb_cycle_lt[i] does not exist, it is assumed to be equal to 0.

[0068] In some embodiments, the variable DeltaPocMsbCycleLt[i] is derived as follows:

[0069] If (i == 0 || i == num_long_term_sps)

[0070] DeltaPocMsbCycleLt[i]=delta_poc_msb_cycle_lt[i]

[0071] Otherwise DeltaPocMsbCycleLt[i]=delta_poc_msb_cycle_lt[i]+DeltaPocMsbCycleLt[i-1]

[0072] 1.2 Example of Motion Vector Prediction (MVP) between Short-Term and Long-Term Reference Images

[0073] In some embodiments, motion vector prediction is allowed only when the target reference image type and the prediction reference image type are the same. In other words, motion vector prediction is not allowed when the types are different.

[0074] Advanced Motion Vector Prediction (AMVP) This is an example of motion vector prediction that includes an existing implementation. The relevant parts of an existing AMVP implementation are described below.

[0075] The motion vector mvLXA and the availability flag availableFlagLXA are exported in the following order:

[0076] (1) The sample position (xNbA0, yNbA0) is set to be equal to (xPb-1, yPb+nPbH), and the sample position (xNbA1, yNbA1) is set to be equal to (xNbA0, yNbA0-1).

[0077] (7) When availableFlagLXA equals 0, the following applies to (xNbAk, yNbAk), from (xNbA0, yNbA0) to (xNbA1, yNbA1) or until availableFlagLXA equals 1:

[0078] --The following applies when availableAk equals TRUE and availableFlagLXA equals 0:

[0079] If PredFlagLX[xNbAk][yNbAk] equals 1 and LongTermRefPic(currPic,currPb,refIdxLX,RefPicListX) equals LongTermRefPic(currPic,currPb,RefIdxLX[xNbAk][yNbAk],RefPicListX), then set availableFlagLXA to 1 and make the following allocation:

[0080] mvLXA=MvLX[xNbAk][yNbAk]

[0081] refIdxA=RefIdxLX[xNbAk][yNbAk]

[0082] refPicListA = RefPicListX

[0083] Otherwise, when PredFlagLY[xNbAk][yNbAk] (where Y = !X) equals 1 and LongTermRefPic(currPic,currPb,refIdxLX,RefPicListX) equals LongTermRefPic(currPic,currPb,RefIdxLY[xNbAk][yNbAk],RefPicListY), set availableFlagLXA to 1.

[0084] The motion vector mvLXB and the availability flag availableFlagLXB are exported in the following order:

[0085] (1) The sample positions (xNbB0,yNbB0), (xNbB1,yNbB1) and (xNbB2,yNbB2) are set to (xPb+nPbW,yPb-1), (xPb+nPbW-1,yPb-1) and (xPb-1,yPb-1) respectively.

[0086] (5) When IsScaledFlagLx equals 0, availableFlagLXB is set to 0, and the following applies to (xNbBk, yNbBk), from (xNbB0, yNbB0) to (xNbB2, yNbB2) or until availableFlagLXB equals 1:

[0087] --Using the luminance position (xCb, yCb), the current luminance coding block size nCbS, the luminance position (xPb, yPb), the luminance prediction block width nPbW, the luminance prediction block height nPbH, the luminance position (xNbY, yNbY) set to (xNbBk, yNbBk), and the partition index partIdx as input, call the prediction block availability derivation procedure as specified in Section 6.4.2, and assign the output to the prediction block availability flag availableBk.

[0088] --The following applies when availableBk equals TRUE and availableFlagLXB equals 0:

[0089] If PredFlagLX[xNbBk][yNbBk] equals 1 and LongTermRefPic(currPic,currPb,refIdxLX,RefPicListX) equals LongTermRefPic(currPic,currPb,RefIdxLX[xNbBk][yNbBk],RefPicListX), then set availableFlagLXB to 1 and make the following allocation:

[0090] mvLXB=MvLX[xNbBk][yNbBk]

[0091] refIdxB=RefIdxLX[xNbBk][yNbBk]

[0092] refPicListB = RefPicListX

[0093] Otherwise, if PredFlagLY[xNbBk][yNbBk] (where Y = !X) equals 1 and LongTermRefPic(currPic,currPbrefIdxLX,RefPicListX) equals LongTermRefPic(currPic,currPb,RefIdxLY[xNbBk][yNbBk],RefPicListY), then set availableFlagLXB to 1 and perform the following allocation:

[0094] mvLXB=MvLY[xNbBk][yNbBk].

[0095] Time-Motion Vector Prediction (TMVP) This is another example of motion vector prediction that includes an existing implementation. The relevant parts of an existing TMVP implementation are described below.

[0096] The variables mvLXCol and availableFlagLXCol are exported as follows:

[0097] If LongTermRefPic(currPic,currPb,refIdxLX,LX) is not equal to LongTermRefPic(ColPic,colPb,refIdxCol,listCol), then set both components of mvLXCol to 0 and set availableFlagLXCol to 0.

[0098] Otherwise, set the variable availableFlagLXCol to 1, and set refPicListCol[refIdxCol] to the reference image with reference index refIdxCol in the listCol of reference images containing the band of the predicted block colPb in the juxtaposed images specified by ColPic.

[0099] 2. Example Implementation of Intra-Block Copying (IBC)

[0100] Intra-block copying (IBC) extends the concept of motion compensation from inter-frame coding to intra-frame coding. For example... Figure 1 As shown, when IBC is applied, the current block is predicted from a reference block in the same image. Samples in the reference block must be reconstructed before encoding or decoding the current block. While IBC is not so effective for most camera-captured sequences, it shows a significant coding gain for screen content. This is because screen content images contain many repeating patterns, such as icons and text characters. IBC can effectively eliminate redundancy between these overlapping patterns.

[0101] In HEVC-SCC, if the current image is selected as the reference image, an internal coding unit (CU) can be used. In this case, the MV is renamed to a block vector (BV), and the BV always has integer pixel precision. To be compatible with the major HEVC specification, the current image is marked as the "long-term" reference image in the decoded picture buffer (DPB). It should be noted that, similarly, in multi-view / 3D video coding standards, inter-view reference images are also marked as "long-term" reference images.

[0102] 2.1 Example of image tagging when IBC is enabled

[0103] Semantics related to IBC in PPS A value of 1 for `pps_curr_pic_ref_enabled_flag` indicates that an image referencing PPS may be included in the list of reference images for the image strip itself. A value of 0 for `pps_curr_pic_ref_enabled_flag` indicates that an image referencing PPS is never included in the list of reference images for the image strip. When not present, the value of `pps_curr_pic_ref_enabled_flag` is inferred to be 0.

[0104] When sps_curr_pic_ref_enabled_flag equals 0, the value of pps_curr_pic_ref_enabled_flag should also be 0, which is a requirement for bitstream consistency.

[0105] The derivation of the variable TwoVersionsOfCurrDecPicFlag is as follows:

[0106] TwoVersionsOfCurrDecPicFlag=pps_curr_pic_ref_enabled_flag&&(sample_adaptive_offset_enabled_flag||!pps_deblocking_filter_disabled_flag||deblocking_filter_override_enabled_flag)

[0107] When sps_max_dec_pic_buffering_minus1[TemporalId] equals 0, the value of TwoVersionsOfCurrDecPicFlag should be equal to 0.

[0108] Decoding process. After the loop filtering process is invoked, the currently decoded image is stored in an empty image storage buffer in the DPB, the DPB's fullness is increased by 1, and this image is marked as "for short-term reference".

[0109] When TwoVersionsOfCurrDecPicFlag equals 1, the current decoded image before the loop filtering process call as specified in section F.8.7[1] is stored in the empty image storage buffer in the DPB, the DPB fullness is increased by 1, and this image is marked as "for long-term reference".

[0110] 3. Example of Joint Exploration Model (JEM)

[0111] In some embodiments, reference software called the Joint Exploration Model (JEM) is used to explore future video coding techniques. In JEM, sub-block-based prediction is used in a variety of coding tools, such as affine prediction, optional temporal motion vector prediction (ATMVP), spatiotemporal motion vector prediction (STMVP), bidirectional optical flow (BIO), frame rate upconversion (FRUC), locally adaptive motion vector resolution (LAMVR), overlapping block motion compensation (OBMC), local illumination compensation (LIC), and decoder-side motion vector optimization (DMVR).

[0112] 3.1 Example of Optional Temporal Motion Vector Prediction (ATMVP)

[0113] In the ATMVP method, the temporal motion vector prediction (TMVP) method is modified by obtaining multiple sets of motion information (including motion vectors and reference indices) from blocks smaller than the current CU.

[0114] Figure 2 An example of ATMVP motion prediction processing for CU 600 is shown. The ATMVP method predicts the motion vectors of sub-CUs 601 within CU 600 in two steps. The first step is to identify the corresponding block 651 in the reference image 650 using temporal vectors. The reference image 650 is also called the motion source image. The second step is to segment the current CU 600 into sub-CUs 601 and obtain the motion vector and reference index of each sub-CU from the block corresponding to each sub-CU.

[0115] In the first step, reference image 650 and the corresponding block are determined by the motion information of spatially adjacent blocks of the current CU 600. To avoid duplicate scanning of adjacent blocks, the first MERGE candidate in the MERGE candidate list of the current CU 600 is used. The first available motion vector and its associated reference index are set as a temporal vector and an index to the motion source image. In this way, the corresponding block can be identified more accurately than a TMVP, where the corresponding block (sometimes called the juxtaposed block) is always located at the lower right corner or center relative to the current CU.

[0116] In the second step, the corresponding block of sub-CU 651 is identified using the temporal vector in the motion source image 650 by adding a temporal vector to the coordinates of the current CU. For each sub-CU, the motion information of the sub-CU is derived using the motion information of its corresponding block (e.g., the smallest motion grid covering the center sample). After identifying the motion information of the corresponding N×N block, it is converted into the motion vector and reference index of the current sub-CU, similar to the TMVP method of HEVC, where motion scaling and other processing are applied. For example, the decoder checks whether a low-latency condition is met (e.g., the POC of all reference images of the current image is less than the POC of the current image) and may use the motion vector MVx (e.g., the motion vector corresponding to the list of reference images X) to predict the motion vector MVy for each sub-CU (e.g., X equals 0 or 1 and Y equals 1-X).

[0117] 4. Example methods of IBC in video encoding

[0118] Figure 3 A flowchart illustrating an exemplary method for video encoding using intra-block copying is provided. Method 300 includes, at step 310, determining whether to encode a current block of the current image using a motion compensation algorithm. Method 300 includes, at step 320, encoding the current block by selectively applying intra-block copying to the current block based on this determination. More generally, whether to apply intra-block copying to the current block is based on whether a specific motion compensation algorithm is used to encode the current block.

[0119] Figure 4 A flowchart of another example method for video encoding using intra-block copying is shown. Method 400 includes, at step 410, determining whether to encode the current block of the current image using intra-block copying. Method 400 includes, at step 420, encoding the current block by selectively applying a motion compensation algorithm to the current block based on this determination. More generally, whether to encode the current block using a motion compensation algorithm is based on whether to encode the current block using intra-block copying.

[0120] Figure 5 A flowchart illustrating an exemplary method for video decoding using intra-block copying is shown. The method 500 includes, at step 510, determining whether to decode a current block of a current image using a motion compensation algorithm. The method 500 includes, at step 520, decoding the current block by selectively applying intra-block copying to the current block based on this determination. More generally, whether to apply intra-block copying to the current block is based on whether a specific motion compensation algorithm is used to decode the current block.

[0121] Figure 6A flowchart of another exemplary method for video decoding using intra-block copying is shown. Method 600 includes, at step 610, determining whether to decode the current block of the current image using intra-block copying. Method 600 includes, at step 620, decoding the current block by selectively applying a motion compensation algorithm to the current block based on the determination. More generally, whether to decode the current block using a motion compensation algorithm is based on whether to decode the current block using intra-block copying.

[0122] exist Figures 3 to 6 and Figures 9 to 10 The methods described in the context of 300, 400, 500, 605, 900, and 1000 may further include a step of determining whether the motion compensation algorithm is compatible with intra-block copying. The compatibility of intra-block copying and motion compensation algorithms for different specific motion compensation algorithms is illustrated in the following examples.

[0123] Example 1 The paper argues that the temporal vectors used in the first step of ATMVP cannot be obtained from neighboring blocks encoded with IBC. In one example, the neighboring blocks of the current image as its reference image are marked as "unavailable" or internally encoded in the first step of ATMVP.

[0124] Example 2 It is proposed that if the corresponding block of the sub-CU is encoded using IBC in the second step of ATMVP, the corresponding block of the sub-CU should be marked as "unavailable" or "internal encoded".

[0125] Example 3 Alternatively, it was proposed that if IBC is used to encode the corresponding block in the second step of ATMVP, the motion information of the corresponding block in the subCU is copied to the subCU without any scaling. The subCU applies IBC with the same MV as the corresponding block, but the reference image is changed to the current image.

[0126] Example 4 More than one ATMVP candidate can be added, one of which can be derived from a temporally adjacent block using the method described above, and another can be derived from a temporally adjacent block (if the juxtaposed subCU is encoded in IBC, then at least one subCU has a different method for deriving the motion information of the subCU).

[0127] The following are some examples of the techniques described in this application, listed in the form of clauses. Blocks used in this application can be continuous or non-contiguous sets of pixels, voxels, subpixels, and / or subvoxels. For example, a block can be enclosed by straight lines, such as a 4x4 square or a 6x4 rectangle, or by curves, such as an ellipse.

[0128] The visual information used in this application may be a subset of the visual information. The encoded representation used in this application may be a bitstream representing visual information encoded using one of the techniques described in this application. The indications used in this application may be flags or fields in the encoded representation, or may be multiple separate flags or fields.

[0129] The decoding techniques used in this application can be applied by a decoder and can be implemented in hardware or software. Decoding techniques can undo everything done by the encoder in reverse order. When a suitable decoding technique is applied to the encoded representation, the result is the acquisition of visual information. The initial block among the multiple blocks used in this application is the block that appears before the first block in the encoded representation. The juxtaposed reference image can be a reference image used for encoding / decoding the block being encoded / decoded.

[0130] 1. A method for decoding visual information (e.g., Figure 9 The method described in 900 includes:

[0131] The decoded block, which represents a portion of the visual information, is determined from the encoded representation (902) to be encoded using the Optional Temporal Motion Vector Prediction (ATMVP) coding technique;

[0132] It is determined that the spatially adjacent blocks of the block being decoded (904) are encoded using intra-block copying (IBC) coding technology;

[0133] Determined (906) that the spatially adjacent blocks cannot provide motion vectors to derive temporal vectors for the decoded block; and

[0134] The time-domain vector is derived by using the ATMVP decoding technique corresponding to the ATMVP encoding technique and by avoiding the use of the spatially adjacent blocks to provide the motion vector for the decoded block, and the encoded representation is decoded (908).

[0135] 2. A method for decoding visual information (e.g., Figure 10 The method described in the middle (1000) includes:

[0136] The decoded block, which represents a portion of the visual information, is determined from the encoded representation (1002) to be encoded using the Optional Temporal Motion Vector Prediction (ATMVP) coding technique;

[0137] It is determined that the juxtaposed blocks in the reference image (1004) are encoded using intra-block copying (IBC) coding technology;

[0138] Determined (1006) that the juxtaposed block in the reference image cannot be used to derive motion vectors for sub-blocks of the decoded block; and

[0139] The encoded representation is decoded (1008) by using an ATMVP decoding technique corresponding to the ATMVP encoding technique and by avoiding the use of the juxtaposed blocks in the reference image to provide temporal motion vector candidates for the sub-blocks of the decoded block.

[0140] 3. The method according to any one of clauses 1 to 2, comprising:

[0141] Multiple blocks representing the encoding of the first image are obtained from the encoded visual information;

[0142] Decode the initial block of the plurality of blocks; and

[0143] When decoding the initial block, the first block of the remaining blocks is decoded based on the result of the decoding.

[0144] 4. The method according to any one of clauses 1 to 3, comprising:

[0145] Multiple blocks representing the encoding of the second image are obtained from the encoded visual information;

[0146] Using the ATMVP decoding technique, the encoding of the second image associated with the visual information is decoded by performing a two-step process on the decoded blocks representing the encoding of the second image in the plurality of blocks, the two-step process including:

[0147] In the first step of the two-step process, a decoded reference image of the encoded visual information, a corresponding decoded block in the reference image that corresponds to the decoded block, and a temporal vector containing the motion vector of the spatially adjacent block are the spatial neighbors of the decoded block.

[0148] In the second step of the two-step process, multiple sub-blocks representing the decoded block are obtained; a corresponding sub-block is identified for each of the multiple sub-blocks in the reference image of the visual information; the motion vector of the corresponding sub-block is obtained; and the motion vector is derived for each of the multiple sub-blocks based on the motion vector of the corresponding sub-block; and

[0149] Based on the motion vectors of the sub-blocks and the corresponding sub-blocks in the reference image of the visual information, the plurality of sub-blocks are decoded.

[0150] 5. The method described under Clause 4, comprising:

[0151] Assume that the spatially adjacent blocks are not encoded using the IBC encoding technique.

[0152] 6. The method according to any one of clauses 4 to 5, comprising:

[0153] A decoding indicator that marks the spatially adjacent blocks as unavailable or internally encoded for use in the first step of the ATMVP decoding technique.

[0154] 7. The method according to any one of clauses 4 to 6, comprising:

[0155] A decoding indicator that marks the corresponding sub-block as unavailable or internally encoded for use in the second step of the ATMVP decoding technique.

[0156] 8. The method according to any one of clauses 4 to 5, comprising:

[0157] A decoding indicator that marks the spatially adjacent blocks as using internal encoding techniques in the first step of the ATMVP decoding technique.

[0158] 9. The method according to any one of clauses 4 to 5, comprising:

[0159] A decoding indicator, which in the second step of the ATMVP decoding technique marks the corresponding sub-block as using internal encoding techniques.

[0160] 10. The method according to any one of clauses 1 to 9, comprising:

[0161] When the corresponding block of the encoded block is encoded using the IBC encoding technique, the motion vector of the corresponding sub-block is copied to the sub-block of the encoded block without scaling the motion vector of the corresponding sub-block.

[0162] 11. The method described under Clause 4, comprising:

[0163] Decode the indicator associated with the corresponding block, the indicator indicating that the corresponding block is encoded using the IBC encoding technique; and use the second image as the reference image to decode the decoded block.

[0164] 12. The method according to any one of clauses 4 to 11, comprising:

[0165] Decode the indicator associated with the corresponding sub-block, the indicator indicating that the corresponding sub-block is encoded using the IBC encoding technique; and decode the sub-block using the corresponding sub-block encoded using the IBC encoding technique.

[0166] 13. The method described under Clause 4, comprising:

[0167] If the corresponding block of the decoded block is encoded using the IBC encoding technique, the motion vector of the corresponding sub-block is copied to the sub-block of the decoded block without scaling the motion vector of the corresponding sub-block.

[0168] 14. The method described under Clause 13, comprising:

[0169] The reference image is changed to the second image that contains the decoded block.

[0170] 15. The method described under Clause 4, comprising:

[0171] Based on the motion vector of at least one corresponding sub-block encoded using the IBC encoding technique, the motion vector of the sub-block of the decoded block is derived.

[0172] Other aspects and variations of the methods described in Articles 1 through 15 have been described in previous sections. The decoding method may be implemented by a video decoder, which may include, for example, [details about...]. Figure 7 and Figure 8 The aforementioned hardware platform.

[0173] 16. A method for encoding visual information, comprising:

[0174] The visual information is encoded into multiple encoded images and multiple indicators indicating one or more encoding techniques applied. The multiple indicators include an intra-block copy (IBC) technique indicator and an optional temporal motion vector prediction (ATMVP) technique indicator. A first block of a first image associated with the visual information is encoded using the IBC technique, and a second block of a second image associated with the visual information is encoded using the ATMVP technique. The IBC technique uses different blocks of the first image to encode the first block of the first image, and the ATMVP technique uses a third image associated with the visual information to encode the second image.

[0175] 17. The method described under Clause 16, comprising:

[0176] Divide the first image into multiple blocks;

[0177] Encoding the initial block among the plurality of blocks; and

[0178] When encoding the initial block, the first block of the plurality of blocks is encoded based on the initial block.

[0179] 18. The method according to any one of Clauses 16 to 17, comprising:

[0180] Using the ATMVP technique, the second image is encoded by dividing it into multiple blocks, each including an encoded block, and performing a two-step process, wherein the two-step process includes:

[0181] In the first step of the two-step process, a reference image of the visual information, a corresponding block in the reference image that corresponds to the encoded block, and a temporal vector including motion vectors of spatially adjacent blocks, wherein the spatially adjacent blocks are the spatial neighbors of the encoded block;

[0182] In the second step of the two-step processing, the block to be encoded is divided into multiple sub-blocks. A corresponding sub-block is identified for each of the multiple sub-blocks in the reference image of the visual information. The motion vector of the corresponding sub-block is obtained, and a motion vector is derived for each of the multiple sub-blocks based on the motion vector of the corresponding sub-block.

[0183] The sub-blocks in the reference image are encoded based on the motion vectors of the sub-blocks and the corresponding sub-blocks in the reference image containing the visual information.

[0184] 19. The method described under Clause 18, comprising:

[0185] The spatially adjacent blocks are required not to be encoded using the IBC technology.

[0186] 20. The method described under Clause 18 or 19, comprising:

[0187] In the case where the spatially adjacent blocks of the encoded block are encoded using IBC technology, an encoding indicator marks the spatially adjacent blocks as unavailable or internally encoded for use in the first step of the ATMVP technology.

[0188] 21. The method according to any one of clauses 18 to 20, comprising:

[0189] In the case where the reference image of the visual information is encoded using IBC technology, an encoding indicator marks the corresponding sub-block as unavailable or internally encoded for use in the second step of the ATMVP technology.

[0190] 22. The method described under Clause 18 or 19, comprising:

[0191] In the case where the spatially adjacent blocks of the encoded block are encoded using IBC technology, an encoding indicator marks the spatially adjacent blocks as internally encoded for use in the first step of the ATMVP technology.

[0192] 23. The method according to any one of clauses 18 to 20, comprising:

[0193] In the case where the reference image of the visual information is encoded using IBC technology, an encoding indicator marks the corresponding sub-block as internally encoded for use in the second step of the ATMVP technology.

[0194] 24. The method described under Clause 18, comprising:

[0195] When the corresponding block of the encoded block is encoded using the IBC technique, the motion vector of the corresponding sub-block is copied to the sub-block of the encoded block without scaling the motion vector of the corresponding sub-block.

[0196] 25. The method described under Clause 24, comprising:

[0197] The reference image is changed to the second image that includes the encoded block.

[0198] 26. The method according to any one of clauses 18 to 25, comprising:

[0199] Based on the motion vector of at least one corresponding sub-block encoded using the IBC technique, the motion vector of the sub-block of the encoded block is derived.

[0200] Other aspects and variations of the methods described in Articles 16 through 26 have been described in previous sections. The decoding method may be implemented by a video decoder, which may include, for example, [details about...]. Figure 7 and Figure 8 The aforementioned hardware platform.

[0201] 27. A video processing apparatus, including a processor configured to implement one or more of the methods described in clauses 1 to 26.

[0202] 28. A computer-readable medium having processor-executable code stored thereon, which, when executed, causes the processor to perform one or more of the methods described in items 1 to 26.

[0203] 5. Example embodiments of the disclosed technology

[0204] Figure 7 This is a block diagram illustrating structural examples of a computer system or other control device 700 that can be used to implement various parts of the present disclosure, including (but not limited to) methods 300, 400, 500, and 600. Figure 7In this embodiment, computer system 700 includes one or more processors 705 and memory 710 connected via interconnect 725. Interconnect 725 can represent any one or more individual physical buses, point-to-point connections, or both connected by appropriate bridges, adapters, or controllers. Thus, interconnect 725 can include, for example, a system bus, a peripheral component interconnect (PCI) bus, an HyperTransport or Industry Standard Architecture (ISA) bus, a Small Computer System Interface (SCSI) bus, a Universal Serial Bus (USB), an IIC (I2C) bus, or an IEEE Standard 674 bus (sometimes referred to as "FireWire").

[0205] Processor 705 may include a central processing unit (CPU) to control the overall operation of, for example, a host computer. In some embodiments, processor 1005 achieves this by executing software or firmware stored in memory 710. Processor 1005 may be or may include one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application-specific integrated circuits (ASICs), programmable logic devices (PLDs), or combinations thereof.

[0206] Memory 710 may be or include the main memory of a computer system. Memory 710 represents any suitable form of random access memory (RAM), read-only memory (ROM), flash memory, etc., or a combination of these devices. In use, memory 710 may, among other things, contain a set of machine instructions that, when executed by processor 705, cause processor 705 to perform operations to implement embodiments of the present disclosure.

[0207] Connected to the processor 705 via interconnect 725 is also (optionally) a network adapter 715. The network adapter 715 provides the computer system 700 with the ability to communicate with remote devices, such as storage clients and / or other storage servers, and may be, for example, an Ethernet adapter or a Fibre Channel adapter.

[0208] Figure 8Block diagrams illustrating example embodiments of a mobile device 800 that can be used to implement various parts of the present disclosure, including (but not limited to) methods 300, 400, 500, and 600. The mobile device 800 may be a laptop computer, smartphone, tablet computer, camera, or other device capable of processing video. The mobile device 800 includes a processor or controller 801 to process data, and a memory 802 in communication with the processor 801 to store and / or buffer data. For example, the processor 801 may include a central processing unit (CPU) or a microcontroller unit (MCU). In some implementations, the processor 801 may include a field-programmable gate array (FPGA). In some implementations, the mobile device 800 includes or communicates with a graphics processing unit (GPU), a video processing unit (VPU), and / or a wireless communication unit to implement various visual and / or communication data processing functions of a smartphone device. For example, memory 802 may include and store processor-executable code that, when executed by processor 801, configures mobile device 800 to perform various operations, such as receiving information, commands and / or data, processing information and data, and sending or providing processed information / data to another device, such as an actuator or external display.

[0209] To support the various functions of the mobile device 800, the memory 802 can store information and data, such as instructions, software, values, images, and other data processed or referenced by the processor 801. For example, the storage function of the memory 802 can be implemented using various types of random access memory (RAM) devices, read-only memory (ROM) devices, flash memory devices, and other suitable storage media. In some embodiments, the mobile device 800 includes an input / output (I / O) unit 803 to interface the processor 801 and / or the memory 802 with other modules, units, or devices. For example, the I / O unit 803 can interface with the processor 801 and the memory 802 to utilize various wireless interfaces compatible with typical data communication standards, such as between one or more computers and user equipment in the cloud. In some implementations, the mobile device 800 can interface with other devices via a wired connection using the I / O unit 803. The mobile device 800 can also interface with other external interfaces (e.g., data storage) and / or visual or audio display devices 804 to retrieve and transmit data and information that can be processed by a processor, stored in memory, or displayed on the output unit of the display device 804 or an external device. For example, the display device 804 can display video frames comprising blocks (CU, PU, ​​or TU) based on whether a motion compensation algorithm is used and applying intra-block copying according to the disclosed techniques.

[0210] In some embodiments, the video decoder device may implement a video decoding method in which intra-frame block copying, as described herein, is used for video decoding. This method may be similar to methods 300, 400, 500, and 600 described above.

[0211] In some embodiments, the decoder-side method for video decoding may use intra-block copying to improve video quality by using a motion compensation algorithm to determine whether the current block of the current image should be decoded, and based on this determination, to decode the current block by selectively applying intra-block copying to the current block.

[0212] In other embodiments, the decoder-side method for video decoding may use intra-block copying to improve video quality by determining whether to use intra-block copying to decode the current block of the current image, and based on this determination, to decode the current block by selectively applying a motion compensation algorithm to the current block.

[0213] In some embodiments, the video decoding method can be implemented using a decoding device implemented on a hardware platform, such as... Figure 7 and Figure 8 As stated above.

[0214] The following are the improvements measured by incorporating IBC into VTM-1.0, the reference software for a video coding standard called Universal Video Coding (VVC). VTM stands for VVC Test Model.

[0215]

[0216] In the table above, "Y", "U", and "V" represent colors in the YUV color encoding system, which encodes color images or videos while taking human perception into account. EncT and DecT represent the ratio of encoding and decoding time using IBC to encoding and decoding time without IBC, respectively. Specifically,

[0217] EncT = TestEncodingTime / AnchorEncodingTime

[0218] DecT = TestDecodingTime / AnchorDecodingTime

[0219] The various categories (such as A1, A2, etc.) represent a set of standard video sequences used to test the performance of various video coding techniques. Negative percentages under the “Y,” “U,” and “V” columns represent bitrate savings when adding IBC to VTM-1.0. Percentages exceeding 100% under the EncT and DecT columns indicate how much slower encoding / decoding with IBC is compared to encoding / decoding without IBC. For example, 150% means that encoding / decoding with IBC is 50% slower than encoding / decoding without IBC. Percentages below 100% indicate how much faster encoding / decoding with IBC is compared to encoding / decoding without IBC. The two classes shown in the table above (Class F and Class SCC) indicate bitrate savings exceeding 3%.

[0220] From the foregoing, it should be understood that, for ease of explanation, specific embodiments of the technology disclosed in this invention have been described herein, but various modifications can be made without departing from the scope of this invention. Therefore, the technology disclosed in this invention is not limited except as defined in the claims.

[0221] The implementation and functional operation of the subject matter described in this patent document can be implemented in various systems, digital electronic circuits, or computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or combinations thereof. The implementation of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a tangible and non-volatile computer-readable medium for execution by a data processing apparatus or for controlling the operation of the data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a material composition affecting machine-readable propagation signals, or combinations thereof. The terms "data processing unit" or "data processing apparatus" include all means, devices, and machines for processing data, including, for example, programmable processors, computers, or multiprocessors or computer groups. In addition to hardware, the apparatus may also include code that creates an execution environment for a computer program, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or combinations thereof.

[0222] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language (including compiled or interpreted languages) and can be deployed in any form, including as standalone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to that program, or in multiple coordinating files (e.g., a file storing one or more modules, subroutines, or portions of code). Computer programs can be deployed and executed on one or more computers located at a single site or distributed across multiple sites interconnected by a communication network.

[0223] The processing and logic flows described in this specification can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating outputs. The processing and logic flows can also be executed by special-purpose logic circuitry, and the device can be implemented as special-purpose logic circuitry, such as an FPGA (Field-Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).

[0224] For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more of any type of digital computer. Typically, the processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor that executes instructions and one or more storage devices that store the instructions and data. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or for receiving data from or transferring data to one or more mass storage devices, or both, through operative coupling. However, a computer does not necessarily have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices. The processor and memory may be supplemented by or incorporated into special-purpose logic circuitry.

[0225] This specification and accompanying drawings are intended to be illustrative only, where illustrative means example. As used herein, unless the context clearly indicates otherwise, the singular forms “a,” “an,” and “the” should also include the plural forms. Furthermore, the use of “or” is intended to include “and / or” unless the context clearly indicates otherwise.

[0226] While this patent document contains numerous details, it should not be construed as limiting the scope of any invention or claim, but rather as a description of features of specific embodiments of a particular invention. Certain features described in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment may also be implemented individually in multiple embodiments, or in any suitable sub-combination. Furthermore, although the foregoing features may be described as functioning in certain combinations, or even initially claimed to be so, in some cases one or more features from a combination of claims may be removed, and a combination of claims may refer to a sub-combination or a variation of a sub-combination.

[0227] Similarly, although the operations are described in a specific order in the accompanying drawings, this should not be construed as requiring the specific order or sequence shown to perform such operations, or all the described operations, in order to obtain the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.

[0228] Only some implementations and examples are described; other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.

Claims

1. A method of coding video data, comprising: determining that a current video block is coded using a first technique in which: the current video block is partitioned into at least one sub-block, at least one corresponding video region in a collocated picture of the current video block is identified from motion vectors of first spatial neighboring blocks of the current video block if the first spatial neighboring blocks are available, the first spatial neighboring blocks are determined to be unavailable in response to the first spatial neighboring blocks being coded using an intra block copy (IBC) technique if the first spatial neighboring blocks are coded using the IBC technique, and the at least one corresponding video region in the collocated picture of the current video block is identified if the first spatial neighboring blocks are unavailable, and a prediction block for the at least one sub-block is determined from the corresponding video region; performing a conversion between the current video block and a bitstream; wherein the corresponding video region is determined to be unavailable in response to the corresponding video region being coded using the IBC technique, wherein, in the IBC technique, a region to be decoded is predicted using another reconstructed region in a video picture in which the region to be decoded is located.

2. The method of claim 1, further comprising: determining to designate the first spatial neighboring blocks as an indication variable that is unavailable or intra coded for the first technique in response to the first spatial neighboring blocks being coded using the IBC technique.

3. The method of claim 1, further comprising: determining to designate the corresponding video region as an indication variable that is unavailable or intra coded for the first technique in response to the corresponding video region being coded using the IBC technique.

4. The method of claim 1, further comprising: decoding, in the first technique, an indicator that designates the first spatial neighboring blocks as using an intra coding technique.

5. The method of claim 1, further comprising: decoding, in the first technique, an indicator that designates the corresponding video region as using an intra coding technique.

6. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: determine that a current video block is coded using a first technique in which: the current video block is partitioned into at least one sub-block, at least one corresponding video region in a collocated picture of the current video block is identified from motion vectors of first spatial neighboring blocks of the current video block if the first spatial neighboring blocks are available, the first spatial neighboring blocks are determined to be unavailable in response to the first spatial neighboring blocks being coded using an intra block copy (IBC) technique if the first spatial neighboring blocks are coded using the IBC technique, and the at least one corresponding video region in the collocated picture of the current video block is identified if the first spatial neighboring blocks are unavailable, and a prediction block for the at least one sub-block is determined from the corresponding video region; in response to the first spatial neighboring block being coded using the IBC technique, determining that the first spatial neighboring block is unavailable, and in the case that the first spatial neighboring block is unavailable, identifying at least one corresponding video region in a collocated picture of the current video block, and determining a prediction block for the at least one sub-block from the corresponding video region; performing a conversion between the current video block and a bitstream; wherein in response to the corresponding video region being coded using the IBC technique, determining that the corresponding video region is unavailable, wherein, in the IBC technique, a region to be decoded is predicted using another reconstructed region in a video picture in which the region to be decoded is located.

7. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method of any one of claims 2-5.

8. A non-transitory computer-readable storage medium storing instructions that cause a processor to: determine that a current video block is coded using a first technique, in which the first technique: divide the current video block to obtain at least one sub-block, in the case that a first spatial neighboring block of the current video block is available, identify at least one corresponding video region in a collocated picture of the current video block according to a motion vector of the first spatial neighboring block, in response to the first spatial neighboring block being coded using the IBC technique, determine that the first spatial neighboring block is unavailable, and in the case that the first spatial neighboring block is unavailable, identify at least one corresponding video region in a collocated picture of the current video block, and determine a prediction block for the at least one sub-block from the corresponding video region; perform a conversion between the current video block and a bitstream; wherein in response to the corresponding video region being coded using the IBC technique, determine that the corresponding video region is unavailable, wherein, in the IBC technique, a region to be decoded is predicted using another reconstructed region in a video picture in which the region to be decoded is located.

9. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method of any one of claims 2-5.

10. A method for storing a bitstream of a video, comprising: determining that a current video block is coded using a first technique, in which the first technique: divide the current video block to obtain at least one sub-block, in the case that a first spatial neighboring block of the current video block is available, identify at least one corresponding video region in a collocated picture of the current video block according to a motion vector of the first spatial neighboring block, in response to the first spatial neighboring block being coded using the IBC technique, determine that the first spatial neighboring block is unavailable, and in the case that the first spatial neighboring block is unavailable, identify at least one corresponding video region in a collocated picture of the current video block, and determine a prediction block for the at least one sub-block from the corresponding video region; perform a conversion between the current video block and a bitstream; in response to the corresponding video region being coded using the IBC technique, determine that the corresponding video region is unavailable, wherein, in the IBC technique, a region to be decoded is predicted using another reconstructed region in a video picture in which the region to be decoded is located. in case it is determined that the first spatial neighboring block of the current video block is coded using an Intra Block Copy, IBC, technique, determining that the first spatial neighboring block is unavailable in response to the first spatial neighboring block being coded using the IBC technique, and identifying at least one respective video region in a collocated picture of the current video block in case the first spatial neighboring block is unavailable, and determining a prediction block for the at least one sub-block from the respective video region, wherein the respective video region is determined to be unavailable in response to the respective video region being coded using the IBC technique, wherein, in the IBC technique, a region to be decoded is predicted using another reconstructed region in a video picture in which the region to be decoded is located; generating the bitstream from the current video block; and storing the bitstream in a non-transitory computer-readable recording medium.

Citation Information

Patent Citations

  • Encoding and decoding video sequences comprising reference picture sets

    CN104396242A