Method, apparatus, program product, and media for video processing
Patent Information
- Application Number
- CN202180029337.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-04-18
- Filing Date
- 2021-04-18
- Publication Date
- 2026-10-27
- Estimated Expiration
- 2041-04-18
Smart Images

Figure CN115836524B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] In accordance with applicable patent law and / or the rules of the Paris Convention, this application aims to promptly claim priority to International Patent Application No. PCT / CN2020 / 085483, filed on April 18, 2020. For all purposes provided by law, the entire disclosure of the foregoing application is incorporated herein by reference as part of the disclosure of this application. Technical Field
[0003] This patent document relates to image and video encoding and decoding. Background Technology
[0004] Digital video accounts for the largest share of bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] This document discloses techniques that can be used by video encoders and decoders to process codec representations using control information useful for decoding the codec representations of video.
[0006] In one exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video and a bitstream of the video according to a rule. The rule specifies that the type of the adaptive parameter set is indicated before an identifier of the adaptive parameter set.
[0007] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video and a bitstream of the video according to a rule. The rule specifies the total number of allowed filters indicated in an adaptive parameter set based on codec information in the bitstream.
[0008] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between videos comprising one or more video images, wherein the codec representation conforms to a format rule; wherein the format rule specifies that two or more syntax fields in a sequence parameter set control changes to the reference picture resolution (RPR) in the video.
[0009] In another exemplary aspect, a different video processing method is disclosed. The method includes performing a conversion between videos comprising one or more video images, wherein the codec representation conforms to a format rule; wherein the format rule specifies that a single syntax field in a sequence parameter set controls changes in the reference image resolution (RPR) of the video; and wherein the format rule specifies that resampling of the inter-layer reference images is permitted for the conversion regardless of the value of the single syntax field.
[0010] In another exemplary aspect, a different video processing method is disclosed. The method includes performing a transformation between videos comprising one or more layers, the one or more layers comprising one or more video images, the one or more video images comprising one or more sub-images, wherein the codec representation conforms to a format rule; wherein the format rule specifies a first constraint on cross-layer alignment or a second constraint on a combination of scalability for sub-images and inter-layer images.
[0011] In another exemplary aspect, a different video processing method is disclosed. This method includes performing a transformation between videos comprising one or more layers, each layer comprising one or more video images, each video image comprising one or more sub-images, wherein the transformation conforms to a format rule that disallows inter-layer reference images or long-term reference images as juxtaposed images of the current image used for the transformation.
[0012] In another exemplary aspect, a different video processing method is disclosed. This method includes performing a conversion between a video comprising multiple images and a codec representation of the video, wherein the conversion conforms to a rule stating that the value of each of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset is identical for any two images in the same codec layer video sequence or codec video sequence having the same values of pic_width_in_luma_samples and pic_height_in_luma_samples.
[0013] In another exemplary aspect, a different video processing method is disclosed. This method includes performing a conversion between a video comprising multiple images and a codec representation of the video, wherein the conversion conforms to a rule that allows inter-layer prediction only if the current image is an intra-frame random access point image, and the image resolution or expanded window is different for the current image and other images in the same access unit.
[0014] In yet another exemplary aspect, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the methods described above.
[0015] In yet another exemplary aspect, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the methods described above.
[0016] In yet another example aspect, a computer-readable medium on which code is stored is disclosed. This code embodies one of the methods described herein in the form of processor-executable code.
[0017] This document describes these and other features throughout. Attached Figure Description
[0018] Figure 1 An example of raster scan slice partitioning of an image is shown, where the image is divided into 12 tiles and 3 raster scan slices.
[0019] Figure 2 An example of rectangular strip partitioning of an image is shown, where the image is divided into 24 slices (6 slice columns and 4 slice rows) and 9 rectangular strips.
[0020] Figure 3 An example of an image divided into slices and rectangular strips is shown, where the image is divided into 4 slices (2 slice columns and 2 slice rows) and 4 rectangular strips.
[0021] Figure 4 The image is shown as being divided into 15 slices, 24 strips, and 24 sub-images.
[0022] Figure 5 This is a block diagram of an exemplary video processing system.
[0023] Figure 6 This is a block diagram of a video processing device.
[0024] Figure 7 This is a flowchart of an exemplary method for video processing.
[0025] Figure 8 This is a block diagram illustrating a video encoding / decoding system according to some embodiments of the present disclosure.
[0026] Figure 9 This is a block diagram illustrating an encoder according to some embodiments of the present disclosure.
[0027] Figure 10 This is a block diagram illustrating a decoder according to some embodiments of the present disclosure.
[0028] Figure 11 This illustrates a typical sub-image-based viewport correlation 360. o Examples of video encoding / decoding schemes.
[0029] Figure 12 This demonstrates viewport relevance based on sub-images and spatial scalability (360°). o Video encoding and decoding solutions.
[0030] Figure 13 This is a flowchart representation of a method for video processing according to this technology.
[0031] Figure 14 This is a flowchart representation of another method for video processing according to this technology. Detailed Implementation
[0032] The chapter headings used in this document are for ease of understanding and do not limit the applicability of the technologies and embodiments disclosed in each chapter to that chapter only. Furthermore, the use of H.266 terminology in some descriptions is merely for ease of understanding and not to limit the scope of the disclosed technologies. Therefore, the technologies described herein are also applicable to other video codec protocols and designs. In this document, the current draft of the VVC specification indicates edit changes by strikethrough indicating undoing text and highlighting text (including bold and italic) indicating addition.
[0033] 1. Overview
[0034] This document relates to video codec techniques. Specifically, it concerns 1) a combination of two or more of Reference Picture Resampling (RPR), subpictures, and scalability in video codecs; 2) the use of RPR between a current picture and a reference picture with the same spatial resolution; and 3) a combination of long-term reference pictures and juxtaposed pictures. These ideas can be applied individually or in various combinations to any video codec standard or non-standard video codec that supports multi-layer video codecs, such as the Multi-Functional Video Codec (VVC) under development.
[0035] 2. Abbreviation
[0036] APS Adaptive Parameter Set
[0037] AU Access Unit
[0038] AUD Access Unit Separator
[0039] AVC Advanced Video Codec
[0040] CLVS codec layer video sequence
[0041] CCALF Cross-Component Adaptive Loop Filter
[0042] CPB encoded image buffer
[0043] CRA Cleans Up Random Access
[0044] CTU (Codec Tree Unit)
[0045] CVS codec video sequence
[0046] DCI decoding capability information
[0047] DPB decoded image buffer
[0048] EOB End of Bitstream
[0049] End of EOS sequence
[0050] GDR gradually decoded and refreshed
[0051] HEVC High-Efficiency Video Encoding and Decoding
[0052] HRD Hypothetical Reference Decoder
[0053] GDR Instant Decoding and Refresh
[0054] Interlayer prediction in ILP
[0055] ILRP interlayer reference image
[0056] IRAP Intra-Frame Random Access Image
[0057] JEM Joint Exploration Model
[0058] LTRP Long-Term Reference Image
[0059] MCTS Motion Restraint Piece Set
[0060] NAL Network Abstraction Layer
[0061] OLS Output Layer Set
[0062] PH image header
[0063] PPS Image Parameter Set
[0064] PTL grade, level and grade
[0065] PU Image Unit
[0066] RAP Random Access Point
[0067] RBSP raw byte sequence payload
[0068] SEI Supplemental Enhancement Information
[0069] SPS Sequence Parameter Set
[0070] STRP Short-Term Reference Image
[0071] SVC (Scalable Video Codec)
[0072] VCL (Video Codec Layer)
[0073] VPS Video Parameter Set
[0074] VTM VVC Test Model
[0075] VUI Video Availability Information
[0076] VVC Multi-Functional Video Encoding and Decoding
[0077] 3. Preliminary Discussion
[0078] Video codec standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Vision, and the two organizations jointly developed the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Codec (AVC) and H.265 / HEVC standards. Since H.262, video codec standards have been based on a hybrid video codec architecture, utilizing time prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into reference software called the Joint Exploration Model (JEM). JVET meetings are held concurrently quarterly, and the goal of new codec standards is to reduce bitrate by 50% compared to HEVC. The new video codec standard was officially named Multifunctional Video Codec (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was released at that time. Due to ongoing efforts to promote VVC standardization, new codec technologies are adopted in the VVC standard at each JVET meeting. The VVC working draft and test model VTM are then updated after each meeting. The VVC project now aims for Technical Completion (FDIS) at the July 2020 meeting.
[0079] 3.1. Image Partitioning Scheme in HEVC
[0080] HEVC includes four different image partitioning schemes: regular striping, non-independent striping, slice, and wavefront parallel processing (WPP). These schemes can be applied to maximum transmission unit (MTU) size matching, parallel processing, and reduction of end-to-end latency.
[0081] Regular slices are similar to slices in H.264 / AVC. Each regular slice is encapsulated in its own NAL unit and intra-frame picture prediction (intra-sample prediction, motion information prediction, and encoding / decoding mode prediction) and entropy encoding / decoding dependencies across slice boundaries are disabled. Therefore, regular slices can be reconstructed independently of other regular slices in the same picture (although interdependencies may still exist due to loop filtering operations).
[0082] Regular stripes are the only tool available for parallelization, and they are also provided in almost the same form in H.264 / AVC. Parallelization based on regular stripes requires little inter-processor or inter-core communication (except for inter-processor or inter-core data sharing for motion compensation when decoding predicted images, which is far more cumbersome due to intra-frame picture prediction). However, for the same reason, using regular stripes can incur significant encoding / decoding overhead due to the bit cost of the stripe header and the lack of prediction across stripe boundaries. Furthermore, regular stripes (compared to other tools mentioned below) also serve as a key mechanism for bitstream partitioning to match MTU size requirements, due to the intra-frame picture independence of regular stripes, and each regular stripe is encapsulated in its own NAL unit. In many cases, the goals of parallelization and MTU size matching impose conflicting requirements on the stripe layout in the images. The implementation of this situation led to the development of the parallelization tools mentioned below.
[0083] Non-independent stripes have short stripe headers and allow partitioning of the bitstream at tree block boundaries without disrupting any intra-frame picture prediction. Essentially, non-independent stripes segment a regular stripe into multiple NAL units to reduce end-to-end latency by allowing a portion of the regular stripe to be emitted before the entire regular stripe's encoding is complete.
[0084] In WPP, images are partitioned into single-row codec tree blocks (CTBs). Entropy decoding and prediction are allowed to use data from CTBs in other partitions. Parallel processing is possible through parallel decoding of CTB rows, where the decoding of a CTB row is delayed by two CTBs to ensure that data associated with the CTBs above and to the right of the main CTB is available before decoding the main CTB. Using this staggered start (which looks like a wavefront when represented graphically), parallelization can be performed using up to multiple processors / cores because images contain CTB rows. Because intra-frame image prediction is allowed between adjacent tree block rows in an image, the inter-processor / inter-core communication required to enable intra-frame image prediction can be significant. WPP partitioning does not result in additional NAL units compared to when it is not applied, therefore WPP is not a tool for MTU size matching. However, if MTU size matching is required, regular striping can be used with WPP, but this will incur some encoding / decoding overhead.
[0085] A slice defines horizontal and vertical boundaries used to partition an image into slice columns and rows. Slice columns extend from the top to the bottom of the image. Similarly, slice rows extend from the left to the right of the image. The number of slices in an image can be simply derived as the number of slice columns multiplied by the number of slice rows.
[0086] The CTB scan order is changed to local within the slice (according to the slice's CTB raster scan order), and then the top-left CTB of the next slice is decoded according to the slice raster scan order of the images. Similar to regular stripes, slices disrupt intra-frame image prediction dependencies and entropy decoding dependencies. However, they do not need to be included in individual NAL units (the same as WPP in this respect); therefore, slices cannot be used for MTU size matching. Each slice can be processed by one processor / core, and the inter-processor / core communication required for intra-frame image prediction between processing units decoding adjacent slices is limited to passing the shared slice header and performing loop filtering on the relevant shared reconstructed samples and metadata when the slice spans more than one slice. When a slice contains more than one slice or WPP segment, the slice header signals the entry point byte offset for each slice or WPP segment except the first slice or WPP segment in the slice.
[0087] For simplicity, HEVC specifies restrictions on the application of four different image partitioning schemes. For most levels specified in HEVC, a given codec video sequence cannot simultaneously include slices and wavefronts. For each strip and slice, one or both of the following conditions must be met: 1) All codec tree blocks in a strip belong to the same slice; 2) All codec tree blocks in a slice belong to the same strip. Finally, a wavefront segment contains only one CTB line, and when WPP is in use, if a strip begins within a CTB line, it must end within the same CTB line.
[0088] With the recent revision of HEVC, HEVC has specified three SEI messages related to MCTS: the Time MCTS SEI message, the MCTS Extracted Message Set SEI message, and the MCTS Extracted Message Nested SEI message.
[0089] The temporal MCTS SEI message indicates the presence of an MCTS in the bitstream and signals the MCTS accordingly. For each MCTS, motion vectors are restricted to pointing to full-sample locations within the MCTS and fractional-sample locations that require interpolation only from full-sample locations within the MCTS. Furthermore, temporal motion vector prediction derived from blocks outside the MCTS is not permitted using motion vector candidates. This ensures that each MCTS can be decoded independently, without any segments not included in the MCTS.
[0090] The MCTS Extraction Information Set (SEI) message provides supplementary information that can be used for MCTS sub-bitstream extraction (specified as part of the semantics of the SEI message) to generate a compliant bitstream for the MCTS set. This information consists of several extraction information sets, each defining several MCTS sets and containing RBSP bytes to replace the VPS, SPS, and PPS during the MCTS sub-bitstream extraction process. When extracting a sub-bitstream according to the MCTS sub-bitstream extraction process, the parameter sets (VPS, SPS, and PPS) need to be rewritten or replaced, and the slice header needs to be slightly updated because one or all slice address-related syntax elements (including first_slice_segment_in_pic_flag and slice_segment_address) typically need to have different values.
[0091] 3.2. Image Partitioning in VVC
[0092] In VVC, an image is divided into one or more slice rows and one or more slice columns. A slice is a sequence of CTUs covering a rectangular area of the image. The CTUs in a slice are scanned in raster scan order within that slice.
[0093] A strip consists of an integer number of complete slices or an integer number of consecutive complete CTU lines in a slice of an image.
[0094] Two stripe modes are supported: raster scan stripe mode and rectangular stripe mode. In raster scan stripe mode, a stripe contains a series of complete slices within a sheet raster scan of the image. In rectangular stripe mode, a stripe contains many complete slices that together form a rectangular area of the image, or multiple consecutive complete CTU rows containing a single slice (these rows together form the rectangular area of the image). Slices within a rectangular stripe are scanned in the rectangular area corresponding to that stripe according to the sheet raster scan sequence.
[0095] A sub-image contains one or more stripes that collectively cover a rectangular area of the image.
[0096] Figure 1 An example of raster scan strip partitioning of an image is shown, where the image is divided into 12 slices and 3 raster scan strips.
[0097] Figure 2 An example of rectangular strip partitioning of an image is shown, where the image is divided into 24 slices (6 slice columns and 4 slice rows) and 9 rectangular strips.
[0098] Figure 3 An example of an image divided into slices and rectangular strips is shown, where the image is divided into 4 slices (2 slice columns and 2 slice rows) and 4 rectangular strips.
[0099] Figure 4 An example of sub-picture partitioning of an image is shown, where the image is partitioned into 18 slices: 12 slices on the left, each covering a strip with 4×4 CTUs; and 6 slices on the right, each covering two vertically stacked strips with 2×2 CTUs. These slices together produce 24 strips and 24 sub-pictures of different sizes (each strip is a sub-picture).
[0100] 3.3. Image resolution changes within a sequence
[0101] In AVC and HEVC, the spatial resolution of an image cannot be changed unless a new sequence with a new SPS begins with an IRAP image. VVC allows for changing the image resolution within a sequence at a certain location without encoding the IRAP image, which is always intra-frame encoded / decoded. This feature is sometimes called Reference Image Resampling (RPR) because it requires resampling the reference image used for inter-frame prediction when the resolution of the reference image differs from the current image being decoded.
[0102] The scaling factor is limited to greater than or equal to 1 / 2 (2x downsampling from the reference image to the current image) and less than or equal to 8 (8x upsampling). Three sets of resampling filters with different cutoff frequencies are specified to handle various scaling factors between the reference and current images. The three sets of resampling filters are applied to scaling factors ranging from 1 / 2 to 1 / 1.75, from 1 / 1.75 to 1 / 1.25, and from 1 / 1.25 to 8, respectively. Each set of resampling filters has 16 phases for luma and 32 phases for chroma, which is the same as for motion-compensated interpolation filters. In fact, the normal MC interpolation process is a special case of the reconstruction process with scaling factors ranging from 1 / 1.25 to 8. The horizontal and vertical scaling factors are derived based on the image width and height and the left, right, top, and bottom scaling offsets specified for the reference and current images.
[0103] Other aspects of VVC designs that support this feature, compared to HEVC, include: i) signaling the image resolution and corresponding compliance window in the PPS instead of the SPS, whereas in the SPS, the maximum image resolution is signaled. ii) for a single-layer bitstream, each image storage area (the time slot in the DPB used to store one decoded image) occupies the buffer size required to store the decoded image with the maximum image resolution.
[0104] 3.4. General Scalable Video Codec (SVC) in VVC
[0105] Scalable video codec (SVC, sometimes also referred to as scalability in video codec) refers to video codec using a base layer (BL) (sometimes called a reference layer (RL)) and one or more scalable enhancement layers (EL). In SVC, the base layer can carry video data with a basic quality level. One or more enhancement layers can carry additional video data to support, for example, higher spatial, temporal, and / or signal-to-noise ratio (SNR) levels. Enhancement layers can be defined relative to previous coding layers. For example, the bottom layer can be used as a BL, while the top layer can be used as an EL. Intermediate layers can be used as ELs or RLs, or both. For example, an intermediate layer (e.g., a layer that is neither the lowest nor the highest layer) can be an EL of a layer below the intermediate layer (such as the base layer or any intervening enhancement layer) while also acting as an RL of one or more enhancement layers above the intermediate layer. Similarly, in the Multiview or 3D extension of the HEVC standard, there can be multiple views, and information from one view can be used for encoding and decoding (e.g., encoding or decoding) of information from another view (e.g., motion estimation, motion vector prediction, and / or other redundancy).
[0106] In SVC, parameters used by the encoder or decoder are grouped into sets of parameters they can utilize based on the codec level (e.g., video level, sequence level, picture level, stripe level, etc.). For example, parameters that can be utilized by one or more codec video sequences from different layers in a bitstream can be included in the Video Parameter Set (VPS), and parameters that can be utilized by one or more pictures in a codec video sequence can be included in the Sequence Parameter Set (SPS). Similarly, parameters that can be utilized by one or more stripes in a picture can be included in the Picture Parameter Set (PPS), while other parameters specific to a single strip can be included in the stripe header. Likewise, different codec levels can provide an indication of which set of parameters a particular layer is using at a given time.
[0107] Because VVC supports Reference Picture Resampling (RPR), bitstreams containing multiple layers (e.g., two layers with SD and HD resolutions in VVC) can be designed without any additional signal processing level codec tools, as the upsampling required for spatial scalability support simply uses RPR upsampling filters. However, for scalability support, advanced syntax changes are required (compared to no scalability support). Scalability support was specified in VVC version 1. Unlike scalability support in any earlier video codec standards (including extensions to AVC and HEVC), VVC scalability was designed to be as friendly as possible to single-layer decoder designs. The decoding capability of multi-layer bitstreams is specified in a way that treats the bitstream as if it were a single layer. For example, decoding capabilities (such as DPB size) are specified in a way that is independent of the number of layers in the bitstream to be decoded. Essentially, decoders designed for single-layer bitstreams do not require many changes to decode multi-layer bitstreams. Compared to the multi-layer extension designs of AVC and HEVC, the HLS aspect has been greatly simplified, but at the cost of some flexibility. For example, an IRAP AU is required to contain the picture of each layer present in CVS.
[0108] 3.5. Viewport-dependent 360 based on sub-images o Video streaming
[0109] In 360 o In streaming video (also known as omnidirectional video), at any given moment, only a subset of the entire omnidirectional video sphere (e.g., the current viewport) is rendered to the user, who can at any time rotate their head to change their viewing orientation, thus changing the current viewport. While it is desirable that at least some lower-quality regions are not covered by the current viewport available on the client and ready to be rendered to the user in case the user suddenly changes their viewing orientation to any location on the sphere, only the currently rendered viewport requires a high-quality representation of the omnidirectional video. This optimization is achieved by partitioning the high-quality representation of the entire omnidirectional video into sub-pictures with appropriate granularity. Using VVC, these two representations can be encoded as two independent layers.
[0110] Figure 11 This illustrates a typical sub-image-based viewport correlation 360. o The video delivery scheme involves a high-resolution representation of the complete video composed of sub-pictures, while a low-resolution representation of the complete video does not use sub-pictures and can be encoded and decoded using random access points that are less frequent than the high-resolution representation. The client receives the complete video at the lower resolution, while for the high-resolution video, it only receives and decodes the sub-pictures covering the current viewport.
[0111] 3.6. Parameter Set
[0112] AVC, HEVC, and VVC specify parameter sets. Parameter set types include SPS, PPS, APS, and VPS. All AVC, HEVC, and VVC versions support SPS and PPS. VPS has been introduced since HEVC and is included in both HEVC and VVC. APS is not included in AVC or HEVC, but is included in the latest VVC draft text.
[0113] SPS is designed to carry sequence-level header information, while PPS is designed to carry infrequently changing image-level header information. With SPS and PPS, it's unnecessary to repeat infrequently changed information for each sequence or image, thus avoiding redundant signaling. Furthermore, using SPS and PPS for out-of-band transmission of critical header information not only avoids the need for redundant transmission but also improves error recovery capabilities.
[0114] The VPS was introduced to carry sequence-level header information, which is universal across all layers of a multi-layer bitstream.
[0115] The introduction of APS was to carry such image-level or stripe-level information, which requires encoding and decoding a considerable number of bits, can be shared by multiple images, and can have many different variations in the sequence.
[0116] The following are the semantics of SPS / PPS / APS in some embodiments: sps_seq_parameter_set_id provides an identifier for SPS to be referenced by other syntax elements.
[0117] Regardless of the nuh_layer_id value, SPS NAL cells share the same value space for sps_seq_parameter_set_id.
[0118] Assume that `spsLayerId` is the value of `nuh_layer_id` for a specific SPS NAL unit, and assume that `vclLayerId` is the value of `nuh_layer_id` for a specific VCL NAL unit. A specific VCL NAL unit should not refer to a specific SPS NAL unit unless `spsLayerId` is less than or equal to `vclLayerId`, and the OLS being decoded contains layers with `nuh_layer_id` equal to `spsLayerId` and layers with `nuh_layer_id` equal to `vclLayerId`.
[0119] The pps_pic_parameter_set_id identifier is used by PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id should be in the range of 0 to 63 (inclusive).
[0120] Regardless of the nuh_layer_id value, PPS NAL cells share the same value space for pps_pic_parameter_set_id.
[0121] Assume that ppsLayerId is the value of nuh_layer_id for a specific PPS NAL unit, and assume that vclLayerId is the value of nuh_layer_id for a specific VCL NAL unit. A specific VCL NAL unit should not refer to a specific PPS NAL unit unless ppsLayerId is less than or equal to vclLayerId, and the OLS being decoded contains layers with nuh_layer_id equal to ppsLayerId and layers with nuh_layer_id equal to vclLayerId.
[0122] The adaptation_parameter_set_id provides an identifier for APS to reference by other syntax elements.
[0123] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 7 (inclusive of endpoints).
[0124] When aps_params_type equals LMCS_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 3 (inclusive of endpoints).
[0125] Assume that `apsLayerId` is the value of `nuh_layer_id` for a specific APS NAL unit, and assume that `vclLayerId` is the value of `nuh_layer_id` for a specific VCL NAL unit. A specific VCL NAL unit should not refer to a specific APS NAL unit unless `apsLayerId` is less than or equal to `vclLayerId`, and the OLS being decoded contains layers with `nuh_layer_id` equal to `apsLayerId` and layers with `nuh_layer_id` equal to `vclLayerId`.
[0126] 3.7. Sub-bit Stream Extraction Process
[0127] The inputs to this process are the bitstream inBitstream, the target OLS index targetOlsIdx, and the highest target TemporalId value tIdTarget.
[0128] The output of this process is the sub-bit stream outBitstream.
[0129] The bitstream compliance requirement for the input bitstream is that any output sub-bitstream that satisfies all of the following conditions should be a compliant bitstream: – The output sub-bitstream is the output of the process specified in this clause, where the bitstream targetOlsIdx, which is equal to the index of the OLS list specified by the VPS, and tIdTarget, which is equal to any value in the range of 0 to 6 (inclusive), are used as inputs.
[0130] – The output sub-bitstream contains at least one VCL NAL unit, where nuh_layer_id is equal to each of the nuh_layer_ids in LayerIdInOls[targetOlsIdx].
[0131] – The output sub-bitstream contains at least one VCL NAL unit, where TemporalId is equal to tIdTarget.
[0132] Note – The complied bitstream contains one or more codec strip NAL units with TemporalId equal to 0, but does not necessarily contain codec strip NAL units with nuh_layer_id equal to 0.
[0133] The output sub-bitstream, OutBitstream, is exported as follows: – The bitstream outBitstream is set to be the same as the bitstream inBitstream.
[0134] - Remove all NAL cells from outBitstream whose TemporalId is greater than tIdTarget.
[0135] – Remove from outBitstream all NAL units whose nal_unit_type is not equal to any of VPS_NUT, DCI_NUT, and EOB_NUT and whose nuh_layer_id is not included in the list LayerIdOls[targetOlsIdx].
[0136] – Delete all NAL cells from outBitstream that satisfy all of the following conditions: –nal_unit_type is not equal to IDR_W_RADL, IDR_N_LP or CRA_NUT.
[0137] – For j values in the range of 0 to NumLayersInOls[targetOlsIdx]-1 (inclusive), nuh_layer_id is equal to LayerIdInOls[targetOlsIdx][j].
[0138] –TemporalId is greater than or equal to NumSubLayersInLayerInOLS[targetOlsIdx][j].
[0139] – Remove all SEI NAL cells from outBitstream that contain an expandable nested SEI message with nesting_ols_flag equal to 1 and no i value in the range from 0 to nesting_num_olss_minus1 (inclusive), such that NestingOlsIdx[i] equals targetOlsIdx.
[0140] – When LayerIdInOls[targetOlsIdx] does not include all values of nuh_layer_id in all NAL units of the bitstream, the following applies: - Remove all SEI NAL units from outBitstream that contain non-expandable nested SEI messages with payloadType equal to 0 (buffer cycle) or 130 (decoding unit information).
[0141] – When general_same_pic_timing_in_all_ols_flag equals 0, remove all SEI NAL units from outBitstream that contain non-expandable nested SEI messages with payloadType equal to 1 (picture timing).
[0142] – When outBitstream contains an extensible nested SEI message with nesting_ols_flag equal to 1 and is applicable to the SEI NAL cell of outBitstream (NestingOlsIdx[i] equal to targetOlsIdx), the following applies: – If same_pic_timing_within_ols_flag equals 0, extract appropriate non-expandable nested SEI messages with payloadType equal to 0 (buffer cycle), 1 (picture timing), or 130 (decoding unit information) from the expandable nested SEI messages, and include these SEI messages in outBitstream.
[0143] - Otherwise (same_pic_timing_within_ols_flag equals 1), extract appropriate non-expandable nested SEI messages with payloadType equal to 0 (buffer cycle) or 130 (decoding unit information) from the expandable nested SEI messages, and include these SEI messages in outBitstream.
[0144] 4. The technical problem solved by the disclosed technical solution
[0145] The existing design in the latest VVC documentation has the following issues: 1) Current VVC design supports 360°. o Typical video encoding and decoding schemes, such as Figure 11 As shown. However, although current VVC designs support scalability, they do not support features such as... Figure 12 The improved 360 shown o Video encoding / decoding schemes. (and) Figure 11 The only difference between the methods shown is that inter-layer prediction (ILP) is applied. Figure 12 The method shown.
[0146] The following two locations in the VVC draft do not allow the combined use of sub-images and spatial scalability: a. Spatial scalability design in VVC relies on RPR features. However, the following semantic constraints currently disallow the combination of RPR and sub-images: When res_change_in_clvs_allowed_flag equals 1, the value of subpic_info_present_flag is... It should be equal to 0.
[0147] Therefore, improved encoding / decoding schemes are not allowed because, for SPS referenced at the upper layer, the above constraints do not allow setting subpic_info_present_flag to 1 (to use multiple subpicks per picture) while setting res_change_in_clvs_allowed_flag to 1 (to enable RPR, which is necessary for the spatial scalability of ILP).
[0148] b. The current VVC draft imposes the following constraints on the combination of sub-images and scalability: When subpic_treated_as_pic_flag[i] equals 1, the bitstream compliance requirement OLS (including the one containing the first) is met. In a layer (where i subgraphs are used as output layers), each output layer and its reference layer satisfy all of the following conditions: – All images in the output layer and its reference layer should have the same pic_width_in_luma_samples value. And the same pic_height_in_luma_samples value.
[0149] All SPSs referenced by the output layer and its reference layer should have the same sps_num_subpics_minus1 value. Furthermore, for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), it should have a subpic_ ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_ The same value for height_minus1[j] and loop_filter_across_subpic_enabled_flag[j].
[0150] – All images in each access unit of the output layer and its reference layer, from 0 to sps_num_subpics_ Each j value within the minus1 range (including the endpoints) should have the same SubpicIdVal[j] value.
[0151] The above constraints essentially disallow any combination of ILP subpictures and scalability other than a restricted combination with SNR scalability, where each layer in the dependency tree must have the same spatial resolution and the same subpicture layout.
[0152] 2) When `subpic_treated_as_pic_flag[i]` equals 1, the subpicture boundary of the i-th subpicture will be considered as the picture boundary in motion compensation. This processing is implemented in the VVC draft text by applying certain cropping operations during the decoding process related to motion compensation. However, for Figure 12 The improved encoding and decoding scheme shown in the figure does not require such cropping in this case because the lower layer is fully available to the decoder, and not just to the region corresponding to the i-th sub-image. This avoids unnecessary loss of encoding and decoding efficiency.
[0153] 3) Without considering support Figure 12 In the case of the improved encoding / decoding scheme shown, the above constraints on the combination of sub-pictures and scalability with ILP (described in the description of Problem 1b) have the following problems: a. This constraint should also apply when the layer containing the i-th sub-image is not an output layer of OLS. The entire constraint should be specified in a way that does not consider whether the layer is an output layer of OLS.
[0154] b. The requirement to align the values of subpic_treated_as_pic_flag[i] across layers should be included; otherwise, it will be impossible to extract subpicture sequences with the same index across layers.
[0155] c. The requirement for the value of `loop_filter_across_subpic_enabled_flag[i]` to align across layers should be excluded, because regardless of the value of this flag, as long as `subpic_treated_as_pic_flag[i]` equals 1, the subpic sequence is extractable. The setting of the value of `loop_filter_across_subpic_enabled_flag[i]` should be left to the encoder to determine the trade-off between the quality of a single extractable subpic sequence and the quality of the set of extractable subpic sequences, just as it is to explain why the two flags signal independently of each other.
[0156] d. The entire constraint should only apply if sps_num_subpics_minus1 is greater than 0, to avoid all cases where the constraint unintentionally covers one subpic at a time.
[0157] e. The time frame for applying the constraints needs to be explicitly specified, such as the set of AUs.
[0158] f. Requirements should be included for the values of each of the scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset for cross-layer alignment, to ensure that ITRP's RPR is not required when each image has multiple sub-images.
[0159] 4) Currently, the juxtaposed image used for the current image can be a Long-Term Reference Image (LTRP) located in the same layer as the current image, or it can be an Inter-Layer Reference Image (ILRP), for example, a reference image located in a different layer from the current image. However, in either case, POC-based motion vector extension will not be applied, so the encoding and decoding performance resulting from allowing this is expected to be very low. Therefore, it is best to disallow the juxtaposed image for the current image to be either an LTRP or an ILRP.
[0160] 5) Currently, images with the same spatial resolution in CLVS are allowed to have different expanded windows. However, this should be prohibited, because otherwise, the SPS flag and the regular constraint flag of RPR will not be able to be used to completely disable the RPR tool.
[0161] 6) Currently, during sub-bitstream extraction, parameter sets (SPS / PPS / VPS) of layers not included in the current / target OLS can also be included in the extracted bitstream. However, even if layer A and layer B are not included in the currently decoded OLS, as long as an OLS containing both layer A and layer B is defined in the VPS, the design intent is not that the stripes in layer A refer to the parameter sets in layer B.
[0162] 7) The number of allowed access points depends on the APS type. However, regardless of the allowed APS, the signaling for the APS ID is fixed at u(5), which may waste unnecessary bits.
[0163] 5. List of technical solutions and implementation examples
[0164] To address the aforementioned and other issues, the methods summarized below are presented. These items should be considered as exemplars for interpreting general concepts, rather than being interpreted narrowly. Furthermore, these items can be applied individually or in combination in any way.
[0165] 1) To address issue 1a, multiple (such as two) SPS flags can be specified and / or signaled for this purpose, instead of having only one SPS flag (e.g., res_change_in_clvs_allowed_flag as in the current VVC draft) to control RPR.
[0166] a. For example, the first flag (e.g., ref_pic_resampling_enabled_flag) specifies whether RPR is required to decode one or more images, while the second flag (e.g., res_change_in_clvs_allowed_flag) specifies whether changing the image resolution within CLVS is allowed.
[0167] b. Alternatively, the second flag is signaled only if the first flag indicates that RPR may be needed to decode one or more images. Furthermore, when no signal is given, it is inferred that the value of the second flag indicates that image resolution changes are not permitted within the CLVS.
[0168] i. Alternatively, these two signs signal independently of each other.
[0169] c. Alternatively, a more general constraint flag is added, so that each of the first and second flags has a general constraint flag.
[0170] d. In addition, combinations of multiple sub-images of each image with res_change_in_clvs_allowed_flag equal to 1 are not allowed, but combinations of multiple sub-images of each image with ref_pic_resampling_enabled_flag equal to 1 are allowed.
[0171] e. Furthermore, the constraint on the scaling_window_explicit_signalling_flag value based on the res_change_in_clvs_allowed_flag value will be changed to be based on the ref_pic_resampling_enabled_flag value as follows: when ref_pic_resampling_enabled_flag When res_change_in_clvs_allowed_flag equals 0, the value of scaling_window_explicit_signalling_flag should also equal 0.
[0172] f. Alternatively, one or more (such as two) flags can be signaled in the VPS instead of the SPS.
[0173] i. In one example, one or more (such as two) flags of the VPS are applied to all tiers specified by the VPS.
[0174] ii. In another example, one or more (such as two) flags in a VPS can each signal multiple instances in the VPS, and each instance is applied to all layers in a dependency tree.
[0175] g. In one example, each of the multiple flags is encoded into an unsigned integer using l bits u(1).
[0176] h. Alternatively, non-binary values can be used, such as signaling syntax elements in SPS / VPS, to specify the use of RPR during decoding and to allow image resolution changes in CLVS.
[0177] i. In one example, when the value of a syntax element is equal to 0, it specifies that decoding one or more images does not require the use of RPR.
[0178] ii. In one example, when the value of the syntax element is equal to 1, it specifies that RPR may be used to decode one or more images when changing the image resolution is not allowed in CLVS.
[0179] iii. In one example, when the value of the syntax element is equal to 2, it specifies that RPR may be used to decode one or more images when changing the image resolution is allowed in CLVS.
[0180] iv. Alternatively, how syntactic elements are signaled may depend on whether inter-layer prediction is allowed.
[0181] v. In one example, the syntax element is encoded using ue(v), which indicates the syntax element encoded using the unsigned integer 0-order Exp-Golomb encoding, where the left bit comes first.
[0182] vi. In another example, the syntax element is encoded and decoded into an unsigned integer using N bits u(N), for example, N equals 2.
[0183] 2) Alternatively, or in addition to item 1 used to address problem 1a, there is still only one flag, such as res_change_in_clvs_allowed_flag, but the semantics can be changed so that resampling of interlayer reference images is allowed regardless of the value of the flag.
[0184] a. In one example, the semantics can be changed as follows: `res_change_in_clvs_allowed_flag` equal to 1 indicates that the image space resolution can be changed within the CLVS referring to the SPS. And when decoding the current image in CLVS When coding, it may be necessary to resample a reference image located in the same layer as the current image. A value of 0 for `res_change_in_clvs_allowed_flag` indicates that the image space resolution cannot be changed within any CLVS referring to the SPS. And when in CLVS When decoding any current image, it is not necessary to resample a reference image located in the same layer as the current image. Sample.
[0185] b. With this change, even if res_change_in_clvs_allowed_flag is equal to 0, the decoding of sub-pictures / pictures can still use RPR for interlayer reference pictures (ILRP).
[0186] 3) To address problem 1b, the constraints on the combination of sub-images and scalability with ILP were updated so that the constraints only impose cross-layer alignment restrictions on the current layer and all higher layers that depend on the current layer, and do not impose constraints on higher layers that do not depend on the current layer or lower layers.
[0187] a. Alternatively, update the constraints to apply cross-layer alignment constraints only to the current layer and all layers above the current layer.
[0188] b. Alternatively, update the constraints to apply cross-layer alignment constraints only to the current layer and all higher layers in each OLS that contains the current layer.
[0189] c. Alternatively, update the constraints to apply cross-layer alignment constraints only to the current layer and all lower layers that serve as the reference layer for the current layer.
[0190] d. Alternatively, update the constraints to apply cross-layer alignment constraints only to the current layer and all layers below it.
[0191] e. Alternatively, update the constraints to apply cross-layer alignment constraints only to the current layer and all lower layers in each OLS that contains the current layer.
[0192] f. Alternatively, update the constraints to apply cross-layer alignment restrictions only to all layers below the highest layer.
[0193] g. Alternatively, update the constraints to apply cross-layer alignment restrictions only to all layers above the lowest layer.
[0194] 4) To address issue 2, in one or more decoding processes involved in intra-frame prediction correlation, specifically in the cropping operation where sub-image boundaries are treated as image boundaries in motion compensation / motion prediction (e.g., in the derivation of temporal luma motion vector prediction in clause 8.5.2.11, the luma sample bilinear interpolation process in 8.5.3.2.2, the derivation of sub-block-based temporal merging candidates in 8.5.5.3, the derivation of sub-block-based temporal merging underlying motion data in 8.5.5.4, the derivation of constructing affine control point motion vector merging candidates in 8.5.5.6, the luma sample interpolation filtering process in 8.5.6.3.3, the sample integer sample acquisition process in 8.5.6.3.4, and the chroma sample interpolation process in 8.5.6.3.4), the following changes are applied: a. In one example, these processes are modified such that if the subpic_treated_as_pic_ flag [CurrSubpicIdx] is equal to 1 and the sps_num_subpics_minus1 of the reference image refPicLX is greater than 0, then the cropping operation is applied; otherwise, the cropping operation is not applied.
[0195] i. Alternatively, when juxtaposing images as ILRPs is not allowed, only the process where the reference image refpicLX is not a juxtaposed image is changed as described above, and the process where the reference image refPicLX is a juxtaposed image is not changed.
[0196] b. In one example, these procedures were modified so that if subpic_treated_as_pic_flag[CurrSubpicIdx] equals 1 and the current stripe's nal_unit_type value is not equal to IDR_W_RADL, IDR_N_LP, or CRA_NUT, then a cropping operation is applied; otherwise, no cropping operation is applied. Simultaneously, only ILP is allowed to encode and decode IRAP images.
[0197] c. In one example, the same as the current VCC text, no changes are made to these decoding processes. For example, if subpic_treated_as_pic_flag[CurrSubpicIdx] equals 1, the clipping operation is applied; otherwise, the clipping operation is not applied.
[0198] 5) To address issue 3a, the constraints on sub-pictures and the combination of scalability and ILP were updated so that these constraints impose cross-layer alignment restrictions on all layers in each dependency tree. The dependency tree contains a specific layer, all layers that use that specific layer as a reference layer, and all reference layers to that specific layer, regardless of whether any layer is an output layer of OLS.
[0199] 6) To address problem 3b, the constraints on subpics and the combination of scalability and ILP were updated so that the constraints impose cross-layer alignment restrictions on the value of subpic_treated_as_pic_flag[i].
[0200] 7) To address issue 3c, the constraints on subpics and the combination of scalability and ILP were updated so that the constraints do not impose cross-layer alignment restrictions on the value of loop_filter_across_subpic_enabled_flag[i].
[0201] 8) To address the 3D issue, the constraints on subpics and the combination of scalability and ILP were updated so that the constraint is not applied when sps_num_subpics_minus1 equals 0.
[0202] a. Alternatively, update the constraints so that they are not applied when subpic_info_present_flag equals 0.
[0203] 9) To address problem 3e, the constraints on sub-images and the combination of scalability and ILP were updated so that the constraints impose cross-layer alignment restrictions on images in a certain target set of AU.
[0204] a. In one example, for each CLVS referring to the current layer of SPS, assume that the target set of AU, targetAuSet, is all AUs from the AU containing the first picture of the CLVS in the decoding order to the AU containing the last picture of the CLVS in the decoding order (inclusive of endpoints).
[0205] 10) To address issue 3f, the constraints on the combination of sub-images and scalability with ILP were updated so that the constraints impose cross-layer alignment restrictions on the values of each of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset.
[0206] 11) To solve problem 4, the juxtaposed image of the current image is constrained to not be a long-term reference image (LTRP).
[0207] a. Alternatively, the constraint is that the juxtaposed image of the current image should not be an interlayer reference image (ILRP).
[0208] b. Alternatively, the juxtaposed images of the current images are constrained to be LTRP or ILRP.
[0209] c. Alternatively, if the juxtaposed image of the current image is LTRP or ILRP, then the extension is not applied to obtain the motion vector pointing to the juxtaposed image.
[0210] 12) To address problem 5, a constraint was imposed that for any two images in the same CLVS that have the same values for pic_width_in_luma_samples and pic_height_in_luma_samples, the values of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset should be the same.
[0211] a. Instead, replace “within the same CLVS” with “within the same CVS” above.
[0212] b. Alternatively, the constraints can be specified as follows: Assume ppsA and ppsB refer to any two PPSs of the same SPS. One requirement of bitstream compliance is that when ppsA and ppsB have the same values for pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, ppsA and ppsB should also have the same values for scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset, respectively.
[0213] c. Alternatively, the constraints can be specified as follows: For any two images in the same CVS that satisfy all of the following conditions, the values of each of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset should be the same: i. These two images have the same values for pic_width_in_luma_samples and pic_height_in_luma_samples, respectively.
[0214] ii. These two images belong to the same layer or two layers, that is, one layer is the reference layer of the other.
[0215] 13) It was proposed that when the image resolution / expanded window of the current image is different from that of other images in the same access unit, ILP should only be allowed when the current image is an IRAP image.
[0216] 14) In this document, image resolution may refer to the width and / or height of an image, or it may refer to the width and / or height and / or top-left corner position of the image's extended window / or dependent window.
[0217] 15) In this document, the absence of RPR may mean that any reference images of the current image have the same resolution as the current image.
[0218] 16) Regarding bitstream extraction to solve problem 6, one or more of the following solutions are proposed: a. In one example, to export the output sub-bitstream, remove the parameter set (e.g., SPS / PPS / APS NAL unit) that is not included in the list LayerIdInOls[targetOlsIdx] for nuh_layer_id.
[0219] b. For example, the derivation of the output sub-bitstream OutBitstream may depend on one or more of the following: i. Remove all NAL units from outBitstream where nal_unit_type is equal to SPS_NUT and nuh_layer_id is not included in the list LayerIdInOls[targetOlsIdx].
[0220] ii. Remove all NAL units from outBitstream whose nal_unit_type is equal to PPS_NUT and whose nuh_layer_id is not included in the list LayerIdInOls[targetOlsIdx].
[0221] iii. Remove all NAL units from outBitstream where nal_unit_type is equal to APS_NUT and nuh_layer_id is not included in the list LayerIdInOls[targetOlsIdx].
[0222] iv. Remove all NAL units from outBitstream that have nal_unit_type equal to SPS_NUT, PPS_NUT, or APS_NUT and satisfy any of the following conditions: 1. – For at least j values in the range of 0 to NumLayersInOls[targetOlsIdx]-1 (inclusive), nuh_layer_id is greater than LayerIdInOls[targetOlsIdx][j].
[0223] 2. nuh_layer_id is not included in the list LayerIdInOls[targetOlsIdx].
[0224] v. When the first NAL unit whose nal_unit_type is equal to any of SPS_NUT, PPS_NUT, and APS_NUT is deleted during extraction, the second NAL unit referring to the first NAL unit should also be deleted.
[0225] c. For example, the derivation of the output sub-bitstream OutBitstream may depend on one or more of the following: i. – Remove from outBitstream all NAL units whose nal_unit_type is equal to any of VPS_NUT, DCI_NUT, and EOB_NUT and whose nuh_layer_id is not included in the list LayerIdOls[targetOlsIdx].
[0226] 17) The number of bits required to signal the APS ID (e.g., adaptation_parameter_set_id) depends on the APS type.
[0227] a. The bits required to signal the APS ID (e.g., adaptation_parameter_set_id) are changed from u(3) to U(v).
[0228] i. In one example, for an adaptive loop filter (ALF) APS, u(a) can be used to encode and decode the APS ID.
[0229] ii. In one example, for Luminance Mapping and Chroma Extension (LMCS), u(b) can be used to encode and decode the APS ID.
[0230] iii. In one example, for an extended list of APS, the APS ID can be encoded or decoded using u(c).
[0231] iv. In one example, a / b / c depends on the maximum number of APS allowed for the corresponding type.
[0232] 1. In one example, a > b and a > c.
[0233] 2. In one example, a >= b and a > c.
[0234] 3. In one example, c > b.
[0235] 4. In one example, b=2.
[0236] 5. In one example, c=3.
[0237] 6. In one example, a = 3 or greater than 3 (e.g., 4, 5, 6, 7, 8, 9).
[0238] b. The encoding / decoding order of APS ID (e.g., adaptation_parameter_set_id) and APS type (e.g., aps_params_type in VVC text) is switched so that the APS type exists before the APS ID in the bitstream.
[0239] c. The total number of filters allowed in APS may be limited based on encoding / decoding information such as image / strip type, encoding / decoding structure (dual-tree or single-tree), and layer information.
[0240] The total number of filters allowed in an APS may include the total number of ALFs in all APS NAL units with PUs and the total number of luminance / chrominance ALFs and CC-ALFs in the APS.
[0241] ii. The total number of filters allowed in APS may include the total number of adaptive loop filter classes for the luminance component (or luminance ALF filter), the total number of alternative filters for the chrominance component (chrominance ALF filter), and / or the total number of cross-component filters in all APS NAL units with PU.
[0242] 6. Example of an implementation plan
[0243] The following are some exemplary embodiments of the invention summarized in Section 5 above, which can be applied to the VVC specification. Most of the relevant parts that have been added or modified are in accordance with... Bold, Italic, Underline The deleted parts are marked, while some deleted parts are indicated by [[]].
[0244] 6.1. First Embodiment
[0245] This embodiment applies to items 1, 1.a, 1.b, 1.c, 1.d, 3, 4.ai, 5, 6, 7, 8, 9, 9.a, 10, 11 and 12b.
[0246] 7.3.2.3 Sequence Parameter Set Syntax
[0247] 7.4.3.3 Sequence Parameter Set (RBSP) Semantics ...
[0249] A value of 1 for ref_pic_resampling_enabled_flag specifies one or more stripes of an image in CLVS. This can refer to reference images with different spatial resolutions within an active entry in a list of reference images. ref_pic_ A `resampling_enabled_flag` value of 0 indicates that no stripe of an image in CLVS refers to a list of reference images. The activity entries contain reference images with different spatial resolutions.
[0250] Note 2 – When ref_pic_resampling_enabled_flag equals 1, for the current image, different The reference image with spatial resolution may belong to the same layer as the layer containing the current image or a different layer.
[0251] A res_change_in_clvs_allowed_flag value of 1 indicates that the image space resolution may be changed in a CLVS referencing an SPS. A res_change_in_clvs_allowed_flag value of 0 indicates that the image space resolution will not be changed in any CLVS referring to an SPS. If it does not exist, then infer the value of res_change_in_clvs_allowed_flag, etc. At 0. ...
[0253] A subpic_treated_as_pic_flag[i] equal to 1 indicates that the i-th subpic of each codec image in CLVS is treated as an image during decoding, excluding loop filtering operations. A subpic_treated_as_pic_flag[i] equal to 0 indicates that the i-th subpic of each codec image in CLVS is not treated as an image during decoding, excluding loop filtering operations. If it does not exist, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag.
[0254] when sps_num_subpics_minus1 is greater than 0 and When subpic_treated_as_pic_flag[i] equals 1 For each CLVS of the current layer referring to SPS, assume that targetAuSet is from the first graph containing the CLVS in the decoding order. All AUs (including endpoints) from the start of the slice's AU to the AU of the last image in the CLVS decoding order. , Bitstream compliance requirements For the targetLayerSet consisting of the current layer and all layers that use the current layer as a reference layer. , All of the following conditions must be met: – The AU in targetAuSet and the layers in targetLayerSet All images should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0255] All images of AUs in targetAuSet and layers in targetLayerSet should have scaling_win_ left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_ The same value for each of them in bottom_offset.
[0256] -Depend on the layers in targetLayerSet All referenced SPSs should have the same sps_num_subpics_minus1 value, and for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), it should have subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], and subpic_ctu_top_left_y[j], respectively. subpic_treated_as_pic_flag[j] The same value as [[loop_filter_across_subpic_enabled_flag[j],]].
[0257] – The AU in targetAuSet and the layers in targetLayerSet All images should have the same SubpicIdVal[j] value for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive). ...
[0259] 7.4.3.4 Image Parameter Set RBSP Semantics ...
[0261] A scaling_window_explicit_signalling_flag value of 1 indicates that the extended window offset parameter exists in the PPS. A scaling_window_explicit_signalling_flag value of 0 indicates that the extended window offset parameter does not exist in the PPS. ref_pic_resampling_enabled_flag [[ When res_change_in_clvs_allowed_flag equals 0, the value of scaling_window_explicit_signalling_flag should also be 0.
[0262] `scaling_win_left_offset`, `scaling_win_right_offset`, `scaling_win_top_offset`, and `scaling_win_bottom_offset` specify the offsets applied to the image size for scaling ratio calculation. If not present, the values of `scaling_win_left_offset`, `scaling_win_right_offset`, `scaling_win_top_offset`, and `scaling_win_bottom_offset` are assumed to be equal to `pps_conf_win_left_offset`, `pps_conf_win_right_offset`, `pps_conf_win_top_offset`, and `pps_conf_win_bottom_offset`, respectively.
[0263] SubWidthC The value of (scaling_win_left_offset + scaling_win_right_offset) should be less than pic_width_in_luma_samples, while SubHeightC The value of (scaling_win_top_offset + scaling_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0264] Assume ppsA and ppsB refer to any two PPSs of the same SPS. One requirement of bitstream compliance is that when... ppsA and ppsB have the same pic_width_in_luma_samples and pic_height_in_luma_samples respectively. When the values are set, ppsA and ppsB should have scaling_win_left_offset, scaling_win_right_offset, and scaling_win_left_offset respectively. The scaling_win_top_offset and scaling_win_bottom_offset have the same value.
[0265] The derivation of variables PicOutputWidthL and PicOutputHeightL is as follows: PicOutputWidthL = pic_width_in_luma_samples - (78) SubWidthC ( scaling_win_right_offset + scaling_win_left_offset ) PicOutputHeightL = pic_height_in_luma_samples - (79) SubWidthC ( scaling_win_bottom_offset + scaling_win_top_offset ) Assume that refPicOutputWidthL and refPicOutputHeightL refer to the PicOutputWidthL and PicOutputHeightL of the reference image of the current image in this PPS, respectively. Bitstream compliance requirements must satisfy all of the following conditions: –PicOutputWidthL 2 should be greater than or equal to refPicWidthInLumaSamples.
[0266] –PicOutputHeightL 2 should be greater than or equal to refPicHeightInLumaSamples.
[0267] –PicOutputWidthL should be less than or equal to refPicWidthInLumaSamples 8.
[0268] –PicOutputHeightL should be less than or equal to refPicHeightInLumaSamples 8.
[0269] – PicOutputWidthL pic_width_max_in_luma_samples should be greater than or equal to refPicOutputWidthL (pic_width_in_luma_samples - Max( 8, MinCbSizeY )).
[0270] – PicOutputHeightL pic_height_max_in_luma_samples should be greater than or equal to refPicOutputHeightL (pic_height_in_luma_samples - Max( 8, MinCbSizeY )). ...
[0272] 7.3.3.2 General Constraint Information Syntax
[0273] 7.4.4.2 General Constraint Information Semantics ...
[0275] The value of no_ref_pic_resampling_constraint_flag being 1 indicates that ref_pic_resampling_ `enabled_flag` should be equal to 0. Setting `no_ref_pic_resampling_constraint_flag` to 0 will prevent this from being applied. constraint.
[0276] A value of 1 for `no_res_change_in_clvs_constraint_flag` specifies that `res_change_in_clvs_allowed_flag` should be 0. A value of 0 for `no_res_change_in_clvs_constraint_flag` will not impose this constraint. ...
[0278] 7.4.8.1 General Strip Header Semantics ...
[0280] A slice_collocated_from_l0_flag value of 1 specifies that the juxtaposed images used for temporal motion vector prediction are derived from reference image list 0. A slice_collocated_from_l0_flag value of 0 specifies that the juxtaposed images used for temporal motion vector prediction are derived from reference image list 1.
[0281] When slice_type equals B or P, ph_temporal_mvp_enabled_flag equals 1, and slice_collocated_from_l0_flag does not exist, the following applies: – If rpl_info_in_ph_flag equals 1, then it is inferred that slice_collocated_from_l0_flag equals ph_collocated_from_l0_flag.
[0282] – Otherwise (rpl_info_in_ph_flag equals 0 and slice_type equals P), infer that slice_collocated_from_l0_flag equals 1.
[0283] `slice_collocated_ref_idx` specifies the reference index for the juxtaposed images used for temporal motion vector prediction.
[0284] When slice_type equals P or when slice_type equals B and slice_collocated_from_l0_flag equals 1, slice_collocated_ref_idx refers to the entry in reference image list 0, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[0]-1 (inclusive of the endpoint).
[0285] When slice_type equals B and slice_collocated_from_l0_flag equals 0, slice_collocated_ref_idx refers to the entry in reference image list 1, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[1]-1 (inclusive of the endpoint).
[0286] When slice_collocated_ref_idx does not exist, the following applies: – If rpl_info_in_ph_flag equals 1, then it is inferred that the value of slice_collocated_ref_idx is equal to ph_collocated_ref_idx.
[0287] – Otherwise (rpl_info_in_ph_flag equals 0), infer that the value of slice_collocated_ref_idx is equal to 0.
[0288] Bitstream compliance requires that the image referenced by slice_collocated_ref_idx must be identical across all slices of the encoded / decoded image. And it should not be a long-term reference image.
[0289] Bitstream compliance requires that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference image referenced by slice_collocated_ref_idx should be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current image, respectively, and RprConstraintsActive[slice_collocated_from_l0_flag?0:1][slice_collocated_ref_idx] should be equal to 0. ...
[0291] 8.5.3.2.2 Bilinear Interpolation Process for Brightness Samples ...
[0293] Brightness position in the entire sample unit (xInt) i ,yInt i The derivation of ) is as follows, for i=0..1: – If subpic_treated_as_pic_flag[CurrSubpicIdx] equals 1 And refer to the pictures. The sps_num_subpics_minus1 of refPicLX is greater than 0 Then the following situations apply: xInt i = Clip3( SubpicLeftBoundaryPos, SubpicRightBoundaryPos, xInt L +i ) (640) yInt i = Clip3( SubpicTopBoundaryPos, SubpicBotBoundaryPos, yInt L + i )(641) Otherwise (subpic_treated_as_pic_flag[CurrSubpicIdx] equals 0) Or refer to the image. The sps_num_subpics_minus1 of refPicLX is equal to 0. ), applicable in the following situations: xInt i = Clip3( 0, picW - 1, refWraparoundEnabledFlag ? ClipH((PpsRefWraparoundOffset) MinCbSizeY, picW, (xInt) L + i ) ): xInt L + i ) (642) yInt i = Clip3( 0, picH - 1, yInt L + i ) (643) ...
[0294] 8.5.6.3.2 Brightness Sample Interpolation and Filtering Process ...
[0296] – If subpic_treated_as_pic_flag[CurrSubpicIdx] equals 1 And refer to the pictures. The sps_num_subpics_minus1 of refPicLX is greater than 0 Then the following situations apply: xInt i = Clip3( SubpicLeftBoundaryPos, SubpicRightBoundaryPos, xInt i (959) yInt i = Clip3( SubpicTopBoundaryPos, SubpicBotBoundaryPos, yInt i (960) Otherwise (subpic_treated_as_pic_flag[CurrSubpicIdx] equals 0) Or refer to the image. The sps_num_subpics_minus1 of refPicLX is equal to 0. ), applicable in the following situations: xInt i = Clip3( 0, picW - 1, refWraparoundEnabledFlag ? ClipH((PpsRefWraparoundOffset) MinCbSizeY, picW, xInt i ): xInt i (961) yInt i = Clip3( 0, picH - 1, yInt i (962) ...
[0297] 8.5.6.3.3 Process of obtaining integer samples of brightness ...
[0299] The derivation of the brightness position (xInt, yInt) in the full sample unit is as follows: – If subpic_treated_as_pic_flag[CurrSubpicIdx] equals 1 And refer to the pictures. The sps_num_subpics_minus1 of refPicLX is greater than 0 Then the following situations apply: xInt = Clip3( SubpicLeftBoundaryPos, SubpicRightBoundaryPos, xInt L (968) yInt = Clip3( SubpicTopBoundaryPos, SubpicBotBoundaryPos, yInt L (969) -otherwise( subpic_treated_as_pic_flag[CurrSubpicIdx] equals 0 or refers to the image. The sps_num_subpics_minus1 of refPicLX is equal to 0. ), applicable in the following situations: xInt = Clip3( 0, picW - 1, refWraparoundEnabledFlag ? (970) ClipH((PpsRefWraparoundOffset) MinCbSizeY, picW, xInt L ): xInt L ) yInt = Clip3( 0, picH - 1, yInt L (971) ...
[0300] 8.5.6.3.4 Colorimetric Sample Interpolation Process ...
[0302] – If subpic_treated_as_pic_flag[CurrSubpicIdx] equals 1 And refer to the pictures. The sps_num_subpics_minus1 of refPicLX is greater than 0 Then the following situations apply: xInt i = Clip3( SubpicLeftBoundaryPos / SubWidthC, SubpicRightBoundaryPos / SubWidthC, xInt i (977) yInt i = Clip3( SubpicTopBoundaryPos / SubHeightC,SubpicBotBoundaryPos / SubHeightC, yInt i (978) Otherwise (subpic_treated_as_pic_flag[CurrSubpicIdx] equals 0) Or refer to the image. The sps_num_subpics_minus1 of refPicLX is equal to 0. ), applicable in the following situations: xInt i = Clip3( 0, picW C- 1, refWraparoundEnabledFlag ?ClipH( xOffset,picW C , xInt i ): (979) xInt C + i - 1 ) yInt i = Clip3( 0, picH C - 1, yInt i (980) ... Alternatively, the highlighted section “and the reference image refPicLX’s sps_num_subpics_minus1 is greater than 0” can be replaced with “and if the reference image refPicLX is an ILRP with the same spatial resolution as the current image”.
[0303] Alternatively, the highlighted section “or the reference image refPicLX’s sps_num_subpics_minus1 equals 0” can be replaced with “or if the reference image refPicLX is an ILRP with a different spatial resolution than the current image”.
[0304] Alternatively, requirements for juxtaposed images include, for example, "bitstream compliance requirements, the image referenced by slice_collocated_ref_idx should be identical for all slices of the encoded / decoded image." And it should not be a long-term reference image. "This can be replaced with "Bitstream compliance requirement: the image referenced by slice_collocated_ref_idx should be identical for all slices of the encoded / decoded image." And it should not be an interlayer reference image. ".
[0305] Alternatively, requirements for juxtaposed images include, for example, "bitstream compliance requirements, the image referenced by slice_collocated_ref_idx should be identical for all slices of the encoded / decoded image." And it should not be a long-term reference image. "This can be replaced with "Bitstream compliance requirement: the image referenced by slice_collocated_ref_idx should be identical for all slices of the encoded / decoded image." And it should not be a long-term reference image or an interlayer reference image. ".
[0306] 6.2. Second Embodiment
[0307] In some alternative embodiments, the following constraints apply to the first embodiment: when sps_num_subpics_minus1 is greater than 0 and When subpic_treated_as_pic_flag[i] equals 1 For each CLVS of the current layer referring to SPS, assume that targetAuSet is from the first graph containing the CLVS in the decoding order. All AUs (including endpoints) from the start of the slice's AU to the AU of the last image in the CLVS decoding order. , Bitstream compliance requirements For a targetLayerSet consisting of the current layer and all layers that use the current layer as a reference layer... All of the following conditions must be met: – The AU in targetAuSet and the layers in targetLayerSet All images should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0308] – All images in the targetAuSet (AU) and the targetLayerSet (layers) should have scaling_win_ left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_ The same value for each of them in bottom_offset.
[0309] -Depend on the layers in targetLayerSet All referenced SPSs should have the same sps_num_subpics_minus1 value, and for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), it should have subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], and subpic_ctu_top_left_y[j], respectively. subpic_treated_as_pic_flag[j] [[ loop_filter_ across_subpic_enabled_flag[j],]] The same value.
[0310] – The AU in targetAuSet and the layers in targetLayerSet All images should have the same SubpicIdVal[j] value for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive).
[0311] Replace with one of the following: 1) When sps_num_subpics_minus1 is greater than 0 and When subpic_treated_as_pic_flag[i] equals 1 For each CLVS of the current layer referring to the SPS, assume that targetAuSet is the first CLVS in the decoding order. All AUs (including endpoints) from the start of an AU in a picture to the AU of the last picture containing the CLVS in the decoding order. , Bitstream compliance requirements For a targetLayerSet consisting of the current layer and all layers that use the current layer as a reference layer... All of the following conditions must be met: – The AU in targetAuSet and the layers in targetLayerSet All images should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0312] – All images in the targetAuSet (AU) and the targetLayerSet (layers) should have scaling_win_ left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_ The same value for each of them in bottom_offset.
[0313] -Depend on the layers in targetLayerSet All referenced SPSs should have the same sps_num_subpics_minus1 value, and for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), they should each have subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], and subpic_width_minus1[j] respectively. and The same value for subpic_height_minus1[j], [[and loop_filter_across_subpic_enabled_flag[j],]].
[0314] – The AU in targetAuSet and the layers in targetLayerSet All images should have the same SubpicIdVal[j] value for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive).
[0315] 2) When sps_num_subpics_minus1 is greater than 0 and When subpic_treated_as_pic_flag[i] equals 1 For each CLVS of the current layer referring to the SPS, assume that targetAuSet is the first CLVS in the decoding order. All AUs (including endpoints) from the start of an AU in a picture to the AU of the last picture containing the CLVS in the decoding order. , Bitstream compliance requirements For a targetLayerSet consisting of the current layer and all layers that use the current layer as a reference layer... All of the following conditions must be met: – The AU in targetAuSet and the layers in targetLayerSet All images should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0316] All images of AUs in targetAuSet and layers in targetLayerSet should have scaling_win_ left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_ The same value for each of them in bottom_offset.
[0317] -Depend on the layers in targetLayerSet All referenced SPSs should have the same sps_num_subpics_minus1 value, and for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), they should have the same values for subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], and loop_filter_across_subpic_enabled_flag[j].
[0318] – The AU in targetAuSet and the layers in targetLayerSet All images should have the same SubpicIdVal[j] value for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive).
[0319] 3) When subpic_treated_as_pic_flag[i] equals 1, For each of the current layers referring to SPS CLVS, assuming targetAuSet starts from the AU of the first image in the CLVS containing the decoding order and continues to the image containing the decoding order. The last image in CLVS contains all AUs (including endpoints). , Bitstream compliance requirements For the current layer and The targetLayerSet consists of all layers that are used as the reference layer. All of the following conditions must be met: – The AU in targetAuSet and the layers in targetLayerSet All images should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0320] – All images in the targetAuSet (AU) and the targetLayerSet (layers) should have scaling_win_ left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_ The same value for each of them in bottom_offset.
[0321] -Depend on the layers in targetLayerSet All referenced SPSs should have the same sps_num_subpics_minus1 value, and for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), it should have subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], and subpic_ctu_top_left_y[j], respectively. subpic_treated_as_pic_flag[j] The same value as [[loop_filter_across_subpic_enabled_flag[j],]].
[0322] – The AU in targetAuSet and the layers in targetLayerSet All images should have the same SubpicIdVal[j] value for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive).
[0323] 4) When sps_num_subpics_minus1 is greater than 0 and When subpic_treated_as_pic_flag[i] equals 1 For each CLVS of the current layer referring to the SPS, assume that targetAuSet is the first CLVS in the decoding order. All AUs (including endpoints) from the start of an AU in a picture to the AU of the last picture containing the CLVS in the decoding order. , Bitstream compliance requirements For a targetLayerSet consisting of the current layer and all layers that use the current layer as a reference layer... All of the following conditions must be met: – The AU in targetAuSet and the layers in targetLayerSet All images should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0324] – All images in the targetAuSet (AU) and the targetLayerSet (layers) should have scaling_win_ left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_ The same value for each of them in bottom_offset.
[0325] -Depend on the layers in targetLayerSet All referenced SPSs should have the same sps_num_subpics_minus1 value, and for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive), it should have subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], ... subpic_treated_as_pic_flag[j] And the same value as loop_filter_across_subpic_enabled_flag[j].
[0326] – The AU in targetAuSet and the layers in targetLayerSet All images should have the same SubpicIdVal[j] value for each j value in the range from 0 to sps_num_subpics_minus1 (inclusive).
[0327] 6.3. Third Embodiment
[0328] This example addresses the following limitations on the maximum number of ALF and CC-ALF filters: 1) The constraint on the number of ALF APSs is replaced with a constraint on the number of filters. More specifically, the following constraints are proposed: The total number of adaptive loop filter classes for the luminance component, the total number of alternative filters for the chrominance component, and the total number of cross-component filters in all APS NAL units of the PU should be less than or equal to 200, 64, and 64, respectively.
[0329] 2) Based on Project 1), the encoding and decoding of APS ID in the APS syntax is further changed from u(5) to u(v), with lengths of 9, 2 and 3 for ALF, LMCS and extended list APS, respectively.
[0330] 3) Based on Project 1, further change the encoding and decoding of the ALF APS index and the number of ALF APS in PH and SH from u(v) to ue(v).
[0331] 7.3.2.5 Adaptive Parameter Set (RBSP) Syntax
[0332] 7.3.2.7 Image Header Structure Syntax
[0333] 7.3.7.1 General Strip Header Syntax
[0334] 7.4.3.5 Adaptive Parameter Set Semantics
[0335] Each APS RBSP should be available for the decoding process before it is referenced, including in at least one AU, where the TemporalId is less than or equal to the TemporalId of the codec strip NAL unit that references the APS RBSP or is provided externally.
[0336] All APS NAL cells within a PU that have the specific values adaptation_parameter_set_id and aps_params_type, regardless of whether they are prefix or suffix APS NAL cells, should have the same content.
[0337] The `adaptation_parameter_set_id` provides an identifier for PPS for reference by other syntax elements. The length (in bits) of the syntax element `adaptation_parameter_set_id` is `aps_params_type = ALF_APS?9:(aps_params_type == LMCS_APS ?2:3)`.
[0338] When aps_params_type equals ALF_APS [[or SCALING_APS]], the value of adaptation_parameter_set_id should be between 0 and [[7]]. 327 Within the range (including the endpoints).
[0339] When aps_params_type equals LMCS_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 3 (inclusive).
[0340] Assume that `apsLayerId` is the value of `nuh_layer_id` for a specific APS NAL cell, and assume that `vclLayerId` is the value of `nuh_layer_id` for a specific VCL NAL cell. A specific VCL NAL cell should not refer to a specific APS NAL cell unless `apsLayerId` is less than or equal to `vclLayerId`, and the layer whose `nuh_layer_id` is equal to `apsLayerId` is included in at least one OLS that includes layers whose `nuh_layer_id` is equal to `vclLayerId`.
[0341] aps_params_type specifies the type of APS parameters carried in the APS specified in Table 6.
[0342] …
[0343] Bitstream compliance requirements, the total number of adaptive loop filter classes for the luminance component, and the alternative filters for the chrominance component. The total number of filters and the total number of transcomponent filters in all APS NAL units with PU should be less than or equal to 1. 200, 64 and 64.
[0344] All APS NAL cells with a specific value of aps_params_type (regardless of the nuh_layer_id value) share the same value space for adaptation_parameter_set_id. APS NAL cells with different values of aps_params_type use a separate value space for adaptation_parameter_set_id.
[0345] 7.4.3.7 Image header structure and semantics
[0346] ph_num_alf_aps_ids_luma specifies the number of ALF APSs referred to by the stripe associated with PH. ph_ The value of num_alf_aps_ids_luma should be in the range of 0 to 200 (inclusive).
[0347] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALFAPS referred to by the luminance component of the strip associated with PH. The value of ph_alf_aps_id_luma[i] should be in the range of 0 to 327. In the middle (including endpoints).
[0348] ph_alf_aps_id_chroma[i] specifies the adaptation_parameter_set_id of the ALF APS referred to by the chromaticity component of the strip associated with PH. The value of ph_alf_aps_id_chroma[i] should be in the range of 0 to 327. (Including endpoints).
[0349] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cb color component of the strip associated with PH. The value of ph_alf_aps_id_chroma[i] should be in the range of 0 to 327. (Including endpoints).
[0350] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cr color component of the strip associated with PH. The value of ph_alf_aps_id_chroma[i] should be in the range of 0 to 327. (Including endpoints).
[0351] 7.4.8.1 General Strip Header Semantics
[0352] `slice_num_alf_aps_ids_luma` specifies the number of ALF APSs represented by the slice. When `slice_alf_enabled_flag` is equal to 1 and `slice_num_alf_aps_ids_luma` does not exist, the value of `slice_num_alf_aps_ids_luma` is inferred to be equal to the value of `ph_num_alf_aps_ids_luma`. slice_num_alf_aps_ids_luma The value should be in the range of 0 to 200 (inclusive).
[0353] `slice_alf_aps_id_luma[i]` specifies the `adaptation_parameter_set_id` of the i-th ALF APS represented by the luminance component of the slice. The `TemporalId` of the APS NAL unit where `aps_params_type` equals `ALF_APS` and `adaptation_parameter_set_id` equals `slice_alf_aps_id_luma[i]` should be less than or equal to the `TemporalId` of the NAL unit of the codec slice. When `slice_alf_enabled_flag` equals 1 and `slice_alf_aps_id_luma[i]` does not exist, it is inferred that the value of `slice_alf_aps_id_luma[i]` is equal to the value of `ph_alf_aps_id_luma[i]`. The value of slice_alf_aps_id_luma[i] should be in the range of 0 to 327 (inclusive).
[0354] `slice_alf_aps_id_chroma` specifies the `adaptation_parameter_set_id` of the ALF APS represented by the chroma components of the slice. The `temporalId` of the APS NAL unit where `aps_params_type` equals `ALF_APS` and `adaptation_parameter_set_id` equals `slice_alf_aps_id_chroma` should be less than or equal to the `temporalId` of the NAL unit of the codec slice. When `slice_alf_enabled_flag` equals 1 and `slice_alf_aps_id_chroma` does not exist, the value of `slice_alf_aps_id_chroma` is inferred to be equal to the value of `ph_alf_aps_id_chroma`. slice_alf_aps_ The value of id_chroma should be in the range of 0 to 327 (inclusive).
[0355] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id that the Cb color component of the strip refers to.
[0356] The TemporalId of the APS NAL unit where aps_params_type equals ALF_APS and adaptation_parameter_set_id equals slice_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the codec slice NAL unit. When slice_cc_alf_cb_enabled_flag equals 1 and slice_cc_alf_cb_aps_id does not exist, it will be inferred that the value of slice_cc_alf_cb_aps_id is equal to the value of ph_cc_alf_cb_aps_id. slice_cc_alf_ The value of cb_aps_id should be in the range of 0 to 327 (inclusive).
[0357] The alf_cc_cb_filter_signal_flag value of the APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id should be equal to 1.
[0358] `slice_cc_alf_cr_aps_id` specifies the `adaptation_parameter_set_id` that the Cr color component of the slice refers to. The `TemporalId` of the APS NAL unit where `aps_params_type` equals `ALF_APS` and `adaptation_parameter_set_id` equals `slice_cc_alf_cr_aps_id` should be less than or equal to the `TemporalId` of the NAL unit of the codec slice. When `slice_cc_alf_cr_enabled_flag` equals 1 and `slice_cc_alf_cr_aps_id` does not exist, it is inferred that the value of `slice_cc_alf_cr_aps_id` is equal to the value of `ph_cc_alf_cr_aps_id`. slice_cc_ The value of alf_cr_aps_id should be in the range of 0 to 327 (inclusive).
[0359] The alf_cc_cr_filter_signal_flag value of the APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to slice_cc_alf_cr_aps_id should be equal to 1.
[0360] In the examples above, the following can be used instead: `adaptation_parameter_set_id` provides an identifier for PPS for reference by other syntax elements. The length (in bits) of the syntax element `adaptation_parameter_set_id` is `aps_params_type = ALF_APS?` M :(aps_params_type == LMCS_APS ?2:3), where M Values equal to or greater than 3 (e.g., 4, 5, 6, 7, 8, 9).
[0361] The values '200, 64, 64' can be replaced with other non-zero integer values.
[0362] The value of '327' can be replaced with other non-zero integer values.
[0363] Figure 5This is a block diagram illustrating an exemplary video processing system 1900 in which various technologies disclosed herein may be implemented. Various embodiments may include some or all of the components of system 1900. System 1900 may include an input 1902 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8-bit or 10-bit multi-component pixel values), or may be received in a compressed or encoded format. Input 1902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, Passive Optical Network (PON), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.
[0364] System 1900 may include codec component 1904, which may implement the various codec or encoding methods described in this document. Codec component 1904 may reduce the average bit rate of the video output from input 1902 to codec component 1904 to produce a codec representation of the video. Therefore, codec techniques are sometimes referred to as video compression or video transcoding techniques. The output of codec component 1904 may be stored or transmitted via connected communication, as represented by component 1906. The stored or transmitted bitstream (or codec) representation of the video received at input 1902 may be used by component 1908 to generate pixel values or displayable video, which is sent to display interface 1910. The process of generating user-visible video from the bitstream representation is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “codec” operations or tools, it should be understood that codec tools or operations are used in the encoder, and the decoder will perform the corresponding decoding tool or operation that reverses the codec result.
[0365] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Accessory), PCI, IDE, etc. The technologies described in this document can be found in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0366] Figure 6This is a block diagram of a video processing apparatus 3600. Apparatus 3600 can be used to implement one or more methods described herein. Apparatus 3600 can be embodied in a smartphone, tablet computer, computer, Internet of Things (IoT) receiver, etc. Apparatus 3600 may include one or more processors 3602, one or more memories 3604, and video processing hardware 3606. Processor 3602 can be configured to implement one or more methods described herein. Memory (multiple memories) 3604 can be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 3606 can be used to implement some of the techniques described herein in hardware circuitry.
[0367] Figure 8 This is a block diagram illustrating an exemplary video codec system 100 that can utilize the techniques disclosed herein.
[0368] like Figure 8 As shown, the video encoding / decoding system 100 may include a source device 110 and a target device 120. The source device 110 generates encoded video data and may be referred to as a video encoding device. The target device 120 can decode the encoded video data generated by the source device 110 and may be referred to as a video decoding device.
[0369] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0370] Video source 112 may include sources such as video capture devices, interfaces for receiving video data from video content providers, and / or computer graphics systems for generating video data, or combinations of such sources. Video data may include one or more images. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include a series of bits that form a codec representation of the video data. The bitstream may include codec images and associated data. A codec image is a codec representation of an image. Associated data may include sequence parameter sets, image parameter sets, and other syntax structures. I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. Encoded video data may be transmitted directly to target device 120 via network 130a through I / O interface 116. Encoded video data may also be stored on storage medium / server 130b for access by target device 120.
[0371] The target device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.
[0372] I / O interface 126 may include a receiver and / or a modem. I / O interface 126 may acquire encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 may decode the encoded video data. Display device 122 may display the decoded video data to a user. Display device 122 may be integrated with target device 120, or may be external to target device 120, which is configured to interface with an external display device.
[0373] The video encoder 114 and the video decoder 124 can operate according to video compression standards such as the High Efficiency Video Codec (HEVC) standard, the Multi-Functional Video Codec (VVM) standard, and other current and / or additional standards.
[0374] Figure 9 This is a block diagram illustrating an example of a video encoder 200, which can be... Figure 8 The video encoder 114 in the system 100 shown.
[0375] The video encoder 200 can be configured to perform any or all of the techniques disclosed herein. Figure 9 In the example, the video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video encoder 200. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0376] The functional components of the video encoder 200 may include a partitioning unit 201, a prediction unit 202 (which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra-frame prediction unit 206), a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.
[0377] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intra-block copy (IBC) unit. The IBC unit can perform prediction in IBC mode, where at least one reference picture is the picture in which the current video block is located.
[0378] Furthermore, some components (such as motion estimation unit 204 and motion compensation unit 205) can be highly integrated, but in Figure 9 The examples are shown separately for illustrative purposes.
[0379] Partitioning unit 201 can partition an image into one or more video blocks. Video encoder 200 and video decoder 300 can support various video block sizes.
[0380] The mode selection unit 203 can select one of the encoding / decoding modes, i.e., intra-frame prediction or inter-frame prediction, based on the error result, and provide the resulting intra- or inter-frame block to the residual generation unit 207 to generate residual block data, which is then provided to the reconstruction unit 212 to reconstruct the coded block for use as a reference image. In some examples, the mode selection unit 203 can select a combination of intra-frame and inter-frame prediction (CIIP) modes, where the prediction is based on both the inter-frame prediction signal and the intra-frame prediction signal. The mode selection unit 203 can also select the resolution of the motion vectors for the block (e.g., sub-pixel or integer pixel precision) in the case of inter-frame prediction.
[0381] To perform inter-frame prediction on the current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 can determine the predicted video block for the current video block based on the motion information and decoded samples of images from buffer 213 (rather than images associated with the current video block).
[0382] The motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block, depending on whether the current video block is in an I-band, P-band, or B-band.
[0383] In some examples, motion estimation unit 204 can perform unidirectional prediction on the current video block, and can search for a reference video block for the current video block in the reference images of list 0 or list 1. Motion estimation unit 204 can then generate a reference index indicating a reference image in list 0 or list 1 containing a reference video block and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.
[0384] In other examples, motion estimation unit 204 can perform bidirectional prediction on the current video block. Motion estimation unit 204 can search for a reference video block for the current video block in the reference images in list 0, and can also search for another reference video block for the current video block in the reference images in list 1. Motion estimation unit 204 can then generate a reference index indicating the reference images in lists 0 and 1, which contain the reference video block and a motion vector indicating the spatial displacement between the reference video block and the current video block. Motion estimation unit 204 can output the reference index and motion vector of the current video block as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.
[0385] In some examples, the motion estimation unit 204 can output a complete set of motion information for the decoder's decoding process.
[0386] In some examples, the motion estimation unit 204 may not output a complete set of motion information for the current video. More precisely, the motion estimation unit 204 may signal the motion information of the current video block by referencing the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of an adjacent video block.
[0387] In one example, the motion estimation unit 204 may indicate a value in the syntax structure associated with the current video block that indicates to the video decoder 300 that the current video block has the same motion information as another video block.
[0388] In another example, motion estimation unit 204 can identify another video block and motion vector difference (MVD) within the syntactic structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. Video decoder 300 can use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0389] As discussed above, the video encoder 200 can predictively signal motion vectors. Two examples of predictive signaling techniques that can be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Combined Mode Signaling.
[0390] Intra-prediction unit 206 can perform intra-prediction on the current video block. When intra-prediction unit 206 performs intra-prediction on the current video block, it can generate prediction data for the current video block based on decoded samples of other video blocks in the same image. The prediction data for the current video block may include the predicted video block and various syntax elements.
[0391] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the predicted video block from the current video block. The residual data for the current video block can include residual video blocks corresponding to different sample components of the samples in the current video block.
[0392] In other examples, such as in skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform the subtraction operation.
[0393] The transform processing unit 208 can generate a transform coefficient video block for the current video block by applying one or more transforms to the residual video block associated with the current video block.
[0394] After the transform processing unit 208 generates a transform coefficient video block associated with the current video block, the quantization unit 209 can quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0395] Inverse quantization unit 210 and inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block from the transform coefficient video block. Reconstruction unit 212 can add the reconstructed residual video block to the corresponding sample from one or more predicted video blocks generated by prediction unit 202 to produce a reconstructed video block associated with the current block, which can then be stored in buffer 213.
[0396] After the video block is reconstructed by the reconstruction unit 212, a loop filtering operation can be performed to reduce the video block effect in the video block.
[0397] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy encoded data and output a bit stream including the entropy encoded data.
[0398] Figure 10 This is a block diagram illustrating an example of a video decoder 300, which can be... Figure 8 The video decoder 114 in the system 100 shown.
[0399] The video decoder 300 can be configured to perform any or all of the techniques disclosed herein. Figure 10 In the example, the video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0400] exist Figure 10 In the example, video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, video decoder 300 can perform decoding channels, which typically correspond to the encoding channels described with respect to video encoder 200. Figure 9 ).
[0401] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded video data blocks). The entropy decoding unit 301 can decode the entropy-coded video data, and the motion compensation unit 302 can determine motion information based on the entropy-coded video data. This motion information includes motion vectors, motion vector precision, reference image list index, and other motion information. The motion compensation unit 302 can determine this information, for example, by performing AMVP and merging modes.
[0402] The motion compensation unit 302 can generate motion compensation blocks, thereby potentially performing interpolation based on an interpolation filter. The identifier of the interpolation filter used at sub-pixel precision can be included in the syntax element.
[0403] The motion compensation unit 302 can use the interpolation filter used by the video encoder 200 during the encoding of the video block to calculate the sub-integer pixel interpolation of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 based on the received syntax information, and use the interpolation filter to generate the prediction block.
[0404] The motion compensation unit 302 may use some syntax information to determine the size of the blocks used to encode the frames and / or stripes of the encoded video sequence, partition information describing how each macroblock of the picture of the encoded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and a list of reference frames) for each inter-frame coded block, and other information used to decode the encoded video sequence.
[0405] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks from spatially adjacent blocks. Inverse quantization unit 303 performs inverse quantization, for example, dequantization, on the video block coefficients provided in the bitstream and decoded and quantized by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.
[0406] The reconstruction unit 306 can add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra-frame prediction unit 303 to form a decoded block. If necessary, a deblocking filter can also be applied to filter the decoded block to eliminate block artifacts. The decoded video block is then stored in a buffer 307, which provides a reference block for subsequent motion compensation / intra-frame prediction and also generates decoded video for presentation on the display device.
[0407] The following provides a list of preferred solutions from some embodiments.
[0408] The following solutions illustrate exemplary embodiments of the techniques discussed in the previous chapter (e.g., Project 1).
[0409] 1. A video processing method (e.g., Figure 7 The method 700 shown includes: performing a (702) conversion between videos comprising one or more video pictures, wherein the encoding / decoding representation conforms to a format rule; wherein the format rule specifies that two or more syntax fields in a sequence parameter set control the reference picture resolution (RPR) change in the video.
[0410] 2. According to the method of Solution 1, the first syntax field of two or more syntax fields indicates whether RPR is used for one or more pictures, and the second syntax field of two or more syntax fields indicates whether the picture resolution is allowed to be changed at the sequence level in the codec representation.
[0411] The following solutions illustrate exemplary embodiments of the techniques discussed in the previous section (e.g., Project 2).
[0412] 3. A video processing method comprising: performing a conversion between videos comprising one or more video images, wherein the encoding / decoding representation conforms to a format rule; wherein the format rule specifies that a single syntax field in a sequence parameter set controls changes in the reference image resolution (RPR) of the video; and wherein the format rule specifies that resampling of the inter-layer reference image is permitted for the purpose of conversion regardless of the value of the single syntax field.
[0413] The following solutions illustrate exemplary embodiments of the techniques discussed in the previous section (e.g., items 3, 5, 6, 7, 9, 10).
[0414] 4. A video processing method comprising: performing a conversion between a video comprising one or more layers, the one or more layers comprising one or more video images, the one or more video images comprising one or more sub-images, wherein the encoding / decoding representation conforms to a format rule; wherein the format rule specifies a first constraint on cross-layer alignment or a second constraint on a combination of sub-images and scalability of the inter-layer images.
[0415] 5. According to the method of Solution 4, the first constraint defines cross-layer alignment constraints on the current layer and all higher layers that depend on the current layer, but does not impose alignment constraints on lower layers in the current layer and all higher layers that do not depend on the current layer.
[0416] 6. According to the approach of Solution 4, the second constraint imposes cross-layer alignment restrictions on all layers in each dependency tree of a specific layer.
[0417] 7. According to the method of Solution 4, the second constraint value restricts subpic_treated_as_pic_flag[i] based on the cross-layer alignment constraint.
[0418] 8. According to the method of Solution 4, the second constraint value limits loop_filter_across_subpic_enabled_flag[i] based on the cross-layer alignment constraint.
[0419] 9. The method according to any one of solutions 4 to 8, wherein a first constraint and / or a second constraint are specified for a set of target access units.
[0420] 10. According to the method of Solution 4, the second constraint restricts the value of each of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset and scaling_win_bottom_offset according to the cross-layer alignment constraint.
[0421] The following solutions illustrate exemplary embodiments of the techniques discussed in the previous section (e.g., Item 11).
[0422] 11. A video processing method comprising: performing a conversion between a video comprising one or more layers, the one or more layers comprising one or more video images, the one or more video images comprising one or more sub-images, wherein the conversion conforms to a format rule that disallows inter-layer reference images or long-term reference images as juxtaposed images of the current image used for the conversion.
[0423] The following solutions illustrate exemplary embodiments of the techniques discussed in the previous section (e.g., Item 12).
[0424] 12. A video processing method comprising: performing a conversion between a video comprising multiple images and a codec representation of the video, wherein the conversion conforms to the following rule: the value of each of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset is identical for any two images in the same codec layer video sequence or the codec video sequence having the same values of pic_width_in_luma_samples and pic_height_in_luma_samples.
[0425] The following solutions illustrate exemplary embodiments of the techniques discussed in the previous chapter (e.g., Item 13).
[0426] 13. A video processing method, comprising: performing a conversion between a video comprising multiple images and a video codec representation, wherein the conversion conforms to the following rule: if the image resolution or expansion window is different for the current image and other images in the same access unit, then inter-layer prediction is allowed only when the current image is an intra-frame random access point image.
[0427] 14. The method according to any one of solutions 1 to 13, wherein the conversion includes encoding the video into a codec representation.
[0428] 15. The method according to any one of solutions 1 to 13, wherein the conversion includes decoding the codec representation to generate pixel values of the video.
[0429] 16. A video decoding apparatus, including a processor configured to implement the method according to one or more of solutions 1 to 15.
[0430] 17. A video encoding apparatus, including a processor configured to implement a method according to one or more of solutions 1 to 15.
[0431] 18. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to perform a method according to any one of solutions 1 to 15.
[0432] 19. A method, apparatus or system described in this patent document.
[0433] Figure 13This is a flowchart representation of a method 1300 for video processing according to the present technology. Method 1300 includes performing a conversion between video and video bitstreams at operation 1310 according to rules. The rules specify that the type of the adaptive parameter set is indicated before the identifier of the adaptive parameter set.
[0434] In some embodiments, there is a first syntax element indicating the type of the adaptive parameter set, and then a second syntax element indicating an identifier for the adaptive parameter set within the adaptive parameter set. In some embodiments, the number of bits required to represent the value of the identifier for the adaptive parameter set varies based on the type of the adaptive parameter set. In some embodiments, A bits are required to represent the identifier of an adaptive parameter set of type Adaptive Loop Filter (ALF), B bits are required to represent the identifier of an adaptive parameter set of type Luminance Mapping and Chroma Extension (LMCS), and C bits are required to represent the identifier of an adaptive parameter set of type Extended List. In some embodiments, A = B > C. In some embodiments, A = 3.
[0435] Figure 14 This is a flowchart representation of a method 1400 for video processing according to the present technology. Method 1400 includes performing a conversion between video and video bitstreams at operation 1410 according to rules. The rules specify the total number of allowed filters indicated in an adaptive parameter set based on encoding / decoding information in the bitstreams.
[0436] In some embodiments, the encoding / decoding information includes picture type, stripe type, encoding / decoding tree structure, or layer information. In some embodiments, the total number of filters allowed in the adaptive parameter set of adaptive loop filter types within the picture unit includes the total number of adaptive loop filters and / or the total number of cross-component adaptive loop filters. In some embodiments, the total number of filters allowed in the adaptive parameter set unit within the picture unit includes the total number of adaptive loop filter categories for the luminance component, the total number of alternative filters for the chrominance component, and / or the total number of cross-component adaptive loop filters.
[0437] In some embodiments, the conversion includes encoding the video into a bitstream. In some embodiments, the conversion includes decoding the video from the bitstream.
[0438] In the solution described in this paper, the encoder conforms to the format rules by generating a codec representation based on those rules. In the solution described in this paper, the decoder uses the format rules to parse the syntax elements in the codec representation, and, knowing the presence or absence of these syntax elements based on the format rules, generates the decoded video.
[0439] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from a pixel representation of a video to a corresponding bitstream representation (or vice versa). For example, the bitstream representation of the current video block may correspond to bits that are co-located or distributed at different positions in the bitstream, as defined by the syntax. For example, macroblocks may be encoded based on the error residuals from the transform and encoding / decoding, and also using bits in the header and other fields in the bitstream. Furthermore, during the conversion, the decoder may resolve the bitstream based on deterministics and know that certain fields may or may not be present, as described in the solutions above. Similarly, the encoder may determine whether to include certain syntax fields and generate the codec representation accordingly by including or excluding syntax fields in the codec representation.
[0440] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuits or computer software, firmware, or hardware, or a combination thereof, including the structures disclosed in this document and their equivalents. The disclosed and other embodiments can be implemented as one or more computer program products encoded on a computer-readable medium for execution by or control of the operation of a data processing apparatus, such as one or more modules of computer program instructions. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of substances influencing machine-readable propagation signals, or a combination thereof. The term "data processing apparatus" encompasses all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination thereof. Propagation signals are artificially generated signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device.
[0441] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or any other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored as a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), a single file dedicated to the program in question, or multiple coordinated files (e.g., a file storing portions of one or more modules, subroutines, or code). Computer programs can be deployed to execute on one or more computers located at a single site or distributed across multiple sites and interconnected by a communications network.
[0442] The processes or logical flows described in this document can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating outputs. The processes and logical flows can also be executed by special-purpose logic circuitry, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits), and the devices can also be implemented as special-purpose logic circuitry, such as FPGAs or ASICs.
[0443] A processor suitable for executing computer programs includes, for example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, the processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include one or more mass storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data, or operatively coupled to receive data from or transfer data to one or more mass storage devices, or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM optical disks. The processor and memory may be supplemented or integrated therein by dedicated logic circuitry.
[0444] Although this patent document contains numerous details, these details should not be construed as limiting any subject matter or potentially claimed content, but rather as descriptions of features specific to particular embodiments that may be specific to particular technologies. Certain features described in this patent document within the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described within the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although features may be described above as functioning in certain combinations and even initially claimed in this way, in some cases, one or more features from a claimed combination may be removed from that combination, and the claimed combination may involve sub-combinations or variations thereof.
[0445] Similarly, although operations are shown in a specific order in the figures, this should not be construed as requiring such operations to be performed in the shown specific order or sequential order, or performing all shown operations to achieve the desired result. Furthermore, the separation of the various system components described in this patent document should not be construed as requiring such separation in all embodiments.
[0446] Only a few implementation schemes and examples are described, and other implementations, enhancements and modifications can be made based on what is described and shown in this patent document.
Claims
1. A video processing method, comprising: Perform conversion between the video and the video's bitstream according to the rules. The rule states that the type of the adaptive parameter set should be indicated before the identifier of the adaptive parameter set, and The number of bits required to represent the value of the identifier of the adaptive parameter set varies based on the type of the adaptive parameter set.
2. The method of claim 1, wherein a first syntax element indicating the type of the adaptive parameter set exists in the adaptive parameter set before a second syntax element indicating the identifier of the adaptive parameter set.
3. The method of claim 2, wherein A bits are required to represent the identifier of the adaptive parameter set of type Adaptive Loop Filter (ALF), B bits are required to represent the identifier of the adaptive parameter set of type Luminance Mapping and Chroma Extension (LMCS), and C bits are required to represent the identifier of the adaptive parameter set of type Extended List.
4. The method according to claim 3, wherein A = B > C.
5. The method according to claim 3, wherein A = 3.
6. The method of claim 1, wherein the rule specifies the determination of the total number of allowed filters indicated in the adaptive parameter set based on the encoding / decoding information in the bitstream.
7. The method according to claim 6, wherein the encoding / decoding information includes image type, stripe type, encoding / decoding tree structure, or layer information.
8. The method according to claim 6 or 7, wherein the total number of allowed filters includes the total number of adaptive loop filters in the adaptive parameter set of the adaptive loop filter type within the image unit and / or the total number of cross-component adaptive loop filters.
9. The method of claim 6 or 7, wherein the total number of allowed filters includes the total number of adaptive loop filter categories for the luminance component, the total number of alternative filters for the chrominance component, and / or the total number of cross-component adaptive loop filters in the adaptive parameter set unit within the picture unit.
10. The method according to any one of claims 1 to 7, wherein the conversion comprises encoding the video into the bitstream.
11. The method according to any one of claims 1 to 7, wherein the conversion comprises decoding the video from the bitstream.
12. A method for storing a bitstream of video, comprising: Generate the bitstream of the video from the video according to the rules. The bitstream is stored in a non-transitory computer-readable recording medium. The rule states that the type of the adaptive parameter set should be indicated before the identifier of the adaptive parameter set, and The number of bits required to represent the value of the identifier of the adaptive parameter set varies based on the type of the adaptive parameter set.
13. The method of claim 12, wherein the rule specifies the determination of the total number of allowed filters indicated in the adaptive parameter set based on encoding / decoding information in the bitstream.
14. A video decoding apparatus, comprising a processor configured to implement the method according to any one of claims 1-9, 11.
15. A video encoding apparatus comprising a processor configured to implement the method according to any one of claims 1-10, 12-13.
16. A computer program product having computer code stored thereon, said code causing the processor to perform the method according to any one of claims 1 to 13 when executed by a processor.
17. A non-transitory computer-readable recording medium storing bitstreams of instructions and video, wherein the instructions, when executed, cause a processor to: Generate the bitstream of the video from the video according to the rules. The rule states that the type of the adaptive parameter set should be indicated before the identifier of the adaptive parameter set, and The number of bits required to represent the value of the identifier of the adaptive parameter set varies based on the type of the adaptive parameter set.
18. The non-transitory computer-readable recording medium of claim 17, wherein the rule specifies the determination of the total number of permissible filters indicated in the adaptive parameter set based on encoding / decoding information in the bitstream.
Citation Information
Patent Citations
Presence of adaptive parameter set units
CN115868159A