Reference picture list constraints and signaling in video coding

By judging the entries without reference pictures and their related information in video decoding, the bitstream consistency problem in video decoding is solved, and effective decoding constraint check is realized.

CN115398896BActive Publication Date: 2025-08-08QUALCOMM INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180028553.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-05-13
Filing Date
2021-05-14
Publication Date
2025-08-08
Estimated Expiration
2041-05-14

AI Technical Summary

Technical Problem

In video decoding, the prior art cannot effectively check constraints related to unreferenced pictures, resulting in bitstream consistency problems.

Method used

Effective decoding is performed by determining whether the entry in the reference picture list of the current picture is a non-reference picture and determining the additional information associated with it in order to check and comply with the corresponding constraints.

Benefits of technology

Ensure the bitstream consistency of the video decoding process and solve the problem of decoding constraint inspection without reference pictures.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115398896B_ABST
    Figure CN115398896B_ABST
Patent Text Reader

Abstract

Example techniques and devices are disclosed. An example device for decoding video data includes a memory configured to store the video data; and one or more processors implemented using circuitry and coupled to the memory. The one or more processors are configured to determine whether an entry in a reference picture list for a current picture is equal to no reference picture. Based on the entry being equal to no reference picture, the one or more processors are configured to determine additional information associated with the entry. The one or more processors are configured to check constraints for the entry based on the additional information and decode the current picture according to the constraints.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 024,863 filed on May 14, 2020 and U.S. Provisional Patent Application No. 63 / 028,416 filed on May 21, 2020, and the entire contents of these two applications are incorporated herein by reference. Technical Field

[0002] This disclosure relates to video encoding and video decoding. Background Art

[0003] Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recorders, digital media players, video game devices, video game consoles, cellular or satellite wireless telephones, so-called "smart phones", video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video coding techniques, such as those described in the standards specified by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10, Advanced Video Coding (AVC), ITU-T H.265 / High Efficiency Video Coding (HEVC), and extensions to these standards. By implementing these video coding techniques, video devices can more efficiently transmit, receive, encode, decode, and / or store digital video information.

[0004] Video coding techniques include spatial (intra-frame) prediction and / or temporal (inter-frame) prediction to reduce or eliminate redundancy inherent in video sequences. For block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) can be divided into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are encoded using spatial prediction relative to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction relative to reference samples in neighboring blocks in the same picture, or temporal prediction relative to reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames. Summary of the Invention

[0005] Video coding standards and draft video coding standards may require checking certain constraints to ensure conformance with the standard. However, in some cases, the information required to check may not be available. For example, information related to "no reference pictures" (e.g., unavailable reference pictures) may not be available. According to the techniques of the present disclosure, additional information associated with no reference pictures can be determined so that the video codec can check the constraints.

[0006] In general, this disclosure describes techniques for video coding. Specifically, this disclosure describes techniques for reference picture list constraints and signaling.

[0007] In one example, a method includes determining whether an entry in a reference picture list of a current picture is equal to no reference picture; determining additional information associated with the entry based on the entry being equal to no reference picture; checking a constraint for the entry based on the additional information; and decoding the current picture according to the constraint.

[0008] In another example, a device includes a memory configured to store video data, and one or more processors implemented using circuits and coupled to the memory, the one or more processors configured to: determine whether an entry in a reference picture list of a current picture is equal to no reference picture; based on the entry being equal to no reference picture, determine additional information associated with the entry; check constraints for the entry based on the additional information; and decode the current picture according to the constraints.

[0009] In another example, a non-transitory computer-readable medium stores instructions that, when executed, cause one or more processors to perform the following operations: determine whether an entry in a reference picture list of a current picture is equal to no reference picture; determine additional information associated with the entry based on the entry being equal to no reference picture; check constraints for the entry based on the additional information; and decode the current picture according to the constraints.

[0010] In another example, a device includes: a unit for determining whether an entry in a reference picture list of a current picture is equal to no reference picture; a unit for determining additional information associated with the entry based on the entry being equal to no reference picture; a unit for checking constraints for the entry based on the additional information; and a unit for decoding the current picture according to the constraints.

[0011] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] Figure 1 is a block diagram illustrating an exemplary video encoding and decoding system that may perform the techniques of this disclosure.

[0013] Figure 2A and Figure 2B is a conceptual diagram illustrating an exemplary quadtree binary tree (QTBT) structure and a corresponding coding tree unit (CTU).

[0014] Figure 3 is a block diagram illustrating an example video encoder that may perform the techniques of this disclosure.

[0015] Figure 4 is a block diagram illustrating an example video decoder that may perform the techniques of this disclosure.

[0016] Figure 5 is a flowchart illustrating an exemplary reference picture list technique according to the present disclosure.

[0017] Figure 6 is a flowchart illustrating an exemplary video encoding technique.

[0018] Figure 7 is a flow chart illustrating an exemplary video decoding technique. DETAILED DESCRIPTION

[0019] In some draft video coding standards, an instantaneous decoder refresh (IDR) picture is a picture that a video decoder can use to start decoding a coded video sequence (CVS). In some examples, a reference picture list can be associated with an IDR picture, even though the video decoder may not need a reference picture list to decode the IDR picture. In some implementations, a video decoder can check constraints associated with reference pictures for bitstream conformance purposes. Bitstream conformance can be an integral part of any video coding standard so that video encoders from one manufacturer can operate seamlessly with video decoders from other manufacturers.

[0020] The reference pictures in the reference picture list of an IDR picture may be "no reference pictures" or unavailable. This is because when the video decoder starts decoding an IDR picture, there may be no pictures in the decoded picture buffer, because the IDR picture may be the first picture decoded by the video decoder in the CVS. Thus, in some cases, it may not be possible to check the constraints on unavailable reference pictures.

[0021] According to the techniques of this disclosure, a video decoder can determine additional information associated with an unavailable reference picture, check constraints based on the additional information, and decode the current picture. In this way, the video decoder can check constraints on unavailable reference pictures to ensure bitstream consistency.

[0022] Figure 1 1 is a block diagram illustrating an exemplary video encoding and decoding system 100 that can perform the techniques of the present disclosure. The techniques of the present disclosure are generally directed to the decoding (encoding and / or decoding) of video data. Generally, video data includes any data used to process video. Thus, video data can include original, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata (e.g., signaling data).

[0023] like Figure 1 As shown in , in this example, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by a destination device 116. Specifically, source device 102 provides the video data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 may include any of a wide range of devices, including desktop computers, notebook (e.g., laptop) computers, mobile devices, tablet computers, set-top boxes, telephone handsets (e.g., smartphones), televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, broadcast receiver devices, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and, therefore, may be referred to as wireless communication devices.

[0024] exist Figure 1 In the example of FIG. 1 , source device 102 includes a video source 104, a memory 106, a video encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a video decoder 300, the memory 120, and a display device 118. According to the present disclosure, the video encoder 200 of source device 102 and the video decoder 300 of destination device 116 can be configured to apply reference picture list constraints and signaling techniques. Thus, source device 102 represents an example of a video encoding device, while destination device 116 represents an example of a video decoding device. In other examples, the source device and destination device can include other components or arrangements. For example, source device 102 can receive video data from an external video source such as an external camera. Similarly, destination device 116 can interface with an external display device rather than including an integrated display device.

[0025] like Figure 1The system 100 shown in FIG. 1 is merely an example. In general, any digital video encoding and / or decoding device can implement the techniques for reference picture list constraints and signaling. Source device 102 and destination device 116 are merely examples of such decoding devices, where source device 102 generates encoded video data for transmission to destination device 116. This disclosure refers to a "decoding" device as a device that performs decoding (encoding and / or decoding) of data. Thus, video encoder 200 and video decoder 300 represent examples of decoding devices (specifically, a video encoder and a video decoder, respectively). In some examples, source device 102 and destination device 116 can operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes video encoding and decoding components. Thus, system 100 can support one-way or two-way video transmission between source device 102 and destination device 116, for example, for video streaming, video playback, video broadcasting, or video telephony.

[0026] Typically, video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides a continuous sequence of pictures of the video data (also referred to as "frames") to video encoder 200, where video encoder 200 encodes the picture data. Video source 104 of source device 102 may include a video capture device (e.g., a camera), a video archive containing previously captured raw video, and / or a video feed interface for receiving video from a video content provider. As another alternative, video source 104 may generate computer graphics-based data as the source video, or a combination of real-time video, archived video, and computer-generated video. In each case, video encoder 200 encodes captured, pre-captured, or computer-generated video data. Video encoder 200 may rearrange the images from the order in which they were received (sometimes referred to as "display order") into a decoding order for decoding. Video encoder 200 may generate a bitstream including the encoded video data. Source device 102 may then output the encoded video data onto computer-readable medium 110 via output interface 108 for receipt and / or retrieval by, for example, input interface 122 of destination device 116 .

[0027] The memory 106 of the source device 102 and the memory 120 of the destination device 116 represent general purpose memory. In some examples, the memories 106 and 120 can store raw video data, e.g., raw video from the video source 104 and raw decoded video data from the video decoder 300. Additionally or alternatively, the memories 106 and 120 can store software instructions executable by, for example, the video encoder 200 and the video decoder 300, respectively. Although the memories 106 and 120 are shown separately from the video encoder 200 and the video decoder 300 in this example, it should be understood that the video encoder 200 and the video decoder 300 can also include internal memory to achieve functionally similar or equivalent purposes. Furthermore, the memories 106 and 120 can store encoded video data (e.g., output from the video encoder 200 and input to the video decoder 300). In some examples, a portion of the memories 106 and 120 can be allocated as one or more video buffers, e.g., for storing raw, decoded, and / or encoded video data.

[0028] The computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded video data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium for enabling the source device 102 to send the encoded video data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 can demodulate the transmission signal including the encoded video data according to a communication standard such as a wireless communication protocol, and the input interface 122 can demodulate the received transmission signal. The communication medium can include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network such as a local area network, a wide area network, or a global network (e.g., the Internet). The communication medium can include routers, switches, base stations, or any other device that facilitates communication from the source device 102 to the destination device 116.

[0029] In some examples, source device 102 may output the encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access the encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media (e.g., a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory), or any other suitable digital storage media for storing encoded video data.

[0030] In some examples, source device 102 may output the encoded video data to a file server 114 or another intermediate storage device that may store the encoded video data generated by source device 102. Destination device 116 may access the stored video data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded video data and transmitting the encoded video data to destination device 116. File server 114 may represent a network server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 may access the encoded video data from file server 114 via any standard data connection, including an internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination thereof, suitable for accessing encoded video data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download transfer protocol, or a combination thereof.

[0031] The output interface 108 and the input interface 122 may represent wireless transmitters / receivers, modems, wired network components (e.g., Ethernet cards), wireless communication components that operate according to any of the various IEEE 802.11 standards, or other physical components. In examples where the output interface 108 and the input interface 122 include wireless components, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, according to a cellular communication standard such as 4G, 4G-LTE (Long Term Evolution), LTE-Advanced, 5G, etc. In some examples where the output interface 108 includes a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, according to other wireless standards (e.g., IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., ZigBee 5G), etc.). TM ), Bluetooth TM Standards, etc.) to transmit data such as encoded video data. In some examples, source device 102 and / or destination device 116 may include respective system-on-chip (SoC) devices. For example, source device 102 may include an SoC device to perform the functions attributed to video encoder 200 and / or output interface 108, while destination device 116 may include an SoC device to perform the functions attributed to video decoder 300 and / or input interface 122.

[0032] The techniques of the present disclosure may be applied to video encoding to support any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, satellite television transmission, Internet streaming video transmission (e.g., Dynamic Adaptive Streaming over HTTP (DASH), digital video encoded onto a data storage medium), decoding of digital video stored on a data storage medium, or other applications.

[0033] The input interface 122 of the destination device 116 receives an encoded video bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded video bitstream may include signaling information defined by the video encoder 200 and used by the video decoder 300, such as syntax elements with values describing the characteristics and processing of video blocks or other coding units (e.g., slices, pictures, groups of pictures, sequences, etc.). The display device 118 displays decoded pictures of the decoded video data to a user. The display device 118 may represent any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.

[0034] Although not in Figure 1 , but in some examples, the video encoder 200 and the video decoder 300 may be integrated with an audio encoder and / or an audio decoder, respectively, and may include appropriate MUX-DEMUX units or other hardware and / or software to process a multiplexed stream including both audio and video in a common data stream. If applicable, the MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol or other protocols (e.g., User Datagram Protocol (UDP)).

[0035] The video encoder 200 and the video decoder 300 can each be implemented as any of a variety of appropriate encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When these techniques are implemented in part in software, the device can store instructions for the software in an appropriate non-transitory computer-readable medium and use one or more processors to execute these instructions in hardware to perform the techniques of the present disclosure. Each of the video encoder 200 and the video decoder 300 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device. The device including the video encoder 200 and / or the video decoder 300 may include an integrated circuit, a microprocessor, and / or a wireless communication device (e.g., a cellular phone).

[0036] The video encoder 200 and the video decoder 300 may operate according to a video coding standard such as ITU-T H.265 (also known as High Efficiency Video Coding (HEVC)) or its extensions (e.g., multi-view and / or scalable video coding extensions). Alternatively, the video encoder 200 and the video decoder 300 may operate according to other proprietary or industry standards such as ITU-T H.266 (also known as Versatile Video Coding (VVC)). A recent draft of the VVC standard is described in the following document: Bross, et al. “Versatile Video Coding (Draft 9),” Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 18th Meeting: by videoconference, 15–24 Apr. 2020, JVET-R2001-v8 (hereinafter referred to as “VVC Draft 9”). However, the technology of the present disclosure is not limited to any particular coding standard.

[0037] Typically, the video encoder 200 and the video decoder 300 can perform block-based encoding of a picture. The term "block" generally refers to a structure comprising data to be processed (e.g., an encoding, decoding, or other method used in the encoding and / or decoding process). For example, a block can include a two-dimensional matrix of samples of luma and / or chroma data. Typically, the video encoder 200 and the video decoder 300 can encode video data represented in a YUV (e.g., Y, Cb, Cr) format. That is, rather than decoding the red, green, and blue (RGB) data of the samples of a picture, the video encoder 200 and the video decoder 300 can decode the luma and chroma components, where the chroma components may include red and blue chroma components. In some examples, the video encoder 200 converts the received RGB formatted data into a YUV representation prior to encoding, and the video decoder 300 converts the YUV representation into an RGB format. Alternatively, pre-processing and post-processing units (not shown) can perform these conversions.

[0038] The present disclosure may generally refer to the decoding (e.g., encoding and decoding) of a picture, to include the process of encoding or decoding the data of the picture. Similarly, the present disclosure may refer to the decoding of blocks of a picture, to include the process of encoding or decoding the data of these blocks (e.g., prediction and / or residual coding). A coded video bitstream generally includes a series of values for syntax elements, where these syntax elements represent decoding decisions (e.g., decoding mode) and the division of the picture into blocks. Therefore, references to decoding a picture or block should generally be understood as referring to the decoded values of the syntax elements used to form the picture or block.

