Video coding method and device

A flag-based mechanism in video coding systems identifies raster scan or rectangular tile groups, improving efficiency and resource usage by simplifying signaling and reducing complexity in tile group management.

JP7746979B2Active Publication Date: 2025-10-01HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2022205201
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-05-15
Filing Date
2022-12-22
Publication Date
2025-10-01
Estimated Expiration
2039-12-17

AI Technical Summary

Technical Problem

Existing video coding systems face inefficiencies in signaling and resource usage when supporting both raster scan and rectangular tile groups, leading to complex syntax structures and increased processor intensity, particularly in applications like virtual reality and region of interest coding.

Method used

Implementing a flag in the bitstream to indicate whether a tile group is raster scan or rectangular, allowing decoders to determine tile inclusion based on the flag, reducing the need for a complete list of tiles and optimizing coding efficiency.

Benefits of technology

This approach enhances coding efficiency by simplifying signaling, reducing memory, processing, and network resource usage in both encoders and decoders, while supporting multiple tile group schemes for diverse applications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007746979000006
    Figure 0007746979000006
  • Figure 0007746979000007
    Figure 0007746979000007
  • Figure 0007746979000008
    Figure 0007746979000008
Patent Text Reader

Abstract

A video coding mechanism is disclosed. The mechanism includes partitioning a picture into tiles, the number of tiles being included in a tile group. A flag is also coded into a parameter set of a bitstream. The flag is set to a first value when the tile group is a raster scan tile group and to a second value when the tile group is a rectangular tile group. The tiles are coded into the bitstream based on the tile group. The bitstream is stored for communication to a decoder.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] [Technical field] FIELD This disclosure relates generally to video coding, and more particularly to mechanisms for partitioning images into tile groups to support increased compression in video coding. [Background technology]

[0002] The amount of video data required to render even a relatively short video can be substantial. This can pose challenges when data is streamed or otherwise communicated across communications networks with limited bandwidth capabilities. Therefore, video data is typically compressed before being communicated across today's telecommunications networks. When video is stored on a storage device, video size can also be an issue because memory resources may be limited. Video compression devices often use software and / or hardware to code video data at the source before transmission or storage, thereby reducing the amount of data needed to represent a digital video image. The compressed data is then received at the destination by a video decompressor, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques that increase compression ratios with little or no sacrifice in image quality are desirable. Summary of the Invention

[0003] In an embodiment, the present disclosure includes a method implemented in an encoder, the method comprising: partitioning, by a processor of the encoder, a picture into a plurality of tiles; assigning, by the processor, the number of tiles to tile groups; encoding, by the processor, a flag set to a first value when the tile group is a raster scan tile group and to a second value when the tile group is a rectangular tile group, the flag being encoded in a parameter set in a bitstream; encoding, by the processor, the tiles into the bitstream based on the tile groups; and storing the bitstream in the encoder's memory for communication to a decoder. Some video coding systems utilize tile groups containing tiles specified in raster scan order. Other systems utilize rectangular tile groups to support sub-picture extraction in virtual reality (VR), teleconferencing, and other region of interest based coding schemes. Still other systems allow an encoder to select which type of tile group to use depending on the type of video coding application. Aspects of the present invention include a flag indicating whether a corresponding tile group is raster scan or rectangular. This approach alerts a decoder to the correct tile group coding scheme to support proper decoding. The disclosed flag thus enables an encoder / decoder (codec) to support multiple tile group schemes for different use cases, thereby improving the functionality of both the encoder and decoder. Furthermore, the disclosed flag signaling improves coding efficiency, thereby reducing memory, processing, and / or network resource usage in the encoder and / or decoder.

[0004] Optionally, in any of the above aspects, another implementation of this aspect provides that the flag is a rectangular tile group flag.

[0005] Optionally, in any of the above aspects, another implementation of this aspect provides that the parameter set in which the flag is coded is a sequence parameter set.

[0006] Optionally, in any of the above aspects, another implementation of this aspect provides that the parameter set in which the flag is coded is a picture parameter set.

[0007] Optionally, in any of the above aspects, another implementation of this aspect provides that the implementation further includes a step in which the processor encodes into the bitstream an identifier of the first tile in the tile group and an identifier of the last tile in the tile group to indicate the tiles included in the tile group.

[0008] Optionally, in any of the above aspects, another implementation of this aspect provides that the identifier of the first tile of the tile group and the identifier of the last tile of the tile group are encoded in a tile group header in the bitstream.

[0009] Optionally, in any of the above aspects, another implementation of this aspect is that when the tile group is the raster scan tile group, inclusion of tiles in the tile group is determined by: determining the number of tiles between the first tile of the tile group and the last tile of the tile group as the number of tiles in the tile group; determining tile inclusion based on the number of tiles in the tile group; It is provided that the following is determined by:

[0010] Optionally, in any of the above aspects, another implementation of this aspect is that when the tile group is the rectangular tile group, the inclusion of tiles in the tile group is determined by: determining a delta value between the first tile of the tile group and the last tile of the tile group; determining a number of tile group rows based on the delta value and a number of tile columns in the picture; determining a number of tile group columns based on the delta value and the number of tile columns in the picture; determining the inclusion of the tiles based on the number of tile group rows and the number of tile group columns; It is provided that the following is determined by:

[0011] In an embodiment, the present disclosure includes a method implemented in a decoder, said method comprising: receiving, by a processor of the decoder via a receiver, a bitstream including a picture partitioned into a number of tiles, the number of tiles being included in a tile group; obtaining, by the processor, a flag from a parameter set of the bitstream; determining, by the processor, that the tile group is a raster scan tile group when the flag is set to a first value; determining, by the processor, that the tile group is a rectangular tile group when the flag is set to a second value; determining, by the processor, tile inclusion for the tile group based on whether the tile group is the raster scan tile group or a rectangular tile group; decoding, by the processor, the tiles based on the tile groups to generate decoded tiles; generating, by the processor, a reconstructed video sequence for display based on the decoded tiles; Some video coding systems utilize tile groups containing tiles specified in raster scan order. Other systems utilize rectangular tile groups to support sub-picture extraction in VR, teleconferencing, and other region of interest based coding schemes. Still other systems allow an encoder to select which type of tile group to use depending on the type of video coding application. Aspects of the present invention include a flag indicating whether the corresponding tile group is raster scan or rectangular. This approach alerts a decoder to the correct tile group coding scheme to support proper decoding. The disclosed flag thus enables a codec to support multiple tile group schemes for different use cases, thereby improving the functionality of both the encoder and decoder. Furthermore, the disclosed flag signaling improves coding efficiency, thereby reducing memory, processing, and / or network resource usage in the encoder and / or decoder.

[0012] Optionally, in any of the above aspects, another implementation of this aspect provides that the flag is a rectangular tile group flag.

[0013] Optionally, in any of the above aspects, another implementation of this aspect provides that the parameter set including the flag is a sequence parameter set.

[0014] Optionally, in any of the above aspects, another implementation of this aspect provides that the parameter set including the flag is a picture parameter set.

[0015] Optionally, in any of the above aspects, another implementation of this aspect provides that the method further includes a step of obtaining, by the processor, an identifier of the first tile in the tile group and an identifier of the last tile in the tile group to determine the tiles included in the tile group.

[0016] Optionally, in any of the above aspects, another implementation of this aspect provides that the identifier of the first tile of the tile group and the identifier of the last tile of the tile group are obtained from a tile group header in the bitstream.

[0017] Optionally, in any of the above aspects, another implementation of this aspect is that when the tile group is the raster scan tile group, inclusion of tiles in the tile group is determined by: determining the number of tiles between the first tile of the tile group and the last tile of the tile group as the number of tiles in the tile group; determining tile inclusion based on the number of tiles in the tile group; It is provided that the following is determined by:

[0018] Optionally, in any of the above aspects, another implementation of this aspect is that when the tile group is the rectangular tile group, the inclusion of tiles in the tile group is determined by: determining a delta value between the first tile of the tile group and the last tile of the tile group; determining a number of tile group rows based on the delta value and a number of tile columns in the picture; determining a number of tile group columns based on the delta value and the number of tile columns in the picture; determining the inclusion of the tiles based on the number of tile group rows and the number of tile group columns; It is provided that the following is determined by:

[0019] In an embodiment, the present disclosure provides a video coding apparatus, comprising: A video coding apparatus includes a processor, a receiver connected to the processor, and a transmitter connected to the processor, wherein the processor, receiver, and transmitter are configured to perform the method of any of the above aspects.

[0020] In one embodiment, the present disclosure includes a non-transitory computer-readable medium including a computer program product for use by a video coding device, the computer program product including computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by a processor, cause the video coding device to perform the method of any of the foregoing aspects.

[0021] In an embodiment, the present disclosure provides an encoder, comprising: partitioning means for partitioning a picture into a plurality of tiles; including means for including the number of tiles in a tile group; An encoding means, encoding a flag that is set to a first value when the tile group is a raster scan tile group and to a second value when the tile group is a rectangular tile group, the flag being encoded in a parameter set of the bitstream; encoding means for encoding tiles into the bitstream based on the inclusion of the tiles; storage means for storing said bitstream for communication to a decoder; The encoder includes:

[0022] Optionally, in any of the above aspects, another implementation of this aspect provides that the encoder is further configured to perform the method of any of the above aspects.

[0023] In an embodiment, the present disclosure provides a decoder, comprising: a receiving means for receiving a bitstream including a picture partitioned into a plurality of tiles, the number of tiles being included in a tile group; obtaining means for obtaining a flag from a parameter set of the bitstream; A determination means, determining that the tile group is a raster scan tile group when the flag is set to a first value; determining that the tile group is a rectangular tile group when the flag is set to a second value; determining means for determining tile inclusion for the tile group based on whether the tile group is the raster scan tile group or a rectangular tile group; a decoding means for decoding the tiles based on the tile groups to generate decoded tiles; generating means for generating a reconstructed video sequence for display based on the decoded tiles; The decoder includes:

