Recovery point signaling in video coding
The GDR mechanism in video coding synchronizes decoding and reduces resource utilization by signaling the POC LSB value in headers, addressing the challenge of large video data volumes in streaming and storage.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2026-02-27
- Publication Date
- 2026-05-01
AI Technical Summary
The large amount of video data required for video streaming and storage poses challenges due to limited network and memory resources, necessitating improved compression techniques that maintain image quality.
The implementation of a Gradual Decoded Refresh (GDR) mechanism in video coding, where a GDR picture contains intra- and inter-predictively coded video data, allowing decoders to synchronize and decode pictures sequentially, with the POC LSB value of the GDR picture signaled in the header before the recovery point picture, reducing processor and memory resource utilization.
This approach enhances video coding efficiency by reducing processor and memory resource utilization, enabling synchronized decoding and efficient use of network resources.
Smart Images

Figure 2026074329000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure generally relates to video coding, and more specifically to improvements in video coding such that a virtual reference decoder can assist in progressive refresh.
Background Art
[0002] Even for relatively short videos, the amount of video data required to represent them is quite large, which can cause difficulties when data streaming is performed or data is transmitted across a communication network with limited bandwidth capacity. For this reason, video data is usually compressed before being transmitted across today's communication networks. When a video is stored in a storage device, the size of the video can also be a problem because of limited memory resources. Video compression devices often encode video data using software and / or hardware at the source prior to transmission or storage, thereby reducing the amount of data required to represent a digital video image. The compressed data is then received by a video decompression device that decodes the video data at the destination. Improved compression and decompression techniques that increase the compression ratio without sacrificing much or any of the image quality are desired because network resources are limited and the demand for higher video quality is increasing.
Summary of the Invention
Means for Solving the Problems
[0003] In one embodiment, the Disclosure includes a method implemented in a decoder, the method comprising: receiving a bitstream by a receiver of the decoder, the bitstream including a Gradual Decoded Refresh (GDR) picture, a recovery point picture following the GDR picture in decoding order, and a header associated with the GDR picture, wherein the header includes a picture order count (POC) least significant bit (LSB) value coded before the recovery picture order count value; determining the POC of the GDR picture based on the POC LSB value by the decoder's processor; determining the recovery point picture POC by the processor based on the GDR picture POC and the recovery picture order count value; decoding the bitstream according to the GDR based on the GDR picture and the recovery point picture POC by the processor; and transferring one or more pictures following the recovery point picture for display as part of the decoded video sequence by the processor.
[0004] GDR is a mechanism for coding a bitstream. A GDR picture contains a vertical region of intra-predictively coded video data and one or more vertical regions of inter-predictively coded video data. The position of the intra-predictively coded region moves across a series of related pictures that generate a clean region. A picture containing a clean region codes such a clean region using only intra-predictive or inter-predictive data that references the clean region of another picture. As a result, the decoder can begin decoding the bitstream from the first GDR picture and decode each picture sequentially. Upon reaching the last picture before the recovery point, the decoder becomes synchronized and can decode any other picture using inter-predictive data based on the clean and valid data. The video coding system may signal the picture order count of related pictures in a header such as a picture header / slice header. Such signaling may include a recovery picture order count value indicating the difference between the POC of the GDR picture and the POC of the recovery point picture. However, the decoder must determine the POC of the GDR picture in order to determine the POC of the recovery point picture. This embodiment includes the POC LSB value of the GDR picture. The GDR POC LSB value is included in the header along with the recovery POC value. Furthermore, the GDR POC LSB value is coded into the header before the recovery POC value. In this way, the decoder can parse the GDR POC LSB value before parsing the recovery POC value. Thus, once the POC of the GDR picture is determined, the recovery POC value can be obtained immediately rather than being placed in memory for resolution. In this way, the present disclosure reduces the utilization of processor and / or memory resources in the encoder and / or decoder.
[0005] Optionally, another implementation of the embodiment is provided in which, in any of the embodiments described above, the header associated with the GDR picture is a picture header.
[0006] Optionally, in any of the embodiments described above, another implementation of the embodiment is provided in which the POC LSB value is included in the header as the ph_pic_order_cnt_lsb value, the ph_pic_order_cnt_lsb value specifies the picture order count modulo maximum picture order count LSB for the current picture, and the GDR picture is the current picture.
[0007] Optionally, another implementation is provided in any of the above embodiments, in which the recovery picture order count value is included in the header as the recovery_poc_cnt value, and the recovery_poc_cnt value specifies the recovery points of the decrypted pictures in output order.
[0008] Optionally, in any of the aforementioned embodiments, an alternative implementation is provided in which, if the current picture is a GDR picture, a flag indicating no output for the preceding picture is set in the header.
[0009] Optionally, in any of the embodiments described above, another implementation of the embodiment is provided in which the GDR picture includes a region coded according to interpretation and a region coded according to intrapretation.
[0010] Optionally, another implementation of the embodiment is provided in which, in any of the embodiments described above, the GDR picture is contained in a GDR access unit (AU), the bitstream further includes a buffering period (BP) extension information (SEI) message associated with the GDR AU, and the BP SEI message provides an initial coded picture buffer (CPB) removal delay for the initialization of the virtual reference decoder (HRD) at the position of the GDR AU in the decoding order.
[0011] In one embodiment, the Disclosure includes a method implemented in an encoder, the method comprising: the processor of the encoder encoding a GDR picture and a recovery point picture that follows the GDR picture in decoding order into a bitstream; the processor determining a POC LSB value for the GDR picture and a recovery picture sequence count value for the recovery point picture; the processor encoding a header associated with the GDR picture into a bitstream, the header including a POC LSB value coded before the recovery picture sequence count value; and storing the bitstream for communication to a decoder in a memory coupled to the processor.
[0012] GDR is a mechanism for coding a bitstream. A GDR picture contains a vertical region of intra-predictively coded video data and one or more vertical regions of inter-predictively coded video data. The position of the intra-predictively coded region moves across a series of related pictures that generate a clean region. A picture containing a clean region codes such a clean region using only intra-predictive or inter-predictive data that references the clean region of another picture. As a result, the decoder can begin decoding the bitstream from the first GDR picture and decode each picture sequentially. Upon reaching the last picture before the recovery point, the decoder becomes synchronized and can decode any other picture using inter-predictive data based on the clean and valid data. The video coding system may signal the picture order count of related pictures in a header such as a picture header / slice header. Such signaling may include a recovery picture order count value indicating the difference between the POC of the GDR picture and the POC of the recovery point picture. However, the decoder must determine the POC of the GDR picture in order to determine the POC of the recovery point picture. This example includes the POC LSB value of the GDR picture. The GDR POC LSB value is included in the header along with the recovery POC value. Furthermore, the GDR POC LSB value is coded into the header before the recovery POC value. In this way, the decoder can parse the GDR POC LSB value before parsing the recovery POC value. Thus, once the POC of the GDR picture is determined, the recovery POC value can be obtained immediately rather than being placed in memory for resolution. In this way, the present disclosure reduces the utilization of processor and / or memory resources in the encoder and / or decoder.
[0013] Optionally, another implementation of the embodiment is provided in which, in any of the embodiments described above, the header associated with the GDR picture is a picture header.
[0014] Optionally, in any of the embodiments described above, another implementation of the embodiment is provided in which the POC LSB value is included in the header as the ph_pic_order_cnt_lsb value, the ph_pic_order_cnt_lsb value specifies the picture order count modulo maximum picture order count LSB for the current picture, and the GDR picture is the current picture.
[0015] Optionally, another implementation is provided in any of the above embodiments, in which the recovery picture order count value is included in the header as the recovery_poc_cnt value, and the recovery_poc_cnt value specifies the recovery points of the decrypted pictures in output order.
[0016] Optionally, in any of the aforementioned embodiments, another implementation of the embodiment is provided, further including the step of setting a no-output flag for the preceding picture in the header if the current picture is a GDR picture.
[0017] Optionally, in any of the embodiments described above, another implementation of the embodiment is provided in which the GDR picture includes a region coded according to interpretation and a region coded according to intrapretation.
[0018] Optionally, another implementation of the embodiment is provided, further comprising the steps of: the processor encoding a GDR picture in a GDR AU; and the processor encoding a BP SEI message associated with the GDR AU into a bitstream, wherein the BP SEI message provides a CPB removal delay for HRD initialization at the position of the GDR AU in the decoding order.
[0019] In one embodiment, the disclosure includes a video coding apparatus comprising a processor, a receiver coupled to the processor, a memory coupled to the processor, and a transmitter coupled to the processor, wherein the processor, receiver, memory, and transmitter are configured to perform the method of the above embodiment.
[0020] In one embodiment, the disclosure includes a non-temporary computer-readable medium containing a computer program product used by a video coding apparatus, the computer program product containing computer-executable instructions stored on the non-temporary computer-readable medium, which, when executed by a processor, causes the video coding apparatus to perform any of the methods described above.
[0021] In one embodiment, the Disclosure includes a decoder comprising: a receiving means for receiving a bitstream including a Gradual Decoded Refresh (GDR) picture, a recovery point picture following the GDR picture in decoding order, and a header associated with the GDR picture, wherein the header includes a picture order count (POC) least significant bit (LSB) value coded before the recovery picture order count value; a determining means for determining the POC of the GDR picture based on the POC LSB value and determining the recovery point picture POC based on the GDR picture POC and the recovery picture order count value; a decoding means for decoding the bitstream according to the GDR based on the GDR picture and the recovery point picture POC; and a transferring means for transferring one or more pictures following the recovery point picture for display as part of a decoded video sequence.
[0022] Optionally, in any of the embodiments described above, another implementation of the embodiment is provided in which the decoder is further configured to perform any of the methods described above.
[0023] In one embodiment, the present disclosure encodes a GDR picture and a recovery point picture following the GDR picture in decoding order into a bitstream, encodes a header associated with the GDR picture into the bitstream, the header includes a POC LSB value coded prior to a recovery picture order count value, an encoding means, a determination means for determining a POC LSB value of the GDR picture and a recovery picture order count value of the recovery point picture, and a storage means for storing a bitstream for communicating to a decoder, and includes an encoder.
[0024] Optionally, in any of the foregoing aspects, the encoder is further configured to perform the method of any of the foregoing aspects, and another implementation of the aspect is provided.
[0025] For the sake of clarity, any one of the foregoing embodiments may be combined with any one or more of the other foregoing embodiments to provide a new embodiment within the scope of the present disclosure.
[0026] These features and other features will be more clearly understood from the following detailed description provided together with the accompanying drawings and claims.
[0027] To understand the present disclosure more fully, the following brief description provided with respect to the accompanying drawings and detailed description (like reference numerals represent like parts) is presented here.
Brief Description of the Drawings
[0028] [Figure 1] It is a flowchart of an exemplary method for coding a video signal. [Figure 2] It is a schematic diagram of an exemplary coding / decoding (codec) system for video coding. [Figure 3] It is a schematic diagram showing an exemplary video encoder. [Figure 4] It is a schematic diagram showing an exemplary video decoder. [Figure 5]This is a schematic diagram illustrating an exemplary virtual reference decoder (HRD). [Figure 6] This is a schematic diagram illustrating an exemplary mechanism for performing progressive decoding refresh (GDR) in a video sequence. [Figure 7] This is a schematic diagram illustrating the search for undesirable movement patterns. [Figure 8] This is a schematic diagram showing an exemplary bitstream for use in initializing the HRD when GDR is being used. [Figure 9] This is a schematic diagram of an exemplary video coding device. [Figure 10] This is a flowchart illustrating an exemplary method for signaling the picture order count (POC) of recovery point pictures when encoding a video sequence using GDR into a bitstream. [Figure 11] This is a flowchart illustrating an exemplary method for decoding a video sequence using GDR from a bitstream based on a signaled recovery point picture (POC). [Figure 12] This is a schematic diagram of an exemplary system that codes a video sequence using GDR into a bitstream based on a signaled recovery point picture (POC). [Modes for carrying out the invention]
[0029] While exemplary implementations of one or more embodiments are provided below, it should be understood from the outset that the systems and / or methods of the Disclosure may be carried out using any number of techniques, whether currently known or existing. The Disclosure shall not be limited in any respect to the exemplary implementations, drawings, and techniques exemplified below, including the exemplary designs and implementations illustrated and described herein, and may be modified in the entirety of the appended claims and their equivalents.
[0030] The following terms are defined as follows, unless used in the opposite context herein. Specifically, the following definitions are intended to further clarify this disclosure. However, terms may be described differently in different contexts. Therefore, the following definitions should be considered supplementary and should not be considered to limit other definitions given herein for such terms.
[0031] A bitstream is a sequence of bits containing compressed video data for transmission between an encoder and a decoder. An encoder is a device configured to use an encoding process to compress video data into a bitstream. A decoder is a device configured to use a decoding process to restore video data from the bitstream for display. A picture is a complete image intended to be displayed to the user, either fully or partially, at a corresponding moment in a video sequence. A picture is divided into slices, slices are optionally divided into tiles, slices and / or tiles are divided into coding tree units (CTUs) and / or coding tree blocks (CTBs), CTUs / CTBs may be divided into coding blocks, which can be coded according to a predictive mechanism. An access unit (AU) is a coding unit configured to store a single coded picture and optionally one or more headers, the headers containing parameters describing the coding mechanism used to code the coded picture. A header is a syntax structure containing syntax elements applied to the corresponding portion of the coded video data. A header may include a picture header and a slice header. The picture header is a syntax structure containing syntax elements that apply to all slices of a coded picture. The slice header is part of a coded slice containing data elements for all tiles, or for CTU rows within tiles represented by slices. Interpretation, also known as intercoding, is a mechanism for coding samples of the current block in the current picture by referring to corresponding samples in reference blocks located in a different reference picture. Intrapretation, also known as intracoding, is a mechanism for coding samples of the current block in the current picture by referring to corresponding samples in reference blocks located in the current picture (i.e., the current block and the reference block are in the same picture).GDR is a mechanism for coding a series of pictures, each containing both interconnected and intra-coded regions, to avoid the coded video sequence being initialized with a single, fully intra-coded picture. The GDR AU is the AU containing the first GDR picture in the series of GDR-related pictures. The recovery point picture is the picture that follows the series of GDRs, allowing the picture to be fully decoded without referencing data from pictures preceding the first GDR picture in the series. The picture order count (POC) is a variable / value associated with each picture that uniquely identifies the related picture among all pictures in the coded video sequence. Furthermore, when the related picture is output from the decoded picture buffer (DPB), the POC indicates the position of the related picture in output order relative to the output order positions of other pictures in the same coded video sequence, which are also output from the DPB. The recovery POC is the POC of the recovery point picture. The least significant bit (LSB) of the POC is one or more least significant bits in the POC value. HRD is an encoder-operated decoder model that checks the variability of a bitstream generated in an encoding process to verify compliance with specific constraints. HRD compliance tests determine whether an encoded bitstream conforms to a standard such as VVC. HRD parameters are syntax elements that initialize and / or define the operating conditions of the HRD. Additional Extension Information (SEI) messages are syntax structures with specific semantics that convey information not required by the decoding process to determine the values of samples in a decoded picture. Buffering Period (BP) SEI messages are SEI messages containing HRD parameters to initialize the HRD in order to manage the Codified Picture Buffer (CPB). The CPB is a first-in, first-out buffer in the HRD that contains the coded pictures in decoding order for use during bitstream compliance verification. Decoding order is the order in which the syntax elements are processed by the decoding process.The CPB removal delay is the period during which a picture can remain in the CPB before being removed. The "No Preceding Picture Output" flag is used to indicate that a previously decoded picture should not be output within the DPB.
[0032] This specification uses acronyms such as Coding Tree Block (CTB), Coding Tree Unit (CTU), Coding Unit (CU), Clean Random Access (CRA), Coated Video Sequence (CVS), Gradual Decode Refresh (GDR), Gradual Random Access (GRA), Virtual Reference Decoder (HRD), Immediate Decode Refresh (IDR), Joint Video Expert Team (JVET), Motion-Limited Tilesets (MCTS), Maximum Transmission Unit (MTU), Network Abstraction Layer (NAL), Gradual Intra-Refresh (PIR), Picture Order Count (POC), Raw Byte Sequence Payload (RBSP), Additional Enhancement Information (SEI), Sequence Parameter Set (SPS), and General-Purpose Video Coding (VVC).
[0033] Many video compression techniques can be used to reduce the size of video files while minimizing data loss. For example, video compression techniques may include performing spatial (e.g., intra-picture) prediction and / or temporal (e.g., inter-picture) prediction to reduce or eliminate data redundancy in a video sequence. In block-based video coding, a video slice (e.g., a video picture or part of a video picture) may be divided into video blocks, which may also be referred to as tree blocks, coding tree blocks (CTBs), coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are coded using spatial prediction for a reference sample in a neighboring block within the same picture. Video blocks in an intercoded unidirectional prediction (P) or bidirectional prediction (B) slice of a picture may be coded using spatial prediction for a reference sample in a neighboring block within the same picture, or temporal prediction for a reference sample in another reference picture. A picture may also be referred to as a frame and / or image, and a reference picture may be referred to as a frame and / or reference image. Spatial or temporal predictions become prediction blocks representing image blocks. Residual data represents the pixel difference between the original image block and the prediction block. Thus, an intercoding block is encoded according to a motion vector pointing to a block of reference samples that forms the prediction block, and residual data showing the difference between the coding block and the prediction block. An intracoding block is encoded according to the intracoding mode and the residual data. For further compression, the residual data may be transformed from a pixel region to a transformation region. These become residual transformation coefficients, which can be quantized. The quantized transformation coefficients may initially be arranged in a two-dimensional array. The quantized transformation coefficients may be scanned to generate a one-dimensional vector of transformation coefficients. Entropy coding may be applied to achieve further compression. Such video compression techniques are described in more detail below.
[0034] To ensure accurate decoding of encoded video, video is encoded and decoded according to the corresponding video coding standard. Video coding standards include International Telecommunication Union (ITU) Standardization Sector (ITU-T) H.261, International Organization for Standardization / International Electrotechnical Commission (ISO / IEC) Video Expert Group (MPEG)-1 Part 2, Advanced Video Coding (AVC), also known as ITU-T H.262 or ISO / IEC MPEG-2 Part 2, ITU-T H.263, ISO / IEC MPEG-4 Part 2, ITU-T H.264 or ISO / IEC MPEG-4 Part 10, and High Efficiency Video Coding (HEVC), also known as ITU-T H.265 or MPEG-H Part 2. AVC includes extensions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC), Multiview Video Coding Plus Depth (MVC+D), and Three-Dimensional (3D) AVC (3D-AVC). HEVC includes extensions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), and 3D HEVC (3D-HEVC). The ITU-T and ISO / IEC Joint Video Expert Team (JVET) has begun development of a video coding standard called General-Purpose Video Coding (VVC). VVC is included in the Draft (WD) and includes JVET-N1001-v3.
[0035] Encoders use many components, including HRDs. Encoders use various components to encode a bitstream. The HRD then inspects the encoded bitstream to ensure the encoding conforms to a standard. For example, the HRD can inspect the bitstream to verify that a decoder can decode it. Encoders also use many mechanisms to encode bitstreams. GDR is an exemplary coding mechanism used by encoders to code bitstreams. A GDR picture contains a vertical region of intra-predictively coded video data and one or more vertical regions of inter-predictively coded video data. The position of the intra-predictively coded region moves across a series of related pictures that generate a clean region. A picture containing a clean region codes such a clean region using only intra-predictive or inter-predictive data that references the clean region of another picture. This allows the decoder to start decoding the bitstream from the first GDR picture and decode each picture sequentially. Upon reaching the last picture before the recovery point, the decoder enters a synchronized state and, based on clean and valid data, can decode any other picture using interprediction. The HRD within the encoder may be configured to check the bitstream suitability based on intra-random access point (IRAP) pictures containing only intraprediction data. However, when GDR is used, some video coding systems may use HRDs that are not configured to check the bitstream suitability. For example, some HRDs may be configured to initiate bitstream suitability checking starting with IRAP pictures and not check bitstream sequences containing GDR-based random access points.
[0036] In the first example, disclosed herein is a mechanism for configuring HRD to perform bitstream conformance checking when the bitstream uses a GDR picture as a random access point. When the bitstream contains a GDR picture, the encoder may include a BP SEI message containing HRD parameters. The HRD may read the BP SEI message to obtain initialization parameters and initiate a bitstream conformance check, starting from the GDR picture associated with the BP SEI message. Furthermore, the decoder may examine the BP SEI message to verify that the bitstream is conformance and determine that the bitstream is decodeable. Thus, including a BP SEI message with the GDR picture supports additional functionality in both the encoder and the decoder. In addition, the GDR may help reduce spikes in bandwidth during network communication. Thus, the mechanism disclosed herein can reduce processor, memory, and / or network resource utilization in both the encoder and the decoder.
[0037] Furthermore, the video coding system may signal the picture order count (POC) of the relevant picture in the header. Such a header may, as usual, include picture and / or slice headers. In some cases, the signaling may include a recovery POC difference value, which indicates the difference between the POC of the GDR picture and the POC of the recovery point picture. However, in order to determine the actual POC value of the recovery point picture, the decoder must first determine the POC of the GDR picture. Therefore, the decoder stores the recovery POC difference value in memory. The decoder can then determine the recovery point picture POC value once the POC of the GDR picture has been received and determined.
[0038] In the second example, the mechanism disclosed herein is one that improves the efficiency of the coding process when a GRD is used. In the example, the POC LSB value of the GDR picture is signaled in the slice / picture header. The POC LSB value is included in the header along with the recovered picture sequence count value. Furthermore, the POC LSB value is coded into the header in a position prior to the recovered picture sequence count. In this way, the decoder can parse the POC LSB value before parsing the recovered picture sequence count. Thus, once the POC of the GDR picture is determined, the recovered picture sequence count can be determined immediately rather than being placed in memory for resolution. Thus, the disclosure supports additional functionality in both the encoder and the decoder. Furthermore, the disclosure reduces the utilization of processor, memory, and / or network communication resources in the encoder and / or decoder.
[0039] Figure 1 is a flowchart illustrating an exemplary operation of video signal coding. Specifically, the video signal is encoded by an encoder. The encoding process compresses the video signal using various mechanisms to reduce the size of the video file. A smaller file size allows for the transmission of the compressed video file to the user, reducing the associated bandwidth overhead. The decoder then decodes the compressed video file and restores the original video signal for display to the end user. To ensure that the decoder can reliably restore the video signal, the decoding process typically mirrors the encoding process.
[0040] In step 101, a video signal is input to the encoder. For example, the video signal may be an uncompressed video file stored in memory. As another example, the video file may be captured by a video capture device such as a video camera and encoded to support live streaming of the video. A video file may contain both audio and video components. The video component contains a series of image frames, which, when viewed in sequence, give the impression of visual motion. Each frame contains pixels, which are represented by light, here called the lumens component (or lumens sample), and color, here called the chromens component (or color sample). In some examples, frames may also contain depth values to support three-dimensional viewing.
[0041] In step 103, the video is divided into blocks. This division involves subdividing the pixels within each frame into square and / or rectangular blocks for compression. For example, in High Efficiency Video Coding (HEVC) (also known as H.265 and MPEG-H Part 2), a frame can first be subdivided into coding tree units (CTUs), which are blocks of a predetermined size (e.g., 64 pixels × 64 pixels). A CTU contains both luminous and chroma samples. The CTUs can then be divided into blocks using the coding tree, and these blocks can be recursively subdivided until a configuration is achieved that facilitates further encoding. For example, the luminous component of a frame may be subdivided until the individual blocks contain relatively uniform illumination values. Furthermore, the chroma component of a frame may be subdivided until the individual blocks contain relatively uniform color values. Thus, the division mechanism differs depending on the content of the video frame.
[0042] In step 105, the image blocks separated in step 103 are compressed using various compression mechanisms. For example, interpretation and / or intrapretation may be used. Interpretation takes advantage of the fact that objects in a typical scene tend to appear in consecutive frames. Therefore, a block representing an object in a reference frame does not need to be described repeatedly in adjacent frames. Specifically, an object such as a desk may remain in the same position across multiple frames. Thus, the desk is described once, and adjacent frames can refer to the reference frame. By using a pattern matching mechanism, objects can be aligned across multiple frames. Furthermore, objects that move across multiple frames may be represented, for example, due to the movement of the object or the movement of the camera. As a specific example, a video may display a car crossing the screen across multiple frames. Such movement can be described using motion vectors. A motion vector is a two-dimensional vector that provides an offset from the coordinates of an object in a given frame to the coordinates of that object in a reference frame. For this reason, interpretation can encode the image blocks in the current frame as a set of motion vectors indicating the offset from the corresponding block in the reference frame.
[0043] Intra-prediction encodes blocks within a typical frame. It leverages the fact that luma and chroma components tend to cluster within a frame. For example, a green patch in a part of a tree tends to be adjacent to similar green patches. Intra-prediction uses multiple directional prediction modes (e.g., 33 in HEVC), planar mode, and direct current (DC) mode. Directional modes indicate that a block is similar / identical to samples of adjacent blocks in its corresponding direction. Planar mode indicates that a series of blocks along a row / column (e.g., a plane) can be interpolated based on adjacent blocks at the edges of the row. Planar mode effectively shows smooth light / color transitions across rows / columns by using a relatively constant slope of changing values. DC mode is used for boundary smoothing, indicating that a block is similar / identical to the mean value associated with samples of all adjacent blocks in the angular direction of the directional prediction mode. Thus, intra-predicted blocks can represent image blocks as various relational prediction mode values instead of actual values. Furthermore, intra-predicted blocks can represent image blocks as motion vector values instead of actual values. In either case, the predicted block may not accurately represent the image block in some cases. The difference is stored in the residual block. Transformations can be applied to the residual block to further compress the file.
[0044] In step 107, various filtering techniques are applied. In HEVC, filters are applied according to the in-loop filtering scheme. The block-based prediction described above can create blocky images in the decoder. Furthermore, the block-based prediction scheme encodes the blocks, and the encoded blocks can be restored later by using them as reference blocks. The in-loop filtering scheme repeatedly applies noise suppression filters, deblocking filters, adaptive loop filters, and sample-adaptive offset (SAO) filters to blocks / frames. These filters reduce such blocking artifacts, so the encoded file can be accurately restored. In addition, these filters reduce artifacts in the restored reference blocks, so there is less likelihood of further artifacts occurring in subsequent blocks encoded based on the restored reference blocks.
[0045] Once the video signal has been segmented, compressed, and filtered, the resulting data is encoded into a bitstream in step 109. This bitstream includes the data described above, as well as signaling data that is desirable to assist in the proper reconstruction of the video signal by the decoder. For example, such data may include segmentation data, prediction data, residual blocks, and various flags that provide coding instructions to the decoder. The bitstream may be stored in memory so that it can be transmitted to the decoder on demand. The bitstream may also be broadcast and / or multicast to multiple decoders. The creation of the bitstream is a repetitive process. Therefore, steps 101, 103, 105, 107, and 109 may be performed sequentially and / or simultaneously across a large number of frames and blocks. The order shown in Figure 1 is presented for clarity and simplicity of explanation and is not intended to limit the video coding process to a specific order.
[0046] The decoder receives the bitstream and starts the decoding process in step 111. Specifically, the decoder uses an entropy decoding scheme to convert the bitstream into corresponding syntax data and video data. In step 111, the decoder uses the syntax data from the bitstream to determine the division of frames. The division must be consistent with the result of the block division in step 103. The entropy encoding / decoding used in step 111 is described below. The encoder makes numerous choices during the compression process, such as selecting a block division scheme from several options based on the spatial arrangement of values in the input image. Multiple bins may be used to communicate the perfect choice. The bins used here are binary values treated as variables (e.g., bit values that can change depending on the situation). In entropy coding, the encoder can discard options that are clearly invalid in a particular situation, leaving a set of acceptable options. Each acceptable option is then assigned a codeword. The length of the codeword is based on the number of acceptable options (e.g., one bin for two options, two bins for three or four options, etc.). The encoder then encodes a codeword for the selected option. This method reduces the size of the codeword because it is desired to uniquely indicate a selection from a smaller subset of acceptable options, rather than a larger set of all possible options. The decoder then decodes the selection by determining the set of acceptable options, similar to the encoder. The decoder can read the codeword by determining the set of acceptable options and determine the selection made by the encoder.
[0047] In step 113, the decoder performs block decoding. Specifically, the decoder generates residual blocks using the inverse transform. The decoder then uses the residual blocks and corresponding prediction blocks to reconstruct the image blocks based on the partitioning. The prediction blocks may include both intra-prediction blocks and inter-prediction blocks generated by the encoder in step 105. The reconstructed image blocks are then placed within the frames of the video signal reconstructed based on the partitioning data determined in step 111. The syntax of step 113 may also be signaled in the bitstream by the entropic coding described above.
[0048] In step 115, the frames of the restored video signal are filtered, similar to step 107 in the encoder. To remove blocking artifacts, for example, noise suppression filters, deblocking filters, adaptive loop filters, and SAO filters can be applied to the frames. Once the frames are filtered, in step 117 the video signal can be output to a display for viewing by the end user.
[0049] Figure 2 is a schematic diagram of an exemplary coding and decoding (codec) system 200 for video coding. Specifically, the codec system 200 provides functions to assist in the implementation of operation method 100. The codec system 200 is outlined to depict the components used in both the encoder and the decoder. The codec system 200 receives a video signal as described in steps 101 and 103 of operation method 100, partitions it, and as a result obtains a partitioned video signal 201. The codec system 200 then compresses the partitioned video signal 201 into a coded bitstream when functioning as an encoder, as described in steps 105, 107, and 109 of method 100. When functioning as a decoder, the codec system 200 generates an output video signal from the bitstream, as described in steps 111, 113, 115, and 117 of operation method 100. The codec system 200 includes an integrated coder control component 211, a transform scaling quantization component 213, an intra-picture estimation component 215, an intra-picture prediction component 217, a motion compensation component 219, a motion estimation component 221, an inverse scaling component 229, a filter control analysis component 227, an in-loop filter component 225, a decoded picture buffer component 223, and a header formatting context-adaptive binary arithmetic coding (CABAC) component 231. These components are combined as shown in the figure. In Figure 2, the black lines show the motion of the data being encoded / decoded, and the dashed lines show the motion of the control data that controls the operation of the other components. Any of the components of the codec system 200 may reside within the encoder. The decoder may contain a subset of the components of the codec system 200. For example, the decoder may contain the intra-picture prediction component 217, the motion compensation component 219, the inverse scaling component 229, the in-loop filter component 225, and the decoded picture buffer component 223.These components will now be explained.
[0050] The segmented video signal 201 is a captured video sequence segmented into blocks of pixels by a coding tree. The coding tree subdivides blocks of pixels into smaller blocks of pixels using various split modes. These blocks can then be further subdivided into even smaller blocks. Blocks are sometimes called nodes in the coding tree. Larger parent nodes are split into smaller child nodes. The number of times a node is subdivided is called the node / coding tree depth. The segmented blocks may, in some cases, be contained within a coding unit (CU). For example, a CU may be a sub-part of a CTU, containing a lumen block, a red difference chroma (Cr) block, and a blue difference chroma (Cb) block, along with the corresponding CU syntax instructions. Split modes include binary trees (BT), triple trees (TT), and quad trees (QT), which are used to segment a node into two, three, or four child nodes, which differ in shape depending on the split mode used. The segmented video signal 201 is then transferred to the integrated coder control component 211, the transformation scaling quantization component 213, the intrapicture estimation component 215, the filter control analysis component 227, and the motion estimation component 221 for compression.
[0051] The integrated coder control component 211 is configured to make decisions related to coding the images of a video sequence into a bitstream, depending on the constraints of the application. For example, the integrated coder control component 211 manages the optimization of bitrate / bitstream size and restoration quality. Such decisions may be made based on the available storage space / bandwidth and the image resolution requirements. The integrated coder control component 211 also manages buffer usage in light of the transmission speed to mitigate buffer underrun and overrun problems. To manage these problems, the integrated coder control component 211 manages the sorting, prediction, and filtering by other components. For example, the integrated coder control component 211 can dynamically increase the complexity of compression to increase resolution and bandwidth usage, or decrease the complexity of compression to decrease resolution and bandwidth usage. Therefore, the integrated coder control component 211 balances the restoration quality of the video signal and the bitrate problem by controlling other components of the codec system 200. The integrated coder control component 211 generates control data that controls the operation of other components. The control data is also transferred to the header formatting CABAC component 231 to signal parameters for decoding at the decoder and is encoded in a bitstream.
[0052] The segmented video signal 201 is also transmitted to the motion estimation component 221 and the motion compensation component 219 for interpretation. A frame or slice of the segmented video signal 201 can be divided into multiple video blocks. The motion estimation component 221 and the motion compensation component 219 perform interpretation coding of the received video blocks based on one or more blocks in one or more reference frames to provide time prediction. The codec system 200 can perform multiple coding steps, for example, to select an appropriate coding mode for each block of video data.
[0053] The motion estimation component 221 and the motion compensation component 219 may be highly integrated, but are shown separately for conceptual purposes. The motion estimation performed by the motion estimation component 221 is the process of generating motion vectors that estimate the motion of video blocks. The motion vectors can, for example, represent the movement of a coded object relative to a prediction block. A prediction block is a block that is known to closely match a coded block in terms of pixel difference. A prediction block may also be called a reference block. Such pixel difference can be determined by the sum of absolute differences (SAD), the sum of squared differences (SSD), or other difference metrics. HEVC uses several coded objects, including CTUs, coding tree blocks (CTBs), and CUs. For example, a CTU can be split into CTBs, which can then be split into CBs to be included in a CU. A CU can be encoded as a prediction unit (PU) containing prediction data, and / or as a transformation unit (TU) containing the transformed residual data of the CU. The motion estimation component 221 generates motion vectors, PUs, and TUs by using rate distortion analysis as part of the rate distortion optimization process. For example, the motion estimation component 221 can determine multiple reference blocks, multiple motion vectors, etc. for a given block / frame and select the reference blocks, motion vectors, etc. with the best rate distortion characteristics. The best rate distortion characteristics strike a balance between the quality of video restoration (e.g., amount of data loss due to compression) and coding efficiency (e.g., the size of the final encoding).
[0054] In some cases, the codec system 200 can calculate the values of sub-integer pixel positions of the reference picture stored in the decoded picture buffer component 223. For example, the video codec system 200 can interpolate the values of quarter-pixel, eighth-pixel, or other fractional pixel positions of the reference picture. Thus, the motion estimation component 221 can perform motion search based on all pixel positions and fractional pixel positions and output motion vectors with fractional pixel precision. The motion estimation component 221 calculates motion vectors for the PUs of video blocks in the intercoded slice by comparing the PU positions with the predicted block positions of the reference picture. The motion estimation component 221 outputs the calculated motion vectors as motion data to the header formatting CABAC component 231 for encoding and outputs motion to the motion compensation component 219.
[0055] Motion compensation performed by the motion compensation component 219 allows for the acquisition or generation of predicted blocks based on the motion vector determined by the motion estimation component 221. Again, in some examples, the motion estimation component 221 and the motion compensation component 219 may be functionally integrated. Having received the motion vector of the PU of the current video block, the motion compensation component 219 can determine the position of the predicted block pointed to by the motion vector. The residual video block is then formed by subtracting the pixel values of the predicted block from the pixel values of the currently encoded video block to form a pixel difference value. Typically, the motion estimation component 221 performs motion estimation for the lumens component, and the motion compensation component 219 uses the motion vector calculated based on the lumens component for both the chromens and lumens components. The predicted block and residual block are then transferred to the transformation scaling quantization component 213.
[0056] The segmented video signal 201 is also transmitted to the intra-picture estimation component 215 and the intra-picture prediction component 217. Similar to the motion estimation component 221 and the motion compensation component 219, the intra-picture estimation component 215 and the intra-picture prediction component 217 may be highly integrated, but are shown separately for conceptual purposes. As described above, the intra-picture estimation component 215 and the intra-picture prediction component 217 intra-predict the current block based on the block in the current frame, instead of inter-predicting from frame to frame by the motion estimation component 221 and the motion compensation component 219. Specifically, the intra-picture estimation component 215 determines the intra-prediction mode to use to encode the current block. In some examples, the intra-picture estimation component 215 selects an appropriate intra-prediction mode from several proven intra-prediction modes to encode the current block. The selected intra-prediction mode is then forwarded to the header formatting CABAC component 231 for encoding.
[0057] For example, the intrapicture estimation component 215 calculates rate distortion values for various proven intra-prediction modes using rate distortion analysis and selects the intra-prediction mode with the best rate distortion characteristics from among the proven modes. Rate distortion analysis typically determines the amount of distortion (or error) between the encoded block and the original unencoded block encoded to generate the encoded block, and the bitrate (e.g., number of bits) used to generate the encoded block. The intrapicture estimation component 215 determines which intra-prediction mode exhibits the best rate distortion value for the block by calculating a ratio from the distortion and rate of various encoded blocks. In addition, the intrapicture estimation component 215 may be configured to code depth blocks of the depth map using a depth modeling mode (DMM) based on rate distortion optimization (RDO).
[0058] The intrapicture prediction component 217, when running on the encoder, can generate residual blocks from the predicted blocks based on the selected intrapicture prediction mode determined by the intrapicture estimation component 215, or, when running on the decoder, reads the residual blocks from the bitstream. The residual blocks contain the difference in values between the predicted blocks and the original blocks, expressed as a matrix. The residual blocks are then transferred to the transformation scaling quantization component 213. The intrapicture estimation component 215 and the intrapicture prediction component 217 can act on both the luma and chroma components.
[0059] The transform scaling quantization component 213 is configured to further compress the residual block. The transform scaling quantization component 213 applies a transform, such as a discrete cosine transform (DCT), discrete sine transform (DST), or a conceptually similar transform, to the residual block to generate a video block containing residual transform coefficient values. Wavelet transforms, integer transforms, subband transforms, or other types of transforms can also be used. The transform can convert the residual information from the pixel value domain to a transformation domain, such as the frequency domain. The transform scaling quantization component 213 is also configured to scale the transformed residual information, for example, based on frequency. Such scaling applies a scaling factor to the residual information, thereby quantizing various frequency information at different granularities, which can affect the final visual quality of the restored video. The transform scaling quantization component 213 is also configured to quantize the transform coefficients to further reduce the bitrate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be changed by adjusting the quantization parameter. In some examples, the transformation scaling quantization component 213 can then perform a scan of the matrix containing the quantized transformation coefficients. The quantized transformation coefficients are encoded in a bitstream and then transferred to the header formatting CABAC component 231.
[0060] The inverse scaling component 229 applies the inverse operations of the transform-scaling-quantization component 213 to assist in motion estimation. The inverse scaling component 229 reconstructs the residual block in pixel region by applying inverse scaling, transform, and / or quantization, for example, to be used later as a reference block that could be a predicted block for another current block. The motion estimation component 221 and / or motion compensation component 219 can compute the reference block by adding the residual block to the corresponding predicted block used for motion estimation of a later block / frame. Filters are applied to the reconstructed reference block to mitigate artifacts that occur during scaling, quantization, and transform; otherwise, such artifacts could lead to inaccurate predictions (and further artifacts) when subsequent blocks are predicted.
[0061] The filter control analysis component 227 and the in-loop filter component 225 apply filters to the residual blocks and / or the restored image blocks. For example, to restore the original image blocks, the transformed residual blocks from the inverse scaling component 229 can be combined with the corresponding predicted blocks from the intra-picture prediction component 217 and / or the motion compensation component 219. Filters can then be applied to the restored image blocks. In some examples, the filters can be applied to the residual blocks instead. As with the other components in Figure 2, the filter control analysis component 227 and the in-loop filter component 225 may be highly integrated and run together, but are depicted separately for conceptual purposes. The filters applied to the restored reference blocks are applied to a specific spatial region and include several parameters that adjust how such filters are applied. The filter control analysis component 227 analyzes the restored reference blocks to determine when such filters should be applied and sets the appropriate parameters. Such data is transferred to the header formatting CABAC component 231 as filter control data for encoding. The in-loop filter component 225 applies such filters based on filter control data. These filters may include deblocking filters, noise suppression filters, SAO filters, and adaptive loop filters. Such filters may be applied, as examples, in the spatial / pixel domain (e.g., on a reconstructed pixel block) or in the frequency domain.
[0062] When operating as an encoder, the filtered, restored image blocks, residual blocks, and / or predicted blocks are stored in the decoded picture buffer component 223 for later use in the motion estimation described above. When operating as a decoder, the decoded picture buffer component 223 stores the restored and filtered blocks and transfers them to the display as part of the output video signal. The decoded picture buffer component 223 may be any memory device capable of storing the predicted blocks, residual blocks, and / or restored image blocks.
[0063] The header formatting CABAC component 231 receives data from various components of the codec system 200 and encodes such data into a coded bitstream for transmission to the decoder. Specifically, the header formatting CABAC component 231 generates various headers to encode control data such as general control data and filter control data. Furthermore, prediction data, including intra-prediction and motion data, as well as residual data in the form of quantized transformation coefficient data, are all encoded into a bitstream. The final bitstream contains all the information necessary for the decoder to reconstruct the original segmented video signal 201. Such information may include an intra-prediction mode index table (also called a codeword mapping table), definitions of encoding contexts for various blocks, indications for the most likely intra-prediction mode, and indications for segmentation information. Such data may be encoded using entropy coding. For example, information can be encoded using context-adaptive variable-length coding (CAVLC), CABAC, syntax-based context-adaptive binary arithmetic coding (SBAC), stochastic interval partitioned entropy (PIPE) coding, or other entropy coding techniques. After entropy coding, the coded bitstream can be transmitted to another device (e.g., a video decoder) or stored for later transmission or retrieval.
[0064] Figure 3 is a block diagram showing an exemplary video encoder 300. The video encoder 300 may be used to perform the encoding function of the codec system 200 and / or to perform steps 101, 103, 105, 107, and / or 109 of the operation method 100. The encoder 300 partitions the input video signal, and the resulting partitioned video signal 301 is substantially the same as the partitioned video signal 201. The partitioned video signal 301 is then compressed by the components of the encoder 300 and encoded into a bitstream.
[0065] Specifically, the segmented video signal 301 is transferred to the intra-picture prediction component 317 for intra-prediction. The intra-picture prediction component 317 may be substantially the same as the intra-picture estimation component 215 and the intra-picture prediction component 217. The segmented video signal 301 is also transferred to the motion compensation component 321 for inter-prediction based on the reference block in the decoded picture buffer component 323. The motion compensation component 321 may be substantially the same as the motion estimation component 221 and the motion compensation component 219. The prediction block and residual block from the intra-picture prediction component 317 and the motion compensation component 321 are transferred to the transformation quantization component 313 for transformation and quantization of the residual block. The transformation quantization component 313 may be substantially the same as the transformation scaling quantization component 213. The transformed and quantized residual block and the corresponding prediction block (along with the associated control data) are transferred to the entropiccoding component 331 for coding into a bitstream. The entropic coding component 331 may be substantially the same as the header formatting CABAC component 231.
[0066] The transformed and quantized residual blocks and / or corresponding predicted blocks are also transferred from the transform quantization component 313 to the inverse transform quantization component 329 for restoration to a reference block used by the motion compensation component 321. The inverse transform quantization component 329 may be substantially the same as the inverse scaling component 229. In some cases, the in-loop filter in the in-loop filter component 325 is also applied to the residual blocks and / or the restored reference block. The in-loop filter component 325 may be substantially the same as the filter control analysis component 227 and the in-loop filter component 225. The in-loop filter component 325 may contain multiple filters as described with respect to the in-loop filter component 225. The filtered blocks are then stored in the decoded picture buffer component 323 for use as a reference block by the motion compensation component 321. The decoded picture buffer component 323 may be substantially the same as the decoded picture buffer component 223.
[0067] Figure 4 is a block diagram showing an exemplary video decoder 400. The video decoder 400 may be used to perform the decoding function of the codec system 200 and / or to perform steps 111, 113, 115, and / or 117 of the operation method 100. The decoder 400 receives a bitstream from, for example, the encoder 300 and generates an output video signal restored based on the bitstream for display to the end user.
[0068] The bitstream is received by the entropy decoding component 433. The entropy decoding component 433 is configured to implement an entropy decoding scheme, such as CAVLC, CABAC, SBAC, PIPE coding, or other entropy coding techniques. For example, the entropy decoding component 433 can use header information to provide context for interpreting additional data encoded as codewords in the bitstream. The decoded information includes information desirable for decoding the video signal, such as general control data, filter control data, partition information, motion data, prediction data, and quantization conversion coefficients from the residual blocks. The quantization conversion coefficients are transferred to the inverse quantization component 429 for reconstruction to the residual blocks. The inverse quantization component 429 may be similar to the inverse quantization component 329.
[0069] The recovered residual blocks and / or predicted blocks are transferred to the intra-picture prediction component 417 for restoration to image blocks based on intra-prediction operations. The intra-picture prediction component 417 may be similar to the intra-picture estimation component 215 and the intra-picture prediction component 217. Specifically, the intra-picture prediction component 417 uses a prediction mode to locate the reference block in the frame and applies the residual block to the result to restore the intra-predicted image block. The recovered intra-predicted image block and / or residual block and the corresponding inter-prediction data are transferred to the decoded picture buffer component 423 via the in-loop filter component 425, which may be substantially similar to the decoded picture buffer component 223 and the in-loop filter component 225, respectively. The in-loop filter component 425 filters the recovered image block, residual block, and / or predicted block, and this information is stored in the decoded picture buffer component 423. The restored image blocks are transferred from the decoded picture buffer component 423 to the motion compensation component 421 for interpretation. The motion compensation component 421 may be substantially the same as the motion estimation component 221 and / or motion compensation component 219. Specifically, the motion compensation component 421 generates a prediction block using the motion vector from the reference block and applies the residual block to the result to restore the image block. The thus restored block may also be transferred to the decoded picture buffer component 423 via the in-loop filter component 425. The decoded picture buffer component 423 continues to store further restored image blocks, which can be restored into frames by partitioning information. Such frames may also be arranged in a sequence. This sequence is output to the display as a restored output video signal.
[0070] Figure 5 is a schematic diagram showing an exemplary HRD 500. The HRD 500 may be used with an encoder such as the codec system 200 and / or encoder 300. The HRD 500 may inspect the bitstream generated in step 109 of method 100 before the bitstream is transferred to a decoder such as decoder 400. In some examples, once the bitstream is encoded, the bitstream may be continuously transferred through the HRD 500. If a portion of the bitstream does not conform to the relevant constraints, the HRD 500 may indicate such anomalies to the encoder so that the encoder re-encodes the corresponding portion of the bitstream using a different mechanism.
[0071] The HRD 500 includes a virtual stream scheduler (HSS) 541, a component configured to perform a virtual distribution mechanism. The virtual distribution mechanism is used to check the conformity of a bitstream or decoder with respect to the timing and data flow of the bitstream 551 input to the HRD 500. For example, the HSS 541 may receive the bitstream 551 output from an encoder and manage the process of conformity testing of the bitstream 551. In a specific example, the HSS 541 may control the rate at which coded pictures pass through the HRD 500 and verify that the bitstream 551 does not contain non-conforming data.
[0072] HSS 541 can transfer bitstream 551 to CPB 543 at a predetermined rate. For the purposes of HRD 500, any unit containing video coded within bitstream 551, such as AU and / or NAL units, may be referred to as a decodeable unit (DU) 553. CPB 543 is the first-in, first-out buffer of HRD 500. CPB 543 contains DU 553, or sub-parts thereof (e.g., slices), containing coded pictures in decoded order. CPB 543 stores such pictures for use during bitstream conformance verification.
[0073] CPB 543 transfers DU 553 to the decryption process component 545. The decryption process component 545 is a component conforming to the VVC standard. For example, the decryption process component 545 may emulate a decoder 400 used by an end user. The decryption process component 545 decrypts DU 553 at a rate achievable by an exemplary end-user decoder. If the decryption process component 545 cannot decrypt DU 553 fast enough to prevent an overflow of CPB 543, then bitstream 551 is not conforming to the standard and requires re-encoding.
[0074] The decryption process component 545 decrypts DU 553 and generates a decrypted DU 555. The decrypted DU 555 contains the decrypted picture. The decrypted DU 555 is transferred to DPB 547. DPB 547 may be substantially similar to the decrypted picture buffer components 223, 323, and / or 423. For the purpose of assisting interpretation, a picture taken from the decrypted DU 555 and marked for use as a reference picture 556 is returned to the decryption process component 545 to assist in further decryption. DPB 547 outputs the decrypted video sequence as a series of pictures 557. Picture 557 is a restored picture that typically reflects the picture encoded into the bitstream 551 by the encoder.
[0075] Picture 557 is transferred to the output cropping component 549. The output cropping component 549 is configured to apply a conformance cropping window to picture 557. This yields the output cropped picture 559. The output cropped picture 559 is the fully restored picture. Therefore, the output cropped picture 559 mimics what the end user will see when the bitstream 551 is decoded. Thus, the encoder can examine the output cropped picture 559 to confirm that the encoding is good.
[0076] Figure 6 is a schematic diagram illustrating an exemplary mechanism for performing GDR 600 in a video sequence. GDR 600 can be used in a bitstream encoded by an encoder such as codec system 200 and / or encoder 300, and decoded by a decoder such as codec system 200 and / or decoder 400. Furthermore, using the techniques described herein, HRD 500 in the encoder can perform bitstream conformance checks on the bitstream using GDR 600.
[0077] In one embodiment, the GDR 600 can be used to generate random access points to a CVS such as the CVS 608. The GDR 600 is a mechanism for coding a series of pictures, each containing both an intercoded region and an intracoded region, to avoid the coded video sequence 608 being initialized with a single, fully intracoded picture, such as an IRAP picture. Specifically, most pictures in the video sequence are coded according to inter-prediction and therefore decoded by referencing other pictures. The decoder may be unable to decode an intercoded picture if the reference picture is unavailable. The GDR 600 provides a mechanism for generating recovery points from which all subsequent pictures can be correctly decoded.
[0078] In one embodiment, CVS 608 includes a GDR picture 602, one or more subsequent pictures 604, and a recovery point picture 606. In one embodiment, the GDR picture 602 is referred to as the CVS start (CVSS) picture. Furthermore, the GDR picture 602 may be included in a GDR AU, which is an AU that includes the first GDR picture among a series of GDR-related pictures. CVS 608 may be a coded video sequence for each coded layerwise video sequence (CLVS) in the video bitstream. In particular, when the video bitstream contains one layer, the CVS and CLVS are the same. Only when the video bitstream contains multiple layers do the CVS and CLVS differ. In one embodiment, the subsequent picture 604 may be considered a form of GDR picture because it is before the recovery point picture 606 in the GDR period.
[0079] In one embodiment, the GDR picture 602, the subsequent picture 604, and the recovery point picture 606 can define the GDR period of the CVS 608. In one embodiment, the decoding order starts with the GDR picture 602, followed by the subsequent picture 604, and then proceeds to the recovery picture 606. The CVS 608 is a series of pictures (or a portion thereof) starting with the GDR picture 602 and including all (or a portion thereof) of the pictures, but not including the next GDR picture or the end of the bitstream. The GDR period is a series of pictures starting with the GDR picture 602 and including all (or a portion thereof) of the pictures, and includes the recovery point picture 606. The decoding process of the CVS 608 starts with the GDR picture 602 when the GDR picture 602 is used as a random access point in the video. A random access point is any position in the bitstream from which the decoder can begin decoding in order to obtain valid video data.
[0080] As shown in Figure 6, the GDR 600 operates across a series of pictures, starting with the GDR picture 602 and ending with the recovery point picture 606. The GDR picture 602 contains a refreshed / clean region 610 containing blocks coded entirely using intra-prediction (i.e., intra-prediction blocks) and an unrefreshed / dirty region 612 containing blocks coded entirely using inter-prediction (i.e., inter-prediction blocks). The intra-prediction blocks can be decoded without referencing other pictures. However, the inter-prediction blocks in the dirty region cannot be decoded without referencing pictures prior to the GDR picture 602, and therefore can only be decoded when the GDR picture 602 is not used as a random access point.
[0081] The subsequent picture 604 is located immediately next to the GDR picture 602 and includes a refreshed / clean area 610 having a first area 610A coded using intra-prediction and a second area 610B coded using inter-prediction. The second area 610B is coded by referencing, for example, the refreshed / clean area 610 of the preceding picture within the GDR period of CVS 608. As illustrated, the refreshed / clean area 610 of the subsequent picture 604 expands as the coding process moves or progresses in a certain direction (e.g., from left to right), and correspondingly the unrefreshed / dirty area 612 shrinks. Finally, the coding process reaches a recovery point picture 606 that contains only the refreshed / clean area 610. In particular, the second area 610B of the refreshed / clean area 610 may be coded as an inter-prediction block and referencing only the refreshed / clean area 610 of the reference picture. This restriction ensures that dirty data is not introduced into the refreshed / clean area 610.
[0082] Therefore, the recovery point picture 606 is a picture that follows a series of GDRs, and it becomes possible to fully decode the recovery point picture 606 without referencing the data of pictures that precede the first GDR picture 602 in the series of GDRs. For example, the recovery point picture 606 may be coded by interpretation, referencing any clean region 610 of the preceding picture. As seen in Figure 6, the decoder may want to quickly determine which picture is the recovery point picture 606, because once the recovery point picture 606 is reached, the decoder wants to start displaying the picture. For example, a header such as the picture header or slice header associated with the GDR picture 602 may have a flag set to "no output preceding picture". When this flag is set, the picture will not be output to the user until the recovery point picture 606 is reached. This can prevent the display of GDR picture 602 and subsequent picture 604, which may contain unrefreshed / dirty regions 612 that cannot be properly decoded for display.
[0083] This process can be managed using POC values. A POC is a variable / value associated with each picture, uniquely identifying the associated picture among all pictures in the CVS 608. Furthermore, when an associated picture is output from the DPB, the POC indicates the position of the associated picture in output order relative to the output order of other pictures in the same CVS 608, also output from the DPB. Thus, GDR picture 602 has a GDR POC 621, subsequent picture 604 has a POC 623, and recovery point picture 606 has a recovery POC 622. In this way, GDR POC 621 is the POC of GDR picture 602, and recovery POC 622 is the POC of recovery point picture 606. A decoder can use POC values to determine decoding details regarding the GDR period. For example, the header can be used to indicate the POC LSB associated with GDR picture 602. The POC LSB is one or more of the least significant bits in the POC value. The decoder can use the POC LSB of GDR picture 602, along with other syntax elements, to determine GDR POC 621. This technique can reduce the number of bits used to represent GDR POC 621. The recovered POC 622 can be represented by the difference between GDR POC 621 and recovered POC 622. Thus, the decoder can determine the POC of GDR picture 602 based on the POC LSB value of the header. The decoder can then retrieve the value of recovered POC 622 from the header and resolve the value of recovered POC 622 based on GDR POC 621 of GDR picture 602. Once resolved / determined, the value of recovered POC 622 indicates the POC of recovery point picture 606. The decoder can then begin displaying the restored picture, starting from recovery point picture 606.
[0084] Figure 7 is a schematic diagram showing an undesirable motion search 700 when encoder limits are used to support the GDR 600. As shown, the motion search 700 represents the current picture 702 and the reference picture 704. The current picture 702 and the reference picture 704 contain a refreshed region 706 coded with intra-prediction, a refreshed region 705 coded with inter-prediction, and an unrefreshed region 708, respectively. The refreshed region 705, the refreshed region 706, and the unrefreshed region 708 are similar to the first region 610A, the second region 610B, and the unrefreshed / dirty region 612 of the refreshed / clean region 610, respectively, in Figure 6.
[0085] During the motion search process, the encoder is constrained or prevented from selecting a motion vector 710 that points to a reference block 712 containing samples located outside the refreshed regions 705–706. This occurs even when the reference block 712 provides the best rate-distortion cost criterion when predicting the current block 714 within the current picture 702. However, by using this constraint, it is ensured that the refreshed regions 705–706 do not reference dirty data and therefore the associated GDR picture does not become undecodeable when used as a random access point.
[0086] Figure 8 is a schematic diagram showing an exemplary bitstream 800 for use in initializing an HRD, such as HRD 500, when a GDR, such as GDR 600, is being used. For example, bitstream 800 can be generated in the codec system 200 and / or encoder 300 for decoding in the codec system 200 and / or decoder 400 according to method 100.
[0087] Bitstream 800 includes SPS810, multiple Picture Parameter Sets (PPS)811, multiple Slice Headers 815, and image data 820. SPS810 contains sequence data common to all pictures in the coded video sequence contained in bitstream 800. Such data may include picture resizing, bit depth, coding tool parameters, bitrate limits, etc. PPS811 contains parameters that apply to the entire picture. Therefore, each picture in the video sequence may refer to PPS811. Note that in some examples, each picture refers to PPS811, while a single PPS811 can contain data for multiple pictures. For example, several similar pictures may be coded according to similar parameters. In such cases, a single PPS811 may contain data for such similar pictures. PPS811 can indicate coding tools, quantization parameters, offsets, etc., that can be used for slices in the corresponding picture. Slice Headers 815 contain parameters specific to each slice in the picture. Therefore, in a video sequence, there may be one slice header 815 for each slice. The slice header 815 may contain slice type information, POC, reference picture list, prediction weights, tile entry point, deblocking parameters, etc. Note that in some contexts, the slice header 815 may also be called a tile group header. In some examples, the bitstream 800 may also include a picture header, which is a syntactic structure containing parameters that apply to all slices within a single picture. For this reason, in some contexts, the picture header and the slice header 815 may be used interchangeably. For example, some parameters may move between the slice header 815 and the picture header depending on whether such parameters are common to all slices within the picture.
[0088] Image data 820 includes video data encoded according to interpretation and / or intrapretation, as well as the corresponding transformed and quantized residual data. For example, a video sequence includes multiple pictures 823. A picture 823 is a complete image intended to be displayed to the user, fully or partially, at a corresponding moment in the video sequence. A picture 823 may be contained in a single AU 821. An AU 821 is a coding unit configured to store a single coded picture 823 and optionally one or more headers, such as a slice header 815, the headers containing parameters describing the coding mechanism used to code the coded picture 823. A picture 823 includes one or more slices 825. A slice 825 may be defined as an integer of complete tiles of picture 823 exclusively contained in a single NAL unit, or an integer of consecutive complete CTU rows (e.g., within a tile). A slice 825 is further divided into CTUs and / or coding tree blocks (CTBs). A CTU is a group of samples of a given size that can be separated by a coding tree. A CTB is a subset of a CTU, containing the luma or chroma components of the CTU. The CTU / CTB is further divided into coding blocks based on the coding tree. These coding blocks can then be encoded / decoded according to a prediction mechanism.
[0089] As described above, some video coding systems do not need to be configured to run HRD 500 when bitstream 800 contains picture 823 coded according to GDR 600. This is because HRD 500 may be configured to initiate a conformance test on the IRAP picture. To address this issue, a BP SEI message 817 may be used. A BP SEI message 817 may be associated with a GDR AU. For example, a BP SEI message 817 may be included in bitstream 800 for each AU 821 containing a GDR picture (e.g., the first picture in the GDR period). An SEI message is a syntactic structure with specific semantics that conveys information not required in the decoding process in order to determine the values of samples in the decoded picture. Therefore, SEI messages are used to signal parameters that are not directly related to the decoding of bitstream 800. A BP SEI message 817 is an SEI message that includes HRD parameters 836 for initializing HRD to manage CPBs such as CPB 543. The CPB may hold / buffer a picture for a specified period. Thus, the BP SEI message 817 may be configured to specify the buffering period in the CPB. The HRD parameter 836 includes any parameters that assist in the initialization of the HRD. For example, the HRD parameter 836 may include an initial CPB removal delay. The CPB removal delay is the period during which a picture can remain in the CPB before being removed. The CPB removal delay may be used to initialize the HRD in decode order at the location of the GDR AU. Thus, the BP SEI message 817 may be used to initialize the HRD with the GDR picture and therefore assist in the application of bitstream conformance testing when bitstream 800 contains a GDR picture. Furthermore, the HRD parameter 836 in the BP SEI message 817 may indicate to the decoder that the bitstream is undergoing conformance testing. Thus, the HRD parameter 836 in the BP SEI message 817 may indicate to the decoder that the decoder is capable of decoding bitstream 800.
[0090] Bitstream 800 may also have other mechanisms to support the use of GDR. For example, the slice header 815 or the corresponding picture header may include a no-preceding-picture-output flag 831. The no-preceding-picture-output flag 831 may be set in the header of the GDR picture and included in the GDR AU. The no-preceding-picture-output flag 831 can be set to indicate to the decoder that pictures within the GDR period should not be output until the recovery picture is reached. The recovery picture can then be displayed without displaying the partially decoded picture, which has been partially restored based on the dirty data.
[0091] Furthermore, bitstream 800 may include, for example, a POC LSB value 833 and a recovered POC value 835 in a slice header 815 or a corresponding picture header. The POC LSB value 833 includes one or more of the least significant bits in the POC value. The POC LSB value 833 may be associated with a GDR picture and therefore may indicate the LSB of the POC relative to the GDR picture. In the example, the POC LSB value 833 may be included in the header as the ph_pic_order_cnt_lsb value. The ph_pic_order_cnt_lsb value may specify the POC modulo maximum POC LSB for the current picture, and the current picture is a GDR picture. The recovered POC value 835 indicates the POC of the recovered point picture associated with the GDR picture. For example, the recovered POC value 835 may be included in the same header as the POC LSB value 833. Furthermore, the recovery POC value 835 can be signaled as the recovery POC count (recovery_poc_cnt) value. The recovery_poc_cnt value specifies the recovery point of the decoded picture as the difference in POC counts between the GDR POC and the recovery point picture POC, in output order. Additionally, the POC LSB value 833 may be listed in the header before the recovery POC value 835. In this way, the decoder can parse the header to obtain the POC LSB value 833 and determine the GDR POC. The decoder can parse the header to obtain the recovery POC value 835. Since the GDR POC has already been determined based on the POC LSB value 833, the recovery POC value 835 can be resolved immediately, and as a result, the recovery point picture POC can be determined. This prevents the decoder from storing the unresolved recovery POC value 835 in memory until the POC LSB value 833 of the GDR picture is parsed and resolved. Thus, the bitstream 800 incorporates various mechanisms to support improved GDR functionality, for example, for the HRD and / or decoder. In this way, the mechanisms described for the bitstream 800 can improve the functionality of the encoder and / or decoder.Furthermore, the mechanism described for bitstream 800 can help improve coding efficiency and / or reduce processor, memory, and / or network communication resources in the encoder and / or decoder.
[0092] The information mentioned above is explained in more detail below. Video coding systems that implement High Efficiency Video Coding (HEVC) may use multiple IRAP pictures. Specifically, in HEVC, IDR, Broken Link Access (BLA), and CRA pictures are all considered IRAP pictures. Video coding systems using VVC may use IDR and CRA pictures as IRAP pictures. IRAP pictures can provide the following functions / benefits: The presence of an IRAP picture indicates that the decoding process can be started from that picture. This function supports random access, which allows the decoding process to be started from a position in the bitstream that is not necessarily the starting point of the bitstream, as long as an IRAP picture exists at that position. Also, the presence of an IRAP picture can refresh the decoding process so that pictures coded after the IRAP picture in the decoding order are coded without referencing any pictures that precede the IRAP picture, with the exception of Random Access Skip Reading (RASL) pictures. Therefore, coding errors that may occur when decoding a picture prior to the IRAP picture may not propagate through the IRAP picture and affect pictures that follow the IRAP picture in the decoding order.
[0093] IRAP pictures offer various functionalities at the cost of a penalty to compression efficiency. For example, the presence of an IRAP picture can cause a surge in the bitrate. This penalty to compression efficiency has two causes. Firstly, an IRAP picture is an intra-predictive picture. Therefore, more bits may be used to represent the IRAP than other inter-predictive pictures. Secondly, the presence of an IRAP picture can disrupt time prediction. This is because an IRAP picture may refresh the decoding process and remove previous reference pictures from the DPB. Thus, the coding efficiency of pictures that follow an IRAP picture in the decoding order may decrease because such pictures have fewer reference pictures to choose from when inter-predictive coding is performed.
[0094] Among the picture types considered IRAP pictures, IDR pictures may use different signaling and derivation compared to other picture types. Some of the differences are as follows: For the signaling and derivation of the POC value of an IDR picture, the most significant bit (MSB), which is part of the POC, may be set to zero instead of having to be derived from the previous key picture. For signaling information used for reference picture management, the slice header of an IDR picture does not have to include information to assist in reference picture management. Other picture types, such as CRAs and successor pictures, may include information such as reference picture set (RPS) or reference picture list information to assist in the reference picture marking process. The reference picture marking process is the process of determining whether a reference picture in the DPB is used for reference or not. However, in the case of an IDR picture, such information does not need to be signaled because the presence of the IDR indicates that the decoding process should mark all reference pictures in the DPB as not to be used for reference.
[0095] When a reading picture exists, it is associated with an IRAP picture. The reading picture is the picture that follows the associated IRAP picture in the decoding order, but precedes the IRAP picture in the presentation / output order. Depending on the coding configuration and picture reference structure, reading pictures are further identified into two types. The first type is a reading picture that may not be decoded correctly when the decoding process starts with the associated IRAP picture. Such pictures are known as Random Access Skip Reading (RASL) pictures. In this case, the RASL picture may not be decodeable because it is coded by referencing a picture that precedes the IRAP picture in the decoding order. The second type is a reading picture that can be decoded correctly even when the decoding process starts with the associated IRAP picture. Such pictures are known as Random Access Decodeable Reading (RADL) pictures. RADL pictures can be decoded because they are coded without directly or indirectly referencing the picture that precedes the IRAP picture in the decoding order. Some video coding systems impose constraints such as requiring the RASL picture to precede the RADL picture in the output order when both RASL and RADL pictures are associated with the same IRAP picture.
[0096] IRAP pictures and reading pictures are assigned to different NAL unit types to assist identification by system-level applications. For example, a video splicer may be configured to determine the coding picture type without considering detailed syntax elements in the coded bitstream. For example, a video splicer may identify a reading picture from a subsequent picture, including identifying an IRAP picture from a non-IRAP picture and determining RASL and RADL pictures. A subsequent picture is a picture associated with an IRAP picture and follows the IRAP picture in output order. A picture is associated with a particular IRAP picture when it follows a particular IRAP picture in decoding order and precedes any other IRAP picture in decoding order. Thus, assigning IRAP and reading pictures to different NAL unit types assists such applications.
[0097] Some exemplary NAL unit types for picture types are as follows: A BLA containing a reading picture (BLA_W_LP) is a NAL unit for a broken link access (BLA) picture, where one or more reading pictures may follow in the decoding order. A BLA containing a RADL (BLA_W_RADL) is a NAL unit for a BLA picture, where one or more RADL pictures may follow in the decoding order, but no RASL pictures are included. A BLA without a reading picture (BLA_N_LP) is a NAL unit for a BLA picture, where no reading picture follows in the decoding order. An IDR containing a RADL (IDR_W_RADL) is a NAL unit for an IDR picture, where one or more RADL pictures may follow in the decoding order, but no RASL pictures are included. An IDR without a reading picture (IDR_N_LP) is a NAL unit for an IDR picture, where no reading picture follows in the decoding order. CRA is a NAL unit of a CRA picture, which may be followed by a leading picture such as a RASL picture, a RADL picture, or both. RADL is a NAL unit of a RADL picture. RASL is a NAL unit of a RASL picture.
[0098] For low-latency applications, avoiding IRAP picture coding can be advantageous because the bitrate requirements for IRAP picture coding are relatively higher than those for non-IRAP picture coding, and such higher bitrate requirements lead to increased latency and / or delay. However, it would be impossible to completely avoid the use of random access points in all low-latency applications. For example, interactive applications such as multi-person remote conferencing may need to provide a certain point from which new users can join the remote conference.
[0099] Gradual Intra-Refresh (PIR) is an exemplary mechanism that can be used to provide random access points to a bitstream without using IRAP pictures. This technique allows new users to join a multi-person teleconferencing application while avoiding the bitrate peaks associated with IRAP. PIR may also be called Gradual Decoded Refresh (GDR) and / or Gradual Random Access (GRA). Figure 6 shows an exemplary mechanism for performing GDR. The GDR technique starts with a GDR picture and operates across multiple pictures. The GDR picture contains one region where all coded blocks within the region are coded as intra-prediction blocks. This region may be called the refreshed region / clean region. The remaining blocks in the GDR picture may be coded as inter-prediction blocks. This region may be called the unrefreshed region / dirty region. In subsequent pictures following the GDR picture, the region coded with intra-prediction blocks moves in a certain direction (e.g., from left to right). This mechanism reduces the dirty region containing the inter-prediction blocks. For each subsequent picture, the clean and collocated areas of the previous picture can be coded according to interpretation, resulting in a larger clean / refreshed area size. The clean area of the current picture can only use interpretation to reference blocks of clean areas within the referenced picture.
[0100] Video systems employing HEVC may support GDR non-standardly using recovery point SEI messages and region refresh information SEI messages. Such SEI messages do not need to define how GDR is performed, but may provide a mechanism to indicate the first and last pictures of the GDR period (e.g., in recovery point SEI messages) and the refreshed region (e.g., in region refresh information SEI messages). GDR may be performed using constraint intra-prediction (CIP) and encoder constraints on motion vectors. CIP can be used to code intra-coded regions because it ensures that intra-coded regions do not reference samples from unrefreshed regions. CIP can cause a decrease in coding performance because constraints are applied to both the intra-coded blocks of the refreshed region and all intra-coded blocks within the picture. Encoder constraints on motion vectors can be applied by restricting the encoder from using samples in reference pictures located outside the refreshed region. Such constraints may lead to suboptimal motion search. Figure 7 shows an exemplary suboptimal motion search resulting from the use of encoder constraints to support GDR. During the motion search process, the encoder is prevented from selecting a motion vector that references any sample of a reference block located outside the refreshed region. This condition persists even if that reference block is the best reference block according to the rate-distortion cost criterion.
[0101] An exemplary implementation of GDR based on the use of CIP and encoder constraint techniques can be summarized as follows: An intra-prediction mode is enforced on coding units based on columns. Constrained intra-prediction is made available to ensure the restoration of the intra-predicted coding units. Motion vectors are constrained to point within the refreshed area, taking into account an additional margin such as 6 pixels to avoid widening of filter errors. When the intra-prediction column is re-looping, the previous reference picture may be removed. Another exemplary implementation of GDR may be used to indicate the pictures to be used as the first and last pictures of a GDR period. This example can be summarized as follows: A NAL unit with a type recovery point instruction can be used as a non-video coding layer (VCL) NAL unit. The payload of the NAL unit contains syntax elements to specify information that can be used to derive the POC value of the last picture in the GDR period. An access unit containing a non-VCL NAL unit with a type recovery point instruction may be called a recovery point start (RBP) access unit. The picture in the RBP access unit is referred to as an RBP picture. The decryption process can be started from the RBP AU. When decryption starts from the RBP AU, pictures within the GDR period, with the exception of the last picture, will not be output for display.
[0102] In an exemplary implementation, a video coding system using VVC to perform GRA may use the following elements to ensure that a coded video sequence (CVS) begins with a GRA picture that is not fully intracoded: gra_enabled_flag in the SPS may specify whether a GRA picture may exist. GRA_NUT is the NAL unit type indicating a GRA picture. recovery_poc_cnt in the slice header may specify that the corresponding picture is a recovery picture, and therefore the picture starts a new CVS, and the recovery picture and subsequent pictures can be correctly decoded based on the pictures within the GRA period. The CVS may begin with a GRA picture, as may it begin with a CVS after a CRA picture.
[0103] The aforementioned approach has several problems. For example, implementing VVC using GRA pictures may not support the specification of HRD parameters and the definition of HRD compliance behavior for bitstreams containing GRA pictures. As a result, for example, the decoding capability requirements for bitstreams starting with GRA pictures may not be clear.
[0104] In general, this disclosure describes methods for supporting the specification of bitstream compatibility mechanisms for video bitstreams containing GDR pictures. For example, such support may be achieved by defining a mechanism for managing the HRD of such video bitstreams. The description of the techniques used herein is based on the VVC implementation, but may also be applicable to other video codec specifications.
[0105] One or more of the above-mentioned problems can be solved as follows. For example, this disclosure includes a method for specifying HRD parameters and enabling the definition of HRD compliance behavior, which can be done for a bitstream containing GRA pictures. For example, to indicate when HRD parameters are present in CVS, NalHrdBpPresentFlag can be set to 1 or VclHrdBpPresentFlag can be set to 1. In such cases, a buffering period SEI message may be associated with each GRA access unit. Furthermore, the buffering period SEI message may contain HRD parameters. Thus, HRD parameters become available for GRA access units, and HRD behavior can be initialized on any GRA access unit. For example, a video bitstream containing multiple GRA access units may each contain a GRA picture. The bitstream can be decoded by a decoder. Each GRA access unit can be associated with a buffering period SEI message. The decoder can decode a video bitstream starting from one of the GRA access units based on buffering period SEI messages associated with at least one GRA access unit. In another example, the encoder can encode a video bitstream. For instance, the encoder can encode multiple GRA pictures by encoding each GRA picture into a single access unit. For each GRA picture, the encoder can encode the associated buffering period SEI message. One or more exemplary implementations are described below.
[0106] The syntax for an example generic slice header is as follows: [Table 1]
[0107] The following is an example of sequence termination RBSP semantics: If present, the sequence termination RBSP indicates that the current access unit is the last access unit in the coded video sequence in decoding order, and that the next subsequent access unit (if any) in the bitstream is an IRAP or GRA access unit in decoding order. The syntax content of the data bit symbol sequence (SODB) and the RBSP of the sequence termination RBSP are empty.
[0108] The semantics of an exemplary generic slice header are as follows: When present, the values of each slice header syntax element, slice_pic_parameter_set_id, slice_pic_order_cnt_lsb, no_output_of_prior_pics_flag, and slice_temporal_mvp_enabled_flag, may be the same for all slice headers of coded pictures. no_output_of_prior_pics_flag may affect the output of previously coded pictures in the decoded picture buffer after decoding of the coded video sequence start (CVSS) picture that is not the first picture in the bitstream.
[0109] The following is an exemplary mechanism for removing a picture from the DPB before decoding the picture. When the current picture is a CVSS picture that is not picture zero, the following steps may be applied in this order. For the decoder under test, the variable NoOutputOfPriorPicsFlag is obtained as follows. The values of pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8, or sps_max_dec_pic_buffering_minus1[HighestTid] obtained from the active SPS are used for the preceding picture. When the values of ] differ, NoOutputOfPriorPicsFlag may be set to 1 by the decoder under test, regardless of the value of no_output_of_prior_pics_flag (but should not be set). Under such conditions, it may be preferable to set NoOutputOfPriorPicsFlag to be the same as no_output_of_prior_pics_flag, in which case the decoder under test is capable of setting NoOutputOfPriorPicsFlag to 1. Otherwise, NoOutputOfPriorPicsFlag may be set to be the same as no_output_of_prior_pics_flag.The NoOutputOfPriorPicsFlag value obtained for the decoder under test is applied to the HRD. As a result, when the NoOutputOfPriorPicsFlag value is 1, all picture storage buffers in the DPB are emptied without outputting the pictures they contain, and the DPB fullness is set to zero.
[0110] An exemplary bitstream compliance is as follows: The first coded picture in the bitstream must be an IRAP picture (e.g., an IDR picture or a CRA picture) or a GRA picture.
[0111] An exemplary picture output or removal from a DPB is as follows: If the current picture is a CVSS picture that is not picture zero, the following steps may be applied in this order: For the decoder under test, the variable NoOutputOfPriorPicsFlag may be derived as follows: The values of pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8, or sps_max_dec_pic_buffering_minus1[HighestTid] obtained from the active SPS are used for the preceding picture. When the values of ] differ, NoOutputOfPriorPicsFlag may be set to 1 by the decoder under test, regardless of the value of no_output_of_prior_pics_flag (but should not be set). Under such conditions, it is preferable to set NoOutputOfPriorPicsFlag to be the same as no_output_of_prior_pics_flag, in which case the decoder under test is capable of setting NoOutputOfPriorPicsFlag to 1. Otherwise, NoOutputOfPriorPicsFlag may be set to be the same as no_output_of_prior_pics_flag.
[0112] The NoOutputOfPriorPicsFlag value obtained for the decoder under test may conform to the HRD as follows: When the NoOutputOfPriorPicsFlag value is 1, all picture storage buffers in the DPB may be emptied without outputting the pictures they contain, and the DPB fullness may be set to zero. Otherwise (when the NoOutputOfPriorPicsFlag value is 0), all picture storage buffers containing pictures that are marked as not needing to be output and not being used for reference may be emptied (without output), and all non-empty picture storage buffers in the DPB may be emptied by repeatedly calling the bumping process, and the DPB fullness may be set to zero.
[0113] The semantics of an exemplary buffering period SEI message are as follows: The presence of a buffering period SEI message may be specified as follows: If NalHrdBpPresentFlag is 1 or VclHrdBpPresentFlag is 1, then the following may apply to each access unit in CVS: If the access unit is an IRAP or GRA access unit, a buffering period SEI message applicable to the operating point may be associated with the access unit. Alternatively, if the access unit contains notDiscardablePic, a buffering period SEI message applicable to the operating point may or may not be associated with the access unit. Alternatively, the access unit may not be associated with a buffering period SEI message applicable to the operating point. Otherwise (if both NalHrdBpPresentFlag and VclHrdBpPresentFlag are zero), there may be no access units in CVS associated with a buffering period SEI message. Currently, if the picture contains a buffered-period SEI message and concatenation_flag is 1, the current picture's cpb_removal_delay_minus1 may not be used. The constraints specified above allow bitstream splicing (using reference structures) at splicing points by varying the value of concatenation_flag in the buffered-period SEI message for IRAP or GRA pictures from zero to 1 under certain circumstances. When concatenation_flag is zero, the constraints specified above allow the decoder to check whether the constraint is sufficient as a method for detecting the loss of picture prevNonDiscardablePic.
[0114] The semantics of an exemplary picture-timing SEI message are as follows: For a picture that is not output by the bumping process because it precedes a CVSS picture with no_output_of_prior_pics_flag that is 1 or is presumed to be 1 in the decoding order, the number of outputs obtained from dpb_output_delay may increase as the value of PicOrderCntVal for all pictures in the same CVS increases.
[0115] Figure 9 is a schematic diagram of an exemplary video coding apparatus 900. The video coding apparatus 900 is suitable for carrying out the disclosed examples / embodiments as described herein. The video coding apparatus 900 includes a downstream port 920, an upstream port 950, and / or a transceiver unit (Tx / Rx) 910 including a transmitter and / or receiver for transmitting data upstream and / or downstream over a network. The video coding apparatus 900 also includes a processor 930 including a logic unit and / or a central processing unit (CPU) for processing data, and memory 932 for storing data. The video coding apparatus 900 may also include electrical, optical-electrical (OE) components, electrical-optical (EO) components, and / or wireless communication components coupled to the upstream port 950 and / or downstream port 920 for data communication over an electrical, optical, or wireless communication network. The video coding apparatus 900 may also include input and / or output (I / O) devices 960 for exchanging data with a user. The I / O device 960 may include output devices such as a display for displaying video data and a speaker for outputting audio data. The I / O device 960 may also include input devices such as a keyboard, mouse, or trackball, and / or corresponding interfaces for interacting with such output devices.
[0116] The processor 930 is implemented by hardware and software. The processor 930 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 930 communicates with downstream port 920, Tx / Rx 910, upstream port 950, and memory 932. The processor 930 includes a coding module 914. The coding module 914 implements embodiments disclosed herein, such as methods 100, 1000, and 1100, which may use GDR 600 and / or bitstream 800. The coding module 914 may also implement any other methods / mechanisms described herein. Furthermore, the coding module 914 may implement a codec system 200, an encoder 300, a decoder 400, and / or HRD 500. For example, the coding module 914 may be associated with a BP SEI message containing a GDR picture. Furthermore, the coding module 914 can place the POC LSB value before the recovery picture order count value in the header associated with the picture. Thus, the coding module 914 provides additional functionality and / or coding efficiency when the video coding device 900 codes video data. In this way, the coding module 914 enhances the functionality of the video coding device 900 and addresses problems inherent in video coding technology. Moreover, the coding module 914 enables the video coding device 900 to achieve different states of conversion. Alternatively, the coding module 914 can be implemented as an instruction stored in memory 932 and executed by the processor 930 (for example, as a computer program product stored on a non-temporary medium).
[0117] Memory 932 includes one or more memory types, such as disks, tape drives, solid-state drives, read-only memory (ROM), random-access memory (RAM), flash memory, tri-level associative memory (TCAM), and static random-access memory (SRAM). Memory 932 may also be used as an overflow data storage device to store such programs when they are selected for execution, and to store instructions and data read during program execution.
[0118] Figure 10 is a flowchart of an exemplary method 1000 for signaling a recovery point picture (POC) when encoding a video sequence using a GDR, such as GDR 600, to a bitstream, such as bitstream 800. Method 1000 may be used with an encoder such as a codec system 200, encoder 300, and / or video coding device 900 when performing Method 100. Such an encoder may also be an HRD 500.
[0119] Method 1000 may begin, for example, when, based on user input, the encoder receives a video sequence containing multiple pictures and decides to encode the video sequence into a bitstream. In step 1001, the encoder encodes a GDR period containing a GDR picture, such as a GDR picture 602, and one or more subsequent pictures, such as a subsequent picture 604, into a bitstream, as shown in Figure 6. Specifically, the GDR picture and associated subsequent pictures each contain one or more regions coded according to inter-prediction, such as a second region 610B and / or an unrefreshed / dirty region 612, and a region coded according to intra-prediction, such as a first region 610A. In some examples, the regions coded according to inter-prediction and the regions coded according to intra-prediction may each have a height greater than a width, as shown in Figure 6. The encoder also encodes recovery point pictures, such as a recovery point picture 606, into a bitstream. The recovery point picture follows both the GDR picture within the GDR period and the associated subsequent picture in the decryption order. The GDR picture may be encoded in a GDR AU. The subsequent picture and the recovery point picture may be encoded in a subsequent AU.
[0120] In step 1003, the encoder can encode the BP SEI message associated with the GDR AU into a bitstream. The BP SEI message provides an initial CPB rejection delay and / or other HRD parameters. These parameters may be used to initialize an HRD, such as HRD 500, at the position of the GDR AU in the bitstream in decoding order.
[0121] In step 1005, the encoder determines the POC LSB value of the GDR picture. The POC LSB value can be used to identify the GDR picture from other pictures in the bitstream. The decoder also determines a recovery picture sequence count value to identify the recovery point picture. In some examples, the recovery picture sequence count value indicates the position of the recovery point picture relative to the GDR picture. For example, the recovery picture sequence count value may indicate the difference between the POC of the GDR picture and the POC of the recovery point picture. Note that the difference between the recovery picture POC and the GDR POC may be smaller than the recovery picture POC. In this way, signaling the recovery picture POC as a difference value compresses the signaled data and improves coding efficiency.
[0122] In step 1007, the encoder encodes the header associated with the GDR picture into a bitstream. Furthermore, the encoder encodes the POC LSB value and the recovered picture order count value into the header. Specifically, the encoded POC LSB value is encoded in the header before the recovered picture order count value. In this way, the decoder can parse the header and resolve the GDR POC based on the POC LSB before parsing the recovered picture order count value. Thus, when the recovered picture order count value is parsed, it can be resolved immediately. This would be more efficient than storing the recovered picture order count value in memory until the GDR POC can be determined. In various examples, the header associated with the GDR picture is the picture header and / or slice header. Therefore, the POC LSB value and the recovered picture order count value may be included in the picture header and / or slice header. In the example, the POC LSB value is included in the header as the picture header picture order count LSB (ph_pic_order_cnt_lsb) value. The ph_pic_order_cnt_lsb value specifies the picture order count modulo maximum picture order count LSB for the current picture, where the GDR picture is the current picture. In the example, the recovery picture order count value is included in the header as the recovery POC count (recovery_poc_cnt) value. The recovery_poc_cnt value specifies the recovery points of the decoded pictures in output order. In the example, the encoder may also set a "no preceding picture output" flag in the header when the current picture is the GDR picture. This flag instructs the decoder not to output the GDR picture and its associated subsequent pictures before the recovery point picture, in order to avoid outputting pictures containing dirty data that may not be fully decoded.
[0123] In step 1009, the encoder can store the bitstream for communication with the decoder.
[0124] Figure 11 is a flowchart of an exemplary method 1100 for decoding a video sequence using a GDR, such as GDR 600, from a bitstream, such as bitstream 800, based on a signaled recovery point picture (POC). Method 1100 may be used with a decoder such as a codec system 200, a decoder 400, and / or a video coding device 900 when performing Method 100.
[0125] Method 1100 may be initiated, for example, as a result of Method 1000 in an encoder using HRD 500, when the decoder begins to receive a bitstream of coded data representing a video sequence. In step 1101, the decoder receives the bitstream. The bitstream includes a GDR period containing a GDR picture, such as GDR picture 602, and one or more subsequent pictures, such as subsequent picture 604, as shown in Figure 6. Specifically, the GDR picture and associated subsequent pictures each include one or more regions coded according to inter-prediction, such as a second region 610B and / or an unrefreshed / dirty region 612, and a region coded according to intra-prediction, such as a first region 610A. In some examples, the regions coded according to inter-prediction and the regions coded according to intra-prediction may each have a height greater than a width, as shown in Figure 6. The bitstream further includes recovery point pictures, such as recovery point picture 606. The recovery point picture follows both the GDR picture within the GDR period and the associated subsequent picture in the decryption order. The GDR picture may be encoded in a GDR AU. The subsequent picture and the recovery point picture may be encoded in a subsequent AU.
[0126] The bitstream may also include a header associated with the GDR picture. In various examples, the header associated with the GDR picture is the picture header and / or slice header. The header contains the POC LSB value and the recovered picture order count value. Specifically, the coded POC LSB value is coded in the header before the recovered picture order count value. In this way, the decoder can parse the header and resolve the GDR POC based on the POC LSB before parsing the recovered picture order count value. In this way, the recovered picture order count value can be resolved immediately when it is parsed. This would be more efficient than storing the recovered picture order count value in memory until the GDR POC can be determined. In the example, the POC LSB value is included in the header as the ph_pic_order_cnt_lsb value. The ph_pic_order_cnt_lsb value specifies the picture order count modulo maximum picture order count LSB for the current picture, where the GDR picture is the current picture. In the example, the recovery picture order count value is included in the header as the recovery_poc_cnt value. The recovery_poc_cnt value specifies the recovery points of the decrypted pictures in output order. In some examples, when the current picture is a GDR picture, a flag indicating no preceding picture output is set in the header. This flag instructs the decoder not to output the GDR picture and its associated subsequent pictures before the recovery point picture, in order to avoid outputting pictures containing dirty data that may not be fully decrypted.
[0127] In some examples, the bitstream further includes BP SEI messages associated with the GDR AU. The BP SEI messages provide an initial CPB rejection delay to initialize the HRD at the GDR AU's position in the decoding order. Furthermore, the decoder can determine that the bitstream is compatible and decodeable based on the presence of BP SEI messages. For example, the presence of BP SEI messages in the bitstream indicates that the HRD has performed a compatibility test on the bitstream.
[0128] In step 1103, the decoder determines the POC of the GDR picture based on the POC LSB value. For example, the header may also include a value containing the most significant bit (MSB) of the picture's POC. The decoder can therefore determine the POC of the GDR based on the MSB and LSB.
[0129] In step 1105, the decoder determines the recovery point picture POC based on the GDR picture POC and the recovery picture sequence count value. For example, the recovery picture sequence count value may include the difference between the GDR POC and the recovery point picture POC.
[0130] In step 1107, the decoder decodes the bitstream according to the GDR based on the GDR picture and the recovery point picture POC. For example, the bitstream may use the GDR POC and the recovery point picture POC to obtain the corresponding coding picture and associated subsequent picture from the bitstream. The decoder can then decode the GDR picture, associated subsequent picture, and recovery point picture according to the GDR. The decoder can also suppress the GDR picture and subsequent picture that precede the recovery point picture based on a no-output flag for the preceding picture.
[0131] In step 1109, the decoder may transfer one or more pictures following the recovery point picture for display as part of the decoded video sequence.
[0132] Figure 12 is a schematic diagram of an exemplary system 1200 that codes a video sequence using a GDR, such as GDR 600, to a bitstream such as bitstream 800, based on a signaled recovery point picture (POC). System 1200 may be implemented with encoders and decoders such as codec system 200, encoder 300, decoder 400, and / or video coding device 900, which may use HRD 500. Furthermore, system 1200 may be used when implementing methods 100, 1000, and / or 1100.
[0133] System 1200 includes a video encoder 1202. The video encoder 1202 includes an encoding module 1203 that encodes the GDR picture and the recovery point picture that follows the GDR picture in the decoding order into a bitstream. The encoding module 1203 further encodes a header associated with the GDR picture into a bitstream, the header including a POC LSB value coded before the recovery picture order count value. The video encoder 1202 further includes a determination module 1205 that determines the POC LSB value of the GDR picture and the recovery picture order count value of the recovery point picture. The video encoder 1202 further includes a storage module 1206 that stores the bitstream for communication toward the decoder. The video encoder 1202 further includes a transmission module 1207 that transmits the bitstream toward the decoder for reconstruction into a video sequence. The video encoder 1202 may be further configured to perform any step of method 1000.
[0134] System 1200 further includes a video decoder 1210. The video decoder 1210 includes a receive module 1211 that receives a bitstream containing a GDR picture, a recovery point picture that follows the GDR picture in decoding order, and a header associated with the GDR picture, the header containing a POC LSB value coded before the recovery picture sequence count value. The video decoder 1210 includes a determination module 1213 that determines the POC of the GDR picture based on the POC LSB value. The determination module 1213 further determines the POC of the recovery point picture based on the POC of the GDR picture and the recovery picture sequence count value. The video decoder 1210 further includes a decode module 1215 that decodes the bitstream according to the GDR based on the GDR picture and the recovery point picture. The video decoder 1210 further includes a transfer module 1217 that transfers one or more pictures that follow the recovery point picture for display as part of the decoded video sequence. The video decoder 1210 may be further configured to perform any step of method 1100.
[0135] The first component is directly joined to the second component if there are no intervening components other than lines, traces, or other mediating elements between the first and second components. The first component is indirectly joined to the second component if there are intervening components other than lines, traces, or other mediating elements between the first and second components. The term "joined" and its variations include both direct and indirect joining. The use of the term "about" means a range including ±10% of the following number unless otherwise stated.
[0136] It should be understood that the steps of the exemplary methods described herein do not necessarily have to be performed in the order they are described, and the order of the steps of such methods should be understood as merely an example. Similarly, in methods consistent with various embodiments of this disclosure, such methods may include additional steps, and some steps may be omitted or combined.
[0137] While several embodiments are provided in this disclosure, it will be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of this disclosure. The examples in this disclosure should be considered illustrative, not restrictive, and their intent should not be limited to the details given herein. For example, various elements or components may be combined or integrated in another system, or certain functions may be omitted or not implemented.
[0138] In addition, techniques, systems, subsystems, and methods described and illustrated individually or separately in various embodiments may be combined or integrated with other systems, components, techniques, or methods without departing from the scope of this disclosure. Other examples of modifications, substitutions, and alterations are evident to those skilled in the art and may be made without departing from the spirit and scope disclosed herein. [Explanation of Symbols]
[0139] 100 How it works 200 codec systems 201 segmented video signal 211 Integrated Coder Control Component 213 Transformation Scaling Quantization Component 215 Intrapicture Estimation Components 217 Intrapicture Prediction Component 219 Motion compensation component 221 Motion Estimation Component 223 Decoded Picture Buffer Component 225 In-loop filter component 227 Filter Control Analysis Component 229 Inverse Scaling Transform Component 231 Header Formatting Context Adaptive Binary Arithmetic Coding (CABAC) Component 300 video encoders 301 segmented video signals 313 Transformation Quantization Components 317 Intrapicture Prediction Component 321 Motion Compensation Component 323 Decoded Picture Buffer Component 325 In-Loop Filter Components 329 Inverse Transform Quantization Components 331 Entropic Coding Components 400 video decoders 417 Intrapicture Prediction Component 421 Motion Compensation Component 423 Decoded Picture Buffer Component 425 In-loop filter component 429 Inverse Transform Quantization Component 433 Entropy Decoding Component 500 Virtual Reference Decoders (HRDs) 541 Virtual Stream Scheduler (HSS) 543 Coded Picture Buffer (CPB) 545 Decryption Process Components 547 Decoded Picture Buffer (DPB) 549 Output Cropping Component 551 bitstream 553 Decryptable Unit (DU) 555 decrypted and decryptable units 556 Reference Picture 557 Pictures 559 Output cropped picture 600 Gradual Decryption Refresh (GDR) 602 GDR Picture 604 Subsequent Picture 606 Recovery Point Picture 608 pre-coded video sequences 610 Clean Area 610A First area 610B Second area 612 Dirty Area 621 GDR POC 622 Recovery POC 623 POC 700 Motion Search 702 Current Picture 704 Reference Picture 705 Refreshed region coded with interpretation 706 Refreshed regions coded with intra-prediction 708 Unrefreshed area 710 Motion vector 712 Reference Blocks 714 Currently blocked 800 bitstream 810 Sequence Parameter Set (SPS) 811 Picture Parameter Set (PPS) 815 slice header 817 BP SEI message 820 image data 821 Access Unit (AU) 823 Pictures 825 slices 831 Flag indicating no output for preceding picture 833 POC LSB value 835 Recovery POC value 836 HRD parameters 900 video coding devices 910 Transceiver Unit (Tx / Rx) 914 Coding Modules 920 Downstream Ports 930 Processor 932 memory 950 Upstream Port 960 Input and / or Output (I / O) Devices 1000 ways 1100 methods 1200 System 1202 Video Encoder 1203 Encoding Module 1205 Decision Module 1206 Storage Module 1207 Transmitter Module 1210 Video Decoder 1211 Receiver Module 1213 Decision Module 1215 Decryption Module 1217 Transfer Module
Claims
1. A method performed by a decoder, wherein the method is The steps of receiving a bitstream by the decoder's receiver, the bitstream including a Gradual Decoded Refresh (GDR) picture, a Recovery Point picture that follows the GDR picture in decoding order, and a header associated with the GDR picture, wherein the header includes the least significant bit (LSB) value of the Picture Order Count (POC) coded before the Recovery Picture Order Count value; The steps include determining the POC of the GDR picture using the decoder's processor, The processor determines the recovery point picture POC based on the POC of the GDR picture and the recovery picture sequence count value. The processor performs the steps of decoding the bitstream according to GDR based on the GDR picture and the recovery point picture POC. Methods that include...
2. The method according to claim 1, wherein the header associated with the GDR picture is a picture header.
3. The method according to claim 1 or 2, wherein the POC LSB value is included in the header as the ph_pic_order_cnt_lsb value, the ph_pic_order_cnt_lsb value specifies the picture order count modulo maximum picture order count LSB for the current picture, and the GDR picture is the current picture.
4. The method according to any one of claims 1 to 3, wherein the recovery picture order count value is included in the header as the recovery_poc_cnt value, and the recovery_poc_cnt value specifies the recovery points of the decoded pictures in output order.
5. The method according to any one of claims 1 to 3, wherein when the current picture is the GDR picture, a flag indicating no output for the preceding picture is set in the header.
6. The method according to any one of claims 1 to 5, wherein the GDR picture includes a region coded according to interpretation and a region coded according to intrapretation.
7. The method according to any one of claims 1 to 6, wherein the GDR picture is contained in a GDR access unit (AU), the bitstream further includes a buffering period (BP) extension information (SEI) message associated with the GDR AU, and the BP SEI message provides an initial coded picture buffer (CPB) removal delay for the initialization of the virtual reference decoder (HRD) at the position of the GDR AU in the decoding order.
8. A method performed with an encoder, wherein the method is The encoder's processor performs the steps of encoding a progressively decoded refresh (GDR) picture and a recovery point picture that follows the GDR picture in the decoding order into a bitstream, The processor determines the least significant bit (LSB) value of the picture sequence count (POC) of the GDR picture and the recovery picture sequence count value of the recovery point picture. The steps include: encoding a header associated with the GDR picture into the bitstream using the processor, wherein the header includes the POC LSB value coded before the recovery picture order count value; The steps include storing the bitstream for communication to the decoder in a memory coupled to the processor, and Methods that include...
9. The method according to claim 8, wherein the header associated with the GDR picture is a picture header.
10. The method according to claim 8 or 9, wherein the POC LSB value is included in the header as the ph_pic_order_cnt_lsb value, the ph_pic_order_cnt_lsb value specifies the picture order count modulo maximum picture order count LSB for the current picture, and the GDR picture is the current picture.
11. The method according to any one of claims 8 to 10, wherein the recovery picture order count value is included in the header as the recovery_poc_cnt value, and the recovery_poc_cnt value specifies the recovery points of the decoded pictures in output order.
12. The method according to any one of claims 8 to 11, further comprising the step of setting a no-output flag for the preceding picture in the header when the current picture is the GDR picture.
13. The method according to any one of claims 8 to 12, wherein the GDR picture includes a region coded according to interpretation and a region coded according to intrapretation.
14. The processor performs the steps of encoding the GDR picture in the GDR access unit (AU), The steps of the processor encoding a buffering period (BP) extension information (SEI) message associated with the GDR AU into the bitstream, wherein the BP SEI message provides an initial coded picture buffer (CPB) removal delay for the initialization of the virtual reference decoder (HRD) at the position of the GDR AU in the decoding order. The method according to any one of claims 8 to 13, further comprising:
15. The system comprises a processor, a receiver coupled to the processor, a memory coupled to the processor, and a transmitter coupled to the processor, wherein the processor, receiver, memory, and transmitter are configured to perform the method according to any one of claims 1 to 14. Video coding device.
16. A non-temporary computer-readable medium containing a computer program used by a video coding device, wherein the computer program includes computer-executable instructions stored in the non-temporary computer-readable medium, and when executed by a processor, causes the video coding device to perform the method according to any one of claims 1 to 14.
17. Receiving means for receiving a bitstream including a Gradual Decoded Refresh (GDR) picture, a recovery point picture that follows the GDR picture in decoding order, and a header associated with the GDR picture, wherein the header includes the least significant bit (LSB) value of the picture sequence count (POC) coded before the recovery picture sequence count value; The POC of the aforementioned GDR picture is determined, Based on the POC of the GDR picture and the recovery picture sequence count value, the recovery point picture POC is determined. Decision-making means and A decoding means for decoding the bitstream according to GDR based on the GDR picture and the recovery point picture POC, A transfer means for transferring one or more coded pictures following the recovery point picture for display as part of the decoded video sequence. A decoder, including a decoder.
18. The decoder according to claim 17, further configured to perform the method described in any one of claims 1 to 7.
19. The progressively decoded refresh (GDR) picture and the recovery point picture that follows the GDR picture in the decoding order are encoded into a bitstream. The header associated with the GDR picture is encoded into the bitstream, the header including the least significant bit (LSB) value of the picture order count (POC) coded before the recovery picture order count value. Encoding method, A determination means for determining the POC LSB value of the GDR picture and the recovery picture sequence count value of the recovery point picture, Storage means for storing the bitstream for communication toward the decoder Encoders, including
20. The encoder according to claim 19, wherein the encoder is further configured to perform the method described in any one of claims 8 to 14.