[0039] HEVC defines various blocks, including coding units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video decoder (e.g., video encoder 200) divides a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video decoder divides the CTU and CU into four equal, non-overlapping squares, and each node of the quadtree has zero or four child nodes. A node without child nodes may be referred to as a "leaf node," and the CU of such a leaf node may include one or more PUs and / or one or more TUs. The video decoder may further partition the PUs and TUs. For example, in HEVC, the residual quadtree (RQT) represents the partitioning of the TU. In HEVC, PU represents inter-frame prediction data, and TU represents residual data. An intra-predicted CU includes intra-frame prediction information (e.g., an intra-frame mode indication).

[0040] As another example, the video encoder 200 and the video decoder 300 can be configured to operate according to VVC. According to VVC, a video decoder (e.g., the video encoder 200) divides a picture into a plurality of coding tree units (CTUs). The video encoder 200 can divide the CTU according to a tree structure such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure eliminates the concept of multiple partition types, such as the separation between CU, PU, and TU of HEVC. The QTBT structure includes two levels: a first level divided according to quadtree partitioning and a second level divided according to binary tree partitioning. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of the binary tree correspond to the coding units (CUs).

[0041] In the MTT partitioning structure, blocks can be partitioned using quadtree (QT) partitioning, binary tree (BT) partitioning, and one or more types of ternary tree (TT) (also known as ternary tree (TT)) partitioning. A ternary tree or ternary tree partitioning is a partitioning that partitions a block into three sub-blocks. In some examples, a ternary tree or ternary tree partitioning partitions a block into three sub-blocks without partitioning the original block through the center. The partitioning types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.

[0042] In some examples, the video encoder 200 and the video decoder 300 may use a single QTBT or MTT structure to represent each of the luma and chroma components, while in other examples, the video encoder 200 and the video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luma component and another QTBT / MTT structure for the two chroma components (or two QTBT / MTT structures for corresponding chroma components).

[0043] The video encoder 200 and the video decoder 300 can be configured to use quadtree partitioning, QTBT partitioning, MTT partitioning, or other partitioning structures per HEVC. For ease of illustration, the technology of the present disclosure is described with respect to QTBT partitioning. However, it should be understood that the technology of the present disclosure can also be applied to video decoders configured to use quadtree partitioning or other types of partitioning.

[0044] In some examples, a CTU includes a coding tree block (CTB) of luma samples, two corresponding CTBs of chroma samples for a picture with three sample arrays, or a CTB of samples for a monochrome picture or a picture coded using three independent color planes and syntax structures for coding the samples. A CTB can be an NxN block of samples for some value of N, such that the partitioning of the constituent elements into CTBs is a form of partitioning. A constituent element is an array or a single sample from one of the three arrays (luma and two chroma) that make up a picture in 4:2:0, 4:2:2, or 4:4:4 color format, or from an array that makes up a picture in monochrome format. In some examples, a coding block is an MxN block of samples for some values of M and N, such that the partitioning of the CTB into a coding block is a form of partitioning.

[0045] Blocks (e.g., CTUs or CUs) can be grouped in a picture in various ways. For example, a brick can refer to a CTU row of a rectangular area within a particular tile in a picture. A tile can be a rectangular area of CTUs within a particular tile column and a particular tile row in a picture. A tile column refers to a CTU of a rectangular area with a height equal to the height of the picture and a width specified by a syntax element (e.g., such as given in a picture parameter set). A tile row refers to a CTU of a rectangular area with a height specified by a syntax element (e.g., such as given in a picture parameter set) and a width equal to the width of the picture.

[0046] In some examples, a tile can be divided into multiple bricks, each of which can include one or more CTU rows within the tile. A tile that is not divided into multiple bricks can also be called a brick. However, a brick that is a true subset of a tile cannot be called a tile.

[0047] Tiles in a picture can also be arranged into slices. A slice can be an integer number of tiles in a picture that can be contained exclusively in a single Network Abstraction Layer (NAL) unit. In some examples, a slice includes multiple complete tiles, or only a contiguous sequence of tiles from a tile.

[0048] This disclosure may use "NxN" and "N by N" interchangeably to refer to the sample size of a block (e.g., a CU or other video block) in the vertical and horizontal dimensions, for example, 16x16 samples or 16 by 16 samples. Typically, a 16x16 CU will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Likewise, an NxN CU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. The samples in a CU may be arranged in rows and columns. Furthermore, a CU does not necessarily have the same number of samples in the horizontal direction as in the vertical direction. For example, a CU may include NxM samples, where M is not necessarily equal to N.

[0049] The video encoder 200 encodes video data for a CU representing prediction and / or residual information and other information. The prediction information indicates how the CU will be predicted in order to form a prediction block for the CU. The residual information typically represents the sample-by-sample difference between the samples of the CU before encoding and the prediction block.

[0050] To predict a CU, the video encoder 200 may typically form a prediction block for the CU through inter-frame prediction or intra-frame prediction. Inter-frame prediction typically refers to predicting a CU from data of a previously encoded picture, while intra-frame prediction typically refers to predicting a CU from previously encoded data of the same picture. To perform inter-frame prediction, the video encoder 200 may use one or more motion vectors to generate a prediction block. The video encoder 200 may typically perform a motion search to identify a reference block that closely matches the CU, for example, in terms of the difference between the CU and a reference block. The video encoder 200 may calculate a difference metric using the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared difference (MSD), or other such difference calculations to determine whether the reference block closely matches the current CU. In some examples, the video encoder 200 may use unidirectional prediction or bidirectional prediction to predict the current CU.

[0051] Some examples of VVC also provide an affine motion compensation mode, which can be considered an inter-frame prediction mode. In affine motion compensation mode, the video encoder 200 can determine two or more motion vectors representing non-translational motion, such as reduction or enlargement, rotation, perspective motion, or other irregular motion types.

[0052] To perform intra prediction, the video encoder 200 can select an intra prediction mode to generate a prediction block. Some examples of VVC provide 67 intra prediction modes, including various directional modes as well as planar mode and DC mode. Typically, the video encoder 200 selects an intra prediction mode that describes the neighboring samples relative to the current block (e.g., the block of the CU) from which the samples of the current block are predicted. Assuming that the video encoder 200 decodes CTUs and CUs in raster scan order (from left to right, from top to bottom), these samples may typically be above, above left, or to the left of the current block in the same picture as the current block.

[0053] The video encoder 200 encodes data indicating a prediction mode for the current block. For example, for inter-frame prediction mode, the video encoder 200 may encode data indicating which of various available inter-frame prediction modes to use, as well as motion information for the corresponding mode. For unidirectional or bidirectional inter-frame prediction, for example, the video encoder 200 may use Advanced Motion Vector Prediction (AMVP) or Merge Mode to encode motion vectors. The video encoder 200 may use a similar mode to encode motion vectors for affine motion compensation mode.

[0054] After a prediction, such as intra-frame prediction or inter-frame prediction, of a block, the video encoder 200 may calculate residual data for the block. The residual data (e.g., a residual block) represents the sample-by-sample difference between the block and a prediction block for the block formed using a corresponding prediction mode. The video encoder 200 may apply one or more transforms to the residual block to produce transformed data in a transform domain rather than a sample domain. For example, the video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data. Additionally, the video encoder 200 may apply a secondary transform, such as a mode-dependent non-separable secondary transform (MDNSST), a signal-dependent transform, a Karhunen-Loeve transform (KLT), etc., after the first transform. After applying the one or more transforms, the video encoder 200 produces transform coefficients.

[0055] As described above, after performing any transforms to produce transform coefficients, the video encoder 200 can perform quantization of the transform coefficients. Quantization generally refers to the process of quantizing transform coefficients to potentially reduce the amount of data used to represent them, thereby providing further compression. By performing the quantization process, the video encoder 200 can reduce the bit depth associated with some or all of these transform coefficients. For example, during quantization, the video encoder 200 can round n-bit values to m-bit values, where n is greater than m. In some examples, to perform quantization, the video encoder 200 can perform a bitwise right shift of the value to be quantized.

[0056] After quantization, the video encoder 200 may scan the transform coefficients to produce a one-dimensional vector based on the two-dimensional matrix including the quantized transform coefficients. The scan may be designed to place transform coefficients with higher energy (and therefore lower frequency) at the front of the vector and transform coefficients with lower energy (and therefore higher frequency) at the back of the vector. In some examples, the video encoder 200 may scan the quantized transform coefficients using a predefined scan order to produce a serialized vector and then entropy encode the quantized transform coefficients of the vector. In other examples, the video encoder 200 may perform adaptive scanning. After scanning the quantized transform coefficients to form a one-dimensional vector, the video encoder 200 may entropy encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder 200 may also entropy encode the values of syntax elements that describe metadata associated with the encoded video data for use by the video decoder 300 when decoding the video data.

[0057] To perform CABAC, the video encoder 200 may assign context within a context model to a symbol to be transmitted. For example, the context may relate to whether the symbol's neighboring values are zero. The probability determination may be based on the context assigned to the symbol.

[0058] The video encoder 200 may also generate syntax data (e.g., block-based syntax data, picture-based syntax data, and sequence-based syntax data) for the video decoder 300, for example, in a picture header, a block header, a slice header, or other syntax data (e.g., a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). The video decoder 300 may similarly decode such syntax data to determine how to decode the corresponding video data.

[0059] In this way, the video encoder 200 can generate a bitstream including the encoded video data, for example, syntax elements for describing the division of a picture into blocks (e.g., CUs), and prediction and / or residual information for these blocks. Ultimately, the video decoder 300 can receive the bitstream and decode the encoded video data.

[0060] In general, the video decoder 300 performs a process reciprocal to that performed by the video encoder 200 to decode the encoded video data of the bitstream. For example, the video decoder 300 can decode the values of the syntax elements of the bitstream using CABAC in a manner substantially similar to (albeit reciprocal to) the CABAC encoding process of the video encoder 200. The syntax elements can define partitioning information for partitioning a picture into CTUs and partitioning each CTU according to a corresponding partitioning structure (e.g., a QTBT structure) to define the CUs of the CTU. These syntax elements can further specify prediction and residual information for a block (e.g., a CU) of video data.

[0061] The residual information can be represented by, for example, quantized transform coefficients. The video decoder 300 can inverse quantize and inverse transform the quantized transform coefficients of the block to reproduce a residual block for the block. The video decoder 300 uses the signaled prediction mode (intra-frame or inter-frame prediction) and related prediction information (e.g., motion information for inter-frame prediction) to form a prediction block for the block. The video decoder 300 can then combine the prediction block and the residual block (on a sample-by-sample basis) to reproduce the original block. The video decoder 300 can perform other processing, such as performing deblocking to reduce visual artifacts along block boundaries.

[0062] According to the technology of the present disclosure, a method includes: determining whether an entry in a reference picture list of a current picture is equal to no reference picture; based on the entry being equal to no reference picture, determining additional information associated with the entry; checking constraints for the entry based on the additional information; and decoding the current picture according to the constraints.

[0063] According to the technology of the present disclosure, a device includes a memory configured to store video data, and one or more processors implemented using circuits and coupled to the memory, wherein the one or more processors are configured to: determine whether an entry in a reference picture list of a current picture is equal to no reference picture; based on the entry being equal to no reference picture, determine additional information associated with the entry; check constraints for the entry based on the additional information; and decode the current picture according to the constraints.

[0064] According to the technology of the present disclosure, a non-transitory computer-readable medium stores instructions that, when executed, cause one or more processors to perform the following operations: determine whether an entry in a reference picture list of a current picture is equal to no reference picture; based on the entry being equal to no reference picture, determine additional information associated with the entry; check constraints for the entry based on the additional information; and decode the current picture according to the constraints.

[0065] According to the technology of the present disclosure, a device includes: a unit for determining whether an entry in a reference picture list of a current picture is equal to no reference picture; a unit for determining additional information associated with the entry based on the entry being equal to no reference picture; a unit for checking constraints for the entry based on the additional information; and a unit for decoding the current picture according to the constraints.

[0066] According to the technology of the present disclosure, a method includes: determining whether a layer containing a current picture is a dependent layer; based on the layer containing the current picture being a dependent layer, signaling or parsing a reference picture list; and decoding video data based on the reference picture list.

[0067] According to the techniques of this disclosure, a method includes determining whether inter-layer prediction is enabled for an instantaneous decoder refresh (IDR) slice; signaling or parsing a reference picture list based on enabling inter-layer prediction; and decoding video data based on the reference picture list.

[0068] According to the technology of the present disclosure, a method includes: determining whether inter-layer prediction is enabled for a slice; determining whether the slice is an IDR slice; based on enabling inter-layer prediction and the slice being an IDR slice, determining that the slice is an I slice; and decoding video data based on the I slice.

[0069] According to the technology of the present disclosure, a method includes: determining whether a reference picture list is signaled in a picture header for an IDR slice; determining whether there is an indication that the IDR slice does not have reference picture list signaling; adding one or more reference pictures to an empty reference picture list based on whether the reference picture list is signaled, the absence of an indication that the IDR slice does not have a reference picture list signaling, or both; and decoding video data based on the reference picture list.

[0070] According to the techniques of this disclosure, a method includes determining whether an entry in a reference picture list is equal to no reference picture; avoiding at least one action based on the entry not being equal to no reference picture; and decoding video data based on the reference picture list.

[0071] According to the techniques of this disclosure, a method includes determining whether information is needed to check constraints or decode video data; adding the information to a picture based on the need for the information to check constraints or decode the video data; and decoding the video data based on the information.

[0072] According to the technology of the present disclosure, a method includes: determining whether a picture is equal to no reference picture; generating an inter-layer reference picture for the picture based on the picture being equal to no reference picture; and decoding video data based on the inter-layer reference picture.

[0073] According to the technology of the present disclosure, a method includes: determining whether an IDR picture has reference picture list signaling; determining whether the IDR picture has an unavailable reference picture; generating an unavailable reference picture based on that the IDR picture has reference picture list signaling and the IDR picture has an unavailable reference picture; and decoding video data based on the generated unavailable reference picture.

[0074] According to the technology of the present disclosure, a method includes: determining a first reference picture list for a first slice, the first reference picture list including multiple entries, wherein at least one of the entries is an inter-layer reference picture; determining a second reference picture list for a second slice, the second reference picture list including multiple entries in the first reference picture list except the at least one inter-layer reference picture; and decoding video data based on the first reference picture list and the second reference picture list.

[0075] According to the technology of the present disclosure, a method includes: determining whether a sub-picture of a current picture is considered as a picture; and decoding video data using a current picture having a sub-picture layout different from a reference picture based on the sub-picture not being considered as a picture.

[0076] In accordance with techniques of this disclosure, a device includes a memory configured to store video data, and one or more processors implemented with circuitry and coupled to the memory, the one or more processors configured to perform any of the techniques of this disclosure.

[0077] According to the techniques of this disclosure, an apparatus includes one or more units for performing any of the techniques of this disclosure.