[0024] Optionally, in any of the above aspects, another implementation of this aspect provides that the decoder is further configured to perform the method of any of the above aspects.

[0025] For purposes of clarity, any one of the above-described embodiments may be combined with any one or more of the other above-described embodiments to create new embodiments that are within the scope of the present disclosure.

[0026] The above and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. [Brief explanation of the drawings]

[0027] For a more complete understanding of the present disclosure, reference is now made to the following brief description taken in conjunction with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.

[0028] [Figure 1] 1 is a flowchart of an exemplary method for coding a video signal.

[0029] [Figure 2] 1 is a schematic diagram of an example coding and decoding (codec) system for video coding.

[0030] [Figure 3] FIG. 1 is a schematic diagram illustrating an exemplary video encoder.

[0031] [Figure 4] FIG. 1 is a schematic diagram illustrating an exemplary video decoder.

[0032] [Figure 5] FIG. 1 is a schematic diagram illustrating an exemplary bitstream containing an encoded video sequence.

[0033] [Figure 6] FIG. 1 is a schematic diagram illustrating an example picture partitioned into raster scan tile groups.

[0034] [Figure 7] FIG. 1 is a schematic diagram illustrating an example picture partitioned into rectangular tile groups.

[0035] [Figure 8] 1 is a schematic diagram of an exemplary video coding device;

[0036] [Figure 9] 1 is a flowchart of an exemplary method for encoding a picture into a bitstream.

[0037] [Figure 10] 1 is a flowchart of an exemplary method for decoding a picture from a bitstream.

[0038] [Figure 11]1 is a schematic diagram of an example system for coding a video picture sequence in a bitstream. DETAILED DESCRIPTION OF THE INVENTION

[0039] It should be understood at the outset that, although illustrative implementations of one or more embodiments are provided below, the disclosed systems and / or methods may be implemented using any number of technologies, whether currently known or existing. The present disclosure should in no way be limited to the illustrative implementations, drawings, and technologies described below, including the exemplary designs and implementations shown and described herein, but may be modified within the scope of the appended claims, along with their full range of equivalents.

[0040] Various abbreviations are used herein, such as coding tree block (CTB), coding tree unit (CTU), coding unit (CU), coded video sequence (CVS), Joint Video Experts Team (JVET), motion constrained tile set (MCTS), maximum transfer unit (MTU), network abstraction layer (NAL), picture order count (POC), raw byte sequence payload (RBSP), sequence parameter set (SPS), versatile video coding (VVC), and working draft (WD).

[0041] Many video compression techniques may be used to reduce the size of video files with minimal data loss. For example, video compression techniques may include performing spatial (e.g., intra-picture) prediction and / or temporal (e.g., inter-picture) prediction to reduce or remove data redundancy in a video sequence. In block-based video coding, a video slice (e.g., a video picture or portion of a video picture) may be partitioned into video blocks, which may also be referred to as treeblocks, coding tree blocks (CTBs), coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks within an intra-coded (I) slice of a picture are coded using spatial prediction with respect to reference samples in neighboring blocks within the same picture. Video blocks within an inter-coded unidirectionally predicted (P) or bidirectionally predicted (B) slice of a picture may be coded using spatial prediction with respect to reference samples in neighboring blocks within the same picture or temporal prediction with respect to reference samples in other reference pictures. A picture may be referred to as a frame and / or an image, and a reference picture may be referred to as a reference frame and / or a reference image. Spatial or temporal prediction results in a prediction block that represents an image block. Residual data represents pixel differences between the original image block and the prediction block. Thus, inter-coding blocks are coded according to a motion vector that points to a block of reference samples that form the prediction block, and residual data that indicates the difference between the coding block and the prediction block. Intra-coding blocks are coded according to an intra-coding mode and residual data. For further compression, the residual data may be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients that may be quantized. The quantized transform coefficients may first be arranged into a two-dimensional array. The quantized transform coefficients may be scanned to generate a one-dimensional vector of transform coefficients. Entropy coding may be applied to achieve even greater compression.Such video compression techniques are discussed in further detail below.

[0042] To ensure that the encoded video is decoded accurately, the video is encoded and decoded according to a corresponding video coding standard, including International Telecommunication Union (ITU) Standardization Sector (ITU-T) H.261, International Organization for Standardization / International Electrotechnical Commission (ISO / IEC) Motion Picture Experts Group (MPEG)-1 Part 2, Advanced Video Coding (AVC), also known as ITU-T H.262 or ISO / IEC MPEG-2 Part 2, ITU-T H.263, ISO / IEC MPEG-4 Part 2, ITU-T H.264 or ISO / IEC MPEG-4 Part 10, and High Efficiency Video Coding (HEVC), also known as ITU-T H.265 or MPEG-H Part 2. AVC includes extensions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC), and Multiview Video Coding plus Depth (MVC+D), as well as three dimensional (3D) AVC (3D-AVC). HEVC includes extensions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), and 3D HEVC (3D-HEVC). The ITU-T and ISO / IEC joint video experts team (JVET) have begun developing a video coding standard called Versatile Video Coding (VVC).VVC is included in the Working Draft (WD) that includes JVET-L1001-v5.

[0043] To code a video image, the image is first partitioned, and the partitions are coded into a bitstream. Various picture partitioning schemes are available. For example, an image can be partitioned into normal slices, dependent slices, tiles, and / or according to Wavefront Parallel Processing (WPP). For simplicity, HEVC constrains the encoder to use only normal slices, dependent slices, tiles, WPP, and combinations thereof when partitioning slices into groups of CTBs for video coding. Such partitioning can be applied to support Maximum Transfer Unit (MTU) size adaptation, parallel processing, and reduced end-to-end delay. The MTU indicates the maximum amount of data that can be transmitted in a single packet. If a packet payload exceeds the MTU, the payload is split into two packets through a process called fragmentation.

[0044] A normal slice, also referred to simply as a slice, is a partitioned portion of an image that can be reconstructed independently of other normal slices within the same picture, despite any interdependencies due to loop filtering operations. Each normal slice is encapsulated within its own Network Abstraction Layer (NAL) unit for transmission. Furthermore, intra-picture prediction (intra-sample prediction, motion information prediction, coding mode prediction) and entropy coding dependencies across slice boundaries may be disabled to support independent reconstruction. Such independent reconstruction supports parallelization. For example, parallelization based on normal slices utilizes minimal inter-processor and inter-core communication. However, because each normal slice is independent, each slice is associated with a separate slice header. The use of normal slices can incur significant coding overhead due to the bit cost of a slice header per slice and the lack of prediction across slice boundaries. Furthermore, normal slices may be used to support compliance with MTU size requirements. Specifically, because regular slices are encapsulated in separate NAL units and can be coded independently, each regular slice should be smaller than the MTU in the MTU scheme to prevent the slices from being split into multiple packets. Thus, the objectives of parallelization and MTU size adaptation may impose conflicting requirements on the slice layout within a picture.

[0045] Dependent slices are similar to normal slices but have a shortened slice header, allowing partitioning on picture tree block boundaries without breaking intra-picture prediction. Dependent slices therefore allow normal slices to be fragmented into multiple NAL units, which results in reduced end-to-end delay by allowing parts of a normal slice to be sent before the encoding of the entire normal slice is complete.

[0046] A tile is a partitioned portion of an image generated by horizontal and vertical boundaries that generate the tile's columns and rows. Tiles may be coded in raster scan order (right to left and top to bottom). The scan order of CTBs is local within a tile. Thus, the CTB in the first tile is coded in raster scan order before proceeding to the CTB in the next tile. Like regular slices, tiles break intra-picture prediction dependencies and entropy decoding dependencies. However, tiles may not be included in individual NAL units, and therefore tiles may not be used for MTU size adaptation. Each tile can be processed by one processor / core, and inter-processor / inter-core communication utilized for intra-picture prediction between processing units decoding neighboring tiles may be limited to carrying a shared slice header (when adjacent tiles are in the same slice) and performing sharing of reconstructed samples and metadata related to loop filtering. When more than one tile is included in a slice, the entry point byte offset of each tile, other than the initial entry point offset within the slice, may be signaled in the slice header. For each slice and tile, at least one of the following conditions should be satisfied: 1) all coding tree blocks in a slice belong to the same tile, and 2) all coding tree blocks in a tile belong to the same slice.

[0047] In WPP, a picture is partitioned into a single row of CTBs. The entropy decoding and prediction mechanisms may use data from CTBs in other rows. Parallel processing is enabled through parallel decoding of CTB rows. For example, the current row may be decoded in parallel with the previous row. However, the decoding of the current row is delayed from the decoding process of the previous row by two CTBs. This delay ensures that data related to the CTBs above and to the right of the current CTB in the current row are available before the current CTB is coded. This approach can be represented graphically as a wavefront. This staggered start allows parallelization by up to as many processors / cores as the picture contains CTB rows. Because intra-picture prediction between neighboring treeblock rows within a picture is allowed, inter-processor / inter-core communication to enable intra-picture prediction can be important. WPP partitioning takes into account the NAL unit size. Therefore, WPP does not support MTU size adaptation. However, regular slicing can be used in conjunction with WPP to implement the desired MTU size adaptation, with some coding overhead involved.

