Coding of a picture including slices and tiles
Patent Information
- Application Number
- KR1020227026964
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-03-31
- Filing Date
- 2021-02-22
- Publication Date
- 2026-09-18
- Estimated Expiration
- 2041-02-22
Smart Images

Figure 112022081389142-PCT00107_ABST
Abstract
Description
Technology Field
[0001] This patent document relates to image and video coding and decoding.
[0002] This application is based on International Patent Application No. PCT / CN2021 / 077220 filed on February 22, 2021, which claims priority and benefit of International Patent Application No. PCT / CN2020 / 076158 filed on February 21, 2020 and International Patent Application No. PCT / CN2020 / 082283 filed on March 31, 2020. All of the aforementioned patent applications are incorporated herein by reference in their entirety. Background Technology
[0003] Digital video consumes the most bandwidth on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the demand for bandwidth for digital video usage is expected to continue rising. means of solving the problem
[0004] This document discloses a technique that can be used by a video encoder and a decoder to process a coded representation of a video using control information useful for decoding the coded representation.
[0005] In one exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture and a bitstream of a video, comprising one or more tiles and one or more rectangular slices, according to a rule. The rule specifies that, in order to iteratively determine information about one or more rectangular slices, a variable representing a tile index is updated only for slices having an index smaller than the number of slices in the video picture minus 1.
[0006] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture containing one or more sub-pictures and a bitstream of the video. The conversion follows a rule that specifies that a syntax element of a sequence parameter set representing the number of sub-pictures of the video picture is omitted when the maximum picture width and the maximum picture height are less than or equal to the dimension of a coding tree block.
[0007] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture comprising one or more tiles and a bitstream of the video. The conversion follows a rule specifying that if the width of the video picture is less than or equal to the dimension of a coding tree block, a syntax element indicating the number of explicitly provided tile column widths is omitted from the bitstream.
[0008] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture comprising one or more tiles and a bitstream of the video. The conversion follows a rule specifying that if the height of the video picture is less than or equal to the dimension of a coding tree block, a syntax element indicating the number of explicitly provided tile row heights is omitted from the bitstream.
[0009] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video. The conversion follows a rule that specifies that one or more syntax elements representing the column widths of one or more tiles are omitted from the bitstream when the number of explicitly provided tile column widths is equal to the picture width of a unit of a coding tree block.
[0010] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video. The conversion follows a rule that specifies that one or more syntax elements representing the row heights of one or more tiles are omitted from the bitstream when the number of explicitly provided tile row heights is equal to the picture height of a unit of a coding tree block.
[0011] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture comprising one or more slices and a bitstream of the video. The conversion follows a rule that specifies that slice partitioning information is included in the bitstream.
[0012] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video tile comprising one or more rectangular slices according to a rule and a bitstream of video. The rule specifies that a uniform slice height is determined based on a first syntax element specifying the height of a rectangular slice of a video tile of a unit in a row of a coding tree unit and a second syntax element specifying the number of explicitly provided slice heights of the video tile.
[0013] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video according to a rule. The rule specifies that a syntax element is greater than the dimension of a uniform tile column or row. A syntax element represents the dimension of a unit of a coding tree block, excluding the total dimension of the number of explicitly provided tile column widths or row heights.
[0014] In another exemplary aspect, a video processing method is disclosed. The method includes the step of performing a conversion between a video tile containing one or more slices according to a rule and a bitstream of video. The rule specifies that a syntax element is greater than or equal to the height of a uniform slice. A syntax element represents the height of a unit of a coding tree block excluding the total height of a plurality of explicitly provided slice heights.
[0015] In another exemplary aspect, a video processing method is disclosed. This method includes the step of performing a conversion between a video and a bitstream of the video according to a rule. The rule specifies that a syntax element is used in the conversion to indicate the maximum number of affine merging candidates allowed in a subblock-based merging candidate list.
[0016] In another exemplary aspect, a video processing method is disclosed. The method comprises the step of performing a conversion between videos comprising one or more video pictures, wherein each video picture comprises one or more slices and one or more subpictures comprising a coded representation of the video, and the coded representation follows a format rule; the format rule specifies that when a rectangular slice mode is enabled for the video picture, a picture-level slice index for each slice of each subpicture of the video picture is derived from the coded representation without explicit signaling; and the format rule specifies that the number of coding tree units of each slice can be derived from the picture-level slice index.
[0017] In another exemplary aspect, another video processing method is disclosed. The method comprises the step of performing a conversion between videos comprising one or more video pictures, wherein each video picture comprises one or more slices and one or more subpictures comprising a coded representation of the video, and the coded representation follows a format rule; the format rule specifies that a subpicture-level slice index can be derived based on information of the coded representation without signaling a subpicture-level slice index of the coded representation.
[0018] In another exemplary aspect, another video processing method is disclosed. The method comprises the step of performing a conversion between videos comprising one or more video pictures, wherein each video picture comprises one or more subpictures and / or one or more tiles and coded representations of the video, and the coded representations follow format rules; and the conversion follows constraint rules.
[0019] In another exemplary aspect, another video processing method is disclosed. The method comprises the step of performing a conversion between videos comprising one or more video pictures, wherein each video picture comprises one or more tiles and / or one or more slices; the coded representation follows a format rule; and the format rule specifies that a field at the video picture level conveys information regarding the partitioning of slices and / or tiles in the video picture.
[0020] In another exemplary aspect, another video processing method is disclosed. The method comprises the step of performing a conversion between a video containing one or more pictures and a coded representation of the video, wherein the conversion follows a partitioning rule in which the minimum number of slices into which the video picture is partitioned is a function of whether rectangular partitioning is used to partition the video picture.
[0021] In another exemplary aspect, a different video processing method is disclosed. The method comprises the step of performing a conversion between a video slice of a video region of a video and a coded representation of the video; the coded representation follows a phonat rule; a format rule specifies that the coded representation signals the video slice based on the top-left position of the video slice, and the format rule specifies that the coded representation signals the height and / or width of the video slice in partitioning information signaled at the video unit level.
[0022] In another exemplary aspect, another video processing method is disclosed. The method comprises the step of performing a conversion between a video containing a video picture and a coded representation of the video; the coded representation follows a phonat rule; and the format rule specifies to omit signaling the difference between the tile index of the first tile of a rectangular slice and the tile index of the first tile of the next rectangular slice.
[0023] In another exemplary aspect, a different video processing method is disclosed. The method includes the step of performing a conversion between a video and a coded representation of the video, wherein the coded representation follows a phonat rule and a format rule controls the signaling of information used to derive the number of tile columns or rows in the video picture, based on the relationship between the width of the video picture and the size of the coding tree unit.
[0024] In another exemplary aspect, a different video processing method is disclosed. The method comprises the step of performing a conversion between a video comprising one or more video pictures and a coded representation of the video, wherein the coded representation follows a phonat rule and a format rule specifies that tile layout information is included in the coded representation for the video picture, which includes uniformly spaced tiles and non-uniformly spaced tiles.
[0025] In another exemplary aspect, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the method described above.
[0026] In another exemplary aspect, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the method described above.
[0027] In another aspect of the embodiment, a computer-readable medium storing code is disclosed. The code implements one of the methods described herein in the form of processor-executable code.
[0028] These and other functions are described throughout this document. Brief explanation of the drawing
[0029] Figure 1 illustrates an example of a picture divided into 12 tiles and 3 raster scan slices. Figure 2 illustrates an example of a rectangular slice partition of a picture divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular slices. Figure 3 illustrates an example of a picture partitioned into four tiles (two tile columns and two tile rows) and four rectangular slices. Figure 4 illustrates a picture partitioned into 15 tiles, 24 slices, and 24 subpictures. Figure 5 shows the nominal vertical and horizontal positions of the 4:2:2 luminar and chroma samples of the picture of 4. Figure 6 illustrates an example of picture partitioning. Blue lines indicate the boundaries of tiles; green lines indicate the boundaries of slices; and red dashed lines indicate the boundaries of subpictures. Picture-level indices, decoding order indices, subpicture-level indices of four slices, and indices of subpictures and tiles are shown in the drawing. Figure 7 is a block diagram of an exemplary video processing system. Figure 8 is a block diagram of a video processing device. Figure 9 is a flowchart for one example of a video processing method. FIG. 10 is a block diagram illustrating a video coding system according to some embodiments of the present disclosure. FIG. 11 is a block diagram illustrating an encoder according to some embodiment of the present disclosure. FIG. 12 is a block diagram illustrating a decoder according to some embodiments of the present disclosure. Figure 13 is a flowchart representation of a video processing method according to the present technology. Figure 14 is a flowchart representation of another method for video processing according to the present technology. Figure 15 is a flowchart representation of another method for video processing according to the present technology. Figure 16 is a flowchart representation of another method for video processing according to the present technology. Figure 17 is a flowchart representation of another method for video processing according to the present technology. Figure 18 is a flowchart representation of another method for video processing according to the present technology. Figure 19 is a flowchart representation of another method of video processing according to the present technology. Figure 20 is a flowchart representation of another method of video processing according to the present technology. Figure 21 is a flowchart representation of another method for video processing according to the present technology. FIG. 22 is a flowchart representation of another method for video processing according to the present technology. Figure 23 is a flowchart representation of another method for video processing according to the present technology. Specific details for implementing the invention
[0030] Section titles are used in this document for ease of understanding and do not limit the applicability of the technologies and embodiments disclosed in each section to that section alone. Additionally, H.266 terms are used in some descriptions solely for ease of understanding and are not intended to limit the scope of the disclosed technology. As such, the technology described herein may be applied to other video codec protocols and designs.
[0031] 1. Overview
[0032] This document relates to video coding technologies. In particular, it concerns the signaling of subpictures, tiles, and slices. The idea can be applied individually or in various combinations to any video coding standard or non-standard video codec that supports multi-layer video coding, for example, Versatile Video Coding (VVC) currently under development.
[0033] 2. Abbreviation
[0034] APS Adaptation Parameter Set
[0035] AU Access Unit
[0036] AUD Access Unit Delimiter
[0037] AVC Advanced Video Coding
[0038] CLVS Coded Layer Video Sequence
[0039] CPB Coded Picture Buffer()
[0040] CRA Clean Random Access
[0041] CTU Coding Tree Unit
[0042] CVS Coded Video Sequence
[0043] DPB Decoded Picture Buffer
[0044] DPS Decoding Parameter Set
[0045] EOB End Of Bitstream
[0046] End of Sequence
[0047] GDR Gradual Decoding Refresh
[0048] HEVC High Efficiency Video Coding
[0049] HRD Virtual Reference Decoder (Hypothetical Reference Decoder)
[0050] IDR Instantaneous Decoding Refresh
[0051] JEM Joint Exploration Model
[0052] MCTS Motion-Constrained Tile Set
[0053] NAL Network Abstraction Layer
[0054] OLS Output Layer Set
[0055] PH Picture Header
[0056] PPS Picture Parameter Set
[0057] PTL Profile, Tier, and Level
[0058] PU Picture Unit
[0059] RBSP Raw Byte Sequence Payload
[0060] SEI Supplemental Enhancement Information
[0061] SPS Sequence Parameter Set
[0062] SVC Scalable Video Coding
[0063] VCL Video Coding Layer
[0064] VPS Video Parameter Set
[0065] VTM VVC Test Model
[0066] VUI Video Usability Information
[0067] VVC Versatile Video Coding
[0068] 3. Introduction to Video Coding
[0069] Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, while ISO / IEC produced MPEG-1 and MPEG-4 Visual; the two organizations jointly produced the H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC standards. Since H.262, video coding standards have been based on a hybrid video coding structure utilizing temporal prediction and transform coding. To research future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, many new methods have been adopted by the JVET and applied to reference picture software named the Joint Exploration Model (JEM). JVET meetings are held concurrently once every quarter, and the new coding standard aims for a 50% reduction in bitrate compared to HEVC. The new video coding standard was officially named Versatile Video Coding (VVC) at the JVET meeting in April 2018, at which time the first version of the VVC Test Model (VTM) was released. Due to continuous efforts contributing to VVC standardization, new coding technologies are adopted into the VVC standard at every JVET meeting. The VVC working draft and the VVC Test Model (VTM) are updated after every meeting. The VVC project is currently aiming for Technical Finalization (FDIS) at the July 2020 meeting.
[0070] 3.1. HEVC Picture Partitioning Concept (Picture partitioning scheme)
[0071] HEVC includes four different picture partitioning concepts: regular slice, dependent slice, tile, and Wavefront Parallel Processing (WPP), which can be applied to Maximum Transfer Unit (MTU) size matching, parallel processing, and end-to-end delay reduction.
[0072] General slices are similar to H.264 / AVC. Each general slice is encapsulated in its own NAL unit, and in-picture prediction (intra-sample prediction, motion information prediction, coding mode prediction) and entropy coding dependencies across slice boundaries are disabled. Therefore, a general slice can be reconstructed independently from other general slices within the same picture (although interdependencies may still exist due to loop filtering).
[0073] Plain slices are the only tool available for parallelization that can be used in nearly the same format as H.264 / AVC. Plain slice-based parallelization does not require much inter-processor or inter-core communication (except for inter-processor or inter-core data sharing for motion compensation when decoding predictive-coded pictures, which is generally much heavier than inter-processor or inter-core data sharing due to in-picture prediction). However, for the same reason, using plain slices can result in substantial coding overhead due to the bit cost of the slice header and the lack of prediction across slice boundaries. Additionally, plain slices (in contrast to the other tools mentioned below) are also used as a core mechanism for bitstream partitioning to meet MTU size requirements, due to the picture-in-picture independence of plain slices and the fact that each plain slice is encapsulated in its own NAL unit. In many cases, the goals of parallelization and MTU size matching conflict with the requirements for the picture slice layout. The realization of this situation led to the development of the parallelization tools mentioned below.
[0074] Dependent slices have short slice headers and can partition bitstreams at treeblock boundaries without interrupting in-picture prediction. By default, dependent slices fragment the normal slice into multiple NAL units to reduce end-to-end delay by ensuring that parts of the normal slice are transmitted before the encoding of the entire normal slice is complete.
[0075] In WPP, a picture is partitioned into a single row of Coding Tree Blocks (CTBs). Entropy decoding and prediction can utilize data from CTBs in different partitions. Parallel processing is enabled through the parallel decoding of CTB rows, where the start of decoding for a CTB row is delayed by two CTBs, allowing data related to CTBs above and to the right of the subject CTB to be available before the subject CTB is decoded. Using this staggered start (appearing as a wavefront when graphically displayed), parallelization is possible with as many processors / cores as the number of CTB rows contained in the picture. Since in-picture prediction between neighboring tree block rows within a picture is allowed, the inter-processor / inter-core communication required to enable in-picture prediction can be substantial. Because WPP partitioning does not generate additional NAL units compared to when it is not applied, WPP is not a tool for MTU size matching. However, if MTU size matching is required, a standard slice can be used with WPP along with specific coding overhead.
[0076] Tile defines horizontal and vertical boundaries that partition a picture into tile columns and rows. Tile columns extend from the top to the bottom of the picture. Similarly, tile rows extend from the left to the right of the picture. The number of tiles in a picture can be simply derived by multiplying the number of tile columns by the number of tile rows.
[0077] The scan order of the CTB is changed locally within the tile (to the tile's CTB raster scan order) before decoding the top-left CTB of the next tile. Similar to a regular slice, tiles break not only entropy decoding dependency but also in-picture prediction dependency. However, they do not need to be contained in individual NAL units (identical to WPP in this respect), and therefore tiles cannot be used for MTU size matching. Each tile can be processed by a single processor / core, and inter-processor / inter-core communication required for in-picture prediction between processing units decoding neighboring tiles is limited to passing a shared slice header when a slice spans more than one tile, and loop filtering is related to the sharing of reconstructed samples and metadata. If one or more tiles or WPP segments are included in a slice, the entry point byte offset for each tile or WPP segment other than the slice's first tile or WPP segment is signaled in the slice header.
[0078] For simplicity, restrictions on the application of four different picture partitioning concepts have been specified in HEVC. A given coded video sequence cannot contain both tiles and wavefronts for most profiles specified in HEVC. For each slice and tile, one or both of the following conditions must be met: 1) all coded tree blocks of a slice belong to the same tile; 2) all coded tree blocks of a tile belong to the same slice. Finally, a wavefront segment must contain exactly one CTB row, and when WPP is in use, if a slice starts within a CTB row, it must end within the same CTB row.
[0079] Recent modifications to HEVC are described in the JCT-VC output document JCTVC-AC1005, and in "Additional Supplemental Enhancement Information" (Draft 4) by J. Boyce, A. Ramasubramonian, R. Skupin, G. J. Sullivan, A. Tourapis, and Y. -K. Wang (Editor), dated October 24, 2017, which is publicly available at: http: / / phenix.int-evry.fr / jct / doc_end_user / documents / 29_Macau / wg11 / JCTVC-AC1005-v2.zip. This amendment is included, and HEVC specifies three additional supplemental enhancement information (SEI) messages related to MCTS: a temporal MCTS SEI message, an MCTS extract information set SEI message, and an MCTS extract information nested SEI message.
[0080] The temporal MCTS SEI message indicates the presence of an MCTS in the bitstream and signals the MCTS. For each MCTS, motion vectors are restricted to pointing to full sample positions within the MCTS and partial sample positions requiring only full sample positions within the MCTS for interpolation, and the use of motion vector candidates derived from blocks outside the MCTS for temporal motion vector prediction is not permitted. In this way, each MCTS can be decoded independently without the presence of tiles not included in the MCTS.
[0081] The MCTS extraction information sets SEI message provides additional information that can be used to generate a matching bitstream for an MCTS set during MCTS sub-bitstream extraction (specified as part of the semantic of the SEI message). The information consists of multiple extraction information sets, each defining multiple MCTS sets and containing RBSP bytes of alternate VPS, SPS, and PPS to be used during the MCTS sub-bitstream extraction process. When extracting a sub-bitstream according to the MCTS sub-bitstream extraction process, the parameter sets (VPS, SPS, PPS) must be rewritten or replaced, and the slice header must be slightly updated because one or all of the slice address-related syntax elements (including first_slice_segment_in_pic_flag and slice_segment_address) generally need to have different values.
[0082] 3.2. Picture Partitioning in VVC
[0083] In VVC, a picture is divided into one or more tile rows and one or more tile columns. A tile is a sequence of CTUs covering a rectangular area of a picture. The CTUs of a tile are scanned in raster scan order within that tile.
[0084] A slice consists of an integer of a complete tile or an integer of a consecutive row of complete CTUs within a tile of a picture.
[0085] Two slice modes are supported: raster scan slice mode and rectangular slice mode. In raster scan slice mode, a slice contains a sequence of complete tiles from a tile raster scan of a picture. In rectangular slice mode, a slice contains multiple complete tiles that collectively form a rectangular area of a picture, or multiple consecutive rows of complete CTUs of a single tile that collectively form a rectangular area of a picture. The tiles within a rectangular slice are scanned in tile raster scan order within the rectangular area corresponding to that slice.
[0086] A subpicture includes more than one slice that collectively covers a rectangular area of the picture.
[0087] Figure 1 illustrates an example of a picture divided into 12 tiles and 3 raster scan slices.
[0088] Figure 2 illustrates an example of a rectangular slice partition of a picture divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular slices.
[0089] Figure 3 illustrates an example of a picture partitioned into four tiles (two tile columns and two tile rows) and four rectangular slices.
[0090] FIG. 4 illustrates an example of subpicture partitioning of a picture, wherein the picture is partitioned into 18 tiles, 12 of which on the left each cover one 4 x 4 CTU slice and 6 of which on the right each cover two vertically stacked 2 x 2 CTU slices, resulting in 24 slices and 24 subpictures of various dimensions (each slice is a subpicture).
[0091] 3.3. Signaling of SPS / PPS / Picture / Slice Headers in VVC
[0092] 7.3.2.3 Sequence parameter set RBSP syntax
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101] 7.3.2.4 Picture parameter set RBSP syntax
[0102]
[0103]
[0104]
[0105]
[0106] 7.3.2.7 Picture Header Structure Syntax
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113] 7.3.7.1 General Slice Header Syntax
[0114]
[0115]
[0116]
[0117]
[0118] 3.4. Examples of specifications for tiles, slices, and subpictures
[0119] 3 Definitions
[0120] Picture-level slice index: Slice index for the picture's slice list in the order signaled by the PPS when rect_slice_flag is equal to 1.
[0121] Subpicture-level slice index: Slice index for the list of slices in the subpicture in the order signaled by the PPS when rect_slice_flag is equal to 1.
[0122] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0123] The variable NumTileColumns, specifying the number of tile columns, and the list colWidth[i] for the range i, which includes 0 to NumTileColumn-1 and specifies the width of the i-th tile column in CTB units, are derived as follows:
[0124]
[0125]
[0126] The variable NumTileRows, specifying the number of tile rows, and the list RowHeight[j], specifying the height of the j-th tile row in CTB units for the range j from 0 to NumTileRows-1, are derived as follows:
[0127]
[0128] The variable NumTilesInPic is set to be equal to NumTileColumns * NumTileRows.
[0129] A list tileColBd[i] for a range i including 0 to NumTileColumns, specifying the location of the i-th tile column boundary in CTB units, is derived as follows:
[0130] (tileColBd[0] = 0, i = 0, i < NumTileColumns, i++)
[0131] tileColBd[i+1] = tileColBd[i] + colWidth[i] (25)
[0132] Note 1 - The size of the array tileColBd[] is one greater than the actual number of tile columns in the derivation of CtbToTileColBd[].
[0133] A list tileRowBd[j] for a range j including 0 to NumTileRows, specifying the position of the j-th tile row boundary in CTB units, is derived as follows:
[0134] For (tileRowBd [0] = 0, j = 0; j < NumTileRows; j++)
[0135] tileRowBd[j + 1] = tileRowBd[j] + RowHeight[j] (26)
[0136] Note 2 - In the above derivation, the size of the array tileRowBd[] is one greater than the actual number of tile rows in the CtbToTileRowBd[] derivation.
[0137] The list CtbToTileColBd [ctbAddrX] for the range ctbAddrX, which includes 0 to PicWidthInCtbsY and specifies the conversion from horizontal CTB addresses to left tile column boundaries as CTB units, is derived as follows:
[0138]
[0139] Note 3 - In the derivation above, the size of the array CtbToTileColBd[] is one greater than the actual picture width of the CTB in the derivation slice_data() signaling.
[0140] The list CtbToTileRowBd [ctbAddrY] for the range ctbAddrY, which includes 0 to PicHeightInCtbsY and specifies the transition from the vertical CTB address to the top tile column boundary as a CTB unit, is derived as follows:
[0141]
[0142] Note 4 - In the above derivation, the size of the array CtbToTileRowBd[] is one greater than the actual picture height of the CTB in the slice_data() signaling.
[0143] For a rectangular slice, the list NumCtusInSlice[i] for a range i including 0 to num_slices_in_pic_minus1 specifying the number of CTUs of the i-th slice, the list SliceTopLeftTileIdx[i] for a range i including 0 to num_slices_in_pic_minus1 specifying the index of the top-left tile of the slice, the matrix CtbAddrInSlice[i][j] for a range i including 0 to num_slices_in_pic_minus1, and the range j including 0 to NumCtusInSlice[i]-1 specifying the picture raster scan address of the j-th CTB within the i-th slice are derived as follows:
[0144]
[0145]
[0146] The AddCtbsToSlice function(sliceIdx, startX, stopX, startY, stopY) is specified as follows:
[0147]
[0148] It is a bitstream conformance requirement that the value of NumCtusInSlice[i] for i in the range from 0 to num_slices_in_pic_minus1 must be greater than 0. Additionally, it is a bitstream conformance requirement that the matrix CtbAddrInSlice[i][j] for i in the range including 0 to num_slices_in_pic_minus1, and the range j in the range including 0 to NumCtusInSlice[i]-1, contain all CTB addresses in the range from 0 to PicSizeInCtbsY-1 once, that is, exactly once.
[0149] The list CtbToSubpicIdx [ctbAddrRs] for the range ctbAddrR, which includes 0 to PicSizeInCtbsY - 1 and specifies the conversion from the CTB address of a picture raster scan to a subpicture index, is derived as follows:
[0150]
[0151] The list NumSlicesInSubpic[i], which specifies the number of rectangular slices in the i-th subpicture, is derived as follows:
[0152]
[0153]
[0154] 7.3.4.3 Picture Parameter Set RBSP Semantics
[0155] The subpic_id_mapping_in_pps_flag identical to 1 specifies that subpic ID mapping is signaled in PPS.
[0156] A subpic_id_mapping_in_pps_flag equal to 0 specifies that the subpic ID mapping is not signaled in the PPS. If subpic_id_mapping_explicitly_signalled_flag is 0 or subpic_id_mapping_in_sps_flag is equal to 1, the value of subpic_id_mapping_in_pps_flag must be equal to 0. Otherwise (subpic_id_mapping_explicitly_signalled_flag is equal to 1 and subpic_id_mapping_in_sps_flag is equal to 0), the value of subpic_id_mapping_in_pps_flag must be equal to 1.
[0157] pps_num_subpics_minus1 must be the same as sps_num_subpics_minus1.
[0158] pps_subpic_id_len_minus1 must be the same as sps_subpic_id_len_minus1.
[0159] pps_subpic_id[i] specifies the subpicture ID of the i-th subpicture. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1 + 1 bit.
[0160] The variable SubpicIdVal[i] is derived as follows for each value of i in the range from 0 to sps_num_subpics_minus1:
[0161]
[0162] All of the following constraints are requirements for bitstream conformity:
[0163] - For two different values of i and j in the range from 0 to sps_num_subpics_minus1, SubpicIdVal[i] is not equal to SubpicIdVal[j].
[0164] - When the current picture is not the first picture of the CLVS, for each value of i in the range including 0 to sps_num_subpics_minus1, if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous picture in the same layer in decoding order, then the nal_unit_type for all coded slice NAL units of the subpicture of the current picture with subpicture index i must be equal to a specific value in the range including IDR_W_RADL to CRA_NUT.
[0165] The no_pic_partition_flag, identical to 1, specifies that picture partitioning is not applied to each picture referencing the PPS.
[0166] no_pic_partition_flag equal to 0 specifies that each picture referencing a PPS can be partitioned into one or more tiles or slices.
[0167] It is a bitstream conformance requirement that the value of no_pic_partition_flag must be the same for all PPS referenced by coded pictures within CLVS.
[0168] It is a bitstream conformance requirement that the value of no_pic_partition_flag must not be equal to 1 when the value of sps_num_subpics_minus1 + 1 is greater than 1.
[0169] pps_log2_ctu_size_minus5 plus 5 specifies the luminal coding tree block size for each CTU.
[0170] pps_log2_ctu_size_minus5 must be the same as sps_log2_ctu_size_minus5.
[0171] num_exp_tile_columns_minus1 plus 1 specifies the number of explicitly provided tile column widths. The value of num_exp_tile_columns_minus1 must be in the range from 0 to PicWidthInCtbsY - 1. When no_pic_partition_flag is equal to 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.
[0172] num_exp_tile_rows_minus1 plus 1 specifies the number of explicitly provided tile row heights. The value of num_exp_tile_rows_minus1 must be in the range from 0 to PicHeightInCtbsY - 1. When no_pic_partition_flag is equal to 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.
[0173] tile_column_width_minus1 [i] plus 1 specifies the width of the i-th tile column in CTB units for i in the range including 0 to num_exp_tile_columns_minus1 - 1.
[0174] tile_column_width_minus1 [num_exp_tile_columns_minus1] is used to derive the width of a tile column whose index is num_exp_tile_columns_minus1 or greater, as specified in Section 6.5.1. The value of tile_column_width_minus1[i] must be in the range from 0 to PicWidthInCtbsY - 1. If it does not exist, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY - 1.
[0175] tile_row_height_minus1 [i] plus 1 specifies the height of the i-th tile row in CTB units for i in the range including 0 to num_exp_tile_rows_minus1 - 1. tile_row_height_minus1 [num_exp_tile_rows_minus1] is used to derive the height of a tile row whose index is greater than or equal to num_exp_tile_rows_minus1, as specified in Section 6.5.1. The value of tile_row_height_minus1[i] must be in the range including 0 to PicHeightInCtbsY - 1. If it does not exist, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY - 1.
[0176] rect_slice_flag, equal to 0, specifies that the tiles within each slice are in raster scan order and slice information is not signaled in the PPS. rect_slice_flag, equal to 1, specifies that the tiles within each slice cover a rectangular area of the picture and slice information is signaled in the PPS. If not present, rect_slice_flag is inferred to be equal to 1. When subpic_info_present_flag is equal to 1, the value of rect_slice_flag must be equal to 1.
[0177] The single_slice_per_subpic_flag, identical to 1, specifies that each subpicture consists of one rectangular slice.
[0178] single_slice_per_subpic_flag equal to 0 specifies that each subpicture may consist of one or more rectangular slices. When single_slice_per_subpic_flag equals 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[0179] num_slices_in_pic_minus1 plus 1 specifies the number of rectangular slices for each picture referencing PPS.
[0180] The value of num_slices_in_pic_minus1 must be in the range from 0 to MaxSlicesPerPicture - 1, where MaxSlicesPerPicture is specified in Appendix A. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.
[0181] A tile_idx_delta_present_flag equal to 0 specifies that the tile_idx_delta value does not exist in the PPS and that all rectangular slices of the picture referencing the PPS are assigned in raster order according to the process defined in Section 6.5.1. A tile_idx_delta_present_flag equal to 1 specifies that the tile_idx_delta value may exist in the PPS and that all rectangular slices of the picture referencing the PPS are assigned in the order indicated by the value of tile_idx_delta. When it does not exist, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0182] slice_width_in_tiles_minus1 [i] plus 1 specifies the width of the i-th rectangular slice in tile column units. The value of slice_width_in_tiles_minus1 [i] must be in the range from 0 to NumTileColumns - 1.
[0183] If slice_width_in_tiles_minus1[i] is not present, the following applies:
[0184] - If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0185] - Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred as specified in Section 6.5.1.
[0186] slice_height_in_tiles_minus1 [i] plus 1 specifies the height of the i-th rectangular slice in the tile row unit. The value of slice_height_in_tiles_minus1 [i] must be in the range from 0 to NumTileRows - 1.
[0187] If slice_height_in_tiles_minus1 [i] is not present, the following applies:
[0188] - If NumTileRows is 1, or tile_idx_delta_present_flag is 0 and tileIdx %NumTileColumns is greater than 0), the value of slice_height_in_tiles_minus1[i] is inferred to be equal to 0.
[0189] - Otherwise (NumTileRows is not 1 and tile_idx_delta_present_flag is 1 or tileIdx %NumTileColumns is 0), when tile_idx_delta_present_flag is 1 or tileIdx %NumTileColumns is equal to the value of slice_hemin_in_hemin_us, the value of slice_height_in_tiles_minus1[i] is inferred to be equal to slice_height_in_tiles_minus1[i -1].
[0190] num_exp_slices_in_tile[i] specifies the number of explicitly provided slice heights in the current tile containing two or more rectangular slices. The value of num_exp_slices_in_tile[i] must be in the range from 0 to RowHeight[tileY] - 1, where tileY is the tile row index containing the i-th slice. If it does not exist, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0. When num_exp_slices_in_tile[i] is equal to 0, the value of the variable NumSlicesInTile[i] is inferred to be equal to 1.
[0191] exp_slice_height_in_ctus_minus1 [j] plus 1 specifies the height of the j-th rectangular slice of the current tile in CTU row units. The value of exp_slice_height_in_ctus_minus1 [j] must be in the range from 0 to RowHeight [tileY] - 1, where tileY is the tile row index of the current tile.
[0192] If num_exp_slices_in_tile[i] is greater than 0, SliceHeightInCtusMinus1[i + k] for the variable NumSlicesInTile[i] and k in the range from 0 to NumSlicesInTile[i]-1 is derived as follows:
[0193]
[0194]
[0195] tile_idx_delta[i] specifies the difference between the tile index of the first tile in the i-th rectangular slice and the tile index of the first tile in the (i + 1)-th rectangular slice. The value of tile_idx_delta[i] must be in the range from -NumTilesInPic + 1 to NumTilesInPic - 1. If it does not exist, the value of tile_idx_delta[i] is inferred to be equal to 0. If it exists, the value of tile_idx_delta[i] must not be equal to 0.
[0196] . . .
[0197] 7.4.2.4.5 Sequence of VCL NAL Units and Association with Coded Pictures
[0198] The order of VCL NAL units within a coded picture is limited as follows:
[0199] - For any two coded slice NAL units A and B of a coded picture, set subpicIdxA and subpicIdxB as their subpicture level index values and sliceAddrA and sliceddrB as their slice_address values.
[0200] - When one of the following conditions is true, coded slice NAL unit A must precede coded slice NAL unit B:
[0201] - subpicIdxA is smaller than subpicIdxB.
[0202] - subpicIdxA is equal to subpicIdxB, and sliceAddrA is smaller than sliceAddrB.
[0203] 7.4.8.1 General Slice Header Semantic
[0204] The variable CuQpDeltaVal, which specifies the difference between the luminance quantization parameter and its prediction for the coding unit containing cu_qp_delta_abs, is set to equal 0. Qp' for the coding unit containing cu_chroma_qp_offset_flag Cb , Qp' Cr and Qp' CbCr A variable CuQpOffset that specifies the value to be used when determining each value of the quantization parameter. Cb , CuQpOffset Cr and CuQpOffset CbCr All are set to be equal to 0.
[0205] The picture_header_in_slice_header_flag identical to 1 specifies that the PH syntax structure exists in the slice header.
[0206] picture_header_in_slice_header_flag equal to 0 specifies that the PH syntax structure does not exist in the slice header.
[0207] The requirement that the value of picture_header_in_slice_header_flag be the same across all coded slices of CLVS is a bitstream conformance requirement.
[0208] When picture_header_in_slice_header_flag is equal to 1 for the coded slice, it is a bitstream conformance requirement that there are no VCL NAL units in CLVS with the same nal_unit_type as PH_NUT.
[0209] When picture_header_in_slice_header_flag is equal to 0, all coded slices of the current picture must have picture_header_in_slice_header_flag equal to 0, and the current PU must have a PH NAL unit.
[0210] slice_subpic_id specifies the subpicture ID of the subpicture containing the slice. If slice_subpic_id exists, the value of the variable CurrSubpicIdx is induced so that SubpicIdVal[CurrSubpicIdx] is equal to slice_subpic_id. Otherwise (slice_subpic_id does not exist), CurrSubpicIdx is induced to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1 + 1 bit.
[0211] slice_address specifies the slice address of the slice. If it does not exist, the value of slice_address is inferred to be 0. When rect_slice_flag is 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be 0.
[0212] If rect_slice_flag is 0, the following applies:
[0213] - The slice address is the raster scan tile index.
[0214] - The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0215] - The value of slice_address must be in the range from 0 to NumTilesInPic -1.
[0216] Otherwise (rect_slice_flag is 1), the following applies:
[0217] - The slice address is the slice index at the subpicture level of the slice.
[0218] - The length of slice_address is Ceil(Log2(NumSlicesInSubpic [CurrSubpicIdx])) bits.
[0219] - The value of slice_address must be in the range from 0 to NumSlicesInSubpic [CurrSubpicIdx] - 1.
[0220] The following constraints apply to the requirements of bitstream conformity:
[0221] - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address must not be equal to the slice_address value of another coded slice NAL unit of the same coded picture.
[0222] - Otherwise, the pair of slice_subpic_id and slice_address values must not be identical to the pair of slice_subpic_id and slice_address values of other coded slice NAL units of the same coded picture.
[0223] - The shape of the picture slices must ensure that when each CTU is decoded, it has a full left boundary and a full top boundary composed of the picture boundary or the boundary of the previously decoded CTU(s).
[0224] sh_extra_bit [i] can be 1 or 0. Decoders conforming to this version of this specification must ignore the sh_extra_bit [i] value. This value does not affect decoder suitability for profiles specified in this version of the specification.
[0225] num_tiles_in_slice_minus1 + 1 specifies the number of tiles in the slice, if present. The value of num_tiles_in_slice_minus1 must be in the range from 0 to NumTilesInPic - 1.
[0226] The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i], which specifies the picture raster scan address of the i-th CTB within the slice and range i from 0 to NumCtusInCurrSlice-1, are derived as follows:
[0227]
[0228]
[0229] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows:
[0230]
[0231] 3.5. Color space and chroma subsampling
[0232] A color space, also known as a color model (or color system), is an abstract mathematical model that describes a range of colors as a line of numbers using typically three or four values or color components (e.g., RGB). Essentially, a color space is an elaboration of a coordinate system and a subspace.
[0233] For video compression, the most frequently used color spaces are YCbCr and RGB.
[0234] YCbCr, Y'CbCr, or Y Pb / Cb Pr / Cr, also written as YCBCR or Y'CBCR, is a family of color spaces used as part of the color image pipeline in video and digital picture systems. Y' is the luminance component, and CB and CR are the blue-difference and red-difference chroma components. Y' (including the prime) is distinguished from Y, which is the luminance; that is, light intensity is non-linearly encoded based on gamma-corrected RGB primary colors.
[0235] Chroma subsampling is an image encoding method that implements lower resolution for chroma information than for lumina information by utilizing the human visual system's lower sharpness regarding color differences compared to lumina.
[0236] 3.5.1. 4: 4: 4
[0237] Since each of the three Y'CbCr components has the same sampling rate, there is no chroma subsampling. This scheme is sometimes used in high-end film scanners and cinematic post-production.
[0238] 3.5.2. 4: 2: 2
[0239] The two chroma components are sampled at half the luminance sample rate: the vertical chroma resolution remains unchanged, while the horizontal chroma resolution is halved. This reduces the bandwidth of the uncompressed video signal by one-third with little to no visual difference. An example of the nominal vertical and horizontal positions of the 4:2:2 color format is depicted in Figure 5 of the VVC working draft.
[0240] 3.5.3. 4: 2: 0
[0241] In 4:2:0, horizontal sampling is doubled compared to 4:1:1; however, since the Cb and Cr channels are sampled only on each alternate line in this concept, the vertical resolution is halved. Consequently, the data rate remains the same. Cb and Cr are each subsampled by a factor of 2 in both horizontal and vertical directions. There are three variations of the 4:2:0 concept, each with different horizontal and vertical sites.
[0242] In MPEG-2, Cb and Cr are arranged horizontally. Cb and Cr are located between pixels in the vertical direction (located in the middle).
[0243] In JPEG / JFIF, H.261, and MPEG-1, Cb and Cr are positioned intersecting in the middle between alternate luminance samples.
[0244] In 4:2:0 DV, Cb and Cr are designated as joint sites in the horizontal direction. In the vertical direction, they are configured as joints on alternating lines.
[0245] Table 3-1. SubWidthC and SubHeightC values derived from chroma_format_idc and Separate_colour_plane_flag
[0246]
[0247] 4. Examples of technical problems solved by the disclosed embodiments
[0248] The existing design for signaling SPS / PPS / Picture headers / Slice headers in VVC has the following problems:
[0249] 1) When rect_slice_flag is equal to 1, the following applies depending on the current VVC text:
[0250] a. slice_address represents the subpicture level slice index of the slice.
[0251] b. The subpicture level slice index is defined as the slice index for the list of slices of the subpicture in the order in which they are signaled in the PPS.
[0252] c. The picture-level slice index is defined as the slice index for the picture slice list in the order in which it is signaled in the PPS.
[0253] d. For slices belonging to two different subpictures, the one associated with the smaller subpicture index goes earlier in the decoding order, and for any two slices belonging to the same subpicture, the one with the smaller subpicture level slice index goes earlier in the decoding order.
[0254] e. And the derivation of the variable NumCtusInCurrSlice, which specifies the number of CTUs of the current slice by mathematical formula 117 in the current VVC text, assumes that the order in which picture-level slice index values increase is the same as the decoding order of the slices.
[0255] However, if some slices are the result of splitting a single tile, some of the above aspects may be violated. As shown in Fig. 6, when a picture is partitioned into two tiles by vertical tile boundaries, and each of the two tiles is partitioned into two slices by the same horizontal boundary across the entire picture, the upper two slices are included in the first subpicture and the lower two slices are included in the second subpicture, and the lower two slices are included in the second subpicture. In this case, according to the current VVC text, the picture-level slice index values of the four slices in the slice raster scan order are 0, 2, 1, and 3, whereas the decoding order index values of the four slices in the slice raster are 0, 1, 2, and 3. Consequently, the derivation of NumCtusInCurrSlice is incorrect, the parsing of the slice data becomes problematic, the decoded sample values are incorrect, and the decoder may crash.
[0256] 2) There are two types of slice signaling methods. In rectangular mode, all slice partitioning information is signaled as PPS. In non-rectangular mode, some of the slice partitioning information is displayed in the slice header, so in this mode, the entire slice partitioning of the picture cannot be known before parsing all slices of the picture.
[0257] 3) In rectangular mode, slices can be randomly signaled by setting tile_idx_delta. A malicious bitstream can cause the decoder to collide with this mechanism.
[0258] 4) In some embodiments, when i is equal to num_slices_in_pic_minus1, the uninitialized tile_idx_delta[i].
[0259] 5) The MER (Merge Estimation Region) size can be as small as 4x4. However, if the signaled MER size is smaller than the minimum CU size, it is meaningless.
[0260] 6) Note that in the syntax table, the width of the 'num_exp_tile_columns_minus1'-th tile column is represented as tile_column_width_minus1 [num_exp_tile_columns_minus1]. However, in semantics, tile_column_width_minus1 [num_exp_tile_columns_minus1] is used to derive the width of tile columns whose index is num_exp_tile_columns_minus1 or greater, as specified in Section 6.5.1. That is, the width of the 'num_exp_tile_columns_minus1'-th tile column can be reset. It is similar to the height of the 'num_exp_tile_columns_minus1'-th tile row.
[0261] FIG. 6 illustrates an example of picture partitioning. Solid lines (602) indicate the boundaries of tiles; dashed lines (604) indicate the boundaries of slices; and dashed lines (606) indicate the boundaries of subpictures. Picture-level indices, decoding order indices, subpicture-level indices of four slices, and indices of subpictures and tiles are shown in the drawing.
[0262] 5. Exemplary embodiments and techniques
[0263] To resolve the above-mentioned problems, a method organized as follows is disclosed.
[0264] Inventions should be regarded as examples to illustrate general concepts and should not be interpreted in a narrow sense. Furthermore, these inventions may be applied individually or in any combination.
[0265] 1. For slices in rectangular slice mode (i.e., when rect_slice_flag is equal to 1), a picture-level slice index is derived for each slice of each subpicture, and the derived value is used to derive the number of CTUs for each slice.
[0266] 2. Subpicture level slice indices can be defined / derived in the following ways.
[0267] a. In one example, the subpicture level slice index is defined as "slice index for the list of slices of the subpicture in the decoding order when rect_slice_flag is equal to 1".
[0268] b. Alternatively, the subpicture level slice index is defined as the slice index for the list of slices of the subpicture when "rect_slice_flag is equal to 1" and is specified by the variable SubpicLevelSliceIdx[i] derived from Equation 32 (as in Example 1), where i is the picture level slice index of the slice.
[0269] c. In one example, a subpicture index of each slice having a specific value of the picture-level slice index is derived.
[0270] d. In one example, a subpicture-level slice index of each slice having a specific value of the picture-level slice index is derived.
[0271] e. In one example, when rect_slice_flag is equal to 1, the semantic of the slice address is specified as "the slice address is the subpicture-level slice index of the slice specified by the variable SubpicLevelSliceIdx[i] derived from Equation 32 (as in Example 1), where i is the picture-level slice index of the slice".
[0272] 3. The subpicture level slice index of the slice is assigned to the slice of the first subpicture containing the slice. The subpicture level slice index for each slice may be stored in an array indexed by the picture level slice index (e.g., SubpicLevelSliceIdx[i] of Example 1).
[0273] a. In one example, the subpicture level slice index is a non-negative integer.
[0274] b. In one example, the value of the slice's subpicture level slice index is greater than or equal to 0.
[0275] c. In one example, the value of the slice index at the subpicture level of the slice is less than N, where N is the number of slices in the subpicture.
[0276] d. In one example, the first subpicture level slice index (indicated as subIdxA) of the first slice (slice A) must be different from the second subpicture level slice index (indicated as subIdxB) of the second slice (slice B) if the first slice and the second slice are in the same subpicture, but they are different from each other.
[0277] e. In one example, if the first subpicture level slice index (indicated as subIdxA) of the first slice (slice A) in the first subpicture is smaller than the second subpicture level slice index (indicated as subIdxB) of the second slice (slice B) of the same first subpicture, then IdxA is smaller than IdxB, where idxA and idxB represent the slice index of the entire picture (also known as the picture level slice index, e.g., sliceIdx) for slice A and slice B, respectively.
[0278] f. In one example, if the first subpicture level slice index (indicated as subIdxA) of the first slice (slice A) in the first subpicture is smaller than the second subpicture level slice index (indicated as subIdxB) of the second slice (slice B) of the same first subpicture, slice A is ahead of slice B in the decoding order.
[0279] g. In one example, the subpicture-level slice index of a subpicture is derived based on the picture-level slice index (e.g., sliceIdx).
[0280] 4. It is proposed to derive a mapping function / table between the subpicture-level slice index and the picture-level slice index within a subpicture.
[0281] a. In one example, a 2D array PicLevelSliceIdx[subPicIdx][SubPicLevelSliceIdx] is derived to map the subpicture level slice index of a subpicture to the picture level slice index, where PicLevelSliceIdx represents the picture level slice index of the slice, subPicIdx represents the index of the subpicture, and SubPicLevelSliceIdx represents the subpicture level slice index of the slice in the subpicture.
[0282] i. In one example, the array NumSlicesInSubpic[subPicIdx] is used to derive PicLevelSliceIdx, where NumSlicesInSubpic[subPicIdx] represents the number of slices of the subpicture having the same index as subPicIdx.
[0283] 1) In one example, NumSlicesInSubpic [subPicIdx] and PicLevelSliceIdx [subPicIdx] [SubPicLevelSliceIdx] are derived in a single process by scanning all slices in the order of picture-level slice indices.
[0284] a. NumSlicesInSubpic [subPicIdx] is set to 0 for all valid subPicIdx before the process.
[0285] b. When checking a slice with picture level index S, if it is in a subpicture with subpicture index P, PicLevelSliceIdx [P] [NumSlicesInSubpic [P] ] is set to be equal to S, and then NumSlicesInSubpic [P] is set to be equal to NumSlicesInSubpic [P] + 1.
[0286] ii. In one example, SliceIdxInPic [subPicIdx] [SubPicLevelSliceIdx] is used to derive a picture-level slice index (e.g., picLevelSliceIdx), which is then used to derive the number and / or address of CTBs in the slice when parsing the slice header.
[0287] 5. It is required by the conformity bitstream that one tile cannot be in more than two subpictures.
[0288] 6. It is required by the conformity bitstream that one subpicture cannot contain two slices labeled as slice A and slice B, where slice A is on tile A but smaller than tile A, slice B is on tile B but smaller than tile B, and tile A and tile B are different.
[0289] 7. It is suggested that tile and / or slice partitioning information of a picture can be signaled in an associated picture header.
[0290] a. In one example, whether the picture's tile and / or slice partitioning information is signaled in the PPS or in the associated picture header is signaled in the associated PPS.
[0291] b. In one example, whether the picture's tile and / or slice partitioning information is in the associated picture header is signaled in the picture header.
[0292] i. In one example, if the picture's tile and / or slice partitioning information is signaled in both the associated PPS and the associated picture header, the picture's tile and / or slice partitioning information signaled in the picture header will be used.
[0293] ii. In one example, if the tile and / or slice partitioning information of a picture is signaled in both the associated PPS and the associated picture header, the tile and / or slice partitioning information of the picture signaled in the PPS will be used.
[0294] c. In one example, the picture's tile and / or slice partitioning information is signaled in the video unit at a higher level than the picture (as in the SPS) to indicate whether it is signaled in the associated PPS or the associated picture header.
[0295] 8. It is proposed that when an associated picture is partitioned into slices in a non-rectangular mode, the slice partitioning information is signaled at a higher-level video unit (e.g., PPS and / or picture header) than the slice level.
[0296] a. In one example, information for indicating the number of slices (e.g., num_slices_in_pic_minus1) may be signaled at the upper level video unit when the associated picture is partitioned into slices in non-rectangular mode.
[0297] b. In one example, when the associated picture is partitioned into slices in a non-rectangular mode, the information indicates the index (or address, location, or coordinate) of the first block unit of the slice in the upper-level video unit. For example, the block unit may be a CTU or a tile.
[0298] c. In one example, when the associated picture is partitioned into slices in non-rectangular mode, the information indicates the number of block units of the slice in the upper-level video unit. For example, the block units can be CTUs or tiles.
[0299] d. In one example, slice partitioning information (e.g., num_tiles_in_slice_minus1) is not signaled in the slice header when the associated picture is partitioned into slices in non-rectangular mode.
[0300] e. In one example, the slice index is signaled in the slice header when the associated picture is partitioned into slices in non-rectangular mode.
[0301] i. In one example, slice_address is interpreted as a picture-level slice index when the associated picture is partitioned into slices using non-rectangular mode.
[0302] f. In one example, partitioning information for each slice of a picture (e.g., the index of the first block unit and / or the number of block units) may be signaled sequentially in the upper-level video unit when the associated picture is partitioned into slices in a non-rectangular mode.
[0303] i. In one example, the index of a slice can be signaled for each slice of the upper-level video unit when the associated picture is partitioned into slices in non-rectangular mode.
[0304] ii. In one example, the partitioning information of each slice is signaled in ascending order of the slice index.
[0305] 1) In one example, the partitioning information for each slice is slice 0, slice 1, ..., slice K-1, slice K, slice K+1, ... slice S-2, slice S-1, where K represents the slice index and S represents the number of slices in the picture.
[0306] iii. In one example, the partitioning information of each slice is signaled in descending order of the slice index.
[0307] 1) In one example, the partitioning information for each slice is signaled in the order of slice S-2, slice S-1, ..., slice K+1, slice K, slice K-1, ..., slice 1, slice 0, where K represents the slice index and S represents the number of slices of the picture.
[0308] iv. In one example, the index of the first block unit for a slice may not be signaled in the upper-level video unit when the associated picture is partitioned into slices in non-rectangular mode.
[0309] 1) For example, the index of the first block unit for slice 0 (slice with a slice index of 0) is inferred to be 0.
[0310] 2) For example, the index of the first block unit for slice K (slice with slice index K, K > 0) is It is inferred as, where Ni is a slice i Indicates the number of block units.
[0311] v. In one example, the index of the first block unit for a slice may not be signaled in the upper-level video unit when the associated picture is partitioned into slices in non-rectangular mode.
[0312] 1) For example, the index of the first block unit for slice 0 (slice with a slice index of 0) is inferred to be 0.
[0313] 2) For example, the index of the first block unit for slice K (slice with slice index K, K > 0) is It is inferred as, where Ni is a slice i Indicates the number of block units.
[0314] vi. In one example, the number of block units for a slice may not be signaled in the upper-level video unit when the associated picture is partitioned into slices in non-rectangular mode.
[0315] 1) The number of block units for slice 0 is M when there is one slice in the picture and there are M block units in the picture.
[0316] 2) For example, the number of block units for slice K (the slice with slice index 0) is T K+1 -T K It is inferred as, and here T K represents the index of the first block unit for slice k, and when K < S - 1, S is the number of slices of the picture and S > 1.
[0317] 3) For example, the number of block units for slice S-1 is It is inferred that, where S is the number of slices of the picture and S > 1, and M is the number of block units of the picture.
[0318] vii. In one example, partitioning information of one or more slices may not be signaled at the upper-level video unit when the associated picture is partitioned into slices in non-rectangular mode.
[0319] 1) In one example, partitioning information of one or more slices that are not signaled in the upper-level video unit can be inferred from the partitioning information of other slices that will be signaled.
[0320] 2) In one example, the partitioning information of the last C slice may not be signaled. For example, C is the same as 1.
[0321] 3) For example, the number of block units for slice S-1 is not signaled, where S is the number of slices of the picture and S > 1.
[0322] a. For example, the number of block units for slice S-1 is It is inferred that, here, the picture has M block units.
[0323] 9. It is suggested that the minimum number of slices of a picture may differ depending on whether rectangular partitioning is applied or non-rectangular partitioning is applied.
[0324] a. In one example, when a non-rectangular partitioning mode is applied, the picture is partitioned into at least two slices, and when a rectangular partitioning mode is applied, the picture is partitioned into at least one slice.
[0325] i. For example, num_slices_in_pic_minus2 plus 2, which specifies the number of slices in a picture, can be signaled when a non-rectangular partitioning mode is applied.
[0326] b. In one example, the picture is partitioned into at least one slice when a non-rectangular partitioning mode is applied, and the picture is partitioned into at least one slice when a rectangular partitioning mode is applied.
[0327] i. For example, if rectangular partitioning mode is applied, num_slices_in_pic_minus2 plus 2, which specifies the number of slices of the picture, may be signaled.
[0328] c. In one example, if the picture is not partitioned into sub-pictures or is partitioned into only one sub-picture, the minimum number of slices of the picture may differ depending on whether rectangular partitioning or non-rectangular partitioning is applied.
[0329] 10. When partitioning information is signaled to a video unit such as a PPS or picture header, it is proposed that the slice be represented by the top-left position and the width / height of the slice.
[0330] a. In one example, the index / position / coordinates of the top-left block unit (such as a CTU or tile) and / or the width measured by the video unit (such as a CTU or tile), and / or the height measured by the video unit (such as a CTU or tile of the slice) are signaled.
[0331] b. In one example, the top-left position and the width / height information of each slice are signaled in sequence.
[0332] i. For example, the top-left position and width / height information of each slice is signaled in ascending order of slice indices such as 0, 1, 2, ..., S-1, where S is the number of slices of the picture.
[0333] c. In one example, X minus the width of a slice may be signaled. For example, X is equal to 1. In one example, slice_width_minus1[i] plus 1 represents the width of the i-th slice, and slice_width_minus1[i] is signaled. In this specification, “the width of a slice is signaled” may mean “X minus the width of a slice is signaled.”
[0334] d. In one example, X minus the height of a slice may be signaled. For example, X is equal to 1. In one example, slice_height_minus1[i] plus 1 represents the height of the i-th slice, and slice_height_minus1[i] is signaled. In this specification, “the height of a slice is signaled” may mean “X minus the height of a slice is signaled.”
[0335] e. In one example, whether a slice is signaled by the top-left position and the width / height of the slice can be conditioned by the slice signaling method.
[0336] i. In one example, the slice is signaled by the top-left position and width / height of the slice only when the picture is partitioned into rectangular slices.
[0337] f. In one example, whether a slice is signaled by the top-left position and the width / height of the slice can be conditioned by the relationship between slice partitioning and subpicture partitioning.
[0338] i. In one example, the slice is signaled by the top-left position and width / height of the slice only when the statement "each subpicture has only one slice" is not true. (e.g., single_slice_per_subpic_flag is equivalent to 0)
[0339] g. In one example, whether a slice is signaled by the top-left position and the width / height of the slice can be conditioned by the number of slices in the picture.
[0340] i. In one example, the slice is signaled by the top-left position and the width / height of the slice only when the number of slices in the picture is greater than 1 (e.g., num_slices_in_pic_minus1>0).
[0341] h. In one example, a syntax element (e.g., a flag such as slice_represented_in_ctb_flag[i]) may be signaled to indicate the top-left position of the i-th slice and whether the width / height is represented in units of CTU size or tile width / height.
[0342] i. Alternatively, a single syntax element (e.g., a flag such as slice_represented_in_ctb_flag) can be signaled to indicate the top-left position and whether the width / height of all slices is represented in CTU size or tile width / height units.
[0343] ii. Alternatively, the top-left position and width / height of all slices are displayed in CTU size units.
[0344] i. The signaling of the x / y coordinates of the top-left position (represented by slice_top_left_x[i] and slice_top_left_y[i]) and the width / height of the i-th slice (represented by slice_width_minus1[i] and slice_height_minus1[i]) can be conditioned.
[0345] i. In one example, it can be conditioned on the value of i and / or the CTB size (denoted as CtbSizeY) and / or the width / height of the current picture (denoted as pic_width_in_luma_samples and pic_height_in_luma_samples), and / or the number of slices in the picture (denoted as num_slices_in_pic_minus1).
[0346] ii. Exemplary conditioned signaling is shown in the syntax table below.
[0347]
[0348] j. When at least one of the x / y coordinates of the top-left position (indicated by slice_top_left_x[i] and slice_top_left_y[i]) and the width / height of the i-th slice (indicated by slice_width_minus1[i] and slice_height_minus1[i]) is not signaled, it can be inferred as a default value.
[0349] i. In one example, the default value can be 0.
[0350] ii. In one example, the default value may vary depending on slice_represented_in_ctb_flag[i].
[0351] iii. For example, if it does not exist, the value of slice_top_left_x[i] is inferred to be equal to 0.
[0352] iv. For example, if it does not exist, the value of slice_top_left_y[i] is inferred to be equal to 0.
[0353] v. For example, when it does not exist, the value of slice_width_minus1[i] is inferred to be the same as (slice_represented_in_ctb_flag[i] ? ( (pic_width_in_luma_samples + CtbSizeY-1) >> CtbLog2SizeY): NumTileColumns) -slice_top_left_x[i] -1.
[0354] vi. For example, when it does not exist, the value of slice_height_minus1[i] is inferred to be (slice_represented_in_ctb_flag[i] ? ( (pic_height_in_luma_samples + CtbSizeY-1) >> CtbLog2SizeY): N umTileRows) -slice_top_left_y[i] -1.
[0355] 11. It is proposed to signal partitioning information (e.g., position / width / height) for a slice of a subpicture in a video unit such as an SPS / PPS / picture header.
[0356] a. In one example, slice partitioning information for each subpicture is signaled in sequence.
[0357] i. For example, slice partitioning information for each subpicture is signaled in ascending order of the subpicture index.
[0358] b. In one example, partitioning information (e.g., position / width / height) for each slice of a subpicture is signaled in order.
[0359] i. In one example, partitioning information (e.g., position / width / height) for each slice of a subpicture is signaled in ascending order of the subpicture level slice index.
[0360] 12. It is suggested that the difference between the tile index of the first tile of the i-th rectangular slice and the tile index of the first tile of the (i + 1)-th rectangular slice (indicated by tile_idx_delta[i]) is not signaled but is induced.
[0361] a. In one example, the tile index of the first tile in the (i + 1)th rectangular slice is derived based on the rectangular slices from the 0th rectangular slice to the ith rectangular slice.
[0362] b. In one example, the tile index of the first tile in the (i + 1)th rectangular slice is derived to be the minimum index of the tile, which is not inside the i-th rectangular slice in the 0th rectangular slice.
[0363] 13. It is suggested that the signaling of information to derive the number of tile columns / rows (e.g., NumTileColumns or NumTileRows) can be controlled according to the relationship between the width of the picture and the size of the CTU.
[0364] a. For example, num_exp_tile_columns_minus1 and / or tile_column_width_minus1 may not be signaled if the width of the picture is smaller than or equal to the size or width of the CTU.
[0365] b. For example, num_exp_tile_rows_minus1 and / or tile_row_height_minus1 may not be signaled if the height of the picture is smaller than or equal to the size or height of the CTU.
[0366] 14. When Slice_subpic_id exists, there must be only one CurrSubpicIdx that satisfies SubpicIdVal[CurrSubpicIdx] being equal to slice_subpic_id.
[0367] 15. If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address + i is the range including 0 to num_tiles_in_slice_minus1 and must not be equal to the value of slice_address + j, where j is the range including 0 to num_tiles_in_slice_minus1 of any other coded slice NAL unit of the same coded picture and i is within the range.
[0368] 16. If a picture contains both uniformly spaced tiles and non-uniformly spaced tiles, the syntax element may be signaled as PPS (or SPS) to specify the type of tile layout.
[0369] a. In one example, there may be a syntax flag signaled in the PPS to specify whether the tile layout is non-uniform spacing followed by uniform spacing, or non-uniform spacing followed by uniform spacing.
[0370] b. For example, whenever there are non-uniformly spaced tiles, the explicitly provided number of tile columns / rows (e.g., num_exp_tile_columns_minus1, num_exp_tile_rows_minus1) may not be less than the total number of non-uniform tiles.
[0371] c. For example, whenever there are uniformly spaced tiles, the explicitly provided number of tile columns / rows (e.g., num_exp_tile_columns_minus1, num_exp_tile_rows_minus1) may be less than or equal to the total number of uniform tiles.
[0372] d. Where the tile layout has uneven spacing following uniform spacing (i.e., where the picture starts with uniformly spaced tiles and ends with multiple unevenly spaced tiles),
[0373] i. In one example, the width of the tile column for the non-uniformly spaced tiles located in the latter part of the picture can first be assigned in reverse order (i.e., the order of the tile indices is NumTileColumns, NumTileColumns-1, NumTileColumns-2, ...), and the width of the tile column for the uniformly spaced tiles located in the former part of the picture can be implicitly derived in reverse order (i.e., the order of the tile indices is NumTileColumns-T, NumTileColumns-T-1, ..., 2, 1, 0, where T represents the number of non-uniform tile columns).
[0374] ii. The height of the tile row can be derived in the same way as the width of the tile column mentioned above.
[0375] 17. The syntax element specifies the difference between the representative tile indices of two rectangular slices, one of which is the i-th slice (e.g., tile_idx_delta[i]) that can be used only if the condition is true.
[0376] a. In one example, the condition is (i < num_slices_in_pic_minus1), where num_slices_in_pic_minus1 plus 1 represents the number of slices of the picture.
[0377] b. In one example, the condition is (i ! = num_slices_in_pic_minus1), where num_slices_in_pic_minus1 plus 1 represents the number of slices of the picture.
[0378] 18. Whether and / or how to signal, interpret, or limit the merge estimate region (MER) size (e.g., signaled by log2_parallel_merge_level_minus2) may depend on the minimum allowed coding block size (e.g., signaled / indicated by log2_min_luma_coding_block_size_minus2 and / or MinCbSizeY).
[0379] a. In one example, the size of the MER cannot be smaller than the minimum allowable coding block size.
[0380] i. For example, log2_parallel_merge_level_minus2 must be greater than or equal to log2_min_luma_coding_block_size_minus2.
[0381] ii. For example, log2_parallel_merge_level_minus2 is required to be in the range of log2_min_luma_coding_block_size_minus2 ~ CtbLog2SizeY -2.
[0382] b. In one example, the difference between Log2(MER size) and Log2(MinCbSizeY) is signaled, which is indicated by log2_parallel_merge_level_minus_log2_mincb.
[0383] i. For example, log2_parallel_merge_level_minus_log2_mincb is coded as a unary code (ue).
[0384] ii. For example, log2_parallel_merge_level_minus_log2_mincb is required to be in the range from 0 to CtbLog2SizeY-log2_min_luma_coding_block_size_minus2 - 2.
[0385] iii. For example, Log2ParMrgLevel = log2_parallel_merge_level_minus_log2_mincb +log2_min_luma_coding_block_size_minus2 + 2, where Log2ParMrgLevel is used to control the MER size.
[0386] 19. When num_exp_slices_in_tile[i] is equal to 0, it is proposed that the slice height of the CTU row unit for the i-th slice, denoted by sliceHeightInCtus[i], be derived.
[0387] a. In one example, sliceHeightInCtus[i] is derived to be equal to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] when num_exp_slices_in_tile[i] is equal to 0.
[0388] 20. It is suggested that the (num_exp_slices_in_tile[i]-1)th slice of the tile containing the i-th slice in the picture always exists and the height is always exp_slice_height_in_ctus_minus1[i][num_exp_slices_in_tile[i]-1]+1 CTU row.
[0389] a. Alternatively, the (num_exp_slices_in_tile[i]-1)th slice of the tile containing the i-th slice in the picture may or may not exist, and its height is less than or equal to exp_slice_height_in_ctus_minus1[i][num_exp_slices_in_tile[i]-1]+1 CTU row.
[0390] 21. It is suggested that while deriving information about rectangular slices, the variable tileIdx is updated only for slices with a picture-level slice index smaller than num_slices_in_pic_minus1, that is, not updated for the last slice of each picture referencing PPS.
[0391] 22. The num_exp_tile_columns_minus1st tile column is always present in the picture referencing PPS and its width is always suggested as tile_column_width_minus1[num_exp_tile_columns_minus1] + 1 CTBs.
[0392] 23. It is suggested that the num_exp_tile_rows_minus1st tile row always exist in the picture referencing PPS and the height always be tile_column_height_minus1[num_exp_tile_rows_minus1] + 1 CTBs.
[0393] 24. It is suggested that if both the maximum picture width and the maximum picture height are not greater than CtbSizeY, the signaling of the syntax element sps_num_subpics_minus1 may be skipped.
[0394] a. Alternatively, additionally, when the above condition is true, the value of sps_num_subpics_minus1 is inferred to be equal to 0.
[0395] 25. It is suggested that if the picture width is not greater than CtbSizeY, the signaling of the syntax element num_exp_tile_columns_minus1 may be skipped.
[0396] b. Alternatively, additionally, when the above condition is true, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.
[0397] 26. It is suggested that signaling of the syntax element num_exp_tile_rows_minus1 can be skipped if the picture height is not greater than CtbSizeY.
[0398] c. Alternatively, additionally, when the above condition is true, the value of num_exp_tile_row_minus1 is inferred to be equal to 0.
[0399] 27. It is suggested that when num_exp_tile_columns_minus1 is equal to PicWidthInCtbsY -1, the signaling of the syntax element tile_column_width_minus1[i] for the range i including 0 to num_exp_tile_columns_minus1 can be skipped.
[0400] d. Alternatively, additionally, the value of tile_column_width_minus1[i] is inferred to be equal to 0.
[0401] 28. It is suggested that when num_exp_tile_rows_minus1 is equal to PicHeightInCtbsY -1, signaling of the syntax element tile_row_height_minus1[i] for the range i including 0 to num_exp_tile_rows_minus1 can be skipped.
[0402] e. Alternatively, additionally, the value of tile_row_height_minus1[i] is inferred to be 0.
[0403] 29. It is suggested that the height of a uniform slice partitioning a tile be indicated by the last entry of exp_slice_height_in_ctus_minus1[] s, which represents the slice height of the corresponding tile. A non-uniform slice is a slice below a slice that is explicitly sigmoid. For example, uniformSliceHeight = exp_slice_height_in_ctus_minus1[i][num_exp_slices_in_tile[i] - 1] + 1.
[0404] 30. It is suggested that the width of 'num_exp_tile_columns_minus1' is not allowed to be reset, that is, the value parsed from the bitstream (e.g., tile_column_width_minus1 [num_exp_tile_columns_minus1]) can be used directly to derive the width without referencing other information.
[0405] a. In one example, the width of the 'num_exp_tile_columns_minus1'-th tile column is directly set to tile_column_width_minus1 [num_exp_tile_columns_minus1] plus 1. Alternatively, furthermore, tile_column_width_minus1 [num_exp_tile_columns_minus1] is used to derive the width of tile columns with indices greater than num_exp_tile_columns_minus1, for example, as specified in Section 6.5.1.
[0406] b. Similarly, the height of the 'num_exp_tile_columns_minus1'-th tile row is not allowed to be reset, that is, the value parsed from the bitstream (e.g., represented as tile_row_height_minus1 [num_exp_tile_columns_minus1]) can be used directly to derive the height without referencing other information.
[0407] i. In one example, the height of the 'num_exp_tile_columns_minus1'-th tile row is directly set to tile_row_height_minus1 [num_exp_tile_columns_minus1] plus 1. Alternatively, furthermore, tile_row_height_minus1 [num_exp_tile_columns_minus1] is used to derive the height of tile rows with indices greater than num_exp_tile_columns_minus1, for example, as specified in Section 6.5.1.
[0408] 31. It is suggested that the height of the (num_exp_slices_in_tile [i] - 1)th slice in the tile cannot be reset, that is, the parsed value from the bitstream (e.g., indicated by exp_slice_height_in_ctus_minus1 [i] [num_exp_slices_in_tile [i] - 1]) can be used directly to derive the height without referring to other information.
[0409] a. In one example, the height of the (num_exp_slices_in_tile[i]-1)th slice of the tile is directly set to exp_slice_height_in_ctus_minus1[i][num_exp_slices_in_tile[i]-1] plus 1. Alternatively, exp_slice_height_in_ctus_minus1[i][num_exp_slices_in_tile[i]-1] is also used to derive the height of slices with indices greater than num_exp_slices_in_tile[i]-1.
[0410] 32. exp_slice_height_in_ctus_minus1 [i] [num_exp_slices_in_tile [i] -1] is suggested to be used to induce a uniform slice height instead of specifying the height of the (num_exp_slices_in_tile [i] -1)th slice.
[0411] a. Alternatively, exp_slice_height_in_ctus_minus1 [i] [num_exp_slices_in_tile [i] - 1] is used not only to specify the height of the (num_exp_slices_in_tile [i] - 1)th slice but also to induce a uniform slice height.
[0412] b. Alternatively, exp_slice_height_in_ctus_minus1 [i] [num_exp_slices_in_tile [i] - 1] is used to derive a uniform slice height. In some cases, the height of the (num_exp_slices_in_tile [i] - 1)th slice can be specified, but in other cases, the height of the (num_exp_slices_in_tile [i] - 1)th slice can not be specified.
[0413] 33. firstRemainingWidthInCtbsY must be greater than or equal to uniformTileColWidth, where the variables firstRemainingWidthInCtbsY and uniformTileColWidth are proposed to be calculated as firstRemainingWidthInCtbsY = remainingWidthInCtbsY and uniformTileColWidth = tile_column_width_minus1 [num_exp_tile_columns_minus1] + 1.
[0414]
[0415] 34. firstRemainingHeightInCtbsY must be greater than or equal to uniformTileRowHeight, where the variables firstRemainingHeightInCtbsY and uniformTileRowHeight are proposed to be calculated as firstRemainingHeightInCtbsY = remainingHeightInCtbsY and uniformTileRowHeight = tile_row_height_minus1 [num_exp_tile_rows_minus1] + 1.
[0416]
[0417] 35. firstRemainingHeightInCtbsY must be greater than or equal to uniformSliceHeight, where the variables firstRemainingHeightInCtbsY and uniformSliceHeight are proposed to be calculated as firstRemainingHeightInCtbsY = remainingHeightInCtbsY and uniformSliceHeight = exp_slice_height_in_ctus_minus1 [i] [j] + 1.
[0418]
[0419]
[0420] 36. A syntax element (e.g., denoted as SE_x) is proposed that indicates the maximum number of affine merge candidates allowed in a subblock-based merge candidate list.
[0421] a. In one example, the signaling of SE_x is determined by whether affine prediction is enabled. For instance, SE_x is signaled only when affine prediction is enabled.
[0422] b. In one example, SE_x is set to the default value if SE_x does not exist. For example, SE_x is set to the default value such that the maximum number of affine merge candidates allowed in the subblock-based merge candidate list is 0.
[0423] c. In one example, the maximum number of affine merge candidates allowed in the subblock-based merge candidate list is set to equal X-SE_x, where X is an integer equal to 5.
[0424] d. In one example, SE_x cannot be greater than X, where X is an integer such as 5.
[0425] e. In one example, SE_x must be in the range from 0 to X, where X is an integer such as 5.
[0426] f. In one example, the maximum number of merge candidates allowed in the subblock-based merge candidate list (denoted as MaxNumSubblockMergeCand) can be derived based on SE_x.
[0427] i. In one example, MaxNumSubblockMergeCand can be derived based on SE_x and the maximum number of allowed sbTMVP merge candidates.
[0428] ii. In one example, MaxNumSubblockMergeCand must be in a range including X from 0, where X is an integer such as 5.
[0429] 1) In one case, MaxNumSubblockMergeCand is truncated to the range.
[0430] iii. In one example, MaxNumSubblockMergeCand cannot be greater than X, where X is an integer such as 5.
[0431] 1) In one case, MaxNumSubblockMergeCand is truncated so as not to be larger than X.
[0432] iv. In one example, MaxNumSubblockMergeCand is derived as MaxNumSubblockMergeCand = Min (5, (sps_sbtmvp_enabled_flag &&ph_temporal_mvp_enable_flag) + 5 -five_minus_max_num_affine_merge_cand), where five_minus_max_num_affine_merge_cand is the syntax element SE_x.
[0433] 6. Examples
[0434] In the examples below, added parts are displayed in bold, underlined, and italicized. Deleted parts are displayed in [ [] ].
[0435] 6.1. Example 1: Exemplary Subpicture Level Slice Index Change
[0436] 3 definitions
[0437] Picture-level slice index: [ [An] ] Pictures in the order they are signaled in the PPS when rect_slice_flag is equal to 1 of Slice index for the slice list.
[0438] [ [subpicture-level slice index: Slice index for the list of slices in the subpicture in the order signaled by the PPS when rect_slice_flag is equal to 1. ] ]
[0439] Subpicture-level slice index: Slice index for the list of slices of a subpicture in decoding order when rect_slice_flag is equal to 1.
[0440] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0441] . . .
[0442] [[List NumSlicesInSubpic [i],] ] A variable NumSlicesInSubpic [j] specifying the number of rectangular slices of the j-th subpicture, a variable SubpicIdxOfSlice [i] specifying the subpicture index of the slice having picture-level slice index i, a variable SubpicLevelSliceIdx [i] specifying the subpicture-level slice index of the slice having picture-level slice index i, and a variable PicLevelSliceIdx [m] [n] specifying the picture-level slice index for the slice having subpicture-level slice index n in the m-th subpicture [[is]] is derived as follows:
[0443]
[0444] . . .
[0445] 7.4.8.1 General Slice Header Semantic
[0446] slice_address specifies the slice address of the slice. If it does not exist, the value of slice_address is inferred to be 0. When rect_slice_flag is 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be 0.
[0447] If rect_slice_flag is 0, the following applies:
[0448] - The slice address is the raster scan tile index.
[0449] - The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0450] - The value of slice_address must be in the range from 0 to NumTilesInPic -1.
[0451] Otherwise (rect_slice_flag is 1), the following applies:
[0452] - Slice address is The subpicture level slice index of the slice specified by the variable SubpicLevelSliceIdx[i] derived from Equation 32, where i is the picture level slice index of the slice.
[0453] - The length of slice_address is Ceil(Log2(NumSlicesInSubpic [CurrSubpicIdx])) bits.
[0454] - The value of slice_address must be in the range from 0 to NumSlicesInSubpic [CurrSubpicIdx] - 1.
[0455] The following constraints apply to the requirements of bitstream conformity:
[0456] - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address must not be equal to the slice_address value of another coded slice NAL unit of the same coded picture.
[0457] - Otherwise, the pair of slice_subpic_id and slice_address values must not be identical to the pair of slice_subpic_id and slice_address values of other coded slice NAL units of the same coded picture.
[0458] - The shape of the picture slice must have a full left boundary and a full top boundary composed of the picture boundary or the boundary of the previously decoded CTU(s) when each CTU is decoded.
[0459] . . .
[0460] num_tiles_in_slice_minus1 + 1 specifies the number of tiles in the slice, if present. The value of num_tiles_in_slice_minus1 must be in the range from 0 to NumTilesInPic - 1.
[0461] The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i], which specifies the picture raster scan address of the i-th CTB within the slice and range i from 0 to NumCtusInCurrSlice-1, are derived as follows:
[0462]
[0463] . . .
[0464] 6.2. Example 2: Signaling slice of PPS for non-rectangular mode
[0465] 7.3.2.4 Picture parameter set RBSP syntax
[0466]
[0467]
[0468] 7.3.7.1 General Slice Header Syntax
[0469]
[0470] 7.4.3.4 Picture Parameter Set RBSP Semantics
[0471] num_slices_in_pic_minus1 plus 1 specifies the number of [ [rectangle] ] slices in each picture referencing PPS.
[0472] The value of num_slices_in_pic_minus1 must be in the range from 0 to MaxSlicesPerPicture - 1, where MaxSlicesPerPicture is specified in Appendix A. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0. NumSlicesInPic is set to be equal to num_slices_in_pic_minus1 + 1.
[0473] num_tiles_in_slice_minus1 [i] plus 1 is, if present, picture Specifies the number of tiles in the slice where the level slice index is the same as i. The value of num_tiles_in_slice_minus1[i] must be in a range including 0 to NumTilesInPic -1.
[0474] An array FirstTileInSlice[i] specifying the tile index of the first tile in a slice where the picture-level slice index is i, and an array NumTileInSlice[i] specifying the number of tiles in the slice with the picture-level slice index, are equivalent to i when rect_slice_flag is 0, as follows:
[0475]
[0476] NumTileInSlice [num_slices_in_pic_minus1] = NumTilesInPic -CurrNumSlices
[0477] FirstTileInSlice[i] must not be less than 0 and not greater than NumTilesInPic -1.
[0478] NumTileInSlice[i] must not be less than 1 and must not be greater than NumTilesInPic.
[0479] The sum of NumTileInSlice[i] for i from 0 to NumSlicesInPic must be equal to NumTilesInPic.
[0480] . . .
[0481] 7.4.8.1 General Slice Header Semantic
[0482] . . .
[0483] slice_address specifies the slice address of the slice. If it does not exist, the value of slice_address is inferred to be 0. When rect_slice_flag is 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be 0. When rect_slice_flag is equal to 0 and NumSlicesInPic is equal to 1, the value of slice_address is inferred to be 0.
[0484] If rect_slice_flag is 0, the following applies:
[0485] - The slice address is the slice's Picture Level Slice Index [[Raster Scan Tile Index] ] am .
[0486] - The length of slice_address is Ceil(Log2 ( NumSlicesInPic [ [NumTilesInPic] ] ) ) is a bit.
[0487] - The value of slice_address is from 0 to NumSlicesInPic [ [NumTilesInPic] ] must be in a range including -1.
[0488] Otherwise (rect_slice_flag is 1), the following applies:
[0489] - The slice address is the slice index at the subpicture level of the slice.
[0490] - The length of slice_address is Ceil(Log2(NumSlicesInSubpic [CurrSubpicIdx])) bits.
[0491] - The value of slice_address must be in the range from 0 to NumSlicesInSubpic [CurrSubpicIdx] - 1.
[0492] The following constraints apply to the requirements of bitstream conformity:
[0493] - [ If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address must not be equal to the value of slice_address of another coded slice NAL unit of the same coded picture.
[0494] - Otherwise,] ] If rect_slice_flag is equal to 1, The pair of slice_subpic_id and slice_address values must not be identical to the pair of slice_subpic_id and slice_address values of other coded slice NAL units of the same coded picture.
[0495] - The shape of the picture slice must have a full left boundary and a full top boundary composed of the picture boundary or the boundary of the previously decoded CTU(s) when each CTU is decoded.
[0496] . . .
[0497] The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i], which specifies the picture raster scan address of the i-th CTB within the slice and range i from 0 to NumCtusInCurrSlice-1, are derived as follows:
[0498]
[0499] 6.3. Example 3: Signaling tile of conditions for picture dimensions
[0500] 7.3.2.4 Picture parameter set RBSP syntax
[0501]
[0502]
[0503]
[0504] 6.4. Example 4: Example 1 of Semantics for tile_column_width_minus1 and tile_row_height_minus1
[0505] 7.4.3.4 Picture Parameter Set RBSP Semantics
[0506] . . .
[0507] tile_column_width_minus1 [i] plus 1 is, If num_exp_tile_columns_minus1 is greater than 0, 0 Specifies the width of the i-th tile column in CTB units for a range i including num_exp_tile_columns_minus1 -1.
[0508] tile_column_width_minus1 [num_exp_tile_columns_minus1] is used to derive the width of a tile column whose index is num_exp_tile_columns_minus1 or greater, as specified in Section 6.5.1. The value of tile_column_width_minus1[i] must be in the range from 0 to PicWidthInCtbsY - 1. If it does not exist, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY - 1.
[0509] tile_row_height_minus1 [i] plus 1 is, If num_exp_tile_rows_minus1 is greater than 0, 0 Specifies the height of the i-th tile row in CTB units for i in the range including num_exp_tile_rows_minus1 -1.
[0510] tile_row_height_minus1 [num_exp_tile_rows_minus1] is used to derive the height of a tile row whose index is greater than or equal to num_exp_tile_rows_minus1, as specified in Section 6.5.1. The value of tile_row_height_minus1[i] must be in the range from 0 to PicHeightInCtbsY - 1. If it does not exist, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY - 1.
[0511] . . .
[0512] 6.5. Example 5: Example 2 of semantics for tile_column_width_minus1 and tile_row_height_minus1
[0513] 7.4.3.4 Picture Parameter Set RBSP Semantics
[0514] . . .
[0515] tile_column_width_minus1 [i] plus 1 is from 0 Max(0, Specifies the width of the i-th tile column in CTB units for i in a range including num_exp_tile_columns_minus1 -1).
[0516] tile_column_width_minus1 [num_exp_tile_columns_minus1] is used to derive the width of a tile column whose index is num_exp_tile_columns_minus1 or greater, as specified in Section 6.5.1. The value of tile_column_width_minus1[i] must be in the range from 0 to PicWidthInCtbsY - 1. If it does not exist, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY - 1.
[0517] tile_row_height_minus1 [i] plus 1 is from 0 Max(0,Specifies the height of the i-th tile row in CTB units for a range i including num_exp_tile_rows_minus1 - 1). tile_row_height_minus1 [num_exp_tile_rows_minus1] is used to derive the height of tile rows whose index is greater than or equal to num_exp_tile_rows_minus1, as specified in Section 6.5.1. The value of tile_row_height_minus1[i] must be in a range including 0 to PicHeightInCtbsY - 1.
[0518] When it does not exist, the value of tile_row_height_minus1[0] is inferred to be the same as PicHeightInCtbsY -1.
[0519] . . .
[0520] 6.6. Example 6: Example of CTU induction in a slice
[0521] 6.5 Scanning Process
[0522] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0523] . . .
[0524] For a rectangular slice, the list NumCtusInSlice[i] for a range i including 0 to num_slices_in_pic_minus1 specifying the number of CTUs of the i-th slice, the list SliceTopLeftTileIdx[i] for a range i including 0 to num_slices_in_pic_minus1 specifying the index of the top-left tile of the slice, the matrix CtbAddrInSlice[i][j] for a range i including 0 to num_slices_in_pic_minus1, and the range j including 0 to NumCtusInSlice[i]-1 specifying the picture raster scan address of the j-th CTB within the i-th slice are derived as follows:
[0525]
[0526]
[0527] 6.7. Example 7: Regarding MER size signaling
[0528] 7.3.2.3 Sequence parameter set RBSP syntax
[0529]
[0530] 7.4.3.3 Sequence Parameter Set RBSP Semantics
[0531] log2_parallel_merge_level_minus_log2_mincb + log2_min_luma_coding_block_size_minus2 + 2 specifies the value of the variable Log2ParMrgLevel, which is used in the derivation process for spatial merge candidates as specified in Section 8.5.2.3, in the derivation process for motion vectors and reference indices of subblock merge mode as specified in Section 8.5.5.2, and to control the invocation of the update process for the history-based motion vector predictor list of Section 8.5.2.1. The value of log2_parallel_merge_level_minus_log2_mincb must be in the range from 0 to CtbLog2SizeY - log2_min_luma_coding_block_size_minus2 - 2. The variable Log2ParMrgLevel is derived as follows:
[0532] Log2ParMrgLevel = log2_parallel_merge_level_minus2 + log2_min_luma_coding_block_size_minus2 + 2 (68)
[0533] 6.8. Example 8: Regarding signaling of a rectangular slice
[0534] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0535] . . .
[0536] The list ctbToSubpicIdx [ctbAddrRs] for ctbAddrR, a range including 0 to PicSizeInCtbsY - 1 that specifies the conversion from the CTB address of a picture raster scan to a subpicture index, is derived as follows:
[0537]
[0538] NumCtusInSlice[i], a list for range i including 0 to num_slices_in_pic_minus1, specifying the number of CTUs for the i-th slice when rect_slice_flag is equal to 1
[0539] SliceTopLeftTileIdx[i], a list for range i from 0 to num_slicesmins_in specifying the tile index of the tile containing the first CTU of the slice; range i from 0 to num_slices_in_pic_minus1 specifying the picture raster scan address of the j-th CTB within the i-th slice; and matrix CtbAddrInSlice[i][j], for range j from 0 to NumCtusInSlice[i]-1 The variable NumSlicesInTile[i], which specifies the number of slices of the tile containing the i-th slice (i.e., the tile with the same tile index as SliceTopLeftTileIdx[i]), It is derived as follows:
[0540]
[0541]
[0542]
[0543] It is a bitstream conformance requirement that the value of NumCtusInSlice[i] for i in the range from 0 to num_slices_in_pic_minus1 must be greater than 0. Additionally, it is a bitstream conformance requirement that the matrix CtbAddrInSlice[i][j] for the range i including 0 to num_slices_in_pic_minus1 and the range j including 0 to NumCtusInSlice[i]-1 must contain each of all CTB addresses in the range including 0 to PicSizeInCtbsY-1 exactly once.
[0544] . . .
[0545] 7.3.2.4 Picture parameter set RBSP syntax
[0546] 7.3.2.4 Picture parameter set RBSP syntax
[0547]
[0548]
[0549] 7.4.3.4 Picture Parameter Set Semantic
[0550] . . .
[0551] A tile_idx_delta_present_flag equal to 0 specifies that the tile_idx_delta[i] syntax element does not exist in the PPS and that all pictures referencing the PPS are partitioned into rectangular slice rows and rectangular slice columns in slice raster order. A tile_idx_delta_present_flag equal to 1 specifies that the tile_idx_delta[i] syntax element may exist in the PPS and that all rectangular slices of pictures referencing the PPS are assigned in the order indicated by the value of tile_idx_delta[i] in increasing values of i. When not present, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0552] slice_width_in_tiles_minus1 [i] plus 1 specifies the width of the i-th rectangular slice in tile column units. The value of slice_width_in_tiles_minus1 [i] must be in the range from 0 to NumTileColumns - 1.
[0553] When i is less than num_slices_in_pic_minus1 and NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0554] slice_height_in_tiles_minus1 [i] plus 1 specifies the height of the i-th rectangular slice of the tile row unit when num_exp_slices_in_tile [i] is 0. The value of slice_height_in_tiles_minus1 [i] must be in the range from 0 to NumTileRows - 1.
[0555] If i is less than num_slices_in_pic_minus1 and slice_height_in_tiles_minus1[i] does not exist, it is inferred to be equivalent to NumTileRows = 1 ? 0: slice_height_in_tiles_minus1 [i -1] .
[0556] num_exp_slices_in_tile[i] specifies the number of explicitly provided slice heights for the tile containing the i-th slice (i.e., the tile whose tile index is the same as SliceTopLeftTileIdx[i]). The value of num_exp_slices_in_tile[i] must be in the range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] - 1. If it does not exist, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0.
[0557] Note 3 - If num_exp_slices_in_tile[i] is equal to 0, the tile containing the i-th slice is not divided into multiple slices. Otherwise (num_exp_slices_in_tile[i] is greater than 0), the tile containing the i-th slice may or may not be divided into multiple slices.
[0558] exp_slice_height_in_ctus_minus1 [i] [j] plus 1 specifies the height of the j-th rectangular slice in the tile containing the i-th slice in CTU row units. The value of exp_slice_height_in_ctus_minus1 [i] [j] must be in the range from 0 to RowHeight [SliceTopLeftTileIdx [i] / NumTileColumns] - 1.
[0559] tile_idx_delta[i] specifies the difference between the tile index of the tile containing the first CTU in the (i+1)th rectangular slice and the tile index of the tile containing the first CTU in the i-th rectangular slice. The value of tile_idx_delta[i] must be in the range from -NumTilesInPic + 1 to NumTilesInPic - 1. If it does not exist, the value of tile_idx_delta[i] is inferred to be equal to 0. If it exists, the value of tile_idx_delta[i] must not be equal to 0.
[0560] . . .
[0561] 6.9. Example 9: Regarding signaling of a rectangular slice
[0562] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0563] . . .
[0564] NumCtusInSlice[i], a list for range i including 0 to num_slices_in_pic_minus1, specifying the number of CTUs of the i-th slice when rect_slice_flag is equal to 1; SliceTopLeftTileIdx[i], a list for range i including 0 to num_slices_in_pic_minus1, specifying the tile index of the tile containing the first CTU of the slice; CtbAddrInSlice[i][j], a matrix for range i including 0 to num_slices_in_pic_minus1 and range j including 0 to NumCtusInSlice[i]-1, specifying the picture raster scan address of the j-th CTB within the i-th slice; and a variable specifying the number of slices of the tile containing the i-th slice (i.e., the tile with the same tile index as SliceTopLeftTileIdx[i]). NumSlicesInTile[i] is derived as follows:
[0565]
[0566]
[0567]
[0568] . . .
[0569] Alternatively, in the next line above:
[0570] uniformSliceHeight = exp_slice_height_in_ctus_minus1 [i] [j] + 1
[0571] It changes as follows:
[0572] uniformSliceHeight = exp_slice_height_in_ctus_minus1 [i] [num_exp_slices_in_tile [i] -1] + 1
[0573] 6.10. Example 10: For subpicture and tile signaling
[0574] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0575] The variable NumTileColumns, specifying the number of tile columns, and the list colWidth[i], for i in the range from 0 to NumTileColumns-1, specifying the width of the i-th tile column in CTB units, are derived as follows:
[0576]
[0577]
[0578] The variable NumTileRows, specifying the number of tile rows, and the list RowHeight[j], specifying the height of the j-th tile row in CTB units for the range j from 0 to NumTileRows-1, are derived as follows:
[0579]
[0580] 7.3.2.3 Sequence parameter set RBSP syntax
[0581]
[0582] 7.3.2.4 Picture parameter set RBSP syntax
[0583]
[0584]
[0585] 7.4.3.4 Picture Parameter Set Semantic
[0586] . . .
[0587] num_exp_tile_columns_minus1 plus 1 specifies the number of explicitly provided tile column widths. The value of num_exp_tile_columns_minus1 must be in the range from 0 to PicWidthInCtbsY - 1. If it does not exist, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.
[0588] num_exp_tile_rows_minus1 plus 1 specifies the number of explicitly provided tile row heights. The value of num_exp_tile_rows_minus1 must be in the range from 0 to PicHeightInCtbsY - 1. If it does not exist, the value of num_tile_rows_minus1 is inferred to be equal to 0.
[0589] tile_column_width_minus1 [i] plus 1 is from 0 num_exp_tile_columns_minus1 Specifies the width of the i-th tile column in CTB units for i within the range including up to. tile_column_width_minus1[num_exp_tile_columns_minus1] is used to derive the width of tile columns where the index is greater than num_exp_tile_columns_minus1, as specified in Section 6.5.1. The value of tile_column_width_minus1[i] must be within the range including 0 to PicWidthInCtbsY - 1. If it does not exist, the value of tile_column_width_minus1[i] no_pic_partition_flag ? (PicWidthInCtbsY -1) : It is inferred to be the same as 0.
[0590] tile_row_height_minus1 [i] plus 1 is from 0 num_exp_tile_rows_minus1 Specifies the height of the i-th tile row in CTB units for i within the range including up to. tile_row_height_minus1 [num_exp_tile_rows_minus1] is used to derive the height of tile rows where the index is greater than num_exp_tile_rows_minus1, as specified in Section 6.5.1. The value of tile_row_height_minus1[i] must be in the range including 0 to PicHeightInCtbsY - 1. If it does not exist, the value of tile_row_height_minus1[i] is no_pic_partition_flag (PicHeightInCtbsY -1) : 0 It is inferred to be the same as.
[0591] . . .
[0592] 6.11. Example 11: Example of Semantic Change
[0593] exp_slice_height_in_ctus_minus1 [i] [j] plus 1 For cases where num_exp_slices_in_tile[i] is greater than 0, for j in the range including 0 to num_exp_slices_in_tile[i] - 1 Specifies the height of the j-th rectangular slice in the tile containing the i-th slice as a unit of the CTU row.
[0594] As specified in Section 6.5.1, exp_slice_height_in_ctus_minus1 [i] [num_exp_slices_in_tile [i] ] is the k-th tile having k greater than or equal to num_exp_slices_in_tile [i] containing the i-th slice of the unit in the CTU row Used to derive the height of a rectangular slice. The value of exp_slice_height_in_ctus_minus1 [i] [j] must be in the range from 0 to RowHeight [SliceTopLeftTileIdx [i] / NumTileColumns] - 1.
[0595] 6.12. Example 11: Example of Conformity Requirements
[0596] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0597] The variable NumTileColumns, specifying the number of tile columns, and the list colWidth[i], for i in the range from 0 to NumTileColumns-1, specifying the width of the i-th tile column in CTB units, are derived as follows:
[0598]
[0599] firstRemainingWidthInCtbsY = remainingWidthInCtbsY
[0600]
[0601] firstRemainingWidthInCtbsY must be greater than or equal to uniformTileColWidth.
[0602] The variable NumTileRows, specifying the number of tile rows, and the list RowHeight[j], specifying the height of the j-th tile row in CTB units for the range j from 0 to NumTileRows-1, are derived as follows:
[0603]
[0604] firstRemainingHeightInCtbsY = remainingHeightInCtbsY
[0605]
[0606] firstRemainingHeightInCtbsY must be greater than or equal to uniformTileRowHeight.
[0607] ...
[0608]
[0609] firstRemainingHeightInCtbsY = remainingHeightInCtbsY
[0610]
[0611]
[0612] ...
[0613] firstRemainingHeightInCtbsY must be greater than or equal to uniformSliceHeight.
[0614] 6.13. Example 12: Example of Slice Partitioning Signaling
[0615] 6.5.1 CTB Raster Scanning, Tile Scanning, and Subpicture Scanning Processes
[0616] ...
[0617] When rect_slice_flag is equal to 1, a list NumCtusInSlice [i] for a range i including 0 to num_slices_in_pic_minus1 specifying the number of CTUs of the i-th slice, [[ SliceTopLeftTileIdx [i] ]] for a range i including 0 to num_slicesmins_in specifying the tile index of the tile containing the first CTU of the slice, a matrix CtbAddrInSlice [i][j] for a range i including 0 to num_slices_in_pic_minus1 and a range j including 0 to NumCtusInSlice [i]-1 specifying the picture raster scan address of the j-th CTB within the i-th slice, and [[ variable NumSlicesInTile [i] ]] specifying the number of slices of the tile containing the i-th slice are derived as follows:
[0618]
[0619]
[0620]
[0621] The AddCtbsToSlice function(sliceIdx, startX, stopX, startY, stopY) is specified as follows:
[0622]
[0623] 7.3.2.4 Picture parameter set RBSP syntax
[0624]
[0625]
[0626] num_slices_in_pic_minus1 plus 1 specifies the number of rectangular slices in each picture referencing a PPS. The value of num_slices_in_pic_minus1 must be in the range including 0 to MaxSlicesPerPicture - 1, where MaxSlicesPerPicture is specified in Appendix A. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to the value of sps_num_subpics_minus1.
[0627] tile_idx_delta_present_flag equal to 0 specifies that the tile_idx_delta[i] syntax element does not exist in the PPS and that all pictures referencing the PPS are partitioned into rectangular slice rows and rectangular slice columns in slice raster order. tile_idx_delta_present_flag equal to 1 specifies that the tile_idx_delta[i] syntax element may exist in the PPS and that all rectangular slices of pictures referencing the PPS are specified in the order indicated by the value of tile_idx_delta[i] in increasing values of i. slice_width_in_tiles_minus1[i] plus 1 specifies the width of the i-th rectangular slice in tile column units.
[0628] slice_width_in_tiles_minus1 [i] plus 1 specifies the width of the i-th rectangular slice in tile column units. The value of slice_width_in_tiles_minus1 [i] must be in the range from 0 to NumTileColumns - 1.
[0629] When i is less than num_slices_in_pic_minus1 and NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0630] slice_height_in_tiles_minus1 [i] plus 1 specifies the height of the i-th rectangular slice of the tile row unit when num_exp_slices_in_tile [i] is 0. The value of slice_height_in_tiles_minus1 [i] must be in the range from 0 to NumTileRows - 1.
[0631] If i is less than num_slices_in_pic_minus1 and slice_height_in_tiles_minus1[i] does not exist, it is inferred that NumTileRows = 1 ? 0 : slice_height_in_tiles_minus1[i - 1].
[0632] num_exp_slices_in_tile[i] specifies the number of explicitly provided slice heights for the tile containing the i-th slice (i.e., the tile whose tile index is the same as SliceTopLeftTileIdx[i]). The value of num_exp_slices_in_tile[i] must be in the range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] - 1. If it does not exist, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0.
[0633] Note 3 - If num_exp_slices_in_tile[i] is equal to 0, the tile containing the i-th slice is not divided into multiple slices. Otherwise (num_exp_slices_in_tile[i] is greater than 0), the tile containing the i-th slice may or may not be divided into multiple slices.
[0634] exp_slice_height_in_ctus_minus1 [i] [j] plus 1 specifies the height of the j-th rectangular slice in the tile containing the i-th slice in CTU row units. The value of exp_slice_height_in_ctus_minus1 [i] [j] must be in the range from 0 to RowHeight [SliceTopLeftTileIdx [i] / NumTileColumns] - 1.
[0635] tile_idx_delta[i] specifies the difference between the tile index of the tile containing the first CTU in the (i+1)th rectangular slice and the tile index of the tile containing the first CTU in the i-th rectangular slice. The value of tile_idx_delta[i] must be in the range from -NumTilesInPic + 1 to NumTilesInPic - 1. If it does not exist, the value of tile_idx_delta[i] is inferred to be equal to 0. If it exists, the value of tile_idx_delta[i] must not be equal to 0.
[0636] slice_represented_in_ctb_flag[i], equivalent to 0, specifies that the top-left position, width, and height of the i-th slice are displayed in tile units. Otherwise (slice_represented_in_ctb_flag[i], equivalent to 1) Specifies that the top-left position, width, and height of the i-th slice are displayed in CtbSizeY units.
[0637] slice_top_left_x[i] specifies the horizontal position of the top-left unit of the i-th slice in CtbSizeY units or the width of the tile.
[0638] The length of the syntax element is Ceil(Log2( (pic_width_in_luma_samples + CtbSizeY -1) >> CtbLog2SizeY) ) bits. If it does not exist, the value of slice_top_left_x[i] is inferred to be equal to 0.
[0639] slice_top_left_y[i] specifies the vertical position of the top-left unit of the i-th slice in CtbSizeY units, which is the height of the tile.
[0640] The length of the syntax element is Ceil(Log2 ( (pic_height_in_luma_samples + CtbSizeY -1) >> CtbLog2SizeY) ) bits. If it does not exist, the value of slice_top_left_y[i] is inferred to be equal to 0.
[0641] slice_width_minus1 [i] plus 1 specifies the width of the i-th slice in tile or CtbSizeY width units. The length of the syntax element is Ceil(Log2( (pic_width_in_luma_samples + CtbSizeY -1) >> CtbLog2SizeY) ) bits. When not present, the value of slice_width_minus1 [i] is inferred to be equal to (slice_represented_in_ctb_flag [i] ? ( (pic_width_in_luma_samples + CtbSizeY-1) >> CtbLog2SizeY): NumTileColumns) -slice_top_left_x [i] -1.
[0642] slice_height_minus1 [i] plus 1 specifies the height of the i-th slice in height units of tile or CtbSizeY. The length of the syntax element is Ceil(Log2 ( (pic_height_in_luma_samples + CtbSizeY -1) >> CtbLog2SizeY) ) bits. When it does not exist, the value of slice_height_minus1[i] is inferred to be (slice_represented_in_ctb_flag[i] ? ( (pic_height_in_luma_samples + CtbSizeY-1) >> CtbLog2SizeY): N umTileRows) -slice_top_left_y[i] -1.
[0643] 6.14. Example 12: Exemplary Subblock-Based Merge Candidate List Size Signaling
[0644] 7.3.2.3 Sequence parameter set RBSP syntax
[0645]
[0646] 7.4.3.3 Sequence Parameter Set RBSP Semantics
[0647] [[five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merge motion vector prediction candidates supported in the SPS minus 5. The value of five_minus_max_num_subblock_merge_cand must be in the range of 0 to 5.]]
[0648] five_minus_max_num_affine_merge_cand specifies the maximum number of supported affine merge motion vector prediction candidates in the SPS minus 5. The value of five_minus_max_num_affine_merge_cand must be in the range of 0 to 5. If not provided, five_minus_max_num_affine_merge_cand is set to 5.
[0649] 7.4.3.7 Picture Header Structure Semantic
[0650] ph_temporal_mvp_enabled_flag specifies whether the temporal motion vector predictor can be used for inter-prediction for slices associated with the PH. If ph_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the slice associated with the PH must be restricted so that the temporal motion vector predictor is not used for decoding the slice. Otherwise (ph_temporal_mvp_enabled_flag is equal to 1), the temporal motion vector predictor can be used for decoding the slice associated with the PH. If it does not exist, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. If the reference picture of the DPB does not have the same spatial resolution as the current picture, the value of ph_temporal_mvp_enabled_flag must be equal to 0.
[0651] MaxNumSubblockMergeCand, the maximum number of sub-block-based merge MVP candidates, is derived as follows:
[0652] [[If (sps_affine_enabled_flag) MaxNumSubblockMergeCand = 5 -five_minus_max_num_subblock_merge_cand (87)
[0653] else
[0654] MaxNumSubblockMergeCand = sps_sbtmvp_enabled_flag && ph_temporal_mvp_enabled_flag
[0655] The value of MaxNumSubblockMergeCand must be within the range from 0 to 5.
[0656] MaxNumSubblockMergeCand = Min(5, (sps_sbtmvp_enabled_flag && ph_temporal_mvp_enable_flag) + 5 - five_minus_max_num_affine_merge_cand).
[0657] FIG. 7 is a block diagram illustrating an exemplary video processing system (1900) in which the various technologies disclosed herein may be implemented. Various implementations may include some or all of the components of the system (1900). The system (1900) may include an input (1902) for receiving video content. The video content may be received in a raw or uncompressed format, for example, as 8 or 10-bit multi-component pixel values, or in a compressed or encoded format. The input (1902) may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, a passive optical network (PON), etc., and wireless interfaces such as Wi-Fi or a cellular interface.
[0658] The system (1900) may include a coding component (1904) capable of implementing various coding or encoding methods described in this document. The coding component (1904) may reduce the average bitrate of the video from the input (1902) to the output of the coding component (1904) to generate a coded representation of the video. Thus, coding technology is also referred to as video compression or video transcoding technology. The output of the coding component (1904) may be stored or transmitted via connected communication, as represented by the component (1906). The stored or transmitted bitstream (or coded) representation of the video received at the input (1902) may be used by the component (1908) to generate pixel values or a displayable video transmitted to the display interface (1910). The process of generating a video viewable by a user from the bitstream representation is also referred to as video decompression. In addition, while specific video processing operations are referred to as "coding" operations or tools, you will understand that coding tools or operations are used in the encoder, and the corresponding decoding tools or operations that return the coding results are performed by the decoder.
[0659] 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 Attached File), PCI, and IDE interfaces. The technology described in this document may be implemented in various electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0660] FIG. 8 is a block diagram of a video processing apparatus (3600). The apparatus (3600) may be used to implement one or more of the methods described herein. The apparatus (3600) may be implemented as a smartphone, tablet, computer, Internet of Things (IoT) receiver, etc. The apparatus (3600) may include one or more processors (3602), one or more memories (3604), and video processing hardware (3606). The processor(s) (3602) may be configured to implement one or more of the methods described herein. The memory (memories) (3604) may be used to store data and code used to implement the methods and techniques described herein. The video processing hardware (3606) may be used to implement some of the techniques described herein in hardware circuitry.
[0661] FIG. 10 is a block diagram illustrating an exemplary video coding system (100) that may utilize the techniques of the present disclosure.
[0662] As illustrated in FIG. 10, a video coding 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 encoding device. The destination device (120) can decode the encoded video data generated by the source device (110) and may be referred to as a video decoding device.
[0663] The source device (110) may include a video source (112), a video encoder (114), and an input / output (I / O) interface (116).
[0664] The video source (112) may include a video capture device, an interface for receiving video data from a video content provider, a computer graphics system for generating video data, or a combination of such sources. The video data may include one or more pictures. A video encoder (114) encodes the video data of the video source (112) to generate a bitstream. The bitstream may include a sequence of bits that form a coded representation of the video data. The bitstream may include a coded picture and associated data. The coded picture is a coded representation of the picture. The 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 a transmitter. The encoded video data may be transmitted directly to a destination device (120) via the I / O interface (116) through a network (130a). The encoded video data may also be stored in a storage medium / server (130b) for access by the destination device (120).
[0665] The target device (120) may include an I / O interface (126), a video decoder (124), and a display device (122).
[0666] The I / O interface (126) may include a receiver and / or a modem. The I / O interface (126) may obtain encoded video data from a source device (110) or a storage medium / server (130b). A video decoder (124) may decode the encoded video data. A display device (122) may display the decoded video data to a user. The display device (122) may be integrated with the destination device (120) or may be located outside the destination device (120) configured to interface with an external display device.
[0667] The video encoder (114) and video decoder (124) can operate according to video compression standards such as the High Efficiency Video Coding (HEVC) standard, the Multipurpose Video Coding (VVC) standard, and other current and / or additional standards.
[0668] FIG. 11 is a block diagram illustrating an example of a video encoder (200) that may be the video encoder (114) of the system (100) exemplified in FIG. 10.
[0669] A video encoder (200) may be configured to perform any or all of the techniques of the present disclosure. In the example of FIG. 11, the video encoder (200) includes a plurality of functional components. The techniques described in the present 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 the present disclosure.
[0670] The functional components of the video encoder (200) may include a partition unit (201), a mode select unit (203), a motion estimation unit (204), a motion compensation unit (205), and an intra prediction unit (206), a prediction unit (202), a residual generation unit (207), a transform unit (208), a quantization unit (209), an inverse quantization unit (210), an inverse transform unit (211), a reconstruction unit (212), a buffer (213), and an entropy encoding unit (214).
[0671] In another example, the video encoder (200) may include more or fewer or different functional components. For example, the prediction unit (202) may include an intra-block copy (IBC) unit. The IBC unit can perform a prediction in IBC mode when at least one reference picture is a picture containing the current video block.
[0672] Additionally, some components, such as the motion estimation unit (204) and the motion correction unit (205), may be highly integrated, but in the example of FIG. 11, they are depicted as separated for the purpose of explanation.
[0673] The partition device (201) can partition a picture into one or more video blocks. The video encoder (200) and video decoder (300) can support various video block sizes.
[0674] The mode selection unit (203) selects a coding mode, e.g., intra or inter, based on the error result, provides the resulting intra or inter coded block to the residual generation unit (207) to generate residual block data, and provides it to the reconstruction unit (212) to reconstruct 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 prediction (CIIP) modes, in which 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 for the block (e.g., subpixel or integer pixel precision) in the case of inter prediction.
[0675] To perform inter-prediction in the current video block, the motion estimation unit (204) can generate motion information for the current video block by comparing one or more reference frames in the buffer (213) with the current video block. The motion compensation unit (205) can determine a predicted video block for the current video block based on motion information from the buffer (213) other than the picture associated with the current video block and decoded picture samples.
[0676] The motion estimation unit (204) and the motion compensation unit (205) can perform different actions on the current video block depending on whether the current video block is in slice I, slice P, or slice B.
[0677] In some examples, the motion estimation unit (204) can perform uni-directional prediction for the current video block, and the motion estimation unit (204) can retrieve a reference picture from list 0 or list 1 for a reference video block for the current video block. Then, the motion estimation unit (204) can generate a reference index representing the reference picture from list 0 or list 1, which includes a reference video block and a motion vector representing the spatial displacement between the current video block and the reference video block. The motion estimation unit (204) can output the reference index, the predicted direction indicator, and the motion vector as motion information for the current video block. The motion compensation unit (205) can generate a predicted video block of the current block based on the reference video block indicated by the motion information of the current video block.
[0678] In another example, the motion estimation unit (204) can perform a bi-directional prediction for the current video block, and the motion estimation unit (204) can retrieve a reference picture from List 0 for reference video blocks for the current video block, and also retrieve a reference picture from List 1 for other reference video blocks for the current video block. Then, the motion estimation unit (204) can generate a reference index representing the reference picture in List 0 and List 1, which includes a reference video block and a motion vector representing the spatial displacement between the reference video block and the current video block. The motion estimation unit (204) can output the reference index and motion vector of the current video block as motion information of the current video block. The motion compensation unit (205) can generate a predicted video block of the current video block based on the reference video block indicated by the motion information of the current video block.
[0679] In some examples, the motion estimation unit (204) can output a whole set of motion information for decoding processing of the decoder.
[0680] In some examples, the motion estimation unit (204) may not output a full set of motion information for the current video. Rather, the motion estimation unit (204) may signal motion information for the current video block by referring to motion information of other video blocks. For example, the motion estimation unit (204) may determine that the motion information of the current video block is sufficiently similar to the motion information of neighboring video blocks.
[0681] In one example, the motion estimation unit (204) may indicate a value to the video decoder (300) that indicates that the current video block has the same motion information as another video block in a syntax structure connected to the current video block.
[0682] In another example, the motion estimation unit (204) can identify the other video block and the motion vector difference (MVD) in 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 displayed video block. The video decoder (300) can use the motion vector of the displayed video block and the motion vector difference to determine the motion vector of the current video block.
[0683] 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 merged mode signaling.
[0684] The intra prediction unit (206) can perform intra prediction for the current video block. When the intra prediction unit (206) performs intra prediction for the current video block, the intra prediction unit (206) can generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include the predicted video block and various syntax elements.
[0685] The residual generation unit (207) can generate residual data for the current video block by subtracting the predicted video block (e.g., indicated by a minus sign) of the predicted video block from the current video block. The residual data of the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.
[0686] In another example, there may be no residual data for the current video block, and for example, in skip mode, the residual generation unit (207) may not perform a subtraction operation.
[0687] The transform processing unit (208) can generate one or more transform factor video blocks for the current video block by applying one or more transforms to the residual video blocks connected to the current video block.
[0688] After the transform processing unit (208) generates a transform factor video block associated with the current video block, the quantization unit (209) can quantize the transform factor video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0689] The inverse quantization unit (210) and the inverse transform unit (211) may each apply the inverse quantization unit and the inverse transform unit to the transform coefficient video block to reconstruct a residual video block from the transform coefficient video block. The reconstruction unit (212) may generate a reconstructed video block associated with the current block to be stored in the buffer (213) by adding the reconstructed residual video block to the corresponding sample from one or more predicted video blocks generated by the prediction unit (202).
[0690] After the reconstruction unit (212) reconstructs the video block, a loop filtering operation is performed to reduce video block artifacts in the video block.
[0691] The entropy encoding unit (214) may receive data from other function components of the video encoder (200). When the entropy encoding unit (214) receives data, the entropy encoding unit (214) may perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream containing the entropy encoded data.
[0692] FIG. 12 is a block diagram illustrating an example of a video decoder (300) that may be a video decoder (114) of the system (100) exemplified in FIG. 10.
[0693] A video decoder (300) may be configured to perform any or all of the techniques of the present disclosure. In the example of FIG. 12, the video decoder (300) includes a plurality of functional components. The techniques described in the present 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 the present disclosure.
[0694] In the example of FIG. 12, 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 transformation unit (305), and a reconstruction unit (306) and a buffer (307). In some examples, the video decoder (300) may perform a decoding pass that is generally reciprocal with the encoding pass described for the video encoder (200) (Fig. 11).
[0695] The entropy decoding unit (301) can retrieve an encoded bitstream. The encoded bitstream may contain entropy-coded video data (e.g., an encoded block of video data). The entropy decoding unit (301) can decode the entropy-coded 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) can determine this information by, for example, performing AMVP and merge modes.
[0696] The motion compensation unit (302) can generate a motion compensation block by performing interpolation based on an interpolation filter. An identifier for the interpolation filter used with sub-pixel precision may be included in the syntax element.
[0697] The motion compensation unit (302) can calculate interpolation values for sub-integer pixels of a reference block using an interpolation filter used by the video encoder (200) while encoding a video block. The motion compensation unit (302) can determine the interpolation filter used by the video encoder (200) based on the received syntax information and generate a prediction block using the interpolation filter.
[0698] The motion compensation unit (302) may use some syntax information to determine the size of the block used to encode frames and / or slices of the encoded video sequence, partition information describing how each macroblock of the encoded video sequence is partitioned, how each partition is encoded, 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.
[0699] The intra prediction unit (303) may use an intra prediction mode received, for example, from a bitstream to form a prediction block from spatially adjacent blocks. The de-quantization unit (303) de-quantizes (e.g., de-quantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit (301). The inverse transform unit (303) applies the inverse transform.
[0700] The reconstruction unit (306) can form a decoded block by summing the corresponding prediction block and residual block generated by the motion compensation unit (202) or the intra prediction unit (303). If desired, the decoded block may be filtered by applying a deblocking filter to remove blocking artifacts. The decoded video block is stored in a buffer (307), which provides a reference block for subsequent motion compensation / intra prediction and generates a decoded video for playback on a display device.
[0701] In some embodiments, a list of preferred solutions is provided below.
[0702] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., Item 1).
[0703] 1. In a video processing method (e.g., method (900) illustrated in FIG. 9), the method comprises: a step (902) of performing a conversion between videos comprising one or more video pictures, wherein each video picture comprises one or more slices and one or more subpictures comprising a coded representation of the video, and the coded representation follows a format rule; the format rule specifies that when a rectangular slice mode is enabled for the video picture, a picture-level slice index for each slice of each subpicture of the video picture is derived from the coded representation without explicit signaling; and the format rule specifies that the number of coding tree units of each slice can be derived from the picture-level slice index.
[0704] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., Item 2).
[0705] 2. A video processing method comprises: a step of performing a conversion between videos including one or more video pictures, wherein each video picture includes one or more slices and one or more subpictures including a coded representation of the video, and the coded representation follows a format rule; and the format rule specifies that a subpicture level slice index is derivable based on information of the coded representation without signaling a subpicture level slice index of the coded representation.
[0706] 3. In the method of paragraph 2, the format rule specifies that, due to the use of a rectangular slice structure, the subpicture level slice index corresponds to the index for the slice in the subpicture slice list.
[0707] 4. In the method of paragraph 2, the format rule specifies that the subpicture-level slice index is derived from a specific value of the picture-level slice index.
[0708] The following solution shows an exemplary embodiment of the technology discussed in the previous sections (e.g., items 5 and 6).
[0709] 5. A video processing method, wherein the method comprises: performing a conversion between videos including one or more video pictures, wherein each video picture includes one or more subpictures and / or one or more tiles and coded representations of the video, and the coded representations follow format rules; and the conversion follows constraint rules.
[0710] 6. In the method of paragraph 5, the constraint rule specifies that a tile cannot be in one or more subpictures.
[0711] 7. In the method of paragraph 5, the constraint rule specifies that a subpicture cannot contain two slices smaller than the corresponding tile to which the two slices belong.
[0712] The following solution shows an exemplary embodiment of the technology discussed in the previous sections (e.g., items 7 and 8).
[0713] 8. In a video processing method, the method comprises: performing a conversion between videos including one or more video pictures, each video picture including one or more tiles and / or one or more slices; the coded representation follows a phonat rule; and the format rule specifies that a field at the video picture level conveys information regarding the division of slices and / or tiles in the video picture.
[0714] 9. In the method of paragraph 8, the field includes a video picture header.
[0715] 10. In the method of paragraph 8, the field includes a set of picture parameters.
[0716] 11. In any one of the methods of paragraphs 8 through 10, the format rule specifies that slice partitioning information is omitted at the slice level by including slice partitioning information in a field at the video picture level.
[0717] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., Item 5).
[0718] 12. In a video processing method, the method comprises: a step of performing a conversion between a video containing one or more pictures and a coded representation of the video, wherein the conversion follows a partitioning rule in which the minimum number of slices into which the video picture is partitioned is a function of whether a rectangular partition is used to partition the video picture.
[0719] 13. In the method of paragraph 12, the partitioning rule specifies using at least two slices for non-rectangular partitioning and at least one slice for rectangular partitioning.
[0720] 14. In the method of paragraph 12, the partitioning rule is also a function of how many subpictures are used to partition the video picture and / or how many subpictures are used.
[0721] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., items 8-12).
[0722] 15. A video processing method comprises: a step of performing a conversion between a video slice of a video region of a video and a coded representation of the video; the coded representation follows a phonat rule; a format rule specifies that the coded representation signals the video slice based on the top-left position of the video slice, and the format rule specifies that the coded representation signals the height and / or width of the video slice in partitioning information signaled at the video unit level.
[0723] 16. In the method of paragraph 15, the format rule specifies that video slices are signaled in the order of slices defined by the format rule.
[0724] 17. In the method of paragraph 15, the video area corresponds to a subpicture and the video unit level corresponds to a video picture.
[0725] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., Item 12).
[0726] 18. A video processing method, wherein the method comprises: a step of performing a conversion between a video containing a video picture and a coded representation of the video, wherein the coded representation follows a phonat rule; and a format rule specifies to omit signaling the difference between the tile index of the first tile of a rectangular slice and the tile index of the first tile of the next rectangular slice.
[0727] 19. In the method of paragraph 18, the difference can be derived from the video picture and the 0th slice of the rectangular slice.
[0728] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., Item 13).
[0729] 20. A video processing method, the method comprises: a step of performing a conversion between a video and a coded representation of the video, wherein the coded representation follows a phonat rule and a format rule controls the signaling of information used to derive the number of tile columns or rows in the video picture, based on the relationship between the width of the video picture and the size of the coding tree unit.
[0730] 21. In the method of paragraph 20, the format rule specifies that if the width of the video picture is less than or equal to the width of the coding tree unit, signaling the number of tile rows or the number of tile columns is excluded.
[0731] The following solution shows an exemplary embodiment of the technology discussed in the previous section (e.g., Item 16).
[0732] 22. A video processing method comprises: a step of performing a conversion between a video containing one or more video pictures and a coded representation of the video, wherein the coded representation follows a phonat rule and a format rule specifies that tile layout information is included in the coded representation of the video picture containing uniformly spaced tiles and non-uniformly spaced tiles.
[0733] 23. In the method of paragraph 22, tile layout information is included in the syntax flags included in the picture parameter set.
[0734] 24. In any one of the methods of paragraphs 22 to 23, the number of explicitly signaled tile rows or columns is not less than the number of unevenly spaced tiles.
[0735] 25. In any one of the methods of paragraphs 22 to 23, the number of explicitly signaled tile rows or columns is greater than or equal to the number of uniformly spaced tiles.
[0736] 26. In any one of the methods of paragraphs 1 to 25, the video area includes a video coding unit.
[0737] 27. In any one of the methods of paragraphs 1 through 26, the video area includes a picture.
[0738] 28. In any one of the methods of paragraphs 1 through 27, the conversion includes the step of encoding the video into a coded representation.
[0739] 29. In any one of the methods of claims 1 to 27, the conversion includes the step of decoding a coded representation to generate pixel values of the video.
[0740] 30. A video decoding device comprising a processor configured to implement the method cited in one of the methods of claims 1 through 29.
[0741] 31. A video encoding device comprising a processor configured to implement the method cited in any one of the methods of claims 1 through 29.
[0742] 32. In a computer program in which computer code is stored, the code causes the processor, when executed by the processor, to implement the method cited in any one or more of Solutions 1 to 29.
[0743] 33. Methods, devices, and systems described in this document.
[0744] FIG. 13 is a flowchart representation of a video processing method according to the present invention. The method (1300) includes, in operation (1310), the step of performing a conversion between a video picture and a bitstream of a video, which includes one or more tiles and one or more rectangular slices according to a rule. The rule specifies that, in order to iteratively determine information about one or more rectangular slices, a variable representing a tile index is updated only for slices having an index smaller than the number of rectangular slices of the video picture minus 1.
[0745] In some embodiments, the variable is not updated to determine information about the last rectangular slice of the video picture. In some embodiments, the step of determining information is performed using a set of picture parameters referenced by the video picture. In some embodiments, one of the one or more rectangular slices has a slice index of i, and the information includes: at least one of the tile index of a tile containing a first coding tree unit within the slice, the width of the slice, or the height of the slice. In some embodiments, the information includes: a list of the number of coding tree units of one or more rectangular slices, the top-left tile index for one or more rectangular slices, or at least one of the addresses of the picture raster scan address of the coding tree block of the slice. In some embodiments, the step of updating the variable includes adding the difference between (1) the first tile index of a first tile containing a first coding tree unit in a first slice having a slice index of (i + 1) and (2) the second tile index of a second tile containing a first coding tree unit in a second slice having a slice index of i. In some embodiments, the step of updating the variable includes adding the width of the slice as a unit of the tile column. In some embodiments, (A-1) *B is added to update the variable, where A represents the slice height of the tile row unit and B represents the number of tile columns for the video tile. In some embodiments, the first tile of one or more tiles includes at least one rectangular slice, and information for at least one rectangular slice includes the height of each of at least one rectangular slice.
[0746] FIG. 14 is a flowchart representation of a method (1400) for video processing according to the present invention. The method (1400) includes, in operation (1410), a step of performing a conversion between a video picture containing one or more subpictures and a bitstream of the video. The conversion follows a rule that specifies that a syntax element of a sequence parameter set representing the number of subpictures of a video picture is omitted when the maximum picture width and the maximum picture height are less than or equal to the dimension of a coding tree block.
[0747] FIG. 15 is a flowchart representation of a method (1500) for video processing according to the present invention. The method (1500) includes, in operation (1510), a step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video. The conversion follows a rule that specifies that if the width of the video picture is less than or equal to the dimension of a coding tree block, a syntax element indicating the number of explicitly provided tile column widths is omitted from the bitstream.
[0748] FIG. 16 is a flowchart representation of a method (1600) for video processing according to the present invention. The method (1600) includes, in operation (1610), a step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video. The conversion follows a rule that specifies that if the height of the video picture is less than or equal to the dimension of a coding tree block, a syntax element indicating the number of explicitly provided tile row heights is omitted from the bitstream.
[0749] In some embodiments, the dimensions of the coding tree block are indicated by the parameter CtbSizeY. In some embodiments, the number of subpictures of the video picture is inferred to be 0.
[0750] FIG. 17 is a flowchart representation of a method (1700) for video processing according to the present technology. The method (1700) includes, in operation (1710), a step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video. The conversion follows a rule that specifies that one or more syntax elements representing the column width of one or more tiles are omitted from the bitstream when the number of explicitly provided tile column widths is equal to the picture width of a unit of a coding tree block. In some embodiments, the column width of one or more tiles is inferred to be 0.
[0751] FIG. 18 is a flowchart representation of a method (1800) for video processing according to the present technology. The method (1800) includes, in operation (1810), a step of performing a conversion between a video picture containing one or more tiles and a bitstream of the video. The conversion follows a rule that specifies that one or more syntax elements representing the row height of one or more tiles are omitted from the bitstream when the number of explicitly provided tile row heights is equal to the picture height of a unit of a coding tree block. In some embodiments, the row height of one or more tiles is inferred to be 0.
[0752] FIG. 19 is a flowchart representation of a method (1900) for video processing according to the present invention. The method (1900) includes, in operation (1910), a step of performing a conversion between a video picture containing one or more slices and a bitstream of the video. The conversion follows a rule that specifies that slice partitioning information is included in the bitstream.
[0753] In some embodiments, slice partitioning information includes the width of one or more slices. In some embodiments, the width of a slice is indicated using the value obtained by subtracting X from the width of a slice, where X is a non-negative value. In some embodiments, X is equal to 1, and the width of a slice is indicated using the variable slice_width_minus1[i], where i represents the slice index of the slice. In some embodiments, slice partitioning information includes the height of one or more slices. In some embodiments, the height of a slice is indicated using the value obtained by subtracting X from the height of a slice, where X is a non-negative value. In some embodiments, X is equal to 1, and the height of a slice is indicated using the variable slice_height_minus1[i], where i represents the slice index of the slice.
[0754] In some embodiments, whether slice partitioning information includes a top-left position or a dimension of the slice is conditioned based on the characteristics of the slice. In some embodiments, slice partitioning information includes the top-left position or dimension of the slice if the video picture contains one or more rectangular slices. In some embodiments, the characteristics of the slice include the index of the slice, the dimension of the coding tree block associated with the slice, the dimension of the video picture containing the slice, or the number of slices in the video picture.
[0755] In some embodiments, the video picture comprises one or more subpictures, wherein whether the slice partitioning information includes a top-left position or a dimension of the slice is conditioned based on the relationship between the partitioning of one or more slices and the partitioning of one or more subpictures. In some embodiments, the slice partitioning information includes a top-left position or a dimension of the slice if at least one of the one or more subpictures comprises a slice larger than one.
[0756] In some embodiments, whether slice partitioning information includes the top-left position or dimension of a slice is conditioned based on the number of slices in the video picture. In some embodiments, slice partitioning information includes the top-left position or dimension of a slice to represent a slice when the number of slices in the video picture is greater than 1. In some embodiments, the top-left position or dimension of at least one slice is represented as a unit of the coding tree unit dimension or a unit of the tile dimension. In some embodiments, a syntax element is used in the transformation to indicate whether the top-left position or dimension of at least one slice is represented as a unit of the coding tree unit dimension or a unit of the tile dimension. In some embodiments, a syntax element indicates whether the top-left position or dimension of each of one or more slices is represented as a unit of the coding tree unit dimension or a unit of the tile dimension. In some embodiments, the syntax element is slice_represented_in_ctb_flag[i], where i represents the index of the slice.
[0757] In some embodiments, at least one of the top-left position or dimension of the slice is omitted from the slice partitioning information, and the top-left position or dimension of the slice is inferred as a default value. In some embodiments, the default value for the top-left position of the slice includes (0, 0). In some embodiments, the default value for the dimension of the slice is based on the syntax element slice_represented_in_ctb_flag[i], where i represents the index of the slice. In some embodiments, the default value for the width of the slice is equal to (slice_represented_in_ctb_flag[i] ? ( (pic_width_in_luma_samples + CtbSizeY-1) >>CtbLog2SizeY): NumTileColumns) -slice_top_left_x[i] -1. In some embodiments, the default value for the height of the slice is equal to (slice_represented_in_ctb_flag [i] ? ( (pic_height_in_luma_samples + CtbSizeY-1) >> CtbLog2SizeY): NumTileRows) -slice_top_left_y [i] -1.
[0758] FIG. 20 is a flowchart representation of a method (2000) for video processing according to the present invention. The method (2000) includes, in operation (2010), a step of performing a conversion between a video tile containing one or more rectangular slices according to a rule. The rule specifies that a uniform slice height is determined based on a first syntax element specifying the height of a rectangular slice of a video tile of a unit in a row of a coding tree unit and a second syntax element specifying the number of explicitly provided slice heights of the video tile.
[0759] In some embodiments, the first syntax element is exp_slice_height_in_ctus_minus1[i] and the second syntax element is num_exp_slices_in_tile[i], where i is the index of the rectangular slice and the uniform slice height is based on exp_slice_height_in_ctus_minus1[i] [num_exp_slices_in_tile[i]-1]. In some embodiments, the (num_exp_slices_in_tile[i]-1)th non-uniform slice height is based on exp_slice_height_in_ctus_minus1[i][num_exp_slices_in_tile[i]-1].
[0760] FIG. 21 is a flowchart representation of a method (2100) for video processing according to the present invention. The method (2100) includes, in operation (2110), the step of performing a conversion between a video picture and a bitstream of a video that includes one or more tiles according to a rule. The rule specifies that the syntax element is greater than the dimension of a uniform tile column or row, and the syntax element represents the dimension of a unit of a coding tree block excluding the total dimension of the number of explicitly provided tile column widths or row heights.
[0761] In some embodiments, the syntax element is firstRemainingWidthInCtbsY. In some embodiments, the syntax element is firstRemainingHeightInCtbsY.
[0762] FIG. 22 is a flowchart representation of a method (2200) for video processing according to the present invention. The method (2200) includes, in operation (2210), a step of performing a conversion between a video tile containing one or more slices according to a rule and a bitstream of video. The rule specifies that a syntax element is greater than or equal to the height of a uniform slice, wherein the syntax element represents the height of a unit of a coding tree block excluding the total height of a plurality of explicitly provided slice heights.
[0763] FIG. 23 is a flowchart representation of a method (2300) for video processing according to the present invention. The method (2300) includes, in operation (2310), a step of performing a conversion between a video and a bitstream of the video according to a rule. The rule specifies that a syntax element is used in the conversion to indicate the maximum number of affine merging candidates allowed in a subblock-based merging candidate list.
[0764] In some embodiments, whether a syntax element is signaled for transformation is based on whether an affine prediction tool is enabled. In some embodiments, the syntax element is inferred to have a default value when the syntax element is omitted from the bitstream such that the maximum number of affine merge candidates allowed in the subblock-based merge candidate list is 0. In some embodiments, the maximum number of affine merge candidates allowed in the subblock-based merge candidate list is equal to the difference between 5 and the syntax element. In some embodiments, the syntax element is in the range [0, X], where X is an integer. In some embodiments, X is 5.
[0765] In some embodiments, the syntax element is inferred to be 5 if the syntax element is omitted in the bitstream. In some embodiments, the maximum number of affine merge candidates allowed in the subblock-based merge candidate list is determined based on the syntax element and the maximum number of allowed subblock-based Temporal Motion Vector Prediction (TMVP) merge candidates. In some embodiments, the maximum number of affine merge candidates allowed in the subblock-based merge candidate list is Min (5, (sps_sbtmvp_enabled_flag && ph_temporal_mvp_enable_flag) + 5 -five_minus_max_num_affine_merge_candus), where five_minus_max_num_affine_merge_candus is the syntax element.
[0766] In some embodiments, the conversion includes the step of encoding the video into a bitstream. In some embodiments, the conversion includes the step of decoding the video from the bitstream.
[0767] In the solution described herein, the encoder may follow format rules by generating a coded representation according to the format rules. In the solution described herein, the decoder may use format rules to parse the syntax elements of the coded representation with knowledge of the presence and absence of syntax elements according to the format rules in order to generate a decoded video.
[0768] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from a pixel representation of a video to a corresponding bitstream representation or vice versa. The bitstream representation of a current video block may correspond to bits that are co-located or spread out at different locations within the bitstream, for example, as defined by the syntax. For example, a macroblock may be encoded using bits in terms of the converted and coded error residual values, as well as in the header and other fields of the bitstream. Additionally, during the conversion, the decoder may parse the bitstream with the knowledge that some fields may or may not be present based on decisions as described in the solution above. Similarly, the encoder may determine whether a specific syntax field is included and, accordingly, generate a coded representation by including or excluding the syntax field from the coded representation.
[0769] The disclosures and other solutions, examples, embodiments, modules, and functional operations described in this document may be implemented in digital electronic circuits, or in computer software, firmware, or hardware, and may be implemented in this document and its structural equivalents, or in combination of one or more of these. The disclosed and other embodiments may be implemented in one or more computer program products, that is, one or more modules of computer program instructions may be encoded on a computer-readable medium to execute, or control the operation of a data processing device. A computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of a material that affects machine-readable radio signals, or one or more combinations thereof. The term “data processing device” includes, for example, a programmable processor, a computer, or a multiprocessor or computer, any device, device, and computer for processing data. A device may include code that, in addition to hardware, creates an execution environment for a corresponding computer program, for example, processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. The propagated signal is an artificially generated signal, for example, an electrical, optical, or electromagnetic signal generated by a machine, which is created to encode information for transmission to a suitable receiver device.
[0770] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language, including compiled languages, and may be distributed in any form as a standalone program or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored in other programs or data (e.g., one or more scripts stored in a markup language document), a single file dedicated to the corresponding program, or multiple coordinated files (e.g., a file storing one or more modules, subprograms, or parts of code). A computer program may be distributed to be executed on a single computer or site, or on multiple computers distributed across multiple sites and interconnected by a communication network.
[0771] The processes and logic flows described in this document can be performed by one or more programmable processors to operate on input data and generate outputs to perform functions. Processes and logic flows can also be performed, and the device can be implemented as a special-purpose logic circuit, for example, a Field Programmable Gate Array (FPGA) or an Application-Specific Integrated Circuit (ASIC).
[0772] Processors suitable for the execution of computer programs include, for example, general-purpose and special-purpose microprocessors and one or more processors of all types of digital computers. Generally, processors receive instructions and data from read-only memory or random access memory, or both. An essential element of a computer is a processor for executing one or more memory devices for storing instructions and data. Generally, a computer also receives data from, or transmits data to, one or more mass storage devices for storing data, such as magnetic, magneto-optical disks, or optical disks, or includes or is operablely connected to both. However, a computer does not require these devices. Computer-readable media suitable for storing computer program instructions and data include semiconductor memory devices, for example, EPROM, EEPROM, and flash memory devices; magnetic disks, for example, internal hard disks or removable disks; magneto-optical disks; and all forms of non-volatile memory, media, and memory devices, including CD-ROM and DVD-ROM disks. Processors and memory may be supplemented or integrated by special-purpose logic circuits.
[0773] Although this patent document contains many details, they should not be interpreted as a limitation on the scope of any subject matter or what may be claimed, but rather as a description of features that may be specific to a particular embodiment of a particular technology. Specific features described in this patent document may be implemented in combination in a single embodiment in the context of separate embodiments. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments individually or in any suitable sub-combination. Furthermore, as foregoing, features may be described as acting in a specific combination and may even be initially claimed so, but one or more features from the claimed combination may, in some cases, be excluded from the combination, and the claimed combination may relate to a sub-combination or a variation of a sub-combination.
[0774] Likewise, although operations are depicted in the drawings in a specific order, it should not be understood that, in order to achieve a desired result, these operations must be performed in the specific order indicated or in a sequential order, or that all illustrated operations must be performed. Furthermore, in the embodiments described in this patent document, the separation of various system components should not be understood as requiring such separation in all embodiments.
[0775] Only a few implementations and examples are described, and other implementations, improvements, and variations may be made based on what is described and illustrated in this patent document.
Claims
Claim 1 A method for processing video data, comprising: a step of determining that a scanning process is applied to a video picture for conversion between a video including a video picture and a bitstream of said video, wherein the video picture is partitioned into one or more tiles, one or more slices, and multiple coding tree units; wherein, in the scanning process, when a rectangular slice mode is used for said video picture, a variable for deriving a tile index of a tile including a first coding tree unit within a slice having a slice index is updated when the slice index is smaller than the value of a first syntax element and is not updated when the slice index is not smaller than the value of the first syntax element; A method comprising the step of performing the transformation according to the above determination, wherein the first syntax element is included in a set of picture parameters referenced by the video picture in the bitstream to derive information about one or more slices in the video picture, the number of slices in the video picture is greater than the value of the first syntax element, and the slice has a picture-level slice index of I, where i is an integer, and the step of updating the variable includes the step of adding the difference between a first tile index of a first tile containing the first coding tree unit in a slice having an index of (i+1) and the tile index of a tile containing the first coding tree unit in the slice having an index of i, wherein the difference is specified by a second syntax element included in the set of picture parameters for the slice. Claim 2 A method according to claim 1, wherein for a first slice having a slice index smaller than the value of the first syntax element, the width of the first slice of the unit of the tile column is derived from a second syntax element corresponding to the first slice of the picture parameter set, and the height of the first slice of the unit of the tile row is derived from a fourth syntax element corresponding to the first slice of the picture parameter set, provided that the tile containing the first slice is not divided into multiple slices, and for a second slice having a slice index not smaller than the value of the first syntax element, the width of the second slice of the unit of the tile column is derived from the difference between a plurality of tile columns and tileX, and the height of the second slice of the unit of the tile row is derived from the number of tile rows and tileY, wherein tileX and tileY are determined based on the number of tile columns. Claim 3 A method according to claim 1, wherein the second syntax element does not exist in the picture parameter set for the slice having index i when the index of i is not smaller than the value of the first syntax element, and the step of updating the variable includes the step of adding the difference in response to the second syntax element existing in the picture parameter set. Claim 4 In paragraph 3, when the second syntax element does not exist in the picture parameter set, the step of updating the variable includes the step of adding the width of a slice having index i, wherein the width is expressed as a unit of a tile column. Claim 5 In paragraph 4, when tileIdx % B is equal to 0, the step of updating the variable includes the step of adding (A - 1) * B, where tileIdx represents the variable, A is the height of a slice having index i in the unit of a tile row, B is a column of multiple tiles of the video picture, and % represents a modulo operator. Claim 6 A method according to claim 1, wherein the width and height of the slice are specified by one or more syntax elements included in the bitstream when the value of the first syntax element is greater than 0. Claim 7 In paragraph 6, the width of the slice is expressed in units of a tile column, and the height of the second slice is expressed in units of a tile row. Claim 8 In claim 1, the value obtained by adding 1 to the first syntax element is a method for specifying a plurality of rectangular slices in the video picture. Claim 9 A method according to claim 1, wherein the conversion comprises the step of encoding the video into the bitstream. Claim 10 A method according to claim 1, wherein the conversion comprises the step of decoding the video from the bitstream. Claim 11 In an apparatus for processing video data comprising a processor and a non-transient memory having instructions, the instructions, when executed by the processor, cause the processor: to determine that a scanning process is applied to a video picture for a conversion between a video including a video picture and a bitstream of the video, wherein the video picture is partitioned into one or more tiles, one or more slices, and multiple coding tree units; wherein, in the scanning process, when a rectangular slice mode is used for the video picture, a variable for deriving a tile index of a tile including a first coding tree unit within a slice having a slice index is updated when the slice index is less than the value of a first syntax element and is not updated when the slice index is not less than the value of the first syntax element; and to perform the conversion according to the determination, wherein the first syntax element is included in a set of picture parameters referenced by the video picture in the bitstream to derive information about one or more slices within the video picture, and of a slice within the video picture A device in which a number is greater than the value of the first syntax element, and the slice has a picture level slice index of I, where i is an integer, and updating the variable comprises adding the difference between the first tile index of the first tile containing the first coding tree unit in the slice having an index of (i+1) and the tile index of the tile containing the first coding tree unit in the slice having an index of i, wherein the difference is specified by a second syntax element included in the picture parameter set for the slice. Claim 12 In a non-transient computer-readable storage medium storing instructions, said instructions cause a processor to: determine that a scanning process is applied to a video picture for conversion between a video including a video picture and a bitstream of said video, said video picture being partitioned into one or more tiles, one or more slices, and multiple coding tree units; and in said scanning process, when a rectangular slice mode is used for said video picture, a variable for deriving a tile index of a tile including a first coding tree unit within a slice having a slice index is updated when said slice index is less than the value of a first syntax element and is not updated when said slice index is not less than the value of said first syntax element; A non-transient computer-readable storage medium comprising the step of performing the transformation according to the above determination, wherein the first syntax element is included in a set of picture parameters referenced by the video picture in the bitstream to derive information about one or more slices in the video picture, the number of slices in the video picture is greater than the value of the first syntax element, the slice has a picture-level slice index of I, where i is an integer, and the step of updating the variable includes the step of adding the difference between a first tile index of a first tile containing the first coding tree unit in a slice having an index of (i+1) and the tile index of a tile containing the first coding tree unit in the slice having an index of i, wherein the difference is specified by a second syntax element included in the set of picture parameters for the slice. Claim 13 A method for storing a bitstream of a video, wherein the method comprises the step of determining, for a video including a video picture, that a scanning process is applied to the video picture - wherein the video picture is partitioned into one or more tiles, one or more slices, and multiple coding tree units - wherein, in the scanning process, when a rectangular slice mode is used for the video picture, a variable for deriving a tile index of a tile including a first coding tree unit within a slice having a slice index is updated when the slice index is smaller than the value of a first syntax element and is not updated when the slice index is not smaller than the value of the first syntax element; A method comprising the steps of generating the bitstream according to the above determination, and storing the bitstream in a non-transient computer-readable recording medium, wherein the first syntax element is included in a set of picture parameters referenced by the video picture in the bitstream to derive information about one or more slices in the video picture, the number of slices in the video picture is greater than the value of the first syntax element, the slice has a picture-level slice index of I, where i is an integer, and the step of updating the variable includes adding the difference between a first tile index of a first tile containing the first coding tree unit in a slice having an index of (i+1) and the tile index of a tile containing the first coding tree unit in the slice having an index of i, wherein the difference is specified by a second syntax element included in the set of picture parameters for the slice. Claim 14 In claim 13, for a first slice having a slice index smaller than the value of the first syntax element, the width of the first slice of the unit of the tile column is derived from a second syntax element corresponding to the first slice of the picture parameter set, and the height of the first slice of the unit of the tile row is derived from a fourth syntax element corresponding to the first slice of the picture parameter set, provided that the tile containing the first slice is not divided into multiple slices, and for a second slice having a slice index not smaller than the value of the first syntax element, the width of the second slice of the unit of the tile column is derived from the difference between a plurality of tile columns and tileX, and the height of the second slice of the unit of the tile row is derived from the number of tile rows and tileY, wherein tileX and tileY are determined based on the number of tile columns. Claim 15 In claim 13, the second syntax element does not exist in the picture parameter set for the slice having index i when the index of i is not smaller than the value of the first syntax element, and the step of updating the variable includes the step of adding the difference in response to the second syntax element existing in the picture parameter set. Claim 16 delete Claim 17 delete Claim 18 delete Claim 19 delete Claim 20 delete Claim 21 delete Claim 22 delete Claim 23 delete Claim 24 delete Claim 25 delete Claim 26 delete Claim 27 delete Claim 28 delete Claim 29 delete Claim 30 delete Claim 31 delete Claim 32 delete Claim 33 delete Claim 34 delete Claim 35 delete Claim 36 delete Claim 37 delete Claim 38 delete Claim 39 delete Claim 40 delete Claim 41 delete Claim 42 delete Claim 43 delete Claim 44 delete Claim 45 delete Claim 46 delete Claim 47 delete Claim 48 delete Claim 49 delete Claim 50 delete Claim 51 delete Claim 52 delete Claim 53 delete Claim 54 delete Claim 55 delete Claim 56 delete Claim 57 delete Claim 58 delete Claim 59 delete Claim 60 delete Claim 61 delete Claim 62 delete Claim 63 delete Claim 64 delete Claim 65 delete Claim 66 delete Claim 67 delete Claim 68 delete Claim 69 delete Claim 70 delete Claim 71 delete Claim 72 delete Claim 73 delete Claim 74 delete Claim 75 delete Claim 76 delete Claim 77 delete Claim 78 delete Claim 79 delete Claim 80 delete Claim 81 delete Claim 82 delete Claim 83 delete
