Provides fragment existence information

By specifying the NAL unit type and the existence of SEI messages in the parameter set in video encoding and decoding, the problem of decoder resources is solved and the decoding efficiency and performance are improved.

CN114556961BActive Publication Date: 2025-01-10TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080066376.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-09-23
Filing Date
2020-08-19
Publication Date
2025-01-10
Estimated Expiration
2040-08-19

AI Technical Summary

Technical Problem

In the current VVC technology, it is difficult for the decoder to determine the presence of NAL unit types and SEI messages in advance, resulting in waste of resources and low decoding efficiency.

Method used

By including flags in parameter sets (such as DPS, VPS, SPS, PPS), specifying the presence or absence of a specific NAL unit type or SEI message, the decoder is directed to allocate resources and process the bitstream reasonably.

Benefits of technology

It effectively avoids unused resource allocation and parsing, improves the efficiency and performance of the decoder, and ensures the effectiveness of the bitstream and the rational use of resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114556961B_ABST
    Figure CN114556961B_ABST
Patent Text Reader

Abstract

A mechanism performed by a decoder is provided. The method comprises receiving a bitstream. The method comprises processing the received bitstream, wherein: the bitstream comprises a first portion of the bitstream, and the first portion of the bitstream provides fragment presence information, and further wherein i) the fragment presence information indicates that fragments of at least a first fragment type should not be present in at least a portion of the bitstream, or ii) the fragment presence information indicates that fragments of at least the first fragment type may be present in at least a portion of the bitstream.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to video encoding and decoding. Background Art

[0002] 1.HEVC and VVC

[0003] High Efficiency Video Coding (HEVC) is a block-based video codec standardized by ITU-T and MPEG that employs both temporal and spatial prediction. Spatial prediction is implemented using intra (I) prediction within the current picture. Temporal prediction is implemented using unidirectional (P) or bidirectional inter (B) prediction on a block level from a previously decoded reference picture. In the encoder, the difference between the original pixel data and the predicted pixel data, called the residual, is transformed into the frequency domain, quantized and then entropy encoded, and then transmitted along with the necessary prediction parameters such as prediction mode and motion vectors, which are also entropy encoded. The decoder performs entropy decoding, inverse quantization, and inverse transform to obtain the residual, which is then added to the intra or inter prediction to reconstruct the picture.

[0004] MPEG and ITU-T are developing a successor to HEVC within the Joint Video Exploration Team (JVET). The name of this video codec under development is Versatile Video Coding (VVC). At the time of writing, the current version of the VVC draft specification is "Versatile Video Coding (Draft 6)", JVET-O2001-vE. When VVC is referenced in this document, the reference is to Draft 6 of the VVC specification.

[0005] 2. Quantity

[0006] A video sequence consists of a series of pictures, where each picture consists of one or more components. Each component can be described as a two-dimensional rectangular array of sampled values. Pictures in a video sequence usually consist of three components: a luminance component (Y), where the sampled values ​​are luminance values, and two chrominance components (Cb) and (Cr), where the sampled values ​​are chrominance values. The size of the chrominance components is usually two times smaller than the luminance components in each dimension. For example, the size of the luminance component of an HD picture is 1920x1080, and the size of the chrominance components is 960x540 each. Components are sometimes referred to as color components. In this document, methods useful for encoding and decoding video sequences are described. However, it should be understood that the described techniques can also be used for encoding and decoding of still images.

[0007] 3. Blocks and Units

[0008] A block is a two-dimensional array of samples. In video coding, each component is split into one or more blocks, and the coded video bitstream is a sequence of blocks.

[0009] In video coding, a picture is usually split into units covering a specific area. Each unit consists of all the blocks that make up the specific area, and each block belongs entirely to one unit. The coding unit (CU) in HEVC and VVC is an example of such a unit. The coding tree unit (CTU) is a logical unit that can be split into several CUs.

[0010] In HEVC, CUs are square, i.e., they are of size N×N luma samples, where N can be 64, 32, 16, or 8. In the current H.266 test model, Versatile Video Coding (VVC), CUs can also be rectangular, i.e., of size N×M luma samples, where N is different from M.

[0011] 4.NAL Unit

[0012] Both HEVC and VVC define a Network Abstraction Layer (NAL). All data, either video coding layer (VCL) or non-VCL data in HEVC and VVC, is encapsulated in NAL units. VCL NAL units contain data representing picture sample values. Non-VCL NAL units contain additional associated data, such as parameter sets and supplemental enhancement information (SEI) messages. NAL units in HEVC and current versions of VVC start with a header called the NAL unit header. The syntax of the NAL unit header for HEVC is shown in Table 1 and starts with a forbidden_zero_bit, which should always be equal to 0 to prevent start code simulation. Without the forbidden_zero_bit, some MPEG systems might confuse HEVC video bitstreams with other data, but the 0 bit in the NAL unit header allows all possible HEVC bitstreams to be uniquely identified as HEVC bitstreams. The nal_unit_type, nuh_layer_id, and nuh_temporal_id_plus1 codewords specify the NAL unit type of the NAL unit, identifying what type of data is carried in the NAL unit, the layer ID, and the temporal ID to which the NAL unit belongs. The NAL unit type indicates and specifies how the NAL unit should be parsed and decoded. The NAL unit header in the current version of VVC is very similar to the NAL unit header in HEVC, but uses 1 less bit for nal_unit_type, which is reserved for future use instead.

[0013] The remaining bytes of the NAL unit are a payload of the type indicated by the NAL unit type. The bitstream consists of a sequence of concatenated NAL units.

[0014] Table 1 – HEVC NAL unit header syntax

[0015]

[0016] Table 1 – NAL unit header syntax for the current version of VVC

[0017]

[0018] A decoder or bitstream parser can infer how to process (e.g., parse and decode) the NAL unit after looking at the NAL unit header. The remaining bytes of the NAL unit are a payload of the type indicated by the NAL unit type. The bitstream consists of a series of concatenated NAL units.

[0019] The NAL unit type indicates and defines how the NAL unit should be parsed and decoded. The VCL NAL unit provides information about the picture type of the current picture. The NAL unit types of the current version of the VVC draft are shown in Table 3.

[0020] The decoding order is the order in which the NAL units should be decoded, which is the same as the order of the NAL units within the bitstream. The decoding order may be different from the output order, which is the order in which the decoded pictures are to be output (e.g., for display) by the decoder.

[0021] Table 3 – NAL unit types in the current version of the VVC draft

[0022]

[0023]

[0024] Time Layer

[0025] In HEVC and the current version of VVC, all pictures are associated with a TemporalId value that specifies the temporal layer to which the picture belongs. The TemporalId value is decoded from the nuh_temporal_id_plus1 syntax element in the NAL unit header. In HEVC, the encoder needs to set the TemporalId value so that pictures belonging to lower layers can be perfectly decoded when higher temporal layers are discarded. For example, suppose the encoder has output a bitstream using temporal layers 0, 1, and 2. Then removing all layer 2 NAL units or removing all layer 1 and layer 2 NAL units will result in a bitstream that is decoded without problems. This is ensured by restrictions in the HEVC / VVC specifications that the encoder must comply with. For example, pictures of a temporal layer are not allowed to reference pictures of a higher temporal layer.