[0078] In accordance with the techniques of this disclosure, a computer-readable storage medium is encoded with instructions that, when executed, cause a programmable processor to perform any of the techniques of this disclosure.

[0079] The present disclosure generally relates to "signaling" certain information (e.g., syntax elements). The term "signaling" can generally refer to transmitting values for syntax elements and / or other data used to decode encoded video data. That is, the video encoder 200 can signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in the bitstream. As described above, the source device 102 can transmit the bitstream to the destination device 116 in substantially real time or in non-real time, such as when storing syntax elements on the storage device 112 for later retrieval by the destination device 116.

[0080] Figure 2A and Figure 2B is a conceptual diagram illustrating an exemplary quadtree binary tree (QTBT) structure 130 and a corresponding coding tree unit (CTU) 132. Solid lines represent quadtree partitioning, while dashed lines represent binary tree partitioning. In each partition (i.e., non-leaf) node of the binary tree, a flag is signaled to indicate which partitioning type (i.e., horizontal or vertical) is used, in this example, 0 indicates horizontal partitioning and 1 indicates vertical partitioning. For quadtree partitioning, since the quadtree node partitions a block horizontally and vertically into 4 sub-blocks of equal size, there is no need to indicate the partitioning type. Therefore, the video encoder 200 can encode the syntax elements (e.g., partitioning information) of the region tree level (i.e., solid lines) of the QTBT structure 130 and the syntax elements (e.g., partitioning information) of the prediction tree level (i.e., dashed lines) of the QTBT structure 130, and the video decoder 300 can decode them. The video encoder 200 may encode video data (eg, prediction and transform data) of a CU represented by a terminal leaf node of the QTBT structure 130 , and the video decoder 300 may decode it.

[0081] Generally speaking, Figure 2B The CTU 132 may be associated with parameters that specify the size of the block corresponding to the nodes of the first and second level QTBT structures 130. These parameters may include the CTU size (which represents the size of the CTU 132 in samples), the minimum quadtree size (MinQTSize, which represents the minimum allowed quadtree leaf node size), the maximum binary tree size (MaxBTSize, which represents the maximum allowed binary tree root node size), the maximum binary tree depth (MaxBTDepth, which represents the maximum allowed binary tree depth), and the minimum binary tree size (MinBTSize, which represents the minimum allowed binary tree child node size).

[0082] The root node of the QTBT structure corresponding to the CTU can have four child nodes at the first level of the QTBT structure, and each child node can be divided according to the quadtree partitioning. That is, the nodes at the first level are leaf nodes (no child nodes) or have four child nodes. The example of the QTBT structure 130 represents such a node, for example, including a parent node and child nodes with solid lines for branching. If the nodes at the first level are not larger than the maximum allowed binary tree root node size (MaxBTSize), these nodes can be further divided by the corresponding binary tree. The binary tree partitioning of a node can be iterated until the node generated by the partition reaches the minimum allowed binary tree leaf node size (MinBTSize) or the maximum allowed binary tree depth (MaxBTDepth). The example of the QTBT structure 130 represents such a node as having a dotted line for branching. The binary tree leaf node is called a decoding unit (CU), which is used for prediction (e.g., intra-frame or inter-frame prediction) and transformation without any further partitioning. As mentioned above, a CU can also be called a "video block" or "block".

[0083] In an example of a QTBT partitioning structure, the CTU size is set to 128x128 (luminance sample and two corresponding 64x64 chroma samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (for both width and height) is set to 4, and MaxBTDepth is set to 4. First, quadtree partitioning is applied to the CTU to generate quadtree leaf nodes. The size of the quadtree leaf node can range from 16x16 (i.e., MinQTSize) to 128x128 (i.e., the CTU size). If the quadtree leaf node is 128x128, since the size exceeds MaxBTSize (i.e., 64x64 in this example), the leaf quadtree node will not be further split by the binary tree. Otherwise, the quadtree leaf node will be further split by the binary tree. Therefore, the quadtree leaf node is also the root node of the binary tree, and the depth of the binary tree is 0. When the depth of the binary tree reaches MaxBTDepth (4 in this example), no further splitting is allowed. When the width of the binary tree node is equal to MinBTSize (4 in this example), it means that no further vertical splitting is allowed. Similarly, a binary tree node with a height equal to MinBTSize means that the binary tree node does not allow further horizontal splitting. As described above, the leaf nodes of the binary tree are called CUs and are further processed according to prediction and transformation without further division.

[0084] Figure 3 is a block diagram illustrating an exemplary video encoder 200 that may perform the techniques of this disclosure. Figure 3This is for explanatory purposes only and should not be considered limiting of the techniques broadly illustrated and described in this disclosure. For ease of illustration, this disclosure describes a video encoder 200 based on VVC (ITU-T H.266 under development) and HEVC (ITU-T H.265) techniques. However, video encoding devices configured to implement other video coding standards can perform the techniques of this disclosure.

[0085] exist Figure 3 In the example of FIG, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filtering unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any or all of the video data memory 230, the mode selection unit 202, the residual generation unit 204, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the filtering unit 216, the DPB 218, and the entropy coding unit 220 can be implemented in one or more processors or processing circuits. For example, the units of the video encoder 200 can be implemented as one or more circuits or logic elements as part of a hardware circuit or as part of a processor, an ASIC, or an FPGA. In addition, the video encoder 200 can include additional or alternative processors or processing circuits to perform these functions and other functions.

[0086] The video data memory 230 may store video data to be encoded by the components of the video encoder 200. The video encoder 200 may receive video data from, for example, the video source 104 ( Figure 1 ) receives video data stored in the video data memory 230. DPB218 can act as a reference picture memory that stores reference video data for use when the video encoder 200 predicts subsequent video data. Video data memory 230 and DPB 218 can be formed by any of a variety of storage devices, such as dynamic random access memory (DRAM), which includes synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of storage devices. Video data memory 230 and DPB 218 can be provided by the same storage device or different storage devices. In various examples, video data memory 230 can be on-chip with other components of the video encoder 200, as shown, or off-chip relative to those components.

[0087] In this disclosure, references to the video data memory 230 should not be construed as limited to memory internal to the video encoder 200 (unless specifically described as such), nor should they be construed as limited to memory external to the video encoder 200 (unless specifically described as such). Rather, references to the video data memory 230 should be understood as reference memory that stores video data that the video encoder 200 receives (e.g., video data of a current block to be encoded) for encoding. Figure 1 The memory 106 may also provide temporary storage for outputs from the various units of the video encoder 200 .

[0088] Shown Figure 3 The various units of the video encoder 200 are described to help understand the operations performed by the video encoder 200. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide specific functions and are pre-set in the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functions in the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., for receiving parameters or outputting parameters), but the type of operation performed by the fixed-function circuit is generally immutable. In some examples, one or more of these units can be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units can be integrated circuits.

[0089] The video encoder 200 may include an arithmetic logic unit (ALU), an elementary function unit (EFU), a digital circuit, an analog circuit, and / or a programmable core formed by a programmable circuit. In an example where the operation of the video encoder 200 is performed using software executed by a programmable circuit, the memory 106 ( Figure 1 ) may store instructions (eg, object code) for software that the video encoder 200 receives and executes, or another memory (not shown) in the video encoder 200 may store such instructions.

[0090] The video data memory 230 is configured to store received video data. The video encoder 200 can retrieve pictures of video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data memory 230 can be the original video data to be encoded.

[0091] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra prediction unit 226. The mode selection unit 202 may include other functional units to perform video prediction according to other prediction modes. For example, the mode selection unit 202 may include a palette unit, an intra-block copy unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, and the like.

[0092] The mode selection unit 202 typically coordinates multiple coding passes to test combinations of coding parameters and the resulting rate-distortion values for such combinations. Coding parameters may include: CTU to CU partitioning, prediction mode for a CU, transform type for a CU's residual data, quantization parameter for a CU's residual data, etc. The mode selection unit 202 may ultimately select a combination of coding parameters that has a better rate-distortion value than other tested combinations.

[0093] The video encoder 200 may divide the picture retrieved from the video data memory 230 into a series of CTUs and encapsulate one or more CTUs into a slice. The mode selection unit 202 may divide the CTUs of the picture according to a tree structure (e.g., the QTBT structure or quadtree structure of HEVC described above). As described above, the video encoder 200 may form one or more CUs by dividing the CTUs according to the tree structure. Such CUs may also be generally referred to as "video blocks" or "blocks."

[0094] Typically, the mode select unit 202 also controls its components (e.g., the motion estimation unit 222, the motion compensation unit 224, and the intra prediction unit 226) to generate a prediction block for the current block (e.g., the current CU, or, in HEVC, the overlapping portion of the PU and TU). For inter prediction of the current block, the motion estimation unit 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in the DPB 218). Specifically, the motion estimation unit 222 may calculate a value indicating how similar the potential reference blocks are to the current block, for example, based on the sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared difference (MSD), etc. The motion estimation unit 222 may typically perform these calculations using the sample-by-sample differences between the current block and the reference block being considered. The motion estimation unit 222 may identify the reference block with the minimum value resulting from these calculations, indicating the reference block that most closely matches the current block.

[0095] In some examples, motion estimation unit 222 can check the reference picture against the constraint, for example, to ensure that the reference picture passes the constraint (e.g., the reference picture meets the constraint). In some examples, motion estimation unit 222 can determine that the reference picture of the current picture is equal to no reference picture. Based on the entry being equal to no reference picture, motion estimation unit 222 can determine additional information associated with no reference picture. Motion estimation unit 222 can check the constraint for no reference picture based on the additional information. Based on the no reference picture passing the constraint, video encoder 200 can encode the current picture, such as with respect to Figure 3 and Figure 6 further discussed.

[0096] Motion estimation unit 222 may form one or more motion vectors (MVs) that define the position of a reference block in a reference picture relative to the current block in the current picture. Motion estimation unit 222 may then provide the motion vectors to motion compensation unit 224. For example, for unidirectional inter prediction, motion estimation unit 222 may provide a single motion vector, while for bidirectional inter prediction, motion estimation unit 222 may provide two motion vectors. Motion compensation unit 224 may then use the motion vectors to generate a prediction block. For example, motion compensation unit 224 may use the motion vectors to retrieve data for the reference block. As another example, if the motion vectors have fractional sample precision, motion compensation unit 224 may interpolate the values for the prediction block based on one or more interpolation filters. Furthermore, for bidirectional inter prediction, motion compensation unit 224 may retrieve data for the two reference blocks identified by the corresponding motion vectors and combine the retrieved data, for example, by sample-by-sample averaging or weighted averaging.

[0097] As another example, for intra prediction or intra prediction decoding, the intra prediction unit 226 can generate a prediction block based on samples adjacent to the current block. For example, for directional mode, the intra prediction unit 226 can generally mathematically combine the values of adjacent samples and pad these calculated values along a defined direction on the current block to produce a prediction block. As another example, for DC mode, the intra prediction unit 226 can calculate the average of the samples adjacent to the current block and generate a prediction block to include the obtained average for each sample of the prediction block.

[0098] Mode selection unit 202 provides the prediction block to residual generation unit 204. Residual generation unit 204 receives the original, unencoded version of the current block from video data memory 230 and the prediction block from mode selection unit 202. Residual generation unit 204 calculates the sample-by-sample difference between the current block and the prediction block. The resulting sample-by-sample difference defines a residual block for the current block. In some examples, residual generation unit 204 may also determine the difference between sample values in the residual block to generate the residual block using residual differential pulse code modulation (RDPCM). In some examples, residual generation unit 204 may be formed using one or more subtractor circuits that perform binary subtraction.

[0099] In the example where the mode selection unit 202 divides the CU into PUs, each PU can be associated with a luma prediction unit and a corresponding chroma prediction unit. The video encoder 200 and the video decoder 300 can support PUs of various sizes. As described above, the size of the CU can refer to the size of the luma coding block of the CU, and the size of the PU can refer to the size of the luma prediction unit of the PU. Assuming that the size of a particular CU is 2Nx2N, the video encoder 200 can support PU sizes of 2Nx2N or NxN for intra-frame prediction, and support symmetric PU sizes of 2Nx2N, 2NxN, Nx2N, NxN, etc. for inter-frame prediction. The video encoder 200 and the video decoder 300 can also support asymmetric partitioning of PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-frame prediction.

[0100] In the example where mode select unit 202 does not further split a CU into PUs, each CU may be associated with a luma coding block and a corresponding chroma coding block. As described above, the size of a CU may refer to the size of the luma coding block of the CU. Video encoder 200 and video decoder 300 may support CU sizes of 2Nx2N, 2NxN, or Nx2N.

[0101] For other video coding techniques (e.g., intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, to name a few), the mode selection unit 202 generates a prediction block for the current block being encoded via various units associated with the coding technique. In some examples (e.g., palette mode coding), the mode selection unit 202 may not generate a prediction block, but instead generate syntax elements that indicate how to reconstruct the block based on the selected palette. In such a mode, the mode selection unit 202 may provide these syntax elements to the entropy coding unit 220 for encoding.

[0102] As described above, the residual generation unit 204 receives video data of a current block and a corresponding prediction block. The residual generation unit 204 then generates a residual block for the current block. To generate the residual block, the residual generation unit 204 calculates the sample-by-sample difference between the prediction block and the current block.

[0103] The transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a "transform coefficient block"). The transform processing unit 206 may apply various transforms to the residual block to form the transform coefficient block. For example, the transform processing unit 206 may apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, the transform processing unit 206 may perform multiple transforms (e.g., a primary transform and a secondary transform (e.g., a rotation transform)) on the residual block. In some examples, the transform processing unit 206 does not apply a transform to the residual block.

[0104] The quantization unit 208 may quantize the transform coefficients in the transform coefficient block to produce a quantized transform coefficient block. The quantization unit 208 may quantize the transform coefficients of the transform coefficient block based on a quantization parameter (QP) value associated with the current block. The video encoder 200 (e.g., via the mode selection unit 202) may adjust the degree of quantization applied to the transform coefficient block associated with the current block by adjusting the QP value associated with the CU. Quantization may result in a loss of information, and thus, the precision of the quantized transform coefficients may be lower than the precision of the original transform coefficients generated by the transform processing unit 206.

[0105] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block to reconstruct a residual block based on the transform coefficient block. The reconstruction unit 214 may generate a reconstructed block corresponding to the current block (although possibly with some degree of distortion) based on the reconstructed residual block and the prediction block generated by the mode selection unit 202. For example, the reconstruction unit 214 may add samples of the reconstructed residual block to corresponding samples in the prediction block generated by the mode selection unit 202 to generate a reconstructed block.

[0106] Filtering unit 216 may perform one or more filtering operations on the reconstructed blocks. For example, filtering unit 216 may perform a deblocking operation to reduce blocking artifacts along the edges of the CU. In some examples, the operations of filtering unit 216 may be skipped.

