Shared decoder picture buffer for multiple layers
By removing only the decoded image of the first layer in the video decoder and performing the recall process across all layers after the last decoding unit, the problem of improper utilization of DPB in multi-layer video data decoding is solved, and reasonable management of DPB and effective preservation of reference images are achieved.
Patent Information
- Application Number
- CN202080088412.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-12-21
- Filing Date
- 2020-12-22
- Publication Date
- 2025-11-04
- Estimated Expiration
- 2040-12-22
AI Technical Summary
Existing video decoders struggle to effectively utilize the common decoded picture buffer (DPB) when decoding multi-layer video data. This can lead to the inability to properly create space for new pictures in certain scenarios, and may also result in the premature removal of reference pictures or an overfilled buffer.
By removing only the decoded images belonging to the first layer from the public DPB, and performing the image retrieval process across all layers after removing the last decoded unit of the current image, the proper use of the DPB and the effective preservation of reference images are ensured.
This approach enables the effective use of the common DPB in multi-layer video data decoding, avoiding issues such as buffer overfilling or premature removal of reference images, and ensuring the correct creation of decoding space for new images.
Smart Images

Figure CN114830673B_ABST
Abstract
Description
[0001] This application claims priority to U.S. Application No. 17 / 128,767, filed December 21, 2020, which claims benefit of U.S. Provisional Patent Application 62 / 953,394, filed December 24, 2019, the entire contents of each of which are incorporated herein by reference. TECHNICAL FIELD
[0002] The present disclosure relates to video encoding and video decoding. BACKGROUND
[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite radio telephones, so-called “smart phones,” video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video coding techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), ITU-T H.265 / High Efficiency Video Coding (HEVC), and extensions of such standards. The video devices can implement such video coding techniques to transmit, receive, encode, decode, and / or store digital video information more efficiently.
[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy of the video sequence. For block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) can be partitioned into video blocks, which can also be referred to as coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in the I slice of a picture are coded using spatial prediction with respect to reference samples in neighboring blocks in the same picture. Video blocks in the P or B slice of a picture can be coded with spatial prediction with respect to reference samples in neighboring blocks in the same picture or temporal prediction with respect to reference samples in other reference pictures. Pictures can be referred to as frames, and reference pictures can be referred to as reference frames. SUMMARY
[0005] This disclosure describes techniques for maintaining a decoded picture buffer for decoding multi-layer video data. As part of maintaining a DPB, a video decoder can need to periodically remove pictures from the DPB in order to make room for new pictures to be added to the DPB. Some existing video decoders maintain separate sub-DPBs when decoding multi-layer video data, where each sub-DPB contains a picture storage buffer for storing decoded pictures for one layer. In contrast, some existing video decoders maintain a common DPB for all layers when decoding multi-layer video data, which reduces complexity but potentially introduces other issues. For example, if a bumping process is invoked only for pictures belonging to the same layer as a picture being coded, then in some coding scenarios where the buffer does not include any pictures for that layer, the bumping process can fail to properly create room in the DPB for a new picture. Techniques of this disclosure, including the following operations, can advantageously enable a video decoder to utilize a common DPB for all layers while ensuring that needed reference pictures are not prematurely removed from the DPB while also ensuring that the DPB does not become overfull: performing a picture output and removal process on the DPB by removing only decoded pictures belonging to a first layer from the DPB, and performing a picture bumping process across all layers of the DPB after a last decoding unit of a current picture is removed from a coded picture buffer (CPB).
[0006] According to one example of the present disclosure, a device for decoding video data includes a memory configured to store video data, and one or more processors implemented in circuitry and configured to maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer, perform a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein to perform the picture output and removal process on the DPB, the one or more processors are further configured to remove only decoded pictures belonging to the first layer from the DPB, and perform a picture bumping process across all layers of the DPB after a last decoding unit of the current picture is removed from a coded picture buffer (CPB).
[0007] According to another example of the disclosure, a method includes maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer; performing a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein performing the picture output and removal process on the DPB includes removing only decoded pictures belonging to the first layer from the DPB; and performing a picture bumping process across all layers of the DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB).
[0008] According to another example of the disclosure, a computer-readable storage medium stores instructions that, when executed by one or more processors, cause the one or more processors to maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer; perform a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein, to perform the picture output and removal process on the DPB, the one or more processors are further configured to remove only decoded pictures belonging to the first layer from the DPB; and perform a picture bumping process across all layers of the DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB).
[0009] According to another example of the disclosure, an apparatus for decoding multi-layer video data includes means for maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer; means for performing a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein performing the picture output and removal process on the DPB includes removing only decoded pictures belonging to the first layer from the DPB; and means for performing a picture bumping process across all layers of the DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB).
[0010] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF DRAWINGS
[0011] Figure 1 is a block diagram illustrating an example video encoding and decoding system that can perform the techniques of this disclosure.
[0012] Figure 2A andFigure 2B is a conceptual diagram illustrating an example quad-tree binary tree (QTBT) structure and a corresponding coding tree unit (CTU).
[0013] Figure 3 is a block diagram illustrating an example video encoder that can perform the techniques of this disclosure.
[0014] Figure 4 is a block diagram illustrating an example video decoder that can perform the techniques of this disclosure.
[0015] Figure 5 is a flowchart illustrating a video encoding process.
[0016] Figure 6 is a flowchart illustrating a video decoding process.
[0017] Figure 7 is a flowchart illustrating a video decoding process. DETAILED DESCRIPTION
[0018] Video coding (e.g., video encoding and / or video decoding) often involves predicting a block of video data from a block of video data that has already been coded in the same picture (e.g., intra prediction) or from a block of video data that has already been coded in a different picture (e.g., inter prediction). In some cases, a video encoder also computes residual data by comparing a predicted block to an original block. Thus, the residual data represents the difference between the predicted block and the original block. To reduce the number of bits needed to signal the residual data, the video encoder transforms and quantizes the residual data and signals the transformed and quantized residual data in an encoded bitstream. The compression achieved by the transform and quantization process can be lossy, meaning that the transform and quantization process can introduce distortion into the decoded video data.
[0019] A video decoder decodes the residual data and adds it to the predicted block to produce a reconstructed video block that more closely matches the original video block than the predicted block alone. Due to the loss introduced by the transform and quantization of the residual data, the first reconstructed block can have distortion or artifacts. One common type of artifact or distortion is referred to as blocking artifacts, in which the boundaries of blocks used to code the video data are visible.
[0020] To further improve the quality of decoded video, a video decoder can perform one or more filtering operations on a reconstructed video block. Examples of these filtering operations include deblocking filter, sample adaptive offset (SAO) filter, and adaptive loop filter (ALF). Parameters for these filtering operations can be determined by the video encoder and explicitly signaled in the encoded video bitstream, or can be implicitly determined by the video decoder without needing to explicitly signal the parameters in the encoded video bitstream.
[0021] A video encoder encodes video data into network abstraction layer (NAL) units, and a video decoder decodes video data into NAL units. A NAL unit generally refers to a syntax structure that contains an indication of the type of data that follows and the bytes containing that data in the form of a raw byte sequence payload (RBSP), interspersed with network abstraction layer (NAL) units as necessary. NAL units can include both video coding layer (VCL) NAL units and non-VCL NAL units.
[0022] A picture unit (PU) generally refers to a set of NAL units that are associated with each other according to a specified categorization rule, are consecutive in decoding order, and contain exactly one coded picture. An access unit generally refers to a set of PUs that belong to different layers and contain coded pictures that are associated with the same time for output.
[0023] To support spatial and temporal scalability, video data can be coded in multiple layers. A layer generally refers to a set of VCL NAL units that all have the same layer identification value (e.g., nuh layer id value) and associated non-VCL NAL units. When decoding multi-layer video data, a video decoder can decode and display all layers or only a subset of the layers.
[0024] A video decoder can maintain (e.g., store and update) a coded picture buffer (CPB). The CPB can be, for example, a first-in first-out buffer that contains decoding units (DUs) in a specified decoding order. The video decoder can also maintain a decoded picture buffer (DPB). The DPB generally refers to a buffer or memory that holds decoded pictures for reference, output reordering, or a specified output delay. A DU can refer to one or more VCL NAL units in an access unit (AU) and associated non-VCL NAL units. In some cases, a DU can also be an AU.
[0025] As part of maintaining the DPB, the video decoder can need to periodically remove pictures from the DPB in order to make room for new pictures to be added to the DPB. When decoding multi-layer video data, some existing video decoders maintain separate sub-DPBs, where each sub-DPB contains a picture storage buffer for storing decoded pictures of one layer. In contrast, some existing video decoders maintain a common DPB for all layers when decoding multi-layer video data, which reduces complexity but potentially introduces other issues. For example, if the bumping process is invoked only for pictures belonging to the same layer as the picture being coded, then in some coding scenarios where the buffer does not include any pictures of that layer, the bumping process can fail to properly create room in the DPB for a new picture. Techniques of this disclosure, including the following operations, can advantageously enable a video decoder to utilize a common DPB for all layers while ensuring that needed reference pictures are not prematurely removed from the DPB while also ensuring that the DPB does not become overfull: performing picture output and removal processes on the DPB by removing only decoded pictures belonging to a first layer from the DPB, and performing a picture bumping process across all layers of the DPB after the last decoded unit of the current picture is removed from the CPB.
[0026] Certain techniques described in this disclosure can be described in relation to video decoding. However, it should be understood that these techniques can also be performed by a video encoder unless otherwise specified. For example, a video encoder typically performs video decoding (also referred to as reconstruction) as part of the process of determining how to encode video data. For example, as part of determining how to encode a block of video data, a video encoder can be configured to implement the same DPB update processes as a video decoder, such that the video encoder and the video decoder maintain the same DPB.
[0027] Figure 1 is a block diagram illustrating an example video encoding and decoding system 100 that can perform the techniques of this disclosure. In general, the techniques of this disclosure relate to coding (encoding and / or decoding) video data. In general, video data includes any data for processing video. Thus, video data can include raw, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata (e.g., signaling data).
[0028] As Figure 1As shown in FIG. 1, in this example, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by a destination device 116. In particular, the source device 102 provides the video data to the destination device 116 via a computer-readable medium 110. The source device 102 and the destination device 116 can comprise any of a wide variety of devices, including desktop computers, notebook computers (i.e., laptop computers), mobile devices, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, broadcast receiver devices, and the like. In some cases, the source device 102 and the destination device 116 can be equipped for wireless communication, and thus can be referred to as wireless communication devices.
[0029] In Figure 1 In the example of FIG. 1, source device 102 includes a video source 104, a storage 106, a video encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a video decoder 300, a storage 120, and a display device 118. In accordance with this disclosure, video encoder 200 of source device 102 and video decoder 300 of destination device 116 can be configured to apply techniques for shared decoded picture buffer for multiple layers. Thus, source device 102 represents an example of a video encoding device, while destination device 116 represents an example of a video decoding device. In other examples, a source device and a destination device can include other components or arrangements. For example, the source device 102 can receive video data from an external video source, such as an external camera. Likewise, the destination device 116 can interface with an external display device, rather than include an integrated display device.
[0030] As Figure 1The system 100 illustrated in FIG. 1 is merely one example. In general, any digital video encoding and / or decoding device can perform the techniques described herein for shared decoded picture buffer for multiple layers. The source device 102 and the destination device 116 are merely examples of such coding devices in which the source device 102 generates coded video data for transmission to the destination device 116. This disclosure refers to “coding” devices as devices that perform coding (encoding and / or decoding) of data. Thus, video encoder 200 and video decoder 300 represent examples of coding devices, in particular, a video encoder and a video decoder, respectively. In some examples, the source device 102 and the destination device 116 can operate in a substantially symmetrical manner, such that each of the source device 102 and the destination device 116 includes video encoding and decoding components. Hence, the system 100 can support one-way or two-way video transmission between the source device 102 and the destination device 116, e.g., for video streaming, video playback, video broadcasting, or video telephony.
[0031] In general, the video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides a sequential series of pictures (also referred to as “frames”) of the video data to the video encoder 200, which encodes data for the pictures. The video source 104 of the source device 102 can include a video capture device, such as a video camera, a video archive
[0032] Memory 106 of source device 102 and memory 120 of destination device 116 represent general purpose storage. In some examples, memories 106, 120 can store raw video data, e.g., raw video from video source 104 and raw decoded video data from video decoder 300. Additionally or alternatively, memories 106, 120 can store software instructions that are executable by, e.g., video encoder 200 and video decoder 300, respectively. Although memories 106 and 120 are shown as separate from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 can also include internal memories for similar or equivalent purposes. Furthermore, memories 106, 120 can store encoded video data that is output from video encoder 200 and input to video decoder 300, e.g. In some examples, portions of memories 106, 120 can be allocated as one or more video buffers, e.g., to store raw decoded and / or encoded video data.
[0033] Computer-readable medium 110 can represent any type of medium or device capable of transporting the encoded video data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium to enable source device 102 to transmit encoded video data directly to destination device 116 in real-time, e.g., via a radio frequency network or computer-based network. Output interface 108 can modulate a transmission signal including the encoded video data, and input interface 122 can demodulate the received transmission signal, according to a communication standard, such as a wireless communication protocol. The communication medium can comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. The communication medium can include routers, switches, base stations, or any other equipment that can be useful to facilitate communication from source device 102 to destination device 116.
[0034] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 can include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded video data.
[0035] In some examples, source device 102 can output encoded video data to a file server 114 or another intermediate storage device that can store the encoded video data generated by source device 102. Destination device 116 can access stored video data from file server 114 through streaming or download.
[0036] File server 114 can be any type of server device capable of storing encoded video data and transmitting that encoded video data to destination device 116. File server 114 can represent a web server (e.g., for a website), a server configured to provide file transfer protocol services (such as File Transfer Protocol (FTP) or File Delivery over Unidirectional Transport (FLUTE) protocol), a content delivery network (CDN) device, a hypertext transfer protocol (HTTP) server, a multimedia broadcast multicast service (MBMS) or enhanced MBMS (eMBMS) server, and / or a network attached storage (NAS) device. File server 114 can additionally or alternatively implement one or more HTTP streaming protocols, such as Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), Real Time Streaming Protocol (RTSP), HTTP Dynamic Streaming, and / or the like.
[0037] Destination device 116 can access encoded video data from file server 114 through any standard data connection, including an Internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), a cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on file server 114. Input interface 122 can be configured to operate according to any one or more of the various protocols discussed above for retrieving or receiving media data from file server 114, or other such protocols for retrieving media data.
[0038] Output interface 108 and input interface 122 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 can be configured to transmit and / or receive data (such as encoded video data) according to a cellular communication standard, such as 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, or the like. In some examples where output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 can be configured to transmit and / or receive data (such as encoded video data) according to other wireless standards, such as an IEEE 802.11 specification, an IEEE 802.15 specification (e.g., ZigBee™), a Bluetooth™ standard, or the like. In some examples, source device 102 and / or destination device 116 can include respective system on a chip (SoC) devices. For example, source device 102 can include a SoC device to perform the functionality conferred on video encoder 200 and / or output interface 108, and destination device 116 can include a SoC device to perform the functionality conferred on video decoder 300 and / or input interface 122.
[0039] The techniques of this disclosure can be applied to video coding in support of any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, Internet streaming video transmissions, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications.
[0040] Input interface 122 of destination device 116 receives an encoded video bitstream from computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, or the like). The encoded video bitstream can include signaling information defined by video encoder 200, such as syntax elements having values that describe properties and / or processing of video blocks or other coded units (e.g., slices, pictures, groups of pictures, sequences, or the like) that are defined at least in part by video decoder 300. Display device 118 displays decoded pictures of the decoded video data to a user. Display device 118 can represent any of a variety of displays, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display.
[0041] Although Figure 1Although not shown, in some examples, video encoder 200 and video decoder 300 can each be integrated with an audio encoder and / or audio decoder, and can include appropriate MUX-DEMUX units or other hardware and / or software to handle multiplexed streams including both audio and video in a common data stream. If applicable, MUX-DEMUX units can comply with the ITU H.223 multiplexer protocol, or other protocols such as the user datagram protocol (UDP).
[0042] Video encoder 200 and video decoder 300 each can be implemented as any of a variety of suitable encoder and / or decoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, a device can store instructions for the software in a suitable, non- transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of video encoder 200 and video decoder 300 can be included in one or more encoders or decoders, either of which can be integrated as part of a combined encoder / decoder (CODEC) in a respective device. A device including video encoder 200 and / or video decoder 300 can comprise an integrated circuit, a microprocessor, and / or a wireless communication device, such as a cellular telephone.
[0043] Video encoder 200 and video decoder 300 can operate according to a video coding standard, such as ITU-T H.265, also referred to as High Efficiency Video Coding (HEVC) or extensions thereto, such as the multi-view and / or scalable video coding extensions. Alternatively, video encoder 200 and video decoder 300 can operate according to other proprietary or industry standards, such as the Joint Exploration Test Model (JEM) or the ITU-T H.266 standard, also referred to as Versatile Video Coding (VVC). A recent draft of the VVC standard is described in Bross, et al., “Versatile Video Coding (Draft 7),” Joint Video Team (JVT) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 16th Meeting: Geneva, CH, 1-11 October 2019, JVET-P2001-v14 (hereinafter “VVC Draft 7”). The techniques of this disclosure, however, are not limited to any particular coding standard.
[0044] In general, video encoder 200 and video decoder 300 can perform block-based coding of pictures. The term “block” generally refers to a structure containing data to be processed (e.g., encoded, decoded, or otherwise used) during the encoding and / or decoding process. For example, a block can include a two-dimensional matrix of samples of luma and / or chroma data. In general, video encoder 200 and video decoder 300 can code video data represented in a YUV (e.g., Y, Cb, Cr) format. That is, rather than coding red, green, and blue (RGB) data for samples of a picture, video encoder 200 and video decoder 300 can code luma and chroma components, where the chroma components can include both red hue and blue hue chroma components. In some examples, video encoder 200 converts received RGB-formatted data to a YUV representation prior to encoding, and video decoder 300 converts the YUV representation to the RGB format. Alternatively, pre- and post-processing units (not shown) can perform these conversions.
[0045] In general, this disclosure can refer to coding (e.g., encoding and decoding) of pictures as including the process of encoding or decoding data of the pictures. Similarly, this disclosure can refer to coding of blocks of pictures as including the process of encoding or decoding (e.g., prediction and / or residual coding) data for the blocks. An encoded video bitstream typically includes a series of values for syntax elements representing coding decisions (e.g., coding modes) and partitioning of pictures into blocks. Accordingly, references to coding of pictures or blocks should generally be understood to refer to coding of values for syntax elements used to form the pictures or blocks.
[0046] HEVC defines various blocks, including coding units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video coder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video coder partitions a CTU and CUs into four equal, non overlapping squares, and each node of the quadtree has either zero or four child nodes. Nodes with zero child nodes can be referred to as “leaf nodes,” and CUs of such leaf nodes can include one or more PUs and / or one or more TUs. Video coder can further partition PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents partitioning of TUs. In HEVC, PUs represent inter-predicted data, while TUs represent residual data. Intra-predicted CUs include intra-prediction information, such as an intra-mode indication.
[0047] As another example, video encoder 200 and video decoder 300 can be configured to operate according to VVC. According to VVC, a video coder (such as video encoder 200) partitions a picture into a plurality of coding tree units (CTUs). Video encoder 200 can partition a CTU according to a tree structure such as a quad-tree binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure removes the concepts of multiple partition types, such as the separation between CUs, PUs, and TUs in HEVC. The QTBT structure includes two levels: a first level partitioned according to quad-tree partitioning, and a second level partitioned according to binary tree partitioning. The root node of the QTBT structure corresponds to a CTU. Leaf nodes of the binary trees correspond to coding units (CUs).
[0048] In the MTT partitioning structure, blocks can be partitioned using quad-tree (QT) partitioning, binary tree (BT) partitioning, and one or more types of ternary tree (TT) (also referred to as tri-tree) partitioning. A ternary tree or tri-tree partitioning is a partitioning in which a block is split into three sub-blocks. In some examples, a ternary tree or tri-tree partitioning divides a block into three sub-blocks without splitting the original block through a center split. The partitioning types (e.g., QT, BT, and TT) in the MTT can be symmetric or asymmetric.
[0049] In some examples, video encoder 200 and video decoder 300 can use a single QTBT or MTT structure to represent each of luma and chroma components, while in other examples, video encoder 200 and video decoder 300 can use two or more QTBT or MTT structures, such as one QTBT / MTT structure for luma components and another QTBT / MTT structure for two chroma components (or two QTBT / MTT structures for respective chroma components).
[0050] Video encoder 200 and video decoder 300 can be configured to use quad-tree partitioning according to HEVC, QTBT partitioning, MTT partitioning, or other partition structures. For purposes of explanation, the description of the techniques of this disclosure is presented with respect to QTBT partitioning. However, it should be understood that the techniques of this disclosure can also be applied to video coders configured to use quad-tree partitioning or that also use other types of partitioning.
[0051] In some examples, a CTU includes a coding tree block (CTB) of luma samples, two corresponding CTBs of chroma samples of a picture having three sample arrays, or a CTB of samples of a monochrome picture or a picture coded using three separate color planes and syntax structures for coding samples. A CTB can be an NxN block of samples (for some value of N) such that partitioning a component into CTBs is a type of partitioning. A component is an array or a single sample from one of three arrays (one luma and two chroma) that make up a picture in a color format of 4:2:0, 4:2:2, or 4:4:4, or is an array or a single sample of an array that makes up a picture in a monochrome format. In some examples, a coding block is an MxN block of samples (for some values of M and N) such that partitioning a CTB into coding blocks is a type of partitioning.
[0052] Blocks (e.g., CTUs or CUs) can be grouped in various ways in a picture. As one example, a brick can refer to a rectangular region of CTU rows within a particular tile in a picture. A tile can be a rectangular region of CTUs within a particular tile column and a particular tile row in a picture. A tile column refers to a rectangular region of CTUs having a height equal to a height of the picture and a width specified by a syntax element (e.g., such as in a picture parameter set). A tile row refers to a rectangular region of CTUs having a height specified by a syntax element (e.g., such as in a picture parameter set) and a width equal to a width of the picture.
[0053] In some examples, a tile can be partitioned into multiple bricks, each of which can include one or more CTU rows within the tile. A tile that is not partitioned into multiple bricks can also be referred to as a brick. However, a brick that is a true subset of a tile can not be referred to as a tile.
[0054] Bricks in a picture can also be arranged in slices. A slice can be an integer number of bricks of a picture that can be uniquely contained in a single network abstraction layer (NAL) unit. In some examples, a slice includes multiple complete tiles or only a contiguous sequence of complete bricks of one tile.
[0055] The present disclosure can use“NxN” and“N by N” interchangeably to refer to the sample dimensions of a block, such as a CU or other video block, in terms of vertical and horizontal dimensions, e.g., 16x16 samples or 16 by 16 samples. In general, a 16x16 CU will have 16 samples in the vertical direction (y = 16) and 16 samples in the horizontal direction (x = 16). Likewise, an NxN CU will generally have N samples in the vertical direction and N samples in the horizontal direction, where N represents a non negative integer value. The samples in a CU can be arranged in rows and columns. Moreover, a CU need not necessarily have the same number of samples in the horizontal direction as in the vertical direction. For example, a CU can comprise NxM samples, where M need not necessarily equal N.
[0056] Video encoder 200 encodes video data representing prediction and / or residual information for a CU, among other information. Prediction information indicates how to predict the CU in order to form a prediction block for the CU. Residual information generally represents a sample-by-sample difference between samples of the CU prior to encoding and the prediction block.
[0057] To predict a CU, video encoder 200 can generally form a prediction block for the CU through inter prediction or intra prediction. Inter prediction generally refers to predicting the CU from data of a previously coded picture, whereas intra prediction generally refers to predicting the CU from previously coded data of the same picture. To perform inter prediction, video encoder 200 can use one or more motion vectors to generate the prediction block. Video encoder 200 can generally perform a motion search to identify a reference block that closely matches the CU, e.g., in terms of differences between the CU and the reference block. Video encoder 200 can calculate a difference metric using a sum of absolute difference (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared differences (MSD), or other such difference calculations to determine whether a reference block closely matches a current CU. In some examples, video encoder 200 can use uni -prediction or bi-prediction to predict a current CU.
[0058] Some examples of VVC also provide an affine motion compensation mode, which can be considered a type of inter prediction mode. In the affine motion compensation mode, video encoder 200 can determine two or more motion vectors that represent non-translational motion, such as zooming or shrinking, rotation, perspective motion, or other irregular types of motion.
[0059] To perform intra prediction, video encoder 200 can select an intra prediction mode to generate the prediction block. Some examples of VVC provide sixty-seven intra prediction modes, including various directional modes, as well as a planar mode and a DC mode. Generally, video encoder 200 selects an intra prediction mode that describes neighboring samples of the current block (e.g., a block of a CU) from which to predict samples of the current block according to. Assuming that video encoder 200 is coding CTUs and CUs in a raster scan order (left to right, top to bottom), such samples can generally be above, above and to the left, or to the left of the current block in the same picture.
[0060] Video encoder 200 encodes data representing the prediction mode used for the current block. For example, for inter prediction modes, video encoder 200 can encode data representing which of the various available inter prediction modes is used, as well as motion information for the corresponding mode. For single or bi-directional inter prediction, for example, video encoder 200 can encode motion vectors using advanced motion vector prediction (AMVP) or merge mode. Video encoder 200 can use similar modes to encode motion vectors for affine motion compensation modes.
[0061] Following prediction, such as intra or inter prediction of a block, video encoder 200 can calculate residual data for the block. The residual data, such as a residual block, represents sample-by-sample differences between the block and a prediction block formed using the corresponding prediction mode. Video encoder 200 can apply one or more transforms to the residual block to produce transformed data in the transform domain rather than in the sample domain. For example, video encoder 200 can apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform. In addition, video encoder 200 can apply a secondary transform following the first transform, such as a mode-dependent non-separable secondary transform (MDNSST), a signal-dependent transform, a Karhunen-Loeve transform (KLT), or the like. Video encoder 200 produces transform coefficients following application of the transform(s).
[0062] As described above, after any transforms to produce transform coefficients, video encoder 200 can perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, providing further compression. By performing the quantization process, video encoder 200 can reduce the bit depth of some or all of the transform coefficients. For example, video encoder 200 can round an n-bit value during quantization to an m-bit value, where n is greater than m. In some examples, to perform quantization, video encoder 200 can perform a bitwise right-shift of the value to be quantized.
[0063] After quantization, video encoder 200 can scan the transform coefficients, producing a one-dimensional vector from the two-dimensional matrix including the quantized transform coefficients. The scan can be designed so that higher energy (and hence, lower frequency) transform coefficients are placed at the front of the vector, and lower energy (and hence, higher frequency) transform coefficients are placed at the back of the vector. In some examples, video encoder 200 can utilize a predefined scan order to scan the quantized transform coefficients to produce a serialized vector, and then entropy encode the quantized transform coefficients of the vector. In other examples, video encoder 200 can perform an adaptive scan. After scanning the quantized transform coefficients to form a one-dimensional vector, video encoder 200 can entropy encode the one-dimensional vector, e.g., according to context adaptive binary arithmetic coding (CABAC). Video encoder 200 can also entropy encode values for syntax elements describing metadata associated with the encoded video data for use by video decoder 300 when decoding video data.
[0064] To perform CABAC, video encoder 200 can assign a context within a context model to a symbol to be transmitted. The context can relate to, for example, whether neighboring values of the symbol are zero-valued or not. The probability determination can be based on the assigned context of the symbol.
[0065] Video encoder 200 can also generate syntax data, such as block-based syntax data, picture-based syntax data, and sequence-based syntax data, or other syntax data such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS) for video decoder 300, e.g., in a picture header, a block header, a slice header. Likewise, video decoder 300 can decode such syntax data to determine how to decode corresponding video data.
[0066] In this way, video encoder 200 can generate a bitstream including encoded video data, e.g., syntax elements describing partitioning of a picture into blocks (e.g., CUs) and prediction and / or residual information for the blocks. Ultimately, video decoder 300 can receive the bitstream and decode the encoded video data.
[0067] In general, video decoder 300 performs a reciprocal process to that performed by video encoder 200 to decode the encoded video data of the bitstream. For example, video decoder 300 can decode values for syntax elements of the bitstream using CABAC in substantially a reciprocal manner, but opposite, to the CABAC encoding process of video encoder 200. The syntax elements can define partitioning information for partitioning a picture into CTUs, and partitioning each CTU according to a corresponding partition structure, such as a QTBT structure, to define CUs of the CTU. The syntax elements can further define prediction and residual information for blocks (e.g., CUs) of the video data.
[0068] The residual information can be represented by, for example, quantized transform coefficients. Video decoder 300 can inverse quantize and inverse transform the quantized transform coefficients of a block to reproduce a residual block for the block. Video decoder 300 forms a prediction block for the block using the signaled prediction mode (intra prediction or inter prediction) and related prediction information (e.g., motion information for inter prediction). Video decoder 300 can then combine the prediction block and the residual block (on a sample-by-sample basis) to reproduce the original block. Video decoder 300 can perform additional processing such as performing a deblocking process to reduce visual artifacts along boundaries of the blocks.
[0069] Generally, this disclosure can relate to “signaling” certain information, such as syntax elements. The term “signaling” can generally refer to the communication of values for syntax elements and / or other data used to decode encoded video data. That is, video encoder 200 can signal values for syntax elements in a bitstream. Generally, signaling refers to generating the values in the bitstream. As described above, source device 102 can transmit the bitstream to destination device 116 in substantially real-time or not in real-time, such as can occur when storing the bitstream to storage device 112 for later retrieval by destination device 116.
[0070] Figure 2A and 2Bis a conceptual diagram illustrating an example quadtree-binary tree (QTBT) structure 130 and a corresponding coding tree unit (CTU) 132. The solid lines represent quadtree splits, while the dashed lines indicate binary tree splits. In each split (i.e., non-leaf) node of the binary tree, a flag is signaled to indicate which split type (i.e., horizontal or vertical) is used, where 0 indicates a horizontal split and 1 indicates a vertical split in this example. For quadtree splits, since a quadtree node splits a block horizontally and vertically into 4 sub-blocks with equal size, there is no need to indicate the split type. Thus, video encoder 200 can encode, and video decoder 300 can decode, syntax elements (such as split information) for the region tree level (i.e., the solid lines) of the QTBT structure 130, as well as syntax elements (such as split information) for the prediction tree level (i.e., the dashed lines) of the QTBT structure 130. Video encoder 200 can encode, and video decoder 300 can decode, video data (such as prediction and transform data) for CUs represented by terminal leaf nodes of the QTBT structure 130.
[0071] In general, Figure 2B The CTU 132 of FIG. 13A can be associated with parameters defining sizes of blocks corresponding to nodes at the first and second levels of the QTBT structure 130. These parameters can include a CTU size (representing the size of the CTU 132 in samples), a minimum quadtree size (MinQTSize, representing the minimum allowed quadtree leaf node size), a maximum binary tree size (MaxBTSize, representing the maximum allowed binary tree root node size), a maximum binary tree depth (MaxBTDepth, representing the maximum allowed binary tree depth), and a minimum binary tree size (MinBTSize, representing the minimum allowed binary tree leaf node size).
[0072] A root node of the QTBT structure corresponding to a CTU can have four child nodes at a first level of the QTBT structure, each of which can be partitioned according to quadtree partitioning. That is, a node of the first level is either a leaf node (having no child nodes) or has four child nodes. The example of the QTBT structure 130 represents such nodes as including parent and child nodes with solid branches. If a node of the first level is not larger than a maximum allowed binary tree root node size (MaxBTSize), then the node can be further partitioned by a corresponding binary tree. Binary tree splitting for a node can be iterated until nodes resulting from the splitting reach a minimum allowed binary tree leaf node size (MinBTSize) or a maximum allowed binary tree depth (MaxBTDepth). The example of the QTBT structure 130 represents such nodes as having dashed branches. Binary tree leaf nodes are referred to as coding units (CUs), which are used for prediction (e.g., intra- or inter-prediction) and transform without any further partitioning. As discussed above, a CU can also be referred to as a “video block” or “block.”
[0073] In one example of a QTBT partitioning structure, the CTU size is set to 128x128 (luma samples and two corresponding 64x64 chroma samples), the MinQTSize is set to 16x16, the MaxBTSize is set to 64x64, the MinBTSize (for both width and height) is set to 4, and the MaxBTDepth is set to 4. The quadtree partitioning is first applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., CTU size). If a quadtree leaf node is 128x128, then the leaf quadtree node will not be further split by a binary tree since the size exceeds the MaxBTSize (i.e., 64x64 in this example). Otherwise, the quadtree leaf node will be further partitioned by a binary tree. Thus, the quadtree leaf node is also a root node for the binary tree and has a binary tree depth of 0. When the binary tree depth reaches the MaxBTDepth (4 in this example), no further splitting is allowed. A binary tree node having a width equal to the MinBTSize (4 in this example) means that no further vertical splitting (i.e., division of the width) is allowed for the binary tree node. Similarly, a binary tree node having a height equal to the MinBTSize means that no further horizontal splitting (i.e., division of the height) is allowed for the binary tree node. As noted above, leaf nodes of the binary tree are referred to as CUs and are further processed according to prediction and transform without further partitioning.
[0074] VVC Draft 7 supports multi-layer coding, where the DPB is common or shared across different layers. DPB operations are expressed in terms of sub-DPBs, where a sub-DPB is defined in Section C.3.1 of VVC Draft 7 as follows.
[0075] A DPB conceptually consists of sub-DPBs, and each sub-DPB contains a picture storage buffer for storing decoded pictures of one layer. Each of the picture storage buffers contains decoded pictures that are marked as “used for reference” or saved for future output.
[0076] There are picture output processes invoked independently for each layer. Section C.5.2.1 of VVC Draft 7 describes the process as follows:
[0077] The process for outputting and removing pictures from the DPB before decoding the current picture as specified in clause C.5.2.2 is invoked, followed by the process for current decoded picture marking and storage as specified in clause C.3.4, and finally the process for additional dropping as specified in clause C.5.2.3. The “dropping” process is specified in clause C.5.2.4 and is invoked as specified in clauses C.5.2.2 and C.5.2.3.
[0078] These processes are applied independently for each layer, starting from the lowest layer in the OLS, in increasing order of the nuh layer id values of the layers in the OLS. When these processes are applied for a particular layer, only the sub-DPB for the particular layer is affected.
[0079] DPB parameters are signaled in the dpb_parameters() syntax structure, which is reproduced below.
[0080]
[0081] max_dec_pic_buffering_minus1 [ i ] plus 1 specifies the maximum required size of the DPB (in picture storage buffer units) for each CLVS of the CVS when Htid is equal to i. The value of max_dec_pic_buffering_minus1 [ i ] shall be in the range of 0 to MaxDpbSize - 1, inclusive, where MaxDpbSize is specified in clause A.4.2. When i is greater than 0, max_dec_pic_buffering_minus1 [ i ] shall be greater than or equal to max_dec_pic_buffering_minus1 [ i - 1 ]. When max_dec_pic_buffering_minus1 [ i ] is not present for i in the range of 0 to maxSubLayersMinus1 - 1, inclusive, due to subLayerlnfoFlag being equal to 0, it is inferred to be equal to max_dec_pic_buffering_minus1 [ maxSubLayersMinus1 ].
[0082] max_num_reorder_pics [ i ] specifies the maximum allowed number of pictures in a CLVS that can precede a picture in the CLVS in decoding order and follow the picture in output order for each CLVS of the CVS when Htid is equal to i. The value of max_num_reorder_pics [ i ] shall be in the range of 0 to max_dec_pic_buffering_minus1 [ i ], inclusive. When i is greater than 0, max_num_reorder_pics [ i ] shall be greater than or equal to max_num_reorder_pics [ i - 1 ]. When max_num_reorder_pics [ i ] is not present for i in the range of 0 to maxSubLayersMinus1 - 1, inclusive, due to subLayerlnfoFlag being equal to 0, it is inferred to be equal to max_num_reorder_pics [ maxSubLayersMinus1 ].
[0083] The syntax element "max_latency_increase_plusl[i]" is defined in VVC Draft 7 as follows: max_latency_increase_plusl[i] not equal to 0 is used to calculate the value of MaxLatencyPictures[i], where the value of MaxLatencyPictures[i] specifies: for each CLVS of the CVS, the maximum number of pictures in the CLVS that can precede, in output order, and follow, in decoding order, a picture in the CLVS when Htid is equal to i.
[0084] When max_latency_increase_plusl[i] is not equal to 0, the value of MaxLatencyPictures[i] is specified as follows:
[0085] MaxLatencyPictures[i] = max_num_reorder_pics[i] + max_latency_increase_plusl[i] - 1
[0086] (7-73)
[0087] When max_latency_increase_plusl[i] is equal to 0, it means there is no corresponding limit.
[0088] The value of max_latency_increase_plusl[i] shall be in the range of 0 to 2 32 - 2, inclusive. When max_latency_increase_plusl[i] does not exist for i in the range of 0 to maxSubLayersMinusl - 1, inclusive, due to subLayerlnfoFlag being equal to 0,
[0089] max_latency_increase_plusl[maxSubLayersMinusl] is inferred.
[0090] The DPB implementation of VVC Draft 7 can have several issues. As one example, in VVC Draft 7, DPB operations are expressed using sub-DPBs and sub-DPB fullness. However, VVC Draft 7 does not define sub-DPB fullness and does not specify how sub-DPB fullness relates to DPB fullness, which is specified in the dpb_parameters() picture structure.
[0091] Furthermore, there is no provision for operations on sub-DPBs, such as how to check sub-DPB fullness. Comparing a particular sub-DPB to the maximum DPB size (MaxDpbSize) can not be sufficient, as there can be multiple sub-DPBs and these sub-DPBs can exceed the provisioned DPB resources.
[0092] In Section C.5.2.1 of VVC Draft 7, output and removal of pictures from the DPB is invoked for each layer, where only the sub-DPB for the particular layer is affected. However, DPB size is not defined for sub-DPBs, so it is unclear how, for example, the condition "number of pictures in DPB is greater than or equal to max_dec_pic_buffering_minusl[Htid] + 1" should be checked for a sub-DPB.
[0093] The present disclosure describes techniques that can solve the above problems. The solutions provided in the present disclosure can be used individually or in any combination.
[0094] Some of the description provided herein is described in relation to examples using DPB size, which is provisioned by the max_dec_pic_buffering_minusl syntax element. However, the techniques of the present disclosure can also be used in conjunction with other parameters signaled in the dpb_parameters() syntax structure, such as max_num_reorder_pics and max_latency_increase_plusl. All of these parameters are signaled for the entire DPB, not for sub-DPBs, so the sub-DPB condition checking currently utilized in VVC Draft 7 can be performed for the entire DPB using the signaled dpb_parameters() syntax element.
[0095] The disclosed techniques described for DPB can be applicable in other operations where sub-DPBs are used. For example, for coded picture buffer (CPB) or hypothetical reference decoder (HRD) processing.
[0096] As part of utilizing a shared decoder picture buffer for multiple layers, video encoder 200 and video decoder 300 can be configured to perform the following techniques.
[0097] When sub-DPBs are used, the entire DPB fullness is not initialized in VVC Draft 7. In some examples of the disclosure, video encoder 200 and video decoder 300 can be configured to initialize the DPB fullness to 0 when parsing the first picture of a video sequence. In one example, video encoder 200 and video decoder 300 can be configured to initialize the DPB fullness to 0 when parsing the first slice of CLVSS picture 0 with the lowest nuh layer id.
[0098] The DPB picture marking process is applied to the current layer picture. However, the status of other nuh layer id pictures in the DPB is not specified in VVC Draft 7. In some examples of the disclosure, picture status or condition refers to picture marking, such as “used for short-term reference”, “used for long-term reference”, “used for inter-layer prediction”, etc., and can alternatively or additionally include picture output status, such as picture “used for output”, picture “unused for output”, etc.
[0099] • For some examples, it can be desirable to keep the status of other layer pictures unchanged, i.e., the status remains in the DPB after the previous access unit is decoded. In other words, the status of the previous pictures of other nuh layer id is preserved. In this case, if the other layer picture is a reference picture, it can not be removed by the “out of” process.
[0100] • In some examples, all pictures can be marked as used for reference (e.g., used for short-term reference, used for long-term reference) when the first picture of the current access unit is decoded.
[0101] • In some examples, in the “out of” process (C.5.2.4), a picture is removed (purged) only if it has a layer id equal to the layer id of the current picture. In this case, pictures of other layers can be output from the DPB but not removed, even when those other layers are not referenced, removal of such pictures would occur when a picture of that layer is decoded.
[0102] In one example, the DPB fullness can be defined as the sum of the sub-DPB fullness, since MaxDpbSize is defined for each layer in the output layer set (OLS), not for a sub-DPB. For example, MaxDpbSize can be specified by profile / tier / level as the maximum number of picture storage buffers. Furthermore, if a sub-DPB size is defined or signaled, the sum of the sub-DPB sizes shall not exceed MaxDpbSize. In one example, such a constraint can be expressed as follows:
[0103] The requirement of bitstream conformance is that the sum of max_dec_pic_buffering_minusl [ i ] for all layers included in the AU is in the range of 0 to MaxDpbSize - 1, inclusive.
[0104] In some examples, the constraint can be expressed as follows:
[0105] The requirement of bitstream conformance is that the sum of max_dec_pic_buffering_minusl [ i ] for all layers included in the OLS is in the range of 0 to MaxDpbSize - 1, inclusive.
[0106] In the output and removal of pictures process, instead of performing all operations independently for each layer, video encoder 200 and video decoder 300 can be configured to perform some operations per layer and some operations across layers for the entire DPB, even though the process is invoked per layer. For example, video encoder 200 and video decoder 300 can be configured to maintain a DPB for storing reference pictures for a plurality of layers including at least a first layer and a second layer. Prior to decoding a current picture of an access unit of the first layer, video encoder 200 and video decoder 300 can be configured to perform a picture output and removal process on the DPB, such as the process described below with respect to section C.5.2.2. After the last decoded unit of the current picture is removed from the CPB, video encoder 200 and video decoder 300 can be configured to perform a picture eviction process across all layers of the DPB, as described below with respect to sections C.5.2.3 and C.5.2.4.
[0107] In one example, the picture output and removal and additional eviction processes are invoked per layer, where for coded layer video sequence start (CLVSS) pictures (intra random access point (IRAP) pictures), the sub-DPB is emptied, while the "eviction" process C.5.2.4 operates on the entire DPB across layers, because this can be the case when the AU is not complete (not all layer pictures are present), but it can be necessary to output pictures of other layers before the pictures of the layers present in the current AU.
[0108] When the sub-DPB is emptied per layer (i.e., emptied of pictures with a particular layer ID), the picture "eviction" process is invoked for the entire DPB including pictures of all layers.
[0109] In a similar manner, the processes for DPB operations (e.g., section C.3) are invoked for a layer or per layer, but when pictures are output or emptied, such processes are invoked for all pictures in the DPB (e.g., across layers).
[0110] In one example, the techniques can be implemented by removing the condition "only the sub-DPB for the particular layer is affected when these processes are applied for the particular layer" from the relevant section of VVC Draft 7.
[0111] In some examples, picture removal can be applied only within each layer, while picture output can be across different layers.
[0112] As part of performing the techniques described above, video encoder 200 and / or video decoder 300 can be configured to maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, where the DPB includes a sub-DPB for storing reference pictures for one of the plurality of layers, decode a picture of video data, and store a copy of the decoded picture in the DPB as a reference picture.
[0113] Video encoder 200 and / or video decoder 300 can also be configured to determine a fullness of the sub-DPB and / or determine a fullness of the DPB. Video encoder 200 and / or video decoder 300 can also be configured to initialize the fullness of the sub-DPB to zero in response to parsing a first picture of a video sequence, and / or initialize the fullness of the sub-DPB to zero in response to parsing a first slice of a CLVSS picture 0 having a lowest nuh layer id. Video encoder 200 and / or video decoder 300 can also be configured to mark pictures stored in the sub-DPB with a status.
[0114] In one example using VVC Draft 7, the techniques of the disclosure can be implemented with the following modifications to the description of picture output and removal. The tag " <add>indicates the start of an addition proposed by this disclosure, and the tag< / add> " indicates the end of these additions. The tag " <del>indicates the start of a deletion (i.e., text removal) proposed by this disclosure, and the tag< / del> " indicates the end of these deletions.
[0115] In the following description, an AU denotes a set of PUs belonging to different layers and containing coded pictures that are associated with the same time for output from the DPB. If DecodingUnitHrdFlag is equal to 0, a decoding unit (DU) refers to an AU, otherwise to a subset of an AU, consisting of one or more VCL NAL units and associated non-VCL NAL units in the AU.
[0116] 8.3.3 Decoding process for reference picture marking
[0117] After decoding the slice header and the decoding process for reference picture list construction for the slice, as specified in clause 8.3.2, but before decoding the slice data, this process is invoked once per picture. This process can result in one or more reference pictures in the DPB being marked as "unused for reference" or "used for long-term reference".
[0118] Decoded pictures in the DPB can be marked as "unused for reference", "used for short-term reference", or "used for long-term reference", but only one of the three at any given moment during the operation of the decoding process. Assigning one of these marks to a picture implicitly removes another of these marks (if applicable). When a picture is said to be marked as "used for reference", this is a collective term for the picture being marked as "used for short-term reference" or "used for long-term reference" (but not both).
[0119] STRPs and ILRPs are identified by their nuh layer id and PicOrderCntVal values. LTRPs are identified by their nuh layer id value and Log2( MaxLtPicOrderCntLsb ) LSBs of their PicOrderCntVal value.
[0120] If the current picture is a CLVSS picture, all reference pictures (if any) currently in the DPB that have the same nuh layer id as the current picture are marked as "unused for reference".
[0121] Otherwise, the following applies:
[0122] - For each LTRP entry in RefPicList[0] or RefPicList[1], the picture is marked as "used for long-term reference" when the picture is an STRP with the same nuh layer id as the current picture.
[0123] - Each reference picture in the DPB that has the same nuh layer id as the current picture and that is not referred to by any entry in RefPicList[0] or RefPicList[1] is marked as "unused for reference".
[0124] - For each ILRP entry in RefPicList[0] or RefPicList[1], the picture is marked as "used for long-term reference".
[0125] <add>Pictures in the DPB with a different nuh layer id than the current picture will retain their DPB state from the previous picture marking.< / add>
[0126] In some examples, it can be specified that the reference picture marking of the current picture does not affect the reference picture marking of pictures with a nuh layer id not equal to the nuh layer id of the current picture.
[0127] C.5.2 Operation of the output order DPB
[0128] C.5.2.1 Overview
[0129] The specifications in this clause apply independently to each DPB parameter set as selected as specified in clause C.1.
[0130] A DPB is conceptually composed of sub-DPBs, and each sub-DPB contains a picture storage buffer for storing decoded pictures of one layer. Each picture storage buffer contains decoded pictures that are marked as "used for reference" or saved for future output.
[0131] The process for outputting and removing pictures from the DPB prior to decoding the current picture as specified in clause C.5.2.2 is invoked, followed by the process for current decoded picture marking and storage as specified in clause C.3.4, and finally the process for additional ejection as specified in clause C.5.2.3. The "ejection" process is specified in clause C.5.2.4 and is invoked as specified in clause C.5.2.2 and clause C.5.2.3.
[0132] <del>These processes< / del> <add>Clauses C.5.2.2 "Output and removal of pictures from the DPB" and C.5.2.3 "Extra< / add> From the lowest layer in the OLS, the process is applied independently to each layer in ascending order of the nuh layer id value of layers in the OLS. <del>When these processes are applied for a particular layer, only the sub- DPB for the particular layer is affected.< / del> <add>Clause C.5.2.4 is applied to all pictures of any layer in the DPB.< / add>
[0133] NOTE: In the operation of the output order DPB, as in the operation of the output timing DPB, decoded pictures with PicOutputFlag equal to 1 in the same access unit are also output consecutively in ascending order of the nuh layer id value of decoded pictures.
[0134] Let picture n and the current picture be the coded or decoded picture of nuh layer id for a particular value of the access unit n, where n is a non-negative integer.
[0135] C.5.2.2 Outputting and removing pictures from the DPB
[0136] When the first DU containing the current picture is removed from the CPB, the outputting and removing of pictures from the DPB immediately occurs prior to decoding the current picture (but after parsing the slice header of the first slice of the current picture) and proceeds as follows:
[0137] - the decoding processes for reference picture list construction as specified in clause 8.3.2 and for reference picture marking as specified in clause 8.3.3 are invoked.
[0138] - if the current picture is a CLVSS picture that is not picture 0, the following steps in order are applied:
[0139] 1. The variable NoOutputOfPriorPicsFlag is derived for the decoder under test as follows:
[0140] - If the values of pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_minus8, or max_dec_pic_buffering_minus1 [Htid] derived for any picture of the current AU are different from the values of pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_minus8, or max_dec_pic_buffering_minus1 [Htid] respectively for the preceding pictures in the same CLVS, the decoder under test can (but shall not) set NoOutputOfPriorPicsFlag to 1 regardless of the value of no_output_of_prior_pics_flag.
[0141] NOTE: Although it is preferred in these conditions to set NoOutputOfPriorPicsFlag equal to no_output_of_prior_pics_flag, it can be allowed in this case for the decoder under test to set NoOutputOfPriorPicsFlag to 1.
[0142] - Otherwise, NoOutputOfPriorPicsFlag is set equal to no_output_of_prior_pics_flag.
[0143] 2. The value of NoOutputOfPriorPicsFlag derived for the decoder under test is applied for the HRD as follows:
[0144] - If NoOutputOfPriorPicsFlag is equal to 1, all picture storage buffers in the <del>DPB< / del> <add>sub- DPB< / add> are emptied without outputting the pictures they contain, and the DPB fullness <del>is set equal to 0< / del> <add>is decremented by one for each picture storage buffer that is emptied. [In alternative wording using sub-DPB fullness, if NoOutputOfPriorPicsFlag is equal to 1, all picture storage buffers in <del>DPB< / del> <add>sub- DPB< / add> are emptied without outputting the pictures they contain, and <del>DPB< / del> <add>sub- DPB< / add> fullness is set equal to 0.
[0145] – Otherwise (NoOutputOfPriorPicsFlag is equal to 0), all picture storage buffers containing pictures that are marked as "not needed for output" and "unused for reference" are emptied (without output) by repeatedly invoking the "drain out" process specified in clause C.5.2.4, and all non-empty picture storage buffers in <del>DPB< / del> <add>sub- DPB< / add> are emptied, and the DPB fullness <del>is set equal to 0< / del> <add>is decremented by one for each picture store buffer that is emptied< / add> .
[0146] [In alternative wording using sub-DPB fullness, otherwise (NoOutputOfPriorPicsFlag is equal to 0), all picture storage buffers containing pictures that are marked as "not needed for output" and "unused for reference" are emptied (without output) by repeatedly invoking the "drain out" process specified in clause C.5.2.4, and all non-empty picture storage buffers in <del>DPB< / del> <add>sub- DPB< / add> are emptied, and <del>DPB< / del> <add>sub- DPB< / add> fullness is set equal to 0.
[0147] – [In another alternative wording, otherwise (NoOutputOfPriorPicsFlag is equal to 0), all picture storage buffers containing pictures that are marked as "not needed for output" and "unused for reference" are emptied (without output) by repeatedly invoking the "drain out" process specified in clause C.5.2.4, and <add>all< / add> all non-empty picture storage buffers in the DPB <add>sub- DPB< / add> are emptied, and <del>DPB< / del> <add>all sub- DPB< / add> sub-DPB< / add> is set equal to 0.
[0148] Otherwise (the current picture is not a CLVSS picture <add>, or the CLVSS picture is picture 0< / add> ), all picture storage buffers containing pictures that are marked as "not needed for output" and "unused for reference" are emptied (without output). For each picture storage buffer that is emptied, the DPB fullness is decremented by one. The "prune-out-of-place" process specified in clause C.5.2.4 is invoked repeatedly while one or more of the following conditions are true, while further decrementing the DPB fullness by one for each additional picture storage buffer that is emptied until none of the following conditions are true:
[0149] - the number of pictures in the DPB that are marked as "needed for output" is greater than max num reorder pics[ Htid ].
[0150] - max latency increase plusl[ Htid ] is not equal to 0 and there is at least one picture in the DPB that is marked as "needed for output" for which the associated variable PicLatencyCount is greater than or equal to MaxLatencyPictures[ Htid ].
[0151] - the number of pictures in the DPB is greater than or equal to max dec pic buffering minusl[ Htid ] + 1.
[0152] C.5.2.3 Additional Pruning
[0153] The process specified in this clause occurs immediately when the last DU of the AU n containing the current picture is removed from the CPB.
[0154] When the current picture has PictureOutputFlag equal to 1, for each picture in the DPB that is marked as "needed for output" and follows the current picture in output order, the associated variable PicLatencyCount is set equal to PicLatencyCount + 1.
[0155] The following applies:
[0156] - If the current decoded picture has PictureOutputFlag equal to 1, it is marked as "needed for output" and its associated variable PicLatencyCount is set equal to 0.
[0157] - Otherwise (the current decoded picture has PictureOutputFlag equal to 0), it is marked as "not needed for output".
[0158] The "drain" process specified in clause C.5.2.4 is invoked repeatedly while one or more of the following conditions are true until none of the following conditions are true:
[0159] - the number of pictures in the DPB that are marked as "needs output" is greater than max num reorder pics[ Htid ].
[0160] - max latency increase plusl [Htid] is not equal to 0 and there exists at least one picture in the DPB that is marked as "needs output" for which the associated variable PicLatencyCount is greater than or equal to MaxLatencyPictures[Htid].
[0161] C.5.2.4 "drain" process
[0162] The "drain" process consists of the following steps in the order specified:
[0163] 1. select the first output one or more pictures as the picture with the smallest value of PicOrderCntVal among all pictures in the DPB that are marked as "needs output".
[0164] 2. clip each of these pictures using the conformance clipping window for that picture in ascending order of nuh layer id, output the clipped picture, and mark the picture as "does not need output".
[0165] 3. empty each picture storage buffer containing a picture that is marked as "unused for reference" and is one of the pictures that are clipped and output, and decrement the fullness of the DPB by one. <del>associated sub-< / del>
[0166] NOTE: For any two pictures picA and picB that belong to the same CVS and are output by the "drain process", when picA is output before picB, the value of PicOrderCntVal of picA is less than the value of PicOrderCntVal of picB. <add>or equal to< / add>
[0167] Figure 3 is a block diagram illustrating an example video encoder 200 that can perform the techniques of this disclosure. Figure 3 are provided for purposes of explanation and should not be considered to be limitations thereof. For purposes of explanation, the present disclosure describes video encoder 200 in the context of video coding standards such as the HEVC video coding standard and the H.266 video coding standard that is under development. However, the techniques of the disclosure are not limited to these video coding standards and are applicable to video encoding and decoding in general.
[0168] In Figure 3 In an example of the video encoder 200, the video encoder 200 includes a video data memory 230, a mode select unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216, a DPB 218, and an entropy encoding unit 220. Any or all of the video data memory 230, the mode select unit 202, the residual generation unit 204, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the filter unit 216, the DPB 218, and the entropy encoding unit 220 can be implemented in one or more processors or in processing circuitry. For instance, the units of the video encoder 200 can be implemented as one or more circuits or logic elements as part of hardware circuitry, or as part of a processor, ASIC, or FPGA. Moreover, the video encoder 200 can include additional or alternative processors or processing circuitry to perform these and other functions.
[0169] The video data memory 230 can store video data to be encoded by the components of the video encoder 200. The video encoder 200 can receive the video data stored in the video data memory 230 from, for example, the video source 104 Figure 1 The DPB 218 can act as a reference picture memory that stores reference video data for use in prediction by the video encoder 200 when encoding subsequent video data. The video data memory 230 and the DPB 218 can be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM) including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The video data memory 230 and the DPB 218 can be provided by the same memory device or separate memory devices. In various examples, the video data memory 230 can be on-chip with other components of the video encoder 200, as illustrated, or off-chip relative to those components.
[0170] DPB 218 may include a shared multi-layer DPB 219. As explained in more detail elsewhere in this disclosure, video encoder 200 may be configured to store reference images for multiple layers in the shared multi-layer DPB 219. Before decoding the current image of an access unit of the first layer, video encoder 200 may perform an image output and removal process on the shared multi-layer DPB 219 to remove only some decoded images belonging to the first layer from the shared multi-layer DPB 219. After removing the last decoded unit of the current image from the CPB, video encoder 200 may perform an image recall process across all layers of the shared multi-layer DPB 219.
[0171] In this disclosure, references to video data memory 230 should not be construed as limited to memory within video encoder 200 (unless so specifically described) or to memory outside video encoder 200 (unless so specifically described). Rather, references to video data memory 230 should be understood as reference memory storing video data received by video encoder 200 for encoding (e.g., video data for the current block to be encoded). Figure 1 The memory 106 can also provide temporary storage for the outputs from the various units of the video encoder 200.
[0172] Explanation Figure 3 The various units help to understand the operations performed by the video encoder 200. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide a specific function and are pre-configured regarding the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in terms of the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more of these units can be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units can be integrated circuits.
[0173] The video encoder 200 may include an arithmetic logic unit (ALU), an essential function unit (EFU), digital circuitry, analog circuitry, and / or a programmable core, all formed by programmable circuitry. In an example where software executed by programmable circuitry is used to perform the operation of the video encoder 200, memory 106 ( Figure 1) can store instructions (e.g., object code) of software that video encoder 200 receives and executes, or another memory (not shown) within video encoder 200 can store such instructions.
[0174] Video data memory 230 is configured to store received video data. Video encoder 200 can retrieve pictures of the video data from video data memory 230 and provide the video data to residual generation unit 204 and mode selection unit 202. Video data in video data memory 230 can be raw video data that is to be encoded.
[0175] Mode selection unit 202 includes motion estimation unit 222, motion compensation unit 224, and intra prediction unit 226. Mode selection unit 202 can include additional functional units that perform video prediction according to other prediction modes. As examples, mode selection unit 202 can include a palette unit, an intra block copy unit (which can be part of motion estimation unit 222 and / or motion compensation unit 224), an affine unit, a linear model (LM) unit, etc.
[0176] Mode selection unit 202 generally coordinates multiple encoding passes to test combinations of encoding parameters and resulting rate-distortion values for such combinations. The encoding parameters can include partitioning of a CTU into CUs, prediction modes for the CUs, transform types for residual data of the CUs, quantization parameters for the residual data of the CUs, etc. Mode selection unit 202 can ultimately select the combination of encoding parameters that has a more favorable rate-distortion value than other tested combinations.
[0177] Video encoder 200 can partition a picture retrieved from video data memory 230 into a series of CTUs, and encapsulate one or more CTUs within a slice. Mode selection unit 202 can partition the CTUs of the picture according to a tree structure, such as the QTBT structure or the quad-tree structure of HEVC described above. As described above, video encoder 200 can form one or more CUs by partitioning a CTU according to the tree structure. Such CUs can also be referred to generally as “video blocks” or “blocks.”
[0178] In general, mode selection unit 202 also controls its components (e.g., motion estimation unit 222, motion compensation unit 224, and intra-prediction unit 226) to generate a prediction block for a current block (e.g., a current CU, or an overlapping portion of a PU and a TU in HEVC). To perform inter-prediction for the current block, motion estimation unit 222 can perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures that are stored in DPB 218). Specifically, motion estimation unit 222 can compute, e.g., according to a sum of absolute difference (SAD), a sum of squared difference (SSD), a mean absolute difference (MAD), a mean squared difference (MSD), etc., values that represent how closely a potential reference block will match the current block. Motion estimation unit 222 can perform these computations using, in general, sample-wise differences between the current block and a reference block under consideration. Motion estimation unit 222 can identify the reference block that results in the lowest value from these computations, which indicates the reference block that most closely matches the current block.
[0179] Motion estimation unit 222 can form one or more motion vectors (MVs) that define the position of a reference block in a reference picture relative to the position of the current block in the current picture. Motion estimation unit 222 can then provide the motion vector(s) to motion compensation unit 224. For example, for single-direction inter-prediction, motion estimation unit 222 can provide a single motion vector, while for bi-directional inter-prediction, motion estimation unit 222 can provide two motion vectors. Motion compensation unit 224 can then use the motion vector(s) to generate the prediction block. For example, motion compensation unit 224 can use the motion vector(s) to retrieve data for the reference block(s). As another example, if the motion vector(s) have fractional sample precision, motion compensation unit 224 can interpolate values for the prediction block according to one or more interpolation filters. Moreover, for bi-directional inter-prediction, motion compensation unit 224 can retrieve data for two reference blocks identified by respective motion vectors and combine the retrieved data, e.g., by sample-wise averaging or weighted averaging.
[0180] As another example, for intra-prediction or intra-prediction coding, intra-prediction unit 226 can generate the prediction block from samples that neighbor the current block. For example, for directional modes, intra-prediction unit 226 can mathematically combine values of the neighboring samples and fill these computed values across the current block in a defined direction to produce the prediction block. As another example, for a DC mode, intra-prediction unit 226 can compute an average of the neighboring samples of the current block and generate the prediction block to include this resulting average for each sample of the prediction block.
[0181] The mode selection unit 202 provides the prediction block to a residual generation unit 204. The residual generation unit 204 receives the original, uncoded version of the current block from the video data memory 230 and the prediction block from the mode selection unit 202. The residual generation unit 204 computes the sample-wise difference between the current block and the prediction block. The resulting sample-wise difference defines the residual block for the current block. In some examples, the residual generation unit 204 can also determine the difference between sample values in the residual block to generate the residual block using residual differential pulse code modulation (RDPCM). In some examples, the residual generation unit 204 can be formed using one or more subtractor circuits that perform binary subtraction.
[0182] In examples in which the mode selection unit 202 partitions the CU into PUs, each PU can be associated with a luma prediction unit and corresponding chroma prediction units. Video encoder 200 and video decoder 300 can support PUs having various sizes. As noted above, a size of a CU can refer to a size of the luma coding block of the CU, while a size of a PU can refer to a size of the luma prediction unit of the PU. Assuming that a particular CU has a size of 2Nx2N, video encoder 200 can support PU sizes of 2Nx2N or NxN for intra-prediction, and symmetric PU sizes of 2Nx2N, 2NxN, Nx2N, NxN, or similar for inter-prediction. Video encoder 200 and video decoder 300 can also support non-symmetric partitioning for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-prediction.
[0183] In examples in which the mode selection unit 202 does not partition the CU into PUs, each CU can be associated with a luma coding block and corresponding chroma coding blocks. As described above, a size of a CU can refer to a size of the luma coding block of the CU. Video encoder 200 and video decoder 300 can support CU sizes of 2Nx2N, 2NxN, or Nx2N.
[0184] For other video coding techniques (such as intra block copy mode coding, affine mode coding, and linear model (LM) mode coding, to name a few), the mode selection unit 202 generates the prediction block for the current block being coded via the respective unit associated with the coding technique. In some examples (such as palette mode coding), the mode selection unit 202 can not generate a prediction block, but instead generate syntax elements that indicate a way to reconstruct the block based on a selected palette. In such modes, the mode selection unit 202 can provide the syntax elements to the entropy encoding unit 220 for encoding.
[0185] As described above, the residual generation unit 204 receives video data for a current block and a corresponding prediction block. The residual generation unit 204 then generates a residual block for the current block. To generate the residual block, the residual generation unit 204 computes a sample-by-sample difference between the prediction block and the current block.
[0186] The transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a “transform coefficient block”). The transform processing unit 206 can apply various transforms to the residual block to form a transform coefficient block. For example, the transform processing unit 206 can apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, the transform processing unit 206 can perform multiple transforms on the residual block, e.g., a primary transform and a secondary transform such as a rotational transform. In some examples, the transform processing unit 206 does not apply a transform to the residual block.
[0187] The quantization unit 208 can quantize the transform coefficients in the transform coefficient block to produce a quantized transform coefficient block. The quantization unit 208 can quantize transform coefficients of the transform coefficient block according to a quantization parameter (QP) value associated with the current block. The video encoder 200 (e.g., via the mode selection unit 202) can adjust the degree of quantization applied to the transform coefficient block associated with the current block by adjusting the QP value associated with the CU. Quantization can introduce loss of information, and thus, quantized transform coefficients can have lower precision than the original transform coefficients produced by the transform processing unit 206.
[0188] The inverse quantization unit 210 and inverse transform processing unit 212 can apply inverse quantization and inverse transforms, respectively, to a quantized transform coefficient block to reconstruct a residual block from the transform coefficient block. The reconstruction unit 214 can produce a reconstructed block corresponding to the current block (albeit potentially with some degree of distortion) based on the reconstructed residual block and the prediction block generated by the mode selection unit 202. For example, the reconstruction unit 214 can add samples of the reconstructed residual block to corresponding samples from the prediction block generated by the mode selection unit 202 to produce the reconstructed block.
[0189] The filter unit 216 can perform one or more filter operations on the reconstructed block. For example, the filter unit 216 can perform a deblocking operation to reduce blocking artifacts along the edges of the CU. In some examples, the operations of the filter unit 216 can be skipped.
[0190] Video encoder 200 stores the reconstructed blocks in DPB 218. For example, in examples in which operations of filter unit 216 are not performed, reconstruction unit 214 can store the reconstructed blocks to DPB 218. In examples in which operations of filter unit 216 are performed, filter unit 216 can store the filtered reconstructed blocks to DPB 218. Motion estimation unit 222 and motion compensation unit 224 can retrieve reference pictures formed from reconstructed (and potentially filtered) blocks from DPB 218 to inter-predict blocks of subsequent encoded pictures. In addition, intra-prediction unit 226 can use reconstructed blocks of the current picture in DPB 218 to intra-predict other blocks in the current picture.
[0191] In general, entropy encoding unit 220 can entropy encode syntax elements received from other functional components of video encoder 200. For example, entropy encoding unit 220 can entropy encode quantized transform coefficient blocks from quantization unit 208. As another example, entropy encoding unit 220 can entropy encode prediction syntax elements (e.g., motion information for inter-prediction or intra-mode information for intra-prediction) from mode select unit 202. Entropy encoding unit 220 can perform one or more entropy encoding operations on syntax elements, as another example of video data, to generate entropy encoded data. For example, entropy encoding unit 220 can perform a context- adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable- to-variable (V2V) length coding operation, a syntax-based context- adaptive binary arithmetic coding (SBAC) operation, a Probability Interval Partitioning Entropy (PIPE) coding operation, an Exponential-Golomb coding operation, or another type of entropy coding operation on the data. In some examples, entropy encoding unit 220 can operate in a bypass mode in which syntax elements are not entropy encoded.
[0192] Video encoder 200 can output a bitstream that includes the entropy encoded syntax elements needed to reconstruct blocks of a slice or picture. In particular, entropy encoding unit 220 can output the bitstream.
[0193] The above-described operations are described with respect to a block. Such description should be understood to be operations for a luma coding block and / or a chroma coding block. As described above, in some examples, the luma coding block and the chroma coding block are luma and chroma components of a CU. In some examples, the luma coding block and the chroma coding block are luma and chroma components of a PU.
[0194] In some examples, operations performed with respect to luma coding blocks need not be repeated for chroma coding blocks. As one example, operations to identify motion vectors (MVs) and reference pictures for luma coding blocks need not be repeated to identify MVs and reference pictures for chroma blocks. Rather, the MVs for luma coding blocks can be scaled to determine the MVs for chroma blocks, and the reference pictures can be the same. As another example, the intra prediction process can be the same for luma coding blocks and chroma coding blocks.
[0195] Video encoder 200 represents an example of a device configured to encode video data, including a memory configured to store video data and one or more processing units implemented in circuitry and configured to perform the techniques of this disclosure, including those described in the claims section below.
[0196] Figure 4 is a block diagram illustrating an example video decoder 300 that can perform the techniques of this disclosure. Figure 4 is provided for purposes of explanation and is not limiting of the technology generally set forth in the present disclosure. For purposes of explanation, the present disclosure describes video decoder 300 in terms of the technology of JEM, VVC, and HEVC. However, the technology of this disclosure can be performed by video coding devices configured for other video coding standards.
[0197] In Figure 4 In the example of FIG. 3, video decoder 300 includes CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, filter unit 312, and DPB 314. Any or all of CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, filter unit 312, and DPB 314 can be implemented in one or more processors or in processing circuitry. For instance, the units of video decoder 300 can be implemented as one or more circuits or logic elements as part of hardware circuitry, or as part of a processor, ASIC, or FPGA. Also, video decoder 300 can include additional or alternative processors or processing circuitry to perform these and other functions.
[0198] The prediction processing unit 304 includes a motion compensation unit 316 and an intra-prediction unit 318. The prediction processing unit 304 may include an addition unit that performs predictions based on other prediction modes. As an example, the prediction processing unit 304 may include a palette unit, an intra-block copying unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, etc. In other examples, the video decoder 300 may include more, fewer, or different functional components.
[0199] CPB memory 320 can store video data to be decoded by components of video decoder 300, such as encoded video bitstreams. For example, it can be stored from computer-readable medium 110 ( Figure 1 The video data stored in the CPB memory 320 is obtained. The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from the encoded video bitstream. Additionally, the CPB memory 320 may store video data other than the syntax elements of the decoded picture, such as temporary data representing the output from various units of the video decoder 300. The DPB 314 typically stores decoded pictures, which the video decoder 300 may output and / or use as reference video data when decoding subsequent data or pictures of the encoded video bitstream. The CPB memory 320 and DPB 314 may be formed of any of a variety of memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. The CPB memory 320 and DPB 314 may be provided by the same memory device or separate memory devices. In various examples, the CPB memory 320 may be on-chip with other components of the video decoder 300, or off-chip relative to those components.
[0200] Alternatively or concurrently, in some examples, the video decoder 300 can be derived from the memory 120 ( Figure 1 The decoded video data is retrieved. That is, memory 120 can utilize CPB memory 320 to store data as discussed above. Similarly, when some or all of the functions of video decoder 300 are implemented using software to be executed by the processing circuitry of video decoder 300, memory 120 can store instructions to be executed by video decoder 300.
[0201] This explains that in Figure 4 The various units shown help to understand the operations performed by the video decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to... Figure 3Fixed function circuits refer to circuits that provide specific functionality and are preset with respect to operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in terms of operations that can be performed. For instance, programmable circuits can execute software or firmware that cause the programmable circuits to operate in a manner defined by instructions of the software or firmware. Fixed function circuits can execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed function circuits perform are generally immutable. In some examples, one or more of these units can be distinct circuit blocks (fixed function or programmable), and in some examples one or more of these units can be integrated circuits.
[0202] Video decoder 300 can include ALUs, EFUs, digital circuits, analog circuits, and / or programmable nuclei formed from programmable circuits. In examples where the operations of video decoder 300 are performed by software executing on the programmable circuits, on-chip or off-chip memory can store instructions (e.g., object code) of the software that video decoder 300 receives and executes.
[0203] Entropy decoding unit 302 can receive encoded video data from a CPB and entropy decode the video data to reproduce syntax elements. Prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, and filter unit 312 can generate decoded video data based on the syntax elements extracted from the bitstream.
[0204] In general, video decoder 300 reconstructs a picture on a block-by-block basis. Video decoder 300 can perform reconstruction operations individually for each block (where the block that is currently being reconstructed (i.e., decoded) can be referred to as the “current block”).
[0205] Entropy decoding unit 302 can entropy decode syntax elements defining quantized transform coefficients of a quantized transform coefficient block, as well as transform information such as a quantization parameter (QP) and / or an indication of a transform mode. Inverse quantization unit 306 can use the QP associated with the quantized transform coefficient block to determine a degree of quantization and, likewise, a degree of inverse quantization for inverse quantization unit 306 to apply. Inverse quantization unit 306 may, for example, perform a bit- shift operation to inverse quantize the quantized transform coefficients. Inverse quantization unit 306 may
[0206] After inverse quantization unit 306 forms a transform coefficient block, inverse transform processing unit 308 can apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, inverse transform processing unit 308 can apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve Transform (KLT), an inverse rotational transform, an inverse directional transform, or another inverse transform to the coefficient block.
[0207] Furthermore, prediction processing unit 304 generates a prediction block from the prediction information syntax elements entropy decoded by entropy decoding unit 302. For example, if the prediction information syntax elements indicate that the current block is inter predicted, motion compensation unit 316 can generate the prediction block. In this case, the prediction information syntax elements can indicate a reference picture in DPB 314 to retrieve a reference block from, and a motion vector identifying a location of the reference block in the reference picture relative to a location of the current block in the current picture. Motion compensation unit 316 can generally perform the inter prediction process in a manner substantially similar to that described with respect to motion compensation unit 224 Figure 3 ) above.
[0208] As another example, if the prediction information syntax elements indicate that the current block is intra predicted, intra prediction unit 318 can generate the prediction block according to an intra prediction mode indicated by the prediction information syntax elements. Again, intra prediction unit 318 can generally perform the intra prediction process in a manner substantially similar to that described with respect to intra prediction unit 226 Figure 3 ) above. Intra prediction unit 318 can retrieve data for neighboring samples of the current block from DPB 314.
[0209] Reconstruction unit 310 can reconstruct the current block using the prediction block and the residual block. For example, reconstruction unit 310 can add samples of the residual block to corresponding samples of the prediction block to reconstruct the current block.
[0210] Filter unit 312 can perform one or more filter operations on the reconstructed block. For example, filter unit 312 can perform a deblocking operation to reduce blocking artifact pseudo-ghosts along edges of the reconstructed block. The operations of filter unit 312 are not necessarily performed in all examples.
[0211] Video decoder 300 can store the reconstructed blocks in DPB 314. For example, in examples in which the operations of filter unit 312 are not performed, reconstruction unit 310 can store the reconstructed blocks to DPB 314. In examples in which the operations of filter unit 312 are performed, filter unit 312 can store the filtered reconstructed blocks to DPB 314. As discussed above, DPB 314 can provide reference information, such as samples of a current picture for intra prediction and previously decoded pictures for subsequent motion compensation, to prediction processing unit 304. In addition, video decoder 300 can output decoded pictures (e.g., decoded video) from DPB 314 for subsequent presentation on a display device, such as display device 118. Figure 1
[0212] DPB 314 can include a shared multi-layer DPB 315. As explained in greater detail elsewhere in this disclosure, video decoder 300 can be configured to store reference pictures for multiple layers in shared multi-layer DPB 315. Prior to decoding a current picture of an access unit of a first layer, video decoder 300 can perform a picture output and removal process on shared multi-layer DPB 315 to remove only some decoded pictures belonging to the first layer from shared multi-layer DPB 315. After removing the last decoded unit of the current picture from CPB memory 320, video decoder 300 can perform a picture bumping process across all layers of shared multi-layer DPB 315. That is, video decoder 300 can perform a picture bumping process that is not limited to a particular layer, but instead, can bump pictures from layers other than the layer of the current picture.
[0213] In this way, video decoder 300 represents an example of a video decoding device including a memory configured to store video data and one or more processing units implemented in circuitry and configured to perform the techniques of this disclosure, including those described below in the claims section.
[0214] Figure 5 is a flowchart showing an example process for encoding a current block. The current block can include a current CU. Although described with respect to video encoder 200 Figure 1 and 3 ), it should be understood that other devices can be configured to perform processes similar to those of Figure 5
[0215] In this example, video encoder 200 initially predicts the current block (350). For example, video encoder 200 can form a prediction block for the current block. Video encoder 200 can then calculate a residual block for the current block (532). To calculate the residual block, video encoder 200 can calculate the difference between the original, unencoded block and the prediction block for the current block. Video encoder 200 can then transform and quantize the coefficients of the residual block (354). Next, video encoder 200 can scan the quantized transform coefficients of the residual block (356). During the scan or after the scan, video encoder 200 can entropy encode the transform coefficients (358). For example, video encoder 200 can use CAVLC or CABAC to encode the transform coefficients. Video encoder 200 can then output the entropy coded data for the block (360).
[0216] Figure 6 is a flowchart illustrating an example process for decoding a current block of video data. The current block can include a current CU. Although described with respect to video decoder 300 Figure 1 and 4 ), it should be understood that other devices can be configured to perform similar processes as the processes of Figure 6 .
[0217] Video decoder 300 can receive entropy encoded data for the current block (e.g., entropy encoded prediction information and entropy encoded data for coefficients of a residual block corresponding to the current block) (370). Video decoder 300 can entropy decode the entropy encoded data to determine prediction information for the current block and to reproduce the coefficients of the residual block (372). Video decoder 300 can predict the current block (374), e.g., calculate a prediction block for the current block using an intra or inter prediction mode as indicated by the prediction information for the current block. Video decoder 300 can then inverse scan the reproduced coefficients (376) to create a block of quantized transform coefficients. Video decoder 300 can then inverse quantize and inverse transform the transform coefficients to produce a residual block (378). Finally, video decoder 300 can decode the current block by combining the prediction block and the residual block (380).
[0218] Figure 7 is a flowchart illustrating an example process for decoding video data. Figure 7 The techniques of this disclosure can be performed by a video decoder such as video decoder 300 Figure 1 and Figure 4 or by a video decoding loop of a video encoder such as video encoder 200 Figure 1 and Figure 3 .
[0219] The video decoder maintains a DPB (400) for storing reference pictures for a plurality of layers. The DPB stores previously decoded pictures. The plurality of layers includes at least a first layer and a second layer.
[0220] Before decoding a current picture of an access unit of the first layer, the video decoder performs a picture output and removal process on the DPB by removing only decoded pictures belonging to the first layer from the DPB (402). For example, the video decoder can perform the picture output and removal process on the DPB before decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture. For example, the video decoder can perform the picture output and removal process on the DPB in response to removing a first decoded unit of the current picture from a coded picture buffer (CPB). The CPB can store encoded multi-layer video data for decoding.
[0221] After removing a last decoded unit of the current picture from the CPB, the video decoder performs a picture purge process across all layers of the DPB (404). To perform the picture purge process across all layers of the DPB, the video decoder can remove at least one picture of the second layer from the DPB. To perform the picture purge process across all layers of the DPB, the video decoder can, for example, remove a reference picture that is marked as not needed for output and that is marked as unused for reference from the DPB.
[0222] The video decoder can identify a reference picture in the DPB, identify a prediction block in the reference picture for a current block of the current picture, decode the current block based on the prediction block, and output a decoded version of the current picture, where the decoded version of the current picture includes a decoded version of the current block.
[0223] The following clauses represent examples of the above-described techniques and apparatuses.
[0224] Clause 1 : An apparatus for decoding multi-layer video data, comprising: a memory configured to store multi-layer video data; one or more processors implemented in circuitry and configured to: maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer; perform a picture output and removal process on the DPB before decoding a current picture of an access unit of the first layer, wherein to perform the picture output and removal process on the DPB, the one or more processors are further configured to remove only decoded pictures belonging to the first layer from the DPB; and perform a picture purge process across all layers of the DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB).
[0225] Clause 2: The device of clause 1, wherein, to perform the picture output and removal process on the DPB, the one or more processors are further configured to: perform the picture output and removal process on the DPB prior to decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture.
[0226] Clause 3: The device of any of clauses 1 and 2, wherein, to perform the picture output and removal process on the DPB, the one or more processors are further configured to: perform the picture output and removal process on the DPB in response to removing a first decoded unit of the current picture from the CPB.
[0227] Clause 4: The device of any of clauses 1-3, wherein, to perform the picture eviction process across all layers of the DPB, the one or more processors are further configured to: remove, from the DPB, a reference picture that is marked as not needed for output and that is marked as unused for reference.
[0228] Clause 5: The device of any of clauses 1-4, wherein, to perform the picture eviction process across all layers of the DPB, the one or more processors are further configured to: remove, from the DPB, at least one picture of the second layer.
[0229] Clause 6: The device of any of clauses 1-5, wherein the one or more processors are further configured to: identify a reference picture in the DPB; identify a prediction block in the reference picture for a current block of the current picture; decode the current block based on the prediction block; and output a decoded version of the current picture, wherein the decoded version of the current picture includes a decoded version of the current block.
[0230] Clause 7: The device of any of clauses 1-6, wherein the DPB is configured to store previously decoded pictures, and wherein the CPB is configured to store encoded multi-layer video data.
[0231] Clause 8: The device of any of clauses 1-7, wherein the one or more processors are further configured to: maintain the DPB and the CPB in the memory.
[0232] Clause 9: The device of any of clauses 1-8, wherein the device comprises a wireless communication device, the wireless communication device further comprising a receiver configured to receive encoded multi-layer video data.
[0233] Clause 10: The device of clause 9, wherein the wireless communication device comprises a telephone handset, and wherein the receiver is configured to demodulate a signal comprising the encoded multi-layer video data according to a wireless communication standard.
[0234] Clause 11 : The device of any of clauses 1 to 8, wherein the device comprises a wireless communication device, the wireless communication device further comprising a transmitter configured to transmit the encoded multi-layer video data.
[0235] Clause 12: The device of clause 11, wherein the wireless communication device comprises a telephone handset, and wherein the transmitter is configured to modulate a signal comprising the encoded multi-layer video data according to a wireless communication standard.
[0236] Clause 13: The device of any of clauses 1 to 12, further comprising a display configured to display decoded multi-layer video data comprising a decoded version of the current picture.
[0237] Clause 14: The device of any of clauses 1 to 13, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
[0238] Clause 15: A method of decoding multi-layer video data, comprising: maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers comprises at least a first layer and a second layer; performing a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein performing the picture output and removal process on the DPB comprises removing only decoded pictures belonging to the first layer from the DPB; and performing a picture advancement process across all layers of the DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB).
[0239] Clause 16: The method of clause 15, wherein performing the picture output and removal process on the DPB comprises performing the picture output and removal process on the DPB prior to decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture.
[0240] Clause 17: The method of any of clauses 15 and 16, wherein performing the picture output and removal process on the DPB comprises performing the picture output and removal process on the DPB in response to removing a first decoded unit of the current picture from the CPB.
[0241] Clause 18: The method of any of clauses 15-17, wherein performing the picture pull- down process across all layers of the DPB comprises removing from the DPB reference pictures that are marked as not needed for output and that are marked as unused for reference.
[0242] Clause 19: The method of any of clauses 15-18, wherein performing the picture pull- down process across all layers of the DPB comprises removing at least one picture of the second layer from the DPB.
[0243] Clause 20: The method of any of clauses 15-19, further comprising: identifying a reference picture in the DPB; identifying a prediction block in the reference picture for a current block of the current picture; decoding the current block based on the prediction block; outputting a decoded version of the current picture, wherein the decoded version of the current picture comprises a decoded version of the current block.
[0244] Clause 21 : The method of clause 20, further comprising: displaying the decoded version of the current picture.
[0245] Clause 22: The method of any of clauses 15-21, wherein the DPB is configured to store previously decoded pictures, and wherein the CPB is configured to store encoded multi-layer video data.
[0246] Clause 23: The method of any of clauses 15-20 or 22, wherein the method of decoding is performed as part of an encoding process.
[0247] Clause 24: A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer; perform a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein to perform the picture output and removal process on the DPB, the instructions cause the one or more processors to: remove only decoded pictures belonging to the first layer from the DPB; and perform a picture pull-down process across all layers of the DPB after removal of a last decoded unit of the current picture from a coded picture buffer (CPB).
[0248] Clause 25: The computer-readable storage medium of clause 24, wherein to perform the picture output and removal process on the DPB, the instructions cause the one or more processors to perform the picture output and removal process on the DPB prior to decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture.
[0249] Clause 26: The computer-readable storage medium of any of clauses 24 and 25, wherein to perform the picture output and removal process on the DPB, the instructions cause the one or more processors to perform the picture output and removal process on the DPB in response to removing a first decoded unit of the current picture from the CPB.
[0250] Clause 27: The computer-readable storage medium of any of clauses 24 to 26, wherein to perform the picture eviction process across all layers of the DPB, the instructions cause the one or more processors to remove, from the DPB, a reference picture that is marked as not needed for output and that is marked as unused for reference.
[0251] Clause 28: The computer-readable storage medium of any of clauses 24 to 27, wherein to perform the picture eviction process across all layers of the DPB, the instructions cause the one or more processors to remove, from the DPB, at least one picture of the second layer.
[0252] Clause 29: The computer-readable storage medium of any of clauses 24 to 28, wherein the instructions further cause the one or more processors to: identify a reference picture in the DPB; identify a prediction block in the reference picture for a current block of the current picture; decode the current block based on the prediction block; output a decoded version of the current picture, wherein the decoded version of the current picture includes a decoded version of the current block.
[0253] Clause 30: The computer-readable storage medium of any of clauses 24 to 29, wherein the DPB is configured to store previously decoded pictures, and wherein the CPB is configured to store encoded multi-layer video data.
[0254] Clause 31: An apparatus for decoding multi-layer video data, comprising: means for maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer and a second layer; means for performing a picture output and removal process on the DPB prior to decoding a current picture of an access unit of the first layer, wherein performing the picture output and removal process on the DPB includes removing only decoded pictures belonging to the first layer from the DPB; and means for performing a picture purge process across all layers of the DPB after a last decoding unit of the current picture is removed from a coded picture buffer (CPB).
[0255] Clause 32: The apparatus of clause 31, wherein the means for performing the picture output and removal process on the DPB comprises means for performing the picture output and removal process on the DPB prior to decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture.
[0256] Clause 33: The apparatus of any of clauses 31 and 32, wherein the means for performing the picture output and removal process on the DPB comprises means for performing the picture output and removal process on the DPB in response to a first decoding unit of the current picture being removed from the CPB.
[0257] Clause 34: The apparatus of any of clauses 31 to 33, wherein the means for performing the picture purge process across all layers of the DPB comprises means for removing from the DPB reference pictures that are marked as not needed for output and that are marked as unused for reference.
[0258] Clause 35: The apparatus of any of clauses 31 to 34, wherein the means for performing the picture purge process across all layers of the DPB comprises means for removing at least one picture of the second layer from the DPB.
[0259] Clause 36: The apparatus of any of clauses 31 to 35, further comprising: means for identifying reference pictures in the DPB; means for identifying a prediction block of the current picture in the reference pictures for a current block; means for decoding the current block based on the prediction block; means for outputting a decoded version of the current picture, wherein the decoded version of the current picture includes a decoded version of the current block.
[0260] Clause 37: The apparatus of any of clauses 31-36, wherein the DPB is configured to store previously decoded pictures, and wherein the CPB is configured to store encoded multi-layer video data.
[0261] Clause 38: The apparatus of any of clauses 31-37, wherein the means for decoding the multi-layer video data is part of a video encoder.
[0262] Clause 39: A method of decoding video data, comprising: maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the DPB comprises a sub-DPB for storing reference pictures for one of the plurality of layers; decoding a picture of the video data; and storing a copy of the decoded picture as a reference picture in the DPB.
[0263] Clause 40: The method of clause 39, further comprising: determining a fullness of the sub-DPB.
[0264] Clause 41: The method of clause 39 or 40, further comprising: determining a fullness of the DPB.
[0265] Clause 42: The method of any of clauses 39-41, further comprising: initializing the fullness of the sub-DPB to zero in response to parsing a first picture of a video sequence.
[0266] Clause 43: The method of any of clauses 39-41, further comprising: initializing the fullness of the sub-DPB to zero in response to parsing a first slice of a CLVSS picture 0 having a lowest nuh layer id.
[0267] Clause 44: The method of any of clauses 39-43, further comprising: marking pictures stored in the sub-DPB with a status.
[0268] Clause 45: The method of any of clauses 39-44, wherein the DPB comprises a second sub-DPB for storing reference pictures for a second layer of the plurality of layers.
[0269] Clause 46: The method of any of clauses 39-45, wherein the method of decoding is performed as part of an encoding process.
[0270] Clause 47: An apparatus for coding video data, the apparatus comprising one or more means for performing one or more elements of a method of any of clauses 39-46.
[0271] Clause 48: The device of clause 47, wherein the one or more means are included in a circuit that is implemented as one or more processors.
[0272] Clause 49: The device of clause 46 or 47, further comprising: a memory that stores the video data.
[0273] Clause 50: The device of any of clauses 47-49, further comprising: a display configured to display decoded video data.
[0274] Clause 51 : The device of any of clauses 47-50, wherein the device comprises one or more of: a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
[0275] Clause 52: The device of any of clauses 47-51, wherein the device comprises a video decoder.
[0276] Clause 53: The device of any of clauses 47-52, wherein the device comprises a video encoder.
[0277] Clause 54: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of clauses 39-46.
[0278] It is recognized that, in accordance with examples, certain actions or events of any of the techniques described herein can be performed in a different order, can be added, merged or omitted altogether (e.g., not all described actions or events are necessary for practicing the described techniques). Moreover, in some examples, actions or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially.
[0279] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer- readable media generally can correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product can include a computer-readable medium.
[0280] By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any
[0281] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor" as used herein can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0282] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require
[0283] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A device for decoding multi-layer video data, the device comprising: a memory configured to store multi-layer video data; one or more processors implemented in circuitry and configured to: maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer having a first layer identification (ID) value and a second layer having a second layer ID value, and the DPB comprises a common DPB shared across all layers of the plurality of layers; perform a picture output and removal process on the common DPB prior to decoding a current picture of an access unit of the first layer, wherein to perform the picture output and removal process on the common DPB, the one or more processors are further configured to remove only decoded pictures having the first layer ID value from the common DPB and to retain decoded pictures having the second layer ID value in the common DPB; and perform a picture pulldown process across all layers of the common DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB), wherein to perform the picture pulldown process across all layers of the common DPB, the one or more processors are configured to remove decoded pictures having the first layer ID value corresponding to the first layer and decoded pictures having the second layer ID value corresponding to the second layer from the common DPB.
2. The apparatus of claim 1, wherein, To perform the picture output and removal process on the common DPB, the one or more processors are further configured to perform the picture output and removal process on the common DPB prior to decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture.
3. The apparatus of claim 1, wherein, To perform the picture output and removal process on the common DPB, the one or more processors are further configured to perform the picture output and removal process on the common DPB in response to removing a first decoded unit of the current picture from the CPB.
4. The apparatus of claim 1, wherein, To perform the picture pulldown process across all layers of the common DPB, the one or more processors are further configured to remove reference pictures that are marked as not needed for output and that are marked as unused for reference from the common DPB.
5. The apparatus of claim 1, wherein, To perform the picture pulldown process across all layers of the common DPB, the one or more processors are further configured to remove at least one picture of the second layer from the common DPB.
6. The apparatus of claim 1, wherein, The one or more processors are further configured to: identify a reference picture in the common DPB; identify a prediction block in the reference picture for a current block of the current picture; decode the current block based on the prediction block; and output a decoded version of the current picture, wherein the decoded version of the current picture includes a decoded version of the current block. The common DPB is configured to store previously decoded pictures, and wherein the CPB is configured to store encoded multi-layer video data.
7. The apparatus of claim 1, wherein, 8. The apparatus of claim 1, wherein, The one or more processors are further configured to maintain the common DPB and the CPB in the memory.
9. The apparatus of claim 1, wherein, The device includes a wireless communication device that further includes a receiver configured to receive encoded multi-layer video data.
10. The apparatus of claim 9, wherein, The wireless communication device includes a telephone handset, and wherein the receiver is configured to demodulate a signal including the encoded multi-layer video data according to a wireless communication standard.
11. The apparatus of claim 1, wherein, The device includes a wireless communication device that further includes a transmitter configured to transmit encoded multi-layer video data.
12. The apparatus of claim 11, wherein, The wireless communication device includes a telephone handset, and wherein the transmitter is configured to modulate a signal including the encoded multi-layer video data according to a wireless communication standard.
13. The device of claim 1, further comprising: a display configured to display decoded multi-layer video data including a decoded version of the current picture.
14. The apparatus of claim 1, wherein, The device includes one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
15. The device of claim 1, wherein: The one or more processors are further configured to maintain a value indicative of a fullness of the common DPB, and To perform the picture pull-in process across all layers of the common DPB, the one or more processors are further configured to decrement the value indicative of the fullness of the common DPB in response to a reference picture of the second layer being marked as unused for reference.
16. A method of decoding multi-layer video data, the method comprising: maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer having a first layer identification (ID) value and a second layer having a second layer ID value, and the DPB includes a common DPB shared across all layers of the plurality of layers; performing a picture output and removal process on the common DPB prior to decoding a current picture of an access unit of the first layer, wherein performing the picture output and removal process on the common DPB includes removing only decoded pictures having the first layer ID value from the common DPB and retaining decoded pictures having the second layer ID value in the common DPB; and performing a picture pull-in process across all layers of the common DPB after removing a last decoded unit of the current picture from a coded picture buffer (CPB), wherein performing the picture pull-in process across all layers of the common DPB includes removing decoded pictures having the first layer ID value corresponding to the first layer and decoded pictures having the second layer ID value corresponding to the second layer from the common DPB.
17. The method of claim 16, wherein, Performing the picture output and removal process on the common DPB includes performing the picture output and removal process on the common DPB prior to decoding the current picture of the first layer and after parsing a slice header of a slice for the current picture.
18. The method of claim 16, wherein, performing the picture output and removal process on the common DPB includes performing the picture output and removal process on the common DPB in response to removing a first decoding unit of the current picture from the CPB.
19. The method of claim 16, wherein, performing the picture pull-out process across all layers of the common DPB includes: removing, from the common DPB, a reference picture that is marked as not needed for output and that is marked as unused for reference.
20. The method of claim 16, wherein, performing the picture pull-out process across all layers of the common DPB includes removing, from the common DPB, at least one picture of the second layer.
21. The method of claim 16, further comprising: identifying a reference picture in the common DPB; identifying a prediction block in the reference picture for a current block of the current picture; decoding the current block based on the prediction block; outputting a decoded version of the current picture, wherein the decoded version of the current picture includes a decoded version of the current block.
22. The method of claim 21, further comprising: displaying the decoded version of the current picture.
23. The method of claim 16, wherein, the common DPB is configured to store previously decoded pictures, and wherein the CPB is configured to store encoded multi-layer video data.
24. The method of claim 16, wherein, the method of decoding is performed as part of an encoding process.
25. A non-transitory computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: maintain a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein, the plurality of layers includes at least a first layer having a first layer identification (ID) value and a second layer having a second layer ID value, and the DPB includes a common DPB shared across all layers of the plurality of layers; performing a picture output and removal process on the common DPB prior to decoding a current picture of an access unit of the first layer, wherein to perform the picture output and removal process on the common DPB, the instructions cause the one or more processors to remove only decoded pictures having the first layer ID value from the common DPB and to retain decoded pictures having the second layer ID value in the common DPB; and performing a picture pull-out process across all layers of the common DPB after removing a last decoding unit of the current picture from a coded picture buffer (CPB), wherein performing the picture pull-out process across all layers of the common DPB includes removing, from the common DPB, decoded pictures having the first layer ID value corresponding to the first layer and decoded pictures having the second layer ID value corresponding to the second layer.
26. The non-transitory computer-readable storage medium of claim 25, wherein, the instructions, when executed by one or more processors, further cause the one or more processors to perform the method of any of claims 17-24.
27. An apparatus for decoding multi-layer video data, the apparatus comprising: A unit for maintaining a decoded picture buffer (DPB) for storing reference pictures for a plurality of layers, wherein the plurality of layers includes at least a first layer having a first layer identification (ID) value and a second layer having a second layer ID value, and the DPB includes a common DPB shared across all layers of the plurality of layers; A unit for performing a picture output and removal process on the common DPB prior to decoding a current picture of an access unit of the first layer, wherein performing the picture output and removal process on the common DPB includes removing only decoded pictures having the first layer ID value from the common DPB and retaining decoded pictures having the second layer ID value in the common DPB; and A unit for performing a picture bumping process across all layers of the common DPB after a last decoding unit of the current picture is removed from a coded picture buffer (CPB), wherein performing the picture bumping process across all layers of the common DPB includes removing decoded pictures having the first layer ID value corresponding to the first layer and decoded pictures having the second layer ID value corresponding to the second layer from the common DPB.
28. The apparatus according to claim 27, further comprising means for performing the method according to any one of claims 17 to 24.
Citation Information
Patent Citations
POC value design for multi-layer video coding
US20150172655A1