[0026] 6. Layers, Dependent Layers, and Independent Layers

[0027] A layer is defined in VCC as a collection of VCL NAL units, each with a specific nuh_layer_id value and associated non-VCL NAL units.

[0028] The layer access unit in VVC is defined as a set of NAL units, for which the VCL NAL units all have a specific value of nuh_layer_id, the VCL NAL units are associated with each other according to the specified classification rules, are continuous in decoding order, and contain exactly one coded picture.

[0029] A coded layer video sequence (CLVS) in the current version of VVC is defined as a sequence of layer access units (LAUs) consisting of a CLVS layer access unit, followed by zero or more layer access units that are not CLVS layer access units, including all subsequent layer access units, up to (but not including) any subsequent layer access unit of a CLVS layer access unit, in decoding order.

[0030] exist Figure 5 The relationship between layer access units and coded layer video sequences is shown in .

[0031] In the current version of VVC, layers can be coded independently or in correlation with each other. When layers are coded independently, a layer with, for example, nuh_layer_id 0 may not be able to predict video data from another layer with, for example, nuh_layer_id 1. In the current version of VCC, correlation coding between layers can be used, enabling support for scalable coding with SNR, spatial and view scalability.

[0032] 7. Access Units and Access Unit Separators

[0033] For single-layer coding in HEVC and the current VCC draft, an access unit (AU) is a coded representation of a single picture. An AU can consist of several video coding layer (VCL) NAL units as well as non-VCL NAL units. In the current version of VCC, an access unit must start with an access unit delimiter (AUD) NAL unit, which indicates the start of the access unit and the allowed slice types in the picture, i.e., I, IP, or IPB. In HEVC, it is optional for an AU to start with an AUD. The syntax and semantics of the access unit delimiter NAL unit in the current version of the VCC draft are as follows.

[0034] Table 2 Access Unit Separator Raw Byte Sequence Payload (RBSP) Syntax in the Current Version of the VCC Draft

[0035]

[0036] 7.1 Access Unit Separator RBSP Semantics

[0037] The access unit delimiter is used to indicate the start of an access unit and the slice type present in a coded picture in the access unit containing the access unit delimiter NAL unit. There is no canonical decoding process associated with the access unit delimiter.

[0038] pic_type indicates that the slice_type values ​​of all slices of the coded picture in the access unit containing the access unit delimiter NAL unit are members of the set listed in Table 5 for a given value of pic_type. In bitstreams conforming to this version of this specification, the value of pic_type shall be equal to 0, 1, or 2. Other values ​​of pic_type are reserved for future use by ITU-T | ISO / IEC. Decoders conforming to this version of this specification shall ignore reserved values ​​of pic_type.

[0039] Table 5 – Explanation of pic_type

[0040] pic_type slice_type values ​​that can be present in a coded picture 0 I 1 P,I 2 B,P,I

[0041] 8. Intra-frame random access point (IRAP) pictures and coded video sequences (CVS)

[0042] An intra random access point (IRAP) picture in HEVC is a picture that does not refer to any picture other than itself for prediction during its decoding process. In HEVC, the first picture in the bitstream must be an IRAP picture in decoding order, but IRAP pictures can additionally appear later in the bitstream. HEVC specifies three types of IRAP pictures, broken link access (BLA) pictures, instantaneous decoder refresh (IDR) pictures, and clean random access (CRA) pictures.

[0043] A coded video sequence (CVS) in HEVC is a sequence of access units starting from an IRAP access unit and up to (but not including) the next IRAP access unit in decoding order.

[0044] An IDR picture always starts a new CVS. An IDR picture may have an associated Random Access Decodable Leading (RADL) picture. An IDR picture does not have an associated Random Access Skipped Leading (RASL) picture.

[0045] BLA pictures in HEVC also start a new CVS and have the same effect on the decoding process as IDR pictures. However, BLA pictures in HEVC can contain syntax elements that specify a non-empty set of reference pictures. BLA pictures can have associated RASL pictures, which are not output by the decoder and may not be decodable because they may contain references to pictures that may not exist in the bitstream. BLA pictures can also have associated RADL pictures, which have been decoded. BLA pictures are not defined in the current version of VCC.

[0046] A CRA picture may have an associated RADL or RASL picture. Like a BLA picture, a CRA picture may contain syntax elements that specify a non-empty set of reference pictures. For a CRA picture, a flag can be set to specify that the associated RASL pictures are not output by the decoder, as they may not be decodable because they may contain references to pictures that are not present in the bitstream. A CRA may start a CVS.

[0047] In the current version of the VCC draft, the CVS starts with a CVS start (CVSS) access unit, which may contain an IRAP picture, ie, an IDR or CRA picture, or a progressive decoding refresh (GDR) picture.

[0048] GDR pictures are basically used for random access in the bitstream encoded for low-delay coding, where a complete IRAP picture will cause too much delay. GDR pictures can use progressive intra-frame refresh to update the video picture by picture, where each picture is only partially intra-coded. In the case where the bitstream has been tuned in at the GDR picture, the video will be signaled together with the GDR picture when it is fully refreshed and ready for output. GDR can start a CVS.

[0049] 9.STSA screen

[0050] In HEVC (and in the current VVC draft), there is a picture type called a step-by-step temporal sub-layer access (STSA) picture. There are two types of STSA pictures in HEVC, STSA_R, which is also a reference picture, and STSA_N, which is a non-reference picture. In the current VVC draft, only one type of STSA picture is specified, and it is not distinguished whether the STSA picture is a reference picture or a non-reference picture.

[0051] The STSA picture is intended to indicate a position in the bitstream where a switch from a lower temporal layer to a higher temporal layer can be made. For example, a decoder can decode temporal layer N, which means that all NAL units with a TemporalId equal to or lower than N are decoded, and all NAL units with a TemporalId higher than N are ignored. If there is an STSA picture with a TemporalId of N+1, the decoder is guaranteed to be able to decode that STSA picture and all NAL units following the STSA picture with a TemporalId equal to or lower than N+1 in decoding order.

[0052] 10. Supplemental Enhancement Information (SEI) message

[0053] SEI messages provide information that may be useful to the decoder but is not necessary for the decoding process. The current version of VCC specifies the following SEI messages:

[0054] Table 6 – SEI messages in the current version of VVC

[0055]

[0056]

[0057] 10.1 Related RAP indication SEI messages

[0058] The associated RAP indication SEI message is used to mark a picture as a related random access point (DRAP) picture in the bitstream. The presence of a DRAP indication SEI message indicates the constraints that apply to the picture order and picture references specified in this subclause. These constraints enable a decoder to correctly decode a DRAP picture and the pictures that follow it in decoding order and output order without decoding any other pictures except the associated IRAP picture.

[0059] The constraints indicated by the presence of the DRAP indication SEI message are as follows:

[0060] a) The DRAP picture should be the trailing picture.

[0061] b) A DRAP picture shall have a temporal sublayer identifier equal to 0.

