Combined Screen Content Coding / Decoding Mode
By combining the intra-block copy (IBC) mode and palette mode to process the sample points of video blocks, the problem of low efficiency of IBC mode and inability to utilize local correlation in the prior art is solved, and more efficient video encoding and decoding performance is achieved.
Patent Information
- Application Number
- CN202080000553.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-18
- Filing Date
- 2020-03-10
- Publication Date
- 2025-06-20
- Estimated Expiration
- 2040-03-10
AI Technical Summary
When existing video encoding and decoding technologies process screen content, the intra-block copy (IBC) mode is not efficient, and the palette mode cannot effectively utilize local and non-local correlations, resulting in inadequate encoding and decoding efficiency.
A method combining intra-block copy (IBC) mode and palette mode is proposed, by predicting the sample points of a video block in intra-block copy mode and encoding and decoding using a predefined set of representative color values in palette mode. During the conversion, the method uses a palette mode to process the first part of the video block, and processes the second part of the video block based on the prediction block derived by the IBC mode, identifying the two parts by the palette index icon.
By combining IBC mode and palette mode, the efficiency of video encoding and decoding is improved, especially when processing screen content containing a large number of repetitive patterns, significantly reducing redundancy and improving codec performance.
Smart Images

Figure CN111919441B_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] In accordance with applicable patent laws and / or in accordance with the rules of the Paris Convention, this application timely claims the priority and benefits of International Patent Application No. PCT / CN2019 / 000051 filed on March 10, 2019, International Patent Application No. PCT / CN2019 / 078148 filed on March 14, 2019, International Patent Application No. PCT / CN2019 / 081933 filed on April 9, 2019, International Patent Application No. PCT / CN2019 / 088453 filed on May 25, 2019, and International Patent Application No. PCT / CN2019 / 106487 filed on September 18, 2019. For all purposes of the law, the entire disclosure of the above - mentioned applications is incorporated by reference as part of the disclosure of this application. Technical field
[0003] This document relates to video and image coding and decoding technologies, devices, and systems. Background art
[0004] Digital video occupies the largest bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video use is expected to continue to grow. Summary of the invention
[0005] This document describes various embodiments and techniques for buffer management and block vector coding and decoding in the intra - block copy mode for decoding or encoding video or images.
[0006] In one exemplary aspect, a method for visual media processing is disclosed. The method includes: determining that a palette mode is to be used for processing a first portion of a video block and an intra - block copy (IBC) mode is to be used for processing a second portion of the video block for the conversion between the video block of visual media data and the bit - stream representation of the video block, wherein in the palette mode, the samples of the first portion of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, and wherein in the IBC mode, the samples of the second portion of the video block are predicted from adjacent pixels of a neighboring previously decoded video block; and during the conversion, performing further processing on the first portion of the video block using the palette mode and performing further processing on the second portion of the video block based on a predicted block derived using the IBC mode, wherein an indication of the first portion of the video block processed using the palette mode and an indication of the second portion of the video block processed using the IBC mode are included in a palette index map that identifies the first portion and the second portion of the video block.
[0007] In another example aspect, another method for visual media processing is disclosed. The method includes: determining, for samples of a video block, a first combination of a palette and an intra block copy (IBC) mode to be used for processing the samples, wherein in the palette mode, the samples of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, and wherein in the IBC mode, the samples of the video block are predicted from neighboring pixels of a neighboring previously decoded video block, wherein the samples of the video block are associated with a palette index indicating an INDEX mode or a COPY_ABOVE mode, and wherein in the INDEX mode or the COPY_ABOVE mode, the palette index of the current block is derived by copying a previously encoded and decoded index; and performing a conversion between the video block and a bitstream representation of the video block.
[0008] In yet another example aspect, a video encoder or decoder device is disclosed, which includes a processor configured to implement the above method.
[0009] In another example aspect, a computer-readable program medium is disclosed. The medium stores code implementing processor-executable instructions for implementing any one of the disclosed methods.
[0010] These and other aspects are described in more detail in this document. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Figure 1 An example of intra block copy is shown.
[0012] Figure 2 An example of a block encoded and decoded in the palette mode is shown.
[0013] Figure 3 An example of using a palette prediction value to signal a palette entry is shown.
[0014] Figure 4 An example of horizontal and vertical traversal scans is shown.
[0015] Figure 5 An example of encoding and decoding of a palette index is shown.
[0016] Figure 6 is a block diagram of an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described in this document.
[0017] Figure 7 A flowchart of an example method for video encoding and decoding is shown.
[0018] Figure 8 is an illustration of a method for refining a prediction block according to palette information.
[0019] Figure 9 An example of adjacent blocks above and to the left of the current block is shown.
[0020] Figure 10 is a block diagram of an example video processing system in which the disclosed technology may be implemented.
[0021] Figure 11 is a flowchart of an example method for visual data processing.
[0022] Figure 12 is a flowchart of an example method for visual data processing. Detailed implementation
[0023] 1. Video coding and decoding in HEVC / H.265
[0024] Video coding and decoding standards have evolved mainly through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced H.262 / MPEG-2 video and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding and decoding standards have been based on a hybrid video coding and decoding structure, in which temporal prediction and transform coding are utilized. To explore future video coding and decoding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and introduced them into a reference software named Joint Exploration Model (JEM). In April 2018, the Joint Video Experts Team (JVET) established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on the VVC standard, which aims to reduce the bit rate by 50% compared to HEVC. The latest version of the VVC draft, namely Versatile Video Coding (draft 4), can be found at:
[0025] http: / / phenix.it-sudparis.eu / jvet / doc_end_user / current_document.php?id=5755.
[0026] The latest reference software for VVC named VTM can be found at:
[0027] https: / / vcgit.hhi.fraunhofer.de / jvet / VVCSoftware_VTM / tags / VTM-4.0。
[0028] 2.1. Intra Block Copy
[0029] Intra Block Copy (IBC), also known as current picture reference, has been adopted in the High Efficiency Video Coding Screen Content Coding Extension (HEVC-SCC) and the current Versatile Video Coding Test Model (VTM-4.0). IBC extends the concept of motion compensation from inter-frame coding to intra-frame coding. As Figure 1 shown, when IBC is applied, the current block is predicted by a reference block in the same picture. Before encoding or decoding the current block, the samples in the reference block must have been reconstructed. Although IBC is not efficient for most sequences captured by cameras, it shows significant coding gain for screen content. The reason is that there are a large number of repeated patterns in screen content pictures, such as icons and text characters. IBC can effectively remove the redundancy between these repeated patterns. In HEVC-SCC, if a coding unit (CU) of inter-frame coding selects the current picture as its reference picture, IBC can be applied. In this case, the motion vector (MV) is renamed as the block vector (BV), and the BV always has integer pixel accuracy. To be compatible with the main profile of HEVC, the current picture is marked as a "long-term" reference picture in the decoded picture buffer (DPB). It should be noted that, similarly, in multi-view / 3D video coding standards, the inter-view reference pictures are also marked as "long-term" reference pictures.
[0030] After the BV finds its reference block, the prediction can be generated by copying the reference block. The residual can be obtained by subtracting the reference pixels from the original signaling. Then, transformation and quantization can be applied as in other coding modes.
[0031] However, when the reference block is outside the picture, or overlaps with the current block, or outside the reconstructed area, or outside the valid area restricted by certain constraints, some or all of the pixel values are undefined. Basically, there are two solutions to address such problems. One solution is to not allow such cases in bitstream compliance, for example. The other solution is to apply padding to those undefined pixel values. The following subsections describe the solutions in detail.
[0032] 2.2. IBC in HEVC Screen Content Coding Extension
[0033] In the HEVC Screen Content Coding Extension, when a block uses the current picture as a reference, it should be ensured that the entire reference block is within the available reconstructed area, as shown in the following text from the standard specification:
[0034] The variables offsetX and offsetY are derived as follows:
[0035] offsetX = (ChromaArrayType == 0)? 0 : ((mvCLX[0] & 0x7)? 2 : 0)
[0036] (8 - 104)
[0037] offsetY = (ChromaArrayType == 0)? 0 : ((mvCLX[1] & 0x7)? 2 : 0)
[0038] (8 - 105)
[0039] The requirement for bitstream consistency is that when the reference picture is the current picture, the luma motion vector mvLX shall comply with the following constraints:
[0040] - When the derivation process of z-scan order block availability specified in Section 6.4.1 is invoked, with (xCurr, yCurr) set to be equal to (xCb, yCb) and the neighboring luma position (xNbY, yNbY) set to be equal to (xPb + (mvLX[0] >> 2) – offsetX, yPb + (mvLX[1] >> 2) – offsetY) as the input, the output shall be equal to TRUE.
[0041] - When the derivation process of z-scan order block availability specified in Section 6.4.1 is invoked, with (xCurr, yCurr) set to be equal to (xCb, yCb) and the neighboring luma position (xNbY, yNbY) set to be equal to (xPb + (mvLX[0] >> 2) + nPbW – 1 + offsetX, yPb + (mvLX[1] >> 2) + nPbH – 1 + offsetY) as the input, the output shall be equal to TRUE.
[0042] - One or both of the following conditions shall be true:
[0043] - The value of (mvLX[0] >> 2) + nPbW + xB1 + offsetX is less than or equal to 0.
[0044] - The value of (mvLX[1] >> 2) + nPbH + yB1 + offsetY is less than or equal to 0.
[0045] - The following condition shall be true:
[0046] (xPb+(mvLX[0]>>2)+nPbSw–1+offsetX) / CtbSizeY–xCb / CtbSizeY <= yCb / CtbSizeY–(yPb+(mvLX[1]>>2)+nPbSh–1+offsetY) / CtbSizeY(8-106)
[0047] Therefore, the situation where the reference block overlaps with the current block or the reference block is outside the picture will not occur. There is no need to fill the reference block or the prediction block.
[0048] 2.3. IBC in the VVC Test Model
[0049] In the current VVC test model (i.e., the VTM-4.0 design), the entire reference block should have the current coding tree unit (CTU) and not overlap with the current block. Therefore, there is no need to fill the reference block or the prediction block. The IBC flag is coded as the prediction mode of the current CU. Therefore, for each CU, there are a total of three prediction modes: MODE_INTRA, MODE_INTER, and MODE_IBC.
[0050] 2.3.1. IBC Merge Mode
[0051] In the IBC merge mode, an index pointing to an entry in the IBC merge candidate list is parsed from the bitstream. The construction of the IBC merge list can be summarized according to the sequence of the following steps:
[0052] · Step 1: Derive spatial candidates
[0053] · Step 2: Insert history-based motion vector prediction (HMVP) candidates
[0054] · Step 3: Insert paired average candidates
[0055] In deriving spatial merge candidates, at most four merge candidates are selected among the candidates located at the positions depicted in the figure. The derivation order is A1, B1, B0, A0, and B2. Only when any PU at positions A1, B1, B0, A0 is unavailable (e.g., because it belongs to another stripe or slice) or is not coded in the IBC mode, will position B2 be considered. After adding the candidate at position A1, the insertion of the remaining candidates is subject to a redundancy check to ensure that candidates with the same motion information are excluded from the list, thereby improving the coding efficiency. To reduce the computational complexity, not all possible candidate pairs are considered in the mentioned redundancy check. Instead, only the pairs linked by arrows depicted in the attached figure are considered, and the candidate will be added to the list only if the corresponding candidates for the redundancy check do not have the same motion information.
[0056] After inserting the spatial candidates, if the IBC merge list size is still smaller than the maximum IBC merge list size, IBC candidates from the HMVP table can be inserted. A redundancy check is performed when inserting HMVP candidates.
[0057] Finally, the paired average candidates are inserted into the IBC merge list.
[0058] A merge candidate is called an invalid merge candidate when the reference block identified by the merge candidate is outside the picture, or overlaps with the current block, or is outside the reconstructed region, or is outside the valid region subject to certain constraints.
[0059] Note that invalid merge candidates can be inserted into the IBC merge list.
[0060] 2.3.2. IBC AMVP Mode
[0061] In the IBC AMVP mode, the AMVP index pointing to an entry in the IBC AMVP list is parsed from the bitstream. The construction of the IBC AMVP list can be summarized according to the following sequence of steps:
[0062] · Step 1: Derive spatial candidates
[0063] ο Examine A0, A1 until an available candidate is found.
[0064] ο Examine B0, B1, B2 until an available candidate is found.
[0065] · Step 2: Insert HMVP candidates
[0066] · Step 3: Insert zero candidates
[0067] After inserting the spatial candidates, if the IBC AMVP list size is still smaller than the maximum IBC AMVP list size, IBC candidates from the HMVP table can be inserted.
[0068] Finally, the zero candidates are inserted into the IBC AMVP list.
[0069] 2.4. Palette Mode
[0070] The basic idea behind the palette mode is that the samples in a CU are represented by a small set of representative color values. This set is called the palette. Samples outside the palette can also be indicated by an escape symbol after the (possibly quantized) component values, which is signaled as shown in Figure 2 as illustrated.
[0071] 2.5. Palette Mode in HEVC Screen Content Coding Extension (HEVC-SCC)
[0072] In the palette mode of HEVC-SCC, a prediction method is used to encode and decode the palette and the index map.
[0073] 2.5.1. Encoding and Decoding of Palette Entries
[0074] For the encoding and decoding of palette entries, the palette prediction value is maintained. The maximum size of the palette and the palette prediction value are signaled in the SPS. In HEVC-SCC, palette_predictor_initializer_present_flag is introduced in the PPS. When this flag is 1, the entry used to initialize the palette prediction value is signaled in the bitstream. The palette prediction value is initialized at the start of each CTU row, each slice, and each strip. Depending on the value of palette_predictor_initializer_present_flag, the palette prediction value is reset to 0 or initialized using the palette predictor initializer entry signaled in the PPS. In HEVC-SCC, the initializer for the palette prediction value of size 0 is enabled to allow explicit disabling of palette prediction value initialization at the PPS level.
[0075] For each entry in the palette prediction value, a reuse flag is signaled to indicate whether it is part of the current palette. This is illustrated in Figure 3 . The reuse flag is sent using run-length encoding of zeros. Thereafter, the number of new palette entries is signaled using an exponential Golomb code of order 0. Finally, the component values of the new palette entries are signaled.
[0076] 2.5.2. Encoding and Decoding of Palette Indexes
[0077] As shown in Figure 4 , the palette indexes are encoded and decoded using horizontal and vertical traversal scans. The scan order is explicitly signaled in the bitstream using palette_transpose_flag. For the remainder of this subsection, it is assumed that the scan is horizontal.
[0078] The following two main palette sample patterns are used to encode and decode palette indices: 'INDEX' and 'COPY_ABOVE'. As mentioned before, the escape symbol is also signaled in 'INDEX' mode, and an index equal to the maximum palette size is assigned. This mode is signaled using flags except for the top row or when the current mode is 'COPY_ABOVE'. In 'COPY_ABOVE' mode, the palette indices of the samples in the upper row are copied. In 'INDEX' mode, the palette index is signaled explicitly. For both 'INDEX' and 'COPY_ABOVE' modes, a run value is signaled, which specifies the number of subsequent samples that are also encoded and decoded using the same mode. When the escape symbol is part of a run in 'INDEX' or 'COPY_ABOVE' mode, an escape component value is signaled for each escape symbol. The encoding and decoding of palette indices are as Figure 5 illustrated.
[0079] The syntax order is completed as follows. First, the number of index values of the CU is signaled. This is then followed by signaling the actual index values of the entire CU using truncated binary coding. Both the number of indices and the index values are encoded in bypass mode. This combines the bypass binary codes related to the indices. Then, the palette sample pattern (if required) and the run are signaled in an interleaved manner. Finally, the component escape values corresponding to the escape samples of the entire CU are combined and encoded in bypass mode.
[0080] After signaling the index values, the additional syntax element last_run_type_flag is signaled. This syntax element, together with the number of indices, eliminates the need to signal the run value corresponding to the last run in the block.
[0081] In HEVC-SCC, the palette mode is enabled for 4:4:4, 4:2:2, 4:2:0, and monochrome chroma formats. For all chroma formats, the signaling of palette entries and palette indices is almost the same. If it is a non-monochrome format, each palette entry consists of 3 components. For the monochrome format, each palette entry consists of a single component. For subsampled chroma directions, chroma samples are associated with luminance sample indices that are divisible by 2. After reconstructing the palette indices of the CU, if a sample has only a single component associated with it, only the first component of the palette entry is used. The only difference in signaling lies in the escape component values. For each escape sample, the number of escape component values signaled can be different, depending on the number of components associated with that sample.
[0082] 2.6. Palette Mode Combined with Intra Prediction (PCIP)
[0083] In JVET-M0051, a palette mode combined with intra prediction was proposed. In this scheme, the decoder first derives a prediction block based on an intra prediction method. Then, the decoder decodes the palette and the index map. The decoder uses the decoded palette information to refine the prediction block and reconstruct the block.
[0084] Figure 8 An example of combining palette information with intra prediction information is shown. First, the decoder generates a prediction block (with pixel values A0 to A15). Also, the decoder decodes the index map in the palette mode. To reconstruct the block, if the decoded index is equal to "0", the corresponding pixel is marked as "P", as Figure 8 shown. The pixel marked as "P" is reconstructed by the pixel value in the intra prediction block. Otherwise, the pixel is reconstructed by the palette color (e.g., C0, C1).
[0085] 3. Disadvantages of Existing Implementations
[0086] The palette mode can only use the samples within the current block, which may limit its efficiency in screen content coding and decoding for patterns that typically show non-local repetitions. It would be better if the palette mode could utilize local and non-local correlations.
[0087] 4. Example Embodiments and Techniques
[0088] The embodiments described in detail below should be considered as illustrative of the general concept. These embodiments should not be understood in a narrow sense. In addition, these embodiments can be combined in any way.
[0089] The proposed method is named Prediction with Intra Block Copy and Palette Combination (PICP).
[0090] 1. It is proposed that a block is reconstructed with some samples predicted from the IBC mode and some samples predicted from the palette mode, and a specific palette index can indicate the indication of the samples predicted from the IBC mode or the palette mode.
[0091] a. In one example, the reconstruction in the palette mode can copy the co-located samples in the IBC prediction.
[0092] b. In one example, the indication of the use of the copy from the IBC prediction in the palette mode can be based on the index value in the index map.
[0093] i. In one example, when the specific index value is 0, the current sample can be reconstructed by copying the co-located sample in the IBC prediction. Alternatively, in addition, the current sample can be reconstructed by copying the co-located sample in the IBC prediction when the current index value is 0.
[0094] ii. In one example, when a specific index value is equal to the number of palette entries minus 1, the current sample can be reconstructed by copying the co-located sample in IBC prediction. Alternatively, additionally, the current sample can be reconstructed by copying the co-located sample in IBC prediction when the current index value is the number of palette entries minus 1.
[0095] iii. In one example, when a specific index value is equal to T, the current sample can be reconstructed by copying the co-located sample in IBC prediction. Alternatively, additionally, the current sample can be reconstructed by copying the co-located sample in IBC prediction when the current index value is T. In one example, T is a positive integer. Alternatively, additionally, in one example, T can be based on
[0096] 1) the block dimension of the current block
[0097] 2) the current quantization parameter of the current block
[0098] 3) indication of the color format (such as 4:2:0, 4:4:4)
[0099] 4) separate / double coding tree structure
[0100] 5) slice / group type and / or picture type
[0101] 6) signaling T in the bitstream
[0102] iv. In one example, the number of consecutive samples / pixel values copied from IBC prediction can be signaled.
[0103] v. In one example, the samples / pixel values copied from IBC prediction can be added as entries to the palette prediction values.
[0104] 1) Alternatively, in one example, the samples / pixel values copied from IBC prediction can be used to replace existing entries in the palette prediction values.
[0105] 2) Alternatively, additionally, before adding the samples / pixel values copied from IBC prediction to the palette prediction values, clipping can be applied to avoid duplicate samples / pixel values.
[0106] 3) In one example, the samples / pixel values copied from IBC prediction can be used to reorder the entries in the palette prediction values.
[0107] c. In one example, an indication of the use of copying from IBC prediction in the palette mode can be derived from the coding information. In such a case, there is no need to send a dedicated index to indicate whether to use IBC.
[0108] i. In one example, for a chroma sample, if its co-located luma sample is coded / decoded in IBC mode, then this sample can also be inferred to be coded / decoded in IBC mode.
[0109] ii. In one example, for a chroma sample, if the sample co-located in other color components is coded / decoded in IBC mode, then this sample can also be inferred to be coded / decoded in IBC mode.
[0110] d. In one example, an indication of the use of IBC prediction copy in palette mode (e.g., plt_combined_ibc_sample_flag) can be signaled.
[0111] i. In one example, the current sample can be reconstructed by copying the co-located sample in IBC prediction when plt_combined_ibc_sample_flag is 1. Alternatively, additionally, when plt_combined_ibc_sample_flag is 1, the current sample can be reconstructed by copying the co-located sample in IBC prediction.
[0112] ii. In one example, the current sample can be reconstructed by copying the co-located sample in IBC prediction, which can be based on the value of plt_combined_ibc_sample_flag of neighboring samples.
[0113] 1) In one example, if the current sample has no neighboring samples, then plt_combined_ibc_sample_flag can be inferred to be 0.
[0114] 2) In one example, the value of the current plt_combined_ibc_sample_flag can be derived based on the plt_combined_ibc_sample_flag of its left neighborhood and / or upper neighborhood.
[0115] 3) In one example, the current plt_combined_ibc_sample_flag can be 1 when the value of the plt_combined_ibc_sample_flag of its left neighborhood and / or upper neighborhood is 1. Alternatively, additionally, when the value of the plt_combined_ibc_sample_flag of its left neighborhood and / or upper neighborhood is 1, the current plt_combined_ibc_sample_flag can be 1.
[0116] e. In one example, the motion information of IBC prediction in the proposed method can be derived by IBC merge mode or IBC AMVP mode.
[0117] i. In one example, in the proposed method, the IBC merge mode or the IBC AMVP mode can be adopted for large blocks.
[0118] 1) In one example, a large block can be defined as current_block.width >= T || current_block.height >= T, where current_block.width and current_block.height represent the width and height of the current block respectively. T can be a fixed number (e.g., 16) and is based on
[0119] a) the block dimensions of the current block
[0120] b) the current quantization parameter of the current block
[0121] c) an indication of the color format (e.g., 4:2:0, 4:4:4)
[0122] d) a separate / double coding tree structure
[0123] e) the slice / group type and / or picture type
[0124] f) signaling T in the bitstream
[0125] ii. In one example, the IBC AMVP mode can always be adopted in the proposed method.
[0126] iii. In one example, the IBC merge mode can always be adopted in the proposed method.
[0127] iv. In one example, the IBC merge mode can always be adopted, and only the first available merge candidate in the merge list can always be adopted.
[0128] v. In one example, the first valid merge candidate in the IBC AMVP / merge list can be utilized in the proposed method to derive the IBC prediction.
[0129] 1) Alternatively, if all candidates in the IBC AMVP / merge list are invalid, a default block vector can be used instead.
[0130] a) In one example, the default block vector can be predefined or based on decoded information such as block dimensions and / or block position.
[0131] vi. In one example, the block vector to be used for deriving the IBC prediction in the proposed method can be derived from or inherited from the HMVP table.
[0132] vii. In one example, the block vector to be used in the proposed method for deriving IBC prediction can be derived or inherited from the IBC merge / AMVP candidates in the IBC merge / AMVP candidate list.
[0133] 1) Alternatively, an indication of the block vector to be used in the proposed method for deriving IBC prediction can be signaled in the bitstream.
[0134] a) In one example, the index of the IBC AMVP / merge candidate in the IBC AMVP / merge candidate list can be signaled.
[0135] b) In one example, the index of the valid IBC AMVP / merge candidate in the IBC AMVP / merge candidate list excluding the invalid candidates can be signaled, where only the selection of valid candidates is allowed.
[0136] viii. In one example, an indication of the block vector to be used in the proposed method for deriving IBC prediction can be signaled, such as the BV difference compared to the candidates in the IBC merge / AMVP candidate list.
[0137] ix. In one example, when the dual tree is enabled, the IBC mode of the chrominance blocks is modified as follows.
[0138] 1) In one example, the chrominance motion vector (block vector) can be derived by scaling the co-located luma motion vector (block vector) based on the chrominance format.
[0139] 2) In one example, the chrominance motion vector (block vector) can be derived by scaling the neighboring motion vectors (block vectors) of the co-located luma blocks based on the chrominance format.
[0140] 3) In one example, the motion vector (block vector) of each chrominance sub-block (e.g., 2×2) can be derived by averaging all available luma motion vectors based on the chrominance format.
[0141] f. In one example, the indication of the use of the copy from IBC prediction in the palette mode can be based on
[0142] i. the block dimension of the current block
[0143] ii. the current quantization parameter of the current block
[0144] iii. the indication of the color format (e.g., 4:2:0, 4:4:4)
[0145] iv. the separate / dual codec tree structure
[0146] v. Strip / group type and / or picture type
[0147] 2. Reconstruction of escape pixels in palette mode can be based on co-located samples in IBC prediction.
[0148] a. In one example, for escape pixels, the residual between the original sample and the IBC prediction can be signaled.
[0149] b. In one example, the quantized residual between the original sample and the IBC prediction can be signaled.
[0150] c. In one example, the sign of the quantized residual between the original sample and the IBC prediction can be signaled.
[0151] 3. Reconstruction of escape pixels in palette mode can be based on co-located samples in intra prediction.
[0152] a. In one example, for escape pixels, the residual between the original sample and the intra prediction can be signaled.
[0153] b. In one example, the quantized residual between the original sample and the intra prediction can be signaled.
[0154] c. In one example, the sign of the quantized residual between the original sample and the intra prediction can be signaled.
[0155] 4. Palette mode and / or IBC mode can be performed on a block at the sub-block level
[0156] a. In one example, at the sub-block level (e.g., 4×4 luma block and / or 2×2 chroma block), it can be determined whether to enable palette / IBC mode.
[0157] b. In one example, the use of chroma IBC can be determined first at the sub-block level. Then, the palette mode can be applied to the sub-blocks with disabled chroma IBC.
[0158] i. In one example, if the current chroma sub-block is not coded / decoded in IBC mode, it can be coded / decoded in palette mode.
[0159] 1) In one example, if the co-located luma block of the current chroma sub-block is not coded / decoded in IBC mode, the current chroma sub-block can be coded / decoded in palette mode.
[0160] 2) In one example, if the IBC prediction block of the current chroma sub-block has not been reconstructed, the current chroma sub-block can be coded / decoded in palette mode.
[0161] ii. In one example, on the current sub-block, chroma IBC can be enabled or disabled based on the prediction mode of the co-located luma block of chroma IBC. Alternatively, additionally, if the co-located luma block of the current chroma sub-block is coded in IBC mode, then this chroma sub-block can also be coded in IBC mode.
[0162] iii. In one example, a sub-block with enabled IBC can be reconstructed by copying co-located samples in IBC prediction, and a sub-block with disabled IBC can be reconstructed by palette colors.
[0163] c. In one example, an indication of the use of palette mode and / or IBC mode can be signaled at the sub-block level.
[0164] i. In one example, a flag can be signaled for each sub-block to indicate whether the current sub-block is coded in chroma IBC mode or in palette mode.
[0165] d. In one example, a flag can be signaled first at the block level, and a sub-block level decision can be determined based on information from another color component to select IBC mode or palette mode for a color component.
[0166] e. In one example, the sub-block can be a square block or a rectangular block.
[0167] i. In one example, the sub-block size in the above method can depend on
[0168] 1) The block dimension of the current block
[0169] 2) The current quantization parameter of the current block
[0170] 3) The palette flag of neighboring blocks
[0171] 4) The intra block copy flag of neighboring blocks
[0172] 5) An indication of the color format (e.g., 4:2:0, 4:4:4)
[0173] 6) Separate / double coding tree structure
[0174] 7) Slice / tile group type and / or picture type
[0175] f. In one example, in the above method, samples can be coded in both palette mode and IBC mode, so the INDEX mode and / or COPY_ABOVE mode may have certain limitations.
[0176] i. In one example, it may not be allowed to copy the index of the samples decoded and encoded in IBC mode in INDEX mode and / or COPY_ABOVE mode.
[0177] ii. In one example, the samples decoded and encoded in IBC mode can be inferred to have an ad-hoc index.
[0178] 1) In one example, when executing INDEX mode and / or COPY_ABOVE mode, it can be inferred that the ad-hoc index is equal to any other palette index.
[0179] 2) In one example, if the samples have an ad-hoc index, they can be reconstructed by co-located IBC prediction.
[0180] iii. In one example, during the execution of INDEX mode and / or COPY_ABOVE mode, the samples decoded and encoded in IBC mode can be skipped.
[0181] g. The above method can be applied to the mode of the combination of palette and intra prediction mode, where some samples can be predicted from the intra prediction mode and other samples can be predicted from the palette mode.
[0182] 5. The compliant bitstream shall comply with the following rule: when PICP mode is selected, there is at least one valid BV candidate in IBC AMVP / merge mode.
[0183] 6. Whether to apply the above method or how to apply the above method can be signaled at the video data unit level (such as SPS / VPS / PPS / APS / sequence header / picture header / strip header / slice group header / slice / LCU row).
[0184] a. Additionally, in one example, the signaling of the proposed method can be conditionally signaled under conditions such as both IBC mode and palette mode being enabled.
[0185] 7. The indication of the use of the above method can be signaled at the block level.
[0186] a. Alternatively, additionally, it can be based on the following conditions.
[0187] i. In one example, the condition is
[0188] 1) The block dimensions of the current block
[0189] a) In one example, if the width of the current block is greater than K1 (e.g., K1 = 64) or the height of the current block is greater than K2 (e.g., K2 = 64), the signaling of the indication can be skipped.
[0190] 2) Prediction mode of the current block
[0191] 3) Current quantization parameter of the current block
[0192] 4) Palette flag of neighboring blocks
[0193] 5) Intra block copy flag of neighboring blocks
[0194] 6) Indication of color format (e.g., 4:2:0, 4:4:4)
[0195] 7) Separate / double codec tree structure
[0196] 8) Slice / tile group type and / or picture type
[0197] b. Alternatively, in addition, it can be based on the use of the palette mode.
[0198] i. In one example, the flag indicates that when the flag of the palette mode is true, the above method can be signaled. Alternatively, in addition, if the flag of the palette mode is true, the flag indicates that the above method can be signaled.
[0199] ii. In one example, the flag indicates that when the flag of the palette mode is true, the above method can be inferred to be true. Alternatively, in addition, if the flag of the palette mode is true, the above method can be presumed to be true.
[0200] iii. In one example, the flag indicates that when the flag of the palette mode is false, the above method can be inferred to be false. Alternatively, in addition, if the flag of the palette mode is false, the above method can be inferred to be false.
[0201] c. Alternatively, in addition, it can be based on the use of PCIP.
[0202] i. In one example, the flag indicates that when the flag of PCIP is false, the above method can be signaled. Alternatively, in addition, if the flag of PCIP is false, the flag indicates that the above method can be signaled.
[0203] ii. In one example, the flag indicates that when the flag of PCIP is false, the above method can be inferred to be true. Alternatively, in addition, if the flag of the palette mode is false, the above method can be inferred to be true.
[0204] iii. In one example, the flag indicates that when the flag of PCIP is false, the above method can be inferred to be false. Alternatively, in addition, if the flag of PCIP is false, the above method can be inferred to be false.
[0205] iv. In one example, the flag indicates that the above method can be signaled before and / or after the flag of palette mode and / or PCIP.
[0206] d. Alternatively, in addition, it can be based on the use of palette mode and prediction mode.
[0207] i. In one example, the flag indicates that the above method can be inferred to be true when the flag of palette mode is true and the prediction mode is MODE_IBC. Alternatively, in addition, if the flag of palette mode is true and the prediction mode is MODE_IBC, the flag indicates that the above method can be inferred to be true.
[0208] ii. In one example, the flag indicates that the above method can be inferred to be true when the flag of palette mode is true and the prediction mode is MODE_INTER. Alternatively, in addition, if the flag of palette mode is true and the prediction mode is MODE_INTER, the flag indicates that the above method can be inferred to be true.
[0209] iii. In one example, the flag indicates that the above method can be inferred to be false when the flag of palette mode is true and the prediction mode is MODE_INTRA. Alternatively, in addition, if the flag of palette mode is true and the prediction mode is MODE_INTRA, the flag indicates that the above method can be inferred to be false.
[0210] e. In one example, the indication of palette mode can be signaled first, and then it is indicated whether PCIP or the above method is applied to a block.
[0211] i. Alternatively, in addition, when using the palette mode, three choices can be allowed, the regular palette mode, PCIP, or the above method.
[0212] 1) In one example, the first flag can be coded to indicate whether it is coded with PCIP. The second flag can be coded to indicate whether it is coded with the above method. When neither PCIP nor the above method is applied, the regular palette mode is enabled.
[0213] 2) In one example, when PCIP is enabled, the signaling of the second flag is skipped. That is, when the second flag needs to be coded, it is coded after the first flag.
[0214] 3) Alternatively, when the above method is enabled, the signaling of the first flag is skipped. That is, when the first flag needs to be coded, it is coded after the second flag.
[0215] 4) Alternatively, different orders of signaling the indication of the three choices can be used.
[0216] ii. Alternatively, the conventional palette mode can be disabled without signaling. Instead, a block can choose to be encoded / decoded using PCIP or the above method.
[0217] 1) Alternatively, in addition, when the current prediction mode is an intra mode, it can be signaled whether to use PCIP or the above method / how to use PCIP or the above method.
[0218] f. In one example, a binary code for bypass coding or a binary code for context coding in arithmetic coding can be used to signal an indication of any one or more of the above methods.
[0219] i. In one example, a context can be derived based on an indication of any one or more of the above methods for blocks adjacent to the current block.
[0220] 1) In one example, only one context can be used for signaling an indication of the above method.
[0221] 2) In one example, a context can be derived based on the coding information of adjacent blocks.
[0222] a) In one example, a context can be derived based on an indication of any one or more of the above methods for adjacent blocks to the left and / or above the current block (as Figure 9 shown).
[0223] b) For example, let cu_left_ibc_palette_mode and cu_above_ibc_palette_mode be the indications of the above method for the adjacent block to the left and the adjacent block above the current block (e.g., Figure 9 the adjacent blocks shown). In one example, the current context can be derived by the following equation
[0224] ctxInc = (cu_left_ibc_palette_mode? 1 : 0) + (cu_above_ibc_palette_mode? 1 : 0)
[0225] c) Alternatively, in one example, the current context can be derived by the following formula
[0226] ctxInc = (cu_left_ibc_palette_mode? 1 : 0) * 2 + (cu_above_ibc_palette_mode? 1 : 0)
[0227] 3) In one example, a context can be derived based on the availability of blocks adjacent to the current block.
[0228] a) In one example, if a neighboring block is not available, an indication of any one or more of the above methods for the neighboring block can be set to a default value (such as 0).
[0229] b) In one example, if a neighboring block is in a different CTU row from the current block, the neighboring block can be considered unavailable.
[0230] 4) In one example, context can be derived based on the coding and decoding information of the current block, such as block dimensions / split partition depth (e.g., quadtree / binary tree / trinary tree).
[0231] g. In one example, signaling of any one or more of the above methods can also be applied to the conventional palette mode or the PICP mode.
[0232] 5. Embodiments added to JVET-M1001-v5
[0233] 1.1.1.1 Sequence parameter set RBSP syntax
[0234] In this document, underlined italic bold or italic bold font indicates text added to the relevant part of the JVET-M1001-v5 specification.
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250] The cu_intrapalette_flag specifies the use of the intra palette combination mode in the current coding unit. cu_intrapalette_flag == 1 indicates that the intra palette combination mode is applied to the current coding unit. cu_intrapalette_flag == 0 indicates that the intra palette combination mode does not apply to the current coding unit.
[0251] The treeType specifies whether to apply a joint tree in the current coding tree. treeType == SINGLE_TREE indicates that the same coding unit splitting is applied to both luma and chroma. treeType != SINGLE_TREE indicates that separate coding unit splitting is applied to luma and chroma (dual tree). treeType == DUAL_TREE_LUMA indicates that the current splitting is for the luma component in the dual tree, and treeType == DUAL_TREE_CHROMA indicates that the current splitting is for the chroma component in the dual tree.
[0252] The startComp specifies the first color component of the current palette table. startComp == 0 indicates the Y component, and startComp == 1 and 2 indicate the Cb and Cr components. The numComps specifies the number of color components in the current palette table.
[0253] The predicted value palette is composed of palette entries from a previous coding unit, and the palette entries from the previous coding unit are used to predict the entries in the current palette.
[0254] The variable PredictorPaletteSize[startComp] specifies the size of the predicted value palette for the first color component of the current palette table startComp.
[0255] The variable PalettePredictorEntryReuseFlags[i] being equal to 1 specifies that the i-th entry in the predicted value palette is reused in the current palette. PalettePredictorEntryReuseFlags[i] being equal to 0 specifies that the i-th entry in the predicted value palette is not an entry in the current palette. All elements of the array PalettePredictorEntryReuseFlags[i] are initialized to 0.
[0256]
[0257]
[0258]
[0259]
[0260]
[0261]
[0262]
[0263]
[0264]
[0265]
[0266]
[0267]
[0268] Table 2 – Syntax elements for which ctxInc is assigned to the binary code with context coding
[0269]
[0270] 7. Embodiment based on JVET-O2001-vE
[0271] The changed places are highlighted by bold, italic, and underlined text. The deleted text is marked with
[0272] Embodiment 1
[0273] 7.3.8.5 Coding unit syntax
[0274]
[0275]
[0276]
[0277] The palette_escape_val_present_flag being equal to 1 specifies that the current coding unit contains at least one escape coding sample. The escape_val_present_flag being equal to 0 specifies that there are no escape coding samples in the current coding unit. The value of the palette_escape_val_present_flag is inferred to be equal to 1 when not present.
[0278] The variable MaxPaletteIndex specifies the maximum possible value of the palette index for the current coding unit. The value of MaxPaletteIndex is set to be equal to
[0279] 8.4.5.3 Decoding Process for Palette Mode
[0280] The inputs to this process are:
[0281] - The position (xCb, yCb) that specifies the position of the top-left luma sample of the current block relative to the top-left luma sample of the current picture,
[0282] - The variable startComp that specifies the first color component in the palette table,
[0283] - The variable cIdx that specifies the color component of the current block,
[0284] - Two variables nCbW and nCbH that specify the width and height of the current block, respectively.
[0285] The output of this process is the array recSamples[x][y], where x = 0..nCbW-1 and y = 0..nCbH-1, and this array specifies the reconstructed sample values of the block.
[0286] Depending on the value of cIdx, the variables nSubWidth and nSubHeight are derived as follows:
[0287] - If cIdx is equal to 0, then nSubWidth is set to 1 and SubHeight is set to 1.
[0288] - Otherwise, nSubWidth is set to SubWidthC and nSubHeight is set to SubHeightC.
[0289]
[0290] The (nCbW x nCbH) block of the reconstructed sample array recSamples at the position (xCb, yCb) is represented by recSamples[x][y], where x = 0..nCTbW-1 and y = 0..nCbH-1. For each x in the range from 0 to nCbW-1 (inclusive) and each y in the range from 0 to nCbH-1 (inclusive), the value of recSamples[x][y] is derived as follows:
[0291] - The variables xL and yL are derived as follows:
[0292] xL = palette_transpose_flag? x * nSubHeight : x * nSubWidth (8 - 268)
[0293] yL = Palette_transpose_flag? y * nSubWidth : y * nSubHeight (8 - 269)
[0294] - The derivation of the variable bIsEscapeSample is as follows:
[0295] - If PaletteIndexMap[xCb + xL][yCb + yL] is equal to MaxPaletteIndex and palette_escape_val_present_flag is equal to 1, then bIsEscapeSample is set to be equal to 1.
[0296] - Otherwise, bIsEscapeSample is set to be equal to 0.
[0297] - If bIsEscapeSample is equal to 0, then the following conditions apply:
[0298]
[0299] recSamples[x][y] = CurrentPaletteEntries[cIdx][PaletteIndexMap[xCb + xL][yCb + yL]] (8 - 270)
[0300] …
[0301] The requirement for bitstream consistency is that the value of PredictorPaletteSize[startComp] should be in the range from 0 to PaletteMaxPredictorSize, inclusive of the end values.
[0302] 8.6.2.2 Derivation Process of IBC Luminance Block Vector Prediction
[0303] This process is called only when CuPredMode[0][xCb][yCb] is equal to MODE_IBC, where (xCb, yCb) specifies the top - left sample of the current luminance coding / decoding block relative to the top - left luminance sample of the current picture.
[0304] …
[0305] 8.8.3.5 Derivation Process of Boundary Filtering Strength
[0306] The inputs to this process are:
[0307] - The array of picture samples recPicture,
[0308] - The position (xCb, yCb), which specifies the position of the top - left sample of the current coding block relative to the top - left sample of the current picture,
[0309] - The variable nCbW, which specifies the width of the current coding block,
[0310] - The variable nCbH, which specifies the height of the current coding block,
[0311] - The variable edgeType, which specifies whether a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge is being filtered,
[0312] - The variable cIdx, which specifies the color component of the current coding block,
[0313] - The two - dimensional (nCbW)×(nCbH) array edgeFlags.
[0314] The output of this process is the two - dimensional (nCbW)×(nCbH) array bS that specifies the boundary filtering strength.
[0315] …
[0316] For xD where i = 0..xN i and yD where j = 0..yN j , the following conditions apply:
[0317] - If edgeFlags[xD i [yD j is equal to 0, then the variable bS[xD i [yD j is set to be equal to 0.
[0318] - Otherwise, the following conditions apply:
[0319] …
[0320] - The derivation of the variable bS[xD i [yD j is as follows:
[0321] …
[0322] - Otherwise, if cIdx is equal to 0 and one or more of the following conditions are true, then bS[xD i [yD j is set to be equal to 1:
[0323] - The coding / decoding sub-block containing sample p0 and the coding / decoding sub-block containing sample q0 are both coded / decoded in the IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used to predict the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.
[0324] - To predict the coding / decoding sub-block containing sample p0, a different reference picture or a different number of motion vectors is used than for the prediction of the coding / decoding sub-block containing sample q0.
[0325] Note 1 - Determining whether the reference pictures used for the two coding / decoding sub-blocks are the same or different depends only on which pictures are referenced, regardless of whether the index of reference picture list 0 or the index of reference picture list 1 is used to form the prediction, and also regardless of whether the index positions within the reference picture lists are different.
[0326] Note 2 - The number of motion vectors used to predict the coding / decoding sub-block with top-left sample coverage (xSb, ySb) is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].
[0327] …
[0328] - Otherwise, the variable bS[xD i [yD j is set to be equal to 0.
[0329] 6.4.4 Derivation process of neighboring block availability
[0330] The inputs to this process are:
[0331] - The luma position (xCurr, yCurr) of the top-left sample of the current block relative to the top-left luma sample of the current picture,
[0332] - The luma position (xNbY, yNbY) that is covered by a neighboring block relative to the top-left luma sample of the current picture,
[0333] - The variable checkPredModeY, which specifies whether availability depends on the prediction mode.
[0334] - The variable cIdx, which specifies the color component of the current block.
[0335] The output of this process is the availability of the neighboring block covering the position (xNbY, yNbY), denoted as availableN.
[0336] …
[0337] When all of the following conditions are true, availableN is set to be equal to false (FALSE).
[0338] - The checkPredModeY is equal to TRUE.
[0339] - The availableN is set to be equal to TRUE.
[0340]
[0341] Embodiment 2
[0342] 7.3.8.5 Syntax of the Coding and Decoding Unit
[0343]
[0344]
[0345]
[0346] The palette_escape_val_present_flag being equal to 1 specifies that the current coding and decoding unit contains at least one escaped coding and decoding sample. The escape_val_present_flag being equal to 0 indicates that there is no escaped coding and decoding sample in the current coding and decoding unit. The value of the palette_escape_val_present_flag is inferred to be equal to 1 when not present.
[0347] The variable MaxPaletteIndex specifies the maximum possible value of the palette index of the current coding and decoding unit. The value of MaxPaletteIndex is set to be equal to
[0348] 8.4.5.3 Decoding Process of the Palette Mode
[0349] The inputs of this process are:
[0350] - The position (xCb, yCb), which specifies the position of the upper-left luminance sample of the current block relative to the upper-left luminance sample of the current picture.
[0351] - The variable startComp, which specifies the first color component in the palette table.
[0352] - The variable cIdx, which specifies the color component of the current block.
[0353] - Two variables nCbW and nCbH, which respectively specify the width and height of the current block.
[0354] The output of the process is the array recSamples[x][y], where x = 0..nCbW-1 and y = 0..nCbH-1, and this array specifies the reconstructed sample values of the block.
[0355] Depending on the value of cIdx, the variables nSubWidth and nSubHeight are derived as follows:
[0356] - If cIdx is equal to 0, then nSubWidth is set to 1 and SubHeight is set to 1.
[0357] - Otherwise, nSubWidth is set to SubWidthC and nSubHeight is set to SubHeightC.
[0358]
[0359] The (nCbW x nCbH) block of the reconstructed sample array recSamples at position (xCb, yCb) is represented by recSamples[x][y], where x = 0..nCTbW-1 and y = 0..nCbH-1, and for each x in the range from 0 to nCbW-1 (inclusive) and each y in the range from 0 to nCbH-1 (inclusive), the value of recSamples[x][y] is derived as follows:
[0360] - The variables xL and yL are derived as follows:
[0361] xL = palette_transpose_flag? x * nSubHeight : x * nSubWidth (8-268)
[0362] yL = Palette_transpose_flag? y * nSubWidth : y * nSubHeight (8-269)
[0363] - The variable bIsEscapeSample is derived as follows:
[0364] - If PaletteIndexMap[xCb+xL][yCb+yL] is equal to MaxPaletteIndex and palette_escape_val_present_flag is equal to 1, then bIsEscapeSample is set to be equal to 1.
[0365] - Otherwise, bIsEscapeSample is set to be equal to 0.
[0366] - If bIsEscapeSample is equal to 0, the following conditions apply:
[0367]
[0368] recSamples[x][y] = CurrentPaletteEntries[cIdx][PaletteIndexMap[xCb + xL][yCb + yL]] (8 - 270)
[0369] …
[0370] The requirement for bitstream consistency is that the value of PredictorPaletteSize[startComp] should be in the range of 0 to PaletteMaxPredictorSize, inclusive of the end values.
[0371] 8.6.2.2 Derivation Process of IBC Luminance Block Vector Prediction
[0372] This process is called only when CuPredMode[0][xCb][yCb] is equal to MODE_IBC, where (xCb, yCb) specifies the top - left sample of the current luminance coding / decoding block relative to the top - left luminance sample of the current picture.
[0373] …
[0374] 8.8.3.5 Derivation Process of Boundary Filtering Strength
[0375] The inputs to this process are:
[0376] - The picture sample array recPicture,
[0377] - The position (xCb, yCb), specifying the position of the top - left sample of the current coding / decoding block relative to the top - left sample of the current picture,
[0378] - The variable nCbW, specifying the width of the current coding / decoding block,
[0379] - The variable nCbH, specifying the height of the current coding / decoding block,
[0380] - The variable edgeType, specifying whether a vertical (EDGE_VER) edge or a horizontal (EDGE_HOR) edge is being filtered,
[0381] - The variable cIdx, specifying the color component of the current coding / decoding block,
[0382] - The two - dimensional (nCbW) × (nCbH) array edgeFlags.
[0383] The output of this process is an array bS of two dimensions (nCbW) × (nCbH) specifying the boundary filtering strength.
[0384] …
[0385] For xD where i = 0..xN i and yD where j = 0..yN j , the following conditions apply:
[0386] - If edgeFlags[xD i [yD j is equal to 0, then the variable bS[xD i [yD j is set to be equal to 0.
[0387] - Otherwise, the following conditions apply:
[0388] …
[0389] - The derivation of the variable bS[xD i [yD j is as follows:
[0390] …
[0391] - Otherwise, if cIdx is equal to 0 and one or more of the following conditions are true, then bS[xD i [yD j is set to be equal to 1:
[0392] - Both the coding / decoding sub-block containing sample p0 and the coding / decoding sub-block containing sample q0 are coded / decoded in the IBC prediction mode, and the absolute difference between the horizontal component or the vertical component of the block vectors used to predict the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luminance samples.
[0393] - To predict the coding / decoding sub-block containing sample p0, a different reference picture or a different number of motion vectors is used than for the prediction of the coding / decoding sub-block containing sample q0.
[0394] Note 1 - Determining whether the reference pictures used for the two coding / decoding sub-blocks are the same or different depends only on which pictures are referenced, regardless of whether the index of reference picture list 0 or the index of reference picture list 1 is used to form the prediction, and also regardless of whether the index positions within the reference picture list are different.
[0395] Note 2 - The number of motion vectors used to predict the coding / decoding sub-block with the top-left sample coverage (xSb, ySb) is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].
[0396] …
[0397] - Otherwise, the variable bS[xD i [yD j is set equal to 0.
[0398] 6.4.4 Derivation Process of Neighboring Block Availability
[0399] The inputs to this process are:
[0400] - The luminance position (xCurr, yCurr) of the top - left sample of the current block relative to the top - left luminance sample of the current picture,
[0401] - The luminance position (xNbY, yNbY) that is covered by a neighboring block relative to the top - left luminance sample of the current picture,
[0402] - The variable checkPredModeY, which specifies whether the availability depends on the prediction mode.
[0403] - The variable cIdx, which specifies the color component of the current block.
[0404] The output of this process is the availability of the neighboring block covering the position (xNbY, yNbY), denoted as availableN.
[0405] …
[0406] When all of the following conditions are true, availableN is set equal to false (FALSE).
[0407] - checkPredModeY is equal to true (TRUE).
[0408] - availableN is set equal to true (TRUE).
[0409]
[0410] 7. Example Implementations of the Disclosed Technology
[0411] Figure 6is a block diagram of a video processing apparatus 600. The apparatus 600 can be used to implement one or more methods described herein. The apparatus 600 can be implemented in a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. The apparatus 600 can include one or more processors 602, one or more memories 604, and video processing hardware 606. The (multiple) processors 602 can be configured to implement one or more methods described in this document. The one or more memories 604 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 606 can be used to implement certain techniques described in this document in hardware circuitry and can be partially or fully part of the processor 602 (e.g., a graphics processing unit core GPU or other signaling processing circuitry).
[0412] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation and vice versa. As defined by the syntax, the bitstream representation of the current video block can, for example, correspond to bits co-located at different positions within the bitstream or scattered bits. For example, macroblocks can be encoded in terms of transformed and coded error residual values and also using bits in the header and other fields in the bitstream.
[0413] It will be appreciated that by allowing the use of the techniques disclosed in this document, the disclosed methods and techniques will be beneficial to video encoder and / or decoder embodiments incorporated within video processing devices such as smart phones, laptop computers, desktop computers, and similar devices.
[0414] Figure 7 is a flowchart of an example method 700 of video processing. The method 700 includes, at 710, determining that a palette mode is to be used for processing a first portion of a video block and that an intra block copy (IBC) mode is to be used for processing a second portion of the video block, wherein in the palette mode, samples of the first portion of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, and wherein in the IBC mode, samples of the second portion of the video block are predicted from adjacent pixels of a neighboring previously decoded video block. The method includes, at 720, performing further processing of the first portion of the video block using the palette mode and performing further processing of the second portion of the video block using the IBC mode, wherein an indication of the first portion of the video block processed using the palette mode and an indication of the second portion of the video block processed using the IBC mode are included in a palette index that identifies the first portion of the video block and the second portion of the video block.
[0415] Certain embodiments can be described using the following clause-based format.
[0416] 1. A method for processing video, comprising:
[0417] Determining that a palette mode is to be used for processing a first portion of a video block and that an intra block copy (IBC) mode is to be used for processing a second portion of the video block, wherein in the palette mode, samples of the first portion of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, and wherein in the IBC mode, samples of the second portion of the video block are predicted from adjacent pixels of a neighboring previously decoded video block; and
[0418] Performing further processing of the first portion of the video block using the palette mode and performing further processing of the second portion of the video block using the IBC mode, wherein an indication of the first portion of the video block processed using the palette mode and an indication of the second portion of the video block processed using the IBC mode are included in a palette index that identifies the first portion of the video block and the second portion of the video block.
[0419] 2. The method according to clause 1, wherein the further processing of the first portion of the video block includes copying co-located samples from the second portion of the video block.
[0420] 3. The method according to clause 2, wherein copying co-located samples from the second portion of the video block is according to a palette index included in an index map.
[0421] 4. The method according to any one or more of clauses 2-3, wherein the palette index is 0.
[0422] 5. The method according to any one or more of clauses 2-3, wherein the palette index is equal to a number smaller than the total number of palette entries.
[0423] 6. The method according to any one or more of clauses 2-3, wherein based on one or more of the following, the palette index is equal to an integer value: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the codec tree structure of the video block, the picture / group / strip type of the video block, or a parameter included in the bitstream representation associated with the transform of the video block.
[0424] 7. The method according to any one or more of clauses 2-3, wherein signaling the palette index that identifies the first portion of the video block and the second portion of the video block is indicated by a flag indicated by the plt_combined_ibc_sample_flag of the video block.
[0425] 8. The method according to clause 7, wherein the value of plt_combined_ibc_sample_flag is equal to 1.
[0426] 9. The method according to clause 7, wherein the plt_combined_ibc_sample_flag of a video block is based on the value of the plt_combined_ibc_sample_flag of neighboring samples of the video block.
[0427] 10. The method according to clause 7, wherein when neighboring samples of a video block do not exist, the plt_combined_ibc_sample_flag of the video block is inferred to be zero.
[0428] 11. The method according to clause 9, wherein the neighboring samples of a video block include the spatially left neighborhood of the video block and the spatially above neighborhood of the video block.
[0429] 12. The method according to clause 11, wherein the plt_combined_ibc_sample_flag of the video block is 1, and wherein the plt_combined_ibc_sample_flag of both the spatially left neighborhood of the video block and the spatially above neighborhood of the video block is one.
[0430] 13. The method according to clause 1, wherein a second portion of the video block processed using the IBC mode is at least partially based on motion information derived from (i) the IBC merge mode or (ii) the IBC advanced motion vector prediction (AMVP) mode, wherein in the IBC merge mode, an index pointing to an entry in the IBC merge candidate list is parsed from a bitstream representation associated with the transformation of the video block, and wherein in the IBC AMVP mode, an index pointing to the IBC AMVP list is parsed from a bitstream representation associated with the transformation of the video block.
[0431] 14. The method according to clause 13, wherein the height and / or the width of the video block exceeds a threshold.
[0432] 15. The method according to clause 14, wherein the threshold is at least based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the codec tree structure of the video block, the picture / group / strip type of the video block, or a parameter included in a bitstream representation associated with the transformation of the video block.
[0433] 16. The method according to clause 13, wherein a second part of a video block processed using the IBC mode is at least partially based on motion information always derived from the IBC merge mode.
[0434] 17. The method according to clause 13, wherein a second part of a video block processed using the IBC mode is at least partially based on motion information always derived from the IBC AMVP mode.
[0435] 18. The method according to clause 17, wherein in the IBC AMVP mode, an entry in the IBC merge candidate list corresponds to the first entry in the IBC merge candidate list.
[0436] 19. The method according to clause 13, further comprising:
[0437] In response to determining that a dual codec tree structure for a video block is enabled, wherein the motion information in the IBC mode includes a chrominance motion vector or a luminance motion vector, and wherein based on the chrominance format of the second part of the video block, the chrominance motion vector is derived by one or more of the following: (a) scaling a co-located luminance motion vector, (b) scaling a neighboring motion vector of a co-located luminance block, or (c) averaging available luminance motion vectors for each chrominance sub-block.
[0438] 20. The method according to any one or more of clauses 2-3, wherein an indication of a second part of a video block processed using the IBC mode includes an indication of copying co-located samples from the second part of the video block, and wherein the indication of copying co-located samples from the second part of the video block is based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the codec tree structure of the video block, or the picture / group / strip type of the video block.
[0439] 21. The method according to any one or more of clauses 2-3, wherein a first part of a video block includes escape pixels, and wherein for the escape pixels, a residual is signaled in a bitstream representation associated with the transformation of the video block, and the residual is obtained from calculating the difference between the original samples of the first block and the co-located samples of the second part of the video block.
[0440] 22. The method according to clause 21, wherein the residual is quantized according to a quantization parameter, and wherein the quantized residual is signaled in a bitstream representation associated with the transformation of the video block.
[0441] 23. The method according to clause 22, wherein the quantized residual includes a positive sign or a negative sign, and wherein the positive sign or the negative sign is signaled in a bitstream representation associated with the transformation of the video block.
[0442] 24. The method according to any one or more of clauses 1-23, wherein the information identifying the associated method is included in a Video Parameter Set (VPS), a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), an Adaptation Parameter Set (APS), a picture header, a slice group header, a slice header, a strip header, or a largest coding unit (LCU) row.
[0443] 25. The method according to clause 24, wherein the information defined for a video block is based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, or the picture / group / strip type of the video block; the value of a palette flag indicating the palette mode of one or more neighboring samples of the video block; and the value of an Intra Block Copy (IBC) flag indicating the IBC mode of one or more neighboring samples of the video block.
[0444] 26. The method according to clause 25, wherein the value of the palette flag corresponds to a boolean value true or false, indicating whether the palette mode is enabled or disabled.
[0445] 27. The method according to clause 25, wherein the value of the Intra Block Copy (IBC) flag corresponds to a boolean value true or false, indicating whether the IBC mode is enabled or disabled.
[0446] 28. The method according to any one or more of clauses 24-27, wherein the value of the palette flag and / or the value of the Intra Block Copy (IBC) flag are signaled in a bitstream representation associated with the transformation of the video block.
[0447] 29. The method according to any one or more of clauses 24-27, wherein the value of the palette flag and / or the value of the Intra Block Copy (IBC) flag are calculated or inferred.
[0448] 30. The method according to any one or more of clauses 24-29, wherein the information defined for a video block includes a prediction mode, wherein the prediction mode is MODE_IBC, MODE_INTRA, or MODE_INTER corresponding to the IBC mode, the intra mode, or the inter mode, respectively.
[0449] 31. The method according to any one or more of clauses 1-23, wherein the first part of the video block and / or the second part of the video block correspond to sub-blocks, and the method further includes:
[0450] selectively enabling or disabling the palette mode and / or the IBC mode to be used on the sub-blocks.
[0451] 32. The method according to clause 31, wherein the sub-blocks are 4×4 luma blocks or 2×2 chroma blocks.
[0452] 33. The method according to clause 31, wherein an Intra Block Copy (IBC) mode is used before the palette mode.
[0453] 34. The method according to clause 31, wherein if the co-located luma block of the current chroma sub-block is not decoded in the IBC mode, the palette mode is used for the current chroma sub-block.
[0454] 35. The method according to clause 31, wherein if the IBC prediction block of the current chroma sub-block is not reconstructed, the palette mode is used for the current chroma sub-block.
[0455] 36. The method according to clause 31, wherein the prediction mode of at least part of the co-located luma block of the sub-block is selectively enabled or disabled.
[0456] 37. The method according to clause 31, wherein selectively enabling the IBC mode for a sub-block includes copying co-located samples in the IBC prediction, and selectively disabling the IBC mode for a sub-block includes reconstructing the sub-block using palette colors.
[0457] 38. The method according to clause 31, wherein the size of the sub-block is based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the palette index, one or more Intra Block Copy (IBC) flags of neighboring blocks of the video block, the color format of the video block, the codec tree structure of the sub-block, the slice / group / picture type of the sub-block.
[0458] 39. A method for processing video, comprising:
[0459] Determining, for samples of a video block, a palette mode and an Intra Block Copy (IBC) mode to be used for processing the samples, wherein in the palette mode, the samples of the video block are decoded according to a set of representative color values included in a predefined palette, wherein in the IBC mode, the samples of the video block are predicted from adjacent pixels of neighboring previously decoded video blocks, and wherein the samples of the video block are associated with an index.
[0460] 40. A video decoding device, the video decoding device comprising a processor configured to implement the method according to any one of clauses 1 to 39.
[0461] 41. A video encoding device, the video encoding device comprising a processor configured to implement the method according to any one of clauses 1 to 39
[0462] 42. A computer program product having computer code stored thereon, the code causing a processor to implement the method according to any one of clauses 1 to 39 when executed by the processor.
[0463] 43. A method, apparatus, or system as described in this document.
[0464] Figure 10 FIG. 1 is a block diagram showing an example video processing system 1000 in which various techniques disclosed herein may be implemented. Various implementations may include some or all components of system 1000. System 1000 may include an input 1002 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8- or 10-bit multi-component pixel values), or may be received in a compressed or encoded format. Input 1002 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces (such as Ethernet, Passive Optical Network (PON), etc.) and wireless interfaces (such as Wi-Fi or cellular interfaces).
[0465] System 1000 may include a codec component 1004 that may implement various codec or encoding methods described in this document. The codec component 1004 may reduce the average bit rate of the video from the input 1002 to the output of the codec component 1004 to produce a codec representation of the video. Thus, codec techniques are sometimes referred to as video compression or video transcoding techniques. The output of the codec component 1004 may be stored or transmitted via a connected communication (represented by component 1006). Component 1008 uses the stored or communicated bitstream (or codec) representation of the video received at input 1002 to generate pixel values or a displayable video, which is sent to the display interface 1010. The process of generating a user-viewable video from the bitstream representation is sometimes referred to as video decompression. Additionally, although some video processing operations are referred to as "codec" operations or tools, it should be understood that codec tools or operations are used at the encoder, and the decoder will perform corresponding decoding tools or operations that invert the codec results.
[0466] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High-Definition Multimedia Interface (HDMI), or Displayport, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The techniques described in this document may be implemented in various electronic devices, such as mobile phones, laptop computers, smartphones, or other devices capable of performing digital data processing and / or video display.
[0467] Figure 11Flowchart of an example method for visual data processing. At step 1102, for the conversion between a video block of visual media data and a bitstream representation of the video block, a palette mode is determined to be used for processing a first portion of the video block and an Intra Block Copy (IBC) mode is determined to be used for processing a second portion of the video block, wherein in the palette mode, samples of the first portion of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, and wherein in the IBC mode, samples of the second portion of the video block are predicted from neighboring pixels of a neighboring previously decoded video block. At step 1104, the process performs further processing of the first portion of the video block using the palette mode during the conversion and performs further processing of the second portion of the video block based on a predicted block derived using the IBC mode, wherein an indication of the first portion of the video block processed using the palette mode and an indication of the second portion of the video block processed using the IBC mode are included in a palette index map that identifies the first portion of the video block and the second portion of the video block.
[0468] Figure 12 Flowchart of an example method for visual data processing. At step 1202, the process determines a first combination of a palette and an Intra Block Copy (IBC) mode to be used for processing samples of a video block, wherein in the palette mode, samples of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, wherein in the IBC mode, samples of the video block are predicted from neighboring pixels of a neighboring previously decoded video block, wherein the samples of the video block are associated with a palette index representing an INDEX mode or a COPY_ABOVE mode, and wherein in the INDEX mode or the COPY_ABOVE mode, the palette index of the current block is derived by copying a previously encoded index. At step 1204, the process performs a conversion between the video block and a bitstream representation of the video block.
[0469] Certain embodiments of the present disclosure are presented in a clause-based format.
[0470] 1. A method for visual media processing, comprising:
[0471] Determining, for the conversion between a video block of visual media data and a bitstream representation of the video block, a palette mode to be used for processing a first portion of the video block and an Intra Block Copy (IBC) mode to be used for processing a second portion of the video block, wherein in the palette mode, samples of the first portion of the video block are encoded and decoded according to a set of representative color values included in a predefined palette, and wherein in the IBC mode, samples of the second portion of the video block are predicted from neighboring pixels of a neighboring previously decoded video block; and
[0472] During conversion, further processing of the first part of the video block is performed using the palette mode, and further processing of the second part of the video block is performed based on a predicted block derived using the IBC mode, wherein an indication of the first part of the video block processed using the palette mode and an indication of the second part of the video block processed using the IBC mode are included in a palette index map that identifies the first part of the video block and the second part of the video block.
[0473] 2. The method according to clause 1, wherein the further processing of the second part of the video block includes:
[0474] Reconstructing the samples of the second part of the video block by copying co-located samples in the predicted block derived using the IBC mode.
[0475] 3. The method according to clause 1, wherein the palette index included in the palette index map indicates whether the sample belongs to the first part of the video block or the second part of the video block.
[0476] 4. The method according to any one or more of clauses 2-3, wherein the palette index of the samples belonging to the second part of the video block is set to 0.
[0477] 5. The method according to any one or more of clauses 2-3, wherein the actual palette index of the samples belonging to the first part is equal to 1 and less than the decoded palette index.
[0478] 6. The method according to any one or more of clauses 2-3, wherein the palette index is equal to an integer value based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the codec tree structure of the video block, the picture / group / strip type of the video block, or a parameter included in the bitstream representation associated with the conversion of the video block.
[0479] 7. The method according to any one or more of clauses 1 and 3, wherein the palette index identifying the first part of the video block and the second part of the video block is signaled as a flag represented by the plt_combined_ibc_sample_flag of the video block.
[0480] 8. The method according to any one or more of clauses 2-3, wherein the samples of the second part of the video block are added as new entries to the palette prediction values, wherein the palette prediction values maintain a list of samples using the palette.
[0481] 9. The method according to any one of Clauses 2 - 3, wherein the samples of the second part of the video block are used to replace existing entries in the palette prediction value, and the palette prediction value maintains a list of coded samples using the palette.
[0482] 10. The method according to any one or more of Clauses 2 - 3, wherein the samples of the second part of the video block are added as new entries to the palette prediction value, the palette prediction value maintains a list of samples using the palette, and after the addition, the list of samples in the palette prediction value is reordered.
[0483] 11. The method according to Clause 7, wherein when the sample belongs to the second part of the video block, the value of plt_combined_ibc_sample_flag is equal to one.
[0484] 12. The method according to Clause 7, wherein the plt_combined_ibc_sample_flag of the video block is based on the values of the plt_combined_ibc_sample_flag flags of the neighboring samples of the video block.
[0485] 13. The method according to Clause 7, wherein when the neighboring samples of the video block do not exist, the plt_combined_ibc_sample_flag of the video block is inferred to be zero.
[0486] 14. The method according to Clause 12, wherein the neighboring samples of the video block include the spatially left neighborhood of the video block and the spatially upper neighborhood of the video block.
[0487] 15. The method according to Clause 11, wherein the plt_combined_ibc_sample_flag of the video block is 1, and the plt_combined_ibc_sample_flag flags of both the spatially left neighborhood and the spatially upper neighborhood of the video block are one.
[0488] 16. The method according to Clause 1, wherein the second part of the video block processed using the IBC mode is at least partially based on motion information derived from (i) the IBC merge mode or (ii) the IBC advanced motion vector prediction (AMVP) mode. In the IBC merge mode, an index pointing to an entry in the IBC merge candidate list is parsed from the bitstream representation associated with the transformation of the video block, and in the IBC AMVP mode, an index pointing to the IBC AMVP list is parsed from the bitstream representation associated with the transformation of the video block.
[0489] 17. The method according to clause 16, wherein the height and / or the width of the video block exceeds a threshold.
[0490] 18. The method according to clause 17, wherein the threshold is at least based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the codec tree structure of the video block, the picture / group / strip type of the video block, or the parameter included in the bitstream representation associated with the transform of the video block.
[0491] 19. The method according to clause 16, wherein only the prediction block derived using the IBC merge mode is used to process the second part of the video block.
[0492] 20. The method according to clause 16, wherein only the prediction block derived using the IBC AMVP mode is used to process the second part of the video block.
[0493] 21. The method according to clause 16, wherein the prediction block derived from the motion candidates in the history-based motion vector prediction (HMVP) table is used to process the second part of the video block.
[0494] 22. The method according to clause 19, wherein the index of the IBC merge candidate used for the prediction block for the second part of the video block is included as a field in the bitstream representation associated with the transform of the video block.
[0495] 23. The method according to clause 22, wherein the index of the invalid entry in the IBC merge candidate list is excluded so as not to be signaled in the bitstream representation.
[0496] 24. The method according to clause 20, wherein the block vector difference between the motion information of the prediction block for the second part of the video block and the entry in the IBC AMVP list is included as a field in the bitstream representation associated with the transform of the video block.
[0497] 25. The method according to clause 19, wherein the first valid candidate in the IBC merge candidate list is used to derive the prediction block, and the valid candidate satisfies the condition that the whole of the reference block is within the available reconstructed region.
[0498] 26. The method according to clause 19, wherein the first valid candidate in the IBC AMVP list is used to derive the prediction block, and the valid candidate satisfies the condition that the whole of the reference block is within the available reconstructed region.
[0499] 27. The method according to clause 20, wherein in the IBC AMVP mode, it further includes:
[0500] When it is determined that all entries in the IBC merge candidate list are invalid, default motion information is used.
[0501] 28. The method according to clause 27, wherein the default motion information is at least partially based on the dimension of the video block or the position of the video block.
[0502] 29. The method according to clause 27, wherein the default motion information is predefined.
[0503] 30. The method according to clause 16, further comprising:
[0504] In response to determining that a dual coding tree structure for a video block is enabled, wherein the motion information in IBC mode includes a chrominance motion vector or a luminance motion vector, and wherein based on the chrominance format of the second part of the video block, the chrominance motion vector is derived by one or more of the following: (a) scaling a co-located luminance motion vector, (b) scaling a neighboring motion vector of a co-located luminance block, or (c) averaging available luminance motion vectors for each chrominance sub-block.
[0505] 31. The method according to any one or more of clauses 2 - 30, wherein the indication of the second part of the video block processed using the IBC mode is based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, or the picture / group / strip type of the video block.
[0506] 32. The method according to any one or more of clauses 2 - 3, wherein the first part of the video block includes escape pixels, and wherein for the escape pixels, a residual is signaled in the bitstream representation associated with the transformation of the video block, and the residual is obtained by calculating the difference between the samples of the first part of the video block and the samples of the second part of the video block.
[0507] 33. The method according to any one or more of clauses 2 - 3, wherein the first part of the video block includes escape pixels, and wherein for the escape pixels, a residual is signaled in the bitstream representation associated with the transformation of the video block, and the residual is obtained by calculating the difference between the samples of the first part of the video block and the reconstructed samples of the second part of the video block.
[0508] 34. The method according to clause 33, wherein the residual is quantized according to a quantization parameter, and wherein the quantized residual is signaled in the bitstream representation associated with the transformation of the video block.
[0509] 35. The method according to clause 34, wherein the quantized residual includes a positive sign or a negative sign, and wherein the positive sign or the negative sign is signaled in the bitstream representation associated with the transformation of the video block.
[0510] 36. The method according to any one or more of clauses 1 - 35, wherein the first part of the video block and / or the second part of the video block correspond to sub - blocks, and the method further comprises:
[0511] Selectively enabling or disabling a palette mode and / or an IBC mode to be used on the sub - blocks.
[0512] 37. The method according to clause 36, wherein the sub - blocks are 4×4 luma blocks or 2×2 chroma blocks.
[0513] 38. The method according to clause 36, wherein an Intra - Block Copy (IBC) mode is used before the palette mode.
[0514] 39. The method according to clause 36, wherein if the current chroma sub - block is not coded / decoded in the IBC mode, the palette mode is used on the current chroma sub - block.
[0515] 40. The method according to clause 36, wherein if the co - located luma block of the current chroma sub - block is not coded / decoded in the IBC mode, the palette mode is used on the current chroma sub - block.
[0516] 41. The method according to clause 36, wherein if the IBC prediction block of the current chroma sub - block has not been reconstructed, the palette mode is used on the current chroma sub - block.
[0517] 42. The method according to clause 36, wherein the enabling or disabling is selectively based at least in part on the prediction mode of the co - located luma block of the sub - block.
[0518] 43. The method according to clause 36, wherein selectively enabling the IBC mode for a sub - block includes copying co - located samples in the IBC prediction, and selectively disabling the IBC mode for a sub - block includes reconstructing the sub - block using palette colors.
[0519] 44. The method according to clause 36, wherein an indication of the use of the palette mode and / or the IBC mode is signaled at the sub - block level.
[0520] 45. The method according to clause 44, wherein a flag associated with the sub - block is included in the bit - stream representation to indicate whether the sub - block is coded / decoded in the palette mode or in the IBC mode.
[0521] 46. The method according to clause 43, wherein a flag associated with the video block is included in the bit - stream representation to indicate whether the video block is coded / decoded in the palette mode or in the IBC mode, and further comprises:
[0522] Based on information from a second color component of a sub-block, selectively enable or disable a palette mode and / or an IBC mode to be used on a first color component of the sub-block.
[0523] 47. The method according to clause 36, wherein the size of the sub-block is based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the palette index, one or more intra-block copy (IBC) flags of neighboring blocks of the video block, the color format of the video block, the codec tree structure of the sub-block, the slice / group / picture type of the sub-block.
[0524] 48. A method for visual media processing, comprising:
[0525] Determine a first combination of a palette and an intra-block copy (IBC) mode to be used for processing samples of a video block, wherein in the palette mode, the samples of the video block are decoded according to a set of representative color values included in a predefined palette, wherein in the IBC mode, the samples of the video block are predicted from adjacent pixels of neighboring previously decoded video blocks, wherein the samples of the video block are associated with a palette index indicating an INDEX mode or a COPY_ABOVE mode, and wherein in the INDEX mode or the COPY_ABOVE mode, the palette index of the current block is derived by copying a previously decoded index; and
[0526] Perform a conversion between the video block and a bitstream representation of the video block.
[0527] 49. The method according to clause 48, wherein samples of a video block decoded in the IBC mode are inferred to have an ad-hoc index.
[0528] 50. The method according to clause 49, wherein in the INDEX mode and / or the COPY_ABOVE mode, the value of the ad-hoc index is based on other palette indexes.
[0529] 51. The method according to clause 49, wherein in the INDEX mode and / or the COPY_ABOVE mode, prevent samples in a first part of the video block from copying samples in a second part of the video block.
[0530] 52. The method according to clause 49, wherein when the palette index of a sample indicates the INDEX and / or COPY_ABOVE mode, skip samples decoded in the IBC mode.
[0531] 53. The method according to clause 48, further comprising:
[0532] For the samples of a video block, determine a second combined palette and an intra prediction mode to be used to process the samples using a prediction block that is generated based on the intra prediction mode and a palette index.
[0533] 54. The method according to clause 48, wherein in a first combined palette mode and an intra block copy (IBC) mode, further comprising:
[0534] Apply a constraint-based rule that specifies at least one valid motion information derived from (i) an IBC merge mode or (ii) an IBC advanced motion vector prediction (AMVP) mode.
[0535] 55. The method according to any one or more of clauses 1-53, wherein information identifying the association method is included in a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice group header, a slice header, a strip header, or a largest coding unit (LCU) row.
[0536] 56. The method according to clause 55, wherein the information defined for a video block is based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, or the picture / group / strip type of the video block; the value of a palette flag indicating the palette mode of one or more neighboring samples of the video block; the value of an intra block copy flag indicating the IBC mode of one or more neighboring samples of the video block; the value of a first combined mode flag indicating the combined palette and intra block copy mode of one or more neighboring samples of the video block; and the value of a second combined mode flag indicating the combined palette and intra mode of one or more neighboring samples of the video block.
[0537] 57. The method according to clause 54, wherein when the dimension of the video block exceeds a threshold number, the information identifying the association method is excluded from the bitstream representation.
[0538] 58. The method according to clause 56, wherein the value of the palette flag corresponds to a boolean true or false, indicating whether the palette mode is enabled or disabled.
[0539] 59. The method according to clause 56, wherein the value of the intra block copy flag corresponds to a boolean true or false, indicating whether the IBC mode is enabled or disabled.
[0540] 60. The method according to clause 56, wherein the value of the first combined mode flag corresponds to a boolean true or false, indicating whether the first combined palette and intra block copy mode is disabled or enabled.
[0541] 61. The method according to clause 56, wherein the value of the mode flag of the second combination corresponds to a Boolean true or false, indicating whether the palette and the intra mode of the second combination are disabled or enabled.
[0542] 62. The method according to clause 56, wherein the information defined for a video block includes a prediction mode, and the prediction mode is MODE_IBC, MODE_INTRA, or MODE_INTER corresponding to an IBC mode, an intra mode, or an inter mode, respectively.
[0543] 63. The method according to any one or more of clauses 58 - 61, wherein the value of the palette flag and / or the value of the intra block copy flag and / or the value of the mode flag of the first combination and / or the value of the mode flag of the second combination are signaled in a bitstream representation associated with the transformation of the video block.
[0544] 64. The method according to any one or more of clauses 58 - 61, wherein the value of the palette flag and / or the value of the intra block copy flag and / or the value of the mode flag of the first combination and / or the value of the mode flag of the second combination are calculated or inferred.
[0545] 65. The method according to any one or more of clauses 58 - 61, wherein in the bitstream representation, the value of the palette flag is signaled before the values of the mode flag of the first combination and the mode flag of the second combination and the value of the intra block copy flag.
[0546] 66. The method according to any one or more of clauses 58 - 61, wherein in the bitstream representation, the value of the palette flag, the value of the intra block copy flag, and the values of the mode flag of the first combination and the mode flag of the second combination are signaled in sequence.
[0547] 67. The method according to any one or more of clauses 58 - 61, wherein a first flag and a second flag associated with the video block are included in the bitstream representation, the first flag indicates the use of the mode of the first combination and the second flag indicates the use of the mode of the second combination, and the first flag is calculated or inferred from the second flag.
[0548] 68. The method according to any one or more of clauses 58 - 61, wherein the use of the palette mode is signaled by a first indication, and the use of the mode of the first combination and / or the mode of the second combination is signaled by a second indication.
[0549] 69. The method according to clause 67, wherein the first flag and / or the second flag included in the bitstream representation are signaled based on an arithmetic coding using a bypass coding binary code or a context coding binary code.
[0550] 70. The method according to clause 69, wherein the context of the first flag and / or the context of the second flag is based on one or more neighboring blocks of the video block.
[0551] 71. The method according to clause 69, wherein the context of the first flag and / or the context of the second flag is based on codec information associated with one or more neighboring blocks of the video block.
[0552] 72. The method according to any one or more of clauses 68 - 71, wherein one or more neighboring blocks of the video block are located to the left of the video block and / or above the video block.
[0553] 73. The method according to clause 72, wherein the context of the video block represented as ctxInc is calculated as ctxInc = (cu_left_ibc_palette_mode? 1 : 0)+(cu_above_ibc_palette_mode? 1 : 0), where cu_left_ibc_palette_mode and cu_above_ibc_pal are the contexts of the neighboring left block and the above block, respectively.
[0554] 74. The method according to clause 71, wherein the context of the video block represented as ctxInc is calculated as ctxInc = (cu_left_ibc_palette_mode? 1 : 0)*2+(cu_above_ibc_palette_mode? 1 : 0), where cu_left_ibc_palette_mode and cu_above_ib are the contexts of the neighboring left block and the above block, respectively.
[0555] 75. The method according to any one or more of clauses 69 - 73, wherein if the neighboring block is not available, the context of the neighboring block is set to a default value.
[0556] 76. The method according to clause 75, wherein the default value is zero.
[0557] 77. The method according to clause 71, wherein the context of the first flag and / or the context of the second flag is based on the codec information of the video block.
[0558] 78. The method according to clause 77, wherein the codec information includes the dimensions of the video block or the segmentation process associated with the video block.
[0559] 79. The method according to clause 78, wherein the segmentation process associated with the video block includes one of the following: quadtree segmentation, binary segmentation, or ternary tree segmentation.
[0560] 80. The method according to any one of clauses 1 - 79, wherein the transformation includes generating a bitstream representation from a current video block.
[0561] 81. The method according to any one of clauses 1 - 79, wherein the transformation includes generating pixel values of a current video block from a bitstream representation.
[0562] 82. A video encoder device, the video encoder device including a processor configured to implement the method according to any one or more of clauses 1 - 79.
[0563] 83. A video decoder device, the video decoder device including a processor configured to implement the method according to any one or more of clauses 1 - 79.
[0564] 84. A computer - readable medium having stored thereon code that implements processor - executable instructions to implement the method according to any one or more of clauses 1 - 79.
[0565] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the transformation from the pixel representation of a video to the corresponding bitstream representation, and vice versa. As defined by grammar, the bitstream representation of a current video block may, for example, correspond to bits that are co - located at different positions within the bitstream or scattered bits. For example, macroblocks may be encoded in terms of transformed and coded - decoded error residual values and also using bits in headers and other fields in the bitstream. Further, as described in the above solution, during transformation, a decoder may parse the bitstream based on knowledge of the possible presence or absence of certain fields. Similarly, an encoder may determine whether to include certain syntax fields and, accordingly, generate a coded - decoded representation by including or excluding syntax fields from the coded - decoded representation.
[0566] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this document and structural equivalents thereof, or in combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by, or to control the operation of, a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter affecting a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. The apparatus can also include code that creates an execution environment for the computer program being discussed, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is a machine-generated signal, such as a machine-generated electrical, optical, or electromagnetic signal, generated to encode information for transmission to an appropriate receiver apparatus.
[0567] A computer program (also called a program, software, software application, script, or code) can be written in any form of programming language, including a compiled or interpreted language, and can be deployed in any form, including as a stand-alone program or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program need not 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 file), in a single file dedicated to the program being discussed, or in multiple coordinated files (e.g., files that store one or more modules, subroutines, or portions of code). A computer program can be deployed to execute on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.
[0568] The processes and logical flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logical flows can also be performed by, and the apparatus can also be implemented as, special purpose logic circuitry, such as an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).
[0569] For example, processors suitable for executing computer programs include any one or more processors of general and special microprocessors, as well as any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include or be operably coupled to one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, to receive data from the one or more mass storage devices, or to transfer data to the one or more mass storage devices, or both receive and transfer data. However, a computer need not 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; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special logic circuitry.
[0570] Although this document includes many details, these details should not be construed as limitations on any subject or the scope of what can be claimed, but rather as descriptions of features specific to particular embodiments of a particular technology. In this document, certain features described in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment can also be implemented separately or in any suitable sub-combination in multiple embodiments. Moreover, although the above features may be described as acting in certain combinations and even initially claimed as such, in some cases, one or more features from the claimed combination can be removed from the combination, and the claimed combination can be directed to a sub-combination or a variation of a sub-combination.
[0571] Similarly, although operations are depicted in the figures in a particular order, this should not be understood as requiring that the operations be performed in the particular order shown or in sequential order, or that all of the operations shown be performed, to achieve a desired result. Additionally, the separation of various system components in the embodiments described in this document should not be understood as requiring such separation in all embodiments.
[0572] Only a few implementations and examples have been described, and other implementations, enhancements, and variations can be made based on what is described and shown in this document.
Claims
1. A method for visual media processing, comprising: Determine that a palette mode is to be used for processing a first portion of the video block and an intra block copy mode is to be used for processing a second portion of the video block for the conversion between a video block of visual media data and a bitstream of the video block, wherein in the palette mode, samples of the first portion of the video block are encoded according to a set of representative color values included in a predefined palette, and wherein in the intra block copy mode, samples of the second portion of the video block are predicted from neighboring pixels of a neighboring previously decoded video block; and During the conversion, perform further processing on the first portion of the video block using the palette mode and perform further processing on the second portion of the video block based on a predicted block derived using the intra block copy mode, wherein an indication of the first portion of the video block processed using the palette mode and an indication of the second portion of the video block processed using the intra block copy mode are included in a palette index map that identifies the first portion of the video block and the second portion of the video block, wherein the first portion of the video block includes escape pixels, and for the escape pixels, a residual is obtained from a difference between a sample of the first portion of the video block calculated using an IBC mode or an intra mode and a co-located prediction sample.
2. The method according to claim 1, wherein the further processing of the second part of the video block comprises: Reconstruct samples of the second portion of the video block by copying co-located samples in the predicted block derived using the intra block copy mode.
3. The method according to claim 1, wherein the palette index in the palette index map indicates whether the sample point belongs to the first part of the video block or the second part of the video block.
4. The method according to claim 2 or 3, wherein the palette index of the sample points belonging to the second part of the video block is set to 0.
5. The method according to claim 2 or 3, wherein the actual palette index of the sample points belonging to the first part is equal to 1 and less than the decoded palette index.
6. The method according to claim 2 or 3, wherein the palette index is equal to an integer value based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, the picture / group / strip type of the video block, or a parameter in the bitstream associated with the transform of the video block.
7. The method according to claim 1, wherein the palette index identifying the first part and the second part of the video block is signaled as a flag represented by the plt_combined_ibc_sample_flag of the video block.
8. The method according to claim 2 or 3, wherein the sample points of the second part of the video block are added as new entries to the palette prediction value, and the palette prediction value maintains a list of sample points using the palette.
9. The method according to claim 2 or 3, wherein the sample points of the second part of the video block are used to replace existing entries in the palette prediction value, and the palette prediction value maintains a list of coded sample points using the palette.
10. The method according to claim 2 or 3, wherein the sample points of the second part of the video block are added as new entries to the palette prediction value, and the palette prediction value maintains a list of sample points using the palette, and after the addition, the list of sample points in the palette prediction value is reordered.
11. The method according to claim 7, wherein when the sample point belongs to the second part of the video block, the value of plt_combined_ibc_sample_flag is equal to one.
12. The method according to claim 7, wherein the plt_combined_ibc_sample_flag of the video block is based on the values of the plt_combined_ibc_sample_flag flags of the neighboring sample points of the video block.
13. The method according to claim 7, wherein when there are no neighboring sample points of the video block, the plt_combined_ibc_sample_flag of the video block is inferred to be zero.
14. The method according to claim 12, wherein the neighboring sample points of the video block include the spatially left neighborhood of the video block and the spatially upper neighborhood of the video block.
15. The method according to claim 11, wherein the plt_combined_ibc_sample_flag of the video block is 1, and wherein the plt_combined_ibc_sample_flag flags of both the spatially left neighborhood of the video block and the spatially upper neighborhood of the video block are one.
16. The method according to claim 1, wherein the second part of the video block processed using the intra block copy mode is at least partially based on motion information derived from (i) the intra block copy merge mode or (ii) the advanced motion vector prediction mode of intra block copy, wherein in the intra block copy merge mode, an index pointing to an entry in the intra block copy merge candidate list is parsed from the bitstream associated with the transformation of the video block, and wherein in the advanced motion vector prediction mode of intra block copy, an index pointing to the advanced motion vector prediction list of intra block copy is parsed from the bitstream associated with the transformation of the video block.
17. The method according to claim 16, wherein the height and / or the width of the video block exceed a threshold.
18. The method according to claim 17, wherein the threshold is at least based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, the picture / group / slice type of the video block, or the parameters included in the bitstream associated with the transformation of the video block.
19. The method according to claim 16, wherein only the prediction block derived using the intra block copy merge mode is used to process the second part of the video block.
20. The method according to claim 16, wherein only the prediction block derived using the advanced motion vector prediction mode of the intra block copy is used to process the second portion of the video block.
21. The method according to claim 16, wherein the prediction block derived from the motion candidates in the history-based motion vector prediction table is used to process the second portion of the video block.
22. The method according to claim 19, wherein the index of the intra block copy merge candidate used by the prediction block for the second portion of the video block is included as a field in the bitstream associated with the transformation of the video block.
23. The method according to claim 22, wherein the indexes of the invalid entries in the intra block copy merge candidate list are excluded from being signaled in the bitstream.
24. The method according to claim 20, wherein the block vector difference between the motion information of the prediction block for the second portion of the video block and the entries in the advanced motion vector prediction list of the intra block copy is included as a field in the bitstream associated with the transformation of the video block.
25. The method according to claim 19, wherein the first valid candidate in the intra block copy merge candidate list is used to derive the prediction block, and the valid candidate satisfies the condition that the whole of the reference block is within the available reconstructed region.
26. The method according to claim 19, wherein the first valid candidate in the advanced motion vector prediction list of the intra block copy is used to derive the prediction block, and the valid candidate satisfies the condition that the whole of the reference block is within the available reconstructed region.
27. The method according to claim 20, wherein in the advanced motion vector prediction mode of the intra block copy, it further comprises: When it is determined that all entries in the intra block copy merge candidate list are invalid, use default motion information.
28. The method according to claim 27, wherein the default motion information is at least partially based on the dimension of the video block or the position of the video block.
29. The method according to claim 27, wherein the default motion information is predefined.
30. The method according to claim 16, further comprising: In response to determining that a dual coding tree structure of the video block is enabled, wherein motion information in the intra block copy mode includes a chrominance motion vector or a luminance motion vector, and wherein based on a chrominance format of the second portion of the video block, the chrominance motion vector is derived by one or more of the following: (a) scaling a co-located luminance motion vector, (b) scaling a neighboring motion vector of a co-located luminance block, or (c) averaging available luminance motion vectors for each chrominance sub-block.
31. The method according to claim 2 or 3, wherein the indication of the second part of the video block processed using the intra block copy mode is based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, or the picture / group / strip type of the video block.
32. The method according to claim 1, wherein the residual is quantized according to a quantization parameter, and wherein the quantized residual is signaled in the bitstream associated with the transform of the video block.
33. The method according to claim 32, wherein the quantized residual includes a positive or negative sign, and wherein the positive or negative sign is signaled in the bitstream associated with the transform of the video block.
34. The method according to claim 1, wherein the first part and / or the second part of the video block corresponds to a sub-block, further comprising: Selectively enable or disable the palette mode and / or the intra block copy mode to be used on the sub-block.
35. The method according to claim 34, wherein the sub-block is a 4×4 luma block or a 2×2 chroma block.
36. The method according to claim 34, wherein the intra block copy mode is used before the palette mode.
37. The method according to claim 34, wherein if the current chroma sub-block is not encoded in the intra block copy mode, the palette mode is used on the current chroma sub-block.
38. The method according to claim 34, wherein if the co-located luma block of the current chroma sub-block is not encoded in the intra block copy mode, the palette mode is used on the current chroma sub-block.
39. The method according to claim 34, wherein if the intra block copy prediction block of the current chroma sub-block is not reconstructed, the palette mode is used on the current chroma sub-block.
40. The method according to claim 34, wherein the selectively enabling or disabling is at least partially based on the prediction mode of the co-located luma block of the sub-block.
41. The method according to claim 34, wherein selectively enabling the intra block copy mode for the sub-block includes copying co-located samples in the intra block copy prediction, and selectively disabling the intra block copy mode for the sub-block includes reconstructing the sub-block using palette colors.
42. The method according to claim 34, wherein an indication of the use of the palette mode and / or the intra block copy mode is signaled at the sub-block level.
43. The method according to claim 42, wherein a flag associated with the sub-block is included in the bitstream to indicate whether the sub-block is encoded in the palette mode or in the intra block copy mode.
44. The method according to claim 41, wherein a flag associated with the video block is included in the bitstream to indicate whether the video block is encoded in the palette mode or in the intra block copy mode, further comprising: Selectively enable or disable the palette mode and / or the intra block copy mode to be used on a first color component of the sub-block based on information from a second color component of the sub-block.
45. The method according to claim 34, wherein the size of the sub-block is based on one or more of the following: the dimensions of the video block, the quantization parameter of the video block, the palette index, one or more intra block copy flags of neighboring blocks of the video block, the color format of the video block, the coding tree structure of the sub-block, the slice / group / picture type of the sub-block.
46. The method according to claim 1, wherein the transformation includes generating the bitstream from the video block.
47. The method according to claim 1, wherein the transformation includes generating pixel values of the video block from the bitstream.
48. A method for visual media processing, comprising: For a sample of a video block, determine a first combination of a palette and an intra block copy mode to be used to process the sample, wherein in the palette mode, the samples of the video block are encoded according to a set of representative color values included in a predefined palette, and wherein in the intra block copy mode, the samples of the video block are predicted from neighboring pixels of a neighboring previously decoded video block, wherein the samples of the video block are associated with a palette index indicating an INDEX mode or a COPY_ABOVE mode, and wherein in the INDEX mode or the COPY_ABOVE mode, the palette index of the video block is derived by copying a previously encoded index; and Perform a conversion between the video block and the bitstream of the video block, wherein a first portion of the video block includes escape pixels, and wherein for the escape pixels, a residual is obtained from a difference between samples of the first portion of the video block calculated using an IBC mode or an intra mode and co-located prediction samples.
49. The method according to claim 48, wherein samples of the video block encoded in the intra block copy mode are inferred to have an ad-hoc index.
50. The method according to claim 49, wherein in the INDEX mode and / or the COPY_ABOVE mode, the value of the ad-hoc index is based on other palette indices.
51. The method according to claim 49, wherein in the INDEX mode and / or the COPY_ABOVE mode, samples in a first portion of the video block are prevented from copying samples from a second portion of the video block.
52. The method according to claim 49, wherein when the palette index of the sample indicates the INDEX and / or the COPY_ABOVE mode, samples encoded in the intra block copy mode are skipped.
53. The method according to claim 48, further comprising: For the samples of the video block, determine a second combination of a palette and an intra prediction mode to be used to process the samples using a prediction block generated based on the intra prediction mode and the palette index.
54. The method according to claim 48, wherein in the first combined palette mode and intra block copy mode, further comprising: Apply a constraint-based rule that specifies at least one valid motion information derived from (i) an intra block copy merge mode or (ii) an advanced motion vector prediction mode of the intra block copy.
55. The method according to claim 48, wherein the information identifying the association method is included in a video parameter set, a sequence parameter set, a picture parameter set, an adaptation parameter set, a picture header, a slice group header, a slice header, a strip header, or a maximum coding unit row.
56. The method according to claim 55, wherein the information defined for the video block is based on one or more of the following: the dimension of the video block, the quantization parameter of the video block, the quantization parameter of the video block, the color format of the video block, the coding tree structure of the video block, or the picture / group / strip type of the video block; A value of a palette flag indicating a palette mode of one or more neighboring samples of the video block; A value of an intra block copy flag indicating an intra block copy mode of one or more neighboring samples of the video block; a value of the first combination of mode flags indicating the combination of the palette and the intra block copy mode of one or more neighboring samples of the video block; and a value of the second combination of mode flags indicating the combination of the palette and the intra mode of one or more neighboring samples of the video block.
57. The method according to claim 55, wherein when the dimension of the video block exceeds a threshold number, the information identifying the association method is excluded from the bitstream.
58. The method according to claim 56, wherein the value of the palette flag corresponds to a Boolean true or false, indicating whether the palette mode is enabled or disabled.
59. The method according to claim 56, wherein the value of the intra block copy flag corresponds to a Boolean true or false, indicating whether the intra block copy mode is enabled or disabled.
60. The method according to claim 56, wherein the value of the first combined mode flag corresponds to a Boolean true or false, indicating whether the first combination of the palette and intra block copy modes is disabled or enabled.
61. The method according to claim 56, wherein the value of the second combined mode flag corresponds to a Boolean true or false, indicating whether the second combination of the palette and intra modes is disabled or enabled.
62. The method according to claim 56, wherein the information defined for the video block includes a prediction mode, wherein the prediction mode is MODE_IBC, MODE_INTRA, or MODE_INTER corresponding to the intra block copy mode, the intra mode, or the inter mode, respectively.
63. The method according to any one of claims 58 - 61, wherein the value of the palette flag and / or the value of the intra block copy flag and / or the value of the first combined mode flag and / or the value of the second combined mode flag are signaled in the bitstream associated with the transformation of the video block.
64. The method according to any one of claims 58 - 61, wherein the value of the palette flag and / or the value of the intra block copy flag and / or the value of the mode flag of the first combination and / or the value of the mode flag of the second combination is calculated or inferred.
65. The method according to any one of claims 58 - 61, wherein in the bitstream, the value of the palette flag is signaled before the values of the mode flag of the first combination and the mode flag of the second combination and the value of the intra block copy flag.
66. The method according to any one of claims 58 - 61, wherein in the bitstream, the value of the palette flag, the value of the intra block copy flag, and the values of the mode flag of the first combination and the mode flag of the second combination are signaled in sequence.
67. The method according to any one of claims 58 - 61, wherein a first flag and a second flag associated with the video block are included in the bitstream, wherein the first flag indicates the use of the mode of the first combination and the second flag indicates the use of the mode of the second combination, and wherein the first flag is calculated or inferred from the second flag.
68. The method according to any one of claims 58 - 61, wherein the use of the palette mode is signaled with a first indication, and the use of the mode of the first combination and / or the mode of the second combination is signaled with a second indication.
69. The method according to claim 67, wherein the first flag and / or the second flag included in the bitstream is signaled using a bypass - coded binary code or a context - coded binary code based on arithmetic coding.
70. The method according to claim 69, wherein the context of the first flag and / or the context of the second flag is based on one or more neighboring blocks of the video block.
71. The method according to claim 69, wherein the context of the first flag and / or the context of the second flag is based on coding information associated with one or more neighboring blocks of the video block.
72. The method according to claim 70 or 71, wherein one or more neighboring blocks of the video block are located to the left of and / or above the video block.
73. The method according to claim 72, wherein the context of the video block represented as ctxInc is calculated as: ctxInc = (cu_left_ibc_palette_mode? 1:0) + (cu_above_ibc_palette_mode? 1:0), where cu_left_ibc_palette_mode and cu_above_ibc_palc_palette_mode are the contexts of the neighboring left block and the above block, respectively.
74. The method according to claim 71, wherein the context of the video block represented as ctxInc is calculated as: ctxInc = (cu_left_ibc_palette_mode? 1:0) * 2 + (cu_above_ibc_palette_mode? 1:0), where cu_left_ibc_palette_mode and cu_above_ibc_palette_mode are the contexts of the neighboring left block and the above block, respectively.
75. The method according to claim 72, wherein if one or more neighboring blocks of the video block are unavailable, the context of one or more neighboring blocks of the video block is set to a default value.
76. The method according to claim 75, wherein the default value is zero.
77. The method according to claim 71, wherein the context of the first flag and / or the context of the second flag are based on the coding information of the video block.
78. The method according to claim 76, wherein the coding information includes the dimension of the video block or the segmentation process associated with the video block.
79. The method according to claim 78, wherein the segmentation process associated with the video block includes one of the following: quadtree segmentation, binary segmentation, or ternary tree segmentation.
80. A video encoder device, the video encoder device comprising a processor configured to implement the method according to any one of claims 1 - 79.
81. A video decoder device, the video decoder device comprising a processor configured to implement the method according to any one of claims 1 - 79.
82. A computer-readable medium having code stored thereon that implements processor-executable instructions to implement the method according to any one of claims 1 - 79.
Citation Information
Patent Citations
Method for sub-block based palette coding
CN106797478A
Method and apparatus for processing video signal
US20180109798A1