[0048] A tile may also include a motion constrained tile set (MCTS). A motion constrained tile set (MCTS) is a tile set designed such that associated motion vectors are restricted to point to full sample positions within the MCTS and to fractional sample positions that require only full sample positions within the MCTS for interpolation. Furthermore, the use of motion vector candidates for temporal motion vector prediction derived from blocks outside the MCTS is not permitted. In this way, each MCTS may be decoded independently without the presence of tiles not included in the MCTS. A temporal MCTS supplemental enhancement information (SEI) message may be used to indicate the presence of an MCTS in a bitstream and to signal the MCTS. The MCTS SEI message provides supplemental information that can be used in MCTS sub-bitstream extraction (specified as part of the semantics of the SEI message) to generate a confirmation bitstream for the MCTS. The information includes the number of extraction information sets, each defining a number of MCTSs and including raw bytes sequence payload (RBSP) bytes of replacement video parameter set (VPS), sequence parameter set (SPS), and picture parameter set (PPS) to be used during the MCTS sub-bitstream extraction process. When extracting a sub-bitstream according to the MCTS sub-bitstream extraction process, one or all of the syntax elements related to slice addresses (including first_slice_segment_in_pic_flag and slice_segment_address) may use different values ​​in the extracted sub-bitstream, so the parameter sets (VPS, SPS, and PPS) may be rewritten or replaced and the slice header may be updated.

[0049] This disclosure relates to various tiling schemes. Specifically, when an image is partitioned into tiles, such tiles can be assigned to tile groups. A tile group is a set of related tiles that can be extracted and coded separately, for example, to support display of a region of interest and / or to support parallel processing. Tiles can be assigned to tile groups, allowing for the application of corresponding parameters, functions, coding tools, etc., to each group. For example, a tile group may include an MCTS. As another example, tile groups may be processed and / or extracted separately. Some systems utilize a raster scan mechanism to generate corresponding tile groups. As used herein, a raster scan tile group is a tile group generated by assigning tiles in raster scan order. The raster scan order progresses sequentially from right to left and top to bottom between the first tile and the last tile. Raster scan tile groups can be useful for some applications, for example, to support parallel processing.

[0050] However, raster scan tile groups may be inefficient in some cases. For example, in virtual reality (VR) applications, an environment is recorded as a sphere encoded into a picture. A user can then experience the environment by viewing a user-selected sub-picture of the picture. A user-selected sub-picture may be referred to as a region of interest. Allowing a user to selectively perceive portions of the environment creates the sense that the user is present in the environment. In this way, non-selected portions of the picture may be invisible and therefore discarded. Therefore, user-selected sub-pictures may be treated differently from non-selected sub-pictures (e.g., non-selected sub-pictures may be signaled at a lower resolution, may be processed using a simpler mechanism during rendering, etc.). Tile groups enable such different treatment among sub-pictures. However, user-selected sub-pictures are typically rectangular and / or square regions. Therefore, raster scan tile groups may not be useful for such use cases.

[0051] To overcome these problems, some systems utilize rectangular tile groups. A rectangular tile group is a tile group that includes a set of tiles that, when viewed as a whole, produce a rectangular shape. As used herein, a rectangular shape refers to a shape that has exactly four connected sides, with each side connected to two other sides at 90° angles. Both tile group approaches (e.g., raster scan tile groups and rectangular tile groups) may have advantages and disadvantages. Therefore, a video coding system may desire to support both approaches. However, a video coding system may not be able to efficiently signal the use of tile groups when both approaches are available. For example, a simple merging of signaling these approaches may result in complex syntax structures that are inefficient and / or processor-intensive in the encoder and / or decoder. This disclosure presents mechanisms for solving these and other problems in video coding techniques.

[0052] Disclosed herein are various mechanisms for coordinating the use of raster scan tile groups and rectangular tile groups by utilizing simple and compact signaling. Such signaling improves coding efficiency and thus reduces memory, processing, and / or network resource usage in the encoder and / or decoder. To coordinate these approaches, an encoder can signal a flag indicating which type of tile group is being used. For example, the flag may be a rectangular tile group flag that may be signaled in a parameter set such as SPS and / or PPS. The flag may indicate whether the encoder is using raster scan tile groups or rectangular tile groups. The encoder can therefore indicate tile group membership by simply signaling the first and last tiles in the tile group. Based on the indication of the first tile, last tile, and tile group type, the decoder can determine which tiles are included in the tile group. Thus, a complete list of all tiles in each tile group can be omitted from the bitstream, which improves coding efficiency. For example, if the tile group is a raster scan tile group, the tiles assigned to the tile group can be determined by determining the number of tiles between the first and last tile in the tile group and adding those tiles with identifiers between the first and last tile to the tile group. If the tile group is a rectangular tile group, a different approach can be used. For example, a delta value between the first and last tile in the tile group can be determined. Then, the number of rows in the tile group and the number of columns in the tile group can be determined based on the delta value and the number of tile columns in the picture. The tiles within the tile group can then be determined based on the number of rows in the tile group and the number of columns in the tile group. These and other examples are described in more detail below.

[0053] FIG. 1 is a flowchart of an exemplary operational method 100 for coding a video signal. Specifically, a video signal is encoded by an encoder. The encoding process compresses the video signal by utilizing various mechanisms to reduce the video file size. The smaller file size allows for the transmission of the compressed video file to a user while reducing the associated bandwidth overhead. A decoder then decodes the compressed video file to reconstruct the original video signal for display to the end user. The decoding process typically mirrors the encoding process, allowing the decoder to consistently reconstruct the video signal.

[0054] In step 101, a video signal is input to an encoder. For example, the video signal may be an uncompressed video file stored in memory. As another example, the video file may be captured by a video capture device such as a video camera and encoded to support live streaming of the video. The video file may include both an audio component and a video component. The video component includes a series of image frames that, when viewed in sequence, create the visual impression of movement. The frames include pixels represented in terms of light, referred to herein as luma components (or luma samples), and color, referred to herein as chroma components (or chroma samples). In some examples, the frames may also include depth values ​​to support three-dimensional displays.

[0055] In step 103, the video is partitioned into blocks. Partitioning involves subdividing pixels within each frame into square and / or rectangular blocks for compression. For example, in High Efficiency Video Coding (HEVC) (also known as H.265 and MPEG-H Part 2), a frame can first be divided into coding tree units (CTUs), which are blocks of a predetermined size (e.g., 64 pixels by 64 pixels). A CTU contains both luma and chroma samples. The coding tree may be used to divide the CTUs into blocks and then iteratively subdivide the blocks until a structure that supports further encoding is achieved. For example, the luma component of a frame may be subdivided until each block contains relatively homogeneous light values. Furthermore, the chroma component of a frame may be subdivided until each block contains relatively homogeneous color values. Thus, the partitioning mechanism varies depending on the content of the video frame.

[0056] In step 105, various compression mechanisms are utilized to compress the image blocks partitioned in step 103. For example, inter-prediction and / or intra-prediction may be utilized. Inter-prediction is designed to take advantage of the fact that objects in a common scene tend to appear in consecutive frames. Thus, blocks depicting an object in a reference frame need not be repeatedly shown in adjacent frames. Specifically, an object such as a table may remain in a constant position across multiple frames. Thus, the table may be shown once, and adjacent frames can reference back to the reference frame. A pattern matching mechanism may be utilized to match objects across multiple frames. Furthermore, a moving object may be displayed across multiple frames, e.g., due to object motion or camera motion. As a specific example, a video may show a car moving across the screen across multiple frames. To indicate such motion, a motion vector may be utilized. A motion vector is a two-dimensional vector that provides an offset from the coordinates of an object in a frame to the coordinates of the object in a reference frame. Thus, inter-prediction allows an image block in a current frame to be coded as a set of motion vectors indicating its offset from a corresponding block in a reference frame.

[0057] Intra prediction encodes blocks within a common frame. Intra prediction exploits the fact that luma and chroma components tend to be clustered within a frame. For example, a patch of green in a tree tends to be adjacent to other similar patches of green. Intra prediction utilizes multiple directional prediction modes (e.g., 33 in HEVC), planar mode, and direct current (DC) mode. Directional mode indicates that the current block is similar to samples from neighboring blocks in the corresponding direction. Planar mode indicates that a series of blocks along a row / column (e.g., a plane) can be interpolated based on neighboring blocks at the end of the row. Planar mode effectively indicates a smooth transition of light / color across a row / column by utilizing a relatively constant gradient of changing values. DC mode is used for boundary smoothing and indicates that a block is similar to the average value associated with samples from all neighboring blocks associated with the angular direction of the directional prediction mode. Therefore, intra-predicted blocks can represent image blocks as various related prediction modes instead of actual values. Furthermore, inter-predicted blocks can represent image blocks as motion vector values ​​instead of actual values. In either case, the prediction block may not accurately represent the image in some cases. Any differences are stored in a residual block. To further compress the file, a transform may be applied to the residual block.

[0058] Various filtering techniques may be applied in step 107. In HEVC, filters are applied according to an in-loop filtering scheme. The block-based prediction described above may result in blocky images being generated at the decoder. Furthermore, block-based prediction schemes may encode blocks and then reconstruct the encoded blocks for later use as reference blocks. In-loop filtering schemes iteratively apply noise suppression filters, deblocking filters, adaptive loop filters, and sample adaptive offset (SAO) filters to blocks / filters. These filters mitigate such blocky artifacts so that the encoded file can be accurately reconstructed. Furthermore, these filters mitigate artifacts in the reconstructed reference blocks so that they are less likely to introduce additional artifacts in subsequent blocks that are coded based on the reconstructed reference blocks.

