Determining a capability to decode a first picture in a video bitstream
Patent Information
- Application Number
- CN202180041065.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-08
- Filing Date
- 2021-06-07
- Publication Date
- 2026-10-09
- Estimated Expiration
- 2041-06-07
AI Technical Summary
[0101]当前版本的VVC规范的一个问题是:符合Main 10静态图片(Still Picture)配置文件但不符合Main 10配置文件的解码器将无法解码从Main 10视频比特流中提取的IRAP图片,除非所提取的比特流的SPS中的general_profile_idc首先被重写
[0104] The advantage of this approach is that it eliminates the need to rewrite the Main 10 bitstream so that the Main 10 Still Picture decoder can decode an image from the Main 10 bitstream.
Smart Images

Figure CN116018808B_ABST
Abstract
Description
Technical Field
[0001] This application relates to methods and apparatus for video encoding and decoding. Background Technology
[0002] HEVC and VVC
[0003] High-Efficiency Video Coding (HEVC) is a block-based video codec standardized by ITU-T (the Telecommunication Standardization Sector of the International Telecommunication Union) and MPEG (Moving Picture Experts Group). This codec utilizes both temporal and spatial prediction. Spatial prediction is achieved using intra-frame (I) prediction from within the current frame. Temporal prediction is achieved using one-way (P) or two-way (B) inter-frame prediction at the block level, based on a previously decoded reference frame. In the encoder, the difference between the raw pixel data and the predicted pixel data (called the residual) is transformed to the frequency domain, quantized, and then entropy-encoded (before being sent along with necessary prediction parameters, such as prediction modes 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-frame or inter-frame prediction to reconstruct the image.
[0004] MPEG and ITU-T are working on a successor to HEVC within the Joint Video Exploration Group (JVET). The video codec under development is called Multi-Functional Video Coding (VVC). The current version of the VVC specification is JVET-S0152-v5.
[0005] Quantity
[0006] A video sequence comprises a series of images, each containing one or more components. Each component can be described as a two-dimensional rectangular array of sample values. Typically, images in a video sequence typically include three components: a luminance component Y, where the sample values are luminance values; and two chrominance components Cb and Cr, where the sample values are chrominance values. Typically, the size of the chrominance components is half that of the luminance components in each dimension. For example, the luminance component of a high-definition (HD) image would be 1920x1080, while the chrominance components would each have a size of 960x540. The chrominance components are sometimes referred to as color components.
[0007] Blocks and Units
[0008] A block is a two-dimensional array of samples. In video coding, each component is divided into blocks, and the encoded video bitstream consists of a series of blocks. Typically, in video coding, an image is divided into units that cover specific regions of the image. Each unit comprises all blocks from all components that make up that specific region, and each block belongs to one unit. Macroblocks in H.264 and coding units (CUs) in High Efficiency Video Coding (HEVC), as well as the current version of VVC, are examples of units. CUs can be recursively subdivided into smaller CUs. The CUs at the top level are called coding tree units (CTUs).
[0009] A block can alternatively be defined as a two-dimensional array to which a transform for encoding has been applied. These blocks are referred to as "transform blocks". Alternatively, a block can be defined as a two-dimensional array to which a single prediction pattern has been applied. These blocks can be referred to as "prediction blocks". In this application, the term "block" is not associated with any particular definition among these definitions, as the description herein can be applied to either definition.
[0010] NAL unit
[0011] Both HEVC and VVC define a Network Abstraction Layer (NAL). All data (i.e., both Video Coding Layer (VCL) and non-VCL data in HEVC and VVC) is encapsulated in NAL units. VCL NAL units contain data representing image sample values. Non-VCL NAL units contain additional related data, such as parameter sets and Supplemental Enhancement Information (SEI) messages. NAL units in HEVC and the current version of VVC begin with a header called the NAL unit header. The syntax for the NAL unit header in HEVC and the current version of VVC begins with a forbidden_zero_bit, which should always be equal to 0 to prevent the start of code emulation. Without this forbidden_zero_bit, some MPEG systems might confuse HEVC and VVC video bitstreams with other data, but the 0 bit in the NAL unit header makes all possible HEVC and VVC bitstreams uniquely identifiable as either HEVC or VVC bitstreams. The codewords `nal_unit_type`, `nuh_layer_id`, and `nuh_temporal_id_plus1` specify the NAL unit type of the NAL unit. This NAL unit type identifies the type of data carried in the NAL unit, as well as the layer ID and time 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 (as shown in Table 1) is very similar to the NAL unit header in HEVC, but `nal_unit_type` uses one less bit, reserving that bit for future use.
[0012] The remaining bytes of a NAL unit are the payload of the type indicated by the NAL unit type. The bitstream consists of a series of concatenated NAL units.
[0013]
[0014] Table 1 – VVC NAL Unit Header Syntax
[0015] After examining the NAL unit header, the decoder or bitstream parser can determine how the NAL unit should be processed (e.g., parsed and decoded). The remaining bytes of the NAL unit are the payload of the type indicated by the NAL unit type. The bitstream consists of a series of concatenated NAL units.
[0016] The decoding order is the order in which NAL units should be decoded, and this order is the same as the order of NAL units within the bitstream. The decoding order may differ from the output order, which is the order in which the decoder outputs decoded images, for example, for display.
[0017] The NAL unit type indicates and defines how NAL units should be parsed and decoded. The VCL NAL unit provides information about the image type of the current image. The NAL unit types in the current version of the VVC draft are shown in Table 2.
[0018]
[0019]
[0020]
[0021] Table 2 – NAL Unit Types in the Current Version of the VVC Draft
[0022] Time layer
[0023] In HEVC and the current draft of VVC, all images are associated with a TemporalId value, which specifies the temporal layer to which the image 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 images belonging to lower time layers can be perfectly decoded when higher time layers are discarded. For example, suppose the encoder has already output a bitstream using time layers 0, 1, and 2. Then removing all level 2 NAL units or removing all level 1 and level 2 NAL units will result in the bitstream being decoded without any problems. This is ensured by the restrictions in the HEVC and VVC specifications that the encoder must adhere to. For example, images in a time layer are not allowed to reference images in higher time layers.
[0024] Image unit, access unit, and access unit delimiter
[0025] In the current version of VVC, a Picture Unit (PU) is defined as a collection of NAL units. These VCL NAL units belong to the same layer, are related to each other according to specified classification rules, are sequential in decoding order, and contain exactly one encoded picture. In previous versions of VVC, PUs were called Layer Access Units. In HEVC, PUs are called Access Units (AUs).
[0026] In VVC, an access unit is a collection of PUs that belong to different layers and contain encoded pictures that are associated with the same time (i.e., have the same POC value) for output from the decoded picture buffer (DPB).
[0027] In the current version of VVC, access units can begin with an Access Unit Delimiter (AUD)NAL unit, which indicates the start of the access unit, the allowed slice type in the encoded picture (i.e., I, IP, or IPB), and whether the access unit is an IRAP or GDR access unit. In HEVC, starting access units with AUD is optional. The syntax and semantics of the Access Unit Delimiter NAL unit in the current VVC draft are shown in Table 3 below.
[0028]
[0029] Table 3 – Access Unit Delimiter RBSP Syntax in the Current Version of the VVC Draft
[0030] An aud_irap_or_gdr_au_flag value of 1 indicates that an AU containing an AU delimiter is an IRAP or GDR AU. An aud_irap_or_gdr_au_flag value of 0 indicates that an AU containing an AU delimiter is not an IRAP or GDR AU.
[0031] The `aud_pic_type` directive indicates that the `sh_slice_type` value for all slices of the coded picture within the AU containing the AU delimiter NAL unit is a member of the set listed in Table 4 for a given value of `aud_pic_type`. The value of `aud_pic_type` in the bitstream should be equal to 0, 1, or 2. Other values for `aud_pic_type` are reserved for future use by ITU-T|ISO / IEC. Decoders conforming to this version of the specification should ignore the reserved values of `aud_pic_type`.
[0032]
[0033] Table 4 – Explanation of aud_pic_type
[0034] Layers – Related Layers and Independent Layers
[0035] In VVC, a layer is defined as a collection of VCL NAL units (each of which has a specific nuh_layer_id value) and associated non-VCL NAL units.
[0036] In the current version of VVC, the Coding Layer Video Sequence (CLVS) is defined as a sequence of PUs, which consist of a CLVS-starting (CLVSS) PU in decoding order, followed by zero or more PUs that are not CLVSS PUs, including all subsequent PUs up to (but not including) any subsequent PUs that are CLVSS PUs.
[0037] The relationship between PU, AU and CLVS is as follows: Figure 1 As shown.
[0038] In the current version of VVC, layers can be encoded independently of each other; that is, for example, a layer with nuh_layer_id of 0 may not be able to predict video data from another layer, for example, with nuh_layer_id of 1. The current version of VVC also allows for inter-layer correlation coding, which supports scalable coding with SNR, spatial, and view scalability.
[0039] Image Sequential Counting (POC)
[0040] In HEVC, images are identified by their Picture Order Count (POC) value (also known as the full POC value). Each slice contains a codeword `pic_order_cnt_lsb`, which should be identical for all slices in the image. `pic_order_cnt_lsb` is also called the least significant bit (LSB) of the full POC because it is a fixed-length codeword and only informs the least significant bit of the full POC. Both the encoder and decoder track the POC and assign POC values to each image being encoded / decoded. `pic_order_cnt_lsb` can be indicative of values from 4 to 16 bits. In HEVC, the variable `MaxPicOrderCntLsb` is used, which is set to the maximum `pic_order_cnt_lsb` value plus 1. This means that if 8 bits are used to inform `pic_order_cnt_lsb`, the maximum value is 255, and `MaxPicOrderCntLsb` is set to 2^8 = 256. The picture order count value of an image is called `PicOrderCntVal` in HEVC. Typically, the current image's PicOrderCntVal is simply referred to as PicOrderCntVal. It is expected that the POC will work in a similar manner in the final version of VVC.
[0041] Intra-Frame Random Access Point (IRAP) Images and Coded Video Sequences (CVS)
[0042] In HEVC, an Intra-Random Access Point (IRAP) picture is a picture that is predicted without referencing any other pictures during its decoding process. The first picture in the bitstream in HEVC's decoding order must be an IRAP picture, but IRAP pictures can also appear later in the bitstream. HEVC specifies three types of IRAP pictures: Broken Link Access (BLA) pictures, Instantaneous Decoder Refresh (IDR) pictures, and Clean Random Access (CRA) pictures.
[0043] In HEVC, the encoded video sequence (CVS) is a sequence of access units that begins with an IRAP access unit, followed by zero or more AUs, until (but not including) the next IRAP access unit in the decoding order.
[0044] IDR images always enable a new CVS. IDR images can have associated random access decodable preamble (RADL) images. IDR images do not have associated random access skip preamble (RASL) images.
[0045] BLA pictures in HEVC also enable the new CVS and have the same impact 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 decodeable because they can 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 VVC.
[0046] CRA images can have associated RADL or RASL images. Like BLA images, CRA images can contain syntax elements that specify a non-empty set of reference images. For CRA images, flags can be set to specify that the associated RASL images are not output by the decoder, as they may be undecodeable (because they may contain references to images that do not exist in the bitstream). CRAs can have CVS enabled.
[0047] In the current version of the VVC draft, CVS is a sequence of access units that begins with a CVS-start (CVSS) access unit, followed by zero or more AUs, until (but not including) the next CVSS access unit in the decoding order. A CVSS access unit can contain an IRAP picture (i.e., an IDR or CRA picture) or a Progressive Decode Refresh (GDR) picture. A CVS can contain one or more CLVSs.
[0048] GDR pictures are essentially used for random access in a bitstream encoded for low-latency coding, where a full IRAP picture would cause excessive latency. GDR pictures can be used with progressive intra-frame refresh, which updates the video picture-by-picture, where each picture is only partially intra-coded. Given a bitstream that is loaded at a GDR picture, the recovery of the POC count is notified using the GDR picture, specifying when the video has been fully refreshed and is ready for output. GDR pictures in VVC can be enabled with CVS or CLVS. GDR pictures are included in the current VVC draft but are not part of the HEVC standard specification, where they are indicated using SEI messages.
[0049] slice
[0050] The concept of slices in HEVC divides an image into independently encoded slices, where decoding one slice of an image is independent of decoding other slices of the same image. In previous versions of the VVC draft specification, slices were called tile groups.
[0051] One purpose of slicing is to enable resynchronization in the event of data loss. In HEVC, a slice is a collection of CTUs. Current versions of VVC also support slicing and can divide VVC images into raster scan slices or rectangular slices. Raster scan slices consist of multiple complete tiles arranged in raster scan order. Rectangular slices consist of a group of tiles that together occupy a rectangular area in the image, or a consecutive number of CTU rows within a tile. Each slice has a slice header that includes syntax elements. When decoding a slice, the slice header value decoded from these syntax elements is used. Each slice is carried in a VCL NAL unit.
[0052] Each slice has a slice type that defines the coding type (i.e., the type of prediction) used by the slice, specifically whether the slice is an intra-predictive coding (I-slice), a one-way predictive coding (P-slice), or a bi-way predictive coding (B-slice). The slice type is indicated by the slice_type syntax element in the slice header, which can have one of the following values from Table 5:
[0053]
[0054] Table 5 – Name association with slice_type
[0055] Images can be composed of slices of different slice types. However, images with a specific `pic_type` value or NAL cell type may be restricted to supporting only I slices or only I and P slices. For example, an image in AUD with IRAP NAL cell type or `pic_type` equal to 0 should contain only I slices, and an image in AUD with `pic_type` equal to 1 can contain only I and P slices, while an image with `pic_type` equal to 2 can contain slices of any slice type (i.e., I slices, P slices, or B slices).
[0056] Table 6 shows the slice header syntax in the current version of VVC that is relevant to understanding the inventive concepts described herein.
[0057]
[0058]
[0059] Table 6 – Slice Header Syntax
[0060] Parameter set
[0061] 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 encoded video sequence (CVS), and VPS contains data common to multiple CVSs (e.g., data from multiple layers in a bitstream).
[0062] The current version of VVC also specifies an additional parameter set, the Adaptive Parameter Set (APS). The APS carries the parameters required for the Adaptive Loop Filter (ALF) tool, the Luminance Mapping and Chroma Scaling (LMCS) tool, and the Scaling List tool.
[0063] Decoding Capability Information (DCI)
[0064] The DCI specifies information that is unlikely to change during the decoding session and may be useful for the decoder to understand (e.g., the maximum number of sublayers allowed). The information in the DCI is not essential for the operation of the decoding process. In previous drafts of the VVC specification, the DCI was referred to as the Decoding Parameter Set (DPS). In this description, the DCI is defined as a parameter set.
[0065] Decoding capability information also includes a set of general constraints on the bitstream, which provide the decoder with the desired bitstream information in terms of encoding tools, NAL unit types, etc. In the current version of VVC, this general constraint information can also be communicated in the VPS or SPS.
[0066] Image header
[0067] In the current version of VVC, encoded pictures include a picture header. The picture header contains syntax elements common to all slices of the related picture. If only one slice exists in the encoded picture, the picture header can be indicated in its own NAL unit with the NAL unit type PH_NUT or included in the slice header. This is indicated by the slice header syntax element picture_header_in_slice_header_flag, where a value of 1 indicates that the picture header is included in the slice header, and a value of 0 indicates that the picture header is carried in its own NAL unit. For CVS where not all pictures are single-slice pictures, each encoded picture must be preceded by a picture header, which is indicated in its own NAL unit. HEVC does not support picture headers.
[0068] Table 7 shows the parts of the image header syntax and semantics relevant to understanding the inventive concepts described herein in the current version of VVC.
[0069]
[0070] Table 7 – Image Header Syntax
[0071] `ph_gdr_or_irap_pic_flag` equal to 1 indicates that the current image is a GDR or IRAP image. `ph_gdr_or_irap_pic_flag` equal to 0 indicates that the current image is not a GDR image, and may or may not be an IRAP image.
[0072] `ph_gdr_pic_flag` equal to 1 indicates that the image associated with `PH` is a GDR image. `ph_gdr_pic_flag` equal to 0 indicates that the image associated with `PH` is not a GDR image. When it does not exist, the value of `ph_gdr_pic_flag` is inferred to be 0. When `sps_gdr_enabled_flag` equals 0, the value of `ph_gdr_pic_flag` should be 0.
[0073] Note 1 – When ph_gdr_or_irap_pic_flag equals 1 and ph_gdr_pic_flag equals 0, the image associated with PH is an IRAP image.
[0074] Configuration files, tiers, and levels
[0075] In HEVC and VVC, configuration files are defined as a specified subset of the standard syntax.
[0076] The current VVC specification includes the Main 10 profile, the Main 10 Still Picture profile, the Main 4:4:4 10 profile, and the Main 4:4:4 10 Still Picture profile. The 10 indicates a bit depth of 10 bits per pixel, and 4:4:4 indicates support for 4:4:4 chroma sampling. Main 10 and Main 4:4:4 10 are video profiles, while Main 10 Still Picture and Main 4:4:4 10 Still Picture profiles are still picture profiles. HEVC also includes these four profiles, as well as several other extended and scalable profiles.
[0077] HEVC and VVC define levels as a defined set of constraints on the possible values that syntax elements and variables in the specification can take. The same set of levels is defined for all configuration files, with most aspects of the definition for each level being common across different configuration files. Within the specified constraints, individual implementations can support different levels for each supported configuration file.
[0078] HEVC and VVC define a level as a specific category of level constraints imposed on the values of syntax elements in a bitstream. Level constraints are nested within levels, and a decoder that conforms to a specific level and grade is able to decode all bitstreams of the same level or lower that conform to that level or any level below that level.
[0079] The Main 10 and Main 10 still picture configuration files are defined in the current version of VVC as follows:
[0080] Main 10 and Main 10 Still Picture Configuration Files
[0081] Bitstreams conforming to Main 10 or Main 10 Still Picture profiles should adhere to the following constraints:
[0082] - In a bitstream that conforms to the Main 10 Still Picture profile, the bitstream should contain only one picture.
[0083] - The sps_chroma_format_idc of the referenced SPS should be equal to 0 or 1.
[0084] - The referenced SPS's sps_bitdepth_minus8 should be in the range of 0 to 2, inclusive.
[0085] - In a bitstream conforming to the Main 10 Still Picture profile, the referenced SPS's max_dec_pic_buffering_minus1[sps_max_sublayers_minus1] should be equal to 0.
[0086] - The sps_palette_enabled_flag of the referenced SPS should be equal to 0.
[0087] - In a bitstream that conforms to the Main 10 profile but not the Main 10 Still Picture profile, for all values of i in the referenced VPS (when available) and the referenced SPS, general_level_idc and sublayer_level_idc[i] should not be equal to 255 (which indicates level 15.5).
[0088] - The hierarchy and level constraints specified for the Main 10 or Main 10 Still Picture configuration file in Section A.4 (where applicable) should be satisfied.
[0089] The bitstream conforms to the Main 10 profile, indicated by general_profile_idc equal to 1.
[0090] The bitstream conforms to the Main 10 Still Picture profile, indicated by general_profile_idc equal to 3.
[0091] Note – The indication condition for the bitstream to conform to the Main 10 profile is also met when the bitstream conforms to the Main 10 Still Picture profile as specified above and the indicated level is not 15.5.
[0092] A decoder conforming to the Main 10 profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0093] - The bitstream is instructed to conform to MAIN 10 or MAIN 10 static picture profile.
[0094] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0095] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0096] A decoder conforming to the Main 10 Still Picture profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0097] - The bitstream is specified to conform to the Main 10 Still Picture profile.
[0098] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0099] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0100] Except that sps_chroma_format_idc can be in the range of 0 to 3, the Main 4:4:4 10 and Main 4:4:4 10 Still Picture profiles in VVC are specified in a similar way to the Main 10 and Main 10 Still Picture profiles. Summary of the Invention
[0101] One issue with the current version of the VVC specification is that decoders conforming to the Main 10 Still Picture profile but not to the Main 10 profile will be unable to decode IRAP pictures extracted from the Main 10 video bitstream unless the general_profile_idc in the SPS of the extracted bitstream is rewritten first. Rewriting the bitstream to support this feature is undesirable.
[0102] Another problem with the current version of the VVC specification is that even if the `general_profile_idc` is rewritten to a Main 10 Still Picture profile that includes a video bitstream with more than one image, the bitstream will not be a valid bitstream because the Main 10 Still Picture profile requires that the bitstream contain only one image. To decode the first image in the bitstream, all the remaining images will need to be discarded from the bitstream so that it becomes a picture bitstream before decoding.
[0103] According to some embodiments of the inventive concept, a method for determining whether a decoder conforming to a first profile is capable of decoding a first image of a video bitstream conforming to a second profile includes: obtaining an indicator value indicating conformity to the profile. The method includes determining whether the first image in the video bitstream is a still image. The method further includes: in response to an indicator value indicating conformity to the second profile and the first image being determined to be a still image, determining that a decoder conforming to the first profile is capable of decoding the first image of the video bitstream.
[0104] The advantage of this approach is that it eliminates the need to rewrite the Main 10 bitstream so that the Main 10 Still Picture decoder can decode an image from the Main 10 bitstream.
[0105] Another advantage of some versions of the invention concept is that a program that wants to decode the first image of a video bitstream does not have to strip the remaining images before sending the bitstream to a compatible still image decoder.
[0106] In other embodiments of the present invention, decoders, computer programs, and computer program products that include similar operations to the embodiments described above are provided. Attached Figure Description
[0107] The accompanying drawings illustrate certain non-limiting embodiments of the inventive concept. These drawings are included to provide a further understanding of the disclosure and are incorporated in and constitute a part of this application. In the drawings:
[0108] Figure 1 This is a diagram illustrating the relationship between picture units (PU), access units (AU), and coding layer sequences (CLVS);
[0109] Figure 2 This is a block diagram illustrating bitstreams and terminology used to describe various embodiments of the inventive concept;
[0110] Figure 3 This is an example block diagram illustrating a system environment in which encoders and decoders can be implemented according to some embodiments of the present invention;
[0111] Figure 4 This shows a decoder block diagram according to some embodiments;
[0112] Figure 5 This illustrates an encoder block diagram according to some embodiments; and
[0113] Figures 6 to 13 This is a flowchart illustrating the operation of a decoder according to some embodiments of the present invention. Detailed Implementation
[0114] The inventive concept will be described more fully below with reference to the accompanying drawings, which illustrate examples of embodiments of the inventive concept. However, the inventive concept can be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the inventive concept to those skilled in the art. It should also be noted that these embodiments are not mutually exclusive. Components from one embodiment may be assumed by default to be present / used in another embodiment.
[0115] The following description presents various embodiments of the disclosed subject matter. These embodiments are presented as illustrative examples and are not to be construed as limiting the scope of the disclosed subject matter. For example, certain details of the embodiments may be modified, omitted, or expanded without departing from the scope of the subject matter.
[0116] Various embodiments of the present invention provide a method for determining that a video bitstream conforms to a profile A (e.g., a still image profile) if an indicator value (e.g., decoded from syntax elements in a parameter set of the bitstream) indicates that the bitstream conforms to profile B (e.g., a video profile) and it is determined that the first image of the bitstream is a still image (e.g., an IRAP image).
[0117] In one embodiment of the present invention, the first image is determined to be an IRAP image by determining that the NAL cell type of all VCL NAL cells in the first image is IRAP NAL cell type.
[0118] In another embodiment of the present invention, the first image is determined to be an IRAP image based on the value decoded from the syntax element in the image header or access unit delimiter.
[0119] Figure 2 The document also shows the terminology used to describe the inventive concept. Figure 2 The dashed line in the text indicates that this box is optional in VVC. Bitstream 1 carries one or more coded pictures. The set of NAL units associated with the coded pictures in the current version of VVC is referred to as Picture Unit (PU) 2. At the beginning of each coded video sequence (CVS), the VVC bitstream may begin with Decoding Capability Information (DCI) 12, followed by Video Parameter Set (VPS) 13, Sequence Parameter Set (SPS) 14, and Picture Parameter Set (PPS) 15. PPS 14 may also be notified before any coded pictures. PU2 must include at least one coded slice 22, which includes a slice header (SH) 31 and slice data 32. PU2 must include a Picture Header (PH) 21. In the current version of VVC, PH 21 may be notified in its own NAL unit or in the same NAL unit as slice 22 (more specifically, in SH 31). Access Unit Delimiter (AUD) 11 may be notified as the first NAL unit in the access unit.
[0120] Although the inventive concept should be described primarily using the terminology used in VVC, those skilled in the art will understand that the inventive concept can also be applied to other current and future video codecs.
[0121] A "still image" is defined as a single, static picture. Encoded still images are always intra-coded, meaning they are not predicted from any other image besides themselves. This means that all blocks in the image are intra-coded blocks, and there is no data in the encoded still image that uses predictions from any other image. Still images can be extracted from a collection of moving images, i.e., from a video.
[0122] A predicted image is defined as an encoded image that is predicted from another image other than itself.
[0123] The term "external means" is defined as information that is not provided in the bitstream but is provided through some other means (e.g., via metadata that may be provided in different data channels, as constants in the decoder, etc.). Both HEVC and VVC allow certain information (e.g., parameter sets) to be provided externally.
[0124] Before describing the embodiments in more detail, Figure 3 An example of the operating environment for an encoder 300 and a decoder 306, as described herein, which can be used to encode and decode bitstreams, is shown. The encoder 300 receives video from a network 302 and / or a storage device 304 and encodes the video into a bitstream (as described below), and sends the encoded video to the decoder 306 via a network 308. The storage device 304 may be part of a repository for multi-channel audio signals (e.g., a repository for a store or streaming video service, a separate storage component, a component of a mobile device, etc.). The decoder 306 may be part of a device 310 having a media player 312. The device 310 may be a mobile device, a set-top device, a desktop computer, etc.
[0125] Figure 4 This is a block diagram illustrating the elements of a decoder 306 configured to decode video frames according to some embodiments of the present invention. As shown, the decoder 306 may include network interface circuitry 405 (also referred to as a network interface) configured to provide communication with other devices / entities / functions / etc. The decoder 306 may also include processor circuitry 401 (also referred to as a processor) coupled to the network interface circuitry 405 and memory circuitry 403 (also referred to as a memory) coupled to the processor circuitry. The memory circuitry 403 may include computer-readable program code that, when executed by the processor circuitry 401, causes the processor circuitry to perform operations according to the embodiments disclosed herein.
[0126] According to other embodiments, processor circuitry 401 may be defined to include memory, eliminating the need for separate memory circuitry. As discussed herein, operation of decoder 306 may be performed by processor 401 and / or network interface 405. For example, processor 401 may control network interface 405 to receive communication from encoder 300. Furthermore, modules may be stored in memory 403, and these modules may provide instructions such that when processor 401 executes the instructions of a module, processor 401 performs corresponding operations and / or causes decoder 306 or other nodes / functions to perform corresponding operations. According to some embodiments, decoder 306 and / or one or more of its elements / functions may be embodied as one or more virtual nodes and / or one or more virtual machines.
[0127] Figure 5 This is a block diagram illustrating elements of an encoder 300 configured to encode video frames according to some embodiments of the present invention. As shown, the encoder 300 may include a network interface circuitry 505 (also referred to as a network interface) configured to provide communication with other devices / entities / functions / etc. The encoder 300 may also include a processor circuitry 501 (also referred to as a processor) coupled to the network interface circuitry 505 and a memory circuitry 503 (also referred to as a memory) coupled to the processor circuitry. The memory circuitry 503 may include computer-readable program code that, when executed by the processor circuitry 501, causes the processor circuitry to perform operations according to the embodiments disclosed herein.
[0128] According to other embodiments, processor circuitry 501 may be defined to include memory, eliminating the need for separate memory circuitry. As discussed herein, operation of encoder 300 may be performed by processor 501 and / or network interface 505. For example, processor 501 may control network interface 505 to send communications to decoder 306 and / or receive communications from one or more other network nodes / entities / servers (e.g., other encoder nodes, library servers, etc.) via network interface 505. Furthermore, modules may be stored in memory 503, and these modules may provide instructions such that when the instructions of the modules are executed by processor 501, processor 501 performs corresponding operations. According to some embodiments, encoder 300 and / or one or more of its elements / functions may be embodied as one or more virtual nodes and / or one or more virtual machines.
[0129] As previously indicated, one issue with the current VVC specification is that decoders conforming to the Main 10 StillPicture profile but not to the Main 10 profile will be unable to decode IRAP pictures extracted from the Main 10 video bitstream unless the general_profile_idc in the SPS of the extracted bitstream is rewritten first. Rewriting the bitstream to support this functionality is undesirable.
[0130] Another problem with the current VVC specification is that even if the `general_profile_idc` is rewritten to a Main 10 Still Picture profile that includes a video bitstream with more than one image, the bitstream will not be a valid bitstream because the Main 10 Still Picture profile requires that the bitstream contain only one image. To decode the first image in the bitstream, all the remaining images will need to be discarded to make the bitstream a single image bitstream before decoding.
[0131] In the following description, the terms Profile A, Profile B, and Profile C will be used to distinguish the various profiles present in a bitstream (e.g., a video bitstream).
[0132] In a first embodiment of the present invention, if an indicator value (e.g., encoded by syntax elements in the parameter set of the bitstream or provided externally) indicates that the bitstream conforms to profile B (e.g., a video profile), and it is determined that the first picture of the bitstream is a still picture (e.g., an IRAP picture), then the video bitstream is determined to conform to profile A (e.g., a still picture profile).
[0133] The encoder may perform a subset or all of the following steps to instruct the video bitstream to conform to profile A (where profile A may be a still image profile):
[0134] 1. Encode indicator values in syntax elements (e.g., parameter sets) within the bitstream, where the indicator values indicate conformance to profile A or profile B (e.g., a video profile). A syntax element could be, for example, `general_profile_idc`.
[0135] 2. Encode the still image into a bitstream and indicate that it is a still image in the still image itself (e.g., by setting the NAL cell type of all VCL NAL cells of the still image to the IRAP NAL cell type, or by indicating one or more values in the image header or AUD that indicate that the image is an IRAP image).
[0136] The extractor can perform a subset or all of the following steps to extract images from a video bitstream conforming to profile B to conform to profile A:
[0137] 1. Extract the parameter set from the bit stream.
[0138] 2. Decode indicator values from syntax elements in the bitstream (e.g., from a parameter set), where the indicator values indicate conformance to a specific profile. A syntax element could be, for example, `general_profile_idc`.
[0139] 3. Determine the indicator value to indicate whether the bitstream conforms to configuration file A or configuration file B.
[0140] 4. Extract still images (e.g., IRAP images) associated with the parameter set (if the parameter set is extracted from the bitstream).
[0141] 5. Combine the extracted parameter set and the extracted still images to form a still image bitstream.
[0142] The decoder can perform a subset or all of the following steps to determine whether the video bitstream conforms to profile A (where profile A can be a still image profile):
[0143] 1. Obtain an indicator value that indicates conformance to a specific profile. This indicator value can be decoded from syntax elements in the bitstream (e.g., from a parameter set) or provided externally. A syntax element could be, for example, `general_profile_idc`.
[0144] 2. Determine whether the first image in the bitstream is a still image based on the first image in the bitstream.
[0145] 3. In response to the indicator value indicating configuration file B (where configuration file B can be a video configuration file) and the first image being determined to be a still image:
[0146] a. Determine if the bitstream conforms to configuration file A
[0147] b. Use a decoder that conforms to configuration file A to decode the bitstream.
[0148] 4. Responding to an indicator value indicating that profile C (where profile C is a different profile from profiles A and B) or the first image is not a static image (i.e., it is a predicted image):
[0149] a. Determine that the bitstream does not conform to configuration file A.
[0150] In the steps described above that the decoder can perform, "static image" refers to an image or picture that does not depend on (e.g., is predicted from) any other image, such as an IRAP image.
[0151] The above steps do not need to be in order, and some steps can be omitted. For example, the decoder can choose to first check whether the indicator value indicates conformance to configuration file B. If the bitstream conforms to configuration file B, the decoder also checks whether the first image is a still image before determining whether the bitstream conforms to configuration file A. Otherwise (if the bitstream does not conform to configuration file B), the decoder skips the step of checking whether the first image is a still image and directly determines that the bitstream does not conform to configuration file A.
[0152] In one version of the first embodiment, the static image is an IRAP image, that is, determining whether the first image is a static image based on the first image in the bitstream includes: determining whether the first image is an IRAP image.
[0153] In another version of this embodiment, the still image can be any type of image that is not predicted from other images. An example of such an image is a GDR image that is refreshed on the fly (i.e., recovers to a POC count of 0). A more general example of such an image is an image whose image type indicates that it is a predicted image, but which is fully intra-coded.
[0154] In another version of this first embodiment, determining that the bitstream conforms to profile A additionally includes verifying that the first image is a unique image in the bitstream. The decoder can check whether an image is a unique image in the bitstream in the following way:
[0155] - Obtain an indicator value from the bitstream (e.g., from a parameter set, image header, or slice header) that indicates whether the image is the only image in the bitstream.
[0156] - Obtain information from external means that the image is the only image in the bitstream.
[0157] - Parse the bitstream to detect whether the bitstream includes more than one picture (e.g., by identifying NAL cells of POC that are different from the first picture or identifying AUD that belong to the second picture) or whether the first picture is the only picture in the bitstream (e.g., by obtaining NAL cells with NAL cell type EOB_NUT directly after the first picture, or by parsing to the end of the bitstream without identifying another picture besides the first picture).
[0158] In another version of this first embodiment, a decoder conforming to static image profile A instead of profile B will be able to decode the first image (but not the remaining images) of a video bitstream of profile B that includes more than one image.
[0159] In yet another variation of this first embodiment, the following steps are performed to determine whether the video bitstream conforms to still image profile A:
[0160] 1. Obtain the indicator value, which indicates that the video profile B is not a static image profile A.
[0161] 2. Determine that the first image in the video bitstream is a still image. In one version, this includes determining that the first image is an IRAP image.
[0162] 3. In response to an indicator value indicating that the video profile B is not a static image profile and the first image in the video bitstream is determined to be a static image, the bitstream is determined to match static image profile A.
[0163] In the second embodiment according to the first embodiment, whether the first image is an IRAP image is determined by examining the NAL unit type of each VCL NAL unit in the first image. This can be done by scanning the first image of the bitstream against the NAL unit header and determining that each NAL unit type has a value corresponding to the IRAP type. In VVC, the IRAP NAL unit types are IDR_W_RADL, IDR_N_LP, and CRA_NUT.
[0164] The following example illustrates how the definitions of Main 10 and Main 10 Still Picture configuration files in the current VVC specification can be modified according to this embodiment, where the added text is in italics and bold:
[0165] Main 10 and Main 10 Still Picture Configuration Files
[0166] Bitstreams conforming to Main 10 or Main 10 Still Picture profiles should adhere to the following constraints:
[0167] ...
[0168] A decoder conforming to the Main 10 Still Picture profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0169] - The bitstream is indicated to conform to the Main 10 Still Picture profile or the bitstream is indicated to conform to the Main 10 profile and the bitstream contains only one picture and all VCL NAL units whose nal_unit_type is in the range IDR_W_RADL to CRA_NUT, including DR_W_RADL and CRA_NUT.
[0170] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0171] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0172] Below is another example of how the definitions of Main 10 and Main 10 Still Picture profiles in the current VVC specification can be modified according to this embodiment, where the added text is in italics and bold: In addition to the previous example, in this example, the Main 10 Still Picture profile supports decoding the first IRAP picture of a video bitstream that includes more than one picture:
[0173] Main 10 and Main 10 Still Picture Configuration Files
[0174] Bitstreams conforming to Main 10 or Main 10 Still Picture profiles should adhere to the following constraints:
[0175] ...
[0176] A decoder conforming to the Main 10 Still Picture profile at a specific level within a specific layer should be able to decode the first picture of all bitstreams that meet all of the following conditions:
[0177] - The bitstream is indicated to conform to the Main 10 Still Picture profile or the bitstream is indicated to conform to the Main 10 profile and the nal_unit_type of all VCL NAL units of the first picture of the bitstream is in the range IDR_W_RADL to CRA_NUT, including IDR_W_RADL and CRA_NUT.
[0178] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0179] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0180] Other examples of how the definitions of Main 10, Main 10 Still Picture, Main 4:4:4 10, and Main 4:4:4 10 Still Picture configuration files in the current VVC specification can be changed are provided in the proposals submitted to ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11 - 19th Meeting: Teleconference, 22 June to 1 July 2020, Joint Video Experts Group (JVET).
[0181] According to the proposal, a bitstream containing a single IRAP picture and conforming to the Main 10 profile also conforms to the Main 10 Still Picture profile. Similarly, a bitstream containing a single IRAP picture and conforming to the Main 4:4:4 10 profile also conforms to the Main 4:4:4 10 Still Picture profile. Further details about this proposal are described in the following paragraphs.
[0182] In a third embodiment of the present invention, determining whether a first image is a static image is based on one or more values decoded from one or more syntax elements in the image header (or slice header) of the first image in the bitstream.
[0183] The following is an example of how the definitions of the Main 4:4:4 10 and Main 4:4:4 10 still picture configuration files can be changed, with the added text in italics and bold:
[0184] Bitstreams conforming to Main 4:4:4 10 or Main 4:4:4 10 still picture profiles should adhere to the following constraints:
[0185] ...
[0186] A decoder conforming to a Main 4:4:4 10 Still Picture profile at a specific level within a specific hierarchy should be able to decode all bitstreams that meet all of the following conditions:
[0187] -The bitstream is indicated as
[0188] ■ Compliant with Main 4:4:4 10 Still Picture or Main 10 Still Picture profile; or
[0189] ■ The bitstream conforms to the Main 10 configuration file and contains only one image, with all VCL NAL units having a nal_unit_type in the range IDR_W_RADL to CRA_NUT, including DR_W_RADL and CRA_NUT; or
[0190] ■ Complies with the Main 4:4:4 10 configuration file and the bitstream contains only one image and all VCL NAL units whose nal_unit_type is in the range IDR_W_RADL to CRA_NUT, including DR_W_RADL and CRA_NUT.
[0191] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0192] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0193] The following example illustrates how the definitions of Main 10 and Main 10 Still Picture configuration files in the current VVC specification can be modified according to this embodiment, where the added text is in italics and bold:
[0194] Main 10 and Main 10 Still Picture Configuration Files
[0195] Bitstreams conforming to Main 10 or Main 10 Still Picture profiles should adhere to the following constraints:
[0196] ...
[0197] A decoder conforming to the Main 10 Still Picture profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0198] - The bitstream is indicated to conform to the Main 10 Still Picture profile or the bitstream is indicated to conform to the Main 10 profile and the bitstream contains only one picture and ph_gdr_or_irap_pic_flag is equal to 1 and ph_gdr_pic_flag is equal to 0.
[0199] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0200] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0201] Other examples of how the definitions of Main 10, Main 10 Still Picture, Main 4:4:4 10, and Main 4:4:4 10 Still Picture configuration files in the current VVC specification can be changed are provided in the proposal to the Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11-19th Meeting: Teleconference, 22 June to 1 July 2020, details of which are as follows.
[0202] In another example, the image header includes a new flag that indicates only whether the image is an IRAP image. This flag could be called, for example, `ph_irap_pic_flag`, and the definitions of the Main10 and Main10 StillPicture profiles in the current VVC specification can be changed (as shown below), where the added text is in italics and bold:
[0203] Main 10 and Main 10 Still Picture Configuration Files
[0204] Bitstreams conforming to Main 10 or Main 10 Still Picture profiles should adhere to the following constraints:
[0205] ...
[0206] - A decoder conforming to the Main 10 Still Picture profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0207] - The bitstream is indicated to conform to the Main 10 Still Picture profile or the bitstream is indicated to conform to the Main 10 profile and the bitstream contains only one picture and ph_irap_pic_flag is equal to 1.
[0208] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0209] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0210] Main 4:4:4 10 and Main 4:4:4 10 Still Picture configuration files
[0211] Bitstreams conforming to Main 4:4:4 10 or Main 4:4:4 10 still picture profiles should adhere to the following constraints:
[0212] ...
[0213] - A decoder conforming to a Main 4:4:4 10 Still Picture profile at a specific level within a specific hierarchy should be able to decode all bitstreams that meet all of the following conditions:
[0214] -The bitstream is indicated as
[0215] ■ Compliant with Main 4:4:4 10 Still Picture or Main 10 Still Picture profile; or
[0216] ■ Complies with the Main 10 configuration file and the bitstream contains only one image with ph_gdr_or_irap_pic_flag equal to 1 and ph_gdr_pic_flag equal to 0; or
[0217] ■ It conforms to the Main 4:4:4 10 configuration file and the bitstream contains only one image with ph_gdr_or_irap_pic_flag equal to 1 and ph_gdr_pic_flag equal to 0.
[0218] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0219] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0220] Current configuration file definition in VVC
[0221] The configuration file in VVC is defined in JVET-S0152-v5 as follows.
[0222] Main 10 and Main 10 Still Picture Configuration Files
[0223] Bitstreams conforming to Main 10 or Main 10 Still Picture profiles should adhere to the following constraints:
[0224] - In a bitstream that conforms to the Main 10 Still Picture profile, the bitstream should contain only one picture.
[0225] - The sps_chroma_format_idc of the referenced SPS should be equal to 0 or 1.
[0226] - The referenced SPS's sps_bitdepth_minus8 should be in the range of 0 to 2, inclusive.
[0227] - In a bitstream conforming to the Main 10 Still Picture profile, the referenced SPS's max_dec_pic_buffering_minus1[sps_max_sublayers_minus1] should be equal to 0. [Ed.(YK): Perhaps it's best not to have this constraint on the Main 10 Still Picture profile, so that when extracting intra-frame pictures from the Main 10 bitstream to form the Main 10 Still Picture bitstream, the extractor / "encoder" doesn't have to change the value of max_dec_pic_buffering_minus1[] in the SPS.]
[0228] - The sps_palette_enabled_flag of the referenced SPS should be equal to 0.
[0229] - In a bitstream that conforms to the Main 10 profile but not the Main 10 Still Picture profile, for all values of i in the referenced VPS (when available) and the referenced SPS, general_level_idc and sublayer_level_idc[i] should not be equal to 255 (which indicates level 15.5).
[0230] - The hierarchy and level constraints specified for the Main 10 or Main 10 Still Picture configuration file in Section A.4 (where applicable) should be satisfied.
[0231] The bitstream conforms to the Main 10 profile, indicated by general_profile_idc equal to 1.
[0232] The bitstream conforms to the Main 10 Still Picture profile, indicated by general_profile_idc equal to 3.
[0233] Note – The indication condition for a bitstream conforming to the Main 10 profile is also met when the bitstream as specified above conforms to the Main 10 Still Picture profile and the indicated level is not 15.5.
[0234] A decoder conforming to the Main 10 profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0235] - The bitstream is specified to conform to the Main 10 or Main 10 Still Picture profile.
[0236] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0237] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0238] A decoder conforming to the Main 10 Still Picture profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0239] - The bitstream is specified to conform to the Main 10 Still Picture profile.
[0240] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0241] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0242] Main 4:4:4 10 and Main 4:4:4 10 Still Picture configuration files
[0243] Bitstreams conforming to Main 4:4:4 10 or Main 4:4:4 10 still picture profiles should adhere to the following constraints:
[0244] - In a bitstream that conforms to the Main 10 Still Picture profile, the bitstream should contain only one picture.
[0245] - The referenced SPS's sps_chroma_format_idc should be in the range of 0 to 3, inclusive.
[0246] - The referenced SPS's sps_bitdepth_minus8 should be in the range of 0 to 2, inclusive.
[0247] - In a bitstream conforming to the Main 4:4:4 10 Still Picture profile, the referenced SPS's max_dec_pic_buffering_minus1[sps_max_sublayers_minus1] should be equal to 0. [Ed.(YK): Perhaps it's best not to have this constraint on the Main 4:4:4 10 Still Picture profile, so that when extracting intra-frame pictures from the Main 4:4:4 10 bitstream to form the Main 4:4:4 10 Still Picture bitstream, the extractor / "encoder" doesn't have to change the value of max_dec_pic_buffering_minus1[] in the SPS.]
[0248] - In a bitstream that conforms to the Main 4:4:4 10 profile but not the Main 4:4:4 10 StillPicture profile, for all values of i in the referenced VPS (when available) and the referenced SPS, general_level_idc and sublayer_level_idc[i] should not be equal to 255 (which indicates level 15.5).
[0249] - The hierarchy and level constraints specified in the Main 4:4:4 10 or Main 4:4:4 10 Still Picture profile in Section A.4 (where applicable) should be satisfied.
[0250] The bitstream conforms to Main 4:4:4 10. The configuration file is indicated by general_profile_idc equal to 2.
[0251] The bitstream conforms to Main 4:4:4 10. The still picture profile is indicated by general_profile_idc equal to 4.
[0252] Note – The indication condition for a bitstream conforming to the Main 4:4:4 10 profile is also met when the bitstream as specified above conforms to the Main 4:4:4 10 Still Picture profile and the indicated level is not 15.5.
[0253] A decoder conforming to the Main 4:4:4 10 profile at a specific level within a specific layer should be able to decode all bitstreams that meet all of the following conditions:
[0254] - The bitstream is specified to conform to the Main 4:4:4 10, Main 10, Main 4:4:4 10 Still Picture, Main 10 Still Picture profile.
[0255] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0256] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0257] A decoder conforming to a Main 4:4:4 10 Still Picture profile at a specific level within a specific hierarchy should be able to decode all bitstreams that meet all of the following conditions:
[0258] - The bitstream is specified to conform to either Main 4:4:4 10 Still Picture or Main 10 Still Picture profile.
[0259] - The bitstream is indicated to conform to a level lower than or equal to the specified level.
[0260] - The bitstream is indicated to conform to a level that is not level 15.5 and is lower than or equal to the specified level.
[0261] In an alternative embodiment of the present invention, determining whether the first image is a static image is based on the value decoded from the syntax element in the Access Unit Delimiter (AUD) of the access unit of the first image. The syntax element may, for example, be a flag specifying whether the access unit includes a static image (e.g., an IRAP or GDR access unit) (e.g., aud_irap_or_gdr_au_flag). In another version, the syntax element in the AUD only specifies whether the image is an IRAP image.
[0262] Reference will now be made to some embodiments based on the concept of the present invention. Figures 6 to 13 The flowchart will be used to discuss decoder 306 (using Figure 4 The operation is implemented using a block diagram structure. For example, modules can be stored in... Figure 4 The memory 403 contains these modules, and these modules can provide instructions such that when the instructions of the modules are executed by the corresponding communication device processing circuit 401, the processing circuit 401 performs the corresponding operation of the flowchart.
[0263] Turning Figure 6In block 601, the processing circuit 401 in block 601 obtains an indicator value that indicates conformance to a profile. For example, the indicator value may indicate that the video bitstream conforms to a first profile, a second profile, or a third profile.
[0264] Turning Figure 8 In one embodiment of the present invention, in block 801, processing circuit 401 can obtain indicator values from syntax elements in the bit stream.
[0265] In another embodiment of the present invention, in block 803, processing circuitry 401 can obtain indicator values from syntax elements in the decoding capability information (DCI) or parameter set. The parameter set can be one of a video parameter set (VPS), a sequence parameter set (SPS), or a picture parameter set (PPS), etc.
[0266] In yet another embodiment of the present invention, in block 805, the processing circuit 401 can obtain the indicator value externally. This external means could be metadata provided in a data channel different from the video bitstream, or constants in the decoder, etc.
[0267] Return to Figure 6 In block 603, processing circuitry 401 determines whether a first image in the video bitstream is a still image. In one embodiment of the inventive concept, processing circuitry 401 can determine whether the first image in the video bitstream is a static image by determining whether it is an Intra-Random Access Point (IRAP) image. Alternatively, processing circuitry 401 can determine whether the first image in the video bitstream is a static image by obtaining one or more values from a syntax element, wherein the value from the syntax element specifies whether the first image in the video bitstream is a static image. The syntax element may exist in the video bitstream. In another example, the syntax element does not exist in the video bitstream but is obtained externally, for example, from a data channel different from the video bitstream.
[0268] Turning Figure 9 In another embodiment of the present invention, the processing circuit 401 can determine whether the first image is a static image by: in block 901, obtaining the NAL unit type of each video coding layer network abstraction layer NAL unit of the first image, and in block 903, determining that all video coding layer NAL units of the first image have NAL unit types representing intra-frame random access point (IRAP) images.
[0269] Turning Figure 10In another embodiment of the present invention, the processing circuit 401 can determine whether the first image is a static image by: in block 1001, decoding one or more values from one or more syntax elements from the image header of the first image, the slice header of the first image, or from the access unit delimiter (AUD) associated with the first image; and in block 1003, determining whether the image is a static image based on the one or more values. These values may be decoded only from the image header, only from the slice header, or a combination of syntax elements from both the image header and the slice header.
[0270] In yet another embodiment of the present invention, the processing circuit 401 can determine whether the first image is a static image by determining whether the first image is a progressively decoded refresh (GDR) image with a recovery image sequence count (POC) equal to 0.
[0271] In yet another embodiment of the present invention, the processing circuit 401 may determine whether the first image is a still image by obtaining one or more values from a syntax element, wherein the value from the syntax element specifies whether the first image in the video bitstream is a still image.
[0272] Return to Figure 6 In block 605, in response to an indicator value indicating conformity to the second profile and the first image being a static image, processing circuitry 401 determines that the bitstream conforms to the first profile. Figure 7 In other embodiments shown, in block 705, in response to an indicator value indicating conformity to the second profile and the first image being determined to be a still image, processing circuitry 401 determines that the decoder conforming to the first profile is capable of decoding the first image of the video bitstream. In other words, the decoder will be able to decode the first image of the video bitstream. The first profile may be a still image profile. The second profile may be a video profile and / or different from the first profile.
[0273] In block 607, processing circuitry 401 can: in response to an indicator value indicating conformity to a second profile and the first image being a still image, decode the bitstream using a decoder conforming to the first profile. As described above, in... Figure 7 In some embodiments shown, in block 707, processing circuitry 401 may: in response to an indicator value indicating conformity to a second profile and the first image being determined to be a still image, decode the first image of the bitstream using a decoder conforming to the first profile. In these embodiments, processing circuitry 401 may or may not be able to decode other portions of the bitstream.
[0274] In block 609, processing circuitry 401, in response to an indicator value indicating that the bitstream conforms to the third profile or that the first image is not a static image, does not use a decoder conforming to the first profile to decode the bitstream. In other words, as described above, in Figure 7 In some embodiments shown, in block 709, processing circuitry 401 decodes the first image of the bitstream without using a decoder conforming to the first profile in response to an indicator value indicating that the first image conforms to the third profile or is determined not to be a static image. The third profile is different from the first and second profiles.
[0275] Return to Figure 11 In block 1101, in response to an indicator value indicating that the video bitstream does not conform to the third profile or the first image is determined not to be a static image, processing circuitry 401 determines that the video bitstream does not conform to the first profile. This is because the first image does not conform to the first profile. In some embodiments, such as Figure 11 As shown, in block 1103, in response to an indicator value indicating that the third profile or the first picture is determined not to be a static picture, the processing circuit 401 determines that the decoder may not be able to decode the first picture of the video bitstream, as described above.
[0276] From Figure 6 The various operations in the flowchart may be optional for some embodiments of the communication device and related methods. For example, regarding the method of Example Embodiment 1 (described below), Figure 6 The operations in boxes 607 and 609 can be optional.
[0277] From Figure 7 The various operations in the flowchart may be optional for some embodiments of the communication device and related methods. For example, in some embodiments, the operations of blocks 707 and 709 may be optional.
[0278] Turning Figure 12 This illustrates another embodiment of the inventive concept for determining whether a video bitstream conforms to a first profile. In block 1201, processing circuitry 401 determines whether a first image is the only image in the bitstream. In block 1203, in response to an indicator value indicating conformity to a second profile and the first image being determined to be a still image and the first image being determined to be the only image in the bitstream, processing circuitry 401 determines that the decoder is capable of decoding the first image of the video bitstream.
[0279] A static image can be at least one of the following: an image or picture that does not depend on (e.g., is not predicted from) any other image, an IRAP image, or a GDR image whose recovered POC count is equal to 0. In other words, a static image can be at least one of the following: an image or picture that does not depend on any other image, an image that is not predicted from any other image, an IRAP image, or a GDR image whose recovered POC count is equal to 0.
[0280] Decoder 306 can perform other actions that are part of the inventive concept, such as forming a still image bitstream. (Turn) Figure 13 In block 1301, processing circuitry 401 can extract a parameter set from the bitstream. In block 1303, processing circuitry 401 can obtain an indicator value by decoding an indicator value from a syntax element in the bitstream. In block 1305, in response to an indicator value indicating that the bitstream conforms to a first profile or a second profile, in block 1307, processing circuitry 401 can extract a still image associated with the parameter set from the bitstream, and in block 1309, combine the parameter set extracted from the bitstream and the still image extracted from the bitstream to form a still image bitstream without rewriting the indicator value to the syntax element.
[0281] The following discusses example implementations.
[0282] Example 1. A method for determining whether a video bitstream conforms to a first profile, the method comprising:
[0283] Obtain the (601) indicator value, which indicates conformity to the configuration file;
[0284] Determine (603) whether the first image in the video bitstream is a still image; and
[0285] The response (605) indicates that the indicator value conforms to the second profile and the first image is a static image, thus determining that the bitstream conforms to the first profile.
[0286] Example 2. The method according to Example 1 further includes:
[0287] In response to an indicator value indicating that the third profile is conforming or the first image is determined not to be a static image, determine (1101) that the video bitstream does not conform to the first profile.
[0288] Example 3. The method according to any one of Examples 1 to 2, wherein obtaining the indicator value includes: decoding the (801) indicator value from the syntax elements in the bit stream.
[0289] Example 4. The method according to any one of Examples 1 to 2, wherein obtaining the indicator value includes: decoding (803) the indicator value from the decoding capability information DCI or the syntax elements in the parameter set.
[0290] Example 5. According to the method described in Example 4, the parameter set includes one of the video parameter set VPS, the sequence parameter set SPS, or the image parameter set PPS.
[0291] Example 6. The method according to any one of Examples 1 to 2, wherein obtaining the indicator value includes: obtaining the (805) indicator value by an external means.
[0292] Example 7. The method according to any one of Examples 1 to 6, wherein the first configuration file is a static image configuration file.
[0293] Example 8. The method according to any one of Examples 1 to 7, wherein the second configuration file is a video configuration file.
[0294] Example 9. The method according to any one of Examples 1 to 8, wherein the second configuration file is different from the first configuration file.
[0295] Example 10. The method according to any one of Examples 2 to 9, wherein the third configuration file is different from the first configuration file and the second configuration file.
[0296] Example 11. The method according to any one of Examples 1 to 10 further includes: in response to an indicator value indicating that the bitstream conforms to a second profile and the first image is a static image, decoding the bitstream using a decoder conforming to the first profile (607).
[0297] Example 12. The method according to any one of Examples 2 to 11 further includes: in response to an indicator value indicating that the bitstream conforms to a third profile or the first image is not a static image, not using a decoder conforming to the first profile to decode the bitstream (609).
[0298] Example 13. The method according to any one of Examples 1 to 12, wherein determining whether the first image in the video bitstream is a static image includes: determining whether the first image is an Intra-Frame Random Access Point (IRAP) image.
[0299] Example 14. The method according to any one of Examples 1 to 12, wherein determining whether a first image in a video bitstream is a still image includes: obtaining one or more values from a syntax element, wherein the value from the syntax element specifies whether the first image in the video bitstream is a still image.
[0300] Example 15. The method according to any one of Examples 1 to 12, wherein determining whether the first image is a static image includes: determining that the first image is a static image by the following means:
[0301] Obtain the NAL unit type of each video coding layer network abstraction layer NAL unit of the first image (901); and
[0302] Determine that all video coding layer NAL units of the first picture (903) have NAL unit types representing intra-frame random access point (IRAP) pictures.
[0303] Example 16. The method according to any one of Examples 1 to 12, wherein determining whether the first image is a static image includes: determining that the first image is a static image by the following means:
[0304] Decode one or more values (1001) from one or more syntax elements from the image header or slice header of the first image; and
[0305] Based on one or more of these values, it is determined that (1003) the image is a still image.
[0306] Example 17. The method according to any one of Examples 1 to 16 further includes:
[0307] Determine whether (1201) the first image is the only image in the bitstream; and
[0308] In response to the indicator value indicating that it conforms to the second profile and the first image being determined to be a static image and the first image being determined to be the only image in the bitstream, determine (1203) that the bitstream conforms to the first profile.
[0309] Example 18. The method according to any one of Examples 1 to 17 further includes:
[0310] Extract the (1301) parameter set from the bitstream;
[0311] The (1303) indicator value is obtained by decoding the indicator value from the syntax elements in the bitstream; and
[0312] In response to the indicator value indicating (1305) that the bitstream conforms to either the first profile or the second profile:
[0313] Extract (1307) static images associated with the parameter set from the bitstream; and
[0314] The parameter set extracted from the bitstream is combined with the still image extracted from the bitstream (1309) to form a still image bitstream without rewriting the indicator value to the syntax element.
[0315] Example 19. A decoder (306) for determining that a video bitstream conforms to a first profile, the decoder being adapted to perform an operation including:
[0316] Obtain the (601) indicator value, which indicates conformity to the configuration file;
[0317] Determine (603) whether the first image in the video bitstream is a still image; and
[0318] In response to the indicator value indicating that it conforms to the second profile and the first image is a static image, determine (605) that the bitstream conforms to the first profile.
[0319] Example 20. The decoder (306) according to Example 19, wherein the decoder is also adapted to perform the operations according to any one of Examples 2 to 18.
[0320] Example 21. A decoder (306) for determining whether a video bitstream conforms to a first profile, the decoder comprising:
[0321] Processing circuit (401); and
[0322] Memory (403), coupled to processing circuitry, wherein the memory includes instructions that, when executed by the processing circuitry, cause the decoder to perform operations including:
[0323] Obtain the (601) indicator value, which indicates conformity to the configuration file;
[0324] Determine (603) whether the first image in the video bitstream is a still image; and
[0325] In response to the indicator value indicating that it conforms to the second profile and the first image is a static image, determine (605) that the bitstream conforms to the first profile.
[0326] Example 22. The decoder according to Example 21, wherein the memory includes additional instructions that, when executed by the processing circuitry, cause the decoder to perform other operations, including:
[0327] In response to an indicator value indicating that the third profile is conforming or the first image is determined not to be a static image, determine (1101) that the video bitstream does not conform to the first profile.
[0328] Example 23. A decoder according to any of Examples 21 to 22, wherein, when an indicator value is obtained, the memory includes other instructions that, when executed by the processing circuitry, cause the decoder to perform other operations, including: decoding the indicator value from syntax elements in the bitstream.
[0329] Example 24. A decoder according to any of Examples 21 to 22, wherein, when an indicator value is obtained, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: decoding (803) the indicator value from the decoding capability information DCI or a syntax element in the parameter set.
[0330] Example 25. The decoder according to Example 24, wherein the parameter set includes one of the video parameter set VPS, the sequence parameter set SPS, or the image parameter set PPS.
[0331] Example 26. A decoder according to any one of Examples 22 to 25, wherein, when an indicator value is obtained, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: obtaining the (805) indicator value externally.
[0332] Example 27. The decoder according to any one of Examples 21 to 26, wherein the first configuration file is a static image configuration file.
[0333] Example 28. The decoder according to any one of Examples 21 to 27, wherein the second profile is a video profile.
[0334] Example 29. The method according to any one of Examples 21 to 28, wherein the second configuration file is different from the first configuration file.
[0335] Example 30. The decoder according to any one of Examples 22 to 29, wherein the third profile is different from the first profile and the second profile.
[0336] Example 31. A decoder according to any one of Examples 21 to 30, wherein the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, the other operations including: decoding the bitstream using a decoder conforming to the first profile in response to an indicator value indicating that the bitstream conforms to the second profile and the first image is a still image (607).
[0337] Example 32. A decoder according to any one of Examples 21 to 31, wherein the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: in response to an indicator value indicating that the first image conforms to a third profile or that the first image is not a static image, not using a decoder conforming to the first profile to decode the bitstream (609).
[0338] Example 33. A decoder according to any one of Examples 21 to 32, wherein, when determining whether a first image in a video bitstream is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: determining whether the first image is an Intra-Frame Random Access Point (IRAP) image.
[0339] Example 34. The method according to any one of Examples 21 to 32, wherein determining whether a first image in a video bitstream is a still image includes: obtaining one or more values from a syntax element, wherein the value from the syntax element specifies whether the first image in the video bitstream is a still image.
[0340] Example 35. A decoder according to any one of Examples 21 to 32, wherein, when determining whether a first image is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including determining that the first image is a still image by:
[0341] Obtain the NAL unit type of each video coding layer network abstraction layer NAL unit of the first image (901); and
[0342] Determine that all video coding layer NAL units of the first image (903) have NAL unit types representing IRAP images.
[0343] Example 36. A decoder according to any one of Examples 21 to 32, wherein, when determining whether a first image is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including determining that the first image is a still image by:
[0344] Decode one or more values (1001) from one or more syntax elements from the image header or slice header of the first image; and
[0345] Based on one or more of these values, it is determined that (1003) the image is a still image.
[0346] Example 37. A decoder according to any one of Examples 21 to 36, wherein the memory includes additional instructions that, when executed by the processing circuitry, cause the decoder to perform other operations, including:
[0347] Determine whether (1201) the first image is the only image in the bitstream; and
[0348] In response to an indicator value indicating conformity to the second profile and the first image being determined to be a still image and the first image being determined to be the only image in the bitstream, it is determined (1203) that the bitstream conforms to the first profile. Example 38. A decoder according to any of Examples 21 to 37, wherein the memory includes additional instructions that, when executed by the processing circuitry, cause the decoder to perform additional operations, including:
[0349] Extract the (1301) parameter set from the bitstream;
[0350] The (1303) indicator value is obtained by decoding the indicator value from the syntax elements in the bitstream; and
[0351] In response to the indicator value indicating (1305) that the bitstream conforms to either the first profile or the second profile:
[0352] Extract (1307) static images associated with the parameter set from the bitstream; and
[0353] The parameter set extracted from the bitstream is combined with the still image extracted from the bitstream (1309) to form a still image bitstream without rewriting the indicator value to the syntax element.
[0354] Example 39. A computer program comprising program code to be executed by processing circuitry (401) of a decoder (306), wherein execution of the program code causes the decoder (306) to perform an operation comprising:
[0355] Obtain the (601) indicator value, which indicates conformity to the configuration file;
[0356] Determine (603) whether the first image in the video bitstream is a still image; and
[0357] In response to the indicator value indicating that it conforms to the second profile and the first image is a static image, determine (605) that the bitstream conforms to the first profile.
[0358] Example 40. The computer program according to Example 39, wherein the computer program includes additional program code to be executed by the processing circuitry (401) of the decoder (306), whereby the execution of the program code causes the decoder (306) to perform the operations described in any of Examples 2 to 18.
[0359] Example 41. A computer program product including a non-transitory storage medium, the non-transitory storage medium including program code to be executed by processing circuitry (401) of a decoder (306), whereby execution of the program code causes the decoder (306) to perform operations including:
[0360] Obtain the (601) indicator value, which indicates conformity to the configuration file;
[0361] Determine (603) whether the first image in the video bitstream is a still image; and
[0362] In response to the indicator value indicating that it conforms to the second profile and the first image is a static image, determine (605) that the bitstream conforms to the first profile.
[0363] Example 42. The computer program product according to Example 41, wherein the non-transitory storage medium includes another program code to be executed by the processing circuitry (401) of the decoder (306), whereby the execution of the program code causes the decoder (306) to perform the operation described in any of Examples 2 to 18.
[0364] The following provides an explanation of the various abbreviations / acronyms used in this disclosure.
[0365] Explanation of Abbreviations
[0366] AU Access Unit
[0367] AUD Access Unit Delimiter
[0368] ALF Adaptive Loop Filter
[0369] APS Adaptive Parameter Set
[0370] BDOF bidirectional optical flow
[0371] BLA Disconnection Access
[0372] CLVS coding layer video sequence
[0373] CRA Clean Random Access
[0374] CVS encoded video stream
[0375] CVSS CVS Start
[0376] CU encoding unit
[0377] DCI decoding capability information
[0378] DMVR decoder motion vector refinement
[0379] DPS Decoding Parameter Set
[0380] DRAP-related random access points
[0381] GDR Progressive Decoding Refresh
[0382] HEVC High-Efficiency Video Coding
[0383] IDR Instantaneous Decoding and Refresh
[0384] Intra-IRAP Random Access Point
[0385] LMCS Luminance Mapping and Chroma Scaling
[0386] MPEG Moving Picture Experts Group
[0387] MVD Motion Vector Difference
[0388] NAL Network Abstraction Layer
[0389] NALU NAL unit
[0390] NUT NAL unit type
[0391] PPS Image Parameter Set
[0392] RADL Random Access Decodeable Preamble
[0393] RAP Random Access Point
[0394] RASL Random Access Skip Preamble
[0395] RBSP raw byte sequence payload
[0396] RPL Reference Image List
[0397] SEI Supplemental Enhancement Layer
[0398] SPS Sequence Parameter Set
[0399] STSA Step-by-Step Time Layer Access
[0400] VCL (Video Coding Layer)
[0401] VPS Video Parameter Set
[0402] VVC (Video Coding)
[0403] The references are as follows:
[0404] 1. JVET-S0152-v5, Versatile Video Coding, Joint Video Experts Team.
[0405] Generally, unless explicitly stated and / or implied from the context, all terms used herein shall be interpreted according to their common meaning in the relevant art. Unless otherwise expressly stated, all references to “an element, device, component, apparatus, step, etc.” shall be openly interpreted as referring to at least one instance of an element, device, component, apparatus, step, etc. Unless it must be explicitly described that a step is after or before another step and / or implicitly implied that a step must be after or before another step, the steps of any method disclosed herein need not be performed in the exact order disclosed. Where appropriate, any feature of any embodiment disclosed herein may be applied to any other embodiment. Similarly, any advantage of any embodiment may be applied to any other embodiment, and vice versa. Further objects, features, and advantages of the appended embodiments will become apparent from the following description.
[0406] The term "unit" may have a conventional meaning in the field of electronic, electrical and / or electronic equipment, and may include, for example, electrical and / or electronic circuits, devices, modules, processors, memories, logic solid-state and / or discrete devices, computer programs or instructions for performing various tasks, processes, calculations, outputs and / or display functions, such as those described herein.
[0407] In the above description of various embodiments of the inventive concept, it is to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the inventive concept. Unless otherwise defined, all terms used herein (including technical and scientific terms) have the same meaning as commonly understood by one of ordinary skill in the art to which the inventive concept pertains. It should also be understood that terms such as those defined in general dictionaries should be interpreted as having a meaning consistent with their meaning in the context of this specification and related art, and not as having an ideal or overly superficial meaning, unless so expressly defined herein.
[0408] When an element is described as being “connected,” “coupled,” “responding,” or a variation thereof relative to another element, it may be directly connected, coupled to, or respond to the other element, or there may be intermediate elements. Conversely, when an element is described as being “directly connected,” “directly coupled,” “directly responding,” or a variation thereof relative to another element, there are no intermediate elements. Throughout the text, similar reference numerals are used to denote similar elements. Furthermore, the terms “coupled,” “connected,” “responding,” or variations thereof as used herein may include wireless coupling, connection, or response. As used herein, the singular forms “a,” “an,” and “described” are intended to also include the plural forms unless the context clearly indicates otherwise. For the sake of brevity and / or clarity, well-known functions or structures may not be described in detail. The term “and / or” (abbreviated as “ / ”) includes any and all combinations of one or more of the associated listed items.
[0409] It will be understood that although the terms first, second, third, etc., may be used herein to describe various elements / operations, these elements / operations should not be limited by these terms. These terms are used only to distinguish one element / operation from another. Thus, a first element / operation in some embodiments may be referred to as a second element / operation in other embodiments without departing from the teachings of the inventive concept. Throughout the specification, the same reference numerals or reference symbols denote the same or similar elements.
[0410] As used herein, the terms “comprise,” “comprising,” “comprises,” “include,” “including,” “have,” “has,” or variations thereof are open-ended and include one or more of the stated features, elements, components, steps, parts, or functions, but do not preclude the presence or addition of one or more other features, elements, components, steps, parts, functions, or combinations thereof. Furthermore, as used herein, the common abbreviation “eg” (for example,) derives from the Latin phrase “exempli gratia,” which can be used to introduce or specify a general example of a previously mentioned item, without being intended as a limitation on that item. The common abbreviation “ie” (i.e.) derives from the Latin phrase “id est,” and can be used to specify a more specific item in a broader sense of reference.
[0411] This document describes exemplary embodiments with reference to block diagrams and / or flowcharts illustrating computer-implemented methods, apparatus (systems and / or devices), and / or computer program products. It should be understood that the blocks shown in the block diagrams and / or flowcharts, and combinations of blocks shown in the block diagrams and / or flowcharts, can be implemented by computer program instructions executed by one or more computer circuits. These computer program instructions can be provided to processor circuitry of general-purpose computer circuitry, special-purpose computer circuitry, and / or other programmable data processing circuitry to produce a machine, such that instructions executed by the processor of a computer and / or other programmable data processing apparatus translate and control transistors, values stored in memory locations, and other hardware components within such circuitry to implement the functions / actions specified in the block diagrams and / or flowcharts, thereby creating means (functional bodies) and / or structures for implementing the functions / actions specified in the block diagrams and / or flowcharts.
[0412] These computer program instructions may also be stored in a tangible computer-readable medium capable of directing a computer or other programmable data processing apparatus to function in a specific manner, such that the instructions stored in the computer-readable medium produce an article of writing comprising instructions that implement functions / actions specified in blocks of block diagrams and / or flowcharts. Therefore, embodiments of the inventive concept can be implemented in hardware and / or software (including firmware, stored software, microcode, etc.) running on a processor such as a digital signal processor, which may be collectively referred to as a "circuit," a "module," or a variation thereof.
[0413] It should also be noted that in some alternative implementations, the functions / actions marked in the boxes may not occur in the order indicated in the flowchart. For example, depending on the functions / actions involved, two boxes shown consecutively may actually be executed substantially simultaneously, or the boxes may sometimes be executed in reverse order. Furthermore, the functions of a given box in a flowchart and / or block diagram may be divided into multiple boxes, and / or the functions of two or more boxes in a flowchart and / or block diagram may be at least partially integrated. Finally, without departing from the scope of the inventive concept, other boxes may be added / inserted between the shown boxes, and / or boxes / actions may be omitted. Moreover, although some boxes include arrows indicating the main direction of communication regarding the communication path, it should be understood that communication may occur in the opposite direction to the indicated arrows.
[0414] Many changes and modifications may be made to the embodiments without substantially departing from the inventive concept. All such changes and modifications are intended to be included within the scope of the inventive concept herein. Therefore, the foregoing subject matter should be understood as exemplary rather than restrictive, and the examples of embodiments are intended to cover all such modifications, improvements, and other embodiments falling within the spirit and scope of the inventive concept. Thus, to the fullest extent permitted by law, the scope of the inventive concept should be determined by the widest permissible interpretation of this disclosure, including examples of embodiments and their equivalents, and should not be limited to or restricted to the specific embodiments described above.
Claims
1. A method for determining that a decoder conforming to a first profile is capable of decoding a first image in a video bitstream conforming to a second profile, wherein the first profile is a still image profile and the second profile is a video profile, the method comprising: Obtain an indicator value (601) that indicates the video bitstream conforms to the second profile; Determine (603) whether the first image in the video bitstream is a static image; as well as In response to the indicator value of (705) indicating that the video bitstream conforms to the second profile and the first image is determined to be a still image, the decoder that conforms to the first profile is able to decode the first image in the video bitstream.
2. The method according to claim 1, further comprising: In response to the indicator value indicating compliance with the third profile or the first image being determined not to be a static image, it is determined (1101) that the video bitstream does not comply with the first profile.
3. The method according to any one of claims 1 to 2, further comprising: In response to the indicator value indicating that it conforms to the third profile or the first image is determined not to be a static image, it is determined (1103) that the decoder may be unable to decode the first image in the video bitstream, wherein the third profile is different from the first profile and the second profile.
4. The method according to any one of claims 1 to 2, wherein, Obtaining the indicator value includes decoding (801) the indicator value from the syntax elements in the bitstream.
5. The method according to any one of claims 1 to 2, wherein, Obtaining the indicator value includes: obtaining the indicator value (805) externally.
6. The method according to any one of claims 1 to 2, wherein, Obtaining the indicator value includes decoding (803) the indicator value from the decoding capability information DCI or the syntax elements in the parameter set.
7. The method according to claim 6, wherein, The parameter set includes one of the video parameter set (VPS), the sequence parameter set (SPS), or the image parameter set (PPS).
8. The method according to any one of claims 1 to 2, further comprising: In response to the indicator value indicating conformity to the second profile and the first image being determined to be a static image, the first image in the bitstream is decoded using a decoder conforming to the first profile (707).
9. The method according to claim 2, further comprising: In response to the indicator value indicating that the first image conforms to the third profile or the first image is determined not to be a static image, the first image in the bitstream is not decoded using a decoder that conforms to the first profile (709).
10. The method according to any one of claims 1 to 2, wherein, Determining whether the first image in the video bitstream is a static image includes: determining whether the first image is an Intra-Frame Random Access Point (IRAP) image.
11. The method according to any one of claims 1 to 2, wherein, Determining whether the first image in the video bitstream is a static image further includes: determining whether the first image is a progressively decoded refreshed GDR image with a restored image sequence count (POC) equal to 0.
12. The method according to any one of claims 1 to 2, wherein, Determining whether the first image in the video bitstream is a still image includes: obtaining one or more values from a syntax element, wherein the values from the syntax element specify whether the first image in the video bitstream is a still image.
13. The method according to any one of claims 1 to 2, wherein, Determining whether the first image is a static image includes determining that the first image is a static image through the following methods: Decode one or more values (1001) from the image header of the first image, the slice header of the first image, or one or more syntax elements from the access unit delimiter AUD associated with the first image; and Based on one or more of the values, it is determined (1003) that the image is a still image.
14. The method according to any one of claims 1 to 2, wherein, Determining whether the first image is a static image includes determining that the first image is a static image through the following methods: Obtain (901) the NAL unit type of each video coding layer network abstraction layer NAL unit of the first image; and (903) It is determined that all video coding layer NAL units of the first image have NAL unit types representing intra-frame random access point (IRAP) images.
15. The method according to any one of claims 1 to 2, further comprising: Determine (1201) whether the first image is the only image in the bitstream; as well as In response to the indicator value indicating conformity to the second configuration file and the first image being determined to be a static image and the first image being determined to be the only image in the bitstream, it is determined (1203) that the decoder is capable of decoding the first image in the bitstream.
16. The method according to any one of claims 1 to 2, further comprising: Extract the (1301) parameter set from the bitstream; The indicator value is decoded from the syntax elements in the bitstream to obtain the indicator value (1303); as well as In response to the indicator value indicating (1305) that the bitstream conforms to either the first profile or the second profile: Extract (1307) static images associated with the parameter set from the bitstream; as well as The parameter set extracted from the bitstream is combined with the still image extracted from the bitstream (1309) to form a still image bitstream without rewriting the indicator value to the syntax element.
17. The method according to any one of claims 1 to 2, wherein, The still image is at least one of the following: - An image or picture that does not depend on any other image; - Images or pictures that are not based on any other images; - IRAP images; and - Restore GDR images with a POC count of 0.
18. The method according to any one of claims 1 to 2, wherein, The decoder (306) conforming to the first configuration file is part of a device (310) having a media player (312).
19. A decoder (306) for determining that a decoder conforming to a first profile is capable of decoding a first image in a video bitstream conforming to a second profile, wherein the first profile is a still image profile and the second profile is a video profile, the decoder comprising: Processing circuit (401); as well as Memory (403), coupled to the processing circuitry, wherein the memory includes instructions that, when executed by the processing circuitry, cause the decoder to perform operations, the operations including: Obtain an indicator value (601) that indicates the video bitstream conforms to the second profile; Determine (603) whether the first image in the video bitstream is a still image; and In response to the indicator value indicating that the video bitstream conforms to the second profile and the first image is determined to be a still image, it is determined (705) that the decoder conforming to the first profile is capable of decoding the first image in the bitstream.
20. The decoder (306) according to claim 19, wherein, The memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: In response to the indicator value indicating compliance with the third profile or the first image being determined not to be a static image, it is determined (1101) that the video bitstream does not comply with the first profile.
21. The decoder (306) according to any one of claims 19 to 20, wherein, The memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: In response to the indicator value indicating conformity to a third profile or the first image being determined not to be a static image, it is determined (1103) that the decoder may be unable to decode the first image in the video bitstream. The third configuration file is different from the first and second configuration files.
22. The decoder (306) according to any one of claims 19 to 20, wherein, When the indicator value is obtained, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including decoding (801) the indicator value from the syntax elements in the bitstream.
23. The decoder (306) according to any one of claims 19 to 20, wherein, When the indicator value is obtained, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including obtaining (805) the indicator value externally.
24. The decoder (306) according to any one of claims 19 to 20, wherein, When the indicator value is obtained, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including decoding (803) the indicator value from the decoding capability information DCI or syntax elements in the parameter set.
25. The decoder (306) according to claim 24, wherein, The parameter set includes one of the video parameter set (VPS), the sequence parameter set (SPS), or the image parameter set (PPS).
26. The decoder (306) according to any one of claims 19 to 20, wherein, The memory includes other instructions that, when executed by the processing circuitry, cause the decoder to perform other operations, including: in response to the indicator value indicating conformity to the second profile and the first image being determined to be a static image, decoding the first image in the bitstream using a decoder conforming to the first profile (707).
27. The decoder (306) according to any one of claims 19 to 20, wherein, The memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: in response to the indicator value indicating conformity with the third profile or the first image being determined not to be a static image, not using a decoder conforming to the first profile to decode the first image in the bitstream (709).
28. The decoder (306) according to any one of claims 19 to 20, wherein, When determining whether the first image in the video bitstream is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: determining whether the first image is an Intra-Frame Random Access Point (IRAP) image.
29. The decoder (306) according to any one of claims 19 to 20, wherein, When determining whether the first image is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including determining that the first image is a still image by: Obtain (901) the NAL unit type of each video coding layer network abstraction layer NAL unit of the first image; and (903) It is determined that all video coding layer NAL units of the first image have NAL unit types representing IRAP images.
30. The decoder (306) according to any one of claims 19 to 20, wherein, When determining whether the first image in the video bitstream is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: determining whether the first image is a GDR image with a restored POC count of 0.
31. The decoder (306) according to any one of claims 19 to 20, wherein, When determining whether the first image in the video bitstream is a still image, the memory includes other instructions that, when executed by the processing circuitry, cause the decoder to perform other operations, including: obtaining one or more values from a syntax element, wherein the values from the syntax element specify whether the first image in the video bitstream is a still image.
32. The decoder (306) according to any one of claims 19 to 20, wherein, When determining whether the first image is a still image, the memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including determining that the first image is a still image by: Decode one or more values (1001) from the image header of the first image, the slice header of the first image, or one or more syntax elements from the access unit delimiter AUD associated with the first image; and Based on one or more of the values, it is determined (1003) that the image is a still image.
33. The decoder (306) according to any one of claims 19 to 20, wherein, The memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: Determine (1201) whether the first image is the only image in the bitstream; and In response to the indicator value indicating conformity to the second configuration file and the first image being determined to be a static image and the first image being determined to be the only image in the bitstream, it is determined (1203) that the decoder is capable of decoding the first image in the bitstream.
34. The decoder (306) according to any one of claims 19 to 20, wherein, The memory includes other instructions that, when executed by the processing circuit, cause the decoder to perform other operations, including: Extract the (1301) parameter set from the bitstream; The indicator value is decoded from the syntax elements in the bitstream to obtain the indicator value (1303); and In response to the indicator value indicating (1305) that the bitstream conforms to either the first profile or the second profile: Extract (1307) static images associated with the parameter set from the bitstream; and The parameter set extracted from the bitstream is combined with the still image extracted from the bitstream (1309) to form a still image bitstream without rewriting the indicator value to the syntax element.
35. The decoder (306) according to any one of claims 19 to 20, wherein, A still image is at least one of the following: - An image or picture that does not depend on any other image; - Images or pictures that are not based on any other images; - IRAP images; and - Restore GDR images with a POC count of 0.
36. The decoder (306) according to any one of claims 19 to 20, wherein, The decoder (306) is part of a device (310) having a media player (312).
37. A computer-readable medium storing a computer program, the computer program comprising program code to be executed by processing circuitry (401) of a decoder (306) conforming to a first profile, wherein execution of the program code causes the decoder (306) to perform operations, the operations including: Obtain an indicator value (601) indicating that the video bitstream conforms to a second profile, which is a video profile; Determine whether the first image in the video bitstream described in (603) is a static image; as well as In response to the indicator value indicating that the video bitstream conforms to the second profile and the first image is determined to be a still image, it is determined (705) that the decoder (306) conforming to the first profile is capable of decoding the first image in the video bitstream.
38. The computer-readable medium of claim 37, wherein, The computer program includes additional program code to be executed by the processing circuitry (401) of the decoder (306), whereby the execution of the additional program code causes the decoder (306) to perform the operation according to any one of claims 2 to 18.
39. A computer program product comprising a non-transitory storage medium, the non-transitory storage medium comprising program code to be executed by processing circuitry (401) of a decoder (306) conforming to a first profile, the first profile being a still image profile, wherein execution of the program code causes the decoder (306) to perform operations including: Obtain an indicator value (601) indicating that the video bitstream conforms to a second profile, which is a video profile; Determine whether the first image in the video bitstream described in (603) is a static image; as well as In response to the indicator value indicating that the video bitstream conforms to the second profile and the first image being determined to be a still image, it is determined (705) that the decoder (306) conforming to the first profile is capable of decoding the first image in the video bitstream.
40. The computer program product according to claim 39, wherein, The non-transitory storage medium includes another program code to be executed by the processing circuitry (401) of the decoder (306), whereby the execution of the other program code causes the decoder (306) to perform the operation according to any one of claims 2 to 18.