[0062] c) A DRAP picture shall not include any pictures in its active entry in the reference picture list, except the preceding IRAP picture in decoding order.

[0063] d) Any picture that follows a DRAP picture in both decoding order and output order shall not include in its active entry in a reference picture list any picture that precedes the DRAP picture in decoding order or output order, except for the preceding IRAP picture in decoding order.

[0064] In VVC, a reference picture list (RPL) is signaled for the current picture to indicate which previously decoded pictures the decoder should keep for reference, for decoding the current and future pictures. There are two RPLs for each picture. For inter-frame prediction from only one picture (P-prediction), only the first RPL is used, while for inter-frame prediction from two pictures (B-prediction), both the first RPL and the second RPL are used. An active entry in the RPL means that the reference picture in the entry is used to decode the current picture. If the reference picture in the entry is not used to predict the current picture but is used to predict the following picture, the entry should be retained in the RPL, but inactive in the RP of the current picture.

[0065] 11. Parameter Set

[0066] HEVC and VVC specify three types of parameter sets, picture parameter set (PPS), sequence parameter set (SPS) and video parameter set (VPS). PPS contains data common to the entire picture, SPS contains data common to the coded video sequence (CVS), and VPS contains data common to multiple CVSs, such as data from multiple layers in the bitstream.

[0067] The current version of VVC also specifies two additional parameter sets, the Adaptation Parameter Set (APS) and the Decoder Parameter Set (DPS).

[0068] 11.1 Adaptation Parameter Set (APS)

[0069] APS includes a fairly large amount of data compared to other parameter sets. The idea of ​​APS is that certain groups of data in the slice header do not have to be repeated for data that may not change very often between slices and pictures, but is still frequent enough that it does not fit well into SPS or PPS. In the current version of VCC, there are three types of APS. One APS type carries the parameters required for the Adaptive Loop Filter (ALF) coding tool, the second APS type carries the parameters required for the Luma Mapping and Chroma Scaling (LMCS) coding tool, and the third APS type is used to carry scaling list parameters. A scaling list is a list that associates each frequency index with a scaling factor for the scaling process.

[0070] 11.2 Decoding Parameter Set (DPS)

[0071] The DPS specifies information that may not change during a decoding session and that may be beneficial for the decoder to know, such as the maximum number of sub-layers allowed. The information in the DPS is not necessary for the operation of the decoding process.

[0072] The decoder parameter set also contains a set of general constraints for the bitstream, which gives the decoder information about what to expect from the bitstream. In the current version of VCC, general constraint information can also be signaled in the VPS:

[0073] Summary of the invention

[0074] There are certain challenges. For example, in the current version of VCC, it is not possible to indicate in advance whether a NAL unit with a specific NAL unit type can be present in the bitstream. In addition, it is not possible to indicate in advance whether certain SEI messages can be present in the bitstream. The decoder must then be prepared to handle any type of NAL unit type and SEI message. For some of the NAL unit types and SEI messages, if these NAL unit types and SEI messages appear in the bitstream, the decoder may need to consume some resources, such as pre-allocating memory, storing specific data, and parsing specific parts of the bitstream. If these NAL unit types or SEI messages do not appear in the bitstream, these resources have been consumed unnecessarily.

[0075] The present disclosure provides a solution. For example, in a specific embodiment, it is proposed to include a parameter (e.g., a flag) in a parameter set (e.g., DPS, VPS, SPS, or PPS), and the parameter specifies that a segment of type A (e.g., a NAL unit or a SEI message) may or may not be present in the bitstream. Therefore, the flag is an example of segment presence information.

[0076] According to a first aspect of the present disclosure, a method performed by a decoder is provided. The method comprises: receiving a bitstream. The method comprises: processing the received bitstream, wherein: the bitstream comprises a first portion of the bitstream, and the first portion of the bitstream provides fragment presence information, and further, wherein i) the fragment presence information indicates that at least a fragment of a first fragment type should not be present in at least a portion of the bitstream, or ii) the fragment presence information indicates that at least a fragment of the first fragment type may be present in at least a portion of the bitstream.

[0077] According to a second aspect of the present disclosure, a method performed by an encoder is provided. The method includes: generating a bitstream, wherein the bitstream includes a first portion of the bitstream, and the first portion of the bitstream provides segment presence information, and further, wherein i) the segment presence information indicates that at least a segment of a first segment type should not be present in at least a portion of the bitstream, or ii) the segment presence information indicates that at least a segment of the first segment type may be present in at least a portion of the bitstream.

[0078] According to a third aspect of the present disclosure, a computer program is provided, comprising instructions, which, when executed by a processing circuit, cause the processing circuit to perform the method of any one of the first aspect or the second aspect.

[0079] According to a fourth aspect of the present disclosure, there is provided a carrier, comprising the computer program according to the third aspect, wherein the carrier is one of an electronic signal, an optical signal, a radio signal and a computer-readable storage medium.

[0080] According to a fifth aspect of the present disclosure, a decoding device is provided, which is suitable for executing the method according to the first aspect.

[0081] According to a sixth aspect of the present disclosure, there is provided an encoding device suitable for executing the method according to the second aspect.

[0082] advantage

[0083] Information about whether a segment of type A (e.g., NAL unit, SEI message, etc.) may be present in the bitstream (segment presence information) is useful for the decoder to know that, for example, it does not have to allocate memory that will not be used anyway, or it does not have to parse certain parts of the bitstream. Therefore, the advantage is that the decoder does not allocate resources for NAL unit types, picture types, and SEI messages that may not appear in the bitstream.

[0084] For example, if the decoder knows that there are no expected STSA pictures in the bitstream, there is no need to store the PPS or even scan the temporal layers for STSA pictures. Higher layers that are not decoded can simply be ignored. Another example is the DRAP SEI message. If the decoder knows that it will not encounter any DRAP SEI messages in the bitstream, there is no need to store IRAP pictures for a channel that it may want to tune to later using DRAP pictures. BRIEF DESCRIPTION OF THE DRAWINGS

[0085] Figure 1 A system according to an embodiment is shown.

[0086] Figure 2 is a schematic block diagram of a video encoder according to one embodiment.

[0087] Figure 3 is a schematic block diagram of a video decoder according to an embodiment.

[0088] Figure 4 An encoded video bitstream according to an embodiment is shown.

[0089] Figure 5 The relationship between layer access units and coded layer video sequences is shown.

[0090] Figure 6 is a flowchart illustrating a video decoding process according to an embodiment.

[0091] Figure 7 is a flowchart illustrating a video encoding process according to an embodiment.

[0092] Figure 8 is a block diagram of an apparatus according to an embodiment. DETAILED DESCRIPTION

[0093] Figure 1 A system 100 is shown according to an example embodiment. The system 200 includes an encoder 202 in communication with a decoder 204 via a network 110 (e.g., the Internet or other network). Deblocking may be performed in both the encoder 202 and the decoder 204. The embodiments described herein may be used in either the video encoder 102 or the video decoder 104.