[0107] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in instances where the operation of the filtering unit 216 is not required, the reconstruction unit 214 can store the reconstructed blocks in the DPB 218. In instances where the operation of the filtering unit 216 is required, the filtering unit 216 can store the filtered reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 can retrieve a reference picture from the DPB 218, which is formed by the reconstructed (and possibly filtered) blocks, to perform inter-frame prediction on subsequently encoded pictures. In addition, the intra-frame prediction unit 226 can use the reconstructed blocks in the DPB 218 of the current picture to perform intra-frame prediction on other blocks in the current picture.

[0108] In general, entropy coding unit 220 may entropy encode syntax elements received from other functional components of video encoder 200. For example, entropy coding unit 220 may entropy encode quantized transform coefficient blocks from quantization unit 208. As another example, entropy coding unit 220 may entropy encode prediction syntax elements (e.g., motion information for inter-frame prediction or intra-frame mode information for intra-frame prediction) from mode selection unit 202. Entropy coding unit 220 may perform one or more entropy encoding operations on syntax elements, another example of video data, to generate entropy-encoded data. For example, entropy coding unit 220 may perform a context-adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable-to-variable (V2V) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) encoding operation, an exponential Grunt coding operation, or another type of entropy encoding operation on the data. In some examples, entropy coding unit 220 may operate in a bypass mode in which entropy encoding of syntax elements is not performed.

[0109] The video encoder 200 may output a bitstream including entropy-encoded syntax elements required for reconstructing blocks of a slice or picture. Specifically, the entropy encoding unit 220 may output a bitstream.

[0110] The operations described above are described with respect to blocks. Such descriptions should be understood as operations for luma coding blocks and / or chroma coding blocks. As described above, in some examples, the luma coding blocks and chroma coding blocks are the luma and chroma components of a CU. In some examples, the luma coding blocks and chroma coding blocks are the luma and chroma components of a PU.

[0111] In some examples, the operations performed for luma coding blocks do not need to be repeated for chroma coding blocks. For example, the operations used to identify the motion vector (MV) and reference picture for the luma coding block do not need to be repeated to identify the MV and reference picture for the chroma blocks. Instead, the MV for the luma coding block can be scaled to determine the MV for the chroma blocks, and the reference picture can be the same. For another example, the intra prediction process can be the same for luma coding blocks and chroma coding blocks.

[0112] Video encoder 200 represents an example of a device configured to encode video data, the device including a memory configured to store the video data, and one or more processors implemented in circuitry and coupled to the memory, the one or more processors configured to: determine whether an entry in a reference picture list for a current picture is equal to no reference picture; determine additional information associated with the entry based on the entry being equal to no reference picture; check constraints for the entry based on the additional information; and encode the current picture according to the constraints.

[0113] The video encoder 200 represents an example of a device configured to encode video data, the device including a memory configured to store the video data, and one or more processing units implemented in a circuit and configured to: determine whether a layer containing a current picture is a dependent layer; based on the layer containing the current picture being a dependent layer, signal a reference picture list; and encode the video data based on the reference picture list.

[0114] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine whether inter-layer prediction is enabled for an instantaneous decoder refresh (IDR) slice; signal a reference picture list based on enabling inter-layer prediction; and encode the video data based on the reference picture list.

[0115] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in a circuit and configured to: determine whether inter-layer prediction is enabled for a slice; determine whether the slice is an IDR slice; determine that the slice is an I slice based on that inter-layer prediction is enabled and the slice is an IDR slice; and encode the video data based on the I slice.

[0116] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine whether a reference picture list is signaled in a picture header for an IDR slice; determine whether there is an indication that no reference picture list is signaled for the IDR slice; add one or more reference pictures to an empty reference picture list based on the signaling of the reference picture list, the absence of an indication that no reference picture list is signaled for the IDR slice, or both; and encode the video data based on the reference picture list.

[0117] Video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine whether an entry in a reference picture list is equal to no reference picture; avoid at least one action based on the entry not being equal to no reference picture; and encode the video data based on the reference picture list.

[0118] Video encoder 200 also represents an example of a device configured to encode video data, the device including a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine whether information is needed to check constraints or decode the video data; based on the need for information to check constraints or decode the video data, add the information to a picture; and encode the video data based on the information.

[0119] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in a circuit and configured to perform the following operations: determine whether a picture is equal to no reference picture; based on the picture being equal to no reference picture, generate an inter-layer reference picture for the picture; and encode the video data based on the inter-layer reference picture.

[0120] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine whether an IDR picture has a reference picture list signaling; determine whether the IDR picture has an unavailable reference picture; generate an unavailable reference picture based on the IDR picture having a reference picture list signaling and the IDR picture having an unavailable reference picture; and encode the video data based on the generated unavailable reference picture.

[0121] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine a first reference picture list for a first slice, the first reference picture list comprising a plurality of entries, wherein at least one of the entries is an inter-layer reference picture; determine a second reference picture list for a second slice, the second reference picture list comprising a plurality of entries in the first reference picture list in addition to the at least one inter-layer reference picture; and encode the video data based on the first reference picture list and the second reference picture list.

[0122] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising a memory configured to store the video data, and one or more processing units implemented in circuitry and configured to: determine whether a sub-picture of a current picture is considered as a picture; and based on the sub-picture not being considered as a picture, encode the video data using a current picture having a sub-picture layout that is different from a reference picture.

[0123] Figure 4 is a block diagram illustrating an exemplary video decoder 300 that can perform the techniques of this disclosure. Figure 4 This is for explanatory purposes only and should not be considered limiting of the techniques broadly illustrated and described in this disclosure. For ease of illustration, this disclosure describes a video decoder 300 based on techniques of VVC (ITU-T H.266 under development) and HEVC (ITU-T H.265). However, the techniques of this disclosure may be performed by video encoding devices configured to implement other video encoding standards.

[0124] exist Figure 4In the example of FIG. 3 , video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filtering unit 312, and a decoded picture buffer (DPB) 314. Any or all of CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, filtering unit 312, and DPB 314 may be implemented in one or more processors or processing circuitry. For example, the units of video decoder 300 may be implemented as one or more circuits or logic elements that are part of a hardware circuit or part of a processor, an ASIC, or an FPGA. Furthermore, video decoder 300 may include additional or alternative processors or processing circuitry to perform these and other functions.

[0125] The prediction processing unit 304 includes a motion compensation unit 316 and an intra prediction unit 318. The prediction processing unit 304 may include other units for performing prediction according to other prediction modes. For example, the prediction processing unit 304 may include a palette unit, an intra-block copy unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, and the like. In other examples, the video decoder 300 may include more, fewer, or different functional components.

[0126] CPB memory 320 may store video data (e.g., an encoded video bitstream) to be decoded by components of video decoder 300. For example, the video data may be encoded from computer readable medium 110 ( Figure 1 ) to obtain video data stored in CPB memory 320. CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from an encoded video bitstream. Furthermore, CPB memory 320 may store video data other than syntax elements of decoded pictures, for example, temporary data representing outputs from various units of video decoder 300. DPB 314 typically stores decoded pictures, which video decoder 300 may output and / or use as reference video data when decoding subsequent data or pictures of the encoded video bitstream. CPB memory 320 and DPB 314 may be formed from any of a variety of memory devices, such as DRAM (including SDRAM, MRAM, RRAM, or other types of memory devices). CPB memory 320 and DPB 314 may be provided by the same memory device or different memory devices. In various examples, CPB memory 320 may be on-chip with other components of video decoder 300, or off-chip relative to those components.

[0127] Additionally or alternatively, in some examples, video decoder 300 may retrieve the video from memory 120 ( Figure 1 ) to retrieve the decoded video data from the CPB memory 320. That is, the memory 120 may store data as discussed above with reference to the CPB memory 320. Similarly, when some or all of the functions of the video decoder 300 are implemented using software executed by the processing circuitry of the video decoder 300, the memory 120 may store instructions to be executed by the video decoder 300.

[0128] Shown Figure 4 The various units are described to help understand the operations performed by the video decoder 300. These units can be implemented as fixed function circuits, programmable circuits, or a combination thereof. Figure 3 , fixed-function circuits refer to circuits that provide specific functions and are pre-set in the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functions in the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (for example, to receive parameters or output parameters), but the type of operations performed by the fixed-function circuits is generally immutable. In some examples, one or more of these units can be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units can be integrated circuits.

[0129] The video decoder 300 may include an ALU, an EFU, digital circuits, analog circuits, and / or a programmable core formed by programmable circuits. In an example where the operation of the video decoder 300 is performed by software executed on the programmable circuits, on-chip or off-chip memory may store instructions (e.g., object code) of the software received and executed by the video decoder 300.

[0130] The entropy decoding unit 302 may receive the encoded video data from the CPB and perform entropy decoding on the video data to reproduce syntax elements. The prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, and the filtering unit 312 may generate decoded video data based on the syntax elements extracted from the bitstream.

[0131] Typically, the video decoder 300 reconstructs a picture on a block-by-block basis. The video decoder 300 may perform a reconstruction operation on each block individually (wherein the block currently being reconstructed, ie, decoded, may be referred to as a "current block").

[0132] The entropy decoding unit 302 may entropy decode syntax elements defining the quantized transform coefficients of the quantized transform coefficient block, as well as transform information such as a quantization parameter (QP) and / or a transform mode indication. The inverse quantization unit 306 may use the QP associated with the quantized transform coefficient block to determine a degree of quantization and, similarly, determine a degree of inverse quantization for the inverse quantization unit 306 to apply. For example, the inverse quantization unit 306 may perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. The inverse quantization unit 306 may thereby form a transform coefficient block comprising the transform coefficients.

[0133] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, the inverse transform processing unit 308 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse directional transform, or another inverse transform to the transform coefficient block.

[0134] In addition, prediction processing unit 304 generates a prediction block based on the prediction information syntax element entropy decoded by entropy decoding unit 302. For example, if the prediction information syntax element indicates that the current block is inter-predicted, motion compensation unit 316 may generate a prediction block. In this case, the prediction information syntax element may indicate a reference picture in DPB 314 from which the reference block is retrieved, and a motion vector that identifies the position of the reference block in the reference picture relative to the current block in the current picture. Motion compensation unit 316 may generally generate a prediction block in the same manner as described for motion compensation unit 224 ( Figure 3 ) to perform inter-frame prediction processing in a manner substantially similar to that described in conjunction with FIG. In some examples, a reference picture may not exist in the DPB 314. For example, the current picture may be an IDR picture with a reference picture list that has no reference picture entries or has at least one entry corresponding to "no reference picture," i.e., the reference picture was not decoded because the video decoder 300 began decoding the video bitstream starting at the IDR picture. This may occur when a device including the video decoder 300 performs random access to the video bitstream, such as to perform a search, scan, fast forward, rewind, or other trick mode access to data of the bitstream. In this case, the video decoder 300 may begin decoding from an IDR picture whose reference pictures have been signaled but have not yet been decoded and are therefore not stored in the DPB 314.

[0135] In some examples, the prediction processing unit 304 can check the reference picture against the constraint, for example, to ensure that the reference picture passes the constraint (e.g., the reference picture meets the constraint). In some examples, the prediction processing unit 304 can determine that the reference picture of the current picture is equal to no reference picture. Based on the entry being equal to no reference picture, the prediction processing unit 304 can determine additional information associated with no reference picture. The prediction processing unit 304 can check the constraint for no reference picture based on the additional information. Based on the no reference picture passing the constraint, the video decoder 200 can decode the current picture, such as with respect to Figure 4 and Figure 7 further discussed.