[0059] Once the video signal has been partitioned, compressed, and filtered, the resulting data is encoded into a bitstream at step 109. The bitstream includes the data described above and any desired signaling data to support proper video signal reconstruction at the decoder. For example, such data may include partition data, prediction data, residual blocks, and various flags that provide coding instructions to the decoder. The bitstream may be stored in memory for transmission to the decoder upon request. The bitstream may also be broadcast and / or multicast to multiple decoders. Generating the bitstream is an iterative process. Thus, steps 101, 103, 105, 107, and 109 may occur sequentially and / or simultaneously across multiple frames and blocks. The order shown in FIG. 1 is presented for clarity and ease of discussion and is not intended to limit the video coding process to any particular order.

[0060] In step 111, the decoder receives the bitstream and begins the decoding process. Specifically, the decoder uses an entropy decoding scheme to convert the bitstream into corresponding syntax and video data. In step 111, the decoder uses the syntax from the bitstream to determine the frame partitions. The partitions should match the block partition results from step 103. The entropy encoding / decoding used in step 111 is described below. During the compression process, the encoder generates many options, such as selecting a block partitioning scheme from several possible options based on the spatial location of values ​​within the input image. Signaling the exact option may utilize a large number of bins. As used herein, a bin is a binary value treated as a variable (e.g., a bit value that can change depending on the context). Entropy coding allows the encoder to discard any options that are clearly not feasible in a particular case, leaving a set of acceptable options. Each acceptable option is then assigned a codeword. The length of the codeword is based on the number of allowable choices (e.g., one bin for two choices, two bins for three or four choices, etc.). The encoder then encodes a codeword for the selected choice. This scheme reduces the size of the codeword because it is desirably large to uniquely represent a choice from a small subset of possible choices, as opposed to uniquely representing a choice from a potentially large set of all possible choices. The decoder then decodes the choices by determining the set of allowable choices in a similar manner to the encoder. By determining the set of allowable choices, the decoder can read the codeword and determine the choice made by the encoder.

[0061] In step 113, the decoder performs block decoding. Specifically, the decoder generates a residual block using an inverse transform. Then, the decoder uses the residual block and the corresponding prediction block to reconstruct an image block according to the partition. The prediction block may include both the intra-prediction block and the inter-prediction block generated in step 105 in the encoder. The reconstructed image block is then positioned into a frame of the reconstructed video signal according to the partition data determined in step 111. The syntax of step 113 may also be signaled in the bitstream by entropy coding as described above.

[0062] In step 115, filtering is performed on the frames of the reconstructed video signal in a manner similar to step 107 in the encoder. For example, a noise suppression filter, a deblocking filter, an adaptive loop filter, and an SAO filter may be applied to the frames to remove blocking artifacts. Once the frames have been filtered, the video signal can be output to a display in step 117 for viewing by an end user.

[0063] 2 is a schematic diagram of an exemplary coding and decoding (codec) system 200 for video coding. Specifically, codec system 200 provides functionality to support the implementation of operational method 100. Codec system 200 is generalized to show components utilized in both an encoder and a decoder. Codec system 200 receives and partitions a video signal as described above with respect to steps 101 and 103 in operational method 100, resulting in a partitioned video signal 201. When operating as an encoder as described above with respect to steps 105, 107, and 109 in method 100, codec system 200 then compresses partitioned video signal 201 into a coding bitstream. When operating as a decoder, codec system 200 generates an output video signal from the bitstream as described above with respect to steps 111, 113, 115, and 117 in operational method 100. Codec system 200 includes a general coder control component 211, a transform scaling and quantization component 213, an intra-picture estimation component 215, an intra-picture prediction component 217, a motion compensation component 219, a motion estimation component 221, a scaling and inverse transform component 229, a filter control analysis component 227, an in-loop filter component 225, a decoded picture buffer component 223, and a header format and context adaptive binary arithmetic coding (CABAC) component 231. These components are coupled as shown. In FIG. 2, black lines indicate the movement of data to be encoded / decoded, while dashed lines indicate the movement of control data that controls the operation of other components. The components of codec system 200 may all reside within an encoder. A decoder may include some of the components of codec system 200.For example, the decoder may include an intra-picture prediction component 217, a motion compensation component 219, a scaling and inverse transform component 229, an in-loop filter component 225, and a decoded picture buffer component 223. These components are described herein.

[0064] The partitioned video signal 201 is a captured video sequence that has been partitioned into blocks of pixels by a coding tree. The coding tree utilizes various partitioning modes to subdivide blocks of pixels into smaller blocks of pixels. These blocks can then be further subdivided into smaller blocks. Blocks may be referred to as nodes on the coding tree. Larger parent nodes are divided into smaller child nodes. The number of times a node is subdivided is referred to as the depth of the node / coding tree. The partitioned blocks may be included in a coding unit (CU) in some cases. For example, a CU may be a subpart of a CTU that includes a luma block, a red differential chroma (Cr) block, and a blue differential chroma (Cb) block, as well as the corresponding syntax instructions for the CU. Partitioning modes may include a binary tree (BT), a triple tree (TT), and a quad tree (QT), which are used to partition a node into two, three, or four child nodes, each of which has a shape that varies depending on the partitioning mode used. The partitioned video signal 201 is forwarded to a general coder control component 211, a transform scaling and quantization component 213, an intra-picture estimation component 215, a filter control analysis component 227, and a motion estimation component 221 for compression.

[0065] The generic coder control component 211 is configured to make decisions related to the coding of images of a video sequence into a bitstream according to application constraints. For example, the generic coder control component 211 manages the optimization of bitrate / bitstream size versus reconstruction quality. Such decisions may be based on storage space / bandwidth availability and image resolution requirements. The generic coder control component 211 also manages buffer utilization in terms of conversion speed to mitigate buffer underrun and overrun issues. To address these issues, the generic coder control component 211 manages partitioning, prediction, and filtering by other components. For example, the generic coder control component 211 may dynamically increase compression complexity to increase resolution, or increase bandwidth usage or decrease compression complexity to reduce resolution and bandwidth usage. Thus, the generic coder control component 211 controls other components of the codec system 200 to balance video signal reconstruction quality and bitrate concerns. The generic coder control component 211 generates control data that controls the operation of other components. Control data is also forwarded to the header format and CABAC component 231 to be encoded into the bitstream to signal parameters for decoding at the decoder.

[0066] The partitioned video signal 201 is also sent to a motion estimation component 221 and a motion compensation component 219 for inter-prediction. A frame or slice of the partitioned video signal 201 may be divided into multiple video blocks. The motion estimation component 221 and the motion compensation component 219 perform inter-predictive coding of the received video blocks with respect to one or more blocks in one or more reference frames to provide temporal prediction. The codec system 200 may perform multiple coding passes, for example, to select an appropriate coding mode for each block of video data.

[0067] The motion estimation component 221 and the motion compensation component 219 may be highly integrated but are shown separately for conceptual purposes. Motion estimation, performed by the motion estimation component 221, is the process of generating motion vectors that estimate motion for a video block. A motion vector may indicate the location of a coding object with respect to, for example, a predictive block. A predictive block is a block that is found to closely match a block to be coded in terms of pixel differences. A predictive block may also be referred to as a reference block. Such pixel differences may be determined by sum of absolute difference (SAD), sum of square difference (SSD), or other difference metrics. HEVC utilizes several coding objects, including CTUs, coding tree blocks (CTBs), and CUs. For example, a CTU can be divided into CTBs, which can then be divided into CBs for inclusion in CUs. A CU may be coded as a prediction unit (PU), which contains prediction data, and / or a transform unit (TU), which contains transformed residual data of the CU. The motion estimation component 221 uses rate-distortion analysis as part of a rate-distortion optimization process to generate motion vectors, PUs, and TUs. For example, the motion estimation component 221 may determine multiple reference blocks, multiple motion vectors, etc. for the current block / frame and may select the reference block, motion vector, etc. with the optimal rate-distortion characteristics. The optimal rate-distortion characteristics balance both the quality of the video reconstruction (e.g., the amount of data loss due to compression) and the coding efficiency (e.g., the size of the final encoding).

[0068] In some examples, the codec system 200 may calculate values ​​for sub-integer picture positions of reference pictures stored in the decoded picture buffer component 223. For example, the video codec system 200 may interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional-pixel positions of the reference pictures. Accordingly, the motion estimation component 221 may perform motion searches relative to whole-pixel and fractional-pixel positions and output motion vectors with fractional-pixel accuracy. The motion estimation component 221 calculates motion vectors for PUs of video blocks in inter-coding slices by comparing the positions of the PUs with the positions of predictive blocks in the reference pictures. The motion estimation component 221 outputs the calculated motion vectors as motion data to the header format and CABAC component 231 for encoding, and motion to the motion compensation component 219.

[0069] The motion compensation performed by motion compensation component 219 may include fetching or generating a predictive block based on the motion vector determined by motion estimation component 221. Again, motion estimation component 221 and motion compensation component 219 may be functionally integrated in some examples. Upon receiving the motion vector of the PU of the current video block, motion compensation component 219 may locate the predictive block pointed to by the motion vector. A residual video block is then formed by subtracting pixel values ​​of the predictive block from pixel values ​​of the current video block being coded to form pixel difference values. Generally, motion estimation component 221 performs motion estimation with respect to the luma component, and motion compensation component 219 uses the motion vector calculated based on the luma component for both the chroma and luma components. The predictive block and residual block are forwarded to transform scaling and quantization component 213.

[0070] The partitioned video signal 201 is also sent to an intra-picture estimation component 215 and an intra-picture prediction component 217. Like the motion estimation component 221 and the motion compensation component 219, the intra-picture estimation component 215 and the intra-picture prediction component 217 may be highly integrated but are shown separately for conceptual purposes. Instead of inter-prediction performed by the inter-frame motion estimation component 221 and the motion compensation component 219 as described above, the intra-picture estimation component 215 and the intra-picture prediction component 217 intra-predict the current block relative to blocks within the current frame. In particular, the intra-picture estimation component 215 determines an intra-prediction mode to use to encode the current block. In some examples, the intra-picture estimation component 215 selects an appropriate intra-prediction mode for encoding the current block from multiple tested intra-prediction modes. The selected intra-prediction mode is then forwarded to the header format and CABAC component 231 for encoding.