[0094] Figure 21 is a block diagram of a video encoder 102 according to one embodiment. The current pixel block is predicted by performing motion estimation from a pixel block already provided in the same frame or a previous frame using a motion estimator 250. In the case of inter-frame prediction, the result of the motion estimation is a motion or displacement vector associated with a reference block. The motion compensator 250 can use the motion vector to output an inter-frame prediction of the pixel block. The intra-frame predictor 249 calculates the intra-frame prediction of the current pixel block. The output of the motion estimator / compensator 250 and the intra-frame predictor 249 is input to a selector 251, which selects intra-frame prediction or inter-frame prediction for the current pixel block. The output of the selector 251 is input to an error calculator in the form of an adder 241, which also receives the pixel values ​​of the current pixel block. The adder 241 calculates and outputs a residual error as the pixel value difference between the pixel block and its prediction. The error is transformed in a transformer 242 (e.g., by a discrete cosine transform), quantized by a quantizer 243, and then encoded in an encoder 244 (e.g., by an entropy encoder). In inter-frame coding, the estimated motion vector is also taken to the encoder 244 to generate an encoded representation of the current pixel block. The residual error of the transformation and quantization of the current pixel block is also provided to the inverse quantizer 245 and the inverse transformer 246 to obtain the original residual error. The adder 247 adds the error to the block prediction output of the motion compensator 250 or the intra-frame predictor 249 to create a reference pixel block that can be used for prediction and coding of the next pixel block. The new reference block is first processed by the deblocking filter 200. The processed new reference block is then temporarily stored in the frame buffer 248, which can be used for the intra-frame predictor 249 and the motion estimator / compensator 250.

[0095] Figure 336 is a block diagram of a video decoder 104 according to some embodiments. The decoder 104 includes a decoder 361 (e.g., an entropy decoder) to decode the encoded representation of the pixel block, thereby obtaining a set of quantization and transformation residual errors. These residual errors are dequantized by an inverse quantizer 362 and inversely transformed by an inverse transformer 363 to provide a set of residual errors. An adder 364 adds these residual errors to the pixel values ​​of the reference pixel block. A motion estimator / compensator 367 or an intra-frame predictor 366 determines the reference block depending on whether inter-frame or intra-frame prediction is performed. Thus, a selector 368 is interconnected to the adder 364 and the motion estimator / compensator 367 and the intra-frame predictor 366. The resulting decoded pixel block output from the adder 364 is input to the deblocking filter 300. The filtered pixel block is output from the decoder 104 and may also be temporarily provided to a frame buffer 365 to be used as a reference pixel block for a subsequent pixel block to be decoded. The frame buffer 365 is thus connected to the motion estimator / compensator 367 to make the stored pixel blocks available to the motion estimator / compensator 367. The output of the adder 364 may also be input to the intra predictor 366 to be used as an unfiltered reference pixel block.

[0096] Figure 4 An example of a portion of a video bitstream 400 is shown. The example bitstream portion 400 includes a CVS 401 including non-VCL NAL units containing parameter sets (PS) and a plurality of VCL NAL units. VCL NAL units 412a and 412b are shown.

[0097] The term "segment" in this disclosure is used broadly to cover not only NAL units but also messages (eg, SEI messages). It should be understood by those skilled in the art that the following embodiments can be combined to form solutions that are not explicitly defined but are still covered by this disclosure.

[0098] 1. The NAL unit type and / or SEI message type are signaled in the parameter set

[0099] In this embodiment, the parameter set comprises a parameter (also called a codeword) (ie a set of one or more bits) which specifies whether a segment of segment type A may be present in the bitstream. Thus, the parameter is an example of segment presence information.

[0100] In one version of this embodiment, the parameter is a flag (i.e., a one-bit value) and if the parameter has a first value, such as 0, then no segments of segment type A should be present in the bitstream. If the parameter has a second value, such as 1, then segments of segment type A may be present in the bitstream. This is illustrated by the following syntax and semantics (where the parameter is a flag):

[0101] Table 7

[0102]

[0103] In another version of this embodiment, if the parameter has a first value, such as 0, segments of segment type A may be present in the bitstream. If the flag has a second value, such as 1, segments of segment type A shall not be present in the bitstream. This is illustrated by the following syntax and semantics (where the parameter is a flag):

[0104] Table 8

[0105]

[0106] In one version, the decoder determines whether the bitstream is valid or invalid based on the parameter value and the segment type of the decoded type. For example, in one embodiment, if a segment of type A is present in the bitstream, but the parameters in the parameter set specify that a segment of the segment type should not be present, the decoder will declare the bitstream invalid. If the bitstream is determined to be invalid, the decoder may interpret this as bit errors or data loss, or that the bitstream and / or encoder are non-compliant and report an error, perform error concealment, or perform error concealment or take other action based on the knowledge that the bitstream is non-compliant.

[0107] For this embodiment, a decoder may perform a subset or all of the following steps to decode one or more pictures from a bitstream, wherein the bitstream includes at least one parameter set and one or more segments following the parameter set in decoding order, wherein each segment has a segment type:

[0108] 1) Decode a value from a codeword in a parameter set in a bitstream (the value is referred to as an “indicator value”), and then determine whether a segment of a segment type A in a segment type set S can be present in the bitstream, or whether a segment of a segment type A in a segment type set S should not be present in the bitstream, based on the indicator value. Therefore, the indicator value is an example of segment presence information.

[0109] 2) Detecting the presence of a segment of segment type T in the bitstream (eg, detecting a codeword in the bitstream indicating that a segment of segment type T is present in the bitstream).

[0110] 3) Based on the indicator value and the decoded slice type T, determine whether the bitstream is valid or invalid.

[0111] 4) Determining that the bitstream is invalid by determining that the segment type T is equal to the segment type A and the indicator value specifies that segments of the segment type A in the segment type set S should not be present in the bitstream.

[0112] 5) If the bitstream is determined to be invalid, interpret it as bit errors, data loss, or bitstream and / or encoder non-conformance and report the error, perform error concealment, or perform error concealment or take other actions based on the knowledge that the bitstream is non-conformant.

[0113] For this embodiment, the encoder may perform a subset or all of the following steps to encode one or more pictures into a bitstream, where the bitstream will include at least one parameter set and one or more segments following the parameter set in decoding order, where each segment has a segment type:

[0114] 1) Encode an indicator value in a codeword in a parameter set in the bitstream, which specifies whether any slice of slice type A may or should not be present in the bitstream.

[0115] 2) If the indicator value specifies that segments of segment type A should not be present in the bitstream, then any segments of segment type A are not included in the bitstream, otherwise segments of segment type A may be included in the bitstream.

[0116] Alternatively, the encoder may perform a subset or all of the following steps of this embodiment to encode one or more pictures into a bitstream:

[0117] 1) Obtain a slice type list including at least one element, the element identifying at least one slice type as not used in the bitstream.

[0118] 2) For at least one segment type identified as unused in the list, an indicator value is encoded in a codeword in a parameter set in the bitstream, the indicator value specifying that segments of the unused segment type should not be present in the bitstream.

[0119] 3) In case the list contains an element identifying at least one segment type as possibly used in the bitstream, encoding an indicator value into a codeword in a parameter set in the bitstream, the indicator value specifying that segments of the possibly used segment type may be present in the bitstream.