[0136] As another example, if the prediction information syntax element indicates that the current block is intra-predicted, the intra-prediction unit 318 may generate a prediction block according to the intra-prediction mode indicated by the prediction information syntax element. Again, the intra-prediction unit 318 may generally be used in conjunction with the intra-prediction unit 226 ( Figure 3 The intra prediction unit 318 may retrieve data of neighboring samples of the current block from the DPB 314.

[0137] The reconstruction unit 310 may reconstruct the current block using the prediction block and the residual block. For example, the reconstruction unit 310 may add samples of the residual block to corresponding samples of the prediction block to reconstruct the current block.

[0138] The filtering unit 312 may perform one or more filtering operations on the reconstructed block. For example, the filtering unit 312 may perform a deblocking operation to reduce blocking artifacts along the edges of the reconstructed block. The operations of the filtering unit 312 may not necessarily be performed in all examples.

[0139] The video decoder 300 may store the reconstructed block in the DPB 314. For example, in an example where the operation of the filtering unit 312 is not performed, the reconstruction unit 310 may store the reconstructed block in the DPB 314. In an example where the operation of the filtering unit 312 is performed, the filtering unit 312 may store the filtered reconstructed block in the DPB 314. As described above, the DPB 314 may provide reference information to the prediction processing unit 304, such as samples of the current picture for intra-frame prediction and previously decoded pictures for subsequent motion compensation. In addition, the video decoder 300 may output a decoded picture (e.g., decoded video) from the DPB 314 for subsequent use in, for example, Figure 1 The display device 118 is displayed on a display device.

[0140] In this manner, the video decoder 300 represents an example of a video decoding device comprising a memory configured to store video data, and one or more processors implemented in circuitry and coupled to the memory, the one or more processors configured to: determine whether an entry in a reference picture list for a current picture is equal to no reference picture; determine additional information associated with the entry based on the entry being equal to no reference picture; check constraints for the entry based on the additional information; and decode the current picture according to the constraints.

[0141] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in a circuit and configured to perform the following operations: determine whether the layer containing the current picture is a dependent layer; based on the layer containing the current picture being a dependent layer, parse a reference picture list; and decode the video data based on the reference picture list.

[0142] The video decoder 300 also represents an example of a video decoding device comprising a memory configured to store video data, and one or more processing units implemented in circuitry and configured to: determine whether inter-layer prediction is enabled for an instantaneous decoder refresh (IDR) slice; parse a reference picture list based on enabling inter-layer prediction; and decode the video data based on the reference picture list.

[0143] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in a circuit and configured to: determine whether inter-layer prediction is enabled for a slice; determine whether the slice is an IDR slice; based on inter-layer prediction being enabled and the slice being an IDR slice, determine that the slice is an I slice; and decode the video data based on the I slice.

[0144] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in circuitry and configured to: determine whether a reference picture list is signaled in a picture header for an IDR slice; determine whether there is an indication that there is no reference picture list signaling for the IDR slice; add one or more reference pictures to an empty reference picture list based on the signaling of the reference picture list, the indication that there is no reference picture list signaling for the IDR slice, or both; and decode the video data based on the reference picture list.

[0145] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in circuitry and configured to: determine whether an entry in a reference picture list is equal to no reference picture; avoid at least one action based on the entry not being equal to no reference picture; and decode the video data based on the reference picture list.

[0146] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in circuitry and configured to: determine whether information is needed to check constraints or decode the video data; based on the need for information to check constraints or decode the video data, add the information to a picture; and decode the video data based on the information.

[0147] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in a circuit and configured to perform the following operations: determine whether a picture is equal to a no-reference picture; based on the picture being equal to the no-reference picture, generate an inter-layer reference picture for the picture; and decode the video data based on the inter-layer reference picture.

[0148] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in circuits and configured to perform the following operations: determine whether an IDR picture has a reference picture list signaling; determine whether the IDR picture has an unavailable reference picture; generate an unavailable reference picture based on that the IDR picture has a reference picture list signaling and the IDR picture has an unavailable reference picture; and decode the video data based on the generated unavailable reference picture.

[0149] The video decoder 300 also represents an example of a video decoding device comprising a memory configured to store video data, and one or more processing units implemented in circuitry and configured to: determine a first reference picture list for a first slice, the first reference picture list comprising a plurality of entries, wherein at least one of the entries is an inter-layer reference picture; determine a second reference picture list for a second slice, the second reference picture list comprising a plurality of entries in the first reference picture list in addition to the at least one inter-layer reference picture; and decode the video data based on the first reference picture list and the second reference picture list.

[0150] The video decoder 300 also represents an example of a video decoding device that includes a memory configured to store video data, and one or more processing units implemented in circuits and configured to perform the following operations: determine whether a sub-picture of a current picture is considered as a picture; and based on the sub-picture not being considered as a picture, decode the video data using a current picture having a sub-picture layout different from a reference picture.

[0151] As mentioned above, in some draft video coding standards, an IDR picture may have an associated reference picture list even though the video decoder may not need a reference picture list to decode the IDR picture. In some implementations, for bitstream consistency purposes, the video decoder may check the constraints associated with the reference pictures. The reference pictures in the reference picture list of the IDR picture may be "no reference pictures" or unavailable. This is because when the video decoder starts decoding the IDR picture, there may be no pictures in the decoded picture buffer because the IDR picture may be the first picture that the video decoder decodes in the CVS. Thus, in some examples, it may not be possible to check the constraints on unavailable reference pictures.

[0152] In VVC draft 9, a video coding layer (VCL) network abstraction layer (NAL) or slice can have an IDR NAL unit type. Optionally, such an IDR slice can have a reference picture list signaled in the slice header, indicated by the sps_idr_rpl_present_flag signaled in the SPS. sps_idr_rpl_present_flag equal to 1 indicates the presence of a reference picture list syntax element in the slice header of the IDR picture. sps_idr_rpl_present_flag equal to 0 indicates the absence of a reference picture list syntax element in the slice header of the IDR picture.

[0153] According to VVC Draft 9, video data may include multiple layers, and some layers may use inter-layer prediction, which the video encoder 200 may indicate in the VPS by signaling vps_independent_layer_flag to the video decoder 300 .

[0154] vps_independent_layer_flag[i] equal to 1 indicates that the layer with index i does not use inter-layer prediction. vps_independent_layer_flag[i] equal to 0 indicates that the layer with index i can use inter-layer prediction, and the syntax element vps_direct_ref_layer_flag[i][j] is present in the VPS, with j between 0 and i-1 (inclusive). When not present, the video decoder 300 infers that the value of vps_independent_layer_flag[i] is equal to 1.

[0155] The video encoder 200 may divide a picture into more than one sub-picture, and the video encoder 200 may signal the sub-picture layout in the SPS. A sub-picture may be treated as a picture as indicated by sps_subpic_tained_as_pic_flag. For example, sps_subpic_tained_as_pic_flag may indicate to the video decoder 300 whether a sub-picture is treated as a picture. A sub-picture treated as a picture is a sub-picture that the video decoder 300 can decode independently (e.g., decoding of the sub-picture does not depend on other sub-pictures of the picture).

[0156] sps_subpic_rated_as_pic_flag[i] equal to 1 indicates that the i-th sub-picture of each coded picture in the coded layer video sequence (CLVS) is considered a picture in a decoding process that does not include loop filtering operations (e.g., performed by the video decoder 300). sps_subpic_tained_as_pic_flag[i] equal to 0 indicates that the i-th sub-picture of each coded picture in the CLVS is not considered a picture in a decoding process that does not include loop filtering operations (e.g., performed by the video decoder 300). If not present, the video decoder 300 infers that the value of sps_subpic_tained_as_pic_flag[i] is equal to 1.

[0157] The video encoder 200 may signal a reference picture list in a picture header or a slice header. The video encoder 200 may signal a syntax element indicating the location of the reference picture list information. For example, a pps_rpl_info_in_ph_flag equal to 1 indicates that the reference picture list information is present in the PH syntax structure but not in slice headers that reference a PPS that does not contain a PH syntax structure. A pps_rpl_info_in_ph_flag equal to 0 indicates that the reference picture list information is not present in the PH syntax structure but may be present in slice headers that reference a PPS. When not present, the video decoder 300 may infer that the value of the pps_rpl_info_in_ph_flag is equal to 0.

[0158] Reference picture list signaling for IDR pictures is now discussed. Various examples of techniques for addressing reference picture list signaling for IDR pictures are set forth in this section.

[0159] According to VVC draft 9, when video encoder 200 indicates that an IDR has a reference picture list (eg, video encoder 200 signals sps_idr_rpl_present_flag equal to 1), video encoder 200 may signal a reference picture list for a non-IDR VCL NAL or an IDR VCL NAL in a slice header.

[0160]

[0161] However, there may be cases where an IDR picture has non-I slices, for example, the IDR picture uses inter-layer prediction (ILP), and no reference picture list is signaled because sps_idr_rpl_present_flag is equal to 0 and pps_rpl_info_in_ph_flag is equal to 0. This will cause problems because the video decoder 300 needs a reference picture list to decode any non-I slice.

[0162] In this disclosure, several technologies for solving this problem are disclosed. Each of the disclosed technologies can be used alone or in combination with other disclosed technologies or any other methods.

[0163] In one example, the video encoder 200 may signal a reference picture list if it is indicated (e.g., by a syntax element or otherwise) that the layer containing the picture is a dependent (non-independent) layer (e.g., the layer uses other layers for inter-layer prediction).

[0164] This can be done, for example, by <change> and< / change> The above example is implemented using the changes made between Draft 9 and Draft 9 of VVC.

[0165]

[0166] If sps_idr_rpl_present_flag is equal to 0, <change> vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1,< / change> , and nal_unit_type is equal to IDR_W_RADL or IDR_N_LP, reference picture lists RefPicList[0] and RefPicList[1] are both derived as empty (i.e., containing 0 entries), and the following applies for each i equal to 0 or 1:

[0167] The value of RplsIdx[i] is inferred to be equal to sps_num_ref_pic_lists[i].

[0168] The value of num_ref_entries[i][RplsIdx[i]] is inferred to be equal to 0.

[0169] The value of NumRefIdxActive[i] is inferred to be equal to 0.

[0170] In another example, it may be required that if an IDR slice has inter-layer prediction, it should be indicated (e.g., through syntax elements or other means) that the IDR slice should have a signaled reference picture list. For example, the video encoder 200 may be required to signal that the IDR slice has a signaled reference picture list, signal the reference picture list, and the video decoder 300 may parse the signaled reference picture list.

[0171] In one example, the following <change> and< / change> The following changes were made relative to VVC draft 9 to implement the above example:

[0172] <change>If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0, and the nal_unit_type of the slice referencing the SPS is equal to IDR_W_RADL or IDR_N_LP, then sps_idr_rpl_present_flag shall be equal to 1.

[0173] < / change>

[0174] In another example, the following <change> and< / change> The following changes were made relative to VVC draft 9 to implement the above example:

[0175] <change> If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0, and the slice reference SPS has nal_unit_type equal to IDR_W_RADL or IDR_N_LP, then the value of sps_idr_rpl_present_flag or pps_rpl_info_in_ph_flag shall be equal to 1.< / change>

[0176] In another exemplary constraint, if inter-layer prediction is enabled and the slice type is IDR, and it is indicated (e.g., by syntax elements or other means) that no reference picture list is signaled for an IDR slice, then the video coder (e.g., video encoder 200 or video decoder 300) may require that the slice type be equal to I_SLICE (e.g., the slice is an I slice). In the absence of such a requirement, the slice type may be set to P_SLICE or B_SLICE in an IDR slice in a dependent layer, but a reference picture list cannot be signaled for such a slice.

[0177] In one example, the following <change> and< / change> The following changes were made relative to VVC draft 9 to implement the example constraints above:

[0178] <change> If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0, sps_idr_rpl_present_flag is equal to 0, and pps_rpl_info_in_ph_flag is equal to 0, and nal_unit_type is equal to IDR_W_RADL or IDR_N_LP, then sh_slice_type shall be equal to 2.< / change>

[0179] In another example, the following <change> and< / change> The changes made between 1 and 2 relative to VVC draft 9 implement the above exemplary constraint: the value of sh_slice_type shall be equal to 2 when both of the following conditions are true:

[0180] ●The value of nal_unit_type is in the range of IDR_W_RADL to CRA_NUT (including endpoints).

[0181] The value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, or the current picture is the first picture in the current AU, <change> Or the value of sps_idr_rpl_present_flag is equal to 0, and pps_rpl_info_in_ph_flag is equal to 0.< / change>

[0182] In another example, a video decoder (e.g., video encoder 200 or video decoder 300) may set the reference picture list of an IDR to empty only if no reference picture list is signaled in the picture header and (e.g., by a syntax element or otherwise) it is indicated that the IDR does not have a reference picture list signaled, e.g., when video encoder 200 signals that sps_idr_rpl_present_flag is equal to 0.

[0183] The video encoder 200 may indicate this situation by signaling a flag (e.g., pps_rpl_info_in_ph_flag is equal to 0) indicating that no reference picture list information is present in the picture header. If the reference picture list is signaled in the picture header, the video decoder 300 may simply derive the number of active entries for the IDR slice to be equal to 0 without setting the reference picture list to empty.

[0184] Otherwise, if the reference picture list of the IDR is set to empty when the reference picture list is signaled in the picture header, the constraint that all slices or sub-pictures of a picture should have the same reference picture list may be violated. In addition, the reference picture list may be set to empty only for independent layers because the reference picture list may be required for decoding dependent layers by the video decoder 300.

[0185] In one example, the following <change> and< / change> The following changes were made relative to VVC draft 9 to implement Example 4:

[0186] ■8.3.2 Decoding process of reference picture list construction ...

[0188] <change>If sps_idr_rpl_present_flag is equal to 0 and nal_unit_type is equal to IDR_W_RADL or IDR_N_LP, the following applies for each i equal to 0 or 1.

[0189] - The value of NumRefIdxActive[i] is inferred to be equal to 0.

[0190] - If pps_rpl_info_in_ph_flag is equal to 0, the following applies:< / change>

[0191] - The value of RplsIdx[i] is inferred to be equal to sps_num_ref_pic_lists[i].

[0192] - The value of num_ref_entries[i][RplsIdx[i]] is inferred to be equal to 0.

[0193] In another example, it can be expressed as follows.

[0194] <change>If sps_idr_rpl_present_flag is equal to 0 and nal_unit_type is equal to IDR_W_RADL or IDR_N_LP, and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the following applies for each i equal to 0 or 1.

[0195] - The value of NumRefIdxActive[i] is inferred to be equal to 0.

[0196] - If pps_rpl_info_in_ph_flag is equal to 0, the following applies:< / change>

[0197] - The value of RplsIdx[i] is inferred to be equal to sps_num_ref_pic_lists[i].

[0198] - The value of num_ref_entries[i][RplsIdx[i]] is inferred to be equal to 0.

[0199] The video encoder 200 or the video decoder 300 may be configured to perform the exemplary decoding process discussed above. For example, the video encoder 200 may perform the exemplary decoding process to generate reference data for storage in the DPB 218 .

[0200] Reference picture list constraints and “no reference pictures” are now discussed. Various examples of techniques for resolving reference picture list constraints and “no reference pictures” are set forth below.

[0201] During construction of a reference picture list, an entry in the reference picture list may indicate a picture that may not be present in the DPB. For example, when the video encoder 200 or the video decoder 300 constructs a reference picture list, an entry in the reference picture list may point to a picture that is not present in the DPB 218 or the DPB 314, respectively. The video encoder 200 or the video decoder 300 may set such a reference picture equal to "no reference picture" during the reference picture list derivation process. For example, the reference picture list for the first picture in the CVS may include an entry for "no reference picture". Specifically, such an entry may be a predetermined value for a reference picture identifier that indicates that no reference picture is available (e.g., because data for the picture was not received or the data is corrupted or cannot be decoded).

[0202] However, VVC draft 9 imposes bitstream consistency constraints on entries in the reference picture list. When a picture is equal to "no reference picture" (e.g., the picture and associated information do not exist), the video encoder 200 or the video decoder 300 may not check this bitstream consistency constraint.

[0203] In this disclosure, several technologies for solving this problem are disclosed. Each disclosed technology can be used alone or in combination with other disclosed technologies or any other methods.

[0204] In one example, the following condition can be added to VVC-Draft 9: All bitstream consistency constraints related to reference picture list entries are applied to "no reference picture" entries that are not equal to RefPicList0 or RefPicList1. In other words, bitstream consistency constraints are not applied to "no reference picture" entries. For example, the video encoder 200 or the video decoder 300 can implement this condition.

[0205] In one example, the following <change> and< / change> The above example is implemented using the changes made between Draft 9 and Draft 9 of VVC.

[0206] The requirements for bitstream conformance are that the following constraints apply <change> For entries in RefPicList[0] or RefPicList[1] that are not equal to "no reference picture"< / change> :

[0207] -constraint

[0208] In another example, necessary information for checking constraints or information required in a decoding process is added to a picture, which is generated when the picture is equal to “no reference picture.” For example, the video encoder 200 may add the required information to the picture.

[0209] For example, such required information may include any one or any combination of the following: 1) TemporalId; 2) ph_non_reference_picture_flag; 3) layerID setting depending on whether the picture is an inter-layer reference picture (ILRP); 4) scaling window, cropping window, sub-picture layout, tile partitioning; or 5) parameter set information including VPS, SPS, PPS, etc.

[0210] In one example, the TemporalId of the "no reference picture" is set equal to the TemporalId of the current picture. In one example, the ph_non-reference_picture_flag is set equal to 0. In one example, if the picture is non-ILRP, the layerID is set equal to the layer ID of the current picture, otherwise, the layerID is set equal to the value layerID of the reference layer (e.g., equal to the layerID of the first reference layer). In another example, the value of layerID can be the value of any reference layer. In one example, the scaling window, cropping window, sub-picture layout, and tile partition information can be set equal to those of the current picture. In one example, the parameter set information can be set equal to the parameter set information of the current picture.

[0211] In this example, a video coder (e.g., video encoder 200 or video decoder 300) can utilize a generation process for an inter-layer reference picture (ILRP) for a picture equal to "no reference picture." When DPB 218 or DPB 314, respectively, is full and ILRP still requires space in DPB 218 or DPB 314 for the current picture (e.g., ILRP is still needed for the current picture), the ILRP can be bumped (removed) from DPB 218 or DPB 314. This can occur, for example, when the number of layers in the bitstream is greater than the maximum number of pictures in DPB 218 or DPB 314.

[0212] In another example, a video encoder such as video encoder 200 or video decoder 300 may not allow ILRP to be equal to “no reference picture.” In this case, the generation process of ILRP may not be required.

[0213] In one example, the above example can be implemented as follows:

[0214] <change> For inter-layer reference pictures, there should not be an entry equal to "no reference picture".< / change>

[0215] Additionally, for example, when sps_idr_rpl_present_flag is equal to 1, the process of generating unavailable reference pictures may be applied to IDR pictures with reference picture list signaling. For example, the video encoder 200 or the video decoder 300 may apply the following process of generating unavailable reference pictures for IDR pictures with reference picture list signaling.

[0216] In another alternative, the process of generating an unusable reference picture is invoked for any picture whose reference picture equals "no reference picture." For example, the video encoder 200 or the video decoder 300 may apply the process of generating an unusable reference picture to any picture having a reference picture equal to "no reference picture."

[0217] For example, a video encoder such as video encoder 200 or video decoder 300 may exclude IDR pictures and IDR sub-pictures of IDR pictures that have a signaled reference picture list (e.g., sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1) according to the following constraint: such IDR pictures should not have an entry equal to "no reference picture" in the reference picture list.

[0218] Because when signaling the reference picture list for an IDR picture, the IDR picture may be the first picture in the CVS, and the IDR picture may not have any pictures indicated as references in the DPB. One application of having a reference picture list for IDR is the bitstream merging use case. In the bitstream merging use case, several slices or sub-pictures of a picture from different bitstreams are merged into one picture in the new bitstream. In this case, it may be necessary for all slices of the picture to have the same set of reference pictures, and the IDR slices in the original bitstream need to have a reference picture list to satisfy this constraint.

[0219] In another example, the constraint in VVC draft 9 that "each ILRP entry in the slice's RefPicList[0] or RefPicList[1] shall be an active entry" can be removed. Because the reference picture list can be signaled in the SPS and can be referenced by multiple slices via the SPS reference picture list index, the constraint can be removed. For example, one slice can use the entire reference picture list including the ILRP, while another slice can use the same reference picture list but specify a shorter number of active reference pictures and exclude the ILRP. Therefore, a video encoder such as video encoder 200 or video decoder 300 can be configured to not implement this constraint. With this constraint, the second slice needs to use another reference picture list, which requires additional signaling.

[0220] In another example, a video encoder such as video encoder 200 or video decoder 300 can implement a modified constraint from VVC draft 9 that requires the current picture and the reference picture to have the same sub-picture layout, such that the constraint is applied only when the sub-picture is considered as a picture. For example, subpic_tained_as_pic_flag is equal to 1 for the current sub-picture or the sub-picture containing the current slice (VCL NAL).

[0221] In one example, the following <change> and< / change> The above example is implemented using the changes made between 1999 and 2000 relative to VVC draft 9, and in <delete> and< / delete> Each change can be used individually or in combination.

[0222] ■8.1.2 Decoding process of coded pictures

[0223] For the current picture CurrPic, the decoding process operates as follows:

[0224] 1. The decoding of NAL units is detailed in Section 8.2.

[0225] 2. The procedures in section 8.3 use syntax elements in the slice header layer and above to specify the following decoding process:

[0226] – As detailed in Section 8.3.1, derive the variables and functions related to the picture order count. This process only needs to be called for the first slice of a picture.

[0227] – At the beginning of the decoding process for each slice of a picture, the decoding process of the reference picture list construction specified in Section 8.3.2 is called to derive reference picture list 0 (RefPicList[0]) and reference picture list 1 (RefPicList[1]).

[0228] – Invoke the decoding process for reference picture marking in Section 8.3.3, where a reference picture can be marked as “unused for reference” or “used for long-term reference”. This process only needs to be called for the first slice of a picture.

[0229] – When the current image is <change> IDR pictures with sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1< / change> When a CRA picture with NoOutputBeforeRecoveryFlag equal to 1 or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1 is used, the decoding process for generating unusable reference pictures specified in section 8.3.4 is called. This process only needs to be called for the first slice of the picture.

[0230] ■ Bitstream conformance is a requirement for compliance with the following constraints:

[0231] – For each i equal to 0 or 1, num_ref_entries[i][RplsIdx[i]] shall not be less than NumRefIdxActive[i].

[0232] – The picture referenced by each active entry in RefPicList[0] or RefPicList[1] shall exist in the DPB and its TemporalId shall be less than or equal to the TemporalId of the current picture.

[0233] – The picture referenced by each entry in RefPicList[0] or RefPicList[1] shall not be the current picture and shall have ph_non_reference_picture_flag equal to 0.

[0234] – A STRP entry in the RefPicList[0] or RefPicList[1] of a slice of a picture and an LTRP entry in the RefPicList[0] or RefPicList[1] of the same slice or a different slice of the same picture shall not refer to the same picture.

[0235] – There shall not be an LTRP entry in RefPicList[0] or RefPicList[1] for which the difference between the PicOrderCntVal of the current picture and the PicOrderCntVal of the picture referenced by this entry is greater than or equal to 2 24 .

[0236] – Let setOfRefPics be the set of unique pictures referenced by all entries in RefPicList[0] with the same nuh_layer_id as the current picture and all entries in RefPicList[1] with the same nuh_layer_id as the current picture. The number of pictures in setOfRefPics shall be less than or equal to MaxDpbSize-1 (inclusive), where MaxDpbSize is specified as described in section A.4.2, and setOfRefPics shall be the same for all slices of a picture.

[0237] – When the nal_unit_type of the current slice is equal to STSA_NUT, there shall be no active entry in RefPicList[0] or RefPicList[1] with TemporalId equal to the TemporalId of the current picture and nuh_layer_id equal to the nuh_layer_id of the current picture.

[0238] – When the current picture is a picture following a STSA picture in decoding order, where the STSA picture has the same TemporalId as the current picture and the same nuh_layer_id as the current picture, there shall not be any picture before the STSA picture in decoding order with the same TemporalId as the current picture and with the same nuh_layer_id as the current picture (which is included as the active entry in RefPicList[0] or RefPicList[1]).

[0239] – When the current sub-picture with TemporalId equal to a specific value tId, nuh_layer_id equal to a specific value layerId, and sub-picture index equal to a specific value subpicIdx is a sub-picture that follows, in decoding order, a STSA sub-picture with TemporalId equal to tId, nuh_layer_id equal to layerId, and sub-picture index equal to subpicIdx, then no picture with TemporalId equal to tId and nuh_layer_id equal to layerId shall precede, in decoding order, the picture containing the STSA sub-picture (which is included as an active entry in RefPicList[0] or RefPicList[1]).

[0240] – When the current picture with nuh_layer_id equal to a particular value layerId is an IRAP picture, the pictures referenced by entries in RefPicList[0] or RefPicList[1] shall not precede any previous IRAP picture (if any) in decoding order with nuh_layer_id equal to layerId, in either output order or decoding order.

[0241] – When the current sub-picture with nuh_layer_id equal to a specific value layerId and a sub-picture index equal to a specific value subpicIdx is an IRAP sub-picture, the picture referenced by the entry in RefPicList[0] or RefPicList[1] shall not precede any previous picture in decoding order (if any) that contains an IRAP sub-picture with nuh_layer_id equal to layerId and sub-picture index equal to subpicIdx, in either output order or decoding order.

[0242] – When the current picture is not a RASL picture associated with a CRA picture with NoOutputBeforeRecoveryFlag equal to 1, the picture referenced by the active entry in RefPicList[0] or RefPicList[1] shall not exist, where the decoding process used to generate unavailable reference pictures for the CRA picture associated with the current picture generates this picture.

[0243] – When the current sub-picture is not a RASL sub-picture associated with a CRA sub-picture in a CRA picture with NoOutputBeforeRecoveryFlag equal to 1, the picture referenced by the active entry in RefPicList[0] or RefPicList[1], which is generated by the decoding process used to generate an unavailable reference picture for the CRA picture containing the CRA sub-picture associated with the current sub-picture, shall not exist.

[0244] – The picture referenced by an entry in RefPicList[0] or RefPicList[1] that is generated by the decoding process for generating an unusable reference picture for an IRAP or GDR picture associated with the current picture shall not exist if the current picture with nuh_layer_id equal to a particular value layerId is not any of the following:

[0245] ○ <change> IDR pictures with sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1< / change>

[0246] ○ CRA pictures with NoOutputBeforeRecoveryFlag equal to 1

[0247] ○ A picture associated with a CRA picture with NoOutputBeforeRecoveryFlag equal to 1 that precedes the leading picture associated with the same CRA picture in decoding order

[0248] ○ The leading picture associated with the CRA picture with NoOutputBeforeRecoveryFlag equal to 1

[0249] ○ GDR images with NoOutputBeforeRecoveryFlag equal to 1

[0250] ○ Recovery picture of a GDR picture with NoOutputBeforeRecoveryFlag equal to 1 and nuh_layer_id equal to layerId

[0251] – The picture referenced by an entry in RefPicList[0] or RefPicList[1] that is generated by a decoding process for generating an unusable reference picture for an IRAP or GDR picture containing an IRAP or GDR sub-picture associated with the current sub-picture shall not exist if the current sub-picture with nuh_layer_id equal to a particular value layerId and a sub-picture index equal to a particular value subpicIdx is not any of the following:

[0252] ○ <change> IDR sub-picture in an IDR picture whose sps_idr_rpl_present_flag is equal to 1 or pps_rpl_info_in_ph_flag is equal to 1< / change>

[0253] ○ CRA sub-pictures in CRA pictures whose NoOutputBeforeRecoveryFlag is equal to 1

[0254] o A sub-picture associated with a CRA sub-picture in a CRA picture whose NoOutputBeforeRecoveryFlag is equal to 1, which sub-picture precedes the leading picture associated with the same CRA picture in decoding order

[0255] o The leading sub-picture associated with the CRA sub-picture in the CRA picture whose NoOutputBeforeRecoveryFlag is equal to 1

[0256] ○ GDR sub-pictures in GDR pictures whose NoOutputBeforeRecoveryFlag is equal to 1

[0257] ○ A sub-picture in the recovery picture of a GDR picture whose NoOutputBeforeRecoveryFlag is equal to 1 and nuh_layer_id is equal to layerId

[0258] – When the current picture follows an IRAP picture with the same value of nuh_layer_id in both decoding order and output order, pictures referenced by active entries in RefPicList[0] or RefPicList[1] shall not precede the IRAP picture in output order or decoding order.

[0259] – When the current sub-picture follows an IRAP sub-picture with the same nuh_layer_id value and the same sub-picture index value in both decoding order and output order, the picture referenced by the active entry in RefPicList[0] or RefPicList[1] shall not precede the picture containing the IRAP sub-picture in output order or decoding order.

[0260] – When the current picture follows an IRAP picture with the same nuh_layer_id value and the leading picture associated with the IRAP picture (if any) in both decoding order and output order, the pictures referenced by the entries in RefPicList[0] or RefPicList[1] shall not precede the IRAP picture in output order or decoding order.

[0261] – When the current picture follows an IRAP sub-picture with the same nuh_layer_id value and the same sub-picture index value, and the leading sub-picture associated with that IRAP sub-picture (if any), in both decoding order and output order, the picture referenced by the entry in RefPicList[0] or RefPicList[1] shall not precede the picture containing the IRAP sub-picture in output order or decoding order.

[0262] – When the current picture is a RADL picture, there shall be no active entry in RefPicList[0] or RefPicList[1] that is any of the following:

[0263] ○RASL pictures

[0264] ○ Pictures that precede the associated IRAP picture in decoding order

[0265] – When the current sub-picture whose nuh_layer_id is equal to a specific value layerId and whose sub-picture index is equal to a specific value subpicIdx is a RADL sub-picture, there shall not be an active entry in RefPicList[0] or RefPicList[1] that is any of the following:

[0266] ○The picture with nuh_layer_id equal to layerId contains a RASL sub-picture whose sub-picture index is equal to subpicIdx

[0267] o The picture that precedes the picture containing the associated IRAP sub-picture in decoding order

[0268] – Each ILRP entry in RefPicList[0] or RefPicList[1] of a slice of the current picture shall reference a picture in the same AU as the current picture.

[0269] – The picture referenced by each ILRP entry in RefPicList[0] or RefPicList[1] of a slice of the current picture shall be present in the DPB, its nuh_layer_id refPicLayerId shall be less than the nuh_layer_id of the current picture, and shall be an IRAP picture or have a TemporalId less than or equal to Max(0, vps_max_tid_il_ref_pics_plus1[currLayerIdx][refLayerIdx]-1), where currLayerIdx and refLayerIdx are equal to GeneralLayerIdx[nuh_layer_id] and GeneralLayerIdx[refpicLayerId], respectively.

[0270] – <delete>Every ILRP entry in a slice's RefPicList[0] or RefPicList[1] shall be an active entry.

[0271] < / delete>

[0272] – When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0 <change> When the sub-picture index subPicIdx has a current sub-picture with sps_subpic_treated_as_pic_flag[subPicIdx] equal to 1< / change> , and sps_num_subpics_minus1 is greater than 0, either (but not both) of the following two conditions shall hold:

[0273] ○ Each active entry in RefPicList[0] or RefPicList[1] references a picture that has the same sub-picture layout as the current picture (i.e., the SPSs referenced by that picture and the current picture have the same value of sps_num_subpics_minus1, and have the same values of sps_subpic_ctu_top_left_x[j], sps_subpic_ctu_top_left_y[j], sps_subpic_width_minus1[j], and sps_subpic_height_minus1[j], respectively, where each value of j is in the range of 0 to sps_num_subpics_minus1, inclusive).

[0274] o The picture referenced by each active entry in RefPicList[0] or RefPicList[1] is an ILRP for which the value of sps_num_subpics_minus1 is equal to 0.

[0275] 8.3.4.1 Conventional decoding process for generating unavailable reference pictures

[0276] In the current picture <change> IDR pictures with sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1< / change> , a CRA picture with NoOutputBeforeRecoveryFlag equal to 1, or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1, this process is called once for each decoded picture.

[0277] When this procedure is called, the following conditions apply:

[0278] – For each RefPicList[i][j], where i ranges from 0 to 1 (inclusive) and j ranges from 0 to num_ref_entries[i][RplsIdx[i]]-1 (inclusive), which is equal to "no reference picture", generate the picture as specified in section 8.3.4.2 and apply the following:

[0279] – <delete>The value of nuh_layer_id of the generated picture is set equal to the nuh_layer_id of the current picture.

[0280] < / delete>

[0281] If st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 1 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, then the value of PicOrderCntVal for the generated picture is set equal to RefPicPocList[i][j] and the generated picture is marked as “used for short-term reference”.

[0282] <change>The value of nuh_layer_id of the generated picture is set equal to the nuh_layer_id of the current picture.

[0283] < / change>

[0284] Otherwise, when st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, the value of PicOrderCntVal for the generated picture is set equal to RefPicLtPocList[i][j], the value of ph_pic_order_cnt_lsb for the generated picture is inferred to be equal to (RefPicLtPocList[i][j] & (MaxPicOrderCntLsb-1)), and the generated picture is marked as "used for long-term reference".

[0285] <change>The value of nuh_layer_id of the generated picture is set equal to the nuh_layer_id of the current picture.

