Methods and related apparatuses for providing relevant / independent partition encoding / decoding
By introducing the concept of block grouping and correlation syntax elements, the problem of insufficient flexibility in blocking and sharding processing in the prior art is solved, and more flexible image partitioning and more efficient compression effects are achieved.
Patent Information
- Application Number
- CN202080034185.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-08
- Filing Date
- 2020-03-05
- Publication Date
- 2025-06-24
- Estimated Expiration
- 2040-03-05
AI Technical Summary
The existing video encoding standards are insufficient in blocking and sharding processing, resulting in analytical and predictive correlation failure, increasing complexity and reducing compression efficiency.
The concept of chunking grouping is introduced, allowing the image to be partitioned into rectangles or rasters to scan chunking groups, and specify the correlation of chunking within the chunking group through syntax elements, allowing analytical and spatial prediction of correlation within the chunking group.
Improves the flexibility of image partitioning, reduces artifacts at decoding boundaries, reduces complexity, and improves compression efficiency.
Smart Images

Figure CN113767624B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure generally relates to the communication of pictures / videos, and more particularly to methods for providing encoding and / or decoding of pictures and / or videos and related apparatuses. Background Art
[0002] HEVC and VVC are discussed below.
[0003] High Efficiency Video Coding (HEVC) (i.e., H.265) is a block-based video codec standardized by ITU-T and MPEG, which utilizes temporal and spatial prediction. Spatial prediction is achieved using intra (I) prediction within the current picture. Temporal prediction is achieved using previously decoded reference pictures for inter (P) or bi-directional inter (B) prediction at the block level. The difference between the original pixel data and the predicted pixel data (referred to as the residual) is transformed into the frequency domain, quantized, and then entropy encoded before being transmitted together with the necessary prediction parameters (such as prediction mode and motion vectors (which are also entropy encoded)). By quantizing the transformed residual, the trade-off between the bitrate and quality of the video can be controlled. The level of quantization is determined by the quantization parameter (QP). The decoder performs entropy decoding, inverse quantization, and inverse transformation to obtain the residual, and then adds the residual to the intra or inter prediction to reconstruct the picture.
[0004] MPEG and ITU-T are working on the successor of HEVC within the Joint Video Exploration Team (JVET). The name of this video codec under development is Versatile Video Coding (VCC).
[0005] QTBT is discussed below.
[0006] HEVC uses a block structure, where each top-level coding block, i.e., the largest block in the coding block partition (referred to as the Coding Tree Unit (CTU)) can be partitioned by a quadtree (QT) structure. The subsequent coding block partitions called Coding Units (CUs) can be recursively further partitioned into smaller equal-sized CUs with a quadtree structure as small as block size 8x8. In the current version of VVC, the block structure is somewhat different compared to HEVC. The block structure in VVC is called the Quadtree Plus Binary Tree Plus Ternary Tree block structure (QTBT + TT). The CUs in QTBT can have a square or rectangular shape. The Coding Tree Unit (CTU) is first partitioned by a quadtree structure as in HEVC. Then, it can be further partitioned vertically or horizontally by equal-sized partitions in a binary structure to form the coding blocks called Coding Units (CUs). Thus, the blocks can have a square or rectangular shape. The depths of the quadtree and binary tree can be set by the encoder in the bitstream. Figure 1An example of using QTBT to partition CTUs is shown. TT adds the possibility of partitioning a CU into three partitions instead of two equally sized partitions; it increases the possibility of using a block structure that better fits the content structure in the picture.
[0007] Figure 1 An example of partitioning a CTU into CUs using QTBT is shown.
[0008] CABAC is discussed below.
[0009] Context Adaptive Binary Arithmetic Coding (CABAC) is an entropy coding tool used in HEVC and VVC. CABAC encodes binary symbols, which keeps the complexity low and allows modeling of the probabilities of the bits of more frequently used symbols. Since the coding patterns are usually locally well correlated, the probability model is selected adaptively based on the local context. The state of the CABAC machine (containing the probabilities of the local context) is updated continuously based on the previously encoded blocks. The CABAC state is reset for each picture, independently for slices or tiles.
[0010] Intra Random Access Point (IRAP) pictures and Coding Video Sequences (CVS) are discussed below.
[0011] For single-layer coding in HEVC, an Access Unit (AU) is the encoded representation of a single picture. An AU can consist of several Video Coding Layer (VCL) NAL units as well as non-VCL NAL units.
[0012] An Intra Random Access Point (IRAP) picture in HEVC is a picture that does not reference any picture other than itself for prediction during its decoding process. The first picture in the bitstream in decoding order in HEVC must be an IRAP picture, but an IRAP picture can also appear later in the bitstream. HEVC specifies three types of IRAP pictures: Broken Link Access (BLA) pictures, Instantaneous Decoder Refresh (IDR) pictures, and Clean Random Access (CRA) pictures.
[0013] A Coding Video Sequence (CVS) in HEVC is a sequence of access units starting at an IRAP access unit up to but not including the next IRAP access unit in decoding order. A CRA may or may not start a CVS, while BLA and IDR types always start a new CVS.
[0014] NAL units are discussed below.
[0015] Both HEVC and VVC define a Network Abstraction Layer (NAL). All data, i.e., both the Video Coding Layer (VCL) or non-VCL data in HEVC and VVC, are encapsulated in NAL units. NAL units are always byte-aligned and can be regarded as data packets. VCL NAL units contain data representing picture sample values. Non-VCL NAL units contain additional associated data such as parameter sets and Supplemental Enhancement Information (SEI) messages. NAL units in HEVC start with a header that specifies the NAL unit type of the NAL unit. The NAL unit type of the NAL unit identifies what type of data is carried in the NAL unit, the layer ID and the temporal ID to which the NAL unit belongs. The NAL unit type is conveyed in the nal_unit_type codeword in the NAL unit header, and the type indicates and defines how the NAL unit should be parsed and decoded. The remaining bytes of the NAL unit are the payload of the type indicated by the NAL unit type. The bitstream consists of a series of concatenated NAL units. The bitstream consists of a series of concatenated NAL units.
[0016] Parameter sets are discussed below.
[0017] HEVC specifies three types of parameter sets: Picture Parameter Set (PPS), Sequence Parameter Set (SPS), and Video Parameter Set (VPS). PPS contains data common to an entire picture, SPS contains data common to an encoded video sequence (CVS), and VPS contains data common to multiple CVSs.
[0018] Tiling is discussed below.
[0019] The HEVC video coding standard includes a tool called tiling, which divides a picture into rectangular spatially independent regions. Using tiling, a picture in HEVC can be partitioned into rows and columns of samples, where a tile is the intersection of a row and a column. Tiling in HEVC is always aligned with CTU boundaries.
[0020] Slicing in HEVC is discussed below.
[0021] The concept of slicing in HEVC divides a picture into encoded slices, where each slice is read in raster scan order in units of CTUs. Slices in HEVC can be independent slices or dependent slices, for which the values of some syntax elements in the slice header are inferred from the values of previous independent slices in decoding order. Each slice is encapsulated in its own NAL unit. Different coding types can be used for slices of the same picture, i.e., slices can be I-slices, P-slices, or B-slices. The main purpose of slicing is to enable resynchronization in case of data loss.
[0022] Tile groups in VVC are discussed below.
[0023] The Draft VVC Specification does not include slices, but includes a similar concept called tile groups. In HEVC, a tile can contain one or more slices, or a slice can contain one or more tiles, but not both. In VVC, the concept is more straightforward; a tile group can contain one or more complete tiles. Tile groups are used to group multiple tiles to reduce the overhead per tile. Each tile group is encapsulated in its own NAL unit. For a picture, a tile group can have a rectangular shape or consist of one or more tiles in raster scan order. A rectangular tile group consists of M×N tiles, where M is the number of tiles vertically in the tile group and N is the number of tiles horizontally. The tile groups in the VVC Draft (similar to tiles in HEVC) break prediction.
[0024] Tile grouping as in JVET-M0853 is discussed below.
[0025] At the 13th JVET meeting in Marrakech in January 2019, rectangular tile grouping was proposed for adoption according to JVET-M0853.
[0026] The text as proposed in JVET-M0853 is shown in the table in Figure 12 shown.
[0027] The semantics of the new / modified elements are provided below. Figure 12 below.
[0028] single_tile_per_tile_group equal to 1 specifies that each tile group referring to this PPS includes one tile. single_tile_per_tile_group equal to 0 specifies that the tile groups referring to this PPS can include more than one tile.
[0029] rect_tile_group_flag equal to 0 specifies that the tiles within each tile group are in raster scan order and the tile group information is not signaled in the PPS. rect_tile_group_flag equal to 1 specifies that the tiles within each tile group cover a rectangular region of the picture and the tile group information is signaled in the PPS. When single_tile_per_tile_group_flag is equal to 1, rect_tile_group_flag is inferred to be equal to 1.
[0030] num_tile_groups_in_pic_minus1 plus 1 specifies the number of tile groups in each picture of the reference PPS. The value of num_tile_groups_in_pic_minus1 shall be in the range of 0 to (NumTilesInPic - 1) (including the end values). When it does not exist and single_tile_per_tile_group_fla equals 1, it is inferred that the value of num_tile_group_in_pic_minus1 equals (NumTilesInPic - 1).
[0031] top_left_tile_idx [ i ] specifies the tile index of the tile located at the upper left corner of the i-th tile group. For any i not equal to j, the value of top_left_tile_idx [ i ] shall not be equal to the value of top_left_tile_idx [ j ]. When it does not exist, it is inferred that top_left_tile_idx [ i ] equals i. The length of the top_left_tile_idx [ i ] syntax element is Ceil(Log2(NumTilesInPic)) bits.
[0032] bottom_right_tile_idx [ i ] specifies the tile index of the tile located at the lower right corner of the i-th tile group. When single_tile_per_tile_group_flag equals 1, it is inferred that bottom_right_tile_idx [ i ] equals top_left_tile_idx [ i ]. The length of the bottom_right_tile_idx [ i ] syntax element is Ceil(Log2(NumTilesInPic)).
[0033] It may be a bitstream consistency requirement that any particular tile should be included in only one tile group.
[0034] The variable NumTilesInTileGroup [ i ] that specifies the number of tiles in a tile group and related variables are derived as follows:
[0035] deltaTileIdx [ i ] = bottom_right_tile_idx [ i ] - top_right_tile_idx[ i ]
[0036] NumTileRowsInTileGroupMinus1 [ i ] = (deltaTileIdx [ i ] / (num_tile_columns_minus1 + 1))
[0037] NumTileColumnsInTileGroupMinus1 [ i ] = (deltaTileIdx [ i ] % (num_tile_columns_minus1 + 1))
[0038] NumTilesInTileGroup [ i ] = (NumTileRowsInTileGroupMinus1 [ i ] + 1) *
[0039] (NumTileColumnsInTileGroupMinus1 [ i ] + 1)
[0040] The signalled_tile_group_id_flag equal to 1 signals the tile group ID for each tile group. The signalled_tile_group_index_flag equal to 0 signals no tile group ID. When rect_tile_group_flag is equal to 0, it is inferred that the value of signalled_tile_group_index_flag is equal to 0.
[0041] signalled_tile_group_id_length_minus1 plus 1 specifies the number of bits used to represent the syntax element tile_group_id [ i ] when present, and the syntax element tile_group_address in the tile group header. The value of signalled_tile_group_index_length_minus1 shall be in the range of 0 to 15 (inclusive of the end values). When not present, it is inferred that the value of signalled_tile_group_index_length_minus1 is equal to Ceil(Log2(num_tile_group_in_pic_minus1 + 1)) - 1.
[0042] tile_group_ID[i] specifies the tile group ID of the i-th tile group. The length of the tile_group_id[i] syntax element is tile_set_id_length_minus1 + 1 bits. When not present, tile_group_id[i] is inferred to be equal to i for each i in the range 0 to num_tile_groups_in_pic_minus1 (inclusive).
[0043] In the present disclosure, syntax examples are shown with respect to the text proposed in JVET-M0853, because this text was the latest VVC partition specification text at the time of writing.
[0044] Segment groups, segments, cells, and partitions are discussed below.
[0045] Here we describe segment groups, segments and units. The term segment is used as a more general term than block, because embodiments of the present disclosure can be applied to different kinds of picture partitioning schemes and not only to block partitions known from HEVC and VVC drafts. In this section, block is one embodiment of segment, but other segment embodiments may also exist.
[0046] Figure 2A , 2B and 2C show picture partitioning.
[0047] Figure 2A , 2B 2C show a picture ( 10 ) of a video stream and an exemplary partitioning of the picture into units ( 8 ), segments ( 11 ) and segment groups ( 12 ). Figure 2A A picture (10) consisting of 64 cells (8) is shown. Figure 2B A segment structure (13) of the same picture (10) consisting of 16 segments (11) is shown. The segment structure (13) is shown by dashed lines. Each segment (11) consists of a plurality of cells. A segment may consist of an integer number of complete cells, or a combination of complete and partial cells. Multiple segments form a segment group. Figure 2C Segment group differentiation of the same picture (10) consisting of 8 segment groups is shown. A segment group may consist of segments in raster scan order. Alternatively, a segment group may consist of any group of segments that together form a rectangle. Alternatively, a segment group may consist of any subset of segments.
[0048] A segment can be equivalent to a tile. A segment group can be equivalent to a tile group. In this description, "tile" and "segment" can be used interchangeably. We also define the term "partition" in this description to mean "a segment or a segment group". Thus, a partition can be a segment or a segment group. The term unit can be equivalent to a CTU or more generally the term block.
[0049] Encoding / decoding using known tile / segment partitioning can reduce compression efficiency and / or cause tile artifacts. SUMMARY OF THE INVENTION
[0050] According to some embodiments of the inventive concept, a method of decoding a picture from a bitstream is provided. A partition structure of the picture is determined, where the partition structure defines at least first and second partitions of the picture. At least one dependency syntax element is decoded from the bitstream, and based on the at least one dependency syntax element, it is determined whether the second partition depends on or is independent of the first partition. The picture is decoded from the bitstream based on determining whether the second partition of the picture depends on or is independent of the first partition of the picture.
[0051] According to some other embodiments of the inventive concept, a method of encoding a picture of a bitstream is provided. A partition structure of the picture is defined, where the partition structure at least includes first and second partitions of the picture. It is determined whether the second partition depends on or is independent of the first partition and at least one dependency syntax element by which the bitstream can be encoded, where the at least one dependency syntax element specifies whether the second partition depends on or is independent of the first partition. Based on determining the partition structure and based on determining whether the second partition of the picture depends on or is independent of the first partition of the picture, the first and second partitions are encoded into the bitstream.
[0052] Some embodiments disclosed herein can enable more flexible partitioning of a picture into regions where unnecessary disruptions to parsing and prediction can be reduced, artifacts at decoding boundaries can be reduced, complexity can be reduced, and / or compression efficiency can be improved. BRIEF DESCRIPTION OF THE DRAWINGS
[0053] Included to provide a further understanding of the present disclosure, and the drawings incorporated in and constituting a part of this application illustrate certain non-limiting embodiments of the inventive concept. In the drawings:
[0054] Figure 1 is a diagram showing an example of partitioning a CTU into CUs using QTBT;
[0055] Figure 2A 、 2BAnd 2C are diagrams showing picture partitioning;
[0056] Figure 3A And 3B is an example of a block structure;
[0057] Figure 4 is an example of block group partitioning;
[0058] Figure 5 is an example of 360-degree stream transmission related to the RWMR viewport based on MCTS;
[0059] Figures 6A, 6B, and 6C show examples of partitioning according to some embodiments of the inventive concept;
[0060] Figure 7 shows cubemap projection and corresponding packed frames according to some embodiments of the inventive concept;
[0061] Figures 8A, 8B, 8C, and 8D show the use of Example 6 according to some embodiments of the inventive concept Figure 5 of the request structure;
[0062] Figure 9A And 9B shows block groups A, B, and C provided as rectangular block groups and as raster scan block groups according to some embodiments of the inventive concept;
[0063] Figure 10A And 10B shows block groups according to some embodiments of the inventive concept;
[0064] Figure 11 shows any request enabled by using Example 8 according to some embodiments of the inventive concept;
[0065] Figure 12 is a table showing the text proposed in JVET-M0853;
[0066] Figure 13 is a table showing the syntax of the first example of Example 1 according to some embodiments of the inventive concept;
[0067] Figure 14 is a table showing the PPS syntax of Example 2 according to some embodiments of the inventive concept;
[0068] Figure 15 is a table showing the block group header syntax of the second example of Example 2 according to some embodiments of the inventive concept;
[0069] Figure 16 is a table showing the PPS syntax of the second example of Example 2 according to some embodiments of the inventive concept;
[0070] Figure 17 It is a table showing the grammar of Embodiment 2 according to some embodiments of the inventive concept;
[0071] Figure 18 It is a table showing the PPS grammar of an example of Embodiment 8 according to some embodiments of the inventive concept;
[0072] Figure 19 It is a table showing the grammar of an example of Embodiment 7 according to some embodiments of the inventive concept;
[0073] Figure 20 It is a table showing the grammar of an example of Embodiment 1 according to some embodiments of the inventive concept;
[0074] Figure 21 It is a block diagram showing a mobile terminal UE according to some embodiments of the inventive concept;
[0075] Figure 22 It is a block diagram showing a radio access network RAN node (e.g., base station eNB / gNB) according to some embodiments of the inventive concept;
[0076] Figure 23 It is a block diagram showing a core network node (e.g., AMF node, SMF node, etc.) according to some embodiments of the inventive concept;
[0077] Figure 24 It is a block diagram showing a media server according to some embodiments of the inventive concept;
[0078] Figure 25 is a flowchart showing a decoding operation according to some embodiments of the inventive concept; and
[0079] Figure 26 It is a flowchart showing an encoding operation according to some embodiments of the inventive concept. Detailed Description
[0080] The inventive concept will now be described more fully hereinafter with reference to the accompanying drawings, in which examples of embodiments of the inventive concept are shown. However, the inventive concept may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the inventive concept to those skilled in the art. It should also be noted that these embodiments are not mutually exclusive. Components from one embodiment may be assumed to be present / used in another embodiment by default.
[0081] The following description presents various embodiments of the disclosed subject matter. These embodiments are presented as teaching examples and should not be construed as limiting the scope of the disclosed subject matter. For example, certain details of the described embodiments may be modified, omitted, or extended without departing from the scope of the described subject matter.
[0082] Figure 21 is a block diagram showing elements of a wireless device UE 300 (also referred to as a mobile terminal, mobile communication terminal, wireless communication device, wireless terminal, wireless communication terminal, user equipment UE, user equipment node / terminal / device, etc.) configured to provide wireless communication according to an embodiment of the inventive concept. As shown, the wireless device UE may include an antenna 307 and transceiver circuitry 301 (also referred to as a transceiver), the transceiver circuitry including a transmitter and a receiver configured to provide uplink and downlink radio communication with one or more base stations of a radio access network. The wireless device UE may also include processing circuitry 303 (also referred to as a processor coupled to the transceiver circuitry), and a memory circuitry 305 (also referred to as a memory coupled to the processing circuitry). The memory circuitry 305 may include computer-readable program code that, when executed by the processing circuitry 303, causes the processing circuitry to perform operations according to embodiments disclosed herein. According to other embodiments, the processing circuitry 303 may be defined to include a memory such that a separate memory circuitry is not required. The wireless device UE may also include an interface (e.g., a user interface) coupled to the processing circuitry 303 and / or the wireless device UE may be incorporated in a vehicle.
[0083] As discussed herein, operations of the wireless device UE may be performed by the processing circuitry 303 and / or the transceiver circuitry 301. For example, the processing circuitry 303 may control the transceiver circuitry 301 to transmit communications to a radio access network node (also referred to as a base station) over a radio interface via the transceiver circuitry 301 and / or to receive communications from a RAN node over a radio interface via the transceiver circuitry 301. Additionally, modules may be stored in the memory circuitry 305, and these modules may provide instructions such that when the instructions of the modules are executed by the processing circuitry 303, the processing circuitry 303 performs corresponding operations (e.g., operations discussed below with respect to example embodiments related to encoding / decoding / transmitting / receiving a bitstream including pictures / videos).
[0084] Figure 22FIG. 0 is a block diagram of elements of a radio access network (RAN) node 400 (also referred to as a network node, base station, eNodeB / eNB, gNodeB / gNB, etc.) configured to provide cellular communication according to an embodiment of the inventive concept. As shown, the RAN node may include transceiver circuitry 401 (also referred to as a transceiver), which includes a transmitter and a receiver configured to provide uplink and downlink radio communication with a mobile terminal. The RAN node may include network interface circuitry 407 (also referred to as a network interface), which is configured to provide communication with other nodes of the RAN and / or the core network CN (e.g., with other base stations). The network node may also include processing circuitry 403 (also referred to as a processor, e.g., corresponding to processing circuitry QQ170) coupled to the transceiver circuitry and memory circuitry 405 (also referred to as a memory) coupled to the processing circuitry. The memory circuitry 405 may include computer-readable program code that, when executed by the processing circuitry 403, causes the processing circuitry to perform operations according to embodiments disclosed herein. According to other embodiments, the processing circuitry 403 may be defined to include memory such that a separate memory circuitry is not required.
[0085] As discussed herein, operations of the RAN node may be performed by the processing circuitry 403, the network interface 407, and / or the transceiver 401. For example, the processing circuitry 403 may control the transceiver 401 to transmit downlink communication to one or more mobile terminals UE over a radio interface via the transceiver 401 and / or receive uplink communication from one or more mobile terminals UE over a radio interface via the transceiver 401. Similarly, the processing circuitry 403 may control the network interface 407 to transmit communication to one or more other network nodes via the network interface 407 and / or receive communication from one or more other network nodes via the network interface. Additionally, modules may be stored in the memory 405, and these modules may provide instructions such that when the instructions of the modules are executed by the processing circuitry 403, the processing circuitry 403 performs corresponding operations.
[0086] According to some other embodiments, the network node may be implemented as a core network CN node without a transceiver. In such embodiments, transmission to the wireless device UE may be initiated by the network node such that transmission to the wireless device is provided by a network node including a transceiver (e.g., via a base station or RAN node). According to embodiments where the network node is a RAN node including a transceiver, initiating the transmission may include transmitting via the transceiver.
[0087] Figure 23is a block diagram showing elements of a core network CN node (e.g., an SMF node, an AMF node, etc.) configured to provide cellular communication according to an embodiment of the inventive concept. As shown, the CN node may include a network interface circuit 507 (also referred to as a network interface) configured to provide communication with other nodes of the core network and / or the radio access network RAN. The CN node may also include a processing circuit 503 (also referred to as a processor) coupled to the network interface circuit and a memory circuit 505 (also referred to as a memory) coupled to the processing circuit. The memory circuit 505 may include computer-readable program code that, when executed by the processing circuit 503, causes the processing circuit to perform operations according to the embodiments disclosed herein. According to other embodiments, the processing circuit 503 may be defined to include a memory such that a separate memory circuit is not required.
[0088] As discussed herein, the operations of the CN node may be performed by the processing circuit 503 and / or the network interface circuit 507. For example, the processing circuit 503 may control the network interface circuit 507 to transmit communications to one or more other network nodes via the network interface circuit 507 and / or receive communications from one or more other network nodes via the network interface circuit. Additionally, modules may be stored in the memory 505, and these modules may provide instructions such that when the instructions of the module are executed by the processing circuit 503, the processing circuit 503 performs the corresponding operations.
[0089] Figure 24 is a block diagram showing elements of a media server 600 configured to provide media content according to an embodiment of the inventive concept. As shown, the server may include, for example, a network interface circuit 607 (also referred to as a network interface) configured to provide media content (e.g., pictures and / or videos) to a wireless device 300 via a communication network (e.g., a wireless communication network including one or more RAN nodes 400 and / or CN nodes 500). The server may also include a processing circuit 603 (also referred to as a processor) coupled to the network interface circuit and a memory circuit 605 (also referred to as a memory) coupled to the processing circuit. The memory circuit 605 may include computer-readable program code that, when executed by the processing circuit 603, causes the processing circuit to perform operations according to the embodiments disclosed herein. According to other embodiments, the processing circuit 603 may be defined to include a memory such that a separate memory circuit is not required.
[0090] As discussed herein, operations of the server may be performed by processing circuitry 603 and / or network interface circuitry 607. For example, the processing circuitry 603 may control the network interface circuitry 607 to transmit communications to the wireless device via the network interface circuitry 607 through one or more network nodes (e.g., RAN and / or CN nodes), and / or receive communications from the wireless device via the network interface circuitry from one or more network nodes (e.g., RAN and / or CN nodes). Additionally, modules may be stored in the memory 605, and these modules may provide instructions such that when the instructions of the modules are executed by the processing circuitry 603, the processing circuitry 603 performs corresponding operations (e.g., the operations discussed below with respect to example embodiments related to encoding / decoding / transmitting / receiving a bitstream including pictures / videos).
[0091] The partitioning tools in HEVC and VVC enable partitioning of a picture into independent regions. The partitioning boundaries break parsing and spatial prediction correlations such that the partitions can be processed independently of other partitions.
[0092] In VVC (and HEVC), the partitioning in the current form can be constrained by using partitioning rows and partitioning columns. This means that it may be required that all partitioning boundaries span the entire picture; from left to right or from top to bottom. This may reduce / limit the flexibility of partitioning. For example, Figure 3A the partitioning structure in is not supported in HEVC and VVC.
[0093] Figure 3A shows an example of a partitioning structure not supported in the HEVC and VVC working drafts, and Figure 3B shows the partitioning structure closest to 3A using partitioning rows and partitioning columns as supported in the HEVC and VVC working draft 3.
[0094] To virtually support the partitioning structure in using HEVC or VVC, one can specify the partitioning structure shown in. Figure 3A However, Figure 3B the partitioning structure in contains many more partitioning boundaries, which harms the compression efficiency and may cause unnecessary partitioning artifacts. Also, if the partitions are to be completely spatially independent, VVC may only allow enabling or disabling of the loop filter correlation across all partitioning boundaries of the picture using the loop_filter_across_tiles_enabled_flag. Thus, many unnecessary in-loop filter constraints may occur. Figure 3B
[0095]
[0095] By introducing the concept of partition groups, partitioning of pictures into independent regions is extended in VVC. A picture can include rectangular partition groups or raster scan partition groups, but not both types in the same picture. Rectangular partition groups enable partitioning of a picture into non-overlapping rectangular regions with some restrictions, and raster scan partition groups include one or more partitions in raster scan order. Figure 4 Some partition group partitioning examples supported in the current VVC draft specification are shown. The gray lines are partition boundaries, and the black lines are partition and partition group boundaries. Figure 4 The two leftmost examples in are examples of rectangular partition groups, while the rightmost example is an example of a raster scan partition group.
[0096] However, this flexibility in partitioning does not change the inter-partition relationship, because parsing and spatial prediction dependencies are still restricted among all partitions, even those in the same partition group. In other words, in the current VVC draft, there is no prediction dependency between any two partitions regardless of whether they are in the same partition group.
[0097] Figure 5 A cube map projection partitioning example from section 2.5 of JVET-K0300-v1 is shown. The JVET-K0300-v1 document reports that the example is included in clauses D.6.3 and D.6.4 of OMAF and is adopted in the VR Industry Forum guidelines. This and other 360 video streaming embodiments can use partitioning of different resolutions that may require a mix of partitions and slices in HEVC. As Figure 5 can be seen on the right, the rightmost partition column consisting of small partitions is achieved by partitioning partitions using HEVC slices. Mixing of slices and partitions is not supported in VVC, and thus Figure 5 the example in is not supported.
[0098] Figure 5 An example of MCTS-based RWMR viewport-dependent 360° stream transmission is shown.
[0099] In applications where partitions within a partition group are naturally related, it is beneficial to be able to treat the region specified by the partition group as an entity and allow parsing and spatial prediction dependencies between the partitions within the partition group. Therefore, it is beneficial to define a mechanism that selectively allows parsing and spatial prediction dependencies between partitions.
[0100] The proposed embodiments can provide a mechanism to support relevant blocks. Through the proposed embodiments, parsing and spatial prediction correlations can be allowed between relevant blocks in a block group. This is proposed to support both the rectangular block group case and the raster scan block group case. This can be achieved by one or more syntax elements (e.g., flags in a parameter set that activate or deactivate the correlation between blocks belonging to the same block group). In some versions of the inventive concept, the one or more syntax elements are decoded for each block group. In one version, there is one syntax element for all block groups in a picture, a picture group, a CVS, or the entire bitstream. The proposed embodiments can also provide a mechanism to adjust the mutual relationship between adjacent block groups. This can be achieved by one or more syntax elements (e.g., flags in a parameter set that allow prediction correlations between, for example, two adjacent block groups).
[0101] Block groups in VVC group multiple blocks together and put them into a single encapsulation unit called an NAL unit. However, the blocks in a block group in the current VVC draft are treated as independent regions, which means that the boundaries between them disrupt parsing and spatial prediction correlations. The proposed embodiments can enable more flexible partitioning of a picture into regions (where unnecessary disruptions to parsing and prediction correlations can be reduced / avoided).
[0102] Examples of other advantages besides partitioning flexibility are as follows:
[0103] • Reduce / avoid artifacts at block boundaries within a block group.
[0104] • Complexity reduction, since no padding or boundary handling is required at block boundaries within a block group.
[0105] • Compression efficiency improvement, since prediction correlations can be allowed between adjacent blocks in a block group.
[0106] • Support for virtual blocks of different spatial sizes. This supports, for example, Figure 5 an example with low bitrate overhead.
[0107] Some embodiments of the inventive concept can extend the improvement of the boundaries between block groups in the current VVC draft that disrupt parsing and spatial prediction correlations. The proposed embodiments can provide syntax and semantics for the case where two adjacent block groups can have prediction correlations.
[0108] The VVC block grouping concept can be enhanced by defining rules and mechanisms, such as rules and mechanisms for correlations between blocks in the same block group and rules and mechanisms for correlations between block groups.
[0109] Some embodiments of the inventive concept may introduce the concept of related partitions and may signal in the bitstream one or more syntax elements that specify the correlation attributes between the designated partitions. A partition is considered independent when it can be decoded independently of other partitions. A partition is considered independent unless this independence status is overridden, for example, by one or more syntax elements decoded from the bitstream. A subset of partitions may be made dependent on decoded syntax elements in the sense that the partitions become available for use in prediction with each other and the state in one partition depends on the state in another partition. Examples of the former include inter and / or intra prediction across partition boundaries. An example of the latter is to update the CABAC state across partition boundaries such that the CABAC state of a block in one partition depends on the CABAC state of a block in another partition within the same subset.
[0110] Syntax elements for specifying the correlation between partitions may alternatively be referred to as merge syntax elements.
[0111] Using the proposed embodiments, the partitioning in Figure 5 can be achieved by appropriately grouping the blocks into block groups and carefully specifying the block correlations within the block groups. A demonstration embodiment is shown in FIGS. 6A, 6B, and 6C. This embodiment may provide the desired partitioning by: first partitioning the picture into a block grid (as shown in FIG. 6B), second grouping the blocks into block groups ( Figure 6C the thick black lines in Figure 6C ), and third designating some of the blocks in the block groups as related blocks. In
[0112] FIG. 6A shows an example of a cube map projection partition, and FIGS. 6B and 6C show the proposed embodiments that support this partition.
[0113] Embodiment A is discussed below in terms of the general concepts of some embodiments.
[0114] In this embodiment, the decoding of one or more pictures includes deriving the correlation state between a plurality of partitions. The derivation is accomplished by first decoding the partition structure (from which the one or more pictures are composed) and then deriving the correlation state between the partitions by decoding one or more syntax elements in the bitstream. The correlations may be prediction correlations and they may be specified using one or more syntax elements (such as flags in parameter sets such as picture parameter sets or sequence parameter sets). The (one or more) syntax elements for specifying the correlations may alternatively be referred to as the (one or more) merge syntax elements.
[0115] In one example, the partitioning is into tiles, and the picture is partitioned into tiles using tile rows and tile columns, and the tile dependencies are signaled in the bitstream. If signaling the tile dependencies between two adjacent tiles makes the tiles dependent, then prediction across the tile boundaries between the tiles is allowed. If a tile is signaled as independent, then prediction across the tile boundary is not allowed.
[0116] The decoder may perform all or a subset of the following operations / steps for this embodiment to decode the picture:
[0117] 1. Decode the partitioning structure from one or more syntax elements in the bitstream. The syntax is preferably located in a parameter set. The partitioning syntax may divide the picture into rows and columns, where a partition may be an intersection between a row and a column, such as tile partitioning in HEVC.
[0118] 2. Derive the dependencies between the partitions in the picture by decoding one or more syntax elements from the bitstream. The picture may include at least two adjacent partitions S1 and S2 specified as dependent by the syntax elements, and the picture may include at least two partitions S3 and S4 specified as independent, and at least one of S3 and S4 is different from S1 and S2.
[0119] 3. Use the derived dependencies when decoding the picture.
[0120] Details regarding dependent and independent partitions are discussed below.
[0121] In operation / step 3 above, at least two adjacent partitions S1 and S2 are dependent such that a subset S of the following list from 1 to 11 is allowed across the partition boundary between S1 and S2, where partition S1 is decoded before partition S2, and there is a block B1 in S1 and a block B2 in S2 which are spatial neighbors:
[0122] 1. Intra-sample prediction of B2 can be done by predicting the sample values in B2 from the sample values in B1.
[0123] 2. The intra-mode of B2 can be predicted from the intra-mode of B1.
[0124] 3. The motion vector of B2 can be predicted from the motion vector of B1 and / or the reference picture used for B1.
[0125] 4. The reference picture for inter prediction of B2 can be predicted from the reference picture used for B1.
[0126] 5. The motion vector for B2 can be selected from the motion vectors in B1, e.g., by a merge process.
[0127] 6. The quantization parameter values for B2 can be predicted or copied from the quantization parameter values of B1.
[0128] 7. The derivation of whether the inverse transform of B2 is skipped can depend on whether the inverse transform of B1 is skipped and / or other attributes of B1.
[0129] 8. The derivation of whether there are any transform coefficients in B2 can depend on whether there are any transform coefficients in B1 and / or other attributes of B1.
[0130] 9. The CABAC state for decoding the syntax elements of B2 can depend on the attributes of B1, such as but not limited to what mode B1 is encoded in, what motion vectors B1 uses, what reference pictures B1 uses, what coefficient values exist in B1, and what state it is in for CABAC.
[0131] 10. The context for decoding the syntax elements of B2 can depend on the attributes of B1, such as but not limited to what mode B1 is encoded in, what motion vectors B1 uses, what reference pictures B1 uses, what coefficient values exist in B1.
[0132] 11. The filtering of samples in B2 can depend on the sample values in B1. The filtering can include, for example, in-loop deblocking filtering, sample adaptive offset (SAO) filtering, adaptive loop filtering (ALF), bilateral filtering, or Hadamard filtering.
[0133] In operation / step 3 above, at least two partitions S3 and S4 are independent such that no subset S of the list from 1 to 11 above is allowed for any block pair B3 and B4 across the partition boundary between S3 and S4, where partition S3 is decoded before partition S4, and block B3 in S3 and block B4 in S4 are spatial neighbors.
[0134] Example B is discussed below with respect to per-partition flags.
[0135] In this embodiment, one or more syntax elements per partition, per partition group, or per set of partitions are used to signal the correlation between partitions.
[0136] Example 1 is discussed below.
[0137] In one example, a picture is partitioned into blocks using block rows and block columns, and then the blocks are grouped into block groups, and the flags for each block group are signaled and decoded such that if the value of the flag has one value (e.g., equal to 0), it is specified that the blocks in the block group are independent, and if the value of the flag has another value (e.g., equal to 1), it is specified that the blocks in the block group can be related to each other.
[0138] The decoder can perform all or a subset of the following operations / steps for this embodiment to decode a picture:
[0139] 1. Decode a block partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in a parameter set. The syntax can partition a picture into rows and columns, where a block is an intersection between a row and a column.
[0140] 2. Determine grouping the blocks into at least one block group such that a set of blocks belongs to the block group.
[0141] 3. For a block group in the picture, decode a flag that specifies whether the blocks belonging to the block group are dependent or independent. This operation / step 3 can alternatively be performed before operation / step 2.
[0142] 4. If the blocks in the block group are dependent, decode the block group, where prediction between the blocks in the block group is allowed such that there is at least one block in one block of the block group predicted from at least one block in another block of the block group. Alternatively, decode the block group, where a subset S of the list from 1 to 11 in Embodiment A is allowed.
[0143] 5. If the blocks in the block group are independent, decode the block group, where prediction between the blocks in the block group is not allowed such that there is no block in any block of the block group predicted from any block in any different block of the block group. Alternatively, decode the block group, where a subset S of the list from 1 to 11 in Embodiment A is not allowed.
[0144] In an alternative embodiment, operation / step 3 is completed by first decoding one or more syntax elements that specify the number (N) of block groups present in the picture, followed by a loop that is executed N times, where for each loop a flag is decoded and the flag specifies whether the blocks in a particular block group are dependent or independent. This syntax is preferably located in a parameter set.
[0145] Figure 13 Table 1 of... shows the exemplary syntax of Example 1 of Embodiment A on top of JVET-M0853. Modifications to JVET-M0853 include lines 19 - 21.
[0146] The following shows Figure 13 the semantics of the new syntax elements:
[0147] The value of dependent_tiles_in_tile_group_flag [ i ] being equal to 0 specifies that the tiles in the i-th tile group are independent, and the value of dependent_tiles_in_tile_group_flag [ i ] being equal to 1 specifies that the tiles in the i-th tile group are dependent. When dependent_tiles_in_tile_group_flag [ i ] does not exist, it is inferred to be equal to 0.
[0148] A description of the decoding process is provided below.
[0149] The value of dependent_tile_in_tile_group_flag [ i ] can affect the decoding process of the current tile in the picture through the following operations:
[0150] 1. Derive the variable dependent_tile_flag for the tile group to which the current tile belongs by setting the value of dependent_tile_flag to the value of dependent_tile_in_tile_group_flag [ j ], where j is the tile index of the tile group to which the current tile belongs.
[0151] 2. The availability availableN of the current tile relative to its neighboring tiles is derived as follows:
[0152] • If one or more of the following conditions are true, set availableN to be equal to FALSE:
[0153] o [Another set of conditions not described here]
[0154] o The neighboring tile is included in a different tile from the current tile, and the value of dependent_tile_flag of the tile containing the current tile is equal to 0.
[0155] • Otherwise, set availableN to be equal to TRUE.
[0156] Alternatively, the value of dependent_tile_in_tile_group_flag [ i ] can affect the decoding process of the current tile in the picture, where the current tile is the first tile in the current tile, and there is a previous tile, which is the tile immediately preceding the current tile in decoding order, and the current tile and the previous tile belong to the same tile group:
[0157] 1. Derive a variable dependent_tile_flag for a tile group to which the current tile and a previous tile belong by setting the value of dependent_tile_flag to the value of dependent_tile_in_tile_group_flag[j], where j is the tile index of the tile group to which the current tile and the previous tile belong.
[0158] 2. When finishing parsing the tile data of the previous tile, store at least one of a set of CABAC context variables, a set of rice parameter initialization states, and a set of relevant quantization states.
[0159] 3. If the value of dependent_tile_flag is equal to a value specifying that the tiles in the tile group are dependent, then before parsing the current tile, at least one of the stored set of CABAC context variables, the stored set of rice parameter initialization states, and the stored set of relevant quantization states is used as an input to a synchronization process of context variables, rice parameters, and relevant quantization states, where the synchronization process sets at least one of a set of context variable values, a rice parameter initialization state, and a relevant quantization state to the value stored in operation / step 2.
[0160] 4. Decode the current tile.
[0161] Example 2 is discussed below.
[0162] In another example of this embodiment, similar to the previous example, a flag is signaled for each tile group, which specifies whether the tiles in the tile group are dependent or independent. However, in this example, there is a separate flag for rectangular tile groups and a separate flag for raster scan tile groups, where the flag for rectangular tile groups exists in the parameter set, and the flag for raster scan tile groups is signaled in the tile group header. The decoder can perform all or a subset of the following operations for this embodiment to decode a picture:
[0163] 1. Decode a tile partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in the parameter set. The syntax can partition the picture into rows and columns, where a tile is the intersection between a row and a column.
[0164] 2. Decode one or more syntax elements that specify whether the tile group is rectangular or whether the tile group is in raster scan order.
[0165] 3. If the tile group is rectangular, first decode one or more syntax elements that specify the number (N) of rectangular tile groups present in the picture, followed by a loop that is executed N times, where for each loop a flag is decoded and the flag specifies whether the tiles in a particular rectangular tile group are dependent or independent. This syntax is preferably located in the parameter set.
[0166] 4. If the tile group is in raster scan order, decode a flag for each raster scan tile group from the tile group header, the flag specifying whether the tiles in the raster scan tile group are dependent or independent.
[0167] 5. If the tiles in the tile group are dependent, decode the tile group, where prediction between the tiles in the tile group is allowed such that there is at least one block in one tile in the tile group that is predicted from at least one block in another tile in the tile group. Alternatively, decode the tile group, where a subset S of the list from 1 to 11 in Example A is allowed.
[0168] 6. If the tiles in the tile group are independent, decode the tile group, where prediction between the tiles in the tile group is not allowed such that there is no block in any tile in the tile group that is predicted from any block in any different tile group in the tile group. Alternatively, decode the tile group, where a subset S of the list from 1 to 11 in Example A is not allowed.
[0169] Figure 14 Table 2 of [ ] shows the exemplary PPS syntax for Example 2 of Embodiment B on top of JVET-M0853. The modifications to Figure 14 JVET-M0853 in [ ] include lines 31 - 32.
[0170] Figure 15 Table 3 of [ ] shows the exemplary tile group header syntax for the second example of Embodiment B on top of JVET-M0853. The modifications to Figure 15 JVET-M0853 in [ ] include lines 7 - 8.
[0171] The semantics of the new syntax elements are shown below:
[0172] dependent_tiles_in_rect_tile_group_flag [ i ] being equal to 0 specifies that the tile group consists of independent tiles. dependent_tiles_in_rect_tile_group_flag [ i ] being equal to 1 specifies that the tile group consists of dependent tiles.
[0173] A value of dependent_tiles_in_tile_group_flag equal to 0 specifies that the tile group consists of independent tiles. A value of dependent_tiles_in_tile_group_flag equal to 1 specifies that the tile group consists of dependent tiles. When not present, it is inferred that the value of dependent_tiles_in_tile_group_flag is equal to dependent_tiles_in_rect_tile_group_flag[tileGroupIdx]. [Ed note: tileGroupIdx is the tile group index value of the current tile. When rectangular tiling is enabled, rect_tile_group_flag is equal to 0 and tileGroupIdx is set elsewhere to the tile group index of the current tile such that the correct value in the array dependent_tiles_in_rect_tile_group_flag is assigned to the variable dependent_tiles_in_tile_group_flag].
[0174] The decoding process described above can be applied to this example.
[0175] Example 3 is discussed below.
[0176] In another example of this embodiment, a flag is signaled in the PPS for each tile, where the flag specifies whether a particular tile is dependent on or independent of previously decoded neighboring tiles.
[0177] The decoder may perform all or a subset of the following operations for this embodiment to decode a picture:
[0178] 1. Decode the tile partitioning structure from one or more syntax elements in the bitstream. The syntax is preferably located in the parameter set. The syntax may partition the picture into rows and columns, where a tile is the intersection between a row and a column.
[0179] 2. Decode one or more syntax elements that specify the number (N) of tiles present in the picture, followed by a loop that is executed N times, where for each loop a flag is decoded and the flag specifies whether the tile is dependent or independent. This syntax is preferably located in the parameter set.
[0180] 3. If the tile is dependent, decode the tile, where prediction between tiles is allowed such that there is at least one block in the tile that is predicted from at least one block in another tile. Alternatively, decode the tile where a subset S of the list from 1 to 11 in Example A is allowed.
[0181] 4. If the tile is independent, decode the tile where prediction between tiles is not allowed such that no tile in the tile is predicted from any tile in any different tile. Alternatively, decode the tile where a subset S of the list from 1 to 11 in Example A is not allowed.
[0182] Figure 16 Table 4 of shows the exemplary PPS syntax of Example 3 of Embodiment B on top of JVET-M0853. Modifications to JVET-M0853 include lines 9-10.
[0183] The semantics of the new syntax elements are shown below:
[0184] dependent_tile_flag [ i ] being equal to 0 specifies that the i-th tile is independent. dependent_tile_flag [ i ] being equal to 1 specifies that the i-th tile can depend on tiles decoded before the i-th tile.
[0185] In another version of this example, the flag specifies whether the i-th tile depends on tiles in the same tile group:
[0186] dependent_tile_flag [ i ] being equal to 0 specifies that the i-th tile is independent. dependent_tile_flag [ i ] being equal to 1 specifies that the i-th tile can depend on tiles in the same tile group as the i-th tile decoded before the i-th tile.
[0187] The decoding process described above can be applied to this example.
[0188] Embodiment C (Section 5.3) is discussed below with respect to per-picture or per-sequence flags.
[0189] In this embodiment, one or more syntax elements per picture and / or per sequence are used to signal the correlation between partitions. Thus, the correlation between partitions is signaled once for the whole picture or for the whole sequence.
[0190] In one example, there is a per-picture flag that specifies the correlation between the blocks in each block group in the picture. During the decoding process of this example, the picture is partitioned into blocks using block rows and block columns, and the blocks are grouped into block groups, and the correlation flag of the picture is parsed and decoded. If the per-picture correlation flag is equal to a value (e.g., equal to 0), it specifies that the blocks in all block groups in the picture are independent, and if the correlation flag is equal to another value (e.g., equal to 1), it specifies that the blocks in all block groups in the picture are correlated. That the blocks in all block groups are correlated can mean that any two adjacent blocks in the picture are correlated or any two adjacent blocks belonging to the same block group are correlated. The correlation flag can be signaled separately for each picture, or can be signaled for a group of pictures (e.g., by placing the flag in a parameter set such as a picture parameter set).
[0191] Figure 17 Table 5 of shows the exemplary syntax of Embodiment B on top of JVET-M0853. In this example, a flag is signaled in the PPS that specifies the correlation of the blocks within each block group of all block groups in the picture. The modifications to Figure 17 JVET-M0853 in include line 19.
[0192] The semantics of the new syntax elements are shown below.
[0193] dependent_tiles_in_tile_group_flag being equal to 0 specifies that the blocks in the block group are independent, and dependent_tiles_in_tile_group_flag being equal to 1 specifies that the blocks in the block group are correlated. When dependent_tiles_in_tile_group_flag is absent, it is inferred to be equal to 0.
[0194] The decoding process described above can be applied to this embodiment.
[0195] In a variant of this embodiment, templates for defining the correlation relationships between partitions can be defined, and one or more syntax elements can specify which template is to be used for the current picture or sequence. For example, the template can (but is not limited to these examples) be signaled in a parameter set such as a picture parameter set, or the template can be a fixed template that does not require signaling. For example, template T1 specifies that all blocks in block group A and all blocks in block group C are independent and all blocks in block group B are correlated, and template T2 specifies that all blocks in block group B and all blocks in block group C are independent and all blocks in block group A are correlated. Then the syntax element specifies which of the block correlation templates T1 or T2 should be used for the current picture.
[0196] Embodiment D is discussed below with respect to flags that control different aspects of correlation. (Section 5.4).
[0197] In this embodiment, syntax elements specifying different aspects of correlation are used to signal the correlation between partitions, such as the availability of inter-frame prediction, the availability of intra-frame prediction, reset or maintaining the CABAC state moving from one partition to another. A list of 11 aspects of correlation is provided in the description of Embodiment A. Having different aspects of correlation x and y between partitions A and B means that partition A can be dependent on partition B in aspect x and independent of partition B in aspect y.
[0198] The decoder can perform all or a subset of the following operations for this embodiment to decode a picture:
[0199] 1. Decode the partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in a parameter set. The partition syntax can divide the picture into rows and columns, where a partition is the intersection between a row and a column, such as block partitioning in HEVC.
[0200] 2. Derive the correlation between the partitions in the picture by decoding one or more syntax elements from the bitstream. The picture can include at least two partitions S1 and S2 specified as correlated by the syntax elements, and the picture can include at least two partitions S3 and S4 specified as independent, where:
[0201] a. There are at least two partitions S1 and S2
[0202] b. S1 and S2 are spatial neighbors and there is a partition boundary between S1 and S2
[0203] c. S1 is decoded before S2
[0204] d. There exists block B1 in S1 and block B2 in S2, which are spatial neighbors and share a boundary, where the boundary is both a block boundary and a partition boundary
[0205] e. Complete the following subsets:
[0206] i. Decode flag F1, and if the value of F1 has a certain value, the in - frame sample prediction of B2 can be completed by predicting the sample values in B2 from the sample values in B1. If the flag has another value, this is not allowed.
[0207] ii. Decode flag F2, and if the value of F2 has a certain value, the in - frame mode of B2 can be predicted from the in - frame mode of B1. If the flag has another value, this is not allowed.
[0208] iii. Decode flag F3, and if the value of F3 has a certain value, the motion vector of B2 can be predicted from the motion vector of B1 and / or the reference picture used for B1. If the flag has another value, this is not allowed.
[0209] iv. Decode flag F4, and if the value of F4 has a certain value, the reference picture for the inter - frame prediction of B2 can be predicted from the reference picture used for B1. If the flag has another value, this is not allowed.
[0210] v. Decode flag F5, and if the value of F5 has a certain value, the motion vector for B2 can be selected from the motion vectors in B1, for example, through a merge process. If the flag has another value, this is not allowed.
[0211] vi. Decode flag F6, and if the value of F6 has a certain value, the quantization parameter value for B2 can be predicted or copied from the quantization parameter value of B1. If the flag has another value, this is not allowed.
[0212] vii. Decode flag F7, and if the value of F7 has a certain value, the derivation of whether the inverse transform of B2 is skipped can depend on whether the inverse transform of B1 is skipped and / or other attributes of B1. If the flag has another value, this is not allowed.
[0213] viii. Decode flag F8, and if the value of F8 has a certain value, the derivation of whether there are any transform coefficients in B2 can depend on whether there are any transform coefficients in B1 and / or other attributes of B1. If the flag has another value, this is not allowed.
[0214] ix. Decode flag F9, and if the value of F9 has a value, the CABAC state for decoding the syntax elements of B2 can depend on the attributes of B1, such as but not limited to, what mode B1 is encoded in, what motion vectors B1 uses, what reference pictures B1 uses, what coefficient values exist in B1, and what state CABAC is in for B1. If the flag has another value, this is not allowed.
[0215] x. Decode flag F10, and if the value of F10 has a value, the context for decoding the syntax elements of B2 can depend on the attributes of B1, such as but not limited to, what mode B1 is encoded in, what motion vectors B1 uses, what reference pictures B1 uses, what coefficient values exist in B1. If the flag has another value, this is not allowed.
[0216] xi. Decode flag F11, and if the value F11 has a value, the filtering of the samples in B2 can depend on the samples in B1. If the flag has another value, this is not allowed. Filtering can include, for example, in-loop deblocking filtering, sample adaptive offset (SAO) filtering, adaptive loop filtering (ALF), bilateral filtering, or Hadamard filtering.
[0217] 3. Use the derived dependencies when decoding the picture.
[0218] Alternatively, a subset of the flags described above can be combined such that there is a decoded flag F and the values of a subset of flags F1 to F11 are set equal to the value of F.
[0219] Embodiment E is discussed below with respect to the previous embodiments in the presence of a direction. (Section 5.5).
[0220] In this embodiment, the directional aspect of the dependency is considered. This means that one or more codewords are signaled for the dependency of partition B on partition A and the dependency of partition A on partition B is adjusted by the relative positioning of partitions A and B, such as but not limited to this example where partition B is to the left of partition A.
[0221] In an example of this embodiment, one or more codewords signal the dependency of partition A on partition B, where partition B is spatially located in a specific direction L relative to A, such as to the left of A, and another or more codewords signal the dependency of partition A on partition C, where partition C is spatially located in a specific direction T relative to A, such as above A.
[0222] The decoder can perform all or a subset of the following operations for this embodiment to decode the picture:
[0223] 1. Decode a partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in a parameter set. The syntax can divide a picture into rows and columns, where a partition is the intersection between a row and a column.
[0224] 2. Decode one or more syntax elements that specify the number (N) of tiles present in the picture, followed by a loop that is executed N times, and for each iteration of the loop, decode a number (d) of flags, where d is the number of directions, and each of the d flags specifies whether the tile is dependent or independent of the tile in the d-th direction relative to the current partition. This syntax is preferably located in a parameter set. In one example, d can be equal to 2, and thus two flags are signaled for each partition, one flag can refer to the dependence of the current partition on the left partition (the first direction is specified as the left direction), and the other flag can refer to the dependence of the current partition on the partition above (the second direction is specified as the above direction).
[0225] 3. If the tile is dependent, decode the tile, where prediction between the tiles is allowed, such that there is at least one block in the tile that is predicted from at least one block in another tile. Alternatively, decode the tile, where a subset S of the list from 1 to 11 in Example A is allowed.
[0226] 4. If the tile is independent, decode the tile, where prediction between the tiles is not allowed, such that there is no block in the tile that is predicted from any block in any different tile. Alternatively, decode the tile, where a subset S of the list from 1 to 11 in Example A is not allowed.
[0227] In one example of this embodiment, two codewords are signaled for each tile, and the first codeword specifies the dependence of tile A on tile B that is spatially to the left of tile A (and only if tile A is not at the left boundary of the picture), and the second codeword specifies the dependence of tile A on tile C that is spatially above tile A (and only if tile A is not at the upper boundary of the picture).
[0228] Figure 18 Table 6 of shows the exemplary PPS syntax of an example of Embodiment F on top of JVET - M085. The modifications to Figure 18 JVET - M0853 include lines 9 - 12.
[0229] dependent_on_left_tile_flag [ i ] being equal to 0 specifies that the i-th tile is independent. dependent_on_left_tile_flag [ i ] being equal to 1 specifies that if the i-th tile is not on the left boundary of the picture, the i-th tile can depend on the tile spatially located to the left of the i-th tile. When dependent_on_left_tile_flag [ i ] does not exist, it is inferred that the value of dependent_on_left_tile_flag [ i ] is equal to 0.
[0230] dependent_on_above_tile_flag [ i ] being equal to 0 specifies that the i-th tile is independent. dependent_on_above_tile_flag [ i ] being equal to 1 specifies that if the i-th tile is not on the upper boundary of the picture, the i-th tile can depend on the tile spatially located above the i-th tile. When dependent_on_above_tile_flag [ i ] does not exist, it is inferred that the value of dependent_on_above_tile_flag [ i ] is equal to 0.
[0231] In a variant of this embodiment, the directional correlation is extended to non-spatially adjacent partitions. In one example, the directional correlation is extended to content-adjacent partitions, which are partitions that are not spatially adjacent but share continuous content. An example of this variant of Embodiment F is the frame encapsulation of a cube map projection ( Figure 7 shown in), where, for example, the content in the left face continues to the right face, but the left and right faces are encapsulated in the left and right sides of the picture frame (with the front in between), and thus do not have a spatial neighborhood. In this example, a directional correlation can be defined that covers the continuity regardless of the spatial distance between the faces in the encapsulation frame.
[0232] Figure 7 A cube map projection and the corresponding encapsulation frame are shown, which encapsulate continuous portions of the content in partitions that may not be spatially adjacent to each other and have possible rotations. This embodiment can be combined with other embodiments (such as with Embodiment D) to have different correlations between partitions.
[0233] Embodiment F is discussed below with respect to full merging into one tile. (Section 5.6).
[0234] In this embodiment, the correlation between two partitions is treated as a complete merger of the two partitions. The complete merger can be defined as regarding the resulting region as a single partition in every aspect, e.g., having complete prediction availability and associated CABAC state derivation.
[0235] In one example, if chunks A and B are completely merged, the resulting region C is regarded as a single chunk C. FIGS. 8A, 8B, 8C, and 8D illustrate examples of this embodiment, where the chunks within a chunk group are completely merged to achieve Figure 5 the desired partition shown. To achieve the desired partition structure, the picture is first partitioned into a chunk grid (FIG. 8A), then the chunks are grouped into chunk groups (FIG. 8B), then the relevant chunks are specified (FIG. 8C), followed by completely merging the relevant chunks within each chunk group ( Figure 8D ), resulting in the desired partition structure. In other embodiments, the picture is partitioned (as shown in FIG. 8C), which consists of 36 chunks and 24 chunk groups. In this embodiment, the picture is partitioned (as Figure 8D shown), which consists of 24 chunks and 24 chunk groups.
[0236] FIGS. 8A, 8B, 8C, and 8D illustrate the implementation of the Figure 5 desired partition structure using Embodiment F.
[0237] In one example, the decoder derives a correlation flag value for each chunk group (as described earlier in this disclosure), where the correlation flag value specifies whether the chunks in a particular chunk group are related to each other or independent of each other. If the correlation flag specifies that the chunks are related, the chunk group is regarded as a single chunk during decoding. For example, if the flag specifies that the chunks in a chunk group are related, then even if there is more than one chunk in the chunk group, only one set of decoding operations / steps may be performed for the chunk group. If the flag specifies that the chunks are related, then when there is more than one chunk in the chunk group, a set of decoding operations / steps is performed for each chunk in the chunk group.
[0238] The decoder may perform all or a subset of the following operations for this embodiment to decode the picture:
[0239] 1. Decode the chunk partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in the parameter set. The syntax may divide the picture into rows and columns, where a chunk is the intersection between a row and a column.
[0240] 2. Determine grouping the chunks into at least one current chunk group such that there is a set of chunks belonging to the current chunk group, where there are at least two chunks in the set within the current chunk group.
[0241] 3. Decode a flag for the current block group in the picture, where the flag specifies whether at least two blocks belonging to the current block group are related or independent. This operation / step 3 can alternatively be performed before operation / step 2.
[0242] 4. If, according to the flag, at least two blocks in the current block group are independent, then when decoding the current block group, perform the set S of decoding operations / steps for each of at least two blocks in the current block group.
[0243] 5. If at least two blocks in the current block group are related according to the flag, then the set S of decoding operations / steps can be performed only once for the current block group (the entire current block group is treated here as a single block).
[0244] The set S of decoding operations can include one or more of the following:
[0245] 1. Derive the spatial position of the block and the spatial position of the first block in the block.
[0246] 2. Reset and initialize the arithmetic decoder engine, such as the CABAC engine. This can include resetting the context variable values used by the arithmetic engine and / or initializing the state of the rice parameter.
[0247] 3. After the block, flush CABAC and byte-align the output bitstream, for example, by outputting a bit value equal to 1, followed by 0 to 7 bit values equal to 0, so that the bitstream is byte-aligned.
[0248] 4. After decoding all the block data in the block, decode a flag that specifies whether there is another block following the block in the current block group, or whether there is no longer a block following the block in the current block group.
[0249] 5. Derive a bitstream pointer from the syntax parsed from the block group header, where the syntax can specify an entry point offset (in bytes).
[0250] 6. Set the predicted QP value of the block to the QP prediction value derived for the block group, so that the QP prediction value is set as the predicted QP value for all blocks in the block group.
[0251] Alternatively, the decoder can perform all or a subset of the following operations for this embodiment to decode the picture:
[0252] 1. Decode a block partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in a parameter set. The syntax can divide a picture into rows and columns, where a block is an intersection between a row and a column.
[0253] 2. Determine grouping blocks into at least one current block group such that there is a set of blocks belonging to the current block group, where there are at least two blocks in the set within the current block group.
[0254] 3. Decode a flag for the current block group in the picture, where the flag specifies whether the at least two blocks belonging to the current block group are related or independent. This operation / step 3 can alternatively be performed before operation / step 2.
[0255] 4. If the at least two blocks in the current block group are independent according to the flag, decode the current block group while treating the boundary between any two blocks A and B that both belong to the current block group as a block boundary.
[0256] 5. If the at least two blocks in the current block group are related according to the flag, decode the current block group while treating the boundary between any two blocks A and B that both belong to the current block group as a slice boundary rather than a block boundary, where the slice boundary can be regarded as a CTU boundary.
[0257] Embodiment G is discussed below relative to the previous embodiments, where the flag for each block indicates which neighbor it merges with. (Section 5.7).
[0258] In this embodiment (similar to Embodiment E), a separate syntax element indicates the correlation of a partition to adjacent partitions. The difference between this embodiment and Embodiment E is that in Embodiment E, the syntax element specifies the correlation of partition A to partition B, where B is located in a certain direction relative to A, but in this embodiment, the syntax element specifies the correlation of partition A to all partitions located in a certain direction relative to A. In one example, if A is not a rectangular partition, A can have more than one neighbor spatially located above A, where the same syntax element signals the correlation of A to all neighbors spatially located above A.
[0259] Figure 9A and 9B shows a case where block group A has two block groups B and C as neighbors above block group A. As an example of this embodiment, one syntax element is used to jointly specify the correlation of A to B and C because both B and C are neighbors of A and are located above A.
[0260] In Figure 9A and9B In this case, the partition group A has two partition groups B and C as neighbors above the partition group A. A syntax element is used to signal the relevance of A to B and C, since both B and C are neighbors of A and are located above A. The gray lines are partition boundaries, and the black lines are partition group boundaries. Figure 9A Rectangular partition groups are shown, and Figure 9B raster scan partition groups are shown.
[0261] The decoder may perform all or a subset of the following operations for this embodiment to decode a picture:
[0262] 1. Decode the partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in the parameter set. The syntax may divide the picture into rows and columns, where a partition is the intersection between a row and a column.
[0263] 2. Determine the grouping of partitions into at least one partition group such that the set of partitions belongs to the partition group.
[0264] 3. For a partition group in the picture, decode a flag that specifies whether the partitions belonging to the partition group are relevant or independent.
[0265] 4. For a partition group in the picture, decode one or more flags that specify whether this partition group depends on or is independent of one or more adjacent partition groups located in at least one of the up, left, right, and down directions relative to the partition group. Each flag may specify a direction.
[0266] 5. If the partitions in the partition group are independent and the partition group is independent of other partition groups, decode the partition group, where prediction between the partitions in the partition group and prediction between the partition group and other partition groups are not allowed, such that there is no block predicted from any block in any different partition in the picture in any of the partitions in the partition group. Alternatively, decode the partition group where a subset S of the list from 1 to 11 in Embodiment A is not allowed.
[0267] 6. If the tiles in a tile group are dependent and the tile group depends on other tile groups, decode the tile group, where prediction between tiles in the tile group and between tiles in the tile group and tiles in other tile groups (on which the tile group depends) is allowed, such that there is at least one tile in a tile in the tile group or in other tile groups (on which the tile group depends) that is predicted from another tile in the tile group or from at least one tile in other tile groups (on which the tile group depends). Alternatively, decode the tile group, where a subset S of the list from 1 to 11 in Example A is allowed.
[0268] Figure 19 Table 7 of shows the exemplary syntax of an example of Example G on top of JVET - M0853. For Figure 19 The modifications to JVET - M0853 in include lines 19 - 23.
[0269] The semantics of the new syntax elements are shown below:
[0270] dependent_tiles_in_tile_group_flag [ i ] being equal to 0 specifies that the tiles in the i - th tile group are independent, and dependent_tiles_in_tile_group_flag [ i ] being equal to 1 specifies that the tiles in the i - th tile group are dependent. When dependent_tiles_in_tile_group_flag [ i ] does not exist, it is inferred to be equal to 0.
[0271] dependent_to_above_tile_groups_flag [ i ] being equal to 0 specifies that the i - th tile group is independent of other tile groups spatially above the i - th tile group, and dependent_to_above_tile_groups_flag [ i ] being equal to 1 specifies that the i - th tile group depends on all j - th tile groups, where the j - th tile group is a neighbor of the i - th tile group and the j - th tile group is located above the i - th tile group and j < i. When dependent_to_above_tile_groups_flag [ i ] does not exist, it is inferred to be equal to 0.
[0272] dependent_to_left_tile_groups_flag [ i ] being equal to 0 specifies that the i-th tile group is independent of other tile groups spatially located to the left of the i-th tile group, and dependent_to_left_tile_groups_flag [ i ] being equal to 1 specifies that the i-th tile group depends on all the j-th tile groups, where the j-th tile group is a neighbor of the i-th tile group and the j-th tile group is located to the left of the i-th tile group and j < i. When dependent_to_left_tile_groups_flag [ i ] does not exist, it is inferred to be equal to 0.
[0273] Example H is discussed below with respect to flags for outer tile group boundaries, flags per boundary, or flags per tile group.
[0274] In this example, separate syntax elements indicate intra-partition and inter-partition dependencies. In the example, the partition is a tile group, and the value of the flag specifies the dependencies between tiles within the tile group, and another syntax element specifies the dependencies between the tile group and adjacent tile groups. The dependency between tile groups A and B can be adjusted to a situation where the tiles within tile group A are dependent and the tiles within tile group B are dependent.
[0275] This example can be combined with any of the other examples, e.g., to have different dependencies between partitions (Example D), or to add a direction to the dependencies between partitions (Example E), or to have dependencies on left and / or upper neighbors (Example G).
[0276] In one example of this example, a flag is signaled for each tile group, and the flag indicates whether the tiles within the tile group are independent of each other or whether they can have dependencies. Then, another flag per tile group is signaled, where for tile group N in tile group scan order, the flag specifies whether tile group N is independent of other tile groups, or whether tile group N can depend on any one or more of the adjacent tile groups in the N-1 previously signaled tile groups. The dependencies between tiles within a tile group or between two tile groups can be defined as a subset of the list provided above with respect to details of dependent and independent partitions, or can be defined as the full merge described in Example F.
[0277] The decoder can perform all or a subset of the following operations for this example to decode a picture:
[0278] 1. Decode a block partition structure from one or more syntax elements in the bitstream. The syntax is preferably located in a parameter set. The syntax can divide a picture into rows and columns, where a block is the intersection between a row and a column.
[0279] 2. Determine grouping the blocks into at least one block group such that the set of blocks belongs to the block group.
[0280] 3. For a block group in the picture, decode a flag that specifies whether the blocks belonging to the block group are dependent or independent.
[0281] 4. For a block group in the picture, decode a flag that specifies whether this block group is dependent on or independent of a previous block group.
[0282] 5. If the blocks in the block group are independent and the block group is independent of other block groups, decode the block group, where prediction between the blocks in the block group and prediction between the block group and other block groups are not allowed, such that there is no block predicted from any block in any different block in the picture in any block in the block group. Alternatively, decode the block group, where a subset S of the list from 1 to 11 in Example A is not allowed.
[0283] 6. If the blocks in the block group are dependent and the block group is dependent on other block groups, decode the block group, where prediction between the blocks in the block group and prediction between the blocks in the block group and the blocks in other block groups (on which the block group depends) are allowed, such that there is at least one block in one block in the block group or in other block groups (on which the block group depends) that is predicted from at least one block in another block in the block group or in other block groups (on which the block group depends). Alternatively, decode the block group, where a subset S of the list from 1 to 11 in Example A is allowed.
[0284] Figure 20 Table 8 of shows a sample syntax for an example of Example A on top of JVET - M0853. The Figure 20 modifications to JVET - M0853 include lines 19 - 21 and 28.
[0285] The semantics of the new syntax elements are shown below:
[0286] dependent_tiles_in_tile_group_flag [ i ] being equal to 0 specifies that the tile in the i-th tile group is independent, and dependent_tiles_in_tile_group_flag [ i ] being equal to 1 specifies that the tile in the i-th tile group is dependent. When dependent_tiles_in_tile_group_flag [ i ] does not exist, it is inferred to be equal to 0.
[0287] dependent_tile_group_flag [ i ] being equal to 0 specifies that the i-th tile group is independent, and dependent_tile_group_flag [ i ] being equal to 1 specifies that the i-th tile group depends on all the j-th tile groups, where the j-th tile group is a neighbor of the i-th tile group and j < i. When dependent_tile_group_flag[ i ] does not exist, it is inferred to be equal to 0.
[0288] Figure 10A and 10B illustrates an example of tile group partitioning, where some of the tile groups in a tile group are combined together to create a new partitioning structure using Example H.
[0289] In Figure 10A and 10B , some of the tile groups in the tile group partitioning in Figure 10A are combined together, and Figure 10B shows the combination result. The gray lines are tile boundaries, and the black lines are tile group boundaries.
[0290] In another example, the boundary of each partition signals a notification flag, and the flag specifies a complete merge between two partitions sharing the boundary. Figure 11 illustrates an example where any partition can be created using this example of Example H. Figure 11 illustrates an example of an arbitrary partitioning structure such as Partition A enabled using Example H.
[0291] The operations of an electronic device performing a decoding operation according to some embodiments of the inventive concept will be discussed below with reference to FIG. 25. As an example, such operations may be performed by a wireless device, and the operations of such a wireless device 300 will now be discussed with reference to the flowchart of FIG. 25 according to some embodiments of the inventive concept (implemented using the structure of the block diagram of Figure 21 . For example, the module may be stored in Figure 21in the memory 305, and these modules can provide instructions such that when the instructions of the modules are executed by the corresponding wireless device processing circuit 303, the processing circuit 303 performs the corresponding operations of the flowchart. For example, the electronic device can be a smart phone, a desktop computer, a laptop computer, a television, etc.
[0292] At block 2501, the processing circuit 303 can receive a bitstream including pictures from a remote device (e.g., from a remote media server) on a radio and / or network interface. For example, the bitstream can be received on a radio interface and / or other network interfaces via the transceiver circuit 301. The bitstream can be, for example, a video bitstream including multiple pictures. In addition, the bitstream can be received from a media server on a wired / wireless communication network.
[0293] At block 2503, the processing circuit 303 can decode partition syntax elements from the bitstream. At block 2505, the processing circuit 303 can determine the partition structure of the picture, where the partition structure defines at least a first and a second partition of the picture. For example, the partition structure can be determined based on the partition syntax elements.
[0294] At block 2507, the processing circuit 303 can decode at least one dependency syntax element from the bitstream. At block 2509, the processing circuit 303 can determine whether the second partition depends on or is independent of the first partition based on the at least one dependency syntax element. At block 2511, the processing circuit can decode the picture from the bitstream based on determining whether the second partition of the picture depends on or is independent of the first partition of the picture.
[0295] At block 2515, the processing circuit 303 can render the picture for display on a screen based on decoding the picture from the bitstream. For example, if the electronic device is a smart phone, the picture can be rendered for display on the touch-sensitive screen of the smart phone as part of a video played by the smart phone.
[0296] The various operations of the flowchart from FIG. 25 can be optional with respect to some embodiments of the electronic device and related methods. With respect to the method of Example Embodiment 1 (set forth below), for example, the operations of blocks 2501, 2503, and 2515 of FIG. 25 can be optional.
[0297] The following is with respect to Figure 26 Discuss the operations of an electronic device performing encoding operations according to some embodiments of the inventive concept. As an example, such operations can be performed by a media server, and now will be discussed with reference to the Figure 26 flowchart of such a media server 600 (implemented using the structure of the Figure 24 block diagram). For example, the modules can be stored in Figure 24in the memory 605, and these modules can provide instructions such that when the instructions of the modules are executed by the corresponding media server processing circuit 603, the processing circuit 603 performs the corresponding operations of the flowchart. For example, the electronic device can be a media server for distributing picture / video content. According to some other embodiments, Figure 26 the electronic device can be a smart phone, a desktop computer, a laptop computer, a television, or any other device for encoding / transmitting picture / video content.
[0298] At block 2601, the processing circuit 603 can define a partition structure of a picture of a bitstream, where the partition structure includes at least a first and a second partition of the picture.
[0299] At block 2603, the processing circuit 603 can encode partition syntax elements of the bitstream, where the partition syntax elements define the partition structure of the picture based on determining the partition structure. At block 2605, the processing circuit 603 can determine whether the second partition depends on or is independent of the first partition.
[0300] At block 2607, the processing circuit 603 can encode at least one dependency syntax element of the bitstream, where the at least one dependency syntax element specifies whether the second partition depends on or is independent of the first partition.
[0301] At block 2609, the processing circuit 603 can encode the first and second partitions into the bitstream based on determining the partition structure and based on determining whether the second partition of the picture depends on or is independent of the first partition of the picture.
[0302] At block 2611, the processing circuit 603 can transmit the bitstream over a network and / or a radio interface to a remote device (e.g., to a wireless device UE, a smart phone, a tablet computer, a laptop computer, etc.). Thus the bitstream can be received by the remote device, as discussed above with respect to block 2501 of FIG. 25.
[0303] from Figure 26 the various operations of the flowchart can be optional with respect to some embodiments of the electronic device and related methods. Regarding the method of Example Embodiment 30 (set forth below), for example, Figure 26 the operations of blocks 2603 and 2611 can be optional.
[0304] The proposed usability process according to some embodiments of the inventive concept is discussed below.
[0305] Some embodiments of the inventive concept propose adding a condition that the value of dependent_tiles_in_tile_group_flag is equal to 0 for false availability when the current and adjacent luma sample positions belong to different tiles in the same tile group. Using the HEVC v5 specification text as an illustration, the proposed embodiment would include the following text lines:
[0306] 6.4.1 Derivation process of z-scan order block availability
[0307] According to some embodiments of the inventive concept, the input to this process includes:
[0308] • The luma position (xCurr, yCurr) of the top-left sample of the current block relative to the top-left luma sample of the current picture
[0309] • The luma position (xNbY, yNbY) covered by the adjacent block relative to the top-left luma sample of the current picture.
[0310] According to some embodiments of the inventive concept, the output of this process is the availability of the adjacent block at the covered position (xNbY, yNbY), denoted as availableN.
[0311] According to some embodiments of the inventive concept, the minimum luma block address minBlockAddrCurr of the current block in z-scan order is derived as follows:
[0312] minBlockAddrCurr =
[0313] MinTbAddrZs [ xCurr > > MinTbLog2SizeY ] [ yCurr > > MinTbLog2SizeY ] (6-1)
[0314] According to some embodiments of the inventive concept, the minimum luma block address minBlockAddrN of the adjacent block at the covered position (xNbY, yNbY) in z-scan order is derived as follows:
[0315] • If one or more of the following conditions are true, then set minBlockAddrN equal to -1:
[0316] o xNbY is less than 0
[0317] o yNbY is less than 0
[0318] o xNbY is greater than or equal to pic_width_in_luma_samples
[0319] o yNbY is greater than or equal to pic_height_in_luma_samples
[0320] • Otherwise (xNbY and yNbY are inside the picture boundaries),
[0321] minBlockAddrN =
[0322] MinTbAddrZs [ xNbY >> MinTbLog2SizeY ] [ yNbY >> MinTbLog2SizeY ] (62)
[0323] According to some embodiments of the inventive concept, the availability availableN of an adjacent block is derived as follows:
[0324] • If one or more of the following conditions are true, then set availableN equal to FALSE:
[0325] OminBlockAddrN is less than 0,
[0326] OminBlockAddrN is greater than minBlockAddrCurr,
[0327] o The variable SliceAddrRs associated with the slice segment containing the adjacent block with the minimum luma block address minBlockAddrN is different in value from the variable SliceAddrRs associated with the slice segment containing the current block with the minimum luma block address minBlockAddrCurr.
[0328] o The adjacent block with the minimum luma block address minBlockAddrN is contained in a different tile from the current block with the minimum luma block address minBlockAddrCurr, and the value of dependent_tiles_in_tile_group_flag of the tile containing the current block is equal to 0.
[0329] • Otherwise, set availableN equal to TRUE.
[0330] 6.4.2 Derivation process for predicting block availability
[0331] According to some embodiments of the inventive concept, the inputs to this process include:
[0332] • The luma position (xCb, yCb) of the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture,
[0333] • The variable nCbS specifying the size of the current luma coding block,
[0334] • The luminance position (xPb, yPb) of the top-left sample of the current luminance prediction block relative to the top-left luminance sample of the current picture,
[0335] • Two variables nPbW and nPbH that specify the width and height of the current luminance prediction block,
[0336] • A variable partIdx that specifies the partition index of the current prediction unit within the current coding unit,
[0337] • The luminance position (xNbY, yNbY) covered by adjacent prediction blocks relative to the top-left luminance sample of the current picture.
[0338] According to some embodiments of the inventive concept, the output of this process is the availability of the adjacent prediction block covering the position (xNbY, yNbY), denoted as availableN, which is derived as follows.
[0339] According to some embodiments of the inventive concept, the variable sameCb identifies whether the current luminance prediction block and the adjacent luminance prediction block cover the same luminance coding block, and is derived as follows:
[0340] • If all of the following conditions are true, set sameCb equal to TRUE:
[0341] o xCb is less than or equal to xNbY,
[0342] o yCb is less than or equal to yNbY,
[0343] o (xCb + nCbS) is greater than xNbY,
[0344] o (yCb + nCbS) is greater than yNbY.
[0345] • Otherwise, set sameCb equal to FALSE.
[0346] According to some embodiments of the inventive concept, the adjacent prediction block availability availableN is derived as follows:
[0347] • If sameCb is equal to FALSE, call the derivation process of z-scan order block availability specified in Clause 6.4.1 with (xCurr, yCurr) set equal to (xPb, yPb) and the luminance position (xNbY, yNbY) as inputs, and assign the output to availableN.
[0348] • Otherwise, if all of the following conditions are true, set availableN equal to FALSE:
[0349] o(nPbW << 1) is equal to nCbS,
[0350] o(nPbH << 1) is equal to nCbS,
[0351] o partIdx is equal to 1,
[0352] o(yCb + nPbH) is less than or equal to yNbY,
[0353] o(xCb + nPbW) is greater than xNbY.
[0354] • Otherwise, set availableN to be equal to TRUE.
[0355] When availableN is equal to TRUE and CuPredMode[xNbY][yNbY] is equal to MODE_INTRA, set availableN to FALSE.
[0356] The proposed CABAC behavior according to some embodiments of the inventive concept is discussed below.
[0357] Some embodiments of the inventive concept propose that when dependent_tiles_in_tile_group_flag is equal to 1, store the context variables, the rice parameter initialization state, and the relevant quantization state when finishing parsing the tile data. Some embodiments of the inventive concept also propose that before parsing a tile that is not the first tile in a tile group, use this stored data as the input for the synchronization process of the context variables, the rice parameters, and the relevant quantization state and dependent_tiles_in_tile_group_flag is equal to 1.
[0358] The section "9.5 CABAC parsing process for tile group data" previously contained the empty sections "9.5.1 General" and "9.5.2 Initialization". Therefore, it is not possible to implement this proposal on top of the VVC specification. However, the relevant tiles are similar to the relevant slices in HEVC v5 that contain the following text. According to some embodiments of the inventive concept, a similar mechanism includes handling relevant tiles in the VVC when the equivalent CABAC text is included in the VVC draft.
[0359] • When the parsing of the general slice segment data syntax in Clause 7.3.8.1 is finished, dependent_slice_segments_enabled_flag is equal to 1 and end_of_slice_segment_flag is equal to 1. When persistent_rice_adaptation_enabled_flag is equal to 1, the storage procedures of the context variables, Rice parameter initialization status, and template predictor variables specified in Clause 9.3.2.4 are called with TableStateIdxDs, TableMpsValDs, TableStatCoeffDs as outputs, and when palette_mode_enabled_flag is equal to 1, with PredirectorPaletteSizeDs and PredirectorPaletteEntriesDs as outputs.
[0360] • Otherwise, if CtbAddrInRs is equal to slice_segment_address and dependent_slice_segment_flag is equal to 1, the synchronization procedures of the context variables and Rice parameter initialization status specified in Clause 9.3.2.5 are called with TableStateIdxDs, TableMpsValDs, TableStatCoeffDs, PredictorPaletteSizeDs, and TablePreditorPaletteEntriesDs as inputs.
[0361] Example embodiments are discussed below.
[0362] 1. A method of decoding a picture from a bitstream, the method comprising: determining (2505) a partition structure of the picture, wherein the partition structure defines at least first and second partitions of the picture; decoding (2507) at least one dependency syntax element from the bitstream; determining (2509) whether the second partition depends on or is independent of the first partition based on the at least one dependency syntax element; and decoding (2511) the picture from the bitstream based on determining whether the second partition of the picture depends on or is independent of the first partition of the picture.
[0363] 2. The method according to Embodiment 1, wherein the first partition includes at least one first block, the second partition includes at least one second block, and determining whether the second partition depends on or is independent of the first partition includes determining whether the second partition depends on or is independent of the first partition across a block boundary between the at least one first block and the at least one second block.
[0364] 3. The method according to any one of embodiments 1-2, wherein determining whether the second partition depends on or is independent of the first partition includes determining that the second partition is independent of the first partition, and wherein decoding the picture includes decoding the second partition independently of decoding the first partition.
[0365] 4. The method according to embodiment 3, wherein decoding the picture includes treating the boundary between the first and second partitions as a block boundary.
[0366] 5. The method according to any one of embodiments 1-2, wherein determining whether the second partition depends on or is independent of the first partition includes determining that the second partition depends on the first partition, and wherein decoding the picture includes decoding the second partition using at least one decoded attribute from the first partition.
[0367] 6. The method according to embodiment 5, wherein decoding the picture includes treating the boundary between the first and second partitions as a block boundary.
[0368] 7. The method according to any one of embodiments 5-6, wherein the first partition includes a first plurality of blocks, wherein the second partition includes a second plurality of blocks, and wherein decoding the picture includes decoding one block of the second plurality of blocks using at least one decoded attribute from one block of the first plurality of blocks.
[0369] 8. The method according to embodiment 7, wherein decoding includes decoding the one block of the second plurality of blocks using at least one of the following: predicting a sample value of the one block of the second plurality of blocks from a sample value of the one block of the first plurality of blocks;
[0370] Predict an intra mode of one block of the second plurality of blocks from an intra mode of one block of the first plurality of blocks; predict a motion vector of one block of the second plurality of blocks from a motion vector of one block of the first plurality of blocks; predict a motion vector of one block of the second plurality of blocks from a motion vector of a reference picture for one block of the first plurality of blocks; predict a reference picture for inter prediction for one block of the second plurality of blocks based on a reference picture for one block of the first plurality of blocks; select a motion vector to be used for one block of the second plurality of blocks based on a motion vector for one block of the first plurality of blocks; predict a quantization parameter value to be used for one block of the second plurality of blocks based on a quantization parameter value of one block of the first plurality of blocks; determine whether an inverse transform of one block of the second plurality of blocks is skipped based on whether an inverse transform of one block of the first plurality of blocks is skipped; determine whether any transform coefficients exist in one block of the second plurality of blocks based on whether any transform coefficients exist in one block of the first plurality of blocks; determine a CABAC state for decoding a syntax element of one block of the second plurality of blocks based on at least one of: a mode of one block of the first plurality of blocks, a motion vector used by one block of the first plurality of blocks, a reference picture used by one block of the first plurality of blocks, coefficient values present in one block of the first plurality of blocks, and / or a CABAC state for decoding a syntax element of one block of the first plurality of blocks; determine a context for decoding a syntax element of one block of the second plurality of blocks based on at least one of: a mode of one block of the first plurality of blocks, a motion vector used by one block of the first plurality of blocks, a reference picture used by one block of the first plurality of blocks, and / or coefficient values present in one block of the first plurality of blocks; and / or filter samples in one block of the second plurality of blocks based on sample values of one block of the first plurality of blocks, where the filtering includes at least one of in-loop deblocking filtering, sample adaptive offset filtering, adaptive loop filtering, bilateral filtering, and / or Hadamard filtering.
[0371] 9. The method according to any one of embodiments 1-8, wherein the first and second partitions include respective first and second segments included in a first group of segments of the picture, and wherein the partition structure defines third and fourth segments included in a second group of segments of the picture.
[0372] 10. The method according to embodiment 9, wherein the first, second, third, and fourth segments comprise respective first, second, third, and fourth blocks of the picture, and wherein the first and second segment groups comprise respective first and second block groups of the picture.
[0373] 11. The method according to any one of embodiments 9-10, wherein determining whether the second partition is dependent on or independent of the first partition comprises determining, based on the dependency syntax element, whether the segments of the first segment group are dependent on or independent of respective other segments of the first segment group.
[0374] 12. The method according to any one of embodiments 10-11, further comprising: decoding a mode syntax element from the bitstream, wherein the mode syntax element specifies whether the block group of the picture is a rectangular block group or a raster scan block group.
[0375] 13. The method according to embodiment 12, wherein decoding the at least one dependency syntax element from the bitstream comprises, in response to the mode syntax element specifying that the block group of the picture is a rectangular block group, decoding a first dependency flag from the bitstream that specifies whether the blocks of the first block group are dependent on or independent of other blocks of the first block group, and, in response to the mode syntax element specifying that the block group of the picture is a rectangular block group, decoding a second dependency flag from the bitstream that specifies whether the blocks of the second block group are dependent on or independent of other blocks of the second block group.
[0376] 14. The method according to embodiment 12, wherein decoding the at least one dependency syntax element further comprises decoding a group number syntax element from the bitstream that specifies the number of block groups of the picture, and, in response to the mode syntax element specifying that the block group of the picture is a rectangular block group, decoding a respective dependency flag for each of the block groups of the picture based on the group number syntax element, wherein each dependency flag specifies whether the blocks of the respective block group are dependent on or independent of other blocks of the respective block group.
[0377] 15. The method according to embodiment 12, wherein decoding the at least one dependency syntax element from the bitstream includes decoding, in response to the pattern syntax element specifying that the block group of the picture is a raster scan block group, a first dependency flag from the bitstream that specifies whether the blocks of the first block group depend on or are independent of other blocks of the first block group, and decoding, in response to the pattern syntax element specifying that the block group of the picture is a raster scan block group, a second dependency flag from the bitstream that specifies whether the blocks of the second block group depend on or are independent of other blocks of the second block group.
[0378] 16. The method according to embodiment 12, wherein decoding the at least one dependency syntax element further includes decoding, in response to the pattern syntax element specifying that the block group of the picture is a raster scan block group, a respective dependency flag for each of the block groups of the picture, wherein each dependency flag specifies whether the blocks of the respective block group depend on or are independent of other blocks of the respective block group.
[0379] 17. The method according to any one of embodiments 15-16, wherein the dependency syntax element is included in a block group header of the bitstream.
[0380] 18. The method according to any one of embodiments 10-17, wherein the dependency syntax element specifies whether all blocks of the first block group are independent of previously decoded blocks of the first block group or whether each subsequent block of the first block group depends on previously decoded blocks of the first block group.
[0381] 19. The method according to any one of embodiments 1-18, wherein the partition structure definition includes a plurality of rows and columns of partitions of the picture including the first and second partitions.
[0382] 20. The method according to any one of embodiments 1-19, wherein the dependency syntax element is included in a parameter set of the bitstream.
[0383] 21. The method according to embodiment 20, wherein the parameter set includes one of a picture parameter set and / or a sequence parameter set.
[0384] 22. The method according to any one of embodiments 1-21, further comprising: decoding (2503) a partition syntax element from the bitstream; wherein determining the partition structure includes determining the partition structure based on the partition syntax element.
[0385] 23. The method according to embodiment 22, wherein decoding the partition syntax element from a parameter set.
[0386] 24. A method according to any one of embodiments 20-23, wherein the bitstream is a video bitstream, wherein the picture is one of a plurality of pictures in the video bitstream, and wherein the partitioning syntax element is for at least two of the plurality of pictures.
[0387] 25. A method according to any one of embodiments 5-24, wherein the at least one correlation syntax element specifies a direction of correlation of the second partition relative to the first partition.
[0388] 26. A method according to embodiment 25, wherein the at least one correlation syntax element specifies one of the following: a direction upward in the picture, a direction leftward in the picture, or both a direction upward and a direction leftward in the picture.
[0389] 27. A method according to any one of embodiments 1-26, further comprising: rendering (2515) the picture for display on a screen based on decoding the picture from the bitstream.
[0390] 28. A method according to any one of embodiments 1-27, further comprising: receiving (2501) the bitstream from a remote device (such as a remote server) via a radio and / or network interface.
[0391] 29. A method according to any one of embodiments 1-28, wherein the bitstream is a video bitstream, and wherein the picture is one of a plurality of pictures in the video bitstream.
[0392] 30. A method of encoding a picture of a bitstream, the method comprising: defining (2601) a partitioning structure of the picture, wherein the partitioning structure includes at least a first and a second partition of the picture; determining (2605) whether the second partition is dependent on or independent of the first partition; encoding (2607) at least one correlation syntax element of the bitstream, wherein the at least one correlation syntax element specifies whether the second partition is dependent on or independent of the first partition; and encoding (2609) the first and second partitions into the bitstream based on defining the partitioning structure and based on determining whether the second partition of the picture is dependent on or independent of the first partition of the picture.
[0393] 31. The method according to embodiment 30, wherein the first partition includes at least one first sub-block, wherein the second partition includes at least one second sub-block, and wherein determining whether the second partition is dependent on or independent of the first partition includes determining whether the second partition is dependent on or independent of the first partition across a block boundary between the at least one first sub-block and the at least one second sub-block.
[0394] 32. The method according to any one of embodiments 30-31, wherein determining whether the second partition is dependent on or independent of the first partition includes determining that the second partition is independent of the first partition, and wherein encoding the picture includes encoding the second partition independently of encoding the first partition.
[0395] 33. The method according to embodiment 32, wherein encoding the picture includes treating a boundary between the first and second partitions as a block boundary.
[0396] 34. The method according to any one of embodiments 30-31, wherein determining whether the second partition is dependent on or independent of the first partition includes determining that the second partition is dependent on the first partition, and wherein encoding the picture includes encoding the second partition using at least one attribute from the first partition.
[0397] 35. The method according to embodiment 34, wherein encoding the picture includes treating a boundary between the first and second partitions as a block boundary.
[0398] 36. The method according to any one of embodiments 34-35, wherein the first partition includes a first plurality of blocks, wherein the second partition includes a second plurality of blocks, and wherein encoding the picture includes encoding one block in the second plurality of blocks using at least one attribute from one block in the first plurality of blocks.
[0399] 37. The method according to embodiment 36, wherein encoding includes encoding the one block in the second plurality of blocks using at least one of the following: predicting a sample value of the one block in the second plurality of blocks from a sample value of the one block in the first plurality of blocks;
[0400] Predict the intra mode of one block in the second plurality of blocks from the intra mode of one block in the first plurality of blocks; predict the motion vector of one block in the second plurality of blocks from the motion vector of one block in the first plurality of blocks; predict the motion vector of one block in the second plurality of blocks from the motion vector of the reference picture for one block in the first plurality of blocks; predict the reference picture for inter prediction for one block in the second plurality of blocks based on the reference picture for one block in the first plurality of blocks; select the motion vector to be used for one block in the second plurality of blocks based on the motion vector for one block in the first plurality of blocks; predict the quantization parameter value to be used for one block in the second plurality of blocks based on the quantization parameter value for one block in the first plurality of blocks; determine whether the inverse transform for one block in the second plurality of blocks is skipped based on whether the inverse transform for one block in the first plurality of blocks is skipped; determine whether any transform coefficients exist in one block in the second plurality of blocks based on whether any transform coefficients exist in one block in the first plurality of blocks; determine the CABAC state for encoding the syntax element of one block in the second plurality of blocks based on at least one of the following: the mode of one block in the first plurality of blocks, the motion vector used by one block in the first plurality of blocks, the reference picture used by one block in the first plurality of blocks, the coefficient values present in one block in the first plurality of blocks, and / or the CABAC state for encoding the syntax element of one block in the first plurality of blocks; determine the context for encoding the syntax element of one block in the second plurality of blocks based on at least one of the following: the mode of one block in the first plurality of blocks, the motion vector used by one block in the first plurality of blocks, the reference picture used by one block in the first plurality of blocks, and / or the coefficient values present in one block in the first plurality of blocks; and / or filter the samples in one block in the second plurality of blocks based on the sample values of one block in the first plurality of blocks, where the filtering includes at least one of in-loop deblocking filtering, sample adaptive offset filtering, adaptive loop filtering, bilateral filtering, and / or Hadamard filtering.
[0401] 38. The method according to any one of embodiments 30 - 37, wherein the first and second partitions include respective first and second segments included in a first group of segments of the picture, and wherein the partition structure defines third and fourth segments included in a second group of segments of the picture.
[0402] 39. The method according to embodiment 38, wherein the first, second, third, and fourth segments comprise respective first, second, third, and fourth blocks of the picture, and wherein the first and second segment groups comprise respective first and second block groups of the picture.
[0403] 40. The method according to any one of embodiments 38 - 39, wherein the at least one dependency syntax element specifies whether the segments of the first segment group are dependent on or independent of respective other segments of the first segment group.
[0404] 41. The method according to embodiment 39, further comprising: encoding a mode syntax element from the bitstream, wherein the mode syntax element specifies whether the block group of the picture is a rectangular block group or a raster scan block group.
[0405] 42. The method according to embodiment 41, wherein encoding the at least one dependency syntax element from the bitstream comprises encoding a first dependency flag from the bitstream that specifies whether the blocks of the first block group are dependent on or independent of other blocks of the first block group when the mode syntax element specifies that the block group of the picture is a rectangular block group, and encoding a second dependency flag from the bitstream that specifies whether the blocks of the second block group are dependent on or independent of other blocks of the second block group when the mode syntax element specifies that the block group of the picture is a rectangular block group.
[0406] 43. The method according to embodiment 41, wherein encoding the at least one dependency syntax element further comprises encoding a group number syntax element from the bitstream that specifies the number of block groups of the picture, and encoding respective dependency flags for each of the block groups of the picture based on the group number syntax element when the mode syntax element specifies that the block group of the picture is a rectangular block group, wherein each dependency flag specifies whether the blocks of the respective block group are dependent on or independent of other blocks of the respective block group.
[0407] 44. The method according to embodiment 41, wherein encoding the at least one dependency syntax element from the bitstream includes encoding a first dependency flag from the bitstream that specifies whether the blocks of the first block group are dependent on or independent of other blocks of the first block group in response to the pattern syntax element specifying that the block group of the picture is a raster scan block group, and encoding a second dependency flag from the bitstream that specifies whether the blocks of the second block group are dependent on or independent of other blocks of the second block group when the pattern syntax element specifies that the block group of the picture is a raster scan block group.
[0408] 45. The method according to embodiment 41, wherein encoding the at least one dependency syntax element further includes encoding a respective dependency flag for each of the block groups of the picture when the pattern syntax element specifies that the block group of the picture is a raster scan block group, wherein each dependency flag specifies whether the blocks of the respective block group are dependent on or independent of other blocks of the respective block group.
[0409] 46. The method according to embodiment 39, wherein the dependency syntax element specifies whether all blocks of the first block group are independent of previously encoded blocks of the first block group or whether each subsequent block of the first block group is dependent on previously encoded blocks of the first block group.
[0410] 47. The method according to any one of embodiments 30 - 46, wherein the partition structure definition includes a plurality of rows and columns of partitions of the picture including the first and second partitions.
[0411] 48. The method according to any one of embodiments 30 - 47, wherein the dependency syntax element is included in a parameter set of the bitstream.
[0412] 49. The method according to embodiment 48, wherein the parameter set includes one of a picture parameter set and / or a sequence parameter set.
[0413] 50. The method according to any one of embodiments 30 - 49, further comprising: encoding (2603) a partition syntax element of the bitstream, wherein the partition syntax element defines the partition structure of the picture based on determining the partition structure.
[0414] 51. The method according to embodiment 50, wherein encoding the partition syntax element from the parameter set.
[0415] 52. A method according to any one of embodiments 50 - 51, wherein the bitstream is a video bitstream, wherein the picture is one of a plurality of pictures in the video bitstream, and wherein the partitioning syntax element is used for at least two of the plurality of pictures.
[0416] 53. A method according to any one of embodiments 34 - 52, wherein the at least one correlation syntax element specifies a direction of the correlation of the second partition relative to the first partition.
[0417] 54. A method according to embodiment 53, wherein the at least one correlation syntax element specifies one of the following: a direction above in the picture, a direction to the left in the picture, or both a direction above and a direction to the left in the picture.
[0418] 55. A method according to any one of embodiments 30 - 54, further comprising: transmitting (2611) the bitstream to a remote device (such as a wireless device UE) via a radio and / or network interface.
[0419] 56. A method according to any one of embodiments 30 - 55, wherein the bitstream is a video bitstream, and wherein the picture is one of a plurality of pictures in the video bitstream.
[0420] 57. A method for decoding a picture from a bitstream, the method comprising: a) decoding a segmented partition structure from one or more syntax elements in the bitstream; b) determining a number N of segments present in the picture; c) decoding the number of segment groups present in the picture, wherein each segment group consists of an integer number of segments; d) decoding one or more syntax elements in the bitstream that describe the correlation between at least two partitions, wherein a partition is a segment or a segment group; e) deriving the correlation between the at least two partitions from the (one or more) decoded syntax elements that describe the correlation between the at least two partitions; and f) using the derived correlation to decode the picture.
[0421] 58. A method according to embodiment 57, wherein all segments in a segment group S are independent of each other or not.
[0422] 59. A method according to embodiment 58, wherein all segments not being independent includes that for each segment A in a segment group S, segment A depends on another segment B in the segment group S, or there is a segment C in the segment group S such that segment C depends on segment A.
[0423] 60. A method according to any one of embodiments 57 - 59, wherein the one or more syntax elements that describe the partition correlation are flags.
[0424] 61. The method according to any one of embodiments 57 - 60, wherein each partition designates one or more syntax elements that describe the correlation of the at least two partitions.
[0425] 62. The method according to any one of embodiments 57 - 61, wherein each picture or each sequence designates one or more syntax elements that describe the correlation of the at least two partitions.
[0426] 63. The method according to any one of embodiments 57 - 62, wherein the one or more syntax elements that describe the correlation of the at least two partitions consist of one or more flags that control different correlation aspects between the at least two partitions (such as the availability of inter - frame prediction, the availability of intra - frame prediction, the CABAC state, the availability of samples for filtering, etc.).
[0427] 64. The method according to any one of embodiments 57 - 63, wherein the one or more syntax elements describe the directional partition correlation in such a way that for at least two partitions A and B, the correlation of partition A to partition B and the correlation of partition B to partition A are specified or inferred independently of each other.
[0428] 65. The method according to any one of embodiments 57 - 64, wherein for the relevant partitions, the CABAC state is stored and synchronized in a manner similar to that of the relevant slices in HEVC (see the decoding process described above).
[0429] 66. The method according to any one of embodiments 57 - 65, wherein the correlation between two partitions A and B is defined as a complete merge, and the complete merge results in a new partition C having the union of the two partitions A and B.
[0430] 67. The method according to any one of embodiments 57 - 66, wherein the one or more syntax elements that describe the partition correlation are flags that indicate for each partition A which adjacent partition of partition A it depends on.
[0431] 68. The method according to any one of embodiments 57 - 67, wherein the correlation includes whether the partition is relevant or independent, as described above with respect to the details of relevant and independent partitions.
[0432] 69. The method according to any one of embodiments 57 - 68, wherein the partition is a segment or a group of segments.
[0433] 70. The method according to any one of embodiments 57 - 69, wherein the group of segments is a group of blocks.
[0434] 71. The method according to any one of embodiments 57 - 70, wherein the segmentation is in blocks.
[0435] 72. A method for decoding a current picture from a bitstream, the method comprising: a) decoding a partitioning structure from one or more syntax elements S1 in the bitstream, wherein the partitioning structure partitions one or more pictures into at least two partitions P1 and P2; b) determining whether the at least two partitions P1 and P2 are dependent or independent by decoding one or more syntax elements S2 in the bitstream; c) if it is determined that the at least two partitions P1 and P2 are dependent, decoding the current picture, wherein there is at least one block B2 in the current picture that belongs to P2 and is decoded after decoding B1 and at least one decoded attribute from at least one block B1 that belongs to P1 in the current picture is used to decode B2; and d) if the at least two partitions P1 and P2 are independent, decoding the current picture, wherein there is no block B2 in the current picture that belongs to P2 and is decoded using any decoded attribute from any block B1 that belongs to P1 in the current picture.
[0436] 73. The method according to embodiment 72, wherein the partitioning is in blocks and the blocks are grouped into block groups.
[0437] 74. The method according to embodiment 73, wherein determining whether the at least two partitions P1 and P2 are dependent or independent includes determining whether all the blocks in the block group are dependent or all the blocks in the block group are independent from the one or one syntax element S2.
[0438] 75. The method according to any one of embodiments 72 - 74, wherein the partitioning structure partitions the picture into rows and columns, wherein the partitioning is an intersection between one row and one column.
[0439] 76. The method according to any one of embodiments 72 - 75, wherein one or more syntax elements S1 in the bitstream are located in a parameter set such as a picture parameter set or a sequence parameter set.
[0440] 77. The method according to any one of embodiments 72 - 76, wherein decoding the current picture comprises a subset S of the elements listed below: a) If at least two partitions are related, intra - sample prediction of B2 is completed by predicting the sample values in B2 from the sample values in B1. If the at least two partitions are not related, intra - sample prediction of B2 is completed without using any sample values in B1; b) If the at least two partitions are related, the intra - mode of B2 is predicted by the intra - mode of B1. If the at least two partitions are not related, the intra - mode of B2 is derived without using any intra - mode in B1; c) If at least two partitions are related, the motion vector of B2 can be predicted from the motion vector of B1 and / or the reference picture used for B1. If at least two partitions are not related, the motion vector of B2 is derived without using any motion vector or the reference picture used for B1; d) If the at least two partitions are related, the reference picture for inter - prediction of B2 can be predicted from the reference picture used for B1. If the at least two partitions are not related, the reference picture for inter - prediction of B2 is derived without using any reference picture used for B1; e) If at least two partitions are related, the motion vector for B2 can be selected, for example, from the motion vectors in B1 through a merging process. If at least two partitions are not related, the motion vector for B2 is derived without selecting any motion vector in B1; f) If at least two partitions are related, the quantization parameter value for B2 can be predicted or copied from the quantization parameter value of B1. If the at least two partitions are not related, the quantization parameter value for B2 is derived without using any quantization parameter value of B1; g) If at least two partitions are related, the derivation of whether the inverse transform of B2 is skipped can depend on whether the inverse transform of B1 is skipped and / or other attributes of B1. If the at least two partitions are not related, the derivation of whether the inverse transform of B2 is skipped is derived without depending on whether the inverse transform of B1 is skipped or any other attribute of B1; h) If at least two partitions are related, the derivation of whether there are any transform coefficients in B2 can depend on whether there are any transform coefficients in B1 and / or other attributes of B1. If at least two partitions are not related, the derivation of whether there are any transform coefficients in B2 is derived without depending on whether there are any transform coefficients in B1 or any other attribute of B1; i) If at least two partitions are related, the CABAC state for decoding the syntax elements of B2 can depend on the attributes of B1, such as but not limited to what mode B1 is encoded in, what motion vector B1 uses, what reference picture B1 uses, what coefficient values exist in B1, and what state CABAC is in for B1.If at least two partitions are not related, the CABAC state for decoding the syntax elements of B2 is derived without using any attributes of B1; j) If at least two partitions are related, the context for decoding the syntax elements of B2 can depend on the attributes of B1, such as at least one of what mode B1 is encoded in, what motion vectors B1 uses, what reference pictures B1 uses, or what coefficient values are present in B1. If at least two partitions are not related, the context for decoding the syntax elements of B2 is derived without using any attributes of B1; and k) If at least two partitions are related, the filtering of the samples in B2 can depend on the sample values in B1, where the filtering can include in-loop deblocking filtering, or sample adaptive offset (SAO) filtering or adaptive loop filtering (ALF) or bilateral filtering or Hadamard filtering. If at least two partitions are not related, the filtering of the samples in B2 is performed without using any sample values in B1.
[0441] 78. An electronic device (300, 600), the electronic device comprising: processing circuitry (303, 603); and a memory (305, 605) coupled to the processing circuitry, wherein the memory includes instructions that, when executed by the processing circuitry, cause the electronic device to perform the operations according to any one of embodiments 1-77.
[0442] 79. An electronic device (300, 600), wherein the electronic device is adapted to perform according to any one of embodiments 1-77.
[0443] 80. A computer program, comprising program code to be executed by the processing circuitry (303, 603) of an electronic device (300, 600), whereby execution of the program code causes the electronic device (300, 600) to perform the operations according to any one of embodiments 1-77.
[0444] 81. A computer program product, comprising a non-transitory storage medium that includes program code to be executed by the processing circuitry (303, 503) of a wireless device (300, 600), whereby execution of the program code causes the electronic device (300, 600) to perform the operations according to any one of embodiments 1-77.
[0445] Additional explanations are provided below.
[0446] In general, all terms used herein are to be interpreted according to their ordinary meaning in the relevant technical field (unless clearly given and / or implied from the context in which it is used a different meaning). Unless otherwise explicitly stated, all references to an / a / the element, apparatus, component, part, step, etc. are to be construed openly as referring to at least one instance of the element, apparatus, component, part, step, etc. The operations / steps of any method disclosed herein do not have to be performed in the exact order disclosed, unless the steps are explicitly described as after or before another step and / or where it is implicit that the steps must be after or before another step. In any appropriate case, any feature of any one of the embodiments disclosed herein can be applied to any other embodiment. Similarly, any advantage of any one of the embodiments can be applied to any other embodiment and vice versa. From the following description, other objects, features and advantages of the appended embodiments will be apparent.
[0447] Some of the embodiments contemplated herein will now be described more fully with reference to the accompanying drawings. However, other embodiments are included within the scope of the subject matter disclosed herein, and the disclosed subject matter should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided as examples to convey the scope of the subject matter to those skilled in the art.
[0448] Further definitions and embodiments are discussed below.
[0449] In the foregoing description of the various embodiments of the inventive concept, it is to be understood that the terms used herein are for the purpose of describing particular embodiments only and are not intended to limit the inventive concept. Unless otherwise defined, all terms used herein (including technical and scientific terms) have the same meaning as commonly understood by one of ordinary skill in the art to which the inventive concept pertains. It will be further understood that terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense (unless expressly so defined herein).
[0450] When an element is referred to as being "connected", "coupled", "responsive" or a variant thereof to another element, it can be directly connected, coupled or responsive to the other element, or there can be intervening elements. In contrast, when an element is referred to as being "directly connected", "directly coupled", "directly responsive" or a variant thereof to another element, there are no intervening elements. Throughout this disclosure, like reference numerals refer to like elements. Further, as used herein, "coupled", "connected", "responsive" or a variant thereof can include wirelessly coupling, connecting or responding. As used herein, unless the context clearly indicates otherwise, the singular forms "a", "an", and "the" are intended to include the plural forms as well. Well-known functions or constructions may not be described in detail for simplicity and / or clarity. The term "and / or" includes any and all combinations of one or more of the associated listed items.
[0451] It will be understood that although the terms first, second, third, etc. may be used herein to describe various elements / operations, these elements / operations should not be limited by these terms. These terms are only used to distinguish one element / operation from another. Thus, in some embodiments a first element / operation may be referred to as a second element / operation in other embodiments without departing from the teachings of the inventive concept. Like reference numerals or like reference indicators throughout the specification denote the same or similar elements.
[0452] As used herein, the terms "comprise", "comprising", "includes", "including", "has", "having" or a variant thereof are expansive and include one or more stated features, integers, elements, steps, components or functions, but do not preclude the presence or addition of one or more other features, integers, elements, steps, components, functions or groups thereof. Further, as used herein, the common abbreviation "e.g.", derived from the Latin phrase "exempli gratia", can be used to introduce or specify one or more general examples of the previously mentioned items and is not intended to limit such items. The common abbreviation "i.e.", derived from the Latin phrase "id est", can be used to specify a particular item from a more general recitation.
[0453] EXAMPLE EMBODIMENTS The present disclosure is described with reference to block diagrams and / or flowchart illustrations of computer-implemented methods, apparatus (systems and / or devices), and / or computer program products. It is understood that the blocks of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by computer program instructions executed by one or more computer circuits. These computer program instructions can be provided to a processor circuit of a general purpose computer circuit, a special purpose computer circuit, and / or other programmable data processing circuit to produce a machine, such that the instructions executed by the processor of the computer and / or other programmable data processing device transform and control transistors, values stored in memory locations, and other hardware components within such circuits to implement the functions / actions specified in one or more of the block diagrams and / or flowchart blocks, and thereby create means (functionalities) and / or structures for implementing the functions / actions specified in one or more of the block diagrams and / or flowchart blocks.
[0454] These computer program instructions can also be stored in a tangible computer-readable medium that can direct a computer or other programmable data processing device to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture that includes instructions for implementing the functions / actions specified in one or more of the block diagrams and / or flowchart blocks. Accordingly, embodiments of the inventive concept can be embodied in hardware and / or in software (including firmware, resident software, microcode, etc.) that runs on a processor such as a digital signal processor, which can be collectively referred to as "circuits", "modules", or variants thereof.
[0455] It should also be noted that in some alternative implementations, the functions / actions noted in the blocks may not occur in the order noted in the flowchart. For example, depending on the functionality / action involved, two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order. In addition, the functionality of a given block of the flowchart and / or block diagram can be separated into multiple blocks, and / or the functionality of two or more blocks of the flowchart and / or block diagram can be at least partially integrated. Finally, other blocks can be added / inserted between the blocks shown, and / or blocks / operations can be omitted without departing from the scope of the inventive concept. Further, although some of the figures herein include arrows on communication paths to indicate a primary direction of communication, it is to be understood that communication can occur in the opposite direction of the depicted arrows.
[0456] Numerous variations and modifications can be made to the embodiments without materially departing from the principles of the inventive concept. All such variations and modifications are intended to be included within the scope of the inventive concept herein. Accordingly, the subject matter disclosed above is to be considered illustrative and not restrictive, and the examples of embodiments are intended to cover all such modifications, enhancements, and other embodiments that fall within the spirit and scope of the inventive concept. Thus, to the maximum extent permitted by law, the scope of the inventive concept is to be determined by the broadest permissible interpretation of this disclosure that includes the examples of embodiments and their equivalents, and should not be limited or restricted by the foregoing detailed description.
Claims
1. A method for decoding a picture from a bitstream, the method comprising: decoding a segmented partition structure from one or more syntax elements in the bitstream; decoding a number M of segmented groups present in the picture, where each segmented group consists of an integer number of segments; in a loop that is executed once for each partition of the segmented partition structure, decoding one or more dependency syntax elements from a parameter set in the bitstream, where the segmented partition structure defines at least two partitions of the picture, the one or more dependency syntax elements describe the dependency between the at least two partitions, where a partition is a segmented group, and the loop is executed M times; deriving the dependency between the at least two partitions using the decoded one or more dependency syntax elements; and using the derived dependency to decode the picture.
2. The method according to claim 1, wherein, The partition structure defines at least first and second partitions of the picture, and where deriving the dependency between the at least two partitions includes determining whether the second partition is dependent on or independent of the first partition based on the decoded at least one dependency syntax element; and in response to determining that the second partition is dependent on the first partition, decoding the picture by decoding the second partition using at least one decoded attribute from the first partition; and where the first partition includes a first plurality of blocks, the second partition includes a second plurality of blocks, and decoding the picture includes decoding one block in the second plurality of blocks using the at least one decoded attribute from the first partition.
3. The method according to claim 2, wherein, Decoding the picture includes decoding the one block in the second plurality of blocks using at least one of the following: predicting a sample value of the one block in the second plurality of blocks from a sample value of the one block in the first plurality of blocks; predicting an intra mode of the one block in the second plurality of blocks from an intra mode of the one block in the first plurality of blocks; predicting a motion vector of the one block in the second plurality of blocks from a motion vector of the one block in the first plurality of blocks; predicting a quantization parameter value to be used for the one block in the second plurality of blocks based on a quantization parameter value for the one block in the first plurality of blocks; determining a CABAC state of a syntax element for decoding the one block in the second plurality of blocks based on at least one of the mode of the one block in the first plurality of blocks, and the CABAC state of a syntax element for decoding the one block in the first plurality of blocks; and filtering samples in the one block in the second plurality of blocks based on a sample value of the one block in the first plurality of blocks, where filtering includes at least one of deblocking filtering in a loop, sample adaptive offset filtering, and adaptive loop filtering.
4. The method according to any one of claims 1 to 3, wherein, A segment is a block.
5. The method according to any one of claims 1 to 3, wherein A segmented group is a block group.
6. The method according to claim 5, further comprising: decoding a mode syntax element from the bitstream, where the mode syntax element specifies whether the block group of the picture is a rectangular block group or a raster scan block group.
7. The method according to claim 6, wherein, Decoding the at least one dependency syntax element further includes, decoding a group count syntax element from the bitstream that specifies a number of block groups of the picture, and decoding a dependency flag for each block group of the block groups of the picture based on the group count syntax element in response to the pattern syntax element specifying that the block groups of the picture are rectangular block groups, where each dependency flag specifies whether the blocks of the corresponding block group are dependent on or independent of other blocks of the corresponding block group.
8. The method according to any one of claims 2-3, wherein The partition structure definition includes a plurality of rows and columns of partitions of the picture including the first and second partitions.
9. The method according to any one of claims 1-3, further comprising: decoding (2503) a partition syntax element from the bitstream; wherein determining the partition structure includes determining the partition structure based on the partition syntax element.
10. The method according to claim 9, wherein, The bitstream is a video bitstream, wherein the picture is one of a plurality of pictures in the video bitstream, and wherein the partition syntax element is used for at least two of the plurality of pictures.
11. The method according to any one of claims 1-3, further comprising: rendering (2515) the picture for display on a screen based on decoding the picture from the bitstream.
12. The method according to any one of claims 1-3, further comprising: receiving (2501) the bitstream from a remote device via a radio and / or network interface.
13. The method according to any one of claims 1-3, wherein, The bitstream is a video bitstream, and wherein the picture is one of a plurality of pictures in the video bitstream.
14. An electronic device (300, 600), the electronic device comprising: processing circuitry (303, 603); and a memory (305, 605) coupled to the processing circuitry, wherein the memory includes instructions that, when executed by the processing circuitry, cause the electronic device to, decode a segmented partition structure from one or more syntax elements in a bitstream, decode a number M of segmented groups present in a picture, where each segmented group consists of an integer number of segments, in a loop that is executed once for each partition of the segmented partition structure, decode one or more dependency syntax elements from a parameter set in the bitstream, wherein the segmented partition structure defines at least two partitions of the picture, the one or more dependency syntax elements describe a dependency between the at least two partitions, where a partition is a segmented group, and the loop is executed M times; derive the dependency between the at least two partitions from the decoded one or more dependency syntax elements, and use the derived dependency to decode the picture.
15. The electronic device according to claim 14, wherein, The memory includes instructions that, when executed by the processing circuitry, cause the electronic device to perform the method according to any one of claims 2-13.
16. A non-transitory storage medium comprising program code to be executed by a processing circuit (303, 603) of an electronic device (300, 600), whereby execution of the program code causes the electronic device (300, 600) to perform the method according to any one of claims 1-13.
17. A computer program product comprising a non-transitory storage medium, the non-transitory storage medium comprising program code to be executed by a processing circuit (303, 603) of an electronic device (300, 600), whereby execution of the program code causes the electronic device (300, 600) to perform the method according to any one of claims 1-13.
Citation Information
Patent Citations
Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
US20130039593A1
Tile grouping in HEVC and l-HEVC file formats
US20170289556A1