[0120] Alternatively, the encoder may loop through the list of segment types and, for each segment type, compare the type to a set of segment types that may or may not be used. For segment types that may be used in the list, the encoder encodes the corresponding codeword in the parameter set using a value that specifies that the segment type may be used. For segment types that will not be used in the list, the encoder encodes the corresponding codeword in the parameter set using a value that specifies that the segment type should not be used.

[0121] 2. Type Grouping

[0122] In another embodiment, a parameter in the parameter set specifies a set of segment types that may or may not be present in the bitstream, wherein the set includes at least one type. In a version of this embodiment, if the parameter has a first value, such as 0, segments of segment types A, B, ..., or N should not be present in the bitstream. If the flag has a second value, such as 1, segments of segment types A, B, ..., or N may be present in the bitstream.

[0123] Following is example syntax and semantics for this embodiment.

[0124] Table 9

[0125]

[0126] In another version of this embodiment, if the parameter has a first value, such as 0, then segments of segment types A, B, ..., and N may be present in the bitstream. If the flag has a second value, such as 1, then segments of segment types A, B, ..., and N should not be present in the bitstream. The following is an example syntax and semantics of embodiment 2 extending the second example of embodiment 1.

[0127] Table 10

[0128]

[0129] 3. Details of NAL unit types

[0130] In this embodiment, the fragments are NAL units, and for NAL units it is further described which NAL unit types' presence may be signaled in a parameter set according to any of the previous embodiments.

[0131] Potentially the presence of any NAL unit type listed in Table 11 can be signaled in a parameter set. In addition, the presence of any future NAL unit type can also be signaled in a parameter set.

[0132] Below is example syntax and semantics for NAL unit types used in the current version of VCC for which it makes the most sense to signal their presence in the bitstream in a parameter set.

[0133] Table 11

[0134]

[0135]

[0136] It may be useful for a decoder to be aware of the potential presence or absence of certain NAL units of the above NAL unit types for the reasons listed in Table 12 below:

[0137] Table 12

[0138]

[0139]

[0140] In an alternative version, some of the above NAL unit types are grouped. The following syntax and semantics further illustrate this.

[0141] Table 13

[0142]

[0143] 4. Details of SEI message types

[0144] In this embodiment, the fragments are SEI messages, and it is further described with respect to SEI messages which SEI message types' presence may be signaled in a parameter set according to any of the previous embodiments.

[0145] The presence of any SEI message type listed in Table 14 or any SEI message defined in HEVC can potentially be signaled in a parameter set. In addition, the presence of any future SEI message types (some of which may be copied from HEVC) may be signaled in a parameter set.

[0146] The following are example syntax and semantics for two of the SEI message types in the current version of VCC:

[0147] Table 14

[0148]

[0149] It may be useful for a decoder to know that there are no DRAP SEI messages in the bitstream. For example, if the decoder wants to be able to tune into a separate channel that is not currently being decoded, the decoder can do so if a DRAP picture is present, storing the latest IRAP picture to be able to tune in faster at the DRAP picture. However, if the decoder knows that a DRAP picture is not present in the bitstream, the decoder does not need to store the latest IRAP picture for the separate channel, and can wait for the next IRAP picture when it wants to tune in.

[0150] In an alternative version, the parameter set may include a no_rap_constraint_flag parameter with the following semantics:

[0151] no_rap_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that NAL units of NAL unit type IDR_W_RADL, IDR_N_LP, CRA_NUT, or GRA_NUT shall not be present in the bitstream except for the current access unit. A further requirement for bitstream conformance is that associated random access point indication SEI messages shall not be present in the bitstream. no_rap_constraint_flag is equal to 0, imposing no constraint.

[0152] 5. Parameter set details

[0153] In this embodiment it is further defined what a parameter set may be, wherein the presence of a slice type in the bitstream is signaled.

[0154] In one version, the parameter set is the DPS. In another version, the parameter set is the VPS. In one version, the presence of a segment type is signaled in the general_constraint_info() structure, which in the current version of VCC can be present in both the DPS and the VPS. In the other two versions, the parameter set is the SPS or PPS, respectively. In another version, the parameter set is an entity, box or field signaled at the system layer, such as specified in DVB, ATSC, ISOBMFF, DASH or MMT.

[0155] 6. Signaling which temporal sublayers may have NAL unit types

[0156] In one embodiment, a parameter set identifies one or more temporal sub-layers in which segments with segment type A may or may not be present. For example, in one example, a parameter set indicates that NAL units with NAL unit type A (e.g., STSA_NUT) may only be present in temporal sub-layer 1 in the bitstream and should not be present in temporal sub-layers higher than 1.

[0157] 7. Signaling which layers (e.g., scalable layers) may have NAL unit types

[0158] In one embodiment, the parameter set identifies one or more layers where segments with segment type A may or should not be present. For example, in one example, the parameter set indicates that NAL units with NAL unit type A (e.g., STSA_NUT) may only be present in layers 0, 4, and 34 in the bitstream, and should not be present in layers 5, 7, and 23 in the bitstream.

[0159] 8. Third-party specifications mandate that a parameter should or should have a specified value.

[0160] In another embodiment, a third party specification (e.g., DVB or ATSC) mandates that the presence of a segment type is indicated and the parameter signaled in the parameter set should or shall have a specified value. For example, DVB or ATSC may specify that the value of no_gdr_constraint_flag should be 1. This may mean that NAL units of NAL unit type GDR_NUT should not be present in the bitstream.

[0161] 9. Bitstream and parameter ranges.

[0162] In one embodiment, the term bitstream refers to a portion of the entire bitstream, where a segment refers to a parameter set containing a parameter. In HEVC and VCC, the entire bitstream may be a continuous sequence of one or more CVSs followed by an end-of-bitstream NAL unit. For example, if a parameter is present in a DPS or VPS, the bitstream may include only those CVSs that refer to the DPS or VPS, respectively, containing the parameter.

[0163] In another embodiment, the parameters are present in an SPS and the bitstream comprises only a single CVS that references this SPS.Alternatively, in this case, the bitstream consists of those CVSs that reference the DPS or VPS that the SPS references.

[0164] In other embodiments, the parameters are present in the PPS and the bitstream consists of one of: 1) those segments (or NAL units) that reference the PPS; 2) those CVSs in which the PPS is present or activated; 3) those CVSs that reference the DPS referenced by the PPS; 4) those CVSs that reference the VPS referenced by the PPS.

[0165] The term "bitstream" in the present disclosure may have any meaning explained in the above embodiments.

[0166] 10. Overwrite

[0167] In another embodiment, the indicator value may change in future portions of the entire bitstream, so that, for example, the indicator indicates that a particular NAL unit type may be present in a portion of the bitstream and that the particular NAL unit type may not be present in a later portion of the bitstream. In this embodiment, the indicator value applies to a portion of the bitstream until the indicator is overwritten or set to a new value, and the new value of the indicator applies from that point in the bitstream.

[0168] In a variation of this embodiment, the indicator values ​​may be overwritten during sub-bitstream extraction or merging, such that the resulting bitstream may or may not have one or a set of specific NAL unit types, and the indicator values ​​in the resulting bitstream may be defined based on one or more indicator values ​​in one or more original bitstreams.