[0286] Otherwise, when st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 1, the value of PicOrderCntVal for the generated picture is set equal to PicOrderCntVal of the current picture, and the generated picture is marked as "used for long-term reference".

[0287] The value of nuh_layer_id of the generated picture is set equal to vps_layer_id[DirectRefLayerIdx[0]]. In another alternative, nuh_layer_id is set equal to the layer ID of the signaled inter-layer picture, for example, equal to vps_layer_id[DirectRefLayerIdx[GeneralLayerIdx[nuh_layer_id]][ilrp_idx[i][RplsIdx][j]].

[0288] < / change>

[0289] – Set the value of PicOutputFlag of the generated reference picture to 0.

[0290] – Set RefPicList[i][j] to the generated reference picture.

[0291] – <change>Set the value of the TemporalId of the generated image to be equal to the TemporalId of the current image.

[0292] In another alternative, the value of TemporalId of the generated picture is set equal to 0 or any other default value.

[0293] – Set the value of ph_non_reference_picture_flag equal to 0 for the generated picture.

[0294] – Set the parameter set information including content and parameter set ID to be the same as the parameter set information of the current picture. In addition, if the generated picture is ILRP, replace the nuh_layer_id of PPS and SPS and set it equal to vps_layer_id[DirectRefLayerIdx[0]].< / change>

[0295] In the above example, vps_layer_id[DirectRefLayerIdx[0]] indicates the nuh_layer_id of the first reference layer used for inter-layer prediction.

[0296] In the above example, it is assumed that the presence of a reference picture list in the slice header of an IDR picture / sub-picture is indicated by sps_idr_rpl_present_flag being equal to 1 or pps_rpl_info_in_ph_flag being equal to 1. However, such a flag may not be required because the reference picture list for an IDR picture can be signaled in the picture header regardless of the value of sps_idr_rpl_present_flag. In one example, sps_idr_rpl_present_flag can be deleted from VVC draft 9, and the video encoder 200 can always signal the reference picture list for an IDR picture. In this case, in the above example, in the case where the presence of a reference picture list for an IDR picture is indicated, "an IDR picture / sub-picture whose sps_idr_rpl_present_flag is equal to 1 or pps_rpl_info_in_ph_flag is equal to 1" can be replaced with only an IDR picture / sub-picture.

[0297] In one example, if sps_idr_rpl_present_flag is deleted from VVC draft 9, the conditions for reference picture list signaling in the slice header are simplified as follows, where <delete> and< / delete> The deletion is shown between:

[0298]

[0299] In this case, when the video encoder 200 does not signal the reference picture list information, there is no need to infer the reference picture list information. This process can also be deleted from VVC draft 9, as shown below. <delete> and< / delete> between:

[0300] <delete>If sps_idr_rpl_present_flag is equal to 0 and nal_unit_type is equal to IDR_W_RADL or IDR_N_LP, then both reference picture lists RefPicList[0] and RefPicList[1] are derived as empty, i.e. containing 0 entries, and the following applies for each i equal to 0 or 1:

[0301] – The value of RplsIdx[i] is inferred to be equal to sps_num_ref_pic_lists[i].

[0302] – The value of num_ref_entries[i][RplsIdx[i]] is inferred to be equal to 0.

[0303] – Infer the value of NumRefIdxActive[i] to be equal to 0.< / delete>

[0304] Figure 5 2 is a flow chart illustrating an exemplary reference picture list technique according to the present disclosure. Video encoder 200 or video decoder 300 may determine whether an entry in a reference picture list for a current picture is equal to no reference picture (330). For example, video encoder 200 or video decoder 300 may determine that an entry in a reference picture list does not exist in DPB 218 or DPB 314, respectively.

[0305] Based on the fact that the entry is not equal to the reference picture, the video encoder 200 or the video decoder 300 may determine additional information associated with the entry (332). For example, the video encoder 200 or the video decoder 300 may determine any of the following: a temporal identifier (e.g., TemporalId), a picture header syntax element for the non-reference picture (e.g., ph_non_reference_picture_flag) indicating whether the non-reference picture is a non-reference picture, or one or more parameter sets (e.g., VPS, SPS, PPS, etc.).

[0306] The video encoder 200 or the video decoder 300 may check the constraints for the entry based on the additional information (334). For example, the video encoder 200 or the video decoder 300 may use the additional information to check one or more constraints related to the reference picture. These constraints may be set forth in a video coding standard (e.g., VVC Draft 9).

[0307] The video encoder 200 or the video decoder 300 may decode the current picture according to the constraints (336). For example, based on checking whether the constraints are passed, the video encoder 200 may encode the current picture, or the video decoder 300 may decode the current picture.

[0308] In some examples, video encoder 200 or video decoder 300 may decode video data that begins with an IDR picture. Video encoder 200 or video decoder 300 may determine that at least one picture preceding the IDR picture in decoding order has not been decoded, and determine that the entry corresponds to the at least one picture preceding the IDR picture in decoding order.

[0309] In some examples, additional information is required to check the constraints. In some examples, the additional information includes a temporal identifier. In some examples, as part of determining the additional information, the video encoder 200 or the video decoder 300 may determine that the temporal identifier of the entry is equal to the temporal identifier of the current picture. In some examples, as part of determining the additional information, the video encoder 200 or the video decoder 300 may determine that the temporal identifier of the entry is equal to a predetermined default value.

[0310] In some examples, the additional information includes a picture header syntax element of the entry, the picture header syntax element of the entry indicating whether the entry is a non-reference picture. In some examples, as part of determining the additional information, video encoder 200 or video decoder 300 may determine the value of the picture header syntax element to be equal to 0.

[0311] In some examples, the additional information includes one or more parameter sets.In some examples, as part of determining the additional information, video encoder 200 or video decoder 300 may determine that the one or more parameter sets are equal to one or more parameter sets of the current picture.

[0312] In some examples, the video encoder 200 or the video decoder 300 can determine whether the non-reference picture is an inter-layer reference picture (ILRP). Based on the non-reference picture being an ILRP, the video encoder 200 or the video decoder 300 can replace a first network abstraction layer (NAL) unit header layer identifier, which indicates the layer to which the first NAL unit of the picture parameter set and the sequence parameter set belongs, with a video parameter set layer identifier indicating a second NAL unit header identifier, which indicates a first reference layer for inter-layer prediction.

[0313] In some examples, video encoder 200 or video decoder 300 may generate a picture based on the additional information. In some examples, video encoder 200 or video decoder 300 may check the constraints based on the generated picture. In some examples, the generated picture is generated only for the first slice of the current picture.

[0314] In some examples, the video encoder 200 or the video decoder 300 may determine that the current picture is a transient decoder refresh picture. The video encoder 200 or the video decoder 300 may determine a sequence parameter set syntax element indicating that no reference picture list is present in the slice header. The video encoder 200 or the video decoder 300 may determine that no picture parameter set syntax element indicating reference picture list information is present in the picture header. Based on the current picture being a transient decoder refresh picture, the sequence parameter set syntax element indicating that no reference picture list is present in the slice header, and the picture parameter set syntax element indicating that no reference picture list information is present in the picture header, the video decoder 300 may infer that the value of the reference picture list structure index is equal to the sequence parameter set syntax element indicating the number of reference picture list syntax structures, and infer the value of the syntax element indicating the number of entries in the reference picture list syntax structure.

[0315] Figure 61 is a flowchart illustrating an example method for encoding a current block. The current block may include a current CU. Although relative to the video encoder 200 ( Figure 1 and 3 ) is described, but it should be understood that other devices may be configured to perform the same Figure 6 Similar approach.

[0316] In this example, video encoder 200 initially predicts a current block (350). For example, video encoder 200 may form a prediction block for the current block. In some examples, as part of forming the prediction block for the current block, video encoder 200 may perform Figure 5 The video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, the video encoder 200 may calculate the difference between the original unencoded block and the predicted block for the current block. The video encoder 200 may then transform the residual block and quantize the transform coefficients of the residual block (354). Next, the video encoder 200 may scan the quantized transform coefficients of the residual block (356). During or after the scan, the video encoder 200 may entropy encode the transform coefficients (358). For example, the video encoder 200 may encode the transform coefficients using CAVLC or CABAC. The video encoder 200 may then output the entropy encoded data of the block (360).

[0317] Figure 7 is a flow chart illustrating an example method for decoding a current block of video data. The current block may include a current CU. Although with respect to the video decoder 300 ( Figure 1 and 4 ) is described, but it should be understood that other devices may be configured to perform the same Figure 7 Similar approach.

[0318] The video decoder 300 may receive entropy-encoded data for the current block (e.g., entropy-encoded prediction information and entropy-encoded data for transform coefficients of a residual block corresponding to the current block) (370). The video decoder 300 may entropy decode the entropy-encoded data to determine the prediction information for the current block and reproduce the transform coefficients of the residual block (372). In some examples, as part of forming a prediction block for the current block, the video encoder 200 may perform Figure 5 The video decoder 300 may predict the current block (374), for example, using an intra-frame or inter-frame prediction mode as indicated by the prediction information for the current block, to calculate a prediction block for the current block. In some examples, as part of predicting the current block, the video decoder 300 may perform Figure 5The video decoder 300 may then inverse scan the reproduced transform coefficients (376) to create a block of quantized transform coefficients. The video decoder 300 may then inverse quantize the transform coefficients and apply an inverse transform to the transform coefficients to produce a residual block (378). The video decoder 300 may ultimately decode the current block (380) by combining the prediction block and the residual block.

[0319] By determining additional information associated with unavailable reference pictures and checking constraints based on the additional information, a video decoder can check the constraints for unavailable reference pictures to ensure bitstream consistency, thereby enabling the video encoder to provide encoded video to video decoders of various different manufacturers.

[0320] This disclosure includes the following non-limiting examples.

[0321] Clause 1A. A method of decoding video data, the method comprising: determining whether a layer containing a current picture is a dependent layer; based on the layer containing the current picture being a dependent layer, signaling or parsing a reference picture list; and decoding the video data based on the reference picture list.

[0322] Clause 2A. A method of coding video data, the method comprising: determining whether inter-layer prediction is enabled for an instantaneous decoder refresh (IDR) slice; signaling or parsing a reference picture list based on enabling inter-layer prediction; and coding the video data based on the reference picture list.

[0323] Clause 3A. A method of coding video data, the method comprising: determining whether inter-layer prediction is enabled for a slice; determining whether the slice is an IDR slice; determining that the slice is an I slice based on inter-layer prediction being enabled and the slice being an IDR slice; and coding the video data based on the I slice.

[0324] Clause 4A. A method of decoding video data, the method comprising: determining whether a reference picture list is signaled in a picture header for an IDR slice; determining whether an indication exists that no reference picture list is signaled for the IDR slice; adding one or more reference pictures to an empty reference picture list based on the signaling of the reference picture list, the absence of an indication that no reference picture list is signaled for the IDR slice, or both; and decoding the video data based on the reference picture list.

[0325] Clause 5A. A method of coding video data, the method comprising: determining whether an entry in a reference picture list is equal to no reference picture; based on the entry not being equal to no reference picture, refraining from at least one action; and coding the video data based on the reference picture list.

[0326] Clause 6A. A method of decoding video data, the method comprising: determining whether information is needed to check constraints or to decode the video data; adding the information to a picture based on the need for the information to check constraints or to decode the video data; and decoding the video data based on the information.

[0327] Clause 7A. The method of clause 6A, wherein the information comprises at least one of: a temporal ID, a picture header non-reference picture flag, a layer ID, a scaling window, a cropping window, a sub-picture layout, a tile partitioning, or parameter set information.

[0328] Clause 8A. A method of decoding video data, the method comprising: determining whether a picture is equal to a no-reference picture; generating an inter-layer reference picture for the picture based on the picture being equal to the no-reference picture; and decoding the video data based on the inter-layer reference picture.

[0329] Clause 9A. A method of decoding video data, the method comprising: determining whether an IDR picture has reference picture list signaling; determining whether the IDR picture has an unavailable reference picture; generating an unavailable reference picture based on the IDR picture having reference picture list signaling and the IDR picture having an unavailable reference picture; and decoding the video data based on the generated unavailable reference picture.

[0330] Clause 10A. A method of coding video data, the method comprising: determining a first reference picture list for a first slice, the first reference picture list comprising a plurality of entries, wherein at least one of the entries is an inter-layer reference picture; determining a second reference picture list for a second slice, the second reference picture list comprising a plurality of entries in the first reference picture list excluding the at least one inter-layer reference picture; and coding the video data based on the first reference picture list and the second reference picture list.

[0331] Clause 11A. A method of decoding video data, the method comprising: determining whether a sub-picture of a current picture is considered as a picture; and decoding the video data using the current picture having a sub-picture layout different from a reference picture based on the sub-picture not being considered as a picture.

[0332] Clause 12A. The method of any of clauses 1A-11A, wherein deciphering comprises decoding.

[0333] Clause 13A. The method of any of clauses 1A-12A, wherein decoding comprises encoding.

[0334] Clause 14A. An apparatus for decoding video data, the apparatus comprising: one or more means for performing the method of any of clauses 1A-13A.

[0335] Clause 15A. The apparatus of Clause 14A, wherein the one or more units comprise one or more processors implemented in circuitry.

[0336] Clause 16A. The apparatus of any of Clauses 14A and 15A, further comprising: a memory for storing the video data.

[0337] Clause 17A. The apparatus of any of Clauses 14A-16A, further comprising: a display configured to display the decoded video data.

[0338] Clause 18A. The device of any of clauses 14A-17A, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0339] Clause 19A. The apparatus of any of clauses 14A-18A, wherein the apparatus comprises a video decoder.

[0340] Clause 20A. The apparatus of any of clauses 14A-19A, wherein the apparatus comprises a video encoder.

[0341] Clause 21A. A computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to perform the method of any of Clauses 1A-13A.

[0342] Clause 1B. A method of decoding video data, the method comprising: determining whether an entry in a reference picture list for a current picture is equal to no reference picture; determining additional information associated with the entry based on the entry being equal to no reference picture; checking a constraint for the entry based on the additional information; and decoding the current picture according to the constraint.

[0343] Clause 2B. The method of clause 1B, wherein the current picture is an instantaneous decoder refresh (IDR) picture, the method further comprising: decoding the video data starting with the IDR picture; determining that at least one picture preceding the IDR picture in decoding order has not been decoded; and determining that the entry corresponds to the at least one picture preceding the IDR picture in decoding order.

[0344] Clause 3B. The method of clause 1B or 2B, wherein the additional information is required for checking the constraint.

[0345] Clause 4B. The method of any combination of clauses 1B-3B, wherein the additional information includes a time identifier.

[0346] Clause 5B. The method of Clause 4B, wherein determining the additional information comprises determining that the temporal identifier of the entry is equal to a temporal identifier of the current picture or equal to a predetermined default value.

[0347] Clause 6B. The method of any combination of clauses 1B-5B, wherein the additional information comprises a picture header syntax element of the entry indicating whether the entry is a non-reference picture.