[0071] For example, the intra picture estimation component 215 may calculate rate-distortion values ​​for various tested intra prediction modes using rate-distortion analysis and select an intra prediction mode with optimal rate-distortion characteristics among the tested modes. The rate-distortion analysis generally determines the amount of distortion (or error) between a coded block and the original uncoded block that was coded to generate the coded block, as well as the bit rate (e.g., number of bits) used to generate the coded block. The intra picture estimation component 215 may calculate a ratio from the distortion and rate for various coded blocks to determine which intra prediction mode exhibits the optimal rate-distortion value for the block. Furthermore, the intra picture estimation component 215 may be configured to code depth blocks of the depth map using depth modeling mode (DMM) based on rate-distortion optimization (RDO).

[0072] The intra-picture prediction component 217, when implemented in an encoder, may generate a residual block from the prediction block based on the selected intra-prediction mode determined by the intra-picture estimation component 215, or, when implemented in a decoder, may read the residual block from the bitstream. The residual block contains value differences between the prediction block and the original block, represented as a matrix. The residual block is then forwarded to the transform scaling and quantization component 213. The intra-picture estimation component 215 and the intra-picture prediction component 217 may operate on both luma and chroma components.

[0073] The transform scaling and quantization component 213 is configured to further compress the residual block. The transform scaling and quantization component 213 applies a transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transform, to the residual block to generate a video block containing residual transform coefficient values. A wavelet transform, an integer transform, a subband transform, or other types of transforms may also be used. The transform may convert the residual information from the pixel value domain to a transform domain, such as the frequency domain. The transform scaling and quantization component 213 is also configured to scale the transformed residual information, for example, based on frequency. Such scaling includes applying a scaling factor to the residual information. As a result, different frequency information is quantized with different granularity, which may affect the final visual quality of the reconstructed video. The transform scaling and quantization component 213 is also configured to quantize the transform coefficients to further reduce the bitrate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be varied by adjusting a quantization parameter. In some examples, the transform scaling and quantization component 213 may then perform a scan of a matrix containing the quantized transform coefficients. The quantized transform coefficients are forwarded to the header format and CABAC component 231 for encoding into the bitstream.

[0074] The scaling and inverse transform component 229 applies the inverse processing of the transform scaling and quantization component 213 to support motion estimation. The scaling and inverse transform component 229 applies inverse scaling, transform, and / or quantization to reconstruct a residual block in the pixel domain for later use as a reference block, which may become a prediction block for another current block, for example. The motion estimation component 221 and / or motion compensation component 219 may calculate a reference block by adding the residual block back to the corresponding prediction block for use in motion estimation of a later block / frame. A filter is applied to the reconstructed reference block to reduce artifacts produced during scaling, quantization, and transform. Such artifacts may otherwise cause inaccurate predictions (and generate additional artifacts) when subsequent blocks are predicted.

[0075] The filter control analysis component 227 and the in-loop filter component 225 apply filters to residual blocks and / or to reconstructed image blocks. For example, a transformed residual block from the scaling and inverse transform component 229 may be combined with a corresponding prediction block from the intra-picture prediction component 217 and / or the motion compensation component 219 to reconstruct the original image block. The filter may then be applied to the reconstructed image block. In some examples, the filter may instead be applied to the residual block. Like the other components in FIG. 2, the filter control analysis component 227 and the in-loop filter component 225 may be highly integrated and implemented together, but are shown separately for conceptual purposes. The filters applied to reconstructed reference blocks are applied to specific spatial regions and include multiple parameters for adjusting how such filters are applied. The filter control analysis component 227 analyzes the reconstructed reference blocks to determine when such filters should be applied and set the corresponding parameters. Such data is forwarded to the header format and CABAC component 231 as filter control data for encoding. The in-loop filter component 225 applies such filters based on the filter control data. The filters may include deblocking filters, noise suppression filters, SAO filters, and adaptive loop filters. Such filters may be applied in the spatial / pixel domain (e.g., on reconstructed pixel blocks) or in the frequency domain, depending on the example.

[0076] When operating as an encoder, the filtered reconstructed image blocks, residual blocks, and / or prediction blocks are stored in the decoded picture buffer component 223 for later use in motion estimation, as described above. When operating as a decoder, the decoded picture buffer component 223 stores and forwards the reconstructed and filtered blocks to a display as part of the output video signal. The decoded picture buffer component 223 may be any memory device capable of storing prediction blocks, residual blocks, and / or reconstructed image blocks.