[0169] 11. Multi-value indicators

[0170] In another embodiment, the indicator value may be determined according to a set of two or more bits (i.e., having more than two values, such as three values). For example, in the case where the indicator value is determined by two or more bits included in the decoding parameter set, the indicator value may have any one of the following values: 0, 1, 2, and 3. One such indicator value (e.g., 0) may indicate that a particular NAL unit type may be present in the bitstream, another such value (e.g., 1) may indicate that the particular NAL unit type may not be present in the bitstream, and a third such value (e.g., 2) may indicate that a particular NAL unit type should be present in the bitstream.

[0171] 12. Conditional Indicators

[0172] In another embodiment, a first one or more bit sets (e.g., a one-bit flag) are signaled in a parameter set, and a value of the first bit set, together with one or more values ​​of one or more other parameters in the same parameter set or other parameter sets in the bitstream, specifies whether segments of segment type A may be present in the bitstream. In one example, the indicator specifies whether segments of segment type A may be present in the bitstream only when the value of parameter P in the SPS is equal to 1.

[0173] Figure 8 800 is a block diagram of an apparatus 800 for implementing the video encoder 102 or the video decoder 104 according to some embodiments. That is, the apparatus 800 is operable to perform the process 600 and / or the process 700. In embodiments where the apparatus 800 implements the video encoder 102, the apparatus 800 may be referred to as an "encoding apparatus 800", and in embodiments where the apparatus 800 implements the video decoder 104, the apparatus 800 may be referred to as a "decoding apparatus 800". Figure 8As shown, the device 800 may include: a processing circuit (PC) 802, which may include one or more processors (P) 855 (e.g., a general-purpose microprocessor and / or one or more other processors, such as an application-specific integrated circuit (ASIC)), a field-programmable gate array (FPGA), etc.), which may be co-located in a single housing or a single data center, or may be geographically distributed (i.e., the device 800 may be a distributed computing device); a network interface 848, including a transmitter (Tx) 845 and a receiver (Rx) 847, for enabling the device 800 to send data to and receive data from other nodes connected to a network 110 (e.g., an Internet Protocol (IP) network), the network interface 848 being connected (directly or indirectly) to the network 110 (e.g., the network interface 848 may be wirelessly connected to the network 110, in which case the network interface 848 is connected to an antenna device); and a local storage unit (also referred to as a "data storage system") 808, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments where the PC 802 includes a programmable processor, a computer program product (CPP) 841 may be provided. The CPP 841 includes a computer readable medium (CRM) 842 storing a computer program (CP) 843, which includes computer readable instructions (CRI) 844. The CRM 842 may be a non-transitory computer readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, a storage device (e.g., a random access memory, a flash memory), etc. In some embodiments, the CRI 844 of the computer program 843 is configured such that when executed by the PC 802, the CRI causes the apparatus 800 to perform the steps described herein (e.g., the steps described herein with reference to the flowcharts). In other embodiments, the apparatus 800 may be configured to perform the steps described herein without requiring code. That is, for example, the PC 802 may consist solely of one or more ASICs. Thus, the features of the embodiments described herein may be implemented in hardware and / or software.

[0174] Although various embodiments (including appendices) are described herein, it should be understood that they are presented by way of example only and not by way of limitation. Therefore, the breadth and scope of the present disclosure should not be limited by any of the above exemplary embodiments. In addition, unless otherwise stated herein or clearly contradictory to the context, any combination of the above elements in all possible variations thereof is encompassed in the present disclosure.

[0175] Furthermore, although the processes described above and shown in the accompanying drawings are shown as a sequence of steps, this is for illustration only. Therefore, it is contemplated that some steps may be added, some steps may be omitted, the order of the steps may be rearranged, and some steps may be performed in parallel.

[0176] Abbreviation

[0177] ATSC Advanced Television Systems Committee

[0178] AU Access Unit

[0179] AUD Access Unit Delimiter

[0180] ALF Adaptive Loop Filter

[0181] APS Adaptive Parameter Set

[0182] BLA Down Link Access

[0183] CLVS Coding Layer Video Sequence

[0184] CRA Completely Random Access

[0185] CVS encoded video stream

[0186] CVSS CVS Launch

[0187] CU Coding Unit

[0188] Dynamic Adaptive Streaming over DASH HTTP

[0189] DPS Decoding Parameter Set

[0190] DVB Digital Video Broadcasting

[0191] DRAP Dependent Random Access Point

[0192] GDR Progressive Decode Refresh

[0193] HEVC High Efficiency Video Coding

[0194] IDR Instantaneous Decode Refresh

[0195] IRAP Intra-frame random access point

[0196] ISO International Organization for Standardization

[0197] ISOBMFF ISO Base Media File Format

[0198] LMCS Luma Mapping and Chroma Scaling

[0199] MPEG Moving Picture Experts Group

[0200] MMT MPEG Media Transport

[0201] NAL Network Abstraction Layer

[0202] NALU NAL unit

[0203] NUT NAL unit type

[0204] PPS Picture Parameter Set

[0205] RADL Random Access Decodable Preamble

[0206] RAP Random Access Point

[0207] RASL Random Access Skip Preamble

[0208] RBSP Raw Byte Sequence Payload

[0209] RPL Reference Picture List

[0210] SEI Supplementary Enhancement Layer

[0211] SPS Sequence Parameter Set

[0212] STSA Stepwise Temporal Layer Access

[0213] VCL Video Coding Layer

[0214] VPS Video Parameter Set

[0215] VVC General Video Coding

[0216] appendix

[0217] The following text comes from contributions that propose changes to the current version of VCC.

[0218] Start Text

[0219] summary

[0220] This contribution proposes to signal in the general_constraint_info() structure in the DPS and VPS that some of the NAL unit types are potentially present in the bitstream. In addition, it is proposed to signal in the general_constraint_info() structure that DRAP pictures are potentially present in the bitstream. In the first option, the following constraint flags are proposed:

[0221] -no_trail_constraint_flag

[0222] -no_stsa_constraint_flag

[0223] -no_rasl_constraint_flag

[0224] -no_radl_constraint_flag

[0225] -no_idr_constraint_flag

[0226] -no_cra_constraint_flag

[0227] -no_gdr_constraint_flag

[0228] -no_aps_constraint_flag

[0229] -no_dependent_rap_indication_sei_constraint_flag

[0230] In the second, more streamlined option, constraint flags are proposed only for the NAL units and picture types that the proposer claims are most useful. Another difference compared to the first option is the grouping of no_idr_constraint_flag and no_cra_constraint_flag into no_irap_constraint_flag. The following constraint flags are proposed in the second option:

[0231] -no_stsa_constraint_flag

[0232] -no_irap_constraint_flag

[0233] -no_gdr_constraint_flag

[0234] -no_aps_constraint_flag

[0235] -no_dependent_rap_indication_sei_constraint_flag

[0236] It is proposed to add one of option 1 or option 2 to the VCC specification, or a mix of both.

[0237] 1 Introduction

