System and method for signaling parameters in video coding
By signaling tile set parameters through a network abstraction layer unit, the solution addresses inefficiencies in existing video coding standards, reducing bandwidth and enabling parallel processing for improved video encoding and decoding efficiency.
Patent Information
- Application Number
- JP2024193482
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-09-20
- Filing Date
- 2024-11-05
- Publication Date
- 2026-01-14
- Estimated Expiration
- 2039-09-17
AI Technical Summary
Existing video coding standards face challenges in efficiently signaling tile set parameters, which can impact transmission bandwidth and parallelization of video encoders and decoders.
The proposed techniques involve signaling tile set parameters through a network abstraction layer unit, including a tile set layer syntax structure, and determining slice parameters based on presence flags, allowing for improved video distribution system performance by reducing transmission bandwidth and facilitating parallel processing.
The solution enhances video distribution system performance by reducing transmission bandwidth and enabling parallelization of video encoders and decoders, thereby improving encoding and decoding efficiency.
Smart Images

Figure 0007798250000039 
Figure 0007798250000040 
Figure 0007798250000041
Abstract
Description
[Technical Field]
[0001] TECHNICAL FIELD This disclosure relates to video coding, and more particularly to techniques for signaling tile set parameters for coded video. [Background technology]
[0002] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, laptop or desktop computers, tablet computers, digital recording devices, digital media players, video gaming devices, cellular telephones, including so-called smartphones, medical imaging devices, and the like. Digital video can be encoded according to a video coding standard. The video coding standard can incorporate video compression techniques. Examples of video coding standards include ISO / IEC MPEG-4 Visual and ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC), and High-Efficiency Video Coding (HEVC). HEVC is described in High Efficiency Video Coding (HEVC), Rec. ITU-T H.265 (December 2016), which is incorporated herein by reference and referred to herein as ITU-T H.265. Extensions and improvements to ITU-T H.265 are currently under consideration for the development of next-generation video coding standards. For example, the ITU-T Video Coding Experts Group (VCEG) and ISO / IEC (Moving Picture Experts Group (MPEG)), collectively referred to as the Joint Video Exploration Team (JVET), are considering the potential need for standardization of future video coding technologies with compression capabilities significantly exceeding those of the current HEVC standard. The Joint Exploration Model 7 (JEM 7), Algorithm Description of Joint Exploration Test Model 7 (JEM 7), ISO / IEC JTC1 / SC29 / WG11 Document: JVET-G1001, July 2017, Torino, IT, describes coding features under collaborative test model study by JVET as having the potential to improve video coding technologies beyond the capabilities of ITU-T H.265, and is incorporated herein by reference. Note that the coding features of JEM 7 are implemented in the JEM reference software.As used herein, the term JEM may collectively refer to the algorithms contained in JEM 7 and the JEM Reference Software implementation. Additionally, in response to the "Joint Call for Proposals on Video Compression with Capabilities beyond HEVC" jointly issued by VCEG and MPEG, multiple descriptions of video coding have been proposed by various groups at the 10th Meeting of ISO / IEC JTC1 / SC29 / WG11 16-20 April 2018, San Diego, CA. As a result of the multiple descriptions of video coding, a draft text of a video coding specification is set forth in "Versatile Video Coding (Draft 1)," 10th Meeting of ISO / IEC JTC1 / SC29 / WG11 16-20 April 2018, San Diego, CA, document JVET-J1001-v2, which is incorporated herein by reference and referred to as JVET-J1001. "Versatile Video Coding (Draft 2)," 11th Meeting of ISO / IEC JTC1 / SC29 / WG11 10-18 July 2018, Ljubljana, SI, document JVET-K1001-v5, incorporated herein by reference and referred to as JVET-K1001, is an updated version of JVET-J1001.
[0003] Video compression techniques reduce data requirements for storing and transmitting video data by exploiting inherent redundancy in video sequences. Video compression techniques may subdivide video sequences into successively smaller portions (i.e., groups of frames within a video sequence, frames within groups of frames, slices within frames, coding tree units (e.g., macroblocks) within slices, coding blocks within coding tree units, etc.). Intra-prediction coding techniques (e.g., within a picture (spatial)) and inter-prediction techniques (i.e., between pictures (temporal)) may be used to generate difference values between a unit of video data being coded and a reference unit of video data. The difference values may be referred to as residual data. The residual data may be coded as quantized transform coefficients. Syntax elements may associate the residual data with the reference coding units (e.g., intra-prediction mode index, motion vectors, and block vectors). The residual data and syntax elements may be entropy coded. The entropy-coded residual data and syntax elements may be included in a compliant bitstream. The compliant bitstream and associated metadata may be formatted according to a data structure. Summary of the Invention
[0004] In one embodiment, a method for signaling slice parameters includes signaling a value for a syntax element of a network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; signaling a presence flag in a slice parameter structure included in the slice layer syntax structure; determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; and when the one of the one or more slice parameters is determined based on the slice layer syntax structure, determining a value included in the slice layer syntax structure for the one of the one or more slice parameters, wherein the one or more slice parameters is collocated_from_10_flag, and when a value of nal_unit_type indicates that a picture layer syntax structure picture header is present, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates that a picture parameter set is present, multiple syntax elements of the picture parameter set are present.
[0005] In one embodiment, a method for decoding video data includes parsing a value for a syntax element of a network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; parsing a presence flag in a slice parameter structure included in the slice layer syntax structure; determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; when the one of the one or more slice parameters is determined based on the slice layer syntax structure, determining a value included in the slice layer syntax structure for the one or more slice parameters; and generating video data based on the determined value for the one of the one or more slice parameters, wherein the one or more slice parameters is collocated_from_10_flag, and when a value of nal_unit_type indicates that a picture layer syntax structure picture header is present, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates that a picture parameter set is present, multiple syntax elements of the picture parameter set are present.
[0006] In one embodiment, a device for encoding video data includes one or more processors and one or more non-transitory computer-readable storage media coupled to the one or more processors, the non-transitory computer-readable storage media, when executed by at least one of the one or more processors, for signaling to the device a value for a syntax element of a network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; signaling a presence flag in a slice parameter structure included in the slice layer syntax structure; and determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header. and, when the one of the one or more slice parameters is determined based on the slice layer syntax structure, determining a value included in the slice layer syntax structure for the one of the one or more slice parameters, wherein the one or more slice parameters is collocated_from_10_flag, and when a value of nal_unit_type indicates that a picture layer syntax structure picture header is present, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates that a picture parameter set is present, multiple syntax elements of the picture parameter set are present.
[0007] In one embodiment, a device for decoding video data includes one or more processors; and one or more non-transitory computer-readable storage media coupled to the one or more processors, the one or more processors being configured to perform a program that, when executed by at least one of the one or more processors, causes the device to: parse values for syntax elements of a network abstraction layer unit, the values indicating that a slice layer syntax structure is included in the network abstraction layer unit; parse a presence flag in a slice parameter structure included in the slice layer syntax structure; determine, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; and determine a value for one or more slice parameters. a storage medium comprising one or more computer-readable instructions for: determining values to be included in the slice layer syntax structure for the one or more slice parameters when the one of is determined based on the slice layer syntax structure; and generating video data based on the determined values for the one of the one or more slice parameters, wherein the one or more slice parameters is collocated_from_10_flag, and when a value of nal_unit_type indicates that a picture layer syntax structure picture header is present, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates that a picture parameter set is present, multiple syntax elements of the picture parameter set are present. [Brief explanation of the drawings]
[0008] [Figure 1] FIG. 1 is a block diagram illustrating an example of a system that can be configured to encode and decode video data in accordance with one or more techniques of this disclosure. [Figure 2] FIG. 2 is a conceptual diagram illustrating encoded video data and corresponding data structures in accordance with one or more techniques of this disclosure. [Figure 3]FIG. 3 is a conceptual diagram illustrating a data structure encapsulating encoded video data and corresponding metadata in accordance with one or more techniques of this disclosure. [Figure 4] FIG. 4 is a conceptual diagram illustrating one example of components that may be included in an implementation of a system that may be configured to encode and decode video data in accordance with one or more techniques of this disclosure. [Figure 5] FIG. 5 is a block diagram illustrating an example of a video encoder that may be configured to encode video data in accordance with one or more techniques of this disclosure. [Figure 6] FIG. 6 is a block diagram illustrating an example of a video decoder that can be configured to decode video data in accordance with one or more techniques of this disclosure. [Figure 7] FIG. 7 is a conceptual diagram illustrating encoded video data and corresponding data structures in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0009] Generally, this disclosure describes various techniques for encoding video data. Specifically, this disclosure describes techniques for signaling tile set parameters for coded video. Signaling tile set parameters according to the techniques described herein may be particularly useful for improving video distribution system performance by reducing transmission bandwidth and / or facilitating parallelization of video encoders and / or decoders. While the techniques of this disclosure are described with respect to ITU-T H.264, ITU-T H.265, JVET-J1001, and JVET-K1001, it should be noted that the techniques of this disclosure are generally applicable to video coding. For example, the encoding techniques described herein can be incorporated into video coding systems (including video coding systems based on future video coding standards) that include block structures, intra-prediction techniques, inter-prediction techniques, transform techniques, filtering techniques, and / or entropy coding techniques other than those included in ITU-T H.265. Therefore, references to ITU-T H.264, ITU-T H.265, JVET-J1001, and JVET-K1001 are for illustrative purposes only and should not be construed as limiting the scope of the technology described herein. Furthermore, it should be noted that the incorporation by reference of a document herein should not be construed as limiting or creating ambiguity with respect to the terms used herein. For example, if an incorporated reference provides a definition of a term that differs from that of another incorporated reference, and / or as that term is used herein, then that term should be construed to broadly include each corresponding definition and / or to include each specific definition instead.
[0010] In one embodiment, the device includes one or more processors configured to signal values for syntax elements in the network abstraction layer unit that indicate that a tile set layer syntax structure is included in the network abstraction layer unit, and to signal values for one or more tile set parameters included in the tile set layer syntax structure.
[0011] In one embodiment, a non-transitory computer-readable storage medium includes instructions recorded thereon that, when executed, cause one or more processors of the device to signal a value for a syntax element in a network abstraction layer unit that indicates that a tile set layer syntax structure is included in the network abstraction layer unit, and to signal a value for one or more tile set parameters included in the tile set layer syntax structure.
[0012] In one embodiment, an apparatus includes means for signaling a value for a syntax element in a network abstraction layer unit indicating that a tile set layer syntax structure is included in the network abstraction layer unit, and means for signaling a value for one or more tile set parameters included in the tile set layer syntax structure.
[0013] In one embodiment, the device includes one or more processors configured to parse values for syntax elements in the network abstraction layer unit that indicate that a tile set layer syntax structure is included in the network abstraction layer unit, parse values for one or more tile set parameters included in the tile set layer syntax structure, and generate video data based on the parsed values for the one or more tile set parameters.
[0014] In one embodiment, a non-transitory computer-readable storage medium includes instructions recorded thereon that, when executed, cause one or more processors of a device to parse values for syntax elements in a network abstraction layer unit that indicate that a tile set layer syntax structure is included in the network abstraction layer unit, parse values for one or more tile set parameters included in the tile set layer syntax structure, and generate video data based on the parsed values for the one or more tile set parameters.
[0015] In one embodiment, the apparatus includes means for parsing values for syntax elements in a network abstraction layer unit that indicate that a tile set layer syntax structure is included in the network abstraction layer unit, means for parsing values for one or more tile set parameters included in the tile set layer syntax structure, and means for generating video data based on the parsed values for the one or more tile set parameters.
[0016] The details of one or more embodiments are set forth in the accompanying drawings and the following description. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
[0017] Video content typically includes a video sequence consisting of a series of frames. A series of frames is sometimes referred to as a group of pictures (GOP). Each video frame or picture can include one or more slices, which in turn include multiple video blocks. A video block includes an array of pixel values (sometimes called samples) that can be predictively coded. The video blocks can be ordered according to a scan pattern (e.g., raster scan). Video encoders perform predictive coding on video blocks and their subdivisions. ITU-T H.264 specifies macroblocks containing 16x16 luma samples. ITU-T H.265 specifies a similar coding tree unit (CTU) structure (which may also be called a large coding unit (LCU)), but a picture can be divided into equal-sized CTUs, each of which can include coding tree blocks (CTBs) with 16x16, 32x32, or 64x64 luma samples. As used herein, the term video block may refer generally to a region of a picture, or more specifically to the largest array of pixel values that can be predictively coded, its subdivision, and / or corresponding structure. Furthermore, according to ITU-T H.265, each video frame or picture may be partitioned to include one or more tiles, where a tile is a sequence of coding tree units that corresponds to a rectangular region of the picture.
[0018] In ITU-T H.265, a CTU consists of a respective CTB for each component of video data (e.g., luma (Y) and chroma (Cb and Cr)). Furthermore, in ITU-T H.265, a CTU can be divided according to a quadtree (QT) partitioning structure, resulting in the CTBs of a CTU being divided into coding blocks (CBs). That is, in ITU-T H.265, a CTU can be divided into quadtree leaf nodes. According to ITU-T H.265, one luma CB, together with two corresponding chroma CBs and related syntax elements, is called a coding unit (CU). In ITU-T H.265, the minimum allowed size of a CB can be signaled. In ITU-T H.265, the smallest allowed size of a luma CB is 8x8 luma samples. In ITU-T H.265, the decision to code a picture region using intra prediction or inter prediction is made at the CU level.
[0019] In ITU-T H.265, a CU is associated with a prediction unit (PU) structure rooted at the CU. In ITU-T H.265, the PU structure allows for partitioning of luma CBs and chroma CBs for the purpose of generating corresponding reference samples. That is, in ITU-T H.265, the luma CBs and chroma CBs can be partitioned into respective luma and chroma prediction blocks (PBs), where a PB includes a block of sample values to which the same prediction is applied. In ITU-T H.265, a CB can be partitioned into one, two, or four PBs. ITU-T H.265 supports PB sizes from 64x64 samples to 4x4 samples. In ITU-T H.265, square PBs are supported for intra prediction, where a CB can form a PB or a CB can be divided into four square PBs (i.e., intra prediction PB size types include MxM or M / 2xM / 2, where M is the height and width of the square CB). In ITU-T H.265, in addition to square PBs, rectangular PBs are supported for inter prediction, where the CB can be bisected vertically or horizontally to form the PBs (i.e., inter prediction PB types include M×M, M / 2×M / 2, M / 2×M, or M×M / 2). It should be noted that ITU-T H.265 also supports four asymmetric PB partitions for inter prediction, where the CB is divided into two PBs at one-quarter of the height (at the top or bottom) or width (at the left or right) of the CB (i.e., asymmetric partitions include M / 4×M left, M / 4×M right, M×M / 4 top, and M×M / 4 bottom). Reference sample values and / or predicted sample values for the PB are generated using intra prediction data (e.g., intra prediction mode syntax element) or inter prediction data (e.g., motion data syntax element) corresponding to the PB.
[0020] JEM defines a CTU with a maximum luma sample size of 256x256. JEM defines a quadtree plus binary tree (QTBT) block structure. In JEM, the QTBT structure allows a quadtree leaf node to be further divided by a binary tree structure (BT). That is, in JEM, the binary tree structure allows a quadtree leaf node to be recursively divided vertically or horizontally. Therefore, the binary tree structure in JEM allows square leaf nodes and rectangular leaf nodes, each of which contains one CB. As shown in FIG. 2, a picture included in a GOP can contain multiple slices, each of which contains a sequence of CTUs, and each CTU can be divided according to the QTBT structure. In JEM, CBs are used in prediction without any additional division. That is, in JEM, CBs may be blocks of sample values to which the same prediction is applied. Therefore, JEM QTBT leaf nodes may be similar to PBs in ITU-T H.265.
[0021] Intra-prediction data (e.g., an intra-prediction mode syntax element) or inter-prediction data (e.g., a motion data syntax element) can relate a PU to a corresponding reference sample. The residual data can include respective arrays of difference values corresponding to each component of the video data (e.g., luma (Y) and chroma (Cb and Cr)). The residual data can be in the pixel domain. A transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), an integer transform, a wavelet transform, or a conceptually similar transform, can be applied to the pixel difference values to generate transform coefficients. Note that in ITU-T H.265, a CU can be further subdivided into transform units (TUs). That is, the array of pixel difference values may be subdivided to generate transform coefficients (e.g., four 8x8 transforms may be applied to a 16x16 array of residual values corresponding to a 16x16 luma CB), and such subdivision may be referred to as a transform block (TB). The transform coefficients may be quantized according to a quantization parameter (QP). The quantized transform coefficients (which may be referred to as level values) may be entropy coded according to an entropy coding technique (e.g., content adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), probability interval partitioning entropy coding (PIPE), etc.). Furthermore, syntax elements, such as syntax elements indicating prediction modes, may also be entropy coded. The entropy-coded and quantized transform coefficients and the corresponding entropy-coded syntax elements may form a compliant bitstream that can be used to regenerate video data.A binarization process can be performed on syntax elements as part of the entropy encoding process. Binarization refers to the process of converting a syntax value into a series of one or more bits. These bits are sometimes called "bins."
[0022] As mentioned above, intra-prediction data or inter-prediction data is used to generate reference sample values for a block of sample values. The difference between a sample value included in the current PB or another type of picture region structure and an associated reference sample (e.g., a reference sample generated using prediction) may be referred to as residual data. As mentioned above, intra-prediction data or inter-prediction data may associate a region of a picture (e.g., PB or CB) with a corresponding reference sample. For intra-prediction coding, an intra-prediction mode may specify the location of the reference sample within the picture. In ITU-T H.265, the defined possible intra-prediction modes include planar (i.e., surface-fit) prediction mode (predMode: 0), DC (i.e., flat global averaging) prediction mode (predMode: 1), and 33-angle prediction modes (predMode: 2-34). In JEM, the defined possible intra-prediction modes include planar prediction mode (predMode: 0), DC prediction mode (predMode: 1), and 65-angle prediction modes (predMode: 2-66). It should be noted that the planar and DC prediction modes may be referred to as non-directional prediction modes, and the angular prediction modes may be referred to as directional prediction modes. It should be noted that the techniques described herein may be generally applicable regardless of the number of possible prediction modes defined.
[0023] For inter-predictive coding, a motion vector (MV) identifies reference samples in pictures other than the picture of the video block to be coded, thereby exploiting temporal redundancy in video. For example, a current video block can be predicted from reference block(s) located in previously coded frame(s), and a motion vector can be used to indicate the location of the reference block(s). The motion vector and associated data can describe, for example, the horizontal component of the motion vector, the vertical component of the motion vector, the resolution for the motion vector (e.g., quarter-pixel accuracy, half-pixel accuracy, one-pixel accuracy, two-pixel accuracy, four-pixel accuracy), the prediction direction, and / or the reference picture index value. Furthermore, coding standards such as ITU-T H.265 can support motion vector prediction. Motion vector prediction allows a motion vector to be specified using the motion vectors of neighboring blocks. Examples of motion vector prediction include advanced motion vector prediction (AMVP), temporal motion vector prediction (TMVP), so-called "combined" modes, as well as "skip" and "direct" motion estimation. Furthermore, JEM supports advanced temporal motion vector prediction (ATMVP), spatial-temporal motion vector prediction (STMVP), a special merge mode based on frame rate up-conversion (FRUC) technology, pattern match motion vector derivation (PMMVD) mode, and affine transform motion compensation prediction.
[0024] The residual data may include respective arrays of difference values corresponding to respective components of the video data. The residual data may be in the pixel domain. A transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), an integer transform, a wavelet transform, or a conceptually similar transform, may be applied to the array of difference values to generate transform coefficients. In ITU-T H.265, a CU is associated with a transform unit (TU) structure with its root at the CU level. That is, in ITU-T H.265, the array of difference values may be subdivided (e.g., four 8x8 transforms may be applied to a 16x16 array of residual values) to generate transform coefficients, as described above. Note that ITU-T H.265 does not necessarily require the TB to be aligned with the PB.
[0025] Note that in JEM, the residual values corresponding to CB are used to generate transform coefficients without further division. That is, in JEM, the QTBT leaf node can be similar to both PB and TB in ITU-T H.265. In JEM, a core transform and a subsequent secondary transform can be applied (at a video encoder) to generate transform coefficients. For a video decoder, the order of the transforms is reversed. Furthermore, in JEM, whether a secondary transform is applied to generate transform coefficients can depend on the prediction mode.
[0026] A quantization process can be performed on transform coefficients. Quantization approximates transform coefficients with amplitudes limited to a specific set of values. Quantization may be used to vary the amount of data needed to represent a group of transform coefficients. Quantization can be achieved by dividing the transform coefficients by a scaling factor and any associated rounding function (e.g., rounding to the nearest integer). Quantized transform coefficients are sometimes referred to as coefficient level values. Inverse quantization (or "dequantization") can include multiplying coefficient level values by a scaling factor. Note that as used herein, the term quantization process may refer, in some cases, to division by a scaling factor to generate level values, or, in some cases, to multiplication by a scaling factor to recover transform coefficients. That is, the quantization process may refer, in some cases, to quantization and, in some cases, to inverse quantization.
[0027] For the formulas used herein, the following arithmetic operators may be used:
[0028] [Table 1] Additionally, the following mathematical functions can be used:
[0029] Log2(x), the base 2 logarithm of x;
[0030]
number
[0031] With respect to the example syntax used herein, the following definitions of logical operators may apply:
[0032] x&&y Boolean logic "product" of x and y x||y Boolean logic "union" of x and y ! Boolean logic "no" x?y:zIf x is true or not equal to 0, then evaluate the value of y; otherwise, evaluate the value of z.
[0033] In addition, the following relational operators may be applied:
[0034] [Table 2] Furthermore, in the syntax descriptors used herein, it should be noted that the following descriptors may apply:
[0035] -b(8): Byte (8 bits) containing a bit string of any pattern. The parsing process of this descriptor is specified by the return value of the function read_bit(8).
[0036] -f(n): A fixed pattern bit string with n bits written left bit first (left to right). The parsing process for this descriptor is specified by the return value of the function read_bit(n).
[0037] -u(n): unsigned integer using n bits.
[0038] -ue(v): Unsigned integer zeroth order Exp-Golomb encoding syntax element, left bit first.
[0039] As mentioned above, according to ITU-T H.265, each video frame or picture may be partitioned to include one or more slices, and may further be partitioned to include one or more tiles. Figure 2 is a conceptual diagram illustrating an example of a group of pictures including slices. In the example shown in Figure 2, Pic4 is shown as including two slices (i.e., Slice1 and Slice2), each of which includes a sequence of CTUs (e.g., in raster scan order). Note that a slice is a sequence of one or more slice segments, starting with an independent slice segment and including all subsequent dependent slice segments (if any), where all subsequent dependent slice segments are followed by the next independent slice segment (if any) within the same access unit. A slice segment, such as a slice, is a sequence of coding tree units. In the embodiments described herein, in some cases, the terms slice and slice segment may be used interchangeably to refer to a sequence of coding tree units. It should be noted that in ITU-T H.265, a tile may consist of coding tree units contained in two or more slices, and a slice may consist of coding tree units contained in two or more tiles. However, ITU-T H.265 specifies that one or both of the following conditions must be met: (1) all coding tree units in a slice belong to the same tile, and (2) all coding tree units in a tile belong to the same slice. Tile sets can be used to define boundaries for coding dependencies (e.g., intra-prediction dependencies, entropy coding dependencies, etc.), which can enable parallel processing in coding.
[0040] In ITU-T H.265, a coded video sequence (CVS) may be encapsulated (or structured) as a sequence of access units, each of which contains video data structured as network abstraction layer (NAL) units. In ITU-T H.265, a bitstream is described as containing a sequence of NAL units forming one or more CVSs. Note that ITU-T H.265 supports multi-layer extensions, including format range extension (RExt), scalability (SHVC), multiview (MV-HEVC), and 3-D (3D-HEVC). Multi-layer extensions enable a video display to include a base layer and one or more additional enhancement layers. For example, the base layer may enable the provision of a video display having a basic level of quality (e.g., high-resolution rendering), and the enhancement layer may enable the provision of a video display having an enhanced level of quality (e.g., ultra-high-resolution rendering). In ITU-T H.265, the enhancement layer may be encoded by referencing the base layer. That is, for example, a picture in an enhancement layer may be encoded (e.g., using inter-prediction techniques) by referencing one or more pictures in the base layer (including scaled versions thereof). In ITU-T H.265, each NAL unit may include an identifier indicating the layer of video data with which the NAL unit is associated. Note that sub-bitstream extraction may refer to a process by which a device receiving a compliant bitstream forms a new compliant bitstream by discarding and / or modifying data in the received bitstream. For example, sub-bitstream extraction can be used to form a new compliant bitstream that corresponds to a particular representation of the video (e.g., a higher quality representation).
[0041] Referring to the example shown in FIG. 2, each slice of video data contained in Pic4 (i.e., Slice1 and Slice2) is shown as being encapsulated in a NAL unit. In ITU-T H.265, each of a video sequence, GOP, picture, slice, and CTU may be associated with metadata that describes video coding characteristics. ITU-T H.265 defines parameter sets that can be used to describe video data characteristics and / or video coding characteristics. In ITU-T H.265, parameter sets may be encapsulated as a special type of NAL unit or signaled as a message. NAL units containing coded video data (e.g., slices) are sometimes referred to as VCL (Video Coding Layer) NAL units, and NAL units containing metadata (e.g., parameter sets) are sometimes referred to as non-VCL NAL units. Furthermore, ITU-T H.265 allows supplemental enhancement information (SEI) messages to be signaled. In ITU-T H.265, SEI messages assist processes related to decoding, display, or other purposes, but may not be required for the decoding process to create luma or chroma samples. In ITU-T H.265, SEI messages may be signaled in the bitstream using non-VCL NAL units. Furthermore, SEI messages may be conveyed by some means other than by being present in the bitstream (i.e., signaled out-of-band).
[0042] Figure 3 shows an example of a bitstream containing multiple CVSs, where the CVSs are represented by NAL units contained in respective access units. In the example shown in Figure 3, the non-VCL NAL units include respective parameter set units (i.e., video parameter set (VPS), sequence parameter set (SPS), and picture parameter set (PPS) units) and an access unit delimiter NAL unit. ITU-T H.265 defines NAL unit header semantics that specify the type of raw byte sequence payload (RBSP) data structure contained in the NAL unit.
[0043] Table 1 shows the syntax of common NAL units provided in ITU-T H.265 and further used in JVET-K1001.
[0044] [Table 3] ITU-T H.265 provides the following general NAL unit semantics:
[0045] NumBytesInNalUnit specifies the size of the NAL unit in bytes. This value is required for decoding the NAL unit. To allow inference of NumBytesInNalUnit, some form of demarcation of NAL unit boundaries is required. One such demarcation method is specified in [ITU-T H.265 Annex B] for byte stream formats. Other methods of demarcation may be specified outside this specification.
[0046] NOTE 1 - The Video Coding Layer (VCL) is specified to efficiently represent the content of video data. The NAL is specified to format that data and provide header information in a manner suitable for transport over various communication channels or storage media. All data is contained in NAL units, each of which contains an integer number of bytes. The NAL unit specifies a general format for use in both packet-oriented and bitstream systems. The format of the NAL unit for both packet-oriented transport and bytestream is identical, except that each NAL unit may be preceded by a start code prefix and additional padding bytes in the bytestream format specified in [ITU-T H.265 Annex B].
[0047] rbsp_byte[i] is the i-th byte of the RBSP. The RBSP is specified as an ordered sequence of bytes as follows:
[0048] The RBSP contains a string of data bits (SODB) as follows:
[0049] If the SODB is empty (i.e., zero bit length), the RBSP is also empty.
[0050] - Otherwise, the RBSP contains SODB as follows:
[0051] 1) The first byte of RBSP contains the (most significant, left-most) 8 bits of SODB, the next byte of RBSP contains the next 8 bits of SODB, and so on until there are less than 8 bits of SODB remaining.
[0052] 2) rbsp_trailing_bits() exists after SODB as follows:
[0053] i) The first (most significant, left-most) bit of the final RBSP byte contains the remaining bits (if any) of the SODB.
[0054] ii) The next bit consists of a single rbsp_stop_one_bit equal to 1.
[0055] iii) If the rbsp_stop_one_bit is not the last bit of a byte-aligned byte, then one or more rbsp_alignment_zero_bits must be present to provide byte alignment.
[0056] 3) One or more cabac_zero_word 16-bit syntax elements equal to 0x0000 may be present in some RBSPs after the rbsp_trailing_bits() at the end of the RBSP.
[0057] Syntax structures with these RSP properties are indicated in syntax tables using the "_rbsp" suffix. These structures are carried within NAL units as the contents of the rbsp_byte[i] data bytes. The association of RBSP syntax structures with NAL units is as described in [Table 3 herein].
[0058] NOTE 2 - If the RBSP boundaries are known, a decoder can extract the SODB from the RBSP by concatenating the bits of the RBSP bytes, discarding the last (least significant, right-most) bit, rbsp_stop_one_bit, that is equal to 1, and discarding any subsequent (lower significant, further right) bits that are equal to 0. The data required for the decoding process is contained in the SODB portion of the RBSP.
[0059] emulation_prevention_three_byte is a byte equal to 0x03. If emulation_prevention_three_byte is present in a NAL unit, it shall be discarded by the decoding process.
[0060] The last byte of a NAL unit shall not be equal to 0x00.
[0061] Within a NAL unit, the following three-byte sequence does not occur in any byte-aligned position:
[0062] -0x000000 -0x000001 -0x000002 Within a NAL unit, any four-byte sequence beginning with 0x000003 cannot occur in any byte-aligned position, except for the following sequences:
[0063] -0x00000300 -0x00000301 -0x00000302 -0x00000303 Table 2 shows the NAL unit header syntax specified in ITU-T H.265.
[0064] [Table 4] ITU-T H.265 specifies the following definitions for each syntax element shown in Table 2:
[0065] forbidden_zero_bit shall be equal to 0.
[0066] nuh_layer_id specifies the identifier of the layer to which a VCL NAL unit belongs or to which a non-VCL NAL unit applies.
[0067] nuh_temporal_id_plus1-1 specifies the temporal identifier for the NAL unit. The value of nuh_temporal_id_plus1 must not be equal to 0.
[0068] nal_unit_type,nal_unit_type specifies the type of RBSP data structure included in the NAL unit. Table 3 shows the NAL unit types specified in ITU-T H.265.
[0069] [Table 5] For the sake of brevity, a complete description of each of the NAL unit types in ITU-T H.265 is not provided herein, but reference is made to the relevant sections of ITU-T H.265.
[0070] As mentioned above, JVET-K1001 is a draft text of a video coding specification. Table 4 shows the syntax of the NAL unit header in JVET-K1001.
[0071] [Table 6] JVET-K1001 specifies the following definitions for each syntax element shown in Table 4.
[0072] forbidden_zero_bit shall be equal to 0.
[0073] Regarding nal_unit_type, JVET-K1001 provides a place where NAL unit types have yet to be defined.
[0074] JVET-K1001 also provides a basic sequence parameter set syntax. Table 5 shows the syntax of the sequence parameter set provided in JVET-K1001.
[0075] [Table 7] The basic definition of each syntax element shown in Table 5 is as follows:
[0076] sps_seq_parameter_set_id provides an identifier for the SPS for reference by other syntax elements. The value of sps_seq_parameter_set_id shall be in the range 0 to 15, inclusive.
[0077] Chroma_format_idc specifies the chroma sampling relative to the luma sampling. The value of Chroma_format_idc shall be in the range 0 to 3, inclusive.
[0078] separate_colour_plane_flag equal to 1 specifies that the three color components of the 4:4:4 chroma format are coded separately, while separate_colour_plane_flag equal to 0 specifies that the color components are not coded separately. If separate_colour_plane_flag is not present, it is inferred to be equal to 0. When separate_colour_plane_flag is equal to 1, the coded picture consists of three color components, each consisting of coded samples of one color plane (Y, Cb, or Cr), and uses the monochrome coding syntax. In this case, each color plane is associated with a specific color_plane_id value.
[0079] pic_width_in_luma_samples specifies the width of each decoded picture in units of luma samples.
[0080] pic_height_in_luma_samples specifies the height of each decoded picture in units of luma samples.
[0081] bit_depth_luma_minus8 specifies the bit depth of the samples in the luma array and the value of the luma quantization parameter range offset.
[0082] bit_depth_chroma_minus8 specifies the bit depth of the samples in the chroma array and the value of the chroma quantization parameter range offset.
[0083] qtbtt_dual_tree_intra_flag equal to 1 specifies that for I slices, each CTU is divided into coding units with 64x64 luma samples using implicit quadtree division, and these coding units are the root of a quadtree syntax structure with two separate codings for luma and chroma.
[0084] log2_ctu_size_minus2+2 specifies the luma coding tree block size of each CTU.
[0085] log2_min_qt_size_in_slices_minus2+2 specifies the minimum luma size of a leaf block resulting from a quadtree partitioning of a CTU in a slice with slice_type equal to 2(I).
[0086] log2_min_qt_size_inter_slices_minus2+2 specifies the minimum luma size of a leaf block resulting from a quadtree partitioning of a CTU within a slice with slice_type equal to 0 (B) or 1 (P).
[0087] max_mtt_hierarchy_depth_inter_slices specifies the maximum hierarchical depth of a coding unit resulting from a multi-type tree split of a quadtree leaf within a slice with slice_type equal to 0 (B) or 1 (P).
[0088] max_mtt_hierarchy_depth_intra_slices specifies the maximum hierarchical depth of coding units resulting from a multi-type tree split of a quadtree leaf within a slice with slice_type equal to 2(I).
[0089] sps_cclm_enabled_flag equal to 0 specifies that cross-component linear model intra prediction from luma to chroma components is disabled. sps_cclm_enabled_flag equal to 1 specifies that cross-component linear model intra prediction from luma to chroma components is enabled.
[0090] sps_temporal_mvp_enabled_flag equal to 1 specifies that slice_temporal_mvp_enabled_flag is present in the slice header of slices with slice_type not equal to 1 in the CVS. sps_temporal_mvp_enabled_flag equal to 0 specifies that slice_temporal_mvp_enabled_flag is not present in the slice header and no temporal motion vector predictor is used in the CVS.
[0091] sps_sbtmvp_enabled_flag equal to 1 specifies that sub-block-based temporal motion vector predictors may be used in decoding pictures with all slices having a slice_type type not equal to 1 in the CVS. sps_sbtmvp_enabled_flag equal to 0 specifies that sub-block-based temporal motion vector predictors are not used in the CVS. If sps_sbtmvp_enabled_flag is not present, it is inferred to be equal to 0.
[0092] log2_sbtmvp_default_size_minus2 specifies the estimated value of the syntax element log2_sbtmvp_active_size_minus2 in the slice header of slices with slice_type not equal to I in CVS when slice_sbtmvp_size_override_flag is equal to 0.
[0093] sps_amvr_enabled_flag equal to 1 specifies that adaptive motion vector differential resolution is used in motion vector coding. amvr_enabled_flag equal to 0 specifies that adaptive motion vector differential resolution is not used in motion vector coding.
[0094] sps_affine_enabled_flag specifies whether affine model-based motion compensation can be used for inter prediction. If sps_affine_enabled_flag is equal to 0, the syntax shall be constrained such that affine model-based motion compensation is not used in CVS, and merge_affine_flag, inter_affine_flag, and cu_affine_type_flag are not present in the coding unit syntax of CVS. Otherwise (sps_affine_enabled_flag is 1), affine model-based motion compensation can be used in CVS.
[0095] sps_affine_type_flag specifies whether 6-parameter affine model-based motion compensation can be used for inter prediction. If sps_affine_type_flag is equal to 0, the syntax shall be constrained such that 6-parameter affine model-based motion compensation is not used in CVS and cu_affine_type_flag is not present in the coding unit syntax in CVS. Otherwise (sps_affine_type_flag is equal to 1), 6-parameter affine model-based motion compensation can be used in CVS. If not present, the value of sps_affine_type_flag is inferred to be equal to 0.
[0096] sps_mts_intra_enabled_flag equal to 1 specifies that eu_mts_flag may be present in the remaining coding syntax for an intra-coding unit. sps_mts_intra_enabled_flag equal to 0 specifies that cu_mts_flag is not present in the remaining coding syntax for an intra-coding unit.
[0097] sps_mts_inter_enabled_flag specifies that cu_mts_flag may be present in the remaining coding syntax for an inter coding unit. sps_mts_inter_enabled_flag equal to 0 specifies that it is not present in the remaining coding syntax for an inter coding unit.
[0098] JVET-K1001 also provides a basic picture parameter set syntax. Table 6 shows the picture parameter set syntax of JVET-K1001.
[0099] [Table 8] JVET-K1001 specifies the following definitions for each syntax element shown in Table 6.
[0100] pps_pic_parameter_set_id identifies the PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id shall be in the range 0 to 63, inclusive.
[0101] pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id of the SPS. The value of pps_seq_parameter_set_id shall be in the range of 0 to 15, inclusive.
[0102] transform_skip_enabled_flag equal to 1 specifies that transform_skip_flag may be present in the remaining coding syntax. transform_skip_flag equal to 0 specifies that transform_skip_flag is not present in the remaining coding syntax.
[0103] JVET-K1001 also provides an access unit delimiter syntax. Table 7 shows the syntax of the access unit delimiter in JVET-K1001.
[0104] [Table 9] JVET-K1001 specifies the following definitions for each syntax element shown in Table 7.
[0105] pic_type indicates that the values of slice_type for all slices of coded pictures in the access unit containing the access unit delimiter NAL unit are members of the set listed in Table 8 for a given value of pic_type. The value of pic_type shall be equal to 0, 1, or 2 in bitstreams conforming to this version of this specification. Other values of pic_type are reserved for future use. Decoders conforming to this version of this specification shall ignore reserved values of pic_type.
[0106] [Table 10] Note that a B slice refers to a slice for which bi-predictive inter-prediction, uni-predictive inter-prediction, and intra-prediction are allowed, a P slice refers to a slice for which uni-predictive inter-prediction and intra-prediction are allowed, and an I slice refers to a slice for which only intra-prediction is allowed. Note that in some cases, B slices and P slices are collectively referred to as inter slices.
[0107] JVET-K1001 further provides end of sequence syntax, end of bitstream syntax, and filler data syntax. Table 9 shows the end of sequence syntax provided in JVET-K1001, Table 10 shows the end of bitstream syntax provided in JVET-K1001, and Table 11 shows the end of bitstream syntax provided in JVET-K1001. [Table 11] [Table 12]
[0108] [Table 13] JVET-K1001 specifies the following definitions for each syntax element shown in Table 11.
[0109] ff_byte is a byte equal to 0xFF.
[0110] JVET-K1001 further provides a slice layer syntax including a slice header. Table 12 shows the slice layer syntax provided in JVET-JK001, and Table 13 shows the slice header provided in JVET-K1001. [Table 14]
[0111] [Table 15] JVET-K1001 specifies the following definitions for each syntax element shown in Table 13.
[0112] slice_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id for the PPS in use. The value of slice_pic_parameter_set_id shall be in the range of 0 to 63, inclusive.
[0113] slice_address defines the address of the first CTB in a slice in a CTB raster scan of a picture.
[0114] slice_type specifies the coding type of the slice according to Table 14.
[0115] [Table 16] If nal_unit_type has a value that is inclusive of both ends of the range [to be determined], i.e., the picture is an IRAP picture, slice_type shall be equal to 2.
[0116] log2_diff_ctu_max_bt_size defines the difference between the luma CTB size and the maximum luma size (width or height) of a coding block that can be split using binary splitting.
[0117] sbtmvp_size_override_flag equal to 1 specifies that the syntax element log2_sbtmvp_active_size_minus2 is present for the current slice. sbtmvp_size_override_flag equal to 0 specifies that the syntax element log2_atmvp_active_size_minus2 is not present and log2_sbtmvp_size_active_minus2 is inferred to be equal to log2_sbtmvp_default_size_minus2.
[0118] log2_sbtmvp_active_size_minus2+2 specifies the value of the sub-block size used to derive the sub-block-based TMVP motion parameters for the current slice. If log2_sbtmvp_size_active_minus2 is not present, it is inferred to be equal to log2_sbtmvp_default_size_minus2. The variables are derived as follows:
[0119]
number
[0120] mvd_l1_zero_flag equal to 1 indicates that the mvd_coding(x0,y0,1) syntax structure is not parsed and MvdL1[x0][y0][compIdx] is set equal to 0 for compIdx=0 to 1. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0,y0,1) syntax structure is parsed.
[0121] collocated_from_10_flag equal to 1 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. collocated_from_10_flag equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1. If collocated_from_10_flag is not present, it is inferred to be equal to 1.
[0122] six_minus_max_num_merge_cand specifies the maximum number of merge motion vector prediction (MVP) candidates supported in a slice subtracted from 6. The maximum number of merge MVP candidates, MaxNumMergeCand, is derived as follows:
[0123]
number
[0124] dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled. dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled.
[0125] sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled. sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding is enabled. If sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.
[0126] JVET-K1001 further provides RBSP trailing bit syntax and byte alignment syntax. Table 15 shows the RBSP trailing bit syntax provided in JVET-K1001, and Table 16 shows the byte alignment syntax provided in JVET-K1001. [Table 17]
[0127] [Table 18] As mentioned above, according to ITU-T H.265, each video frame or picture may be partitioned to contain one or more tiles. In ITU-T H.265, the tile structure of a picture is signaled using a picture parameter set. Table 17 is a portion of the syntax of the PPS specified in ITU-T H.265, including relevant syntax elements for signaling the tile structure.
[0128] [Table 19] ITU-T H.265 specifies the following definitions for each syntax element shown in Table 17:
[0129] A tiles_enabled_flag equal to 1 specifies that there is one or more tiles in each picture that references the PPS. A tiles_enabled_flag equal to 0 specifies that there is exactly one tile in each picture that references the PPS. It is a requirement for bitstream conformance that the value of tiles_enabled_flag be the same for all PPSs that are activated in the CVS.
[0130] num_tile_columns_minus1+1 specifies the number of tile columns that the picture is partitioned into. num_tile_columns_minus1 ranges from 0 to PicWidthlnCtbsY-1, inclusive. If not present, the value of num_tile_columns_minus1 is inferred to be equal to 0.
[0131] num_tile_rows_minus1+1 specifies the number of rows of tiles that partition the picture. num_tile_rows_minus1 shall be in the range 0 to PicHeightlnCtbsY-1, inclusive. If not present, the value of num_tile_rows_minus1 is inferred to be equal to 0. If tiles_enabled_flag is equal to 1, then num_tile_columns_minus1 and num_tile_rows_minus1 shall both be equal to 0.
[0132] uniform_spacing_flag equal to 1 specifies that tile column boundaries, and similarly tile row boundaries, are uniformly distributed across the picture. uniform_spacing_flag equal to 0 specifies that tile column boundaries, and similarly tile row boundaries, are not uniformly distributed across the picture, but are explicitly signaled using the syntax elements column_width_minus1[i] and row_height_minus1[i]. If not present, the value of uniform_spacing_flag is inferred to be equal to 1.
[0133] column_width_minus1[i]+1 defines the width of the ith tile column in units of coding tree blocks.
[0134] row_height_minus1[i]+1 defines the height of the ith tile row in units of coding tree blocks.
[0135] As mentioned above, JVET-K1001 does not provide a mechanism for signaling tile structure. This disclosure describes techniques for signaling the overall bitstream structure, including picture headers and tile set parameters.
[0136] FIG. 1 is a block diagram illustrating an example system that can be configured to encode (encode and / or decode) video data in accordance with one or more techniques of this disclosure. System 100 represents an example system that can encapsulate video data in accordance with one or more techniques of this disclosure. As shown in FIG. 1, system 100 includes a source device 102, a communication medium 110, and a destination device 120. In the example shown in FIG. 1, source device 102 can include any device configured to encode video data and transmit the encoded video data to communication medium 110. Destination device 120 can include any device configured to receive the encoded video data via communication medium 110 and decode the encoded video data. Source device 102 and / or destination device 120 can include computing devices equipped for wired and / or wireless communication and can include, for example, set-top boxes, digital video recorders, televisions, desktop, laptop, or tablet computers, game consoles, medical imaging devices, and mobile devices, including, for example, smartphones, cellular phones, and personal gaming devices.
[0137] The communication medium 110 may include any combination of wireless and wired communication media and / or storage devices. The communication medium 110 may include coaxial cable, fiber optic cable, twisted pair cable, wireless transmitters and receivers, routers, switches, repeaters, base stations, or any other equipment that may be useful for facilitating communication between various devices and sites. The communication medium 110 may include one or more networks. For example, the communication medium 110 may include a network configured to provide access to the World Wide Web, e.g., the Internet. The network may operate according to a combination of one or more telecommunications protocols. The telecommunications protocols may include proprietary and / or standardized telecommunications protocols. Examples of standardized telecommunications protocols include Digital Video Broadcasting (DVB) standards, Advanced Television Systems Committee (ATSC) standards, Integrated Services Digital Broadcasting (ISDB) standards, Data Over Cable Service Interface Specification (DOCSIS) standards, Global System Mobile Communications (GSM) standards, code division multiple access (CDMA) standards, 3rd Generation Partnership Project (3GPP) standards, European Telecommunications Standards Institute (ETSI) standards, Internet Protocol (IP) standards, Wireless Application Protocol (WAP) standards, and Institute of Electrical and Electronics Engineers (IEEE) standards.
[0138] A storage device may include any type of device or storage medium capable of storing data. A storage medium may include a tangible or non-transitory computer-readable medium. A computer-readable medium may include an optical disk, a flash memory, a magnetic memory, or any other suitable digital storage medium. In some examples, a memory device or a portion thereof may be described as non-volatile memory, while in other examples, a portion of a memory device may be described as volatile memory. Examples of volatile memory may include random access memory (RAM), dynamic random access memory (DRAM), and static random access memory (SRAM). Examples of non-volatile memory may include a magnetic hard disk, an optical disk, a floppy disk, a flash memory, or a form of electrically programmable memory (EPROM) or electrically erasable and programmable memory (EEPROM). The storage device(s) may include memory cards (e.g., Secure Digital (SD) memory cards), internal / external hard disk drives, and / or internal / external solid state drives. Data may be stored on the storage devices according to a defined file format.
[0139] Figure 4 is a conceptual diagram illustrating an example of components that may be included in one implementation of system 100. In the exemplary implementation shown in Figure 4, system 100 includes one or more computing devices 402A-402N, a television service network 404, a television service provider site 406, a wide area network 408, a local area network 410, and one or more content provider sites 412A-412N. The implementation shown in Figure 4 represents an example of a system that may be configured to enable digital media content, such as movies, live sporting events, and the like, as well as data and applications and their associated media presentations, to be distributed to and accessed by multiple computing devices, such as computing devices 402A-402N. In the example shown in Figure 4, computing devices 402A-402N may include any devices configured to receive data from one or more of television service network 404, wide area network 408, and / or local area network 410. For example, the computing devices 402A-402N may be equipped for wired and / or wireless communication, may be configured to receive services over one or more data channels, and may include televisions, including so-called smart televisions, set-top boxes, and digital video recorders. Additionally, the computing devices 402A-402N may include mobile devices, including desktop, laptop, or tablet computers, gaming consoles, e.g., "smart" phones, cellular telephones, and personal gaming devices.
[0140] Television service network 404 is an example of a network configured to enable the delivery of digital media content, which may include television services. For example, television service network 404 may include a public terrestrial television network, a public or subscription-based satellite television service provider network, and a public or subscription-based cable television provider network and / or an over-the-top service provider or an Internet service provider. While in some embodiments television service network 404 may be primarily used to enable the provision of television services, it should be noted that television service network 404 also enables the provision of other types of data and services based on any combination of telecommunications protocols described herein. Furthermore, it should be noted that in some embodiments television service network 404 may enable two-way communication between television service provider site 406 and one or more of computing devices 402A-402N. Television service network 404 may include any combination of wireless communication media and / or wired communication media. Television service network 404 may include coaxial cable, fiber optic cable, twisted pair cable, wireless transmitters and receivers, routers, switches, repeaters, base stations, or any other equipment that may be useful for facilitating communication between various devices and sites. Television service network 404 may operate according to a combination of one or more telecommunications protocols. The telecommunications protocols may include proprietary aspects and / or standardized telecommunications protocols. Examples of standardized telecommunications protocols include the DVB standard, the ATSC standard, the ISDB standard, the DTMB standard, the DMB standard, the Data Over Cable Service Interface Specification (DOCSIS) standard, the HbbTV standard, the W3C standard, and the UPnP standard.
[0141] Referring again to FIG. 4, television service provider site 406 can be configured to distribute television services over television service network 404. For example, television service provider site 406 may include one or more broadcast stations, cable television providers, satellite television providers, or Internet-based television providers. For example, television service provider site 406 can be configured to receive transmissions including television programs via satellite uplink / downlink. Further, as shown in FIG. 4, television service provider site 406 can be in communication with wide area network 408 and configured to receive data from content provider sites 412A-412N. Note that in some embodiments, television service provider site 406 can include a television studio from which content can originate.
[0142] The wide area network 408 may include a packet-based network and may operate according to a combination of one or more telecommunications protocols. The telecommunications protocols may include proprietary aspects and / or standardized telecommunications protocols. Examples of standardized telecommunications protocols include Global System Mobile Communications (GSM) standards, code division multiple access (CDMA) standards, 3rd Generation Partnership Project (3GPP) standards, European Telecommunications Standards Institute (ETSI) standards, European Standards (EN), IP standards, Wireless Application Protocol (WAP) standards, and Institute of Electrical and Electronics Engineers (IEEE) standards, such as one or more of the IEEE 802 standards (e.g., Wi-Fi). The wide area network 408 may include any combination of wireless communication media and / or wired communication media. Wide area network 408 may include coaxial cables, fiber optic cables, twisted pair cables, Ethernet cables, wireless transmitters and receivers, routers, switches, repeaters, base stations, or any other equipment that may be useful for facilitating communication between various devices and sites. In one embodiment, wide area network 408 may include the Internet. Local area network 410 may include packet-based networks and operate according to a combination of one or more telecommunications protocols. Local area networks 410 may be distinguished from wide area networks 408 based on levels of access and / or physical infrastructure. For example, local area network 410 may include a secure home network.
[0143] Referring again to FIG. 4, content provider sites 412A-412N represent examples of sites that can provide multimedia content to television service provider site 406 and / or computing devices 402A-402N. For example, a content provider site may include a studio having one or more studio content servers configured to provide multimedia files and / or streams to television service provider site 406. In one embodiment, content provider sites 412A-412N may be configured to provide multimedia content using an IP suite. For example, content provider sites may be configured to provide multimedia content to receiving devices according to the Real Time Streaming Protocol (RTSP), HTTP, etc. Additionally, content provider sites 412A-412N may be configured to provide data, including hypertext-based content, etc., over wide area network 408 to one or more receiving devices, computing devices 402A-402N, and / or television service provider site 406. Content provider sites 412A-412N may include one or more web servers. The data provided by the data provider sites 412A-412N may be defined according to a data format.
[0144] 1 , source device 102 includes video source 104, video encoder 106, data encapsulator 107, and interface 108. Video source 104 may include any device configured to capture and / or store video data. For example, video source 104 may include a video camera and a storage device operatively coupled thereto. Video encoder 106 may include any device configured to receive video data and generate a compliant bitstream representing the video data. A compliant bitstream may refer to a bitstream that a video decoder can receive and from which to regenerate the video data.
[0145] Aspects of a compliant bitstream may be defined according to a video encoding standard. When generating a compliant bitstream, the video encoder 106 may compress the video data. The compression may be lossy (perceptible or imperceptible to a viewer) or lossless. FIG. 5 is a block diagram illustrating an example video encoder 500 capable of implementing the techniques for encoding video data described herein. While the example video encoder 500 is shown as having separate functional blocks, it should be noted that such illustration is for illustrative purposes only and does not limit the video encoder 500 and / or its subcomponents to a particular hardware or software architecture. The functionality of the video encoder 500 may be realized using any combination of hardware, firmware, and / or software implementations.
[0146] The video encoder 500 may perform intra-prediction and inter-prediction coding of picture regions and may therefore be referred to as a hybrid video encoder. In the example shown in FIG. 5, the video encoder 500 receives a source video block. In some examples, the source video block may include a portion of a picture that has been partitioned according to a coding structure. For example, the source video data may include a macroblock, a CTU, a CB, a subdivision thereof, and / or another equivalent coding unit. In some examples, the video encoder 500 may be configured to perform additional subdivision of the source video block. Note that the techniques described herein are generally applicable to video coding, regardless of how the source video data is partitioned before and / or during encoding. In the example shown in FIG. 5, the video encoder 500 includes an adder 502, a transform coefficient generator 504, a coefficient quantizer 506, an inverse quantization and transform coefficient processor 508, an adder 510, an intra-prediction processor 512, an inter-prediction processor 514, a filter 516, and an entropy encoder 518. As shown in FIG. 5, a video encoder 500 receives source video blocks and outputs a bitstream.
[0147] In the example shown in FIG. 5, the video encoder 500 can generate residual data by subtracting a prediction video block from a source video block. The selection of the prediction video block is described in more detail below. The adder 502 represents a component configured to perform this subtraction operation. In one example, the subtraction of video blocks occurs in the pixel domain. The transform coefficient generator 504 applies a transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transform, to the residual block or a subdivision thereof (e.g., four 8×8 transforms can be applied to a 16×16 array of residual values) to generate a set of residual transform coefficients. The transform coefficient generator 504 can be configured to perform any and all combinations of transforms included in the family of discrete triangular transforms, including approximations of the discrete triangular transform. The transform coefficient generator 504 can output the transform coefficients to a coefficient quantizer 506. The coefficient quantizer 506 can be configured to perform quantization of the transform coefficients. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may change the rate-distortion (i.e., video bitrate vs. quality) of the coded video data. The degree of quantization may be modified by adjusting a quantization parameter (QP). The quantization parameter may be determined based on a slice-level value and / or a CU-level value (e.g., a CU delta QP value). QP data may include any data used to determine the QP for quantizing a particular set of transform coefficients. As shown in FIG. 5, the quantized transform coefficients (which may also be referred to as level values) are output to an inverse quantization and transform coefficient processor 508. The inverse quantization and transform coefficient processor 508 may be configured to apply inverse quantization and an inverse transform to generate reconstructed residual data. As shown in FIG. 5, the reconstructed residual data may be added to a prediction video block at an adder 510. In this manner, the coded video block may be reconstructed, and the resulting reconstructed video block may be used to evaluate the encoding quality for a given prediction, transform, and / or quantization.The video encoder 500 can be configured to perform multiple encoding passes (e.g., performing encoding while varying one or more of prediction, transform parameters, and quantization parameters). The rate-distortion or other system parameters of the bitstream can be optimized based on evaluation of the reconstructed video blocks. Furthermore, the reconstructed video blocks can be stored and used as references for predicting subsequent blocks.
[0148] Referring again to FIG. 5, the intra-predictor 512 may be configured to select an intra-prediction mode for the video block to be coded. The intra-predictor 512 may be configured to evaluate a frame and determine an intra-prediction mode to use for coding a current block. As described above, possible intra-prediction modes may include a planar prediction mode, a DC prediction mode, and an angular prediction mode. Furthermore, note that in some examples, the prediction mode for a chroma component may be inferred from the prediction mode for a luma prediction mode. The intra-predictor 512 may select the intra-prediction mode after performing one or more coding passes. Furthermore, in one embodiment, the intra-predictor 512 may select the prediction mode based on a rate-distortion pass. As shown in FIG. 5, the intra-predictor 512 outputs intra-prediction data (e.g., syntax elements) to the entropy encoder 518 and the transform coefficient generator 504. As described above, the transform performed on the residual data may be mode-dependent (e.g., a quadratic transform matrix may be determined based on the prediction mode).
[0149] Referring again to FIG. 5, the inter-prediction processor 514 may be configured to perform inter-prediction coding on the current video block. The inter-prediction processor 514 may be configured to receive a source video block and calculate a motion vector for the PU of the video block. The motion vector may indicate the displacement of the PU of the video block in the current video frame relative to a predictive block in a reference frame. Inter-prediction coding may use one or more reference pictures. Furthermore, motion prediction may be uni-predictive (using one motion vector) or bi-predictive (using two motion vectors). The inter-prediction processor 514 may be configured to select a predictive block by calculating pixel differences determined by, for example, sum of absolute difference (SAD), sum of square difference (SSD), or other difference measurement methods. As described above, a motion vector may be determined and determined according to the motion vector prediction. The inter-prediction processor 514 may be configured to perform motion vector prediction as described above. The inter-prediction processor 514 may be configured to generate a predictive block using the motion prediction data. For example, the inter-prediction processor 514 may place the prediction video block in a frame buffer (not shown in FIG. 5). Note that the inter-prediction processor 514 may be further configured to apply one or more interpolation filters to the reconstructed residual block to calculate sub-integer pixel values for use in motion prediction. The inter-prediction processor 514 may output motion prediction data for the calculated motion vectors to the entropy encoder 518.
[0150] Referring again to FIG. 5 , the filter unit 516 receives the reconstructed video blocks and coding parameters and outputs modified reconstructed video data. The filter unit 516 may be configured to perform deblocking and / or Sample Adaptive Offset (SAO) filtering. SAO filtering is a non-linear amplitude mapping that can be used to improve reconstruction by adding an offset to the reconstructed video data. Note that, as shown in FIG. 5 , the intra-prediction unit 512 and the inter-prediction unit 514 may receive the modified reconstructed video blocks via the filter unit 216. The entropy encoder 518 receives quantized transform coefficients and prediction syntax data (i.e., intra-prediction data, motion prediction data). Note that in some examples, the coefficient quantizer 506 may perform a scan of a matrix including the quantized transform coefficients before the coefficients are output to the entropy encoder 518. In other examples, the entropy encoder 518 may perform the scan. The entropy encoder 518 may be configured to perform entropy encoding according to one or more of the techniques described herein. As such, the video encoder 500 represents one example of a device configured to generate encoded video data according to one or more techniques of this disclosure.
[0151] 1, data encapsulator 107 may receive encoded video data and generate a compliant bitstream, such as a series of NAL units, according to a defined data structure. A device receiving the compliant bitstream may regenerate the video data therefrom. Furthermore, as described above, sub-bitstream extraction may refer to a process by which a device receiving an ITU-T H.265 compliant bitstream forms a new ITU-T H.265 compliant bitstream by discarding and / or modifying data in the received bitstream. Note that the term conforming bitstream may be used instead of the term compliant bitstream.
[0152] In one embodiment, data encapsulator 107 can be configured to generate syntax according to one or more of the techniques described herein. Note that data encapsulator 107 need not be located within the same physical device as video encoder 106. For example, the functions described as being performed by video encoder 106 and data encapsulator 107 may be distributed among the devices shown in FIG. 4.
[0153] In one embodiment, a picture may be divided into tile sets and tiles, where a tile set is a sequence of tiles and a tile is a sequence of coding tree units. A tile set can cover a rectangular area of a picture. Figure 7 shows an example of a picture divided into six tile sets. In the example shown in Figure 7, each tile set is rectangular. Each tile set may have a different number of tiles arranged in a different number of tile columns and rows. In another embodiment, each tile set may have the same number of tiles. In addition, the number of tile columns and the number of tile rows in each tile set may change in each picture. A flag can be signaled to indicate that the number of tile columns and the number of tile rows in each tile set are fixed in the coded video sequence. Note that a "tile set" may alternatively be referred to as a "slice." Therefore, the terms "tile set" or "tile set" and "slice" may be used interchangeably.
[0154] As noted above, Table 4 shows the general NAL unit syntax provided in JVET-K1001. As further noted above, JVET-K1001 provides a place where NAL unit types are yet to be defined. However, it should be noted that document JVET-K0325, "On High Level Syntax Starting Point," 11th Meeting of ISOTEC JTC1 / SC29 / WG11 10T8 July 2018, Ljubljana, SI, which is incorporated herein by reference and referenced as JVET-K0325, provides NAL unit types that are added to JVET-K1001. In one embodiment, in accordance with the techniques described herein, data encapsulator 107 can be configured to signal one or more of the NAL unit types included in Table 18.
[0155] [Table 20] With respect to Table 18, the following can be defined:
[0156] Intra Random Access Point (IRAP) picture: A coded picture in which each VCL NAL unit has nal_unit_type equal to IRAP_NUT.
[0157] Non-IRAP picture: A coded picture in which each VCL NAL unit has nal_unit_type equal to NON_IRAP_NUT.
[0158] Signaling picture headers as NAL units is shown in Table 18. Signaling syntax parameters in picture headers and overriding them in tile set headers allows for bit savings and still supports flexibility. In some embodiments, in accordance with the techniques herein, the same picture header may apply to multiple pictures. This can provide additional bit savings. Having a picture header as its own NAL unit makes it easy for multiple pictures to reference the same picture header.
[0159] The tile parameter related header may have the following aspects: 1. it may apply to more than one tile, for example to a tile set or collection of tiles, and therefore it may be a tile set header, and / or 2. it may selectively override some of the parameters from the picture header, if desired, which may be controlled by a set of presence flags in the tile set header.
[0160] Note that in an alternative embodiment, PICH_NUT may be a non-VCL NAL unit that is activated for each picture / tile set. For example, the NAL unit table in this case may be as shown in Table 18A.
[0161] [Table 21] In one embodiment, the following definitions of tile, tile column, tile row, and tile set may be used: Note that the words "tile set" and "tile set" are used interchangeably and may mean the same thing.
[0162] Tile: A rectangular region of coded tree blocks (CTBs) within a particular tile column and a particular tile row in a picture.
[0163] Tile column: A rectangular region of a CTB with a height equal to the height of the picture and a width specified by a syntax element in the picture parameter set.
[0164] Tile row: A rectangular region of a CTB with a height specified by a syntax element in the picture parameter set and a width equal to the width of the picture.
[0165] Tile Set: A collection of one or more tiles. In one embodiment, a tile set is rectangular in shape. A tile set may only contain an integer number of contiguous tiles. In one embodiment of a tile set, each tile must be contiguous with other tiles along the column or row dimension, or the tile set must have only one tile.
[0166] In one embodiment, NONIRAP_NT may be the coded non-IRAP tile set tileset_layer_rbsp(), and IRAP_NUT may be the coded IRAP tile set tileset_layer_rbsp(). The bitstream resulting from the sub-bitstream extraction process that extracts only data for the IRAP tile set can be decoded independently. The first picture or subpicture in this extracted bitstream that corresponds to a tile set is an IRAP picture or subpicture.
[0167] Table 19 shows an example of tileset_layer_rbsp() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0168] [Table 22] Table 20 shows an example of tileset_header() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0169] [Table 23] With respect to Table 20, each syntax element may be based on the following definition:
[0170] ts_pic_header_id specifies the value of pic_header_id in the picture header that applies to this tile set. The value of ts_pic_header_id must be between 0 and 2, inclusive. 32 Must be in the range -1.
[0171] tile_set_id defines the tile set identifier for this tile set.
[0172] first_tile_id specifies the TileId (tile identifier) of the first tile in the tileset by the identifier tile_set_id present in the tileset_data() that follows this tileset_header().
[0173] num_tiles_in_setdata defines the number of tiles in the tileset, as determined by the identifier tile_set_id present in the tileset_data() that follows this tileset_header().
[0174] Table 21 shows an example of tileset_header() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0175] [Table 24] With respect to Table 21, each syntax element may be based on the following definition:
[0176] ts_pic_header_id specifies the value of pic_header_id in the picture header that applies to this tile set. The value of ts_pic_header_id must be between 0 and 2, inclusive. 32 Must be in the range -1.
[0177] first_tile_set_id specifies the tile set identifier of the first tile set in the tile set_data() following the tile set_header().
[0178] num_tile_set_ids_minus1+1 defines the number of tilesets that exist in the tileset_data() that follows this tileset_header().
[0179] first_tile_id_in_first_tileset specifies the TileId (tile identifier) of the first tile in the first tileset that exists in the tileset_data() that follows this tileset_header().
[0180] num_tiles_in_setdata_in_last_tileset specifies the number of tiles in the last tileset present in the tileset_data() following this tileset_header().
[0181] Table 22 shows an example of tileset_header() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0182] [Table 25] With respect to Table 22, each syntax element may be based on the following definition:
[0183] first_tile_set_id specifies the tile set identifier of the first tile set in the tile set_data() that follows this tile set_header().
[0184] num_tile_set_ids_minus1+1 defines the number of tilesets that exist in the tileset_data() that follows this tileset_header().
[0185] first_tile_id_in_first_tileset specifies the TileId (tile identifier) of the first tile in the first tileset that exists in the tileset_data() that follows this tileset_header().
[0186] num_tiles_in_setdata_in_first_tileset specifies the number of tiles in the first tileset that exist in the tileset_data() that follows this tileset_header().
[0187] num_tiles_in_setdata_in_last_tileset specifies the number of tiles in the last tileset present in the tileset_data() following this tileset_header().
[0188] Table 22A shows an example of tileset_header() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein. In this example, only the full integer number of tilesets is included in tileset_data(). This requires fewer fiber syntax elements in the tileset_header().
[0189] [Table 26] With respect to Table 22A, each syntax element may be based on the following definition:
[0190] first_tile_set_id specifies the tile set identifier of the first tile set in the tile set_data() following the tile set_header().
[0191] num_tile_set_ids_minus1+1 defines the number of tilesets that exist in the tileset_data() that follows this tileset_header().
[0192] Table 23 shows an example of tileset_coding_parameters() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0193] [Table 27] With respect to Table 23, each syntax element may be based on the following definition:
[0194] A tileset_log2_diff_ctu_max_bt_size_present_flag equal to 1 specifies that tileset_log2_diff_ctu_max_bt_size is present. A tileset_log2_diff_ctu_max_bt_size_present_flag equal to 0 specifies that tileset_log2_diff_ctu_max_bt_size is not present. If not present, tileset_log2_diff_ctu_max_bt_size is inferred to be equal to the log2_diff_ctu_max_bt_size from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() active for this tileset.
[0195] tileset_log2_diff_ctu_max_bt_size specifies the difference between the luma CTB size and the maximum luma size (width or height) of a coding block that can be split using binary splitting for this tileset. The semantics of log2_diff_ctu_max_bt_size apply outside tilesets.
[0196] tileset_sbtmvp_size_override_flag_present_flag equal to 1 specifies that tileset_sbtmvp_size_override_flag is present, and log2_tileset_sbtmvp_active_size_minus2 is present if tileset_sbtmvp_size_override_flag is equal to 1. tileset_sbtmvp_size_override_flag_present_flag equal to 0 specifies that tileset_sbtmvp_size_override_flag and log2_tileset_sbtmvp_active_size_minus2 are not present. If not present, tileset_sbtmvp_size_override_flag_present_flag and log2_tileset_sbtmvp_active_size_minus2 are inferred to be equal to sbtmvp_size_override_flag and log2_sbtmvp_active_size_minus2, respectively, from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() that is active for this tileset.
[0197] tileset_sbtmvp_size_override_flag equal to 1 specifies that the syntax element log2_tileset_sbtmvp_active_size_minus2 is present for the current tileset. sbtmvp_size_override_flag equal to 0 specifies that the syntax element log2_tileset_sbtmvp_active_size_minus2 is not present, and that log2_tileset_sbtmvp_size_active_minus2 is inferred to be equal to log2_sbtmvp_size_active_minus2.
[0198] log2_tileset_sbtmvp_active_size_minus2+2 specifies the value of the subblock size used to derive the subblock-based TMVP motion parameters for the current tileset. If log2_tileset_sbtmvp_size_active_minus2 is not present, it is inferred to be equal to log2_sbtmvp_size_active_minus2. The variable is derived as follows:
[0199] Log2SbtmvpSize=log2_tileset_sbtmvp_size_active_minus2+2 tileset_tmvp_info_present_flag equal to 1 specifies that tileset_temporal_mvp_enabled_flag, tileset_mvd_l1_zero_flag, and tileset_collocated_from_10_flag may be present. tileset_tmvp_info_present_flag equal to 0 specifies that tileset_temporal_mvp_enabed_flag, tileset_mvd_l1_zero_flag, and tileset_collocated_from_10_flag are not present. If not present, tileset_temporal_mvp_enabled_flag, tileset_mvd_l1_zero_flag, and tileset_collocated_from_10_flag are inferred to be equal to pic_temporal_mvp_enabed_flag, mvd_l1_zero_flag, and collocated_from_10_flag, respectively, from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() that is active for this tileset.
[0200] The tileset_temporal_mvp_enabled_flag specifies whether a temporal motion vector predictor can be used for inter prediction of the current tile set. If tileset_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the current tile set shall be constrained so that a temporal motion vector predictor is not used for decoding the current tile set. Otherwise (tileset_temporal_mvp_enabled_flag is equal to 1), a temporal motion vector predictor can be used for decoding the current tile set. If not present, the value of tileset_temporal_mvp_enabled_flag is inferred to be equal to the pic_temporal_mvp_enabled_flag from the pic_header() structure corresponding to ts_pic_header_id in the tileset_header() for this tileset that is active for this tileset.
[0201] tileset_mvd_l1_zero_flag equal to 1 indicates that the mvd_coding(x0,y0,1) syntax structure is not parsed and MvdL1[x0][y0][compIdx] is set equal to 0 for compIdx=0 to 1. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0,y0,1) syntax structure is parsed for the current tileset.
[0202] tileset_collocated_from_10_flag equal to 1 specifies that, for the current tile set, the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. collocated_from_10_flag equal to 0 specifies that, for the current tile set, the collocated picture used for temporal motion vector prediction is derived from reference picture list 1. If tileset_collocated_from_10_flag is not present, it is inferred to be equal to collocated_from_10_flag from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() that is active for this tileset.
[0203] A tileset_six_minus_max_num_merge_present_flag equal to 1 defaults to tileset_six_minus_max_num_merge_cand being present. A tileset_six_minus_max_num_merge_present_flag equal to 0 defaults to tileset_six_minus_max_num_merge_cand not being present. If not present, tileset_six_minus_max_num_merge_cand is inferred to be equal to six_minus_max_num_merge_cand from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() active for this tileset.
[0204] tileset_six_minus_max_num_merge_cand specifies the maximum number of merge motion vector prediction (MVP) candidates supported in the current tile set subtracted from 6. The maximum number of merge MVP candidates, MaxNumMergeCand, is derived as follows:
[0205]
number
[0206] A tileset_dep_quant_info_present_flag equal to 1 specifies that tileset_dep_quant_enabled_flag is present. A tileset_dep_quant_info_present_flag equal to 0 specifies that tileset_dep_quant_enabled_flag is not present. If not present, tileset_dep_quant_enabled_flag is inferred to be equal to the dep_quant_enabled_flag from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() that is active for this tileset.
[0207] tileset_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for the current tileset. tileset_dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled for the current tileset.
[0208] A tileset_sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled for the current tileset. A tile_sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding is enabled for the current tileset. If tile_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to the sign_data_hiding_enabled_flag from the pic_header() structure corresponding to the ts_pic_header_id of this tileset_header() that is active for this tileset.
[0209] Table 24 shows an example of tileset_data() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0210] [Table 28] With respect to Table 24, each syntax element may be based on the following definition:
[0211] end_of_tileset_flag equal to 0 specifies that another CTU follows in the tileset. end_of_tileset_flag equal to 1 specifies the end of the tileset slice, i.e. that no further CTUs follow in the tileset.
[0212] Table 25 shows an example of rbsp_tileset_trailing_bits() syntax that may be signaled by data encapsulator 107 in accordance with the techniques herein.
[0213] [Table 29] Table 26 shows an example of pic_header_rbsp() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0214] [Table 30] Table 27 shows an example of pic_header() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0215] [Table 31] With respect to Table 24, each syntax element may be based on the following definition:
[0216] pps_pic_parameter_set_id identifies the PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id shall be in the range 0 to 63, inclusive.
[0217] The pic_header_id identifies the picture header for reference by other syntax elements. The value of pps_pic_parameter_set_id is between 0 and 2, inclusive. 32 It is assumed to be in the range of -1.
[0218] picture_type indicates the coding type of the picture according to Table 28. The value of pic_type shall be equal to 0, 1, or 2 in bitstreams conforming to this version of this specification. Other values of pic_type are reserved for future use. Decoders conforming to this version of this specification shall ignore reserved values of pic_type.
[0219] [Table 32] log2_diff_ctu_max_bt_size defines the difference between the luma CTB size and the maximum luma size (width or height) of a coding block that can be split using binary splitting.
[0220] sbtmvp_size_override_flag equal to 1 specifies that the syntax element log2_sbtmvp_active_size_minus2 is present for the current slice, and sbtmvp_size_override_flag equal to 0 specifies that the syntax element log2_atmvp_active_size_minus2 is not present and log2_sbtmvp_size_active_minus2 is inferred to be equal to log2_sbtmvp_default_size_minus2.
[0221] log2_sbtmvp_active_size_minus2+2 specifies the value of the sub-block size used to derive the sub-block-based TMVP motion parameters for the current slice. If log2_sbtmvp_size_active_minus2 is not present, it is inferred to be equal to log2_sbtmvp_default_size_minus2. The variables are derived as follows:
[0222] Log2SbtmvpSize=log2_sbtmvp_size_active_minus2+2 pic_temporal_mvp_enabled_flag specifies whether temporal motion vector predictors can be used for inter prediction of the current picture. If pic_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the current picture shall be constrained so that temporal motion vector predictors are not used for decoding the current picture. Otherwise (pic_temporal_mvp_enabled_flag is equal to 1), temporal motion vector predictors can be used for decoding the current picture. If not present, the value of pic_temporal_mvp_enabled_flag is inferred to be equal to 0.
[0223] mvd_l1_0_flag equal to 1 indicates that the mvd_coding(x0,y0,1) syntax structure is not syntactically parsed and MvdL1[x0][y0][compIdx] is set equal to 0 for compIdx=0 to 1. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0,y0,1) syntax structure is syntactically parsed.
[0224] collocated_from_10_flag equal to 1 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. collocated_from_10_flag equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1. If collocated_from_10_flag is not present, it is inferred to be equal to 1.
[0225] six_minus_max_num_merge_cand specifies the maximum number of merge motion vector prediction (MVP) candidates supported in a slice subtracted from 6. The maximum number of merge MVP candidates, MaxNumMergeCand, is derived as follows:
[0226] MaxNumMergeCand=6-six_minus_max_num_merge_cand The value of MaxNumMergeCand shall be in the range of 1 to 6, inclusive.
[0227] dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled. dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled.
[0228] sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled. sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding is enabled. If sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.
[0229] Note that in one embodiment, one or more syntax elements within pic_header() may be signaled with PPS_NUT instead of PICH_NUT.
[0230] Table 29 shows an example of rbsp_pic_header_trailing_bits() syntax that may be signaled by a data encapsulator 107 in accordance with the techniques herein.
[0231] [Table 33] Note that in some embodiments, a picture header can apply to one or more pictures. Furthermore, in some embodiments, parameters in a picture header can be overridden for a tile set according to tile set parameters. In some example cases, certain restrictions may apply to overriding parameters in a picture header for a tile set.
[0232] As mentioned above, in ITU-T H.265, some or all of the tile structure, i.e., one or more tile- and / or tile-set-related parameters for a picture, are signaled using a picture parameter set. In one embodiment, in accordance with the techniques herein, the tile structure may be signaled within a picture parameter set, which, as provided above, is identified in the picture_header(). In another embodiment, some or all of the tile structure, i.e., one or more tile- and / or tile-set-related parameters, may be signaled within a sequence parameter set (SPS).
[0233] In this manner, source device 102 represents an example of a device configured to signal values for syntax elements within a network abstraction layer unit that indicate that a tile set layer syntax structure is included in the network abstraction layer unit, and to signal values for one or more tile set parameters included in the tile set layer syntax structure.
[0234] 1, interface 108 may include any device configured to receive data generated by data encapsulator 107 and transmit and / or store the data on a communications medium. Interface 108 may include a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device capable of transmitting and / or receiving information. Additionally, interface 108 may include a computer system interface that may allow files to be stored on a storage device. For example, interface 108 may include interfaces such as Peripheral Component Interconnect (PCI) and Peripheral Component Interconnect Express (PCIe) bus protocols, proprietary bus protocols, Universal Serial Bus (USB) protocols, I / O protocols, and the like.2 C, or any other logical and physical structure that can be used to interconnect peer devices.
[0235] 1, destination device 120 includes interface 122, data decapsulator 123, video decoder 124, and display 126. Interface 122 may include any device configured to receive data from a communications medium. Interface 122 may include a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device capable of receiving and / or transmitting information. Additionally, interface 122 may include an interface for a computer system that allows a compliant video bitstream to be retrieved from a storage device. For example, interface 122 may support PCI and PCIe bus protocols, proprietary bus protocols, USB protocols, I / O, and the like. 2 C, or any other logical and physical structure that can be used to interconnect peer devices. Data decapsulator 123 may be configured to receive and parse any of the example syntax structures described herein.
[0236] Video decoder 124 may include any device configured to receive a bitstream (e.g., an MCTS sub-bitstream extract) and / or an acceptable variant thereof and regenerate video data therefrom. Display 126 may include any device configured to display video data. Display 126 may include one of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display. Display 126 may include a high-resolution display or an ultra-high-resolution display. In the example shown in FIG. 1 , video decoder 124 is described as outputting data to display 126, but it should be noted that video decoder 124 may be configured to output video data to various types of devices and / or subcomponents thereof. For example, video decoder 124 may be configured to output video data to any communication medium as described herein.
[0237] FIG. 6 is a block diagram illustrating an example of a video decoder that can be configured to decode video data in accordance with one or more techniques of this disclosure. In one embodiment, the video decoder 600 can be configured to decode transform data and recover residual data from transform coefficients based on the decoded transform data. The video decoder 600 can be configured to perform intra-prediction decoding and inter-prediction decoding, and as such, may be referred to as a hybrid decoder. The video decoder 600 can be configured to parse any combination of the syntax elements listed in Tables 1-27 above. The video decoder 600 can perform video decoding based on the values of the parsed syntax elements. For example, different video decoding techniques can be performed based on whether a picture is of a particular type.
[0238] In the example shown in Figure 6, the video decoder 600 includes an entropy decoding unit 602, an inverse quantization and transform coefficient processing unit 604, an intra prediction processing unit 606, an inter prediction processing unit 608, an adder unit 610, a post filter unit 612, and a reference buffer 614. The video decoder 600 may be configured to decode video data in a manner consistent with a video coding system. While the example video decoder 600 is shown with separate functional blocks, it should be noted that such illustration is for illustrative purposes only and does not limit the video decoder 600 and / or its subcomponents to any particular hardware or software architecture. The functionality of the video decoder 600 may be realized using any combination of hardware, firmware, and / or software implementations.
[0239] As shown in FIG. 6, the entropy decoding unit 602 receives an entropy-encoded bitstream. The entropy decoding unit 602 may be configured to decode syntax elements and quantized coefficients from the bitstream according to a reciprocal process of the entropy encoding process. The entropy decoding unit 602 may be configured to perform entropy decoding according to any of the entropy encoding techniques described above. The entropy decoding unit 602 may determine values of syntax elements in the encoded bitstream in accordance with a video coding standard. As shown in FIG. 6, the entropy decoding unit 602 may determine quantization parameters, quantized coefficient values, transform data, and prediction data from the bitstream. In the embodiment shown in FIG. 6, the inverse quantization and transform coefficient processing unit 604 receives the quantization parameters, quantized coefficient values, transform data, and prediction data from the entropy decoding unit 602 and outputs reconstructed residual data.
[0240] Referring again to FIG. 6, the reconstructed residual data may be provided to the adder 610, which may add the reconstructed residual data to a prediction video block to generate reconstructed video data. The prediction video block may be determined according to a predictive video technique (i.e., intra prediction and inter-frame prediction). The intra-prediction processor 606 may be configured to receive an intra-prediction syntax element and obtain a prediction video block from a reference buffer 614. The reference buffer 614 may include a memory device configured to store one or more frames of video data. The intra-prediction syntax element may identify an intra-prediction mode, such as the intra-prediction modes described above. The inter-prediction processor 608 may receive the inter-prediction syntax element and generate a motion vector to identify a prediction block within one or more reference frames stored in the reference buffer 616. The inter-prediction processor 608 may optionally perform interpolation based on an interpolation filter to generate a motion-compensated block. The syntax element may include an identifier of an interpolation filter to be used for motion prediction with sub-pixel precision. The inter-prediction processor 608 may use an interpolation filter to calculate interpolated values for sub-integer pixels of the reference block. The post-filter unit 614 may be configured to perform filtering on the reconstructed video data. For example, the post-filter unit 614 may be configured to perform deblocking and / or sample adaptive offset (SAO) filtering, e.g., based on parameters specified in the bitstream. Furthermore, it should be noted that in some examples, the post-filter unit 614 may be configured to perform custom optional filtering (e.g., visual enhancement, such as mosquito noise reduction). As shown in FIG. 6, the reconstructed video blocks may be output by the video decoder 600.In this manner, video decoder 600 represents an example of a device configured to parse values for syntax elements in a network abstraction layer unit that indicate that a tile set layer syntax structure is included in the network abstraction layer unit, parse values for one or more tile set parameters included in the tile set layer syntax structure, and generate video data based on the parsed values for the one or more tile set parameters.
[0241] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media or communication media, including, for example, any medium that facilitates transfer of a computer program from one place to another according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media or (2) communication media such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.
[0242] By way of example, and without limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM, or other optical disk storage, magnetic disk storage, other magnetic storage, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disk, and a Blu-ray disc, where disks typically reproduce data magnetically and discs reproduce data optically using a laser. Combinations of the above should also be included within the scope of computer-readable media.
[0243] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, as used herein, the term "processor" may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured to encode and decode, or incorporated into a composite codec. Alternatively, the techniques may be implemented entirely in one or more circuit or logic elements.
[0244] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are illustrated in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but are not necessarily realized by different hardware units. Rather, as previously discussed, the various units may be combined into a codec hardware unit or may be provided by a collection of interoperating hardware units, including one or more processors as previously discussed, along with suitable software and / or firmware.
[0245] Furthermore, each functional block and various functions of the base station equipment and terminal equipment used in each of the above-described implementations can be realized or performed by electrical circuitry, typically an integrated circuit or multiple integrated circuits. Circuitry designed to perform the functions described herein may include a general-purpose processor, a digital signal processor (DSP), an application-specific or general-purpose integrated circuit (ASIC), a field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, individual hardware components, or a combination thereof. A general-purpose processor may be a microprocessor, or the processor may be a conventional processor, controller, microcontroller, or state machine. The general-purpose processor or each circuit described above may be implemented using digital or analog circuits. Furthermore, as advances in semiconductor technology emerge to provide integrated circuitry that replaces current integrated circuits, integrated circuits using this technology may also be used.
[0246] In one embodiment, a method for signaling tile set parameters includes signaling a value for a syntax element in a network abstraction layer unit indicating that a tile set layer syntax structure is included in the network abstraction layer unit, and signaling values for one or more tile set parameters included in the tile set layer syntax structure.
[0247] In one embodiment, a method for decoding video data includes parsing a value for a syntax element in a network abstraction layer unit that indicates that a tile set layer syntax structure is included in the network abstraction layer unit, parsing values for one or more tile set parameters included in the tile set layer syntax structure, and generating video data based on the parsed values for the one or more tile set parameters.
[0248] Various embodiments have been described. These and other embodiments are within the scope of the following claims.
[0249] <Cross reference> This patent application claims priority under 35 U.S.C. § 119 to Provisional Application No. 62 / 734,232, filed September 20, 2018, the entire contents of which are incorporated herein by reference.
Claims
1. 1. A method for signaling slice parameters, comprising: signaling a value for a syntax element of the network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; and signaling a presence flag in a slice parameter structure included in the slice layer syntax structure; determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; determining, for the one of the one or more slice parameters, a value included in the slice layer syntax structure when the one of the one or more slice parameters is determined based on the slice layer syntax structure; wherein the one or more slice parameters is collocated_from_10_flag; When the value of nal_unit_type indicates the presence of a picture layer syntax structure picture header, a plurality of syntax elements of the picture header are present, and when the value of nal_unit_type indicates the presence of a picture parameter set, a plurality of syntax elements of the picture parameter set are present. method.
2. The method of claim 1 , wherein the slice layer syntax structure includes a slice header, and a value of nal_unit_type in the picture header is different from a value of nal_unit_type in the picture parameter set.
3. 1. A method for decoding video data, comprising: parsing a value for a syntax element of the network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; parsing a presence flag in a slice parameter structure included in the slice layer syntax structure; determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; when the one of the one or more slice parameters is determined based on the slice layer syntax structure, determining a value included in the slice layer syntax structure for the one or more slice parameters; generating video data based on the determined value for the one of the one or more slice parameters; the one or more slice parameters is collocated_from_10_flag, wherein when the value of nal_unit_type indicates the presence of a picture layer syntax structure picture header, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates the presence of a picture parameter set, multiple syntax elements of the picture parameter set are present.
4. The method of claim 3 , wherein the slice layer syntax structure includes a slice header, and wherein a value of nal_unit_type in the picture header is different from a value of nal_unit_type in a picture parameter set.
5. 1. A device for encoding video data, comprising: one or more processors; one or more non-transitory computer-readable storage media coupled to the one or more processors, the storage media, when executed by at least one of the one or more processors, causing the device to: signaling a value for a syntax element of the network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; and signaling a presence flag in a slice parameter structure included in the slice layer syntax structure; determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; determining, for the one of the one or more slice parameters, a value included in the slice layer syntax structure when the one of the one or more slice parameters is determined based on the slice layer syntax structure; and a storage medium containing one or more computer-readable instructions for causing the the one or more slice parameters is collocated_from_10_flag, a device, wherein when the value of nal_unit_type indicates the presence of a picture layer syntax structure picture header, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates the presence of a picture parameter set, multiple syntax elements of the picture parameter set are present.
6. 1. A device for decoding video data, comprising: one or more processors; one or more non-transitory computer-readable storage media coupled to the one or more processors, that when executed by at least one of the one or more processors, cause the device to: parsing a value for a syntax element of the network abstraction layer unit indicating that a slice layer syntax structure is included in the network abstraction layer unit; parsing a presence flag in a slice parameter structure included in the slice layer syntax structure; determining, based on the presence flag, whether one of one or more slice parameters is determined based on the slice layer syntax structure or based on a picture header; when the one of the one or more slice parameters is determined based on the slice layer syntax structure, determining a value included in the slice layer syntax structure for the one or more slice parameters; generating video data based on the determined value for the one of the one or more slice parameters; a storage medium containing one or more computer-readable instructions for causing the the one or more slice parameters is collocated_from_10_flag, a device, wherein when the value of nal_unit_type indicates the presence of a picture layer syntax structure picture header, multiple syntax elements of the picture header are present, and when the value of nal_unit_type indicates the presence of a picture parameter set, multiple syntax elements of the picture parameter set are present.
Citation Information
Patent Citations
Region of interest scalability with shvc
WO2014168972A1