[0077] The header format and CABAC component 231 receives data from various components of the codec system 200 and encodes such data into a coding bitstream for transmission to a decoder. Specifically, the header format and CABAC component 231 generates various headers for encoding control data, such as general control data and filter control data. Additionally, prediction data, including intra-prediction and motion data, and residual data in the form of quantized transform coefficient data are all encoded within the bitstream. The final bitstream contains all information required by a decoder to reconstruct the original partitioned video signal 201. Such information may also include an intra-prediction mode index table (also called a codeword mapping table), definitions of the coding contexts of various blocks, indications of the most likely intra-prediction mode, indications of partition information, etc. Such data may be encoded using entropy coding. For example, the information may be encoded using context adaptive variable length coding (CAVLC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy coding technique. Following entropy coding, the coded bitstream may be transmitted to another device (e.g., a video decoder) or stored for later transmission or retrieval.

[0078] 3 is a block diagram illustrating an example video encoder 300. Video encoder 300 may be utilized to implement the encoding functionality of codec system 200 and / or to implement steps 101, 103, 105, 107, and / or 109 of method of operation 100. Encoder 300 partitions an input video signal to produce a partitioned video signal 301 that is substantially similar to partitioned video signal 201. Partitioned video signal 301 is then compressed and encoded into a bitstream by components of encoder 300.

[0079] Specifically, the partitioned video signal 301 is forwarded to an intra-picture prediction component 317 for intra prediction. The intra-picture prediction component 317 may be substantially similar to the intra-picture estimation component 215 and the intra-picture prediction component 217. The partitioned video signal 301 is also forwarded to a motion compensation component 321 for inter prediction based on reference blocks in a decoded picture buffer component 323. The motion compensation component 321 may be substantially similar to the motion estimation component 221 and the motion compensation component 219. The prediction blocks and residual blocks from the intra-picture prediction component 317 and the motion compensation component 321 are forwarded to a transform and quantization component 313 for transforming and quantizing the residual blocks. The transform and quantization component 313 may be substantially similar to the transform scaling and quantization component 213. The transformed and quantized residual blocks and corresponding prediction blocks (together with associated control data) are forwarded to an entropy coding component 313 for coding into a bitstream. The entropy coding component 331 may be substantially similar to the header format and CABAC component 231 .

[0080] The transformed and quantized residual block and / or the corresponding prediction block are also forwarded from the transform and quantization component 313 to the inverse transform and quantization component 329 for reconstructing into a reference block for use by the motion compensation component 321. The inverse transform and quantization component 329 may be substantially similar to the scaling and inverse transform component 229. An in-loop filter in the in-loop filter component 325 is also applied to the residual block and / or the reconstructed reference block, depending on the example. The in-loop filter component 325 may be substantially similar to the filter control analysis component 227 and the in-loop filter component 225. The in-loop filter component 325 may include multiple filters as discussed with respect to the in-loop filter component 225. The filtered block is then stored in the decoded picture buffer component 323 for use as a reference block by the motion compensation component 321. The decoded picture buffer component 323 may be substantially similar to the decoded picture buffer component 223.

[0081] 4 is a block diagram illustrating an exemplary video decoder 400. Video encoder 400 may be utilized to implement the decoding functionality of codec system 200 and / or to implement steps 111, 113, 115, and / or 117 of method of operation 100. Decoder 400 receives a bitstream, for example, from encoder 300, and generates a reconstructed output video signal based on the bitstream for display to an end user.

[0082] The bitstream is received by the entropy decoding component 433. The entropy decoding component 433 is configured to implement an entropy decoding scheme such as CAVLC, CABAC, SBAC, PIPE coding, or other entropy coding techniques. For example, the entropy decoding component 433 may use header information to provide context for interpreting additional data encoded as codewords in the bitstream. The decoded information includes any desired information for decoding the video signal, such as general control data, filter control data, partition information, motion data, prediction data, and quantized transform coefficients from the residual block. The quantized transform coefficients are forwarded to the inverse transform and quantization component 429 for reconstruction into the residual block. The inverse transform and quantization component 429 may be similar to the inverse transform and quantization component 329.

[0083] The reconstructed residual block and / or prediction block are forwarded to the intra-picture prediction component 417 for reconstructing into an image block based on an intra-prediction operation. The intra-picture prediction component 417 may be similar to the intra-picture estimation component 215 and the intra-picture prediction component 217. Specifically, the intra-picture prediction component 417 uses a prediction mode to identify the location of a reference block within a frame and applies the residual block to the result to reconstruct an intra-predicted image block. The reconstructed intra-predicted image block and / or residual block, and the corresponding inter-prediction data, are forwarded to the decoded picture buffer component 423 via an in-loop filter component 425, which may be substantially similar to the decoded picture buffer component 223 and the in-loop filter component 225, respectively. The in-loop filter component 425 filters the reconstructed image block, residual block, and / or prediction block, and such information is stored in the decoded picture buffer component 423. The reconstructed image block from the decoded picture buffer component 423 is forwarded to the motion compensation component 421 for inter-prediction. The motion compensation component 421 may be substantially similar to the motion estimation component 221 and / or the motion compensation component 219. Specifically, the motion compensation component 421 uses a motion vector from a reference block to generate a prediction block and provides a residual block as the result to reconstruct an image block. The resulting reconstructed block may be transferred to the decoded picture buffer component 423 via the in-loop filter component 425. The decoded picture buffer component 423 may continue to store additional reconstructed image blocks that can be reconstructed into frames according to the partition information. Such frames may be arranged in a sequence. The sequence is output to a display as a reconstructed output video signal.

[0084] 5 is a schematic diagram illustrating an exemplary bitstream 500 including a coded video sequence. For example, bitstream 500 may be generated by codec system 200 and / or encoder 300 for decoding by codec system 200 and / or decoder 400. As another example, bitstream 500 may be generated by an encoder in step 109 of method 100 for use in step 111 by a decoder.

[0085] The bitstream 500 includes a sequence parameter set (SPS) 510, multiple picture parameter sets (PPS) 512, a tile group header 514, and image data 520. The SPS 510 includes sequence data common to all pictures in a video sequence included in the bitstream 500. Such data may include picture sizing, bit depth, coding tool parameters, bit rate constraints, etc. The PPS 512 includes parameters specific to one or more corresponding pictures. Thus, each picture in a video sequence may reference one PPS 512. The PPS 512 may indicate available coding tools, quantization parameters, offsets, picture-specific coding tool parameters (e.g., filter control), etc. for tiles in the corresponding picture. The tile group header 514 includes parameters specific to each tile group in a picture. Thus, there may be one tile group header 514 for each tile group in a video sequence. The tile group header 514 may include tile group information, a picture order count (POC), a reference picture list, prediction weights, tile entry points, deblocking parameters, etc. It should be noted that some systems refer to the tile group header 514 as a slice header and use such information to support slices instead of tile groups.

[0086] The image data 520 includes video data coded according to inter-prediction and / or intra-prediction, as well as corresponding transformed and quantized residual data. Such image data 520 is sorted according to the partitions used to partition the image before encoding. For example, an image in the image data 520 is divided into one or more tile groups 521. Each tile group 521 includes one or more tiles 523. The tiles 523 are further divided into coding tree units (CTUs). The CTUs are further divided into coding blocks based on the coding tree. The coding blocks can then be coded / decoded according to a prediction mechanism. An image / picture may include one or more tile groups 521 and one or more tiles 523.

[0087] A tile group 521 is a set of related tiles 523 that can be extracted and coded separately, for example, to support the display of a region of interest and / or to support parallel processing. A picture may contain one or more tile groups 521. Each tile group 521 references a coding tool in its corresponding tile group header 514. Thus, a current tile group 521 can be coded using a different coding tool than other tile groups 521 by changing the data in the corresponding tile group header 514. Tile groups 521 may be described in terms of the mechanism used to allocate tiles 523 to the tile group 521. A tile group 521 containing tiles 523 allocated in raster scan order may be referred to as a raster scan tile group. A tile group 521 containing tiles 523 allocated to generate a rectangle (or square) may be referred to as a rectangular tile group. Figures 6-7 include examples of raster scan tile groups and rectangular tile groups, respectively, which are discussed in more detail below.

[0088] A tile 523 is a partitioned portion of a picture generated by horizontal and vertical boundaries. The tiles 523 may be rectangular and / or square. A picture may be partitioned into rows and columns of tiles 523. A row of tiles 523 is a set of tiles 523 positioned adjacently horizontally to generate a continuous line from the left boundary to the right boundary of the picture (or vice versa). A column of tiles 523 is a set of tiles 523 positioned adjacently vertically to generate a continuous line from the top boundary to the bottom boundary of the picture (or vice versa). Tiles 523 may or may not allow prediction based on other tiles 523, depending on the example. For example, a tile group 521 may include a set of tiles 523 designated as an MCTS. Tiles 523 within an MCTS can be coded by prediction from other tiles 523 within the MCTS but not by tiles 523 outside the MCTS. Tiles 523 can be further partitioned into CTUs. The coding tree can be used to partition the CTUs into coding blocks, which can be coded according to intra-prediction or inter-prediction.

[0089] Each tile 523 may have a unique tile index 524 within the picture. The tile index 524 is a procedurally selected numeric identifier that can be used to distinguish one tile 523 from another. For example, the tile index 524 may increase numerically in raster scan order, which is left-to-right and top-to-bottom. Notably, in some examples, the tiles 523 may also be assigned a tile identifier (ID). The tile ID is an assigned identifier that can be used to distinguish one tile 523 from another. In some examples, calculations may utilize the tile ID instead of the tile index 524. In some examples, the tile ID may also be assigned to have the same value as the tile index 524. In some examples, the tile index 524 and / or ID may be signaled to indicate the boundaries of the tile group 521 that includes the tile 523. Furthermore, the tile index 524 and / or ID may be used to map the image data 520 associated with the tile 523 to the correct location for display.

[0090] As mentioned above, the tile group 521 may be a raster scan tile group or a rectangular tile group. This disclosure includes a signaling mechanism to enable a codec to support both tile group 521 types in a manner that supports increased coding efficiency and reduced complexity. The tile group flag 531 is a data unit that can be used to signal whether the corresponding tile group 521 is raster scan or rectangular. The tile group flag 531 can be signaled in the SPS 510 or the PPS 512, depending on the example. The tiles 523 assigned to the tile group 521 can be signaled by indicating the first tile 532 and the last tile 533 in the bitstream 500. For example, the first tile 532 may include the tile index 524 or ID of the tile 523 in the first position within the tile group 521. The first position is the top-left corner for rectangular tile groups and the lowest index / ID for raster scan tile groups. Additionally, the last tile 533 may include the tile index 524 or ID of the tile 523 in the last position in the tile group 521. The last position is the bottom right corner for rectangular tile groups and the maximum index / ID for raster scan tile groups.

[0091] The tile group flag 531, the first tile 532, and the last tile 533 provide sufficient information to allow a decoder to determine the tile 523 within the tile group 521. For example, a raster scan mechanism can determine the tile 523 within a raster scan tile group based on the first tile 532 and the last tile 533. Furthermore, a rectangular mechanism can determine the tile 523 within a rectangular tile group based on the first tile 532 and the last tile 533. This allows the tile indexes 524 of other tiles 523 within the corresponding tile group 521 to be omitted from the bitstream 500. This reduces the size of the bitstream 500 and therefore improves coding efficiency. In this way, the tile group flag 531 provides sufficient information to allow a decoder to determine which mechanism to use to determine which tiles 523 are assigned to the tile group 521.

[0092] Thus, the encoder can determine whether to use raster scan or rectangular tile groups for the bitstream 500 or a subportion thereof. The encoder can then set the tile group flag 531 accordingly. Furthermore, the encoder can assign tiles 523 to tile groups 521 and include the first tile 532 and the last tile 533 in the bitstream 500. A hypothetical reference decoder (HRD) in the encoder can then determine the assignment of tiles 523 to tile groups 521 based on the tile group flag 531, the first tile 532, and the last tile 533. The HRD is a set of encoder-side modules that predicts the decoding results at the decoder as part of selecting the optimal coding approach during RDO. Furthermore, the decoder can receive the bitstream 500 and determine the assignment of tile groups 521 based on the tile group flag 531, the first tile 532, and the last tile 533. Specifically, both the HRD in the encoder and the HRD in the decoder can select the raster scan mechanism or the rectangular mechanism based on the tile group flag 531. The HRD and decoder can then use the selected mechanism to determine the allocation of tiles 523 to tile groups 521 based on the first tile 523 and the last tile 533.

[0093] The following are specific examples of the above mechanisms:

number

[0094] In this example, the tile group flag 531 is shown as rectangular_tile_group_flag and can be used to select a rectangular mechanism (e.g., an if statement) or a raster scan mechanism (e.g., an else statement). The rectangular mechanism determines a delta value between the first tile in the tile group and the last tile in the tile group. The number of rows in the tile group is determined by dividing the delta value by the number of columns of tiles in the picture plus one. The number of columns in the tile group is determined by the delta value modulo the number of columns of tiles in the picture plus one. Tile allocation can then be determined (e.g., a for loop in an if statement) based on the number of rows in the tile group and the number of columns in the tile group. Meanwhile, the raster scan mechanism determines the number of tiles between the first tile in the tile group and the last tile in the tile group. Because tiles are indexed in raster scan order, the raster scan mechanism can then add the determined number of tiles to the tile group in raster scan order (e.g., a for loop in an else statement).

[0095] 6 is a schematic diagram illustrating an example picture 600 partitioned into raster scan tile groups 621. For example, picture 600 can be encoded into and decoded from bitstream 500, e.g., by codec system 200, encoder 300, and / or decoder 400. Furthermore, picture 600 can be partitioned to support encoding and decoding according to method 100.

[0096] Picture 600 includes tiles 623 assigned to raster scan tile groups 621, 624, and 625, which may be substantially similar to tile groups 521 and 523, respectively. Tiles 623 are assigned to raster scan tile groups 621, 624, and 625 in raster scan order, tile by tile 623. To clearly indicate the boundaries between raster scan tile groups 621, 624, and 625, each tile group is outlined in bold. Additionally, tile group 621 is shaded to further distinguish between the tile group boundaries. It should also be noted that picture 600 may be partitioned into any number of raster scan tile groups 621, 624, and 625. For clarity of discussion, the following description will refer to raster scan tile group 621. However, tiles 623 are assigned to raster scan tile groups 624 and 625 in a manner similar to raster scan tile group 621.

[0097] As shown, the first tile 623a, the last tile 623b, and all of the shaded tiles between the first tile 623a and the last tile 623b are assigned to the tile group 621 in raster scan order. As shown, a mechanism (e.g., a method operating on a processor) that proceeds through the raster scan order assigns the first tile 623a to the tile group 621 and then proceeds (from left to right) to assign each tile 623 to the tile group 621 until the right picture 600 boundary is reached (unless the last tile 623b is reached). The raster scan order then proceeds to the next row of tiles 623 (e.g., from top row to bottom row). In this case, the first tile 623a is in the first row, so the next row is the second row. Specifically, the raster scan order proceeds to the first tile of the second row at the left picture 600 boundary, and then proceeds across the second row from left to right until the right picture 600 boundary is reached. The raster scan then moves to the next row, in this case the third row, and proceeds with allocation starting with the first tile in the third row at the left boundary of picture 600. The raster scan then moves across the third row to the right. This sequence continues until the last tile 623b is reached. At this point, tile group 621 is complete. Additional tiles 623 below and / or to the right of tile group 621 can be assigned to tile group 625 in a similar manner in raster scan order. Tiles 623 above and / or to the left of tile group 621 are assigned to tile group 624 in a similar manner.

[0098] 7 is a schematic diagram illustrating an example picture 700 partitioned into rectangular tile groups 721. For example, picture 700 can be encoded into and decoded from bitstream 500, e.g., by codec system 200, encoder 300, and / or decoder 400. Furthermore, picture 700 can be partitioned to support encoding and decoding according to method 100.

[0099] Picture 700 includes tiles 723 assigned to rectangular tile group 721, which may be substantially similar to tile group 521 and tile 523, respectively. The tiles 723 assigned to rectangular tile group 721 are shown in FIG. 7 as surrounded by a bold outline. Additionally, selected rectangular tile groups 721 are shaded to clearly delineate between rectangular tile groups 721. As shown, rectangular tile group 721 includes a set of tiles 723 that form a rectangular shape. Note that a square is a specific case of a rectangle, so rectangular tile group 721 may also be a square. As shown, a rectangle has four sides, and each side is connected to two other sides by a right angle (e.g., a 90° angle). Rectangular tile group 721a includes a first tile 723a and a last tile 723b. The first tile 723a is in the upper left corner of rectangular tile group 721a, and the last tile is in the lower right corner of rectangular tile group 721a. Tiles 723 contained within or between the row and column containing the first tile 723a and the last tile 723b are also assigned to rectangular tile group 721a on a tile-by-tile basis. As shown, this scheme differs from raster scan. For example, tile 723c is between the first tile 723a and the last tile 723b in raster scan order, but is not included in the same rectangular tile group 721a. Rectangular tile group 721a can be more computationally complex than raster scan tile group 621 due to the geometry involved. However, rectangular tile group 721a is more flexible. For example, rectangular tile group 721a may include tiles 723 from different rows rather than including all tiles between the first tile 723 and the right boundary of picture 700 (e.g., tile 723c). Rectangular tile group 721a may also exclude selected tiles between the left picture boundary and the last tile 723b. For example, tile 723d is excluded from tile group 721a.

[0100] Thus, rectangular tile group 721 and raster scan tile group 621 each have different advantages and may therefore be better suited to different use cases. For example, raster scan tile group 621 may be more advantageous when the entire picture 600 is displayed, while rectangular tile group 721 may be more advantageous when only a sub-picture is displayed. However, as described above, when only the first and last tile indexes are signaled in the bitstream, different mechanisms may be used to determine which tiles are assigned to a tile group. Thus, a flag indicating which tile group type is used can be used by a decoder or HRD to select the appropriate raster scan or rectangular mechanism. The assignment of tiles to tile groups can then be determined by using the first and last tile in the tile group.

[0101] By utilizing the above, video coding systems can be improved. Accordingly, this disclosure describes various improvements to tile grouping in video coding. More specifically, this disclosure describes signaling and derivation processes to support two different tile group concepts: raster scan-based tile groups and rectangular tile groups. In one example, a flag is utilized in a parameter set directly or indirectly referenced by a corresponding tile group. The flag specifies which tile group approach is used. The flag can be signaled in a parameter set, such as a sequence parameter set, a picture parameter set, or another type of parameter set directly or indirectly referenced by a tile group. As a specific example, the flag may be rectangular_tile_group_flag. In some examples, an indication having two or more bits may be defined and signaled in a parameter set directly or indirectly referenced by a corresponding tile group. The indication may specify which tile group approach is used. Using such an indication, two or more tile group approaches can be supported. The number of bits for signaling the indication depends on the number of tile group approaches to be supported. In some examples, a flag or indication can be signaled in the tile group header.

[0102] Signaling information indicating the first and last tiles included in a tile group may be sufficient to indicate which tiles are included in a raster scan tile group or a rectangular tile group. The derivation of the tiles included in a tile group may depend on the tile group approach used (which may be indicated by a flag or an indication), the information of the first tile in the tile group, and the information of the last tile in the tile group. The information for identifying a particular tile may be any of the following: a tile index, a tile ID (if different from the tile index), a CTU included in the tile (e.g., the first CTU included in the tile), or a luma sample included in the tile (e.g., the first luma sample included in the tile).

[0103] The following is a specific embodiment of the above mechanism: Picture parameter set RBSP syntax may be as follows: [Table 1]

[0104] tile_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax element tile_id_val[i][j] in the PPS, when present, and the syntax elements first_tile_id and last_tile_id in the tile group header that references the PPS. The value of tile_id_len_minus1 may be in the range Ceil(Log2(NumTilesInPic)) to 15, inclusive. rectangular_tile_group_flag, when set equal to 1, may specify that the tile group that references the PPS is one that contains one or more tiles that form a rectangular region of the picture. rectangular_tile_group_flag, when set equal to 0, may specify that the tile group that references the PPS is one that contains one or more tiles that are contiguous in raster scan order of the picture.

[0105] The tile group header syntax may be as follows: [Table 2]

[0106] single_tile_in_tile_group_flag, when set equal to 1, may specify that there is only one tile in the tile group. When set equal to 0, single_tile_in_tile_group_flag may specify that there is more than one tile in the tile group. first_tile_id may specify the tile ID of the first tile in the tile group. The length of first_tile_id may be tile_id_len_minus1+1 bits. The value of first_tile_id must not be equal to the value of first_tile_id of any other coding tile group in the same coding picture. When there is more than one tile group in a picture, the decoding order of the tile groups within the picture may be in ascending order of the value of first_tile_id. last_tile_id may specify the tile ID of the last tile in the tile group. The length of last_tile_id may be tile_id_len_minus1+1 bits. When not present, the value of last_tile_id may be inferred to be equal to first_tile_id.

[0107] The variables NumTilesInTileGroup, which specifies the number of tiles in a tile group, and TgTileIdx[i], which specifies the tile index of the ith tile in the tile group, may be derived as follows:

number

[0108] The general tile group data syntax may be as follows: [Table 3]

[0109] 8 is a schematic diagram of an exemplary video coding device 800. The video coding device 800 is suitable for implementing examples / embodiments of the disclosure as described herein. The video coding device 800 includes a downstream port 820, an upstream port 850, and / or a transceiver unit (Tx / Rx) 810 including a transmitter and / or receiver for communicating data upstream and / or downstream over a network. The video coding device 800 also includes a processor 830 including a logic unit and / or central processing unit (CPU) for processing data, and a memory 832 for storing data. The video coding device 800 may also include electrical, optical-to-electrical (OE) components, electrical-to-optical (EO) components, and / or wireless communication components connected to the upstream port 850 and / or the downstream port 820 for communication of data over an electrical, optical, or wireless communication network. Video coding device 800 may also include input and / or output (I / O) devices 860 for communicating data to and from a user. I / O devices 860 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. I / O devices 860 may also include input devices such as a keyboard, mouse, trackball, etc., and / or corresponding interfaces for interfacing with such output devices.

[0110] The processor 830 is implemented in hardware and software. The processor 830 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 830 communicates with the downstream port 820, the Tx / Rx 810, the upstream port 850, and the memory 832. The processor 830 includes a coding module 814. The coding module 814 implements embodiments of the disclosure described herein, such as methods 100, 900, and 1000, which may utilize the bitstream 500, the picture 600, and / or the picture 700. The coding module 814 may also implement any other method / mechanism described herein. Furthermore, coding module 814 may implement codec system 200, encoder 300, and / or decoder 400. For example, coding module 814 can partition an image into tile groups and / or tiles, the tiles into CTUs, and the CTUs into blocks, and encode the blocks when operating as an encoder. Furthermore, coding module 814 can select raster scan or rectangular tile groups and signal such selection in the bitstream. Coding module 814 may also signal the first and last tiles to support the determination of tile assignment to tile groups. When operating as a decoder or HRD, coding module 814 can determine the type of tile group used and determine the tiles assigned to the tile group based on the first and last tiles. Thus, coding module 814 allows video coding device 800 to provide additional functionality and / or coding efficiency when partitioning and coding video data.Thus, coding module 814 improves the functionality of video coding device 800 as well as solves problems specific to video coding techniques. Additionally, coding module 814 performs transformations into different states of video coding device 800. Alternatively, coding module 814 can be implemented as instructions stored in memory 832 and executed by processor 830 (e.g., as a computer program product stored on a non-transitory medium).

[0111] Memory 832 may include one or more memory types such as a disk, a tape drive, a solid state drive, read only memory (ROM), random access memory (RAM), flash memory, ternary content-addressable memory (TCAM), static random-access memory (SRAM), etc. Memory 832 may be used as overflow data storage for storing programs when they are selected for execution and for storing instructions and data read during the execution of programs.

[0112] 9 is a flowchart of an example method 900 for encoding pictures, such as pictures 600 and / or 700, into a bitstream, such as bitstream 500. Method 900 may be utilized by an encoder, such as codec system 200, encoder 300, and / or video coding device 800, when performing method 100.

[0113] Method 900 may begin when an encoder receives a video sequence including multiple pictures and decides to encode the video sequence into a bitstream, for example, based on user input. The video sequence is partitioned into pictures / images / frames for further partitioning before encoding. In step 901, the picture is partitioned into multiple tiles. The tiles are further assigned to multiple tile groups, and thus, a subset of tiles is assigned to a tile group. In some examples, the tile groups are raster-scan tile groups. In other examples, the tile groups are rectangular tile groups.

[0114] In step 903, the flag is coded into the bitstream. The flag can be set to a first value when the tile group is a raster scan tile group and to a second value when the tile group is a rectangular tile group. The flag can be coded into a parameter set of the bitstream. For example, the parameter set in which the flag is coded can be a sequence parameter set or a picture parameter set. In some examples, the flag is a rectangular tile group flag.

[0115] In step 905, an identifier of the first tile in the tile group and an identifier of the last tile in the tile group are encoded into the bitstream. The first tile in the tile group and the last tile in the tile group may be used to indicate the tiles assigned to the tile group. In some examples, the identifier of the first tile in the tile group and the identifier of the last tile in the tile group are encoded in a tile group header in the bitstream.

[0116] The flag, the first tile of the tile group, and the last tile of the tile group can be used by the decoder and / or by the HRD in the encoder to determine the allocation of tiles to the tile group. When the tile group is a raster scan tile group, as indicated by the flag, the allocation of tiles to the tile group can be determined as follows: The number of tiles between the first tile of the tile group and the last tile of the tile group can be determined as the number of tiles in the tile group. The allocation of tiles can then be determined based on the number of tiles in the tile group. When the tile group is a rectangular tile group, as indicated by the flag, the allocation of tiles to the tile group can be determined as follows: A delta value between the first tile of the tile group and the last tile of the tile group can be determined. The number of rows in the tile group can be determined based on the delta value and the number of tile columns in the picture. The number of columns in the tile group can also be determined based on the delta value and the number of tile columns in the picture. The allocation of tiles can then be determined based on the number of rows in the tile group and the number of columns in the tile group.

[0117] In step 907, the tiles are encoded into a bitstream based on the tile assignments. In step 909, the bitstream may be stored for communication to a decoder.

[0118] 10 is a flowchart of an example method 1000 for decoding pictures, such as pictures 600 and / or 700, from a bitstream, such as bitstream 500. Method 1000 may be utilized by codec system 200, decoder 400, and / or decoder, such as video coding device 800, when performing method 100. For example, method 1000 may be utilized in response to method 900.

[0119] Method 1000 may begin when a decoder begins receiving a bitstream of coding data representing a video sequence, for example as a result of method 900. At step 1001, the bitstream is received at the decoder. The bitstream includes a picture partitioned into multiple tiles. The tiles are assigned to multiple tile groups, and thus, a subset of tiles are assigned to a tile group. In some examples, the tile groups are raster scan tile groups. In other examples, the tile groups are rectangular tile groups.

[0120] In step 1003, a flag is obtained from a parameter set of the bitstream. When the flag is set to a first value, the tile group is determined to be a raster scan tile group. When the flag is set to a second value, the tile group is determined to be a rectangular tile group. For example, the parameter that includes the flag may be a sequence parameter set or a picture parameter set. In some examples, the flag is a rectangular tile group flag.

[0121] In step 1005, an identifier of the first tile in the tile group and an identifier of the last tile in the tile group are obtained to support the determination of the tiles to be assigned to the tile group. In some examples, the identifier of the first tile in the tile group and the identifier of the last tile in the tile group are obtained from a tile group header in the bitstream.

[0122] In step 1007, the allocation of tiles for the tile group is determined based on whether the tile group is a raster scan tile group or a rectangular tile group. For example, a flag, the first tile in the tile group, and the last tile in the tile group can be used to determine the allocation of tiles for the tile group. When the tile group is a raster scan tile group, as indicated by the flag, the allocation of tiles for the tile group can be determined as follows: The number of tiles between the first tile in the tile group and the last tile in the tile group can be determined as the number of tiles in the tile group. The allocation of tiles can then be determined based on the number of tiles in the tile group. When the tile group is a rectangular tile group, as indicated by the flag, the allocation of tiles for the tile group can be determined as follows: A delta value between the first tile in the tile group and the last tile in the tile group can be determined. The number of rows in the tile group can be determined based on the delta value and the number of tile columns in the picture. The number of columns in the tile group can also be determined based on the delta value and the number of tile columns in the picture. The allocation of tiles can then be determined based on the number of rows in the tile group and the number of columns in the tile group.

[0123] The tiles are decoded to generate decoded tiles based on the assignment of the tiles to tile groups, at step 1009. A reconstructed video sequence may also be generated for display based on the decoded tiles.

[0124] 11 is a schematic diagram of an example system 1100 for coding a video sequence of pictures, such as pictures 600 and / or 700, in a bitstream, such as bitstream 500. System 1100 may be implemented by an encoder and decoder, such as codec system 200, encoder 300, decoder 400, and / or video coding device 800. Furthermore, system 1100 may be utilized when performing methods 100, 900, and / or 1000.

[0125] The system 1100 includes a video encoder 1102. The video encoder 1102 includes a partition module 1101 that partitions a picture into tiles. The video encoder 1102 further includes an inclusion module 1103 that includes the number of tiles in a tile group. The video encoder 1102 further includes an encoding module 1105 that encodes a flag set to a first value when the tile group is a raster scan tile group and a second value when the tile group is a rectangular tile group, the flag being encoded into a parameter set for the bitstream, and encoding tiles into a bitstream based on the tile group. The video encoder 1102 further includes a storage module 1107 that stores a bitstream for communication to a decoder. The video encoder 1102 further includes a transmission module 1109 that transmits the bitstream to support determining the type of tile group used and the tiles included in the tile group. The video encoder 1102 may be further configured to perform any of the steps of the method 900.

[0126] The system 1100 also includes a video decoder 1110. The video decoder 1110 includes a receiving module 1111 that receives a bitstream including a picture partitioned into a plurality of tiles, where the number of tiles is included in a tile group. The video decoder 1110 further includes an obtaining module 1113 that obtains a flag from a parameter set of the bitstream. The video decoder 1110 further includes a determining module 1115 that determines the tile group is a raster scan tile group when the flag is set to a first value and determines the tile group is a rectangular tile group when the flag is set to a second value, and determines the inclusion of tiles for the tile group based on whether the tile group is a raster scan tile group or a rectangular tile group. The video decoder 1110 further includes a decoding module 1117 that decodes tiles and generates decoded tiles based on the tile group. The video decoder 1110 further includes a generating module 1119 that generates a reconstructed video sequence for display based on the decoded tiles. The video decoder 1110 may be further configured to perform any of the steps of the method 1000.

[0127] A first component is directly connected to a second component when there are no intervening components other than wires, traces, or another medium between the first and second components. A first component is indirectly connected to a second component when there are intervening components other than wires, traces, or another medium between the first and second components. The term "connected" and variations thereof include both direct and indirect connections. The use of the term "about" means a range that includes ±10% of the subsequent numerical value, unless otherwise specified.

[0128] It should be further understood that the steps of the exemplary methods described herein do not necessarily have to be performed in the order described, and the order of the steps of such methods should be understood to be exemplary only. Similarly, additional steps may be included in such methods, and certain steps may be omitted or combined in methods according to various embodiments of the present disclosure.

[0129] Although several embodiments have been provided in this disclosure, it will be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The examples of the present invention should be considered illustrative and not restrictive, and are not intended to be limited to the details given herein. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.

[0130] Additionally, the techniques, systems, subsystems, and methods described and illustrated in various embodiments may be combined or integrated with other systems, components, techniques, or methods without departing from the scope of the present disclosure. Other examples of changes, substitutions, and alterations will be ascertainable by those skilled in the art and may be made without departing from the spirit and scope of the present disclosure. [Explanation of symbols]

[0131] 101 Input Video Signal 103 Block Partition 105 Block Compression 107 Filtering 109 Bitstream 111 Deciding on a partition 113 Block Decryption 115 Filtering 117 Output Video Signal

Claims

1. 1. An apparatus, comprising:

1. A processor, comprising: Partitioning a picture into a plurality of tiles, some of the plurality of tiles being included in at least one tile group, the plurality of tiles being further partitioned into coding tree units (CTUs); setting a flag in a parameter set to indicate that the at least one tile group is a raster scan tile group when the flag is set to a first value and to indicate that the at least one tile group is a rectangular tile group when the flag is set to a second value, the raster scan tile group including tiles that are consecutive in raster scan order of the picture, and the rectangular tile group including tiles that collectively form a rectangular region of the picture; generating encoded data including the at least one tile group and the flag; a processor configured to: a transmission module configured to transmit the encoded data to another device; An apparatus comprising:

2. The device of claim 1 , further comprising a receiving module configured to receive information from another device.

3. The device according to claim 1 or 2, wherein the parameter set is a picture parameter set.

4. The apparatus of any one of claims 1 to 3, wherein the flag is a rectangular tile group flag.

5. The apparatus of any one of claims 1 to 4, wherein the first value is zero.

6. An apparatus described in any one of claims 1 to 5, wherein the second value is 1.

Citation Information

Patent Citations

  • Cross-component prediction for video coding and clipping for adaptive color conversion

    JP2018507622A

  • Grouping of tiles for video coding

    WO2013063094A1