Slice type signaling within the video picture header
Adaptive Resolution Change (ARC) in video codecs addresses the challenge of seamless resolution transitions in HEVC and VVC, enhancing user experience by reducing decoding complexity and latency.
Patent Information
- Application Number
- JP2024038683
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-27
- Filing Date
- 2024-03-13
- Publication Date
- 2026-07-13
- Estimated Expiration
- Not applicable · inactive patent
Smart Images

Figure 0007888639000076 
Figure 0007888639000077 
Figure 0007888639000078
Abstract
Description
[Technical Field]
[0001] This application is a divisional application of Japanese Patent Application No. 2022-539115, which is a national phase application of International Patent Application No. PCT / CN2020 / 140044, filed on 28 December 2020, claiming priority and interest to International Patent Application No. PCT / CN2019 / 129069, filed on 27 December 2019. For all purposes under the law, the entire disclosure of the above application is incorporated by reference as part of the disclosure of this application.
[0002] This patent document relates to image coating technology, apparatus, and system. [Background technology]
[0003] Currently, efforts are underway to improve the performance of existing video codec technologies in order to provide better compression ratios or to offer video coding and decoding schemes that enable lower complexity or parallel implementations. Industry experts have recently proposed several new video coding tools, and testing to determine their effectiveness is currently underway. [Overview of the project]
[0004] This document describes apparatus, systems, and methods related to digital video coding, and more specifically, slice-type signaling within a video picture header. The methods described may be applicable to existing video coding standards (e.g., High Efficiency Video Coding, HEVC or Versatile Video Coding) and future video coding standards or video codecs.
[0005] In a representative embodiment, the disclosed technology may be used to provide a method for image processing. The method comprises performing a conversion between an image having one or more image pictures having one or more slices and a bitstream of the image, the bitstream conforming to a format rule, the format rule specifying that for an image picture in which all slices are coded as I slices, the syntax elements related to P slices and B slices are omitted from the picture header for the image picture.
[0006] In another representative embodiment, the disclosed technology may be used to provide a method for image processing. This method comprises performing a conversion between an image having one or more image pictures, each having one or more slices, and a bitstream of the image, wherein the bitstream conforms to a format rule, the format rule stipulating that the picture header of each image picture has a syntax element indicating whether all slices within the image picture are coded with the same coding type.
[0007] In another representative embodiment, the disclosed technology may be used to provide an alternative method for image processing. This method comprises performing a conversion between an image having one or more image pictures and a bitstream of the image, the bitstream conforming to a format rule, the format rule specifying that a picture header for each of the one or more image pictures has a syntax element pointing to that picture.
[0008] In another representative embodiment, the disclosed technology may be used to provide an alternative method for image processing. This method comprises performing a conversion between an image having one or more image pictures and a bitstream of the image, the bitstream conforming to a format rule, the format rule specifying that a syntax element indicating the picture type of the picture is signaled in an access unit (AU) delimiter raw byte sequence payload (RBSP), the syntax element indicating that all slices in the picture are I slices.
[0009] In another representative embodiment, the disclosed technology may be used to provide an alternative method for image processing. This method involves performing a conversion between an image having an image picture having one or more image slices and a bitstream of the image, wherein the bitstream conforms to a format rule, which stipulates that for a picture in which each of the multiple slices in the picture is an I-slice, an indication of the slice type is excluded from the slice header of the multiple slices in the bitstream during encoding, or is inferred to be an I-slice during decoding.
[0010] In another representative embodiment, the disclosed technology may be used to provide an alternative method for image processing. This method includes making a decision whether one or more non-W-related syntax elements are signaled in the slice header of a W slice or the picture header of a W picture for a conversion between an image having a W slice or a W picture and a bitstream of said image, where W is I, B, or P, and performing said conversion based on the decision.
[0011] In another representative embodiment, a video encoder device is disclosed. The video encoder has a processor configured to implement the method described above.
[0012] In another representative embodiment, a video decoder device is disclosed. This video decoder has a processor configured to implement the method described above.
[0013] In another representative embodiment, a computer-readable medium storing code is disclosed. The code, in the form of processor-executable code, embodies one of the methods described herein.
[0014] These and other features are described throughout this document. [Brief explanation of the drawing]
[0015] [Figure 1] An example of a subblock motion vector (VSB) and motion vector difference is shown. [Figure 2] This shows an example of a 16x16 video block divided into 16 4x4 regions. [Figure 3A] Figures 3A-3C show examples of specific locations within a sample. [Figure 3B] Figures 3A-3C show examples of specific locations within a sample. [Figure 3C] Figures 3A-3C show examples of specific locations within a sample. [Figure 4A] Figures 4A and 4B show examples of the current sample and its reference sample locations within the current picture. [Figure 4B] Figures 4A and 4B show examples of the current sample and its reference sample locations within the current picture. [Figure 5] This shows an example of decoder-side motion vector refinement. [Figure 6] This shows an example of the flow of cascaded DMVR and BDOF processes in VTM5.0. The DMVR SAD calculation and the BDOF SAD calculation are different and not shared. [Figure 7]This block diagram shows an example of a video processing system in which the various technologies disclosed herein may be implemented. [Figure 8] This is a block diagram of an example of a hardware platform used for video processing. [Figure 9] Block diagram showing an example of a video coating system that can implement some embodiments of the present disclosure. [Figure 10] A block diagram showing an example of an encoder that can implement some embodiments of the present disclosure. [Figure 11] A block diagram showing an example of a decoder that can implement some embodiments of the present disclosure. [Figure 12] Figure 12-17 shows a flowchart illustrating an example of an image processing method. [Figure 13] Figure 12-17 shows a flowchart illustrating an example of an image processing method. [Figure 14] Figure 12-17 shows a flowchart illustrating an example of an image processing method. [Figure 15] Figure 12-17 shows a flowchart illustrating an example of an image processing method. [Figure 16] Figure 12-17 shows a flowchart illustrating an example of an image processing method. [Figure 17] Figure 12-17 shows a flowchart illustrating an example of an image processing method. [Modes for carrying out the invention]
[0016] 1. Video encoding in HEVC / H.265 Video coding standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. The ITU-T created H.261 and H.263, while ISO / IEC created MPEG-1 and MPEG-4 Visual. These two organizations then jointly developed the H.262 / MPEG-2 Video, H.264 / MPEG-4 AVC (Advanced Video Coding), and H.265 / HEVC standards. Since H.262, video coding standards have been based on hybrid video coding structures that utilize transform coding in addition to time prediction. To explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established JVET (Joint Video Exploration Team) in 2015. Since then, numerous new methods have been adopted by JVET and incorporated into reference software called the Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on the VVC standard, which aims for a 50% reduction in bitrate compared to HEVC.
[0017] The latest version of the VVC draft, namely Versatile Video Coding (Draft 6), is: http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 15_Gothenburg / wg11 / JVET-O2001-v14.zip It can be found at: The latest reference software for VVC, called VTM, is: https: / / vcgit.hhi.fraunhofer.de / jvet / VVCSoftware_VTM / tags / VTM-6.0 It can be found there.
[0018] AVC and HEVC do not have the ability to change resolution without the need to introduce an IDR or intra-random access point (IRAP) picture; such ability may be referred to as Adaptive Resolution Change (ARC). There are use cases or application scenarios that benefit from the ARC feature, including the following:
[0019] - Rate adaptation in video calls and conferences. To adapt the encoded video to changing network conditions, when network conditions deteriorate and available bandwidth decreases, the encoder can adapt by encoding a lower resolution picture. Currently, changing picture resolution can only be done after the IRAP picture, which presents several problems. A reasonable quality IRAP picture is much larger than the inter-encoded picture, and accordingly, decoding it becomes more complex and costly in terms of time and resources. This becomes a problem when the decoder requests a resolution change for loading reasons. It can also break low-latency buffering conditions and force audio resynchronization, and the end-to-end latency of the stream will increase, at least temporarily. This can result in a poor user experience.
[0020] - Active speaker changes in multi-party video conferencing. In multi-party video conferencing, it is common for the active speaker to be displayed with a larger video size than the video displayed to the rest of the conference participants. When the active speaker changes, the picture resolution for each participant may also need to be adjusted. The need for ARC (Analog Resolution) functionality becomes even more important when such changes in the active speaker occur frequently.
[0021] - Faster starts in streaming. In streaming applications, it's common for the application to buffer until a certain length of decoded picture is ready before displaying. Starting the bitstream at a lower resolution allows the application to have enough pictures in the buffer to begin displaying faster.
[0022] - Adaptive stream switching in streaming. The Dynamic Adaptive Streaming over HTTP (DASH) specification includes a feature called @mediaStreamStructureId. This enables switching between different representations at open GOP random access points with undecodeable reading pictures, such as a CRA picture with an associated RASL picture in HEVC. When two different representations of the same video have different bitrates but the same spatial resolution and have the same @mediaStreamStructureId value, switching between the two representations can be performed at the CRA picture with the associated RASL picture, and the RASL picture associated with the CRA picture at the switching point can be decoded with acceptable quality, thus enabling a seamless switch. By using ARC, the @mediaStreamStructureId function can also be used to switch between DASH representations with different spatial resolutions.
[0023] ARC is also known as Dynamic Resolution Conversion.
[0024] ARC can also be considered a special case of Reference Picture Resampling (RPR), such as in Annex P of H.263.
[0025] 2.1. Reference picture resampling in Annex P of H.263 This mode describes an algorithm that warps a reference picture before using it for prediction. This can be useful for resampling a reference picture that has a different source format than the picture being predicted. It can also be used for global motion estimation or rotational motion estimation by warping the shape, size, and position of the reference picture. The syntax includes the warp parameters and resampling algorithm used. The simplest level of operation for the reference picture resampling mode is implicit factor 4 resampling, where an FIR filter should be applied to the upsampling and downsampling processes. In this case, its use is understood when the size of the new picture (indicated in the picture header) differs from the size of the preceding picture, so no additional signaling overhead is required.
[0026] 2.2. Several contributions addressing ARC have been proposed, as listed below: JVET-M0135, JVET-M0259, JVET-N0048, JVET-N0052, JVET-N0118, JVET-N0279.
[0027] 2.3. Conformance Window in VVC In VVC, the fitting window defines a rectangle. Samples inside the fitting window belong to the image of interest. Samples outside the fitting window may be discarded during output.
[0028] When a fitting window is applied, the scaling ratio in RPR is derived based on the fitting window. Picture parameter set RBSP syntax (outside 1) TIFF0007888639000001.tif213170TIFF0007888639000002.tif217170
[0029] 2.4. RPR in JVET-O2001-v14 JVET-O2001-v14 incorporates ARC, also known as RPR (Reference Picture Resampling).
[0030] In JVET-O2001-v14, RPR disables TMVP if the collated picture has a different resolution than the current picture. Additionally, BDOF and DMVR are disabled if the referenced picture has a different resolution than the current picture.
[0031] To handle normal MCs when the reference picture has a different resolution than the current picture, the interpolation section is defined as follows: 8.5.6.3 Fractional Sample Interpolation Process 8.5.6.3.1 General The inputs to this process are as follows: - The luma position (xSb, ySb) that defines the top-left sample of the current coding subblock relative to the top-left luma sample of the current picture, - The variable sbWidth currently defines the width of the coding subblock. - The variable sbHeight currently defines the height of the coding subblock. - Motion vector offset mvOffset, - Refined motion vector refMvLX, - Selected reference picture sample array refPicLX, - Half-sample interpolation filter index hpelIfIdx, - Bidirectional optical flow flag bdofFlag, - The variable cIdx defines the color component index of the current block. The output of this process is as follows: - The array predSamplesLX contains the predicted sample values (sbWidth + brdExtSize) × (sbHeight + brdExtSize). The predicted block boundary extension size, brdExtSize, is derived as follows: brdExtSize=(bdofFlag||(inter_affine_flag[xSb][ySb]&&sps_affine_prof_enabled_flag))?2:0 (8-752) The variable fRefWidth is set to equal the PicOutputWidthL of the referenced picture in luma samples. The variable fRefHeight is set to equal the PicOutputHeightL of the referenced picture in luma samples. The motion vector mvLX is set to equal (refMvLX-mvOffset). - If cIdx is equal to 0, the following applies: - The scaling factors and their fixed-point representations are defined as follows: hori_scale_fp=((fRefWidth<<14)+(PicOutputWidthL>>1)) / PicOutputWidthL (8-753) vert_scale_fp=((fRefHeight<<14)+(PicOutputHeightL>>1)) / PicOutputHeightL (8-754) - Let (xIntL, yIntL) be the luma position given in full sample units, and (xFracL, yFracL) be the offset given in 1 / 16 sample units. These variables are used only in this section to define the fractional sample positions inside the reference sample array refPicLX; - Top-left coordinates of the boundary block for reference sample padding (xSbInt L ,ySbInt L ) is set to be equal to (xSb+(mvLX[0]>>4),ySb+(mvLX[1]>>4)); - Each luma sample position (x) inside the predicted luma sample sequence preSamplesLX L =0..sbWidth-1+brdExtSize,y L For =0..sbHeight-1+brdExtSize), the corresponding predicted luma sample value preSamplesLX[x L[y L is derived as follows: - (refxSb L , refySb L ) and (refx L , refy L ) are set to the luma positions pointed to by the motion vector (refMvLX[0], refMvLX[1]) given in 1 / 16 sample units. The variables refxSb L , refx L , refySb L , and refy L are derived as follows: refxSb L = ((xSb << 4) + refMvLX[0]) * hori_scale_fp (8 - 755) refx L = ((Sign(refxSb) * ((Abs(refxSb) + 128) >> 8) + x L * ((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8 - 756) refySb L = ((ySb << 4) + refMvLX[1]) * vert_scale_fp (8 - 757) refy L = ((Sign(refySb) * ((Abs(refySb) + 128) >> 8) + y L * ((vert_scale_fp + 8) >> 4)) + 32) >> 6 (8 - 758) - The variables xInt L , yInt L , xFrac L , and yFrac L are derived as follows: xInt L = refx L >> 4 (8 - 759) yInt L = refy L >> 4 (8 - 760) xFrac L = refx L & 15 (8 - 761) yFrac L =refy L &15 (8-762) - If bdofFlag is equal to TRUE or (sps_affine_prof_enabled_flag is equal to TRUE and inter_affine_flag[xSb][ySb] is equal to TRUE), and one or more of the following conditions are true, the Luman integer sample fetching process specified in Section 8.5.6.3.3 is disabled (xInt L +(xFrac L >>3)-1),yInt L +(yFrac L >>3)-1) and refPicLX are called as inputs to predict the luma sample value preSamplesLX[x L ][y L ] is derived: - x L is equal to 0 - x L is equal to sbWidth+1 - y L is equal to 0 - y L is equal to sbHeight+1; - Otherwise, the Luma sample 8-tap interpolation filtering process specified in Section 8.5.6.3.2 is performed as follows: (xIntL-(brdExtSize>0? 1:0),yIntL-(brdExtSize>0? 1:0)), (xFracL,yFracL), (xSbInt L ,ySbInt L By calling the function with refPicLX, hpelIfIdx, sbWidth, sbHeight, and (xSb, ySb) as inputs, you can predict the luma sample values preSamplesLX[x L ][y L ] is derived; - Otherwise (cIdx is not equal to 0), the following applies: - Let (xIntC, yIntC) be the chroma position given in full sample units, and (xFracC, yFracC) be the offset given in 1 / 32 sample units. These variables are used only in this section to define the general fractional sample positions inside the reference sample sequence refPicLX; - The top-left coordinates (xSbIntC, ySbIntC) of the boundary block for reference sample padding are set to be equal to ((xSb / SubWidthC)+(mvLX[0]>>5),(ySb / SubHeightC)+(mvLX[1]>>5)); - For each chroma sample position inside the predicted chroma sample sequence preSamplesLX (xC=0..sbWidth-1, yC=0..sbHeight-1), the corresponding predicted chroma sample values preSamplesLX[xC][yC] are derived as follows: - (refxSbC,refySbC) and (refxC,refyC) are defined as chroma positions pointed to by motion vectors (mvLX[0], mvLX[1]) given in units of 1 / 32 samples. Variable refxSb C refySb C refx C , and refy C However, this can be derived as follows: refxSb C =((xSb / SubWidthC<<5)+mvLX[0])*hori_scale_fp (8-763) refx C =((Sign(refxSbC)*((Abs(refxSbC)+256)>>9) +xC*((hori_scale_fp+8)>>4))+16)>>5 (8-764) refySb C =((ySb / SubHeightC<<5)+mvLX[1])*vert_scale_fp (8-765) refy C =((Sign(refySbC)*((Abs(refySbC)+256)>>9) +yC*((vert_scale_fp+8)>>4))+16)>>5 (8-766) - Variable xInt C , yInt C xFrac C , and yFrac C However, this can be derived as follows: xCot C =refxC>>5 (8-767) yInt C =refyC>>5 (8-768) xFrac C =refyC&31 (8-769) yFrac C =refyC&31 (8-770) - The process defined in Section 8.5.6.3.4 is called with (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight, and refPicLX as inputs to derive the predicted sample values preSamplesLX[xC][yC]. 8.5.6.3.2 Luma Sample Interpolation Filtering Process The inputs to this process are as follows: - Luma position in full sample units (xInt L ,yInt L ), - Luma position in fractional sample units (xFrac L yFrac L ), - For the top-left luma sample of the reference picture, define the top-left sample of the boundary block for reference sample padding, using the full sample unit luma position (xSbInt L ,ySbInt L ), - Luma reference sample array refPicLX L , - Half-sample interpolation filter index hpelIfIdx, - The variable sbWidth currently defines the width of the subblock, - The variable sbHeight currently defines the height of the subblock. - The luma position (xSb, ySb) that defines the top-left sample of the current subblock relative to the top-left luma sample of the current picture; The output of this process is the predicted Luma sample value preSampleLX L is; The variables shift1, shift2, and shift3 are derived as follows: - The variable shift1 is Min(4, BitDepth Y Variable shift2 is set to equal to 6, and variable shift3 is set to Max(2, 14-BitDepth Y Set to equal to ); - The variable picW is set to equal pic_width_in_luma_samples, and the variable picH is set to equal pic_height_in_luma_samples; xFrac L or yFrac L Luma interpolation filter coefficient f for each 1 / 16 fractional sample position p equal to L [p] is derived as follows: - If MotionModelIdc[xSb][ySb] is greater than 0 and both sbWidth and sbHeight are equal to 4, then the Luma interpolation filter coefficient f L [p] is defined in Table 2; - Otherwise, the Luma interpolation filter coefficient f L [p] is defined in Table 1 according to hpelIfIdx; Luma position in full sample units (xInt i ,yInt i ) can be derived for i=0..7 as follows: - If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies: xCot i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3) (8 - 771) yInt i = Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L + i - 3) (8 - 772) - Otherwise (if subpic_treated_as_pic_flag[SubPicIdx] is equal to 0), the following applies: xInt i = Clip3(0, picW - 1, sps_ref_wraparound_enabled_flag? ClipH((sps_ref_wraparound_offset_minus1 + 1)*MinCbSizeY, picW, xInt L + i - 3 : xInt L + i - 3) (8 - 773) yInt i = Clip3(0, picH - 1, yInt L + i - 3) (8 - 774) The luma position of the full - sample unit is further changed for i = 0..7 as follows: xInt i = Clip3(xSbInt L - 3, xSbInt L + sbWidth + 4, xInt i ) (8 - 775) yInt i = Clip3(ySbInt L - 3, ySbInt L + sbHeight + 4, yInt i ) (8 - 776) The predicted luma sample value presampleLX L is derived as follows: - If both xFrac L and yFrac L are equal to 0, the value of predSampleLX L is derived as follows: predSampleLX L=refPicLXL[xInt3][yInt3]< <shift3 (8-777) - No, xFrac L is not equal to 0 and yFrac L If it is equal to 0, predSampleLX L The value is derived as follows:
number
number
number
number
number
number
number
[0032] 2.5. JVET-N0236 This paper proposes a method for refining subblock-based affine motion compensation predictions using optical flow. After subblock-based affine motion compensation is performed, the prediction samples are refined by adding a difference derived from the optical flow equation. This is called prediction refinement with optical flow (PROF), and the proposed method can achieve interpretation at pixel-level granularity without increasing memory access bandwidth.
[0033] To achieve finer granularity in motion compensation, this paper proposes a method for refining subblock-based affine motion compensation predictions using optical flow. After subblock-based affine motion compensation is performed, the Luma prediction samples are refined by adding the difference derived from the optical flow equation. The proposed PROF (prediction refinement with optical flow) is described in the following four steps. Step 1) Perform subblock-based affine motion compensation to generate subblock predictions I(i,j). Step 2) At each sample position, use a 3-tap filter [-1,0,1] to calculate the spatial gradient g of the subblock prediction. x (i,j) and g y Calculate (i,j): g x (i,j)=I(i+1,j)-I(i-1,j) g y (i,j)=I(i,j+1)-I(i,j-1)
[0034] For this gradient calculation, the subblock prediction is extended by one pixel on each side. To conserve memory bandwidth and complexity, the pixels on the extended boundary are copied from the nearest integer pixel position in the reference picture. Thus, additional interpolation for padding areas is avoided. Step 3) Refine the Luma prediction using the optical flow equation (denoted as ΔI): ΔI(i,j)=g x (i,j)*Δv x (i,j)+g y (i,j)*Δv y (i,j) The following is calculated, where the delta MV (denoted as Δv(i,j)) is the difference between the pixel MV (denoted as v(i,j)) calculated for sample position (i,j) and the subblock MV of the subblock to which the pixel (i,j) belongs, as shown in Figure 1.
[0035] Since the affine model parameters and the pixel position relative to the subblock center do not change for each subblock, Δv(i,j) can be calculated for the first subblock and reused for other subblocks within the same CU. If x and y are the horizontal and vertical offsets from the pixel position to the subblock center, then Δv(x,y) is given by the following equation:
number
number
number
number
number
[0036] 3. Disadvantages of existing implementations DMVR and BIO do not involve the original signal when refining motion vectors, which can result in coding blocks containing inaccurate motion information. Furthermore, DMVR and BIO sometimes use fractional motion vectors after motion refinement, while screen images typically have integer motion vectors, which makes the current motion information even more inaccurate and degrades coding performance.
[0037] When RPR is applied in VVC, RPR(ARC) may have the following problems. 1. In RPR, the interpolation filter may differ for adjacent samples within a block, which is undesirable for SIMD (Single Instruction Multiple Data) implementations. 2. The boundary region does not consider RPR. 3. The note states, "The fitted cropping window offset parameter is applied only to the output. All internal decoding processes apply to the uncropped picture size." However, these parameters may be used in the decoding process when RPR is applied. 4. When deriving the reference sample position, RPR considers only the ratio between the two fitting windows. However, the difference in the upper-left offset between the two fitting windows should also be considered. 5. In VVC, the ratio of the width / height of the referenced picture to the width / height of the current picture is constrained. However, the ratio of the width / height of the fitting window of the referenced picture to the fitting window of the current picture is not constrained. 6. Not all syntax elements are handled correctly within the picture header. 7. In current VVCs, chroma mixing weights are derived regardless of the chroma sample position type of the video sequence in TPM and GEO prediction modes. For example, in TPM / GEO, if chroma weights are derived from luma weights, it may be necessary to downsample the luma weights to match the sampling of the chroma signal. Chroma downsampling is typically applied assuming chroma sample position type 0, which is widely used in ITU-R BT.601 or ITU-R BT.709 containers. However, this can lead to misalignment between chroma samples and downsampled luma samples when different chroma sample position types are used, potentially degrading coding performance. 8. It should be noted that the SAD calculation / SAD threshold does not take into account the effect of bit depth. Therefore, with higher bit depths (e.g., 14 or 16-bit input sequences), the threshold for early termination may become excessively small. 9. In non-RPR cases, an AMVR with 1 / 2 Pel MV precision (i.e., alternative interpolation filter / switchable interpolation filter) is applied along with a 6-tap motion compensation filter, while in other cases (e.g., 1 / 16 Pel), an 8-tap filter is applied. However, in RPR cases, the same interpolation filter is applied to all cases without considering mv / mvd precision. Therefore, signaling in the 1 / 2 Pel case (alternative interpolation filter / switchable interpolation filter) is a waste of bits. 10. The decision of whether or not partition tree splitting is allowed depends on the encoded picture resolution, rather than the output picture resolution. 11. SMVD / MMVD methods that do not consider RPR cases are applied. These methods are based on the assumption that symmetric MVD is applied to two reference pictures. However, such an assumption does not hold if the output picture resolutions are different. 12. Pairwise merge candidates are generated by averaging two MVs from two merge candidates within the same reference picture list. However, averaging is meaningless if the two reference pictures associated with the two merge candidates have different resolutions. 13. If all slices in a picture are currently I (intra) slices, some inter-slice related syntax elements in the picture header may not need to be coded. By conditionally signaling them, syntax overhead can be reduced, especially for low-resolution sequences with all intra coding. 14. In current VVCs, there are no restrictions on tile / slice dimensions. Imposing appropriate restrictions would be useful for parallel processing of real-time software / hardware decoders, especially for ultra-high-resolution sequences where each frame may be larger than 4K / 8K.
[0038] 4. Examples of Technology and Embodiments The detailed embodiments described below should be considered examples illustrating the general concept. These embodiments should not be interpreted narrowly. Furthermore, these embodiments can be combined in some way.
[0039] The methods described below may also be applicable to other decoder motion information derivation techniques, in addition to the DMVR and BIO described below.
[0040] The motion vector is denoted as (mv_x, mv_y), where mv_x is the horizontal component and mv_y is the vertical component.
[0041] In this disclosure, the resolution (or dimensions, width / height, or size) of a picture may refer to the resolution (or dimensions, width / height, or size) of an encoded / decoded picture, or to the resolution (or dimensions, width / height, or size) of the fitting window of an encoded / decoded picture. In one example, the resolution (or dimensions, width / height, or size) of a picture may refer to a parameter related to the RPR (Reference Picture Resampling) process, such as a scaling window / phase offset window. In one example, the resolution (or dimensions, width / height, or size) of a picture may refer to something related to an output picture. Motion compensation in RPR 1. When the resolution of the reference picture differs from that of the current picture, or when the width and / or height of the reference picture are greater than those of the current picture, the predicted values for a group of samples (at least two samples) in the current block may be generated using the same horizontal and / or vertical interpolation filters: a. In one example, the group may have all the samples within the block's region: i. For example, a block can be divided into S non-overlapping M×N rectangles. Each M×N rectangle is a group. In the example shown in Figure 2, a 16×16 block can be divided into 16 4×4 rectangles, each of which is a group; ii. For example, a group is a row with N samples, where N is an integer less than or equal to the block width. In one example, N is 4, 8, or the block width; iii. For example, a group is a column with N samples, where N is an integer less than or equal to the block height. In one example, N is 4, 8, or the block height; iv. M and / or N may be predetermined, derived on the fly based on, for example, block dimensions / encoding information, or signaled; b. In one example, samples within a group may have the same MV (referred to as shared MV); c. In one example, samples within a group may have MVs that share the same horizontal component (referred to as a shared horizontal component); d. In one example, samples within a group may have MVs that share the same vertical component (referred to as a common vertical component); e. In one example, samples within a group may have MVs that share the same fractional part of the horizontal component (denoted as the common fractional horizontal component): i. For example, if the MV for the first sample is (MV1x, MV1y) and the MV for the second sample is (MV2x, MV2y), then MV1x&(2 M -1) is MV2x&(2 M It should satisfy the condition that it is equal to (-1), where M represents the MV precision. For example, M = 4; f. In one example, samples within a group may have MVs that share the same fractional part of the vertical component (denoted as the common fractional vertical component): i. For example, if the MV for the first sample is (MV1x, MV1y) and the MV for the second sample is (MV2x, MV2y), then MV1y&(2 M -1) is MV2y&(2 M It should satisfy the condition that it is equal to (-1), where M represents the MV precision. For example, M = 4; g. In one example, for samples within the predicted group, first, the current picture and reference picture (for example, the reference picture derived in 8.5.6.3.1 of JVET-O2001-v14 (for example, (refx L ,refy L )) According to MV b The motion vector denoted as follows is derived. Next, MV b Furthermore, it can be modified to MV' to meet requirements such as the bullet points above (e.g., by rounding / truncating / clipping), and MV' will be used to derive the predicted sample for the sample: i. In one example, MV' is MV b It has the same integer part as MV', and the fractional part of MV' is set to be the shared fractional horizontal component and / or shared fractional vertical component; ii. In one example, MV' is the MV among the shared fractional horizontal component and / or shared fractional vertical component. b It will be set to the one closest to it; h. The shared motion vector (and / or shared horizontal and / or shared vertical components, and / or shared fractional horizontal and / or shared fractional vertical components) may be set to the shared motion vector (and / or shared horizontal and / or shared vertical components, and / or shared fractional horizontal and / or shared fractional vertical components) of a particular sample within the group: i. For example, a particular sample may be located at the corner of a group of rectangles, such as “A”, “B”, “C”, and “D” shown in Figure 3A; ii. For example, a particular sample may be located at the center of a group of rectangles, such as “E”, “F”, “G”, and “H” shown in Figure 3A; iii. For example, a particular sample may be at one end of a row-shaped or column-shaped group, such as “A” and “D” shown in Figures 3B and 3C; iv. For example, a particular sample may be located in the center of a row-shaped or column-shaped group, such as “B” and “C” shown in Figures 3B and 3C; v. In one example, the motion vector of a particular sample is the MV described in bullet point g. b It is possible; i. The shared motion vector (and / or shared horizontal and / or shared vertical components, and / or shared fractional horizontal and / or shared fractional vertical components) may be set to be the motion vector (and / or horizontal and / or vertical components, and / or fractional horizontal and / or fractional vertical components) of a virtual sample that is in a different position from all other samples in the group: i. In one example, a virtual sample is not located within a group, but is located within a region that covers all samples within the group: 1) Alternatively, the virtual sample is located outside the area that covers all samples in the group, for example, next to the lower right position of that area; ii. In one example, the MV of a virtual sample is derived in the same way as an actual sample, but at multiple different locations; iii. In Figures 3A-3C, “V” represents three examples of a hypothetical sample; j. The shared MV (and / or shared horizontal and / or shared vertical components, and / or shared fractional horizontal and / or shared fractional vertical components) may be set to be a function of the MV (and / or horizontal and / or vertical components, and / or fractional horizontal and / or fractional vertical components) of multiple samples and / or virtual samples: i. For example, the shared MV (and / or shared horizontal and / or shared vertical components, and / or shared fractional horizontal and / or shared fractional vertical components) may be set to be the average of the MV (and / or horizontal and / or vertical components, and / or fractional horizontal and / or fractional vertical components) of all or some of the samples in the group, or of samples “E”, “F”, “G”, “H” in Figure 3A, or of samples “E”, “H” in Figure 3A, or of samples “A”, “B”, “C”, “D” in Figure 3A, or of samples “B”, “C” in Figure 3B, or of samples “A”, “D” in Figure 3C, or of samples “A”, “D” in Figure 3C. 2. When the resolution of the reference picture differs from that of the current picture, or when the width and / or height of the reference picture are greater than those of the current picture, we propose that only integer MVs are allowed to perform the motion compensation process to derive the predicted block of the current block: a. In one example, the composite motion vector for the predicted sample is rounded to an integer MV before being used; b. In one example, the composite motion vector for the predicted sample is rounded to the integer MV closest to the decoded motion vector; c. In one example, the composite motion vector for the predicted sample is rounded to the integer MV closest to the decoded motion vector in the horizontal direction; d. In one example, the composite motion vector for the predicted sample is rounded to the integer MV that is closest to the decoded motion vector in the vertical direction. 3. The motion vector used in the motion compensation process for the sample in the current block (e.g., shared MV / shared horizontal or vertical or fractional component / MV' as described in the bullet points above) can be stored in the decoded picture buffer and used to predict the motion vector of subsequent blocks in the current picture / different picture: a. Alternatively, motion vectors used in the motion compensation process for samples within the current block (e.g., shared MV / shared horizontal or vertical or fractional component / MV' as described in the bullet points above) may be prohibited from being used to predict the motion vectors of subsequent blocks in the current picture / different picture: i. In one example, the decoded motion vector (e.g., MV in the bullet points above) b ) can now be used to predict the motion vector of subsequent blocks within a picture / different picture; b. In one example, the motion vector used in the motion compensation process for a sample currently in a block may be used in a filtering process (e.g., deblocking filter / SAO / ALF): i. Alternatively, the decoded motion vector (for example, MV in the bullet points above) b ) may be used in the filtering process; c. In one example, such a MV can be derived at the subblock level and stored for each subblock. 4. We propose that the interpolation filter used in the motion compensation process to derive the predicted block of the current block may be selected depending on whether the resolution of the reference picture is different from that of the current picture, or whether the width and / or height of the reference picture is greater than that of the current picture: a. In one example, when condition A is met, an interpolation filter with fewer taps can be applied, and condition A depends on the dimensions of the current picture and / or reference picture: i. In one example, condition A is that the resolution of the reference picture is different from that of the current picture; ii. In one example, condition A is that the width and / or height of the reference picture are greater than those of the current picture; iii. In one example, condition A is W1 > a*W2 and / or H1 > b*H2, where (W1, H1) represents the width and height of the reference picture, (W2, H2) represents the width and height of the current picture, and a and b are two coefficients, for example, a = b = 1.5; iv. In one example, condition A may also depend on whether biprediction is used; v. In one example, a 1-tap filter is applied. In other words, an integer pixel without filtering is output as the interpolation result; vi. In one example, if the resolution of the reference picture is different from that of the current picture, a bilinear filter is applied; vii. In one example, when the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is greater than that of the current picture, a 4-tap filter or a 6-tap filter is applied: 1) A 6-tap filter can also be used for affine motion compensation; 2) A 4-tap filter can also be used for interpolation of chroma samples; b. In one example, when the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is greater than that of the current picture, padding samples are used to perform interpolation; c. Whether to apply the method disclosed in item 4 and / or how to apply it may depend on the color component: i. For example, the method is applied only to the luma component; d. Whether to apply the method disclosed in item 4 and / or how to apply it may depend on the interpolation filtering direction: i. For example, the method is applied only to horizontal filtering; ii. For example, the method is applied only to vertical filtering. 5. It is proposed that a two-stage process for prediction block generation is applied when the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is greater than that of the current picture: a. In the first stage, a virtual reference block is generated by upsampling or downsampling the region within the reference picture according to the width and / or height of the current picture and the reference picture; b. In the second stage, prediction samples are generated from the virtual reference block by applying interpolation filtering independently of the width and / or height of the current picture and the reference picture. 6. It is proposed that the calculation of the upper left coordinates (xSbInt L , ySbInt L ) of the boundary block for reference sample padding as defined in 8.5.6.3.1 of JVET-O2001-v14 can be derived according to the width and / or height of the current picture and the reference picture: a. In one example, the luma position in full sample units is: xInt i =Clip3(xSbInt L - Dx, xSbInt L + sbWidth + Ux, xInt i ), yInt i = Clip3(ySbInt L - Dy, ySbInt L + sbHeight + Uy, yInt i ) is changed as such, where Dx and / or Dy, and / or Ux and / or Uy may depend on the width and / or height of the current picture and the reference picture; b. In one example, the chroma position of the full - sample unit is: xInti = Clip3(xSbInt C - Dx, xSbInt C + sbWidth + Ux, xInti), yInti = Clip3(ySbInt C - Dy, ySbInt C + sbHeight + Uy, yInti) is changed as such, where Dx and / or Dy, and / or Ux and / or Uy may depend on the width and / or height of the current picture and the reference picture. 7. Instead of storing / using motion vectors for blocks based on the same reference picture resolution as the current picture, it is proposed to use the actual motion vectors taking into account the resolution difference: a. Alternatively, further, when generating a prediction block using motion vectors, there is no need to further change the motion vectors according to the resolution of the current picture and the reference picture (e.g., (refx L , refy L )) derived in 8.5.6.3.1 of JVET - O2001 - v14. Interaction between RPR and other coding tools 8. Whether to apply a filtering process (e.g., a de - blocking filter) and how to apply it may depend on the resolution of the reference picture and / or the resolution of the current picture: a. In one example, the boundary strength (BS) setting in the de - blocking filter may take into account the resolution difference in addition to the motion vector difference: i. In one example, boundary intensity can be determined using the motion vector difference scaled according to the resolution of the current picture and the reference picture; b. In one example, if the resolution of at least one reference picture in block A is different (or smaller or larger) than the resolution of at least one reference picture in block B, the strength of the deblocking filter on the boundary between block A and block B may be set differently (e.g., increased / decreased) compared to when the same resolution is used for both blocks; c. In one example, if the resolution of at least one reference picture in block A is different from (or smaller than or larger than) the resolution of at least one reference picture in block B, the boundary between block A and block B is marked to be filtered (for example, BS is set to 2); d. In one example, if the resolution of at least one reference picture in block A and / or block B is different from (or smaller than or larger than) the resolution of the current picture, the strength of the deblocking filter on the boundary between block A and block B may be set differently (e.g., increased or decreased) compared to when the same resolution is used for the reference picture and the current picture; e. In one example, the boundary between two blocks is marked as needing to be filtered if at least one reference picture in at least one of those two blocks has a different resolution than the current picture (for example, BS is set to 2). 9. When a subpicture exists, the matching bitstream should satisfy the condition that the reference picture must have the same resolution as the current picture: a. Alternatively, if the reference picture has a different resolution than the current picture, the current picture does not have a sub-picture; b. Alternatively, it is prohibited to use a reference picture with a different resolution than the current picture for a subpicture within the current picture: i. Alternatively, reference picture management may be invoked to exclude reference pictures with different resolutions. 10. In one example, separate subpictures (for example, how to split one picture into multiple subpictures) may be defined for pictures with different resolutions: In one example, if the reference picture has a different resolution than the current picture, the corresponding subpicture in the reference picture can be derived by scaling and / or offsetting the subpictures of the current picture. 11. When the reference picture has a different resolution than the current picture, PROF (Predictive Refinement in Optical Flow) can be enabled: a. In one example, for a group of samples, one set of MV(MV) g A MV (represented as MV) is generated for each sample and can be used for motion compensation as described in bullet point 1. On the other hand, for each sample, an MV (MV) is generated and can be used for motion compensation. p We can derive (which is written as MV) p and MV g The difference between (e.g., corresponding to Δv used in PROF), along with the gradient (e.g., the spatial gradient of the motion compensation block), can be used to derive the predictive refinement; b. In one example, MV p , MV g It may have a different level of precision. For example, MV p This can be with an accuracy of 1 / N Pell (N>0), where N=32, 64, etc. c. In one example, MV g This can be of a different precision than the internal MV precision (e.g., 1 / 16 Pel); d. In one example, the prediction refinement is added to the prediction block to generate a refined prediction block; e. In one example, such a method may be applied to each prediction direction; f. In one example, such a method may only be applicable in the case of one-sided prediction; g. In one example, such a method may be applied to one-sided prediction and / or bi-sided prediction; h. In one example, such a method may only be applicable if the reference picture has a different resolution than the current picture. 12. When the resolution of the reference picture differs from that of the current picture, we propose that only one MV may be used for a block / subblock to perform the motion compensation process that derives the predicted block of the current block: a. In one example, the single MV for a block / subblock may be defined as a function (e.g., the mean) of all MVs associated with each sample within the block / subblock; b. In one example, the sole MV for a block / subblock may be defined as the selected MV associated with a selected sample (e.g., the central sample) within the block / subblock; c. In one example, a single MV may be used for a 4x4 block or subblock (e.g., 4x1); d. In one example, BIO may be applied to compensate for accuracy losses resulting from block-based motion vectors. 13. When the width and / or height of the reference picture differ from that of the current picture, a lazy mode may be applied that does not signal block-based motion vectors: a. In one example, motion vectors are not signaled, and the motion compensation process approximates the case of pure resolution changes in a still image; b. In one example, when the resolution changes, only the motion vector is signaled at the picture / tile / brick / CTU level, and the relevant blocks can use that motion vector. 14. For blocks coded in affine prediction mode and / or non-affine prediction mode, when the width and / or height of the reference picture differ from those of the current picture, PROF may be applied to approximate motion compensation: a. In one example, PROF may be enabled when the width and / or height of the reference picture differ from those of the current picture; b. In one example, a set of affine motions can be generated by combining the indicated motion with the resolution scaled for use by the PROF. 15. When the width and / or height of the reference picture is different from that of the current picture, interweave prediction (e.g., as proposed in JVET-K0102) can be applied to approximate motion compensation: a. In one example, a resolution change (zooming) can be expressed as an affine motion and interweave motion prediction can be applied. 16. When the width and / or height of the current picture is different from that of the IRAP picture within the same IRAP period, LMCS and / or chroma residual scaling can be disabled: a. In one example, when LMCS is disabled, slice-level flags such as slice_lmcs_enabled_flag, slice_lmcs_aps_id, and slice_chroma_residual_scale_flag can be presumed to be 0 without signaling; b. In one example, when chroma residual scaling is disabled, slice-level flags such as slice_chroma_residual_scale_flag can be presumed to be 0 without signaling. Constraints on RPR 17. RPR can be applied to coding blocks with block size constraints: a. In one example, for an M×N coding block with M as the block width and N as the block height, when M*N < T or M*N <= T (e.g., T = 256, etc.), RPR can be considered not used; b. In one example, when M < K (or M <= K) (e.g., K = 16, etc.) and / or N < L (or N <= L) (e.g., L = 16, etc.), RPR can be considered not used. 18. Bitstream adaptation may be added to constrain the ratio between the width and / or height of the active reference picture (or its adapted window) and that of the current picture (or its adapted window). Let refPicW and refPicH represent the width and height of the reference picture, and curPicW and curPicH represent the width and height of the current picture: a. In one example, when (refPicW÷curPicW) is equal to an integer, the reference picture may be marked as the active reference picture: i. Alternatively, when (refPicW÷curPicW) is equal to a fraction, the reference picture may be marked as unavailable; b. In one example, let X represent a fraction (e.g., X = 1 / 2), and let n represent an integer (e.g., n = 1, 2, 3, 4,...). When (refPicW÷curPicW) is equal to (X*n), the reference picture may be marked as the active reference picture: i. In one example, when (refPicW÷curPicW) is not equal to (X*n), the reference picture may be marked as unavailable. 19. Whether and / or how to enable coding tools (e.g., dual prediction / whole triangle prediction mode (TPM) / hybrid process in TPM) for the M×N block may depend on the resolution of the reference picture (or their adapted windows) and / or the resolution of the current picture (or its adapted window): a. In one example, M*N < T or M*N <= T (e.g., T = 64, etc.); b. In one example, M < K (or M <= K) (e.g., K = 16, etc.) and / or N < L (or N <= L) (e.g., L = 16, etc.); c. In one example, when the width / height of at least one reference picture is different from that of the current picture, the coding tool is not permitted: i. In one example, when the width / height of at least one reference picture of the block is greater than that of the current picture, the coding tool is not permitted; d. In one example, when the width / height of each reference picture of a block is different from that of the current picture, coding tools are not permitted: i. In one example, when the width / height of each reference picture is larger than that of the current picture, coding tools are not permitted; e. Alternatively, further, when coding tools are not permitted, motion compensation may be performed with one MV as uni - prediction. Window compatibility 20. Assuming that N is a positive integer greater than 1, the adaptive cropping window offset parameter (e.g., conf_win_left_offset) is signaled with an N - pel accuracy instead of 1 - pel accuracy: a. In one example, the actual offset may be derived as the signaled offset multiplied by N; b. In one example, N is set to 4 or 8. 21. It is proposed that the adaptive cropping window offset parameter is not only applied in the output. A specific internal decoding process may depend on the cropped picture size (i.e., the resolution of the adaptive window within the picture). 22. It is proposed that when the width and / or height of the picture denoted as (pic_width_in_luma_samples, pic_height_in_luma_samples) is the same in the first video unit and in the second video unit, the adaptive cropping window offset parameters may be different between the first video unit (e.g., PPS) and the second video unit. 23. It is proposed that when the width and / or height of the picture denoted as (pic_width_in_luma_samples, pic_height_in_luma_samples) is different between the first video unit and the second video unit, in the adaptive bitstream, the adaptive cropping window offset parameters should be the same between the first video unit (e.g., PPS) and the second video unit: a. Regardless of whether the width and / or height of the pictures denoted as (pic_width_in_luma_samples,pic_height_in_luma_samples) are the same in the first video unit and the second video unit, we propose that in a compliant bitstream, the compliant cropping window offset parameters should be the same in the first video unit (e.g., PPS) and the second video unit. 24. Let W1 and H1 be denoted as the width and height of the compatible window defined in the first video unit (e.g., PPS). Let W2 and H2 be denoted as the width and height of the compatible window defined in the second video unit (e.g., PPS). Let X1 and Y1 be denoted as the top-left position of the compatible window defined in the first video unit (e.g., PPS). Let X2 and Y2 be denoted as the top-left position of the compatible window defined in the second video unit (e.g., PPS). Let PW1 and PH1 be denoted as the width and height of the encoded / decoded picture (e.g., pic_width_in_luma_samples and pic_height_in_luma_samples) defined in the first video unit (e.g., PPS). Let PW2 and PH2 be denoted as the width and height of the encoded / decoded picture defined in the second video unit (e.g., PPS): a. In one example, in a compliant bitstream, W1 / W2 should be equal to X1 / X2: i. Alternatively, in a compliant bitstream, W1 / X1 should be equal to W2 / X2; ii. Alternatively, in a compliant bitstream, W1*X2 should be equal to W2*X1; b. In one example, in a compliant bitstream, H1 / H2 should be equal to Y1 / Y2: i. Alternatively, in a compliant bitstream, H1 / Y1 should be equal to H2 / Y2; ii. Alternatively, in a compliant bitstream, H1*Y2 should be equal to H2*Y1; c. In one example, in a compliant bitstream, PW1 / PW2 should be equal to X1 / X2: i. Alternatively, in a compliant bitstream, PW1 / X1 should be equal to PW2 / X2; ii. Alternatively, in a compliant bitstream, PW1*X2 should be equal to PW2*X1; d. In one example, in a compliant bitstream, PH1 / PH2 should be equal to Y1 / Y2: i. Alternatively, in a compliant bitstream, PH1 / Y1 should be equal to PH2 / Y2; ii. Alternatively, in a compatible bitstream, PH1*Y2 should be equal to PH2*Y1; e. In one example, in a compliant bitstream, PW1 / PW2 should be equal to W1 / W2: i. Alternatively, in a compliant bitstream, PW1 / W1 should be equal to PW2 / W2; ii. Alternatively, in a compliant bitstream, PW1*W2 should be equal to PW2*W1; f. In one example, in a compliant bitstream, PH1 / PH2 should be equal to H1 / H2: i. Alternatively, in a compliant bitstream, PH1 / H1 should be equal to PH2 / H2; ii. Alternatively, in a compliant bitstream, PH1*H2 should be equal to PH2*H1; g. In a compliant bitstream, if PW1 is greater than PW2, then W1 must be greater than W2; h. In a compliant bitstream, if PW1 is less than PW2, then W1 must be less than W2; i. In a compliant bitstream, (PW1-PW2)*(W1-W2) must be greater than or equal to 0; j. In a compatible bitstream, if PH1 is greater than PH2, then H1 must be greater than H2; k. In a compliant bitstream, if PH1 is less than PH2, then H1 must be less than H2; l. In a compliant bitstream, (PH1-PH2)*(H1-H2) must be greater than or equal to 0; m. In a compliant bitstream, if PW1 >= PW2, then W1 / W2 must be less than or equal to (or greater than or equal to) PW1 / PW2; n. In a compliant bitstream, if PH1 >= PH2, then H1 / H2 must be less than or equal to (or greater than or equal to) PH1 / PHW2. 25. Let W and H be denotations for the width and height of the current picture's fitting window. Let W' and H' be denotations for the width and height of the reference picture's fitting window. The fitting bitstream should adhere to at least one of the following constraints: a. W*pw>=W'; pw is an integer, such as 2; b. W*pw>W'; pw is an integer, such as 2; c. W'*pw'>=W; pw' is an integer such as 8; d. W'*pw'>W; where pw' is an integer such as 8; e. H*ph>=H'; ph is an integer such as 2; f. H*ph > H'; ph is an integer such as 2; g. H'*ph'>=H; ph' is an integer such as 8; h. H'*ph'>H; ph' is an integer such as 8; i. In one example, pw is equal to pw'; j. In one example, ph is equal to ph'; k. In one example, pw is equal to ph; l. In one example, pw' is equal to ph'; m. In one example, the above sub-items may be satisfied by the fitted bitstream when W and H represent the width and height of the current picture, respectively. W' and H' represent the width and height of the reference picture. 26. I propose that the fit window parameter be partially signaled: a. In one example, the top-left sample of the picture's fitting window is the same as that in the picture; b. For example, conf_win_left_offset defined in VVC is assumed to be 0 without signaling; c. For example, conf_win_top_offset defined in VVC is assumed to be 0 without signaling. 27. Location of the reference sample (for example, defined in VVC (refx L ,refy L We propose that the derivation of )) may depend on the top-left position of the fitting window of the current picture and / or reference picture (e.g., (conf_win_left_offset,conf_win_top_offset) as defined in VVC). Figures 4A and 4B show examples of sample positions derived in (a) the same way as in VVC and (b) the proposed method. The dashed rectangle represents the fitting window: a. In one example, a dependency exists only when the width and / or height of the current picture differ from those of the referenced picture; b. In one example, the horizontal position of the reference sample (for example, Refx as defined in VVC) L The derivation of ) may depend on the left position of the fitting window of the current picture and / or referenced picture (e.g., conf_win_left_offset as defined in VVC): i. In one example, the horizontal position of the current sample (denoted as xSb') relative to the top-left position of the fitting window in the current picture is calculated and used to derive the position of the reference sample: 1) For example, xSb’ = xSb - (conf_win_left_offset << Prec) is calculated and used to derive the position of the reference sample. Here, xSb represents the horizontal position of the current sample in the current picture. conf_win_left_offset represents the horizontal position of the upper-left sample in the conformity window of the current picture. Prec represents the precision of xSb and xSb’, where (xSb >> Prec) may indicate the actual horizontal coordinate of the current sample with respect to the current picture. For example, Prec = 0 or Prec = 4; ii. In one example, the horizontal position of the reference sample (denoted as Rx’) with respect to the upper-left position of the conformity window in the reference picture is calculated: 1) The calculation of Rx’ may depend on xSb’, and / or the motion vector, and / or the resampling ratio; iii. In one example, the horizontal position of the reference sample (denoted as Rx) with respect to the reference picture is calculated depending on Rx’: 1) For example, Rx = Rx’ + (conf_win_left_offset_ref << Prec) is calculated, where conf_win_left_offset_ref represents the horizontal position of the upper-left sample in the conformity window of the reference picture. Prec represents the precision of Rx and Rx’. For example, Prec = 0 or Prec = 4; iv. In one example, Rx may be directly calculated depending on xSb’, and / or the motion vector, and / or the resampling ratio. In other words, the two steps of derivation for Rx’ and Rx are combined into one-step calculation; v. Whether to use the left position of the conformity window of the current picture and / or the reference picture (e.g., conf_win_left_offset defined in VVC), and / or how to use it may depend on the color component and / or the color format: 1) For example, conf_win_left_offset can be revised as conf_win_left_offset = conf_win_left_offset * SubWidthC, where SubWidthC defines the horizontal sampling step of the color component. For example, SubWidthC is equal to 1 for the luma component. SubWidthC is equal to 2 for the chroma component when the color format is 4:2:0 or 4:2:2; 2) For example, conf_win_left_offset can be revised as conf_win_left_offset = conf_win_left_offset / SubWidthC, where SubWidthC defines the horizontal sampling step of the color component. For example, SubWidthC is equal to 1 for the luma component. SubWidthC is equal to 2 for the chroma component when the color format is 4:2:0 or 4:2:2; c. In one example, the derivation of the vertical position of the reference sample (e.g., Refy defined in VVC) L may depend on the upper position of the adaptive window of the current picture and / or the reference picture (e.g., conf_win_top_offset defined in VVC): i. In one example, the vertical position of the current sample (denoted as ySb’) relative to the upper left position of the adaptive window within the current picture is calculated and used to derive the position of the reference sample: 1) For example, ySb’ = ySb - (conf_win_top_offset << Prec) is calculated and used to derive the position of the reference sample. Here, ySb represents the vertical position of the current sample within the current picture. conf_win_top_offset represents the vertical position of the upper left sample within the adaptive window of the current picture. Prec represents the precision of ySb and ySb’. For example, Prec = 0 or Prec = 4; ii. In one example, the vertical position of the reference sample (denoted as Ry’) relative to the upper left position of the adaptive window within the reference picture is calculated: 1) The calculation of Ry’ may depend on ySb’, and / or the motion vector, and / or the resampling ratio; iii. In one example, the vertical position (denoted as Ry) of the reference sample with respect to the reference picture is calculated depending on Ry’: 1) For example, Ry = Ry’ + (conf_win_top_offset_ref << Prec) is calculated, where conf_win_top_offset_ref represents the vertical position of the upper left sample within the conformity window of the reference picture. Prec represents the precision of Ry and Ry’. For example, Prec = 0 or Prec = 4; iv. In one example, Ry can be directly calculated depending on ySb’, and / or the motion vector, and / or the resampling ratio. In other words, the two steps of derivation for Ry’ and Ry are combined into one-step calculation; v. Whether to use the upper position (e.g., conf_win_top_offset defined in VVC) of the conformity window of the current picture and / or the reference picture, and / or how to use it may depend on the color component and / or the color format: 1) For example, conf_win_top_offset can be revised as conf_win_top_offset = conf_win_top_offset * SubHeightC, where SubHeightC defines the vertical sampling step of the color component. For example, SubHeightC is equal to 1 for the luma component. SubHeightC is equal to 2 for the chroma component when the color format is 4:2:0; 2) For example, conf_win_top_offset can be revised as conf_win_top_offset=conf_win_top_offset / SubHeightC, where SubHeightC defines the vertical sampling step of the color components. For example, SubHeightC is equal to 1 for the chroma component; SubHeightC is equal to 2 for the chroma component if the color format is 4:2:0; 28. We propose that the integer part of the horizontal coordinates of the reference sample can be clipped to [minW, maxW]. Let W and H be denotations for the width and height of the fitting window of the reference picture. Let W' and H' be denotations for the width and height of the fitting window of the reference picture. Let (X0, Y0) be denoted for the top-left position of the fitting window within the reference picture. a. In one example, minW is equal to 0; b. In one example, minW is equal to X0; c. In one example, maxW is equal to W-1; d. In one example, maxW is equal to W'-1; e. In one example, maxW is equal to X0 + W' - 1; f. In one example, minW and / or maxW may be modified based on the color format and / or color components: i. For example, minW is changed to minW*SubC; ii. For example, minW will be changed to minW / SubC; iii. For example, maxW is changed to maxW*SubC; iv. For example, maxW is changed to maxW*SubC; v. In one example, SubC is equal to 1 for the Luma component; vi. In one example, if the color format is 4:2:0, SubC is equal to 2 for the chroma component; vii. In one example, if the color format is 4:2:2, SubC is equal to 2 for the chroma component; viii. In one example, if the color format is 4:4:4, SubC is equal to 1 for the chroma component; g. In one example, whether and / or how clipping should be performed may depend on the dimensions of the current picture (or the fitting window within it) and the dimensions of the reference picture (or the fitting window within it): i. In one example, clipping occurs only when the dimensions of the current picture (or the fitting window within it) differ from the dimensions of the reference picture (or the fitting window within it). 29. We propose that the integer part of the vertical coordinates of the reference sample can be clipped to [minH, maxH]. Let W and H be denotations for the width and height of the fitting window of the reference picture. Let W' and H' be denotations for the width and height of the fitting window of the reference picture. Let (X0, Y0) be denotation for the top-left position of the fitting window within the reference picture: a. In one example, minH is equal to 0; b. In one example, minH is equal to Y0; c. In one example, maxH is equal to H-1; d. In one example, maxH is equal to H'-1; e. In one example, maxH is equal to Y0 + H' - 1; f. In one example, minH and / or maxH may be modified based on the color format and / or color components: i. For example, minH is changed to minH*SubC; ii. For example, minH is changed to minH / SubC; iii. For example, maxH is changed to maxH*SubC; iv. For example, maxH is changed to maxH*SubC; v. In one example, SubC is equal to 1 for the Luma component; vi. In one example, if the color format is 4:2:0, SubC is equal to 2 for the chroma component; vii. In one example, if the color format is 4:2:2, SubC is equal to 1 for the chroma component; viii. In one example, if the color format is 4:4:4, SubC is equal to 1 for the chroma component; g. In one example, whether and / or how clipping should be performed may depend on the dimensions of the current picture (or the fitting window within it) and the dimensions of the reference picture (or the fitting window within it): i. In one example, clipping occurs only when the dimensions of the current picture (or the fitting window within it) differ from the dimensions of the reference picture (or the fitting window within it). In the following explanation, the first syntax element and the second syntax element have equivalent functionality, but when they can be signaled in different video units (e.g., VPS / SPS / PPS / slice header / picture header, etc.), we say that the first syntax element "corresponds" to the second syntax element. 30. We propose that syntax elements be signaled within a first video unit (e.g., picture header or PPS), but not in a second video unit at a higher level (e.g., SPS) or lower level (e.g., slice header): a. Alternatively, the first syntax element may be signaled within a first video unit (e.g., a picture header or PPS), and the corresponding second syntax element may be signaled within a second video unit at a lower level (e.g., a slice header): i. Alternatively, an indicator may be signaled within the second video unit to indicate whether a second syntax element will subsequently be signaled; ii. In one example, a slice associated with a second image unit (e.g., a slice header) may be followed by the indication of the second syntax element instead of the first when the second is signaled; iii. An indicator associated with the first syntax element may be signaled within the first video unit to indicate whether the second syntax element is signaled within any slice (or other video unit) associated with the first video unit; b. Alternatively, the first syntax element may be signaled within a first video unit at a higher level (e.g., VPS / SPS / PPS), and the corresponding second syntax element may be signaled within a second video unit (e.g., a picture header): i. Alternatively, an indicator may be signaled to indicate whether a second syntax element will subsequently be signaled; ii. In one example, a picture associated with a second video unit (which may be divided into multiple slices) may be followed by the indication of the second syntax element instead of the first when the second is signaled; c. The first syntax element in the picture header may have the same functionality as the second syntax element in the slice header as defined in Section 2.6 (but is limited to, for example, slice_temporal_mvp_enabled_flag, cabac_init_flag, six_minus_max_num_merge_cand, five_minus_max_num_subblock_merge_cand, slice_fpel_mmvd_enabled_flag, slice_disable_bdof_dmvr_flag, max_num_merge_cand_minus_max_num_triangle_cand, slice_fpel_mmvd_enabled_flag, slice_six_minus_max_num_ibc_merge_cand, slice_joint_cbcr_sign_flag, slice_qp_delta, ..., etc.), but may control all slices of the picture; d. A first syntax element in an SPS, as defined in Section 2.6, may have the same functionality as a second syntax element in a picture header (but is limited to, for example, sps_bdof_dmvr_slice_present_flag, sps_mmvd_enabled_flag, sps_isp_enabled_flag, sps_mrl_enabled_flag, sps_mip_enabled_flag, sps_cclm_enabled_flag, sps_mts_enabled_flag, etc.), but can only control the associated picture (which may be divided into multiple slices); e. A first syntax element in the PPS, as defined in Section 2.7, may have the same functionality as a second syntax element in the picture header (but is limited to, for example, entropy_coding_sync_enabled_flag, entry_point_offsets_present_flag, cabac_init_present_flag, rpl1_idx_present_flag, etc.), but can only control the associated picture (which may be divided into multiple slices). 31. Syntax elements signaled in the picture header are separated from other syntax elements signaled or derived in SPS / VPS / DPS. 32. Instead of DMVR and BDOF enable / disable indication being controlled by the same flag (e.g., pic_disable_bdof_dmvr_flag), it may be signaled separately within the picture header. 33. Indication of enabling / disabling interpretation in PROF / Cross-Component ALF / Geometric Partitioning (GEO) may be signaled within the picture header: a. Alternatively, indication of enabling / disabling PROF in the picture header may be conditionally signaled according to the PROF enable flag in the SPS; b. Alternatively, indication of enabling / disabling the cross-component ALF (CCALF) in the picture header may be conditionally signaled according to the CCALF enable flag in the SPS; c. Alternatively, indication of enabling / disabling GEO in the picture header may be conditionally signaled according to the GEO enable flag in the SPS; d. Alternatively, the indication of enabling / disabling interpretation in PROF / Cross-Component ALF / Geometric Partitioning (GEO) within the slice header may be conditionally signaled according to those syntax elements which are signaled in the picture header instead of SPS. 34. Indication of the prediction type of slices / bricks / tiles (or other image units smaller than the picture) within the same picture may be signaled in the picture header: a. In one example, an indication that all slices / bricks / tiles (or other image units smaller than a picture) are all intra-coded (e.g., all are I-slices) may be signaled within the picture header: i. Alternatively, if the indication tells us that all slices in the picture are I slices, the slice type may not be signaled in the slice header; b. Alternatively, an indication that at least one of the slices / bricks / tiles (or other image units smaller than a picture) is not intra-coded (e.g., at least one is a non-I slice) may be signaled within the picture header: c. Alternatively, an indication that all slices / bricks / tiles (or other image units smaller than a picture) all have the same prediction type (e.g., I / P / B slices) may be signaled within the picture header: i. Alternatively, the slice type may not be signaled within the slice header; ii. Alternatively, the indication of tools permitted for a particular prediction type (e.g., DMVR / BDOF / TPM / GEO is permitted only for B-slices, and dual trees are permitted only for I-slices) may be conditionally signaled according to the indication of the prediction type; d. Alternatively, the signaling for enabling / disabling the tool may also depend on the prediction type indicators mentioned in the sub-list above: i. Alternatively, the indication for enabling / disabling the tool may be derived according to the prediction type indications mentioned in the sub-items above. 35. In this disclosure (bullets 1–29), the term “fit window” may be replaced with other terms, such as “scaling window.” The scaling window may be signaled differently from the fit window and is used to derive the scaling ratio and / or upper-left offset used to derive the reference sample position for RPR: a. In one example, the scaling window may be constrained by the fitting window. For example, in a fitted bitstream, the scaling window must be included in the fitting window. 36. Whether and how to signal the maximum allowable block size of blocks to be converted and skipped may depend on the maximum block size of the blocks being converted and coded: a. Alternatively, the maximum block size of a block that is converted and skipped cannot be greater than the maximum block size of a block that is converted and coded in the adapted bitstream. 37. Whether and how to signal the enabling of Joint Cb-Cr Residue (JCCR) coding (e.g., sps_joint_cbcr_enabled_flag) may depend on the color format (e.g., 4:0:0, 4:2:0, etc.): a. For example, if the color format is 4:0:0, the indication for enabling joint Cb-Cr residuals (JCCR) may not be signaled. An exemplary syntax design is as follows: (outside 8) TIFF0007888639000044.tif20156 Downsampling filter type for chromatic mixing mask generation in TPM / GEO 38. The type of downsampling filter used for deriving the mixed weights for chroma samples may be signaled at the video unit level (e.g., SPS / VPS / PPS / Picture Header / Sub-Picture / Slice / Slice Header / Tile / Brick / CTU / VPDU level, etc.): a. In one example, a high-level flag may be signaled to switch between different chroma format types for content: i. In one example, a high-level flag may be signaled to switch between chroma format type 0 and chroma format type 2; ii. In one example, a flag may be signaled to specify whether the upper left downsampled chroma weight in the TPM / GEO prediction mode is collated with the upper left chroma weight (e.g., chroma sample position type 0); iii. In one example, a flag may be signaled to specify whether the upper-left downsampled chroma sample in TPM / GEO prediction mode is collated horizontally with the upper-left chroma sample but is vertically shifted by 0.5 units relative to the upper-left chroma sample (e.g., chroma sample position type 2); b. In one example, the type of downsampling filter may be signaled for a 4:2:0 chroma format and / or a 4:2:2 chroma format; c. In one example, a flag may be signaled to specify the type of chroma downsampling filter used for TPM / GEO prediction: i. In one example, this flag may signal whether downsampling filter A or downsampling filter B is used for chroma weight derivation in TPM / GEO prediction mode. 39. The type of downsampling filter used to derive the mixed weights for chroma samples can be derived at the video unit level (e.g., SPS / VPS / PPS / Picture Header / Sub-Picture / Slice / Slice Header / Tile / Brick / CTU / VPDU level, etc.): a. In one example, a lookup table may be defined to specify the correspondence between the chroma subsampling filter type and the chroma format type of the content. 40. For different chroma sample position types, specific downsampling filters may be used in the TPM / GEO prediction mode: a. In one example, for a specific chroma sample position type (e.g., chroma sample position type 0), the chroma weights of the TPM / GEO may be subsampled from the collated upper-left chroma weights; b. In one example, for a specific chroma sample position type (e.g., chroma sample position type 0 or 2), a specific X tap filter (where X is a constant, e.g., X=6 or 5) may be used for chroma weight subsampling in the TPM / GEO prediction mode. 41. Within a video unit (e.g., SPS, PPS, picture header, slice header, etc.), a first syntax element (e.g., a flag) may be signaled to indicate whether Multiple Transform Selection (MTS) is disabled for all blocks (slices / pictures): a. A second syntax element, indicating how MTS should be applied to intracoded blocks (slices / pictures) (e.g., enable MTS / disable MTS / implicit MTS / explicit MTS, etc.), is conditionally signaled based on the first syntax element. For example, the second syntax element is only signaled if the first syntax element indicates that MTS should be disabled for all blocks (slices / pictures); b. A third syntax element, indicating how MTS should be applied to the intercoded block (slice / picture) (e.g., enable / disable MTS / implicit / explicit MTS, etc.), is conditionally signaled based on the first syntax element. For example, the third syntax element is signaled only if the first syntax element indicates that MTS will not be disabled for all blocks (slice / picture); c. An example syntax design is as follows: (outer 9) TIFF0007888639000045.tif56156d. The third syntax element can be conditionally signaled based on whether or not a Sub-Block Transform (SBT) is applied. An example syntax design is as follows: (Outside 10) TIFF0007888639000046.tif34156e. An example syntax design is as follows: (Outside 11) TIFF0007888639000047.tif47157 Decision to use coding tool X 42. The decision of whether and / or how to enable coding tool X may depend on the width and / or height of the picture under consideration and / or the current picture among one or more reference pictures: a. The width and / or height of the reference picture under consideration and / or the current picture among one or more reference pictures may be changed in order to make a decision; b. The picture under consideration may be defined by a fitting window or scaling window as defined in JVET-P0590: i. The picture under consideration may be the entire picture; c. In one example, whether and / or how coding tool X should be enabled may depend on the width of the picture minus one or more horizontal offsets, and / or the height of the picture minus one or more vertical offsets: i. In one example, the horizontal offset can be defined as scaling_win_top_offset, which can be defined as in JVET-P0590; ii. In one example, the vertical offset can be defined as scaling_win_top_offset, which can be defined as in JVET-P0590; iii. In one example, the horizontal offset can be defined as (scaling_win_right_offset + scaling_win_left_offset), where scaling_win_right_offset and scaling_win_left_offset can be defined as in JVET-P0590; iv. In one example, the vertical offset can be defined as (scaling_win_bottom_offset + scaling_win_top_offset), where scaling_win_bottom_offset and scaling_win_top_offset can be defined as in JVET-P0590; v. In one example, the horizontal offset can be defined as SubWidthC*(scaling_win_right_offset+scaling_win_left_offset), where SubWidthC, scaling_win_right_offset, and scaling_win_left_offset can be defined as in JVET-P0590; vi. In one example, the vertical offset can be defined as SubHeightC*(scaling_win_bottom_offset+scaling_win_top_offset), where SubHeightC, scaling_win_bottom_offset, and scaling_win_top_offset can be defined as in JVET-P0590; d. In one example, if at least one of the two reference pictures under consideration has a different resolution (either width or height) than the current picture, coding tool X is disabled: i. Alternatively, if at least one of the two output reference pictures has dimensions (either width or height) greater than the dimensions of the current picture, coding tool X is disabled; e. In one example, if one of the referenced pictures under consideration in referenced picture list L has a different resolution than the current picture, coding tool X is disabled for that referenced picture list L: i. Alternatively, if one of the referenced pictures under consideration in referenced picture list L has dimensions (width or height) larger than the dimensions of the current picture, the coding tool X is disabled for that referenced picture list L; f. In one example, if the two reference pictures under consideration in two reference picture lists have different resolutions, the coding tool may be disabled: i. Alternatively, coding tool indications may be conditionally signaled according to resolution; ii. Alternatively, the coding tool's indication signaling may be skipped; g. In one example, if there are two reference pictures under consideration for two merge candidates used to derive a first pairwise merge candidate for at least one list of reference pictures, the coding tool may be disabled, for example, the first pairwise merge candidate may be marked as unavailable: i. Alternatively, if there are two reference pictures under consideration for two merge candidates used to derive a first pairwise merge candidate for both reference picture lists, the coding tool may be disabled, for example, the first pairwise merge candidate may be marked as unavailable; h. In one example, the decoding process of a coding tool may be modified to take picture dimensions into consideration: i. In one example, the derivation of the MVD for another list of reference pictures in the SMVD (e.g., List 1) may be based on the resolution difference (e.g., scaling factor) of at least one of the two target SMVD reference pictures; ii. In one example, the derivation of pairwise merge candidates may be based on the resolution difference (e.g., scaling factor) of at least one of the two reference pictures related to the two reference pictures, and a linear weighted average may be applied instead of equal weights, for example; i. In one example, X may be: i. DMVR / BDOF / PROF / SMVD / MMVD / other coding tools to refine motion / prediction on the decoder side ii. TMVP / other coding tools that rely on temporal movement information iii. MTS or other conversion coding tools iv. CC-ALF v. TPM vi. GEO vii. Switchable interpolation filters (e.g., alternative interpolation filters for half-pel motion compensation) viii. Mixed processes in TPM / GEO / other coding tools that split a single block into multiple partitions. ix. A coding tool that answers questions about information stored within a picture that is different from the current picture. x. Pairwise merge candidates (If certain resolution-related conditions are not met, no pairwise merge candidates will be generated.) xi. Biprediction with CU-level weights (BCW) xii. Weighted Prediction xiii. Affine prediction xiv. Adaptive Motion Vector Resolution (AMVR) 43. Whether and how to signal the use of coding tools may depend on the width and / or height of the picture under consideration and / or the current picture among one or more reference pictures: j. The width and / or height of the reference picture under consideration and / or the current picture among one or more reference pictures may be changed in order to make a decision; k. The picture under consideration may be defined by a scaling window and / or a fitting window as defined in JVET-P0590: i. The picture under consideration may be the entire picture; l. In one example, X may be the adaptive motion vector resolution; m. In one example, X may be the Merge-with-MV-difference (MMVD) method: i. In one example, the construction of a symmetric motion vector difference reference index may depend on the picture resolution / indication of the RPR case for different reference pictures; n. In one example, X could be a symmetric MVD (SMVD) method; o. In one example, X may be QT / BT / TT or other partition types; p. In one example, X could be a biprediction with CU-level weights (BCW); q. In one example, X could be a weighted prediction; r. In one example, X can be an affine prediction; s. In one example, signaling the use of a half-percent motion vector precision / switchable interpolation filter may depend on whether resolution information / RPR is currently enabled for the block; t. In one example, the signaling of amvr_precision_idx may depend on whether resolution information / RPR is currently enabled for the block; u. In one example, the signaling of sym_mvd_flag / mmvd_merge_flag may depend on whether resolution information / RPR is currently enabled for the block; v. The adapted bitstream satisfies the condition that 1 / 2 PelMV and / or MVD precision (e.g., alternative interpolation filter / switchable interpolation filter) is disabled when the width and / or height of the reference picture under consideration differs from that of the current output picture. 44. We propose that AMVR with 1 / 2 PelMV and / or MVD precision (or alternative interpolation filter / switchable interpolation filter) can still be effective for blocks within RPR: w. Alternatively, different interpolation filters with 1 / 2 Pell or other precisions may be applied to the block. 45. The same / different resolution checks in the bullet points above may be replaced by adding a flag about the reference picture and checking the flag associated with the reference picture: x. In one example, the process of setting a flag to be true or false (i.e., indicating whether the referenced picture is an RPR case or a non-RPR case) may be invoked during the referenced picture list construction process: i. For example, the following may apply: fRefWidth is set to equal to PicOutputWidthL of the reference picture RefPicList[i][j] in luma sample units, where PicOutputWidthL represents the width of the reference picture under consideration; fRefHeight is set to equal to PicOutputHeightL of the reference picture RefPicList[i][j] in luma sample units, where PicOutputHeightL represents the height of the reference picture under consideration; RefPicScale[i][j][0]= ((fRefWidth<<14)+(PicOutputWidthL>>1)) / PicOutputWidthL Here, PicOutputWidthL represents the width of the picture currently under consideration; RefPicScale[i][j][1]= ((fRefHeight<<14)+(PicOutputHeightL>>1)) / PicOutputHeightL Here, PicOutputHeightL represents the height of the picture currently under consideration; RefPicIsScaled[i][j]=(RefPicScale[i][j][0]!=(1<<14))||(RefPicScale[i][j][1]!=(1<<14)) Here, RefPicList[i][j] represents the j-th reference picture in the reference picture list i; y. In one example, if RefPicIsScaled[0][refIdxL0] is not equal to 0, or if RefPicIsScaled[1][refIdxL1] is not equal to 0, the coding tool X (e.g., DMVR / BDOF / SMVD / MMVD / SMVD / PROF / as listed above) may be disabled; z. In one example, if both RefPicIsScaled[0][refIdxL0] and RefPicIsScaled[1][refIdxL1] are not equal to 0, the coding tool X (e.g., DMVR / BDOF / SMVD / MMVD / SMVD / PROF / as listed above) may be disabled; aa. In one example, if RefPicIsScaled[0][refIdxL0] is not equal to 0, coding tool X (e.g., PROF or one of the bullet points above) may be disabled for reference picture list 0; bb. In one example, if RefPicIsScaled[1][refIdxL1] is not equal to 0, coding tool X (e.g., PROF or one of the bullet points above) may be disabled for reference picture list 1; 46. The SAD and / or threshold used by BDOF / DMVR may depend on the bit depth: a. In one example, the calculated SAD value may first be shifted by a function of the bit depth before being used for comparison with a threshold; b. In one example, the calculated SAD value can be directly compared to a modified threshold that may depend on a function of bit depth. 42. If the slice_type value for all slices of a picture is equal to I (I slice), then P / B slice-related syntax elements may not need to be signaled in the picture header: a. In one example, one or more syntax elements may be added to the picture header to indicate whether the slice_type of all slices contained in the specified picture is equal to I (I slice): i. In one example, the first syntax element is signaled within the picture header. Whether and / or how to signal / interpret a second syntax element that notifies slice type information within the slice header of the slice associated with the picture header may depend on the first syntax element: 1) In one example, depending on the first syntax element, the second syntax element may be inferred to be a slice type without signaling; 2) In one example, a second syntax element may be signaled depending on a first syntax element, but the conformance requirement is that the second syntax element must be one of several given values; 3) Alternatively, the first syntax element may be signaled within the AU delimiter RBSP associated with the slice; ii. In one example, a new syntax element (e.g., pic_all_X_slices_flag) may be signaled within the picture header to indicate whether only X slices are allowed in this picture, or whether all slices in this picture are X slices. For example, X could be I, or P or B: 1) In one example, if all slices are indicated as I-slices within the relevant picture header, the slice type information is not signaled within the slice header and is inferred to be I-slices; iii. In one example, a new syntax element (e.g., ph_pic_type) may be signaled within the picture header to indicate the picture type of this picture: 1) For example, if ph_pic_type is equal to I-picture (e.g., equal to 0), then the slice_type of slices within the picture can only be equal to I; 2) In another example, if ph_pic_type is equal to a non-I picture (e.g., 1 or 2), then slice_type of slices within the picture may be equal to I and / or P and / or B; b. In one example, the syntax element pic_type within the AU delimiter RBSP may be used to indicate whether all slices of a given picture are equal to I; c. In one example, if all slices in a picture are I-slices, then for all slices in this picture, the syntax element slice_type in the slice header may be inferred to be an I-slice (e.g., 2) without signaling: i. In one example, if a syntax element (e.g., pic_all_I_slices_flag, ph_pic_type, pic_type, etc.) indicates that all slices in a given picture are equal to I, then a bitstream constraint may be added to specify that the slice_type of all slices in the given picture is equal to an I slice; ii. Alternatively, if a syntax element (e.g., pic_all_I_slices_flag, ph_pic_type, pic_type, etc.) indicates that all slices contained in the specified picture are equal to I, a bitstream constraint may be added to specify that no P or B slices are allowed in the specified picture; d. If a slice / picture is a W slice / W picture, one or more syntax elements in the slice header / picture header that are allowed in non-W slices (denoted below as the set of syntax elements X) may not be signaled. For example, W can be I, and non-W can be B or P. In another example, W can be B, and non-W can be I or P: i. In one example, if all slices within a picture are W slices, the set of syntax elements X allowed in the picture header for non-W slices may not be signaled; ii. Alternatively, certain syntax elements within the picture header (denoted below as set X) may be conditionally signaled depending on whether all slices within the picture are W slices; iii. The syntax element set X may be one or more of the following: 1) In one example, X may be a reference picture-related syntax element in the picture header, such as, but not limited to, pic_rpl_present_flag, pic_rpl_sps_flag, pic_rpl_idx, pic_poc_lsb_lt, pic_delta_poc_msb_present_flag, pic_delta_poc_msb_cycle_lt. If a slice / picture is signaled or inferred to be a non-inter-slice / picture, X may not be signaled and may be inferred not to be used; 2) In one example, X may be an inter-slice related syntax element in the picture header, such as, but not limited to, pic_log2_diff_min_qt_min_cb_inter_slice, pic_max_mtt_hierarchy_depth_inter_slice, pic_log2_diff_max_bt_min_qt_inter_slice, or pic_log2_diff_max_tt_min_qt_inter_slice. If a slice / picture is signaled or inferred to be a non-inter-slice / picture, X may not be signaled and may be inferred not to be used; 3) In one example, X may be an interprediction-related syntax element in the picture header, such as, but not limited to, pic_temporal_mvp_enabled_flag, mvd_l1_zero_flag, pic_six_minus_max_num_merge_cand, pic_five_minus_max_num_subblock_merge_cand, pic_fpel_mmvd_enabled_flag, pic_disable_bdof_flag, pic_disable_dmvr_flag, pic_disable_prof_flag, pic_max_num_merge_cand_minus_max_num_triangle_cand. If a slice / picture is signaled or inferred to be a non-interslice / picture, X may be inferred not to be signaled and not used; 4) In one example, X may be a biprediction-related syntax element in the picture header, such as, but not limited to, pic_disable_bdof_flag, pic_disable_dmvr_flag, or mvd_l1_zero_flag. If a slice / picture is signaled or inferred to be a non-B slice / picture, X may not be signaled and may be inferred not to be used. Relevant tile / slice size limitations 43. The maximum tile width may be specified in the specifications: a. For example, the maximum tile width can be defined as the maximum luma tile width in the CTB; b. In one example, new (one or more) syntax elements may be signaled within a video unit (e.g., SPS, PPS, picture header, slice header, etc.) to indicate the maximum tile width currently allowed in a sequence / picture / slice / subpicture; c. In one example, the maximum lumateile width, or the maximum lumateile width in the CTB, may be signaled; d. In one example, the maximum rumatile width may be fixed to N (e.g., N = 1920 or 4096); e. In one example, different maximum tile widths may be specified for different profiles / levels / layers. 44. The maximum slice / sub-picture / tile dimensions (e.g., width and / or size, and / or length and / or height) may be specified in the specifications: a. For example, the maximum slice / subpicture / tile dimension can be defined as the maximum luma dimension in the CTB; b. For example, the size of a slice / subpicture / tile can be defined as the number of CTBs within the slice; c. In one example, new (one or more) syntax elements may be signaled within a video unit (e.g., SPS, PPS, picture header, slice header, etc.) to indicate the maximum luma slice / subpicture / tile dimensions currently allowed in a sequence / picture / slice / subpicture; d. In one example, for a rectangular slice / subpicture, the maximum luma slice / subpicture width / height, or the maximum luma slice / subpicture width / height in the CTB, may be signaled; e. In one example, the maximum luma slice size (e.g., width × height) or the maximum luma slice size in the CTB may be signaled for a raster scan slice; f. In one example, the maximum luma slice / subpicture size (e.g., width × height) or the maximum luma slice / subpicture size in the CTB may be signaled for both rectangular slices / subpictures and raster scan slices; g. In one example, the maximum luma slice length or the maximum luma slice length in the CTB may be signaled for a raster scan slice; h. In one example, the maximum luma slice / subpicture width / height may be fixed to N (e.g., N=1920 or 4096); i. In one example, the maximum luma slice / subpicture size (e.g., width × height) may be fixed to N (e.g., N = 2,073,600 or 8,338,8608); j. In one example, different profiles / levels / layers may have different maximum slice / sub-picture dimensions; k. In one example, the maximum number of slices / subpictures / tiles to be divided within a picture / subpicture may be specified in the specification: i. The maximum number may not be signaled; ii. The maximum number may vary depending on the profile / level / layer. 45. The width and height of the current picture are denoted as PW and PH, respectively; the width and height of the scaling window of the current picture are denoted as SW and SH, respectively; the width and height of the scaling window of the reference picture are denoted as SW and SH, respectively; and the maximum allowable picture width and height are denoted as Wmax and Hmax, respectively. For convenience, let rw=SW' / SW, Rw=Wmax / PW, Qw=PW' / PW, rh=SH' / SH, and Rh=Hmax / PH, Qh=PH' / PH. At least one of the following constraints must be followed by the compliant bitstream. The following constraints should not be understood strictly. For example, the constraint (a / b)>=(c / d), where a, b, c, and d are integers greater than 0, can also be understood as (a / b)-(c / d)>=0, or a*d>=c*b, or a*dc*d>=0: a. a × Wmax × SW - (b × SW' + c × SW) × PW + offw ≥ 0, where a, b, c, and offw are integers. For example, a = 135, b = 128, c = 7, and offw = 0; b. d × Hmax × SH - (e × SH' + f × SH) × PH + offh ≥ 0, where d, e, and f are integers. For example, d = 135, e = 128, f = 7, and offh = 0; c. a × Wmax × SW - b × SW' × PW + offw ≥ 0, where a and b are integers. For example, a=1, b=1, offw=0; d × Hmax × SH - e × SH' × PH + offh ≥ 0, where d and e are integers. For example, d=1, e=1, offh=0; e. rw ≤ Rw + (Lw × (Rw-1)) / Bw + offw, where Lw, Bw, and offw are integers. For example, Lw = 7, Bw = 128, and offw = 0; f. rh ≤ Rh + (Lh × (Rh - 1)) / Bh + offh, where Lh, Bh, and offh are integers. For example, Lh = 7, Bh = 128, and offh = 0; g. rw ≤ a * Rw + offw, where a and offw are integers. For example, a = 1 and offw = 0; h. rh ≤ b*Rh + offh, where b and offh are integers. For example, b=1 and offh=0; i. rw ≤ a*Qw + offw, where a and offw are integers. For example, a=1 and offw=0; j. rh ≤ b*Qh + offh, where b and offh are integers. For example, b=1 and offh=0. 46. QP-related information (e.g., delta QP) may be signaled within the picture header rather than within the PPS: a. In one example, QP-related information (e.g., Delta QP) is specified for a specific coding tool, such as Adaptive Color Conversion (ACT).
[0042] 5. Further Embodiments The working draft specified in JVET-O2001-vE may be modified in the following embodiments. Text changes in the VVC draft are shown in the table below in underlined bold italics, and deletions are shown in double bold brackets. For example, [[a]] indicates that "a" has been deleted. 5.1. Embodiments of constraints regarding the fitting window (Outside 12) TIFF0007888639000048.tif1601675.2. Embodiment 1 of Reference Sample Position Derivation (Outside 13) TIFF0007888639000049.tif249170TIFF0007888639000050.tif2221705.3. Embodiment 2 of Reference Sample Position Derivation (Outside 14) TIFF0007888639000051.tif249170TIFF0007888639000052.tif2111705.4. Embodiment 3 of Reference Sample Position Derivation (Outside 15) TIFF0007888639000053.tif249170TIFF0007888639000054.tif2131705.5. Example 1 of Reference Sample Position Clipping (Outside 16) TIFF0007888639000055.tif254170TIFF0007888639000056.tif2511705.6. Reference sample position clipping embodiment 2 (Outside 17) TIFF0007888639000057.tif254170TIFF0007888639000058.tif254159TIFF0007888639000059.tif261635.7. Embodiments of Coding Tool Usage 5.7.1 BDOF On / Off Control (outside 18) TIFF0007888639000060.tif1341665.7.2 DMVR On / Off Control (Outside 19) TIFF0007888639000061.tif1051665.7.3 PROF On / Off Control for Reference Picture List X (outside 20) TIFF0007888639000062.tif971685.7.4 PROF On / Off Control for Reference Picture List X (Second Embodiment) (outside 21) TIFF0007888639000063.tif991685.8 (In addition to JVET-P2001-v9) Embodiment of conditional signaling of interrelated syntax elements in picture headers (outside 22) TIFF0007888639000064.tif213161TIFF0007888639000065.tif213161TIFF0007888639000066.tif219161TIFF0007888639000067.tif221161TIFF0007888639000068.tif223161TIFF0007888639000069.tif221167TIFF0007888639000070.tif901625.9 (In addition to JVET-P2001-v14) Embodiments of constraints regarding RPR Set refPicWidthInLumaSamples and refPicHeightInLumaSamples to the pic_width_in_luma_samples and pic_height_in_luma_samples of the referenced picture of the current picture that references this PPS, respectively. Set refPicOutputWidthL and refPicOutputHeightL to the PicOutputWidthL and PicOutputHeightL of the referenced picture, respectively. The following conditions must all be met for bitstream conformance to be valid: - PicOutputWidthL * 2 is greater than or equal to refPicOutputWidthL. - PicOutputHeightL * 2 is greater than or equal to refPicOutputHeightL. - PicOutputWidthL is refPicOutputWidthL * It is 8 or less. - PicOutputHeightL is refPicOutputHeightL * 8 or less, - (PicOutputWidthL-refPicOutputWidthL)*(PicWidthInLumaSamples-refPicWidthInLumaSamples) is greater than or equal to 0, - (PicOutputHeightL - refPicOutputHeightL) * (PicHeightInLumaSamples - refPicHeightInLumaSamples) is greater than or equal to 0. - 135*pic_width_max_in_luma_samples*PicOutputWidthL-(128*refPicOutputWidthL+7*PicOutputWidthL)*PicWidthInLumaSamples is greater than or equal to 0, - 135*pic_height_max_in_luma_samples*PicOutputHeightL-(128*refPicOutputHeightL+7*PicOutputHeightL)*PicHeightInLumaSamples is greater than or equal to 0. 5.10 Embodiments of wrap-around offset signaling (in addition to JVET-P2001-v14) (outside 23) TIFF0007888639000071.tif158163(outside 24) TIFF0007888639000072.tif249170TIFF0007888639000073.tif2241695.11 (An embodiment of a deblocking filter between subpictures, in addition to JVET-P2001-v14) (Outside 25) TIFF0007888639000074.tif250170TIFF0007888639000075.tif189170
[0043] 6. Examples of Disclosure Technology Implementations Figure 7 is a block diagram showing an example of a video processing system 7000 in which various technologies disclosed herein may be implemented. Various implementations may include some or all of the components of system 7000. System 7000 may include an input 7002 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8-bit or 10-bit multi-component pixel values, or in a compressed or encoded format. Input 7002 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet® and passive optical networking (PON), and wireless interfaces such as Wi-Fi® or cellular interfaces.
[0044] System 7000 may include a coding component 7004 that can implement various coding or encoding methods described in this document. The coding component 7004 may reduce the average bitrate of the video from input 7002 to the output of the coding component 7004 to generate an encoded representation of the video. Coding techniques are therefore sometimes called video compression techniques or video transcoding techniques. The output of the coding component 7004 may be stored or connected and transmitted via communication as represented by component 7006. The stored or transmitted bitstream (or encoded) representation of the video received at input 7002 may be used by component 7008 to generate pixel values or a displayable image to be sent to the display interface 910. The process of generating a user-viewable image from the bitstream representation (or bitstream) is sometimes called video decompression. Also, certain video processing operations may be referred to as “coding” operations or tools, but to be understood, coding tools or operations are used in encoders, and the corresponding decoding tools or operations that reverse the coding result are performed in decoders.
[0045] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI®), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, and IDE interfaces. The technologies described herein can be embodied in various electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0046] Figure 8 is a block diagram of the video processing device 8000. The device 8000 may be used to implement one or more of the methods described herein. The device 8000 may be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. The device 8000 may include one or more processors 8002, one or more memories 8004, and video processing hardware 8006. The (one or more) processors 8002 may be configured to perform one or more of the methods described in this document (for example, Figure 12-13). The (one or more) memories 8004 may be used to store data and code used to perform the methods and techniques described herein. The video processing hardware 8006 may be used to implement some of the techniques described in this document in hardware circuitry.
[0047] Figure 9 is a block diagram showing an example of a video coating system 100 that may utilize the technology of this disclosure. As shown in Figure 9, the video coating system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data and may be referred to as a video encoder. The destination device 120 can decode the encoded video data generated by the source device 110 and may be referred to as a video decoder. The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0048] The video source 112 may include sources such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of such sources. The video data may have one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream may include a set of bits that form an encoded representation of the video data. The bitstream may include encoded pictures and associated data. An encoded picture is an encoded representation of a picture. Associated data may include a sequence parameter set, a picture parameter set, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or transmitter. The encoded video data may be transmitted directly to the destination device 120 via the I / O interface 116 and through the network 130a. The encoded video data may also be stored on a storage medium / server 130b for access by the destination device 120.
[0049] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.
[0050] The I / O interface 126 may include a receiver and / or modem. The I / O interface 126 may acquire encoded video data from the source device 110 or storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to the user. The display device 122 may be integrated with the destination device 120, or it may be outside the destination device 120 configured to interface with an external display device.
[0051] The video encoder 114 and video decoder 124 may operate in accordance with video compression standards, such as the High-Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or future standards.
[0052] Figure 10 is a block diagram showing an example of a video encoder 200, which may be the video encoder 114 in the system 100 shown in Figure 9.
[0053] The video encoder 200 may be configured to perform any or all of the techniques of this disclosure. In the example shown in Figure 10, the video encoder 200 includes several functional components. The techniques described in this disclosure may be shared among the various components of the video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.
[0054] The functional components of the video encoder 200 may include a splitting unit 201, a prediction unit 202 which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra-prediction unit 206, a residual generation unit 207, a transformation unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transformation unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.
[0055] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intrablock copy (IBC) unit. The IBC unit may perform prediction in an IBC mode in which at least one reference picture is the picture where the current video block is located.
[0056] Furthermore, some components, such as the motion estimation unit 204 and the motion compensation unit 205, are shown separately in the example in Figure 5 for illustrative purposes, but can be highly integrated.
[0057] The splitting unit 201 can divide the picture into one or more video blocks. The video encoder 200 and video decoder 300 can support various video block sizes.
[0058] The mode selection unit 203 may, for example, select one of several coding modes, which are intra or inter, based on the error result, and provide the resulting intra or intercoded block to the residual generation unit 207, which generates residual block data, and the reconstruction unit 212, which reconstructs the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combination of intra and inter predication (CIIP) mode, where the prediction is based on an inter-prediction signal and an intra-prediction signal. The mode selection unit 203 may also select the resolution of the motion vector relative to the block (e.g., sub-pixel or integer pixel precision) in the case of inter-prediction.
[0059] To perform interpretation on the current video block, the motion estimation unit 204 may generate motion information about the current video block by comparing one or more reference frames from the buffer 213 with the current video block. The motion compensation unit 205 may determine a predicted video block for the current video block based on the motion information of pictures from the buffer 213 other than the picture associated with the current video block, and the decoded samples.
[0060] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations on the current video block depending, for example, whether the current video block is in an I slice, a P slice, or a B slice.
[0061] In some cases, the motion estimation unit 204 can perform a one-way prediction for the current video block and may search for a reference picture in List 0 or List 1 for a reference video block relative to the current video block. The motion estimation unit 204 may then generate a reference index that points to the reference picture in List 0 or List 1 containing the reference video block, and a motion vector that points to the spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the above reference index, a prediction direction indicator, and the above motion vector as motion information for the current video block. Based on the reference video block indicated by the motion information of the current video block, the motion compensation unit 205 may generate a predicted video block for the current block.
[0062] In another example, the motion estimation unit 204 can perform bidirectional predictions for the current video block. The motion estimation unit 204 can search for reference pictures in List 0 for a reference video block relative to the current video block, and can also search for reference pictures in List 1 for another reference video block relative to the current video block. The motion estimation unit 204 can then generate reference indices that point to the reference pictures in List 0 and List 1 that contain the reference video blocks, and motion vectors that point to the spatial displacement between those reference video blocks and the current video block. The motion estimation unit 204 can output these reference indices and the motion vectors of the current video block as motion information for the current video block. Based on the reference video blocks indicated by the motion information of the current video block, the motion compensation unit 205 can generate a predicted video block for the current block.
[0063] In some cases, the motion estimation unit 204 may output a complete set of motion information for the decoder's decoding process.
[0064] In some cases, the motion estimation unit 204 does not need to output a complete set of motion information for the current video. Rather, the motion estimation unit 204 may signal the motion information for the current video block by referring to the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information for the current video block is sufficiently similar to the motion information of an adjacent video block.
[0065] In one example, the motion estimation unit 204 may point to a value within the syntax structure currently associated with the video block that indicates to the video decoder 300 that the current video block has the same motion information as another video block.
[0066] In another example, the motion estimation unit 204 may identify a motion vector difference (MVD) with another video block within the syntax structure associated with the current video block. The motion vector difference represents the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0067] As described above, the video encoder 200 can predictively signal motion vectors. Two examples of predictive signaling techniques that can be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.
[0068] The intra-prediction unit 206 may perform intra-prediction on the current video block. When the intra-prediction unit 206 performs intra-prediction on the current video block, it may generate prediction data for the current video block based on decoded samples from other video blocks within the same picture. The prediction data for the current video block may include the predicted video block and various syntax elements.
[0069] The residual generation unit 207 may generate residual data for the current video block by subtracting (for example, indicated by a minus sign) one or more predicted video blocks of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the sample within the current video block.
[0070] In other examples, for instance in skip mode, residual data for the current video block may not exist, and the residual generation unit 207 may not perform a subtraction operation.
[0071] The conversion processing unit 208 can generate one or more conversion coefficient video blocks for the current video block by applying one or more conversions to the residual video blocks associated with the current video block.
[0072] After the conversion processing unit 208 generates a conversion coefficient video block for the current video block, the quantization unit 209 may quantize the conversion coefficient video block for the current video block based on one or more quantization parameter (QP) values for the current video block.
[0073] The inverse quantization unit 210 and the inverse transformation unit 211 can reconstruct a residual image block from the transformation coefficient image block by applying inverse quantization and inverse transformation, respectively, to the transformation coefficient image block. The reconstruction unit 212 can add the reconstructed residual image block to corresponding samples from one or more prediction image blocks generated by the prediction unit 202 to generate a reconstructed image block for the current block, which is stored in the buffer 213.
[0074] After the reconstruction unit 212 reconstructs the video block, loop filtering operations may be performed to reduce video blocking artifacts within the video block.
[0075] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives data, it may perform one or more entropy coding operations to generate entropy coded data and output a bitstream containing the entropy coded data.
[0076] Figure 11 is a block diagram showing an example of a video decoder 300, which may be the video decoder 124 in the system 100 shown in Figure 9.
[0077] The video decoder 300 may be configured to perform any or all of the techniques of this disclosure. In the example in Figure 11, the video decoder 300 includes several functional components. The techniques described in this disclosure may be shared among the various components of the video decoder 300. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.
[0078] In the example shown in Figure 11, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 may perform a decoding path that is roughly the reverse of the encoding path described for the video encoder 200 (e.g., Figure 10).
[0079] The entropy decoding unit 301 can extract an encoded bitstream. The encoded bitstream may contain entropy-encoded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 can decode the entropy-encoded video data, and from the entropy-decoded video data, the motion compensation unit 302 can determine motion information, including motion vectors, motion vector precision, reference picture list index, and other motion information. The motion compensation unit 302 may determine such information, for example, by performing AMVP and merge modes.
[0080] The motion compensation unit 302 may, if applicable, perform interpolation based on an interpolation filter to generate motion compensation blocks. An identifier for the interpolation filter used with subpixel precision may be included in the syntax element.
[0081] The motion compensation unit 302 may calculate interpolation values for sub-integer pixels of a reference block using the interpolation filter used by the video encoder 20 during the encoding of the video block. The motion compensation unit 302 may determine the interpolation filter used by the video encoder 200 according to the received syntax information and generate a predicted block using that interpolation filter.
[0082] The motion compensation unit 302 may use some of the syntax information to determine the size of the blocks used to encode the frames and / or slices of the encoded video sequence, partition information describing how each macroblock of the picture in the encoded video sequence is divided, a mode indicating how each partition is encoded, one or more reference frames (and a list of reference frames) for each inter-encoded block, and other information for decoding the encoded video sequence.
[0083] The intra-prediction unit 303 can form prediction blocks from spatially adjacent blocks using the intra-prediction mode received, for example, in the bitstream. The inverse quantization unit 303 inverse quantizes, for example, dequantizes, the quantized image block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transformation unit 303 applies the inverse transformation.
[0084] The reconstruction unit 306 may combine the residual blocks with the corresponding predicted blocks generated by the motion compensation unit 302 or the intra-prediction unit 303 to form a decoded block. If desired, a deblocking filter may also be applied to filter the decoded block to remove block artifacts. The decoded video block is then stored in the buffer 307, which provides a reference block for later motion compensation / intra-prediction and generates the decoded video for presentation on a display device.
[0085] Figures 12-17 show examples of how the above-described technical solutions can be implemented, for example, in the embodiments shown in Figures 1-5.
[0086] Figure 12 shows a flowchart of example video processing method 1200. Method 1200 includes performing a conversion in operation 1210 between a video having one or more video pictures, each having one or more slices, and the bitstream of said video, wherein the bitstream conforms to a format rule that specifies that for video pictures in which all slices are coded as I slices, the syntax elements related to P slices and B slices are omitted from the picture header for said video picture.
[0087] Figure 13 shows a flowchart of an example video processing method 1300. Method 1300 includes performing a conversion in operation 1310 between a video having one or more video pictures, each having one or more slices, and a bitstream of the video, wherein the bitstream conforms to a format rule that specifies that the picture header of each video picture has a syntax element indicating whether all slices within the video picture are coded with the same coding type.
[0088] Figure 14 shows a flowchart of an example video processing method 1400. Method 1400 includes performing a conversion in operation 1410 between a video having one or more video pictures and the bitstream of said video, wherein the bitstream conforms to a format rule that specifies that the picture header for each of the one or more video pictures has a syntax element that points to that picture.
[0089] Figure 15 shows a flowchart of example video processing method 1500. Method 1500 includes performing a conversion in operation 1510 between a video having one or more video pictures and the bitstream of said video, wherein the bitstream conforms to format rules that specify that a syntax element indicating the picture type of the picture is signaled within the Access Unit (AU) Delimiter Low-Byte Sequence Payload (RBSP), and the syntax element indicates that all slices in the picture are I slices.
[0090] Figure 16 shows a flowchart of example video processing method 1600. Method 1600 includes performing a conversion in operation 1610 between a video having a video picture having one or more video slices and a bitstream of said video, wherein the bitstream conforms to format rules that, for a picture in which each of the multiple slices in the picture is an I slice, the slice type indication is either excluded from the slice header of the multiple slices in the bitstream during encoding, or inferred to be an I slice during decoding.
[0091] Figure 17 shows a flowchart of example video processing method 1700. Method 1700 includes, in operation 1710, determining whether one or more non-W-related syntax elements are signaled in the slice header of a W slice or the picture header of a W picture for conversion between a video having a W slice or W picture and the bitstream of said video, where W is I, B, or P.
[0092] Method 1700 includes performing the above conversion based on the above determination in operation 1720.
[0093] Next, we provide a list of solutions preferred by some embodiments.
[0094] 1. A method for processing video, comprising the step of performing a conversion between a video having one or more video pictures having one or more slices and a bitstream of said video, wherein the bitstream conforms to a format rule, and the format rule specifies that for a video picture in which all slices are coded as I slices, syntax elements related to P slices and B slices are omitted from the picture header for said video picture.
[0095] 2. The method of Solution 1, wherein a first syntax element indicating that all slices of the video unit are I slices is signaled in the picture header.
[0096] 3. The method of Solution 2, wherein whether or not a second syntax element is signaled within the bitstream is based on the first syntax element, and the second syntax element points to slice type information in the slice header of the slice associated with the picture header.
[0097] 4. The method of Solution 3, wherein the aforementioned second syntax element is excluded from the bitstream and is presumed to be of a slice type.
[0098] 5. The method of Solution 3, wherein the second syntax element is signaled within the bitstream and is equal to one of a plurality of predetermined values based on compliance requirements.
[0099] 6. The method of Solution 3, wherein a first syntax element indicating that all of the video units have I-slices is signaled in an access unit (AU) delimiter low-byte sequence payload (RBSP) associated with at least one of the I-slices.
[0100] 7. A method for processing video, comprising the step of performing a conversion between a video having one or more video pictures having one or more slices and a bitstream of the video, wherein the bitstream conforms to a format rule, the format rule specifies that the picture header of each video picture has a syntax element indicating whether all slices within the video picture are coded with the same coding type.
[0101] 8. The method of Solution 7, in which all slices are coded as either I-slice, P-slice, or B-slice.
[0102] 9. The method of Solution 7, wherein the slice header for a slice excludes slice type information, and the slice is presumed to be an I-slice by the syntax element in the picture header indicating that all slices are I-slices.
[0103] 10. A method for processing video, comprising the step of performing a conversion between a video having one or more video pictures and a bitstream of said video, wherein the bitstream conforms to a format rule, and the format rule specifies that a picture header for each of the one or more video pictures has a syntax element that points to said picture.
[0104] 11. The method of Solution 10, wherein the slice type of one or more slices within the picture is made possible only to point to an I-slice by the syntax element indicating that the picture is an I-picture.
[0105] 12. The method of Solution 10, wherein the slice type of one or more slices in the picture indicates an I slice and / or a B slice and / or a P slice by indicating that the picture is a non-I picture.
[0106] 13. A method for processing video, comprising the step of performing a conversion between video having one or more video pictures and a bitstream of said video, wherein the bitstream conforms to a format rule, the format rule specifies that a syntax element indicating the picture type of a picture is signaled in an Access Unit (AU) Delimiter Low-Bite Sequence Payload (RBSP), and the syntax element indicates that all slices in said picture are I-slices.
[0107] 14. A method for processing video, comprising the step of performing a conversion between a video having a video picture having one or more video slices and a bitstream of said video, wherein the bitstream conforms to a format rule, and the format rule specifies that for a picture in which each of the multiple slices in the picture is an I slice, a slice type indication is excluded from the slice header of the multiple slices in the bitstream during encoding, or is inferred to be an I slice during decoding.
[0108] 15. The method of Solution 14, wherein the bitstream is organized such that each of the plurality of slices in the picture is an I-slice.
[0109] 16. The method of Solution 14, wherein the bitstream is organized so that no B-slice or P-slice is included in the picture.
[0110] 17. A method for processing video, wherein W is I, B, or P, and the method comprises the steps of determining whether one or more non-W related syntax elements are signaled in the slice header of the W slice or the picture header of the W picture for conversion between a video having a W slice or a W picture and the bitstream of the video, and performing the conversion based on the determination.
[0111] 18. Solution 17 method where W is I and non-W is B or P.
[0112] 19. Method of Solution 17, where W is B and non-W is I or P.
[0113] 20. Any method of Solutions 17 to 19, wherein one or more syntax elements are excluded from the bitstream because all slices in the picture are W slices.
[0114] 21. Any method of Solutions 17 to 19, wherein one or more syntax elements are conditionally signaled in the bitstream because all slices in the picture are W slices.
[0115] 22. Any method of Solutions 17 to 21 wherein one or more syntax elements have reference picture-related syntax elements in the picture header.
[0116] 23. Any method of Solutions 17 to 21 wherein the one or more syntax elements have interslice-related syntax elements in the picture header.
[0117] 24. Any method of Solutions 17 to 21 wherein the one or more syntax elements have interprediction-related syntax elements in the picture header.
[0118] 25. Any method of Solutions 17 to 21 wherein the one or more syntax elements have a biprediction-related syntax element in the picture header.
[0119] 26. Any method of Solution 1 to 25 wherein the conversion comprises decoding the video from the bitstream.
[0120] 27. Any method of Solution 1 to 25 wherein the conversion comprises encoding the video into the bitstream.
[0121] 28. A method for writing a bitstream representing video to a computer-readable recording medium, comprising the steps of: generating a bitstream from video according to any of the methods of Solutions 1 to 25; and writing the bitstream to a computer-readable recording medium.
[0122] 29. A video processing apparatus having a processor configured to perform any of the methods of Solutions 1 to 28.
[0123] 30. A computer-readable medium storing instructions, wherein, when executed, the instructions cause a processor to execute any of the methods of solutions 1 to 27.
[0124] 31. A computer-readable medium storing a bitstream generated according to any of the methods in Solutions 1 through 28.
[0125] 32. A video processing device for storing a bitstream, configured to perform any of the methods of Solutions 1 to 28.
[0126] 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 in the conversion from a pixel representation of video to a corresponding bitstream or vice versa. Currently, the bitstream of a video block corresponds to either bits placed together in the bitstream or bits scattered in multiple different locations, as defined, for example, by syntax. For example, a macroblock may be encoded using bits in the header and other fields of the bitstream with respect to the error residual value to be converted and coded.
[0127] The disclosed and other solutions, examples, embodiments, modules, and functional operations described herein, including the structures disclosed herein and those structurally equivalent thereto, can be implemented in digital electronic circuits, or in computer software, firmware, or hardware, or in a combination of one or more thereof. The disclosed and other embodiments can be implemented as one or more computer program products, for example, as one or more modules of computer program instructions encoded on a computer-readable medium for execution by a data processing device or for controlling the operation of a data processing device. The computer-readable medium can be a machine-readable storage device, a machine-readable storage board, a memory device, a composition of a material that produces a machine-readable propagating signal, or a combination of one or more thereof. The term “data processing device” encompasses any device, machine, and machine that processes data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, a device may include code that creates an execution environment for the computer program in question, such as, for example, processor firmware, a protocol stack, a database management system, an operating system, or code that constitutes one or more of these. The transmitted signal is an artificially generated signal, such as a machine-generated electrical, optical, or electromagnetic signal, produced to encode information for transmission to a suitable receiving device.
[0128] Computer programs (also known as programs, software, software applications, scripts, or code) may be written in any form of programming language, including compiled or interpreted languages, and may be deployed in any form, including as standalone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. Computer programs do not necessarily correspond to files in a file system. A program may be part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), or it may be stored in a single file dedicated to the program in question, or it may be stored in multiple collaborative files (e.g., a file that holds one or more modules, subprograms, or parts of code). A computer program may be deployed to run on a single computer, or it may be deployed to run on multiple computers located in one place or distributed across multiple locations and interconnected by a communication network.
[0129] The processes and logical flows described in this document can be executed by one or more programmable processors that run one or more computer programs to perform functions by performing calculations on input data and generating outputs. These processes and logical flows can also be executed by dedicated logic circuits, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits), and devices can also be implemented as such dedicated logic circuits.
[0130] Processors suitable for executing computer programs include, for example, both general-purpose and dedicated microprocessors, and any one or more processors in any type of digital computer. Generally, a processor receives instructions and data from read-only memory, random-access memory, or both. Essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer also includes one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or is operationally coupled to receive data from or transfer data to mass storage devices. However, a computer is not required to have such devices. Computer-readable media suitable for storing computer program instructions and data include, for example, semiconductor memory devices such as EPROMs, EEPROMs, and flash memory devices; magnetic disks such as internal hard disks or removable disks; magneto-optical disks; and CD-ROMs and DVD-ROM disks, and all forms of non-volatile memory, media, and memory devices. Processors and memory may be supplemented by or incorporated into dedicated logic circuits.
[0131] This patent document contains numerous details, which should not be interpreted as limitations on the scope of any subject matter or claims, but rather as descriptions of mechanisms that may be specific to particular embodiments of a particular technology. Certain mechanisms described in this patent document in the context of separate embodiments may be implemented in combination in a single embodiment. Conversely, various mechanisms described in the context of a single embodiment may be implemented separately or in some preferred subcombination in multiple embodiments. Furthermore, while several mechanisms may be described above as operating in a particular combination, and may even be initially claimed in this manner, it may be possible to exclude one or more mechanisms from a claimed combination, or to lead the claimed combination into a subcombination or a variation of a subcombination.
[0132] Similarly, although the drawings show processes in a specific order, this should not be understood as requiring that those operations be performed in a specific order or sequence as illustrated, or that all illustrated processes be performed, in order to achieve the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[0133] Only a few implementations and examples are described, and other implementations, extensions, and modifications may be made based on those described and illustrated in this patent document.
Claims
1. A method of image processing, A step of determining the value of a first syntax element to be included in the picture header for the first video picture in the bitstream for conversion between a first video picture of a video having one or more video pictures and the bitstream of the video, wherein the value of the first syntax element indicates that all slices included in the first video picture are I slices. A step of performing the transformation based on the above decision, It has, In response to the value of the first syntax element indicating that all slices contained in the first video picture are I slices, one or more syntax elements are omitted from the picture header for the first video picture in the bitstream. The one or more syntax elements have a second syntax element that defines the use of a first prediction mode for the first video picture, In the first prediction mode, the signaled motion vector is refined based on at least one motion vector having an offset from the signaled motion vector. method.
2. The method according to claim 1, wherein if the value of the first syntax element does not indicate that all slices contained in the first video picture are I slices, then one or more syntax elements are each conditionally included in the picture header.
3. The one or more syntax elements further include at least one of temporal_mvp_enabled_flag, mvd_l1_zero_flag, a third syntax element specifying the use of a second prediction mode for the first video picture, or a fourth syntax element specifying the use of a third prediction mode for the first video picture. In the second prediction mode, a motion vector offset is obtained for a video block in the first video picture using a bidirectional optical flow tool, based on at least one gradient value corresponding to a sample in the reference block of the video block. In the third prediction mode, an initial prediction sample of a subblock of the video block, coded in affine mode, is generated for the video block in the first video picture, and an optical flow process is applied to derive a prediction refinement based on the motion vector difference dMvH and / or dMvV, thereby generating a final prediction sample for the subblock, where dMvH and dMvV indicate the motion vector difference along the horizontal and vertical directions. The method according to claim 2.
4. The method according to claim 2, wherein the one or more syntax elements further include at least one of log2_diff_min_qt_min_cb_inter_slice, max_mtt_hierarchy_depth_inter_slice, log2_diff_max_bt_min_qt_inter_slice, or log2_diff_max_tt_min_qt_inter_slice.
5. The method according to claim 1, wherein whether a slice_type syntax element is included in the slice header of a slice associated with the picture header in the bitstream is determined based on the value of the first syntax element, the slice_type syntax element indicates the slice type of the slice and has one of several predetermined values.
6. The method according to claim 5, wherein if the value of the first syntax element indicates that all slices included in the first video picture are I slices, then the slice_type syntax element for all slices associated with the picture header is not present in the bitstream.
7. The method according to claim 5, wherein when the slice_type syntax element is not present in the bitstream, the slice_type syntax element is presumed to have a value that points to an I slice.
8. The method according to claim 1, wherein the first image picture has one or more tiles, the maximum tile width of the one or more tiles is defined as the maximum luma tile width in a unit of coding tree blocks, and the maximum tile height of the one or more tiles is defined as the maximum luma tile height in a unit of coding tree blocks.
9. The method according to claim 1, wherein the first video picture has one or more slices, and the maximum slice height of the one or more slices is defined by units of a coding tree block.
10. The method according to claim 1, wherein the conversion includes decoding the video from the bitstream.
11. The method according to claim 1, wherein the conversion includes encoding the video into the bitstream.
12. A device for processing video data having a processor and non-temporary memory having instructions, wherein the instructions, upon execution by the processor, are sent to the processor, For conversion between a first video picture of a video having one or more video pictures and the bitstream of the video, the value of a first syntax element included in the picture header for the first video picture in the bitstream is determined, the value of the first syntax element indicating that all slices included in the first video picture are I slices, Based on the above decision, the conversion is performed. In response to the value of the first syntax element indicating that all slices contained in the first video picture are I slices, one or more syntax elements are omitted from the picture header for the first video picture in the bitstream. The one or more syntax elements have a second syntax element that defines the use of a first prediction mode for the first video picture, In the first prediction mode, the signaled motion vector is refined based on at least one motion vector having an offset from the signaled motion vector. Device.
13. A non-temporary computer-readable storage medium storing instructions, wherein the instructions are transmitted to a processor. For conversion between a first video picture of a video having one or more video pictures and the bitstream of the video, the value of a first syntax element included in the picture header for the first video picture in the bitstream is determined, the value of the first syntax element indicating that all slices included in the first video picture are I slices, Based on the above decision, the conversion is performed. In response to the value of the first syntax element indicating that all slices contained in the first video picture are I slices, one or more syntax elements are omitted from the picture header for the first video picture in the bitstream. The one or more syntax elements have a second syntax element that defines the use of a first prediction mode for the first video picture, In the first prediction mode, the signaled motion vector is refined based on at least one motion vector having an offset from the signaled motion vector. Computer-readable storage medium.
14. A method for storing a video bitstream, A step of determining the value of a first syntax element to be included in the picture header for a first video picture in a bitstream, for a first video picture having one or more video pictures, wherein the value of the first syntax element indicates that all slices included in the first video picture are I slices. A step of generating the bitstream based on the above decision, The steps include storing the bitstream in a non-temporary computer-readable recording medium, It has, In response to the value of the first syntax element indicating that all slices contained in the first video picture are I slices, one or more syntax elements are omitted from the picture header for the first video picture in the bitstream. The one or more syntax elements have a second syntax element that defines the use of a first prediction mode for the first video picture, In the first prediction mode, the signaled motion vector is refined based on at least one motion vector having an offset from the signaled motion vector. method.