[0348] Clause 7B. The method of clause 6B, wherein determining the additional information comprises determining a value of the picture header syntax element equal to zero.

[0349] Clause 8B. The method of any combination of clauses 1B-7B, wherein the additional information comprises one or more parameter sets.

[0350] Clause 9B. The method of clause 8B, wherein determining the additional information comprises determining that the one or more parameter sets are equal to one or more parameter sets of the current picture.

[0351] Clause 10B. The method of any combination of clauses 1B-9B, further comprising: determining whether the entry is an inter-layer reference picture (ILRP); and based on the entry being the ILRP, replacing a first network abstraction layer (NAL) unit header layer identifier indicating a layer to which a first NAL unit in a picture parameter set and a sequence parameter set belongs, the picture parameter set and the sequence parameter set being equal to a video parameter set layer identifier indicating a second NAL unit header identifier, the second NAL unit header identifier indicating a first reference layer for inter-layer prediction.

[0352] Clause 11B. The method of any combination of clauses 1B-10B, further comprising: generating a picture based on the additional information; and checking the constraint based on the generated picture.

[0353] Clause 12B. The method of clause 11B, wherein the generated picture is generated only for a first slice of the current picture.

[0354] Clause 13B. The method of any combination of clauses 1B-12B, further comprising: determining that the current picture is an instantaneous decoder refresh picture; determining that a sequence parameter set syntax element indicating a reference picture list is not present in a slice header; determining that a picture parameter set syntax element indicating reference picture list information is not present in a picture header; and based on the current picture being an instantaneous decoder refresh picture, the absence of the sequence parameter set syntax element indicating the reference picture list in the slice header, and the absence of the picture parameter set syntax element indicating the reference picture list information in the picture header, inferring that a value of a reference picture list structure index is equal to a sequence parameter set syntax element indicating a number of reference picture list syntax structures, and inferring a value of a syntax element indicating a number of entries in the reference picture list syntax structure.

[0355] Clause 14B. An apparatus for decoding video data, the apparatus comprising: a memory configured to store the video data; and one or more processors implemented with circuitry and coupled to the memory, the one or more processors configured to: determine whether an entry in a reference picture list for a current picture is equal to no reference picture; based on the entry being equal to no reference picture, determine additional information associated with the entry; check a constraint for the entry based on the additional information; and decode the current picture according to the constraint.

[0356] Clause 15B. The apparatus of clause 14B, wherein the current picture is an instantaneous decoder refresh (IDR) picture, and wherein the one or more processors are further configured to: decode the video data starting with the IDR picture; determine that at least one picture preceding the IDR picture in decoding order has not been decoded; and determine that the entry corresponds to the at least one picture preceding the IDR picture in decoding order.

[0357] Clause 16B. The apparatus of clause 14B or 15B, wherein the additional information is required for checking the constraint.

[0358] Clause 17B. The apparatus of any combination of clauses 14-16B, wherein the additional information comprises a time identifier.

[0359] Clause 18B. The apparatus of Clause 17B, wherein, as part of determining the additional information, the one or more processors are configured to determine that the temporal identifier of the entry is equal to a temporal identifier of the current picture or equal to a predetermined default value.

[0360] Clause 19B. The apparatus of any combination of clauses 14B-18B, wherein the additional information comprises a picture header syntax element of the entry indicating whether the entry is a non-reference picture.

[0361] Clause 20B. The apparatus of Clause 19B, wherein, as part of determining the additional information, the one or more processors are configured to determine a value of the picture header syntax element to be equal to zero.

[0362] Clause 21B. The apparatus of clauses 14B-20B, wherein the additional information comprises parameter set information.

[0363] Clause 22B. The apparatus of Clause 21B, wherein, as part of determining the additional information, the one or more processors are configured to: determine that the parameter set information of the entry is equal to the parameter set information of the current picture.

[0364] Clause 23B. The apparatus of any combination of clauses 14B-22B, wherein the one or more processors are further configured to: determine whether the entry is an inter-layer reference picture (ILRP); and based on the entry being the ILRP, replace a first network abstraction layer (NAL) unit header layer identifier indicating a layer to which a first NAL unit in a picture parameter set and a sequence parameter set belongs, the picture parameter set and the sequence parameter set being equal to a video parameter set layer identifier indicating a second NAL unit header identifier indicating a first reference layer for inter-layer prediction.

[0365] Clause 24B. The apparatus of any combination of clauses 14B-23B, wherein the one or more processors are further configured to: generate a picture based on the additional information; and check the constraint based on the generated picture.

[0366] Clause 25B. The apparatus of Clause 24B, wherein the one or more processors are configured to generate the generated picture only for a first slice of the current picture.

[0367] Clause 26B. The apparatus of any combination of clauses 14B-25B, wherein the one or more processors are further configured to: determine that the current picture is an instantaneous decoder refresh picture; determine that a sequence parameter set syntax element indicating a reference picture list is not present in a slice header; determine that a picture parameter set syntax element indicating reference picture list information is not present in a picture header; and based on the current picture being an instantaneous decoder refresh picture, the absence of the sequence parameter set syntax element indicating the reference picture list in the slice header, and the absence of the picture parameter set syntax element indicating the reference picture list information in the picture header, infer that a value of a reference picture list structure index is equal to a sequence parameter set syntax element indicating a number of reference picture list syntax structures, and infer a value of a syntax element indicating a number of entries in the reference picture list syntax structure.

[0368] Clause 27B. The device of any combination of clauses 14B-26B, further comprising: a camera configured to capture the video data.

[0369] Clause 28B. The device of any combination of clauses 14B-27B, further comprising: a display device configured to display the video data.

[0370] Clause 29B. A non-transitory computer-readable medium storing instructions that, when executed, cause one or more processors to: determine whether an entry in a reference picture list for a current picture is equal to no reference picture; based on the entry being equal to no reference picture, determine additional information associated with the entry; based on the additional information, check a constraint for the entry; and decode the current picture according to the constraint.

[0371] Clause 30B. An apparatus for decoding video data, the apparatus comprising: means for determining whether an entry in a reference picture list of a current picture is equal to no reference picture; means for determining additional information associated with the entry based on the entry being equal to no reference picture; means for checking a constraint for the entry based on the additional information; and means for decoding the current picture according to the constraint.

[0372] It should be appreciated that, depending on the examples, certain actions or events of any of the techniques described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are required to implement the technique). Furthermore, in some examples, actions or events may be performed concurrently rather than sequentially, such as through multithreading, interrupt handling, or multiple processors.

[0373] In one or more examples, the functions described may be implemented using hardware, software, firmware, or any combination thereof. When implemented using software, the functions may be stored on a computer-readable medium or transmitted as one or more instructions or codes on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to tangible media such as data storage media or communication media, where communication media includes any media that facilitates the transfer of a computer program from one place to another, such as according to a communication protocol. In this manner, computer-readable media may generally correspond to: (1) a non-transitory tangible computer-readable storage medium; or (2) a communication medium such as a signal or carrier waveform. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to obtain instructions, codes, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.

[0374] By way of example, but not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium capable of storing desired program code in the form of instructions or data structures and capable of being accessed by a computer. In addition, any connection may be appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, wireless, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, wireless, and microwave are included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waveforms, signals, or other temporary media, but rather are directed to non-temporary tangible storage media. As used herein, disks and optical disks include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically, while optical discs use lasers to reproduce data optically. The above combinations should also be included within the scope of protection of computer-readable media.

[0375] Instructions can be performed by one or more processors such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, as used herein, the terms "processor" and "processing circuitry" can refer to any of the aforementioned structures or any other structures suitable for implementing the techniques described herein. In addition, in some aspects, the functions described herein can be provided in dedicated hardware and / or software modules configured to implement encoding and decoding, or incorporated into a combined codec. In addition, these techniques can be fully implemented in one or more circuits or logic elements.

[0376] The techniques of the present disclosure can be implemented using a variety of devices or apparatuses, including using a wireless handheld device, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to emphasize the functional aspects of the apparatus configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Instead, as described above, the various units can be combined in a codec hardware unit, or provided by a collection of cooperating hardware units (which include one or more processors as described above) in combination with appropriate software and / or firmware.

[0377] Various examples are described. These and other examples are within the scope of protection of the following claims.

Claims

1. A method for decoding video data, the method comprising: Determining whether the current picture is an instantaneous decoder refresh (IDR) picture; Determining that the IDR picture has a reference picture list; Determining whether an entry in the reference picture list for the current picture is equal to no reference picture; determining additional information associated with the entry based on the entry being equal to no reference picture; generating a reference picture based on the additional information associated with the entry; checking a constraint for the entry based on the additional information and based on the generated reference picture; as well as The current picture is decoded according to the constraint.

2. The method according to claim 1, further comprising: Decoding the video data starting with the IDR picture; determining that at least one picture preceding the IDR picture in decoding order has not been decoded; as well as It is determined that the entry corresponds to the at least one picture that precedes the IDR picture in decoding order.

3. The method according to claim 1, wherein The additional information is required for checking the constraints.

4. The method according to claim 1, wherein The additional information includes a time identifier.

5. The method according to claim 4, wherein Determining the additional information includes determining that the time identifier of the entry is equal to the time identifier of the current picture or equal to a predetermined default value.

6. The method according to claim 1, wherein The additional information includes a picture header syntax element of the entry indicating whether the entry is a non-reference picture.

7. The method according to claim 6, wherein: Determining the additional information includes: determining a value of the picture header syntax element to be equal to 0.

8. The method according to claim 1, wherein The additional information includes one or more parameter sets.

9. The method according to claim 8, wherein Determining the additional information includes determining that the one or more parameter sets are equal to one or more parameter sets of the current picture.

10. The method according to claim 1, further comprising: Determining whether the entry is an inter-layer reference picture (ILRP); as well as Based on the entry being an ILRP, replace a first NAL unit header layer identifier indicating the layer to which a first network abstraction layer (NAL) unit in a picture parameter set and a sequence parameter set belongs, wherein the picture parameter set and the sequence parameter set are equal to a video parameter set layer identifier indicating a second NAL unit header identifier indicating a first reference layer for inter-layer prediction.

11. The method according to claim 1, wherein The generated reference picture is generated only for the first slice of the current picture.

12. The method according to claim 1, further comprising: determining that a sequence parameter set syntax element indicating a reference picture list is not present in a slice header; determining that a picture parameter set syntax element indicating reference picture list information is not present in a picture header; as well as Based on the current picture being a transient decoder refresh picture, the absence of the sequence parameter set syntax element indicating the reference picture list in a slice header, and the absence of the picture parameter set syntax element indicating the reference picture list information in a picture header, inferring that a value of a reference picture list structure index is equal to a sequence parameter set syntax element indicating the number of reference picture list syntax structures, and inferring a value of a syntax element indicating the number of entries in the reference picture list syntax structure.

13. A device for decoding video data, the device comprising: a memory configured to store the video data; as well as One or more processors implemented with circuitry and coupled to the memory, the one or more processors being configured to: Determining whether the current picture is an instantaneous decoder refresh (IDR) picture; Determining that the IDR picture has a reference picture list; Determining whether an entry in the reference picture list for the current picture is equal to no reference picture; determining additional information associated with the entry based on the entry being equal to no reference picture; generating a reference picture based on the additional information associated with the entry; checking a constraint for the entry based on the additional information and based on the generated reference picture; as well as The current picture is decoded according to the constraint.

14. The apparatus according to claim 13, wherein The one or more processors are further configured to: Decoding the video data starting with the IDR picture; determining that at least one picture preceding the IDR picture in decoding order has not been decoded; as well as It is determined that the entry corresponds to the at least one picture that precedes the IDR picture in decoding order.

15. The apparatus according to claim 13, wherein The additional information is required for checking the constraints.

16. The apparatus according to claim 13, wherein The additional information includes a time identifier.

17. The apparatus according to claim 16, wherein As part of determining the additional information, the one or more processors are configured to determine whether the temporal identifier of the entry is equal to a temporal identifier of the current picture or to a predetermined default value.

18. The apparatus according to claim 13, wherein The additional information includes a picture header syntax element of the entry indicating whether the entry is a non-reference picture.

19. The apparatus according to claim 18, wherein As part of determining the additional information, the one or more processors are configured to determine a value of the picture header syntax element to be equal to zero.

20. The apparatus of claim 13, wherein: The additional information includes parameter set information.

21. The apparatus according to claim 20, wherein As part of determining the additional information, the one or more processors are configured to determine that the parameter set information of the entry is equal to parameter set information of the current picture.

22. The apparatus of claim 13, wherein: The one or more processors are further configured to: determining whether the entry is an inter-layer reference picture (ILRP); and Based on the entry being an ILRP, replace a first NAL unit header layer identifier indicating the layer to which a first network abstraction layer (NAL) unit in a picture parameter set and a sequence parameter set belongs, wherein the picture parameter set and the sequence parameter set are equal to a video parameter set layer identifier indicating a second NAL unit header identifier indicating a first reference layer for inter-layer prediction.

23. The apparatus of claim 13, wherein: The one or more processors are configured to generate the generated reference picture only for a first slice of the current picture.

24. The apparatus of claim 13, wherein: The one or more processors are further configured to: determining that a sequence parameter set syntax element indicating a reference picture list is not present in a slice header; determining that a picture parameter set syntax element indicating reference picture list information is not present in a picture header; as well as Based on the current picture being a transient decoder refresh picture, the absence of the sequence parameter set syntax element indicating the reference picture list in a slice header, and the absence of the picture parameter set syntax element indicating the reference picture list information in a picture header, inferring that a value of a reference picture list structure index is equal to a sequence parameter set syntax element indicating the number of reference picture list syntax structures, and inferring a value of a syntax element indicating the number of entries in the reference picture list syntax structure.

25. The apparatus of claim 13, further comprising: A camera is configured to capture the video data.

26. The apparatus of claim 13, further comprising: A display device configured to display the video data.

27. A non-transitory computer-readable medium storing instructions that, when executed, cause one or more processors to: Determining whether the current picture is an instantaneous decoder refresh (IDR) picture; Determining that the IDR picture has a reference picture list; Determining whether an entry in the reference picture list for the current picture is equal to no reference picture; determining additional information associated with the entry based on the entry being equal to no reference picture; generating a reference picture based on the additional information associated with the entry; checking a constraint for the entry based on the additional information and based on the generated reference picture; as well as The current picture is decoded according to the constraint.

28. An apparatus for decoding video data, the apparatus comprising: a unit for determining whether a current picture is an instantaneous decoder refresh (IDR) picture; means for determining that the IDR picture has a reference picture list; means for determining whether an entry in the reference picture list for the current picture is equal to no reference picture; means for determining additional information associated with the entry based on the entry being equal to no reference picture; means for generating a reference picture based on the additional information associated with the entry; means for checking a constraint for the entry based on the additional information and based on the generated reference picture; as well as Means for decoding the current picture according to the constraint.

Citation Information

Patent Citations

  • An apparatus, a method and a computer program for image sequence coding and decoding

    CN107005715A

  • Reference picture set signaling and restriction on an electronic device

    US20140211849A1