[0238] The current version of VCC provides for signaling a set of constraints in the general_constraint_info() structure of the DPS and / or VPS. The constraints inform the decoder of its expectations for the bitstream, including whether certain coding tools are supported in the bitstream, the maximum bit depth and chroma format of the bitstream, etc. Given these constraints, the decoder can then adapt the allocation and use of resources. However, these constraints do not include any information about the NAL unit types that can be expected in the bitstream. Here are some examples that may be useful when the decoder knows that certain NAL unit types will not be present in the bitstream:

[0239] - If it is known that STSA pictures will not be present in the bitstream, the decoder does not need to scan higher temporal sub-layers than what it is currently decoding, and does not need to store any PPS or APS in the higher sub-layers that might otherwise be needed when switching up at a STSA picture.

[0240] - If it is known that apart from the first access unit, no CRA or IDR pictures will be present in the bitstream, the decoder can conclude that there may not be any bitrate spikes coming from IRAP pictures and can adapt its output timing accordingly.

[0241] - If it is known that GDR pictures will not be present in the bitstream, the decoder does not need to generate any unusable pictures to decode the stream (it is well known that CRA random access can be done without generating unusable pictures, since any RASL pictures are discarded).

[0242] - If it is known that no APS exists in the bitstream, the decoder does not need to allocate memory to store any potential APS.

[0243] - It may be useful for a decoder to know that no DRAP SEI messages are present in the bitstream. For example, if a decoder wants to be able to switch from one broadcast channel to another channel that is not currently being decoded, the decoder may store the latest IRAP picture of the other channel, in the presence of a DRAP picture, to be able to tune in faster at a later DRAP picture. When switching, the decoder would first decode the stored IRAP picture, followed by the DRAP picture, and then the later picture. However, if the decoder knows that DRAP pictures should not be present in the bitstream, the decoder would not need to store the latest IRAP picture of an individual channel, but would have to wait for the next IRAP picture when it wants to switch to another IRAP picture.

[0244] 2 proposals

[0245] It is proposed to signal the potential presence of certain NAL unit types in the bitstream in the general_constraint_info() structure in the DPS and VPS. In addition, it is proposed to signal the potential presence of DRAP pictures in the bitstream in the general_constraint_info() structure. In the first option, the following constraint flags are proposed:

[0246] -no_trail_constraint_flag

[0247] -no_stsa_constraint_flag

[0248] -no_rasl_constraint_flag

[0249] -no_radl_constraint_flag

[0250] -no_idr_constraint_flag

[0251] -no_cra_constraint_flag

[0252] -no_gdr_constraint_flag

[0253] -no_aps_constraint_flag

[0254] -no_dependent_rap_indication_sei_constraint_flag

[0255] In the second, more streamlined option, constraint flags are proposed only for the NAL units and picture types that the proposer claims are most useful. Another difference compared to the first option is the grouping of no_idr_constraint_flag and no_cra_constraint_flag into no_irap_constraint_flag. The following constraint flags are proposed in the second option:

[0256] -no_stsa_constraint_flag

[0257] -no_irap_constraint_flag

[0258] -no_gdr_constraint_flag

[0259] -no_aps_constraint_flag

[0260] -no_dependent_rap_indication_sei_constraint_flag

[0261] It is proposed to add one of option 1 or option 2 to the VCC specification, or a mix of both.

[0262] 2.1 Proposed changes to VCC specifications

[0263] The proposed changes over the current VCC draft (JVET-O2001vE) for Option 1 and Option 2 are as follows.

[0264] 2.1.1 Option 1

[0265]

[0266] no_trail_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type TRAIL_NUT shall not be present in the bitstream. no_trail_constraint_flag is equal to 0, imposing no constraint.

[0267] no_stsa_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that NAL units of NAL unit type STSA_NUT shall not be present in the bitstream. no_stsa_constraint_flag is equal to 0, imposing no constraint.

[0268] no_rasl_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type RASL_NUT shall not be present in the bitstream. no_rasl_constraint_flag is equal to 0, imposing no constraint.

[0269] no_radl_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that NAL units of NAL unit type RADL_NUT shall not be present in the bitstream. no_radl_constraint_flag is equal to 0, imposing no constraint.

[0270] no_idr_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type IDR_W_RADL or IDR_N_LP shall not be present in the bitstream except for the current access unit. no_idr_constraint_flag is equal to 0, no constraint is imposed.

[0271] no_cra_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type CRA_NUT shall not be present in the bitstream. no_cra_constraint_flag is equal to 0, imposing no constraint.

[0272] no_gdr_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that NAL units of NAL unit type GDR_NUT shall not be present in the bitstream. no_gdr_constraint_flag is equal to 0, imposing no constraint.

[0273] no_aps_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type APS_NUT shall not be present in the bitstream. no_aps_constraint_flag is equal to 0, imposing no constraint.

[0274] no_dependent_rap_indication_sei_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that the associated random access point indication SEI message should not be present in the bitstream. no_dependent_rap_indication_sei_constraint_flag is equal to 0, no constraint is imposed.

[0275] 2.1.2 Option 2 – Lite Version

[0276]

[0277] no_stsa_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that NAL units of NAL unit type STSA_NUT shall not be present in the bitstream. no_stsa_constraint_flag is equal to 0, imposing no constraint.

[0278] no_irap_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type IDR_W_RADL, IDR_N_LP, or CRA_NUT shall not be present in the bitstream except for the current access unit. no_irap_constraint_flag is equal to 0, no constraint is imposed.

[0279] no_gdr_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that NAL units of NAL unit type GDR_NUT shall not be present in the bitstream. no_gdr_constraint_flag is equal to 0, imposing no constraint.

[0280] no_aps_constraint_flag is equal to 1, specifying that the requirement for bitstream conformance is that NAL units of NAL unit type APS_NUT shall not be present in the bitstream. no_aps_constraint_flag is equal to 0, imposing no constraint.

[0281] no_dependent_rap_indication_sei_constraint_flag is equal to 1, specifying that a requirement for bitstream conformance is that the associated random access point indication SEI message should not be present in the bitstream. no_dependent_rap_indication_sei_constraint_flag is equal to 0, no constraint is imposed.

[0282] End text.

Claims

1. A method (600) performed by a decoder (104), the method comprising: receiving a bitstream, wherein the bitstream comprises a first portion of the bitstream; as well as NAL unit presence information is decoded from the first portion of the bitstream, the NAL unit presence information being from a general constraint information syntax element in a DPS, VPS, SPS, or PPS, wherein: i) the NAL unit presence information indicates that NAL units of at least a first NAL unit type should not be present in at least a portion of the bitstream, or ii) the NAL unit presence information indicates that NAL units of at least a first NAL unit type can be present in at least the portion of the bitstream, in, The NAL unit presence information indicates one of the following: i) the portion of the bitstream shall not contain a layer value or a value range of any NAL unit of the first NAL unit type, such that a layer having the layer value or a layer within the value range does not contain any NAL unit of the first NAL unit type, or ii) the portion of the bitstream can contain a layer value or a value range of NAL units of the first NAL unit type, such that a layer having the layer value or a layer within the value range contains a NAL unit of the first NAL unit type.

2. The method according to claim 1, wherein: The NAL unit of the at least first NAL unit type is a VCL NAL unit, an APS NAL unit or an AUD NAL unit.

3. The method according to claim 1, further comprising: determining that the NAL unit presence information indicates that NAL units of the first NAL unit type should not be present in at least the portion of the bitstream; detecting that the portion of the bitstream includes NAL units of the first NAL unit type; as well as As a result of the determining and the detecting, at least the portion of the bitstream is declared invalid.

4. The method according to claim 1, wherein: The NAL unit presence information also indicates one of the following: i) said portion of said bitstream shall not contain a temporal sub-layer value or value range for any NAL unit of said first NAL unit type, or ii) the portion of the bitstream is capable of containing a temporal sub-layer value or value range of a NAL unit of the first NAL unit type, and further, wherein the method further comprises: determining that the NAL unit presence information indicates that the portion of the bitstream should not include a temporal sub-layer value or a value range of any NAL units of the first NAL unit type; detecting that a temporal sub-layer identified by the temporal sub-layer value or value range contains a NAL unit of the first NAL unit type; and As a result of the determining and the detecting, the portion of the bitstream is declared invalid.

5. The method according to claim 1, wherein the method further comprises: determining that the NAL unit presence information indicates that the portion of the bitstream should not include a layer value or a value range of any NAL units of the first NAL unit type; detecting that the layer identified by the layer value or value range contains a NAL unit of the first NAL unit type; as well as As a result of the determining and the detecting, the portion of the bitstream is declared invalid.

6. The method according to claim 1, wherein The first portion of the bitstream includes a first parameter set and a second parameter set, The method further comprises: determining a first value based on information included in the first parameter set, and determining a second value based on information included in the second parameter set, and The NAL unit presence information includes the first value and the second value.

7. The method according to claim 1, wherein said first portion of said bitstream comprising a first parameter set, The method further comprises: determining a first value based on information included in the first parameter set, and determining a third value based on information included in the first parameter set, and The NAL unit presence information includes the first value and the third value.

8. The method according to claim 1, wherein The first part of the bitstream consists of a first parameter set, and The first parameter set includes a bit set, and A bit set included in the first parameter set provides the NAL unit presence information, wherein the bit set consists of a single bit or a sequential bit set in the first parameter set.

9. The method according to claim 2, wherein: The VCL NAL unit includes one of the following: a TRAIL NAL unit, a STSA NAL unit, a RASL NAL unit, a RADL NAL unit, an IDR NAL unit, a CRA NAL unit, and a GDR NAL unit.

10. The method of claim 1, wherein the first NAL unit type is one of the following: TRAIL_NUT, STSA_NUT, RASL_NUT, RADL_NUT, IDR_W_RADL, IDR_N_LP, CRA_NUT, AUD_NUT.

11. The method according to claim 8, wherein: The first parameter set is an entity signaled at the system layer.

12. The method according to claim 8, wherein: The portion of the bitstream consists of NAL units that reference the first parameter set.

13. The method according to claim 12, wherein: The bitstream is a continuous sequence of one or more CVSs, and wherein: The first parameter set is a DPS or a VPS, and the portion of the bitstream comprises only those CVSs that reference the first parameter set; or The first parameter set is an SPS, and the portion of the bitstream comprises only a single CVS that references the SPS; or The first parameter set is an SPS that references a second parameter set, and the portion of the bitstream includes only those CVSs of the second parameter set that are referenced by the SPS.

14. The method according to claim 1, wherein: Decoding the NAL unit presence information from the first portion of the bitstream comprises: - decoding an indicator value from a syntax element in said first part of said bitstream; - in response to the indicator value being equal to a first value, the NAL unit presence information indicating that NAL units of at least a first NAL unit type should not be present in at least a portion of the bitstream; - In response to the indicator value being equal to a second value, the NAL unit presence information indicates that at least NAL units of the first NAL unit type can be present in at least the portion of the bitstream.

15. A method (700) performed by an encoder (102), the method comprising: Generates a bitstream where: The bitstream comprises a first portion of the bitstream, and The first portion of the bitstream includes a DPS, a VPS, an SPS, or a PPS, the DPS, the VPS, the SPS, or the PPS including a general constraint information syntax element providing NAL unit presence information, and further, wherein i) the NAL unit presence information indicates that NAL units of at least a first NAL unit type should not be present in at least a portion of the bitstream, or ii) the NAL unit presence information indicates that NAL units of at least a first NAL unit type can be present in at least the portion of the bitstream, The NAL unit existence information indicates one of the following: i) the portion of the bitstream shall not contain a layer value or a value range of any NAL unit of the first NAL unit type, such that a layer having the layer value or a layer within the value range does not contain any NAL unit of the first NAL unit type, or ii) the portion of the bitstream is capable of containing a layer value or a value range of NAL units of the first NAL unit type, such that a layer having the layer value or a layer within the value range contains a NAL unit of the first NAL unit type, and The bit stream is output.

16. The method according to claim 15, wherein: The NAL unit of the at least first NAL unit type is a VCL NAL unit, an APS NAL unit or an AUD NAL unit.

17. The method according to claim 15, wherein The first part of the bitstream consists of a first parameter set, and The first parameter set includes a bit set, and A bit set included in the first parameter set provides the NAL unit presence information, wherein the bit set consists of a single bit or a sequential bit set in the first parameter set.

18. The method according to claim 16, wherein: The VCL NAL unit includes one of the following: a TRAIL NAL unit, a STSA NAL unit, a RASL NAL unit, a RADL NAL unit, an IDR NAL unit, a CRA NAL unit, and a GDR NAL unit.

19. The method of claim 15, wherein the first NAL unit type is one of the following: TRAIL_NUT, STSA_NUT, RASL_NUT, RADL_NUT, IDR_W_RADL, IDR_N_LP, CRA_NUT, AUD_NUT.

20. The method according to claim 17, wherein: The first parameter set is an entity signaled at the system layer.

21. The method according to claim 17, wherein: The portion of the bitstream consists of NAL units that reference the first parameter set.

22. The method according to claim 21, wherein: The bitstream is a continuous sequence of one or more CVSs, and wherein: The first parameter set is a DPS or a VPS, and the portion of the bitstream comprises only those CVSs that reference the first parameter set; or The first parameter set is an SPS, and the portion of the bitstream comprises only a single CVS that references the SPS; or The first parameter set is an SPS that references a second parameter set, and the portion of the bitstream includes only those CVSs of the second parameter set that are referenced by the SPS.

23. A computer readable storage medium having stored thereon a computer program (843) comprising instructions (844) which, when executed by a processing circuit (802), cause the processing circuit (802) to perform a method according to any one of the preceding claims.

24. A decoding device (800), wherein: The decoding device comprises a processor and a memory, the memory containing instructions, the instructions being executable by the processor such that the decoding device is operable to perform the method according to any one of claims 1-14.

25. An encoding device (800), wherein: The encoding device comprises a processor and a memory, the memory containing instructions executable by the processor such that the encoding device is operable to perform a method according to any one of claims 15-22.