Coefficient domain block differential pulse code modulation in video coding
By using quantized residual values for predictor determination in video coding, the method addresses inefficiencies in current BDPCM processes, improving encoding and decoding speed and efficiency.
Patent Information
- Application Number
- JP2025064719
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-03-11
- Filing Date
- 2025-04-10
- Publication Date
- 2025-08-13
AI Technical Summary
Current block-based differential pulse code modulation (BDPCM) processes in video coding are inefficient due to the use of reconstructed samples, which slow down and complicate the encoding and decoding processes by requiring inverse quantization and reconstruction before determining predictors.
The proposed method uses quantized residual values instead of reconstructed samples for predictor determination, performing intra prediction using unfiltered samples from the top or left block boundaries during encoding and decoding.
This approach enhances coding efficiency by reducing processing delays and simplifying the encoding and decoding processes, allowing for faster and more efficient video data reconstruction.
Smart Images

Figure 2025118634000001_ABST
Abstract
Description
Priority claims
[0001]
[0001] This application claims priority to U.S. Patent Application No. 16 / 816,116, filed March 11, 2020, which claims the benefit of U.S. Provisional Patent Application No. 62 / 817,451, filed March 12, 2019, the entire contents of which are incorporated by reference. [Technical Field]
[0002]
[0002] This disclosure relates to video encoding and decoding. [Background technology]
[0003] Digital video capabilities may 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 game devices, video game consoles, cellular or satellite radiotelephones, so-called "smartphones," video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video coding techniques, such as those described in 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 to such standards. By implementing such video coding techniques, video devices may more efficiently transmit, receive, encode, decode, and / or store digital video information.
[0004]
[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. In block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) may be partitioned into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction with respect to reference samples in neighboring blocks in the same picture or temporal prediction with respect to reference samples in other reference pictures. A picture may be referred to as a frame, and a reference picture may be referred to as a reference frame. Summary of the Invention
[0005]
[0005] Generally, this disclosure describes a coefficient domain block differential pulse code modulation (BDPCM) method and relates to techniques related to coefficient level prediction methods for transform skip coding of residual blocks in a video coding process. A corresponding entropy encoding process, which is the inverse process of entropy decoding, is implicitly specified and therefore also part of the techniques of this disclosure. The techniques of this disclosure may be applied to any existing video codec, such as High Efficiency Video Coding (HEVC), or may be applied as a coding tool to currently developed video coding standards, such as Versatile Video Coding (VVC), and / or other future video coding standards.
[0006]
[0006] In one example, the present disclosure describes a method for decoding video data, the method comprising: determining residual quantization samples of a block of the video data based on syntax elements in a bitstream comprising an encoded representation of the video data; determining quantized residual values based on the residual quantization samples; after determining the quantized residual values, dequantizing the quantized residual values; generating predicted values by performing intra prediction for the block using unfiltered samples from the top or left block boundary samples; and reconstructing original sample values of the block based on the dequantized quantized residual values and the predicted values.
[0007]
[0007] In another example, the present disclosure describes a method for encoding video data, the method comprising: generating a block of predicted values by performing intra prediction for a block of video data using unfiltered samples from upper or left block boundary samples; generating residual values based on the original sample values and the predicted values of the block; quantizing the residual values; after quantizing the residual values, determining residual quantized samples based on the quantized residual values; and signaling the residual quantized samples.
[0008]
[0008] In another example, the present disclosure describes a device for decoding video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in a circuit, the one or more processors configured to: determine residual quantization samples of a block of the video data based on syntax elements in a bitstream comprising an encoded representation of the video data; determine quantized residual values based on the residual quantization samples; after determining the quantized residual values, dequantize the quantized residual values; generate a predicted value by performing intra prediction for the block using unfiltered samples from above or left block boundary samples; and reconstruct original sample values of the block based on the dequantized quantized residual values and the predicted values.
[0009]
[0009] In another example, this disclosure describes a device for encoding video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in circuitry, the one or more processors generating a block of predictors by performing intra prediction for a block of video data using unfiltered samples from top or left block boundary samples; The method is configured to generate residual values based on original sample values and predicted values of the block, quantize the residual values, determine residual quantized samples based on the quantized residual values after quantizing the residual values, and signal the residual quantized samples.
[0010]
[0010] In another example, the present disclosure describes a device for decoding video data, the device comprising: means for determining residual quantization samples of a block of the video data based on syntax elements in a bitstream comprising an encoded representation of the video data; means for determining quantized residual values based on the residual quantization samples; means for dequantizing the quantized residual values after determining the quantized residual values; means for generating predicted values by performing intra prediction for the block using unfiltered samples from upper or left block boundary samples; and means for reconstructing original sample values of the block based on the dequantized quantized residual values and the predicted values.
[0011]
[0011] In another example, the present disclosure describes a device for encoding video data, the device comprising: means for generating a block of predicted values by performing intra prediction for a block of video data using unfiltered samples from upper or left block boundary samples; means for generating residual values based on the original sample values and the predicted values of the block; means for quantizing the residual values; means for determining residual quantized samples based on the quantized residual values after quantizing the residual values; and means for signaling the residual quantized samples.
[0012]
[0012] In another example, the present disclosure describes a computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to determine residual quantization samples of a block of video data based on syntax elements in a bitstream comprising an encoded representation of the video data; determine quantized residual values based on the residual quantization samples; after determining the quantized residual values, dequantize the quantized residual values; generate predicted values by performing intra prediction for the block using unfiltered samples from the top or left block boundary samples; and reconstruct original sample values of the block based on the dequantized quantized residual values and the predicted values.
[0013]
[0013] In another example, the present disclosure describes a computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to generate a block of predicted values by performing intra prediction for a block of video data using unfiltered samples from upper or left block boundary samples, generate residual values based on the original sample values of the block and the predicted values, quantize the residual values, determine residual quantized samples based on the quantized residual values after quantizing the residual values, and signal the residual quantized samples.
[0014] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]
[0015] [Figure 1]
[0015] FIG. 1 is a block diagram illustrating an example video encoding and decoding system in which the techniques of this disclosure may be implemented. [Figure 2A]
[0016] 1 is a conceptual diagram illustrating an exemplary quad-tree binary tree (QTBT) structure. [Figure 2B]A conceptual diagram showing the corresponding coding tree unit (CTU). [Figure 3]
[0017] 1 is a block diagram illustrating an example video encoder that may implement the techniques of this disclosure. [Figure 4]
[0018] 1 is a block diagram illustrating an example video decoder that may implement the techniques of this disclosure. [Figure 5]
[0019] 1 is a flowchart illustrating a video encoding process. [Figure 6]
[0020] 1 is a flowchart illustrating a video decoding process. [Figure 7]
[0021] 1 is a flowchart illustrating an example video encoding process including coefficient-domain block differential pulse code modulation (BDPCM), in accordance with one or more techniques of this disclosure. [Figure 8]
[0022] 1 is a flowchart illustrating an example video decoding process involving coefficient-domain BDPCM, in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0016]
[0023] In cases where a current block of video data is encoded using intra prediction, it may be advantageous to skip applying a transform that converts the residual data of the current block from the sample domain to the frequency domain. Accordingly, the video encoder may directly quantize the residual data for the block. The video encoder may then include, in a bitstream, coded syntax elements that represent the quantized residual data.
[0017]
[0024] Block-based delta pulse code modulation (BDPCM) may improve the coding efficiency of residual data of a current block. A video encoder may apply BDPCM in vertical mode or horizontal mode. When a video encoder applies BDPCM in vertical mode, the video encoder generates predicted residual samples for the first row of the current block by subtracting original sample values in the first row of the current block from corresponding reconstructed samples in the bottom row of the neighboring block above the current block. The video encoder may then quantize and dequantize the predicted residual samples for the first row of the current block. The video encoder then reconstructs the first row of the current block based on the dequantized residual values for the first row of the current block and the reconstructed samples in the bottom row of the neighboring block above the current block. The video encoder may generate each subsequent row of predicted residual samples of the current block by subtracting the original sample values of the row from the reconstructed samples of the row above in the current block. The video encoder may then perform the quantization, dequantization, and reconstruction processes as described above. The video encoder repeats this process for each row of the current block. For each row of the current block, the video encoder includes in the bitstream an encoded syntax element that represents the quantized residual value of the row. In vertical mode, the video encoder performs a similar process working from left to right along the columns of the current block.
[0018]
[0025] A video decoder receives coded syntax elements that represent quantized residual values of a current block. When the current block is coded using BDPCM and vertical mode is used, the video decoder dequantizes the quantized residual values of the top row of the current block. The video decoder then reconstructs the values of the top row of the current block by adding the dequantized residual values of the top row of the current block to the corresponding reconstructed samples of the bottom row of one or more blocks that are upper neighbors of the current block. For each respective subsequent row of the current block, the video decoder dequantizes the quantized residual values for that respective row of the current block and then adds the dequantized residual values of the row to the reconstructed samples of the row above that row of the current block, thereby reconstructing the samples of that respective row of the current block. When the current block is coded using BDPCM and horizontal mode is used, the video decoder performs a similar process working from left to right along the columns of the current block.
[0019]
[0026] There may be one or more problems with the BDPCM process described above. For example, in the BDPCM process described above (i.e., the pixel-domain BDPCM process), the video encoder subtracts samples in a current row or column from reconstructed samples in an adjacent row or column, and the video decoder adds samples in a current row or column from reconstructed samples in an adjacent row or column. It should be appreciated that in this disclosure, the use of reconstructed samples may slow down and complicate the encoding and decoding process because the video encoder and video decoder may need to wait for inverse quantization and reconstruction to occur before being able to determine a predictor for the current row or column of the current block. Therefore, according to the techniques of this disclosure, the video encoder and video decoder may use quantized residual values instead of reconstructed samples to determine predicted residual values.
[0020]
[0027] For example, in one example according to the techniques of this disclosure, a video encoder may generate a block of predictive values by performing intra prediction for a block of video data using samples (e.g., unfiltered samples) from above or left block boundary samples. In this example, the video encoder may generate residual values based on the original sample values and the predicted values of the block. Further, the video encoder may quantize the residual values. After quantizing the residual values, the video encoder may determine residual quantization samples based on the quantized residual values. The video encoder may signal the residual quantization samples.
[0021]
[0028] In another example according to techniques of this disclosure, a video decoder may determine residual quantization samples for a block of video data based on syntax elements in a bitstream comprising an encoded representation of the video data. Further, the video decoder may determine quantized residual values based on the residual quantization samples. After determining the quantized residual values, the video decoder may dequantize the quantized residual values. The video decoder may also generate predicted values by performing intra prediction for the block using unfiltered samples from the top or left block boundary samples. The video decoder may reconstruct original sample values of the block based on the dequantized quantized residual values and the predicted values.
[0022]
[0029] 1 is a block diagram illustrating an example video encoding and decoding system 100 that may implement techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) video data. Generally, video data includes any data for processing video. Thus, video data may include raw uncoded video, coded video, decoded (e.g., reconstructed) video, and video metadata, such as signaling data.
[0023]
[0030] 1, system 100 includes a source device 102 that, in this example, provides encoded video data to be decoded and displayed by a destination device 116. In particular, source device 102 provides the video data to destination device 116 via a computer-readable medium 110. Source device 102 and destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, computers, mobile devices, broadcast receiver devices, digital media players, video gaming consoles, video streaming devices, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and therefore may be referred to as wireless communication devices.
[0024]
[0031] In the example of FIG. 1 , source device 102 includes a video source 104, memory 106, a video encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a video decoder 300, memory 120, and a display device 118. According to this disclosure, video encoder 200 of source device 102 and video decoder 300 of destination device 116 may be configured to apply techniques for coefficient level prediction. Thus, source device 102 represents an example of a video encoding device, and destination device 116 represents an example of a video decoding device. In other examples, the source and destination devices may include other components or arrangements. For example, source device 102 may receive video data from an external video source, such as an external camera. Similarly, destination device 116 may interface with an external display device rather than including a built-in display device.
[0025]
[0032] The system 100 shown in FIG. 1 is merely an example. In general, any digital video encoding and / or decoding device may implement techniques for coefficient level prediction. Source device 102 and destination device 116 are merely examples of coding devices, such that source device 102 generates coded video data for transmission to destination device 116. This disclosure refers to a “coding” device as a device that performs coding (encoding and / or decoding) of data. Accordingly, video encoder 200 and video decoder 300 represent examples of coding devices, particularly video encoders and video decoders, respectively. In some examples, source device 102 and destination device 116 may operate substantially symmetrically, such that each of source device 102 and destination device 116 includes video encoding and decoding components. Thus, system 100 may support one-way or two-way video transmission between source device 102 and destination device 116, e.g., for video streaming, video playback, video broadcasting, or video telephony.
[0026]
[0033] Generally, video source 104 represents a source of video data (i.e., raw, uncoded video data) and provides a continuous series of pictures (also called “frames”) of the video data to video encoder 200, which encodes the data for the pictures. Video source 104 of source device 102 may include a video capture device, such as a video camera, a video archive containing previously captured raw video, and / or a video feed interface for receiving video from a video content provider. As a further alternative, video source 104 may generate computer-graphics-based data as source video, or a combination of live video, archived video, and computer-generated video. In each case, video encoder 200 encodes the captured video, pre-captured video, or computer-generated video data. Video encoder 200 may rearrange the pictures from the order in which they were received (sometimes called “display order”) to a coding order for coding. Video encoder 200 may generate a bitstream including the encoded video data. Source device 102 may then output the encoded video data via output interface 108 onto computer-readable medium 110 for receipt and / or retrieval by, for example, input interface 122 of destination device 116 .
[0027]
[0034] Memory 106 of source device 102 and memory 120 of destination device 116 represent general-purpose memory. In some examples, memory 106, 120 may store raw video data, e.g., raw video from video source 104 and raw decoded video data from video decoder 300. Additionally or alternatively, memory 106, 120 may store software instructions executable by, e.g., video encoder 200 and video decoder 300, respectively. While memory 106 and memory 120 are shown separate from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memory 106, 120 may store encoded video data, e.g., output from video encoder 200 and input to video decoder 300. In some examples, portions of the memory 106, 120 may be allocated as one or more video buffers, for example, to store raw decoded and / or encoded video data.
[0028]
[0035] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded video data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium for enabling the source device 102 to transmit encoded video data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 may modulate a transmission signal including the encoded video data, and the input interface 122 may demodulate a received transmission signal in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as the radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may 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 may include routers, switches, base stations, or any other equipment that may be useful for facilitating communication from the source device 102 to the destination device 116.
[0029]
[0036] In some examples, computer-readable medium 110 may include storage device 112. Source device 102 may output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray® disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.
[0030]
[0037] In some examples, computer-readable medium 110 may include a file server 114 or another intermediate storage device that may store encoded video data generated by source device 102. Source device 102 may output encoded video data to file server 114 or another intermediate storage device that may store encoded video generated by source device 102. Destination device 116 may access the stored video data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded video data and transmitting the encoded video data to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network-attached storage (NAS) device. Destination device 116 may access the encoded video data from file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi® connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both, that is suitable for accessing the encoded video data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.
[0031]
[0038] Output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples in which output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 may be configured to transfer data, such as encoded video data, according to a cellular communication standard, such as 4G, 4G-LTE (Long Term Evolution), LTE-Advanced, 5G, etc. In some examples in which output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 may be configured to transfer data, such as encoded video data, according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee), the Bluetooth standard, etc. In some examples, source device 102 and / or destination device 116 may include respective system-on-chip (SoC) devices. For example, the source device 102 may include an SoC device for performing functions attributed to the video encoder 200 and / or the output interface 108, and the destination device 116 may include an SoC device for performing functions attributed to the video decoder 300 and / or the input interface 122.
[0032]
[0039] The techniques of this disclosure may be applied to video coding supporting any of a variety of multimedia applications, such as over-the-air television broadcast, cable television transmission, satellite television transmission, Internet streaming video transmission such as Dynamic Adaptive Streaming over HTTP (DASH), digital video encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications.
[0033]
[0040] The input interface 122 of the destination device 116 receives the encoded video bitstream from the computer-readable medium 110 (e.g., a communications medium, a storage device 112, a file server 114, etc.). The encoded video bitstream may include signaling information defined by the video encoder 200 that is also used by the video decoder 300, such as syntax elements having values that describe the characteristics and / or processing of video blocks or other coded units (e.g., slices, pictures, groups of pictures, sequences, etc.). The display device 118 displays decoded pictures of the decoded video data to a user. The display device 118 may represent any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.
[0034]
[0041] 1, in some examples, video encoder 200 and video decoder 300 may each be integrated with an audio encoder and / or decoder and may include an appropriate MUX-DEMUX unit or other hardware and / or software to process multiplexed streams that include both audio and video in a common data stream. Where applicable, the MUX-DEMUX unit may conform to the ITU H.223 multiplexer protocol or other protocols, such as the User Datagram Protocol (UDP).
[0035]
[0042] The video encoder 200 and the video decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuits, or any combination thereof, 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, etc. When the techniques are implemented partially in software, a device may store software instructions on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to implement the techniques of this disclosure. The video encoder 200 and the video decoder 300 may each be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device. The device including the video encoder 200 and / or the video decoder 300 may comprise an integrated circuit, a microprocessor, and / or a wireless communication device such as a cellular phone.
[0036]
[0043] Video encoder 200 and video decoder 300 may operate according to a video coding standard, such as ITU-T H.265, also known as High Efficiency Video Coding (HEVC), or extensions thereof, such as multiview and / or scalable video coding extensions. Alternatively, video encoder 200 and video decoder 300 may operate according to other proprietary or industry standards, such as ITU-T H.266, also known as the Joint Exploration Test Model (JEM), or Versatile Video Coding (VVC). A recent draft of the VVC standard is set forth in Bross et al., "Versatile Video Coding (Draft 4)," Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 13th Meeting: Marrakech, MA, January 9-18, 2019, JVET-M1001-v5 (hereinafter "VVC Draft 4"). However, the techniques of this disclosure are not limited to any particular coding standard.
[0037]
[0044] Generally, the video encoder 200 and the video decoder 300 may 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 in the encoding and / or decoding process). For example, a block may include a two-dimensional matrix of luminance and / or chrominance data samples. Generally, the video encoder 200 and the video decoder 300 may code video data represented in YUV (e.g., Y, Cb, Cr) format. That is, rather than coding red, green, and blue (RGB) data for a picture sample, the video encoder 200 and the video decoder 300 may code a luminance component and a chrominance component, where the chrominance component may include both red and blue hues of chrominance components. In some examples, the video encoder 200 converts received RGB-formatted data to a YUV representation prior to encoding, and the video decoder 300 converts the YUV representation to an RGB format. Alternatively, pre-processing and post-processing units (not shown) may perform these conversions.
[0038]
[0045] This disclosure may generally refer to coding (e.g., encoding and decoding) a picture to include the process of encoding or decoding data of a picture. Similarly, this disclosure may refer to coding of a block of a picture to include the process of encoding or decoding data of the block, e.g., predictive and / or residual coding. A coded video bitstream generally includes a series of values of syntax elements that represent coding decisions (e.g., coding modes) and the partitioning of a picture into blocks. Thus, references to coding a picture or a block should be understood generally as coding the values of the syntax elements forming the picture or block.
[0039]
[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 coding tree units (CTUs) into CUs according to a quadtree structure. That is, the video coder partitions CTUs and CUs into four equal, non-overlapping rectangles, and each node of the quadtree has either zero or four child nodes. A node without child nodes may be called a "leaf node," and a CU of such a leaf node may include one or more PUs and / or one or more TUs. The video coder may further partition PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents the partitioning of TUs. In HEVC, a PU represents inter-predicted data, while a TU represents residual data. An intra-predicted CU includes intra-prediction information, such as an intra-mode indication.
[0040]
[0047] As another example, video encoder 200 and video decoder 300 may be configured to operate according to JEM or VVC. According to JEM or VVC, a video coder (such as video encoder 200) partitions a picture into multiple coding tree units (CTUs). Video encoder 200 may partition the CTUs according to a tree structure, such as a quad-tree binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure eliminates the concept of multiple partition types, such as the separation between 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. The leaf nodes of the binary tree correspond to coding units (CUs).
[0041]
[0048] In the MTT partitioning structure, blocks may be partitioned using quad tree (QT) partitioning, binary tree (BT) partitioning, and one or more types of triple tree (TT) partitioning. Triple tree partitioning is a partitioning in which a block is divided into three sub-blocks. In some examples, triple tree partitioning divides a block into three sub-blocks without dividing the original block through the center. The partition types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.
[0042]
[0049] In some examples, the video encoder 200 and the video decoder 300 may use a single QTBT or MTT structure to represent each of the luminance and chrominance components, and in other examples, the video encoder 200 and the video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luminance component and another QTBT / MTT structure for both chrominance components (or two QTBT / MTT structures for each chrominance component).
[0043]
[0050] Video encoder 200 and video decoder 300 may be configured to use quadtree partitioning, QTBT partitioning, MTT partitioning, or other partition structures according to HEVC. For illustrative purposes, 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 may also be applied to video coders configured to use quadtree partitioning, or other types of partitioning as well.
[0044]
[0051] In this disclosure, "NxN" and "N by N" may be used 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. Generally, a 16x16 CU has 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Similarly, an NxN CU generally has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. Samples in a CU may be arranged in rows and columns. Furthermore, a CU does not necessarily have to have the same number of samples in the horizontal direction as in the vertical direction. For example, a CU may comprise NxM samples, where M is not necessarily equal to N.
[0045]
[0052] The video encoder 200 encodes video data for a CU that represents prediction and / or residual information, as well as other information. The prediction information indicates how the CU should be predicted to form a predictive block for the CU. The residual information generally represents sample-by-sample differences between the samples of the CU before encoding and the predictive block.
[0046]
[0053] To predict a CU, the video encoder 200 may generally form a predictive block for the CU through inter-prediction or intra-prediction. Inter-prediction generally refers to predicting a CU from data of a previously coded picture, while intra-prediction generally refers to predicting a CU from previously coded data of the same picture. To perform inter-prediction, the video encoder 200 may generate a predictive block using one or more motion vectors. The video encoder 200 may generally perform motion search to identify a reference block that closely matches the CU, e.g., with respect to the difference between the CU and the reference block. The video encoder 200 may calculate a difference metric using a sum of absolute differences (SAD), a sum of squared differences (SSD), a mean absolute difference (MAD), a mean squared difference (MSD), or other such difference calculation to determine whether the reference block closely matches the current CU. In some examples, the video encoder 200 may predict the current CU using unidirectional prediction or bidirectional prediction.
[0047]
[0054] Some instances of JEM and VVC also provide an affine motion compensation mode, which may be considered an inter-prediction mode. In an affine motion compensation mode, video encoder 200 may determine two or more motion vectors that represent non-translational motion, such as zooming in or out, rotation, perspective motion, or other irregular motion types.
[0048]
[0055] To perform intra prediction, video encoder 200 may select an intra prediction mode for generating a predictive block. Some examples of JEM and VVC provide 67 intra prediction modes, including various directional modes, as well as planar and DC modes. Generally, video encoder 200 selects an intra prediction mode that describes samples neighboring a current block (e.g., a block of a CU) from which samples of the current block should be predicted. Accordingly, such neighboring samples may be referred to as predictors. Such samples may generally be above, above and to the left of, or to the left of the current block in the same picture as the current block, assuming that video encoder 200 codes CTUs and CUs in raster scan order (left to right, top to bottom).
[0049]
[0056] Directional intra prediction modes correspond to different directions, including the vertical and horizontal directions. To generate a predictive block for a block using a vertical intra prediction mode, a video coder (e.g., video encoder 200 or video decoder 300) may determine, for each sample of the block, a predicted value of the sample as the sample in the predictor immediately above the sample. To generate a predictive block for a block using horizontal intra prediction, a video coder (e.g., video encoder 200 or video decoder 300) may determine, for each sample of the block, a predicted value of the sample as the sample in the predictor immediately to the left of the sample.
[0050]
[0057] In some examples, a video coder may apply one or more filters to a predictor before using the predictor for intra-prediction of a block. For example, the video coder may apply a smoothing filter to the predictor. The application of such a filter may improve coding efficiency in some situations. However, in other situations, it may be advantageous not to apply such a filter. Thus, in situations where a filter is not applied to a predictor used in intra-prediction of a block, samples of the predictor may be referred to in this disclosure as unfiltered samples.
[0051]
[0058] The video encoder 200 encodes data representing a prediction mode for the current block. For example, in an inter prediction mode, the video encoder 200 may encode data representing which of various available inter prediction modes is used, as well as motion information of the corresponding mode. For example, in unidirectional or bidirectional inter prediction, the video encoder 200 may encode motion vectors using advanced motion vector prediction (AMVP) or merge mode. The video encoder 200 may use a similar mode to encode motion vectors for an affine motion compensation mode.
[0052]
[0059] Following prediction, such as intra-prediction or inter-prediction, of a block, the video encoder 200 may calculate residual data for the block. The residual data, such as a residual block, represents sample-by-sample differences between the block and a predictive block for the block formed using a corresponding prediction mode. The video encoder 200 may apply one or more transforms to the residual block to generate transform data in a transform domain rather than the sample domain. For example, the video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data. Additionally, the video encoder 200 may apply a secondary transform following a first transform, such as a mode-dependent no-separable secondary transform (MDNSST), a signal-dependent transform, or a Karhunen-Loeve transform (KLT).
[0053]
[0060] The video encoder 200 generates transform coefficients following the application of one or more transforms. In some examples, the video encoder 200 may skip the application of a transform. In such cases, the residual data may be processed in a manner similar to the transform coefficients generated by the application of the transform. For ease of explanation, steps performed in the video encoder 200 after the point at which a transform is applied may be referred to as the transform domain, regardless of whether the video encoder 200 actually applied the transform. For example, when the video encoder 200 applied a BDPCM, the video encoder 200 does not apply a transform. Similarly, steps performed in the video decoder 300 before the point at which the inverse of a transform is applied may be referred to as the transform domain, regardless of whether the transform was actually applied. For example, when the video decoder 300 applied a BDPCM, the video decoder 300 does not apply an inverse transform.
[0054]
[0061] As described above, following any transformation to generate transform coefficients, the video encoder 200 may 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, the video encoder 200 may reduce the bit depth associated with some or all of the transform coefficients. For example, the video encoder 200 may truncate an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder 200 may perform a bitwise right-shift of the value to be quantized.
[0055]
[0062] Following quantization, the video encoder 200 may scan the transform coefficients to generate a one-dimensional vector from a two-dimensional matrix including the quantized transform coefficients. The scan may be designed to place transform coefficients of higher energy (and therefore lower frequency) at the front of the vector and transform coefficients of lower energy (and therefore higher frequency) at the back of the vector. In some examples, the video encoder 200 may utilize a predefined scan order to scan the quantized transform coefficients to generate a serialized vector and then entropy encode the quantized transform coefficients of the vector. In other examples, the video encoder 200 may perform adaptive scanning. After scanning the quantized transform coefficients to form a one-dimensional vector, the video encoder 200 may entropy encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder 200 may also entropy encode values of syntax elements describing metadata associated with the encoded video data for use by the video decoder 300 in decoding the video data.
[0056]
[0063] To implement CABAC, video encoder 200 may assign a context in a context model to a symbol to be transmitted. The context may relate, for example, to whether neighboring values of the symbol are zero values. A probability determination may be based on the context assigned to the symbol.
[0057]
[0064] Video encoder 200 may further generate syntax data, such as block-based syntax data, picture-based syntax data, and sequence-based syntax data, for video decoder 300, e.g., in a picture header, a block header, a slice header, or other syntax data, such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). Video decoder 300 may similarly decode such syntax data to determine how to decode corresponding video data.
[0058]
[0065] In this manner, video encoder 200 may generate a bitstream including syntax elements that describe coded video data, e.g., partitions of a picture into blocks (e.g., CUs) and predictive and / or residual information for the blocks. Finally, video decoder 300 may receive the bitstream and decode the coded video data.
[0059]
[0066] Generally, video decoder 300 performs an inverse process to that performed by video encoder 200 to decode encoded video data of a bitstream. For example, video decoder 300 may decode values of syntax elements of a bitstream using CABAC in a manner that is reverse to, but substantially similar to, the CABAC encoding process of video encoder 200. The syntax elements may define partition information for partitioning a picture into CTUs and the partitioning of each CTU according to a corresponding partition structure, such as a QTBT structure, to define CUs of the CTU. The syntax elements may further define prediction and residual information for blocks of video data (e.g., CUs).
[0060]
[0067] The residual information may be represented, for example, by quantized transform coefficients. The video decoder 300 may dequantize and inverse transform the quantized transform coefficients of the block to reconstruct a residual block of the block. The video decoder 300 uses the signaled prediction mode (intra- or inter-prediction) and related prediction information (e.g., motion information for inter-prediction) to form a predictive block of the block. The video decoder 300 may then combine the predictive block and the residual block (sample by sample) to reconstruct the original block. The video decoder 300 may perform additional processing, such as performing a deblocking process to reduce visual artifacts along block boundaries.
[0061]
[0068] Abdoli et al., "CE8: BDPCM with horizontal / vertical predictor and independently decodable areas (test 8.3.1b)," Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 13th Meeting, Marrakech, MA, January 2019, Document No. JVET-M0057 (hereafter "JVET-M0057"), describes a block DPCM mode that utilizes horizontal or vertical prediction of intra samples combined with differential pulse code modulation (DPCM) coding and transform skip coding. On the encoder side, vertical prediction involves performing vertical intra prediction of the first horizontal line of a block using unfiltered predictor samples using the bottom-most row pixels of the top neighboring block. The predicted residual is quantized, dequantized, and added to the predictor to form a predictor for the next line's prediction. Video encoder 200 continues this until the end of the block. For horizontal prediction, a similar scheme is applied, except that the initial predictor is from the last column of the left-neighboring block; the first column of the block to be coded is predicted, and the residual is quantized, dequantized, and added to the predictor to form the predictor for the next column. Additional details are described in JVET-M0057. The direction of BDPCM prediction (horizontal / vertical) may be signaled at the CU level.
[0062]
[0069] Instead of performing prediction in the pixel domain, using reconstructed samples from above or from the left, as described in JVET-M0057, this disclosure describes quantization level domain prediction in the same direction, which can be described as follows:
[0063]
[0070] Consider a block of size M (rows) × N (columns). i,jLet (0≦i≦M-1, 0≦j≦N-1) be the prediction residual after performing intra prediction horizontally (by copying the left neighbor pixel value across the prediction block line by line) or vertically (by copying the top neighbor line for each line within the prediction block) using unfiltered samples from the top or left block boundary samples. i,j )(0≦i≦M-1, 0≦j≦N-1) is the residual r i,j Let σ denote the quantized version of σ, where the residual is the difference between the original block and the predicted block value. Video encoder 200 may apply BDPCM to the quantized residual samples as follows: When vertical BDPCM is signaled, video encoder 200 may apply the element
[0064]
number
[0065] A modified M×N array with
[0066]
number
[0067] can be obtained.
[0068]
number
[0069]
[0071] For horizontal prediction, a similar rule applies, and video encoder 200 may obtain residual quantized samples according to equation (2), as follows:
[0070]
number
[0071]
[0072] The video encoder 200 transmits the residual quantized samples to the video decoder 300.
[0072]
number
[0073] can be sent.
[0074] In the video decoder 300, the above calculation is i,j ), (0≦i≦M-1, 0≦j≦N-1). In the case of vertical prediction, this would result in equation (3):
[0075]
number
[0076] In the horizontal case, the following equation (4) would be obtained:
[0077]
number
[0078]
[0075] The video decoder 300 applies the dequantized quantized residual Q to the original prediction values to generate reconstructed sample values. -1 (Q(r i,j )) can be added.
[0079] The techniques described in the previous section may require compensation of coded transform coefficients with their predictors to derive the coefficient levels to be dequantized. This may be done after the entire block has been parsed. In other words, after the video decoder 300 parses the entire block, the video decoder 300 may compensate the coded transform coefficients with their predictors. If it is necessary to perform the compensation operation during parsing (i.e., on the fly), and after the parsed
[0080]
number
[0081] In addition to the value Q(r i,j If a separate buffer is not used for storing coefficient group (CG) values, then dependency of context derivation on (i.e., across) neighboring coefficient groups (CGs) may be disabled for coefficient coding in transform skip mode for various syntax elements representing coefficient values. A CG is an M×N group of non-overlapping sets of transform coefficients within a coefficient block. If part of a context template depends on values across its own CG, those values may be marked as unavailable, and the context will be derived as such. A context template is a spatial neighborhood from which a video coder gathers information to determine a coding context. For example, in an example where video data uses the sum of absolute values of transform coefficients to determine a coding context, the context template defines the locations of such transform coefficients; for example, the context template may define top-neighbor samples and left-neighbor samples as samples to use to determine the coding context. This method allows for overwriting parsed coefficient values with their compensation (predicting and adding the parsed coefficients) values to be dequantized in the decoder. Therefore, it may be unnecessary for the video decoder 300 to use a separate buffer to store the compensation coefficient values. In some examples, the parsed transform coefficients may be overwritten with their compensation values, and the context for future transform coefficients uses the overwritten values.
[0082] This disclosure may generally refer to “signaling” certain information, such as a syntax element. The term “signaling” may generally refer to communicating the value of a syntax element and / or other data used to decode encoded video data. That is, video encoder 200 may signal the value of a syntax element in a bitstream. Generally, signaling refers to generating a value in the bitstream. As described above, source device 102 may transport the bitstream to destination device 116 in substantially real time, or may transport the bitstream to destination device 116 in non-real time, such as may be done when storing syntax elements to storage device 112 for later retrieval by destination device 116.
[0083] 2A and 2B are conceptual diagrams illustrating an exemplary quad tree binary tree (QTBT) structure 130 and a corresponding coding tree unit (CTU) 132. Solid lines represent quad tree splitting, and dotted lines represent binary tree splitting. At each split (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which splitting type (i.e., horizontal or vertical) is used, where, in this example, 0 indicates horizontal splitting and 1 indicates vertical splitting. In quad tree splitting, the quad tree node splits a block horizontally and vertically into four sub-blocks of equal size, so there is no need to indicate the splitting type. Thus, video encoder 200 may encode, and video decoder 300 may decode, syntax elements (e.g., solid lines) (e.g., partition information) for the region tree level (e.g., first level) of QTBT structure 130 and syntax elements (e.g., dashed lines) (e.g., partition information) for the prediction tree level (e.g., second level) of QTBT structure 130. Video encoder 200 may encode, and video decoder 300 may decode, video data, such as prediction and transform data, for CUs represented by terminal leaf nodes of QTBT structure 130.
[0084] 2B may be associated with parameters that define the sizes of blocks corresponding to nodes of the QTBT structure 130 at the first and second levels. These parameters may include a CTU size (representing the size of the CTU 132 in the sample), a minimum quadtree size (MinQTSize, representing the minimum allowable quadtree leaf node size), a maximum binary tree size (MaxBTSize, representing the maximum allowable binary tree root node size), a maximum binary tree depth (MaxBTDepth, representing the maximum allowable binary tree depth), and a minimum binary tree size (MinBTSize, representing the minimum allowable binary tree leaf node size).
[0085]
[0080] The root node of the QTBT structure corresponding to a CTU may have four child nodes at the first level of the QTBT structure, each of which may be partitioned according to quadtree partitioning, i.e., a node at the first level may be a leaf node (without child nodes) or have four child nodes. The example QTBT structure 130 represents a node as including a parent node and child nodes with solid lines for branches. If first-level nodes are not larger than the maximum allowable binary tree root node size (MaxBTSize), they may be further partitioned by their respective binary trees. The binary tree splitting of a node may be repeated until the node resulting from the split reaches the minimum allowable binary tree leaf node size (MinBTSize) or the maximum allowable binary tree depth (MaxBTDepth). The example QTBT structure 130 represents a node as having dashed lines for branches. Binary tree leaf nodes are called coding units (CUs), and CUs are used for prediction (e.g., intra-picture or inter-picture prediction) as well as transforms without any further partitioning. As discussed above, CUs may also be referred to as "video blocks" or "blocks."
[0086]
[0081] In one example of a QTBT partitioning structure, the CTU size is set as 128x128 (luma samples and two corresponding 64x64 chroma samples), MinQTSize is set as 16x16, MaxBTSize is set as 64x64, MinBTSize (for both width and height) is set as 4, and MaxBTDepth is set as 4. Quad-tree partitioning is first applied to the CTU to generate quad-tree leaf nodes. The quad-tree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., CTU size). If the quad-tree leaf node is 128x128, it is not further split by the binary tree because its size exceeds MaxBTSize (i.e., 64x64 in this example). Otherwise, the quad-tree leaf node is further partitioned by the binary tree. Therefore, the quadtree leaf node is also the root node of the binary tree and has the binary tree depth as 0. When the binary tree depth reaches MaxBTDepth (4 in this example), no further splitting is allowed. When a binary tree node has a width equal to MinBTSize (4 in this example), it implies that no further vertical splitting is allowed. Similarly, a binary tree node with a height equal to MinBTSize implies that no further horizontal splitting is allowed for that binary tree node. As described above, the leaf node of the binary tree is called a CU and is further processed according to the prediction and transformation without further partitioning.
[0087]
[0082] Figure 3 is a block diagram illustrating an example video encoder 200 that may implement the techniques of this disclosure. Figure 3 is provided for purposes of explanation and should not be considered limiting of the techniques broadly illustrated and described in this disclosure. For purposes of explanation, this disclosure describes video encoder 200 in the context of video coding standards such as the HEVC video coding standard and the developing H.266 (VVC) video coding standard. However, the techniques of this disclosure are not limited to these video coding standards and are applicable to video encoding and decoding generally.
[0088] 3, 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 decoded picture buffer (DPB) 218, and an entropy coding 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 coding unit 220 may be implemented in one or more processors or processing circuits. Moreover, video encoder 200 may include additional or alternative processors or processing circuitry for performing these and other functions.
[0089]
[0084] Video data memory 230 may store video data to be encoded by components of video encoder 200. Video encoder 200 may receive video data stored in video data memory 230, for example, from video source 104 (FIG. 1). DPB 218 may serve as a reference picture memory that stores reference video data for use in predicting subsequent video data by video encoder 200. Video data memory 230 and DPB 218 may 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. Video data memory 230 and DPB 218 may be provided by the same memory device or separate memory devices. In various examples, video data memory 230 may be on-chip with other components of video encoder 200, as shown, or off-chip relative to those components.
[0090] In this disclosure, references to video data memory 230 should not be construed as limited to memory internal to video encoder 200 unless specifically so described, nor should they be construed as limited to memory external to video encoder 200 unless specifically so described. Instead, references to video data memory 230 should be understood as a reference memory that stores video data that video encoder 200 receives for encoding (e.g., video data of a current block to be encoded). Memory 106 of FIG. 1 may also provide temporary storage of outputs from various units of video encoder 200.
[0091] The various units in FIG. 3 are shown to aid in understanding the operations performed by video encoder 200. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific function and is pre-configured as to the operations that may be performed. A programmable circuit refers to a circuit that is programmed to perform various tasks and to provide flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive or output parameters), but the types of operations that the fixed-function circuit performs are generally immutable. In some examples, one or more of the units may be separate circuit blocks (fixed function or programmable), and in some examples, one or more units may be integrated circuits.
[0092]
[0087] Video encoder 200 may include an arithmetic logic unit (ALU), a basic functional unit (EFU), a programmable core formed from digital circuits, analog circuits, and / or programmable circuits. In examples in which the operations of video encoder 200 are implemented using software executed by programmable circuits, memory 106 (FIG. 1) may store object code for the software that video encoder 200 receives and executes, or another memory (not shown) within video encoder 200 may store such instructions.
[0093]
[0088] The video data memory 230 is configured to store received video data. The video encoder 200 may retrieve pictures of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data memory 230 may be raw video data to be encoded.
[0094] The mode select unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra prediction unit 226. The mode select unit 202 may include additional functional units for performing video prediction according to other prediction modes. By way of example, the mode select unit 202 may include a palette unit, an intra block copy unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, etc.
[0095]
[0090] The mode selection unit 202 generally coordinates multiple encoding passes to test combinations of encoding parameters and the resulting rate-distortion values for such combinations. The encoding parameters may include partitioning of the CTUs into CUs, prediction modes for the CUs, transform types for residual data of the CUs, quantization parameters for residual data of the CUs, etc. The mode selection unit 202 may ultimately select a combination of encoding parameters that has a rate-distortion value that is better than the other tested combinations.
[0096] Video encoder 200 may partition a picture retrieved from video data memory 230 into a series of CTUs and encapsulate one or more CTUs within a slice. Mode select unit 202 may partition the CTUs of the picture according to a tree structure, such as the QTBT structure or quadtree structure of HEVC described above. As described above, video encoder 200 may form one or more CUs from partitioning the CTUs according to the tree structure. Such a CU may also be generally referred to as a “video block” or “block.”
[0097] Generally, the mode selection unit 202 also controls its components (e.g., the motion estimation unit 222, the motion compensation unit 224, and the intra prediction unit 226) to generate a prediction block for a current block (e.g., the current CU, or in HEVC, the overlapping portion of the PU and TU). For inter prediction of the current block, the motion estimation unit 222 may perform motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in the DPB 218). In particular, the motion estimation unit 222 may calculate a value representing how similar a potential reference block is to the current block according to, for example, the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared difference (MSD), etc. The motion estimation unit 222 may generally perform these calculations using sample-by-sample differences between the current block and the reference block under consideration. Motion estimation unit 222 may identify the reference block with the lowest value resulting from these calculations, which indicates the reference block that most closely matches the current block.
[0098]
[0093] The motion estimation unit 222 may form one or more motion vectors (MVs) that define the position of a reference block in a reference picture relative to the position of a current block in the current picture. The motion estimation unit 222 may then provide the motion vectors to the motion compensation unit 224. For example, in unidirectional inter prediction, the motion estimation unit 222 may provide a single motion vector, while in bidirectional inter prediction, the motion estimation unit 222 may provide two motion vectors. The motion compensation unit 224 may then generate a predictive block using the motion vectors. For example, the motion compensation unit 224 may use the motion vectors to retrieve data of the reference block. As another example, if the motion vectors have sub-sample precision, the motion compensation unit 224 may interpolate values for the predictive block according to one or more interpolation filters. Furthermore, in the case of bidirectional inter prediction, the motion compensation unit 224 may retrieve data for the two reference blocks identified by the respective motion vectors and combine the retrieved data, for example, through sample-wise averaging or weighted averaging.
[0099] As another example, for intra prediction, or intra-predictive coding, intra prediction unit 226 may generate a predictive block from samples neighboring a current block. For example, in a directional mode, intra prediction unit 226 may generally mathematically combine the values of neighboring samples and populate these calculated values in a specified direction across the current block to generate a predictive block. As another example, in a DC mode, intra prediction unit 226 may calculate the average of neighboring samples for the current block and generate a predictive block to include this resulting average for each sample of the predictive block.
[0100]
[0095] The mode select unit 202 provides the prediction block to the residual generation unit 204. The residual generation unit 204 receives a raw, uncoded version of the current block from the video data memory 230 and receives the prediction block from the mode select unit 202. The residual generation unit 204 calculates sample-by-sample differences between the current block and the prediction block. The resulting sample-by-sample differences define a residual block for the current block. In some examples, the residual generation unit 204 may also determine differences 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 may be formed using one or more subtractor circuits that perform binary subtraction.
[0101] In examples in which the mode select unit 202 partitions CUs into PUs, each PU may be associated with a luma prediction unit and a corresponding chroma prediction unit. The video encoder 200 and the video decoder 300 may support PUs having various sizes. As described above, the size of a CU may refer to the size of the luma coding block of the CU, and the size of a PU may refer to the size of the luma prediction unit of the PU. Assuming that the size of a particular CU is 2N×2N, the video encoder 200 may support a PU size of 2N×2N or N×N for intra prediction and a symmetric PU size of 2N×2N, 2N×N, N×2N, N×N, or the like for inter prediction. The video encoder 200 and the video decoder 300 may also support asymmetric partitioning of PU sizes of 2N×nU, 2N×nD, nL×2N, and nR×2N for inter prediction.
[0102] In examples where the mode select unit does not further partition CUs into PUs, each CU may be associated with a luma coding block and a corresponding chroma coding block. As described above, the size of a CU may refer to the size of the luma coding block of the CU. Video encoder 200 and video decoder 300 may support CU sizes of 2N×2N, 2N×N, or N×2N.
[0103] In other video coding techniques, such as intra block copy mode coding, affine mode coding, and linear model (LM) mode coding, to name a few, mode select unit 202 generates a predictive block for the current block being coded via a respective unit associated with the coding technique. In some examples, such as palette mode coding, mode select unit 202 may not generate a predictive block, but instead generate syntax elements that indicate how the block should be reconstructed based on a selected palette. In such modes, mode select unit 202 may provide these syntax elements to entropy coding unit 220 to be coded.
[0104]
[0099] As described above, the residual generation unit 204 receives video data for a current block and a corresponding predictive block. The residual generation unit 204 then generates a residual block for the current block. To generate the residual block, the residual generation unit 204 calculates sample-by-sample differences between the predictive block and the current block.
[0105]
[0100] 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"). Transform processing unit 206 may apply various transforms to the residual block to form the transform coefficient block. For example, transform processing unit 206 may apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, transform processing unit 206 may perform multiple transforms on the residual block, e.g., a linear transform and a quadratic transform such as a rotation transform. In some examples, transform processing unit 206 does not apply a transform to the residual block. For example, in examples where the block is coded using coefficient-domain BDPCM, transform processing unit 206 may skip applying a transform to the residual values generated by residual generation unit 204.
[0106] The quantization unit 208 may quantize the transform coefficients in the transform coefficient block to generate a quantized transform coefficient block. The quantization unit 208 may quantize the 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 select unit 202) may adjust the degree of quantization applied to the coefficient block associated with the current block by adjusting the QP value associated with the CU. Quantization may introduce loss of information, and therefore, the quantized transform coefficients may have lower precision than the original transform coefficients generated by the transform processing unit 206.
[0107] According to one or more techniques of this disclosure, the quantization unit 208 may use the coefficient domain BDPCM to determine the residual quantization sample based on the quantized residual value. For example, the quantization unit 208 may use equation (1) or (2) above to determine the residual quantization sample. The quantization unit 208 may determine whether the intra prediction unit 226 used a vertical intra prediction mode or a horizontal intra prediction mode to generate the predictive block that the residual generation unit 204 used to generate the residual value. If the intra prediction unit 226 used a vertical intra prediction mode (i.e., intra prediction that is vertical prediction), the quantization unit 208 may use equation (1). If the intra prediction unit 226 used a horizontal intra prediction mode (i.e., intra prediction that is horizontal prediction), the quantization unit 208 may use equation (2). For example, the quantization unit 208 may determine whether vertical prediction or horizontal prediction results in greater coding efficiency.
[0108]
[0103] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block to reconstruct a residual block from the transform coefficient block. According to one or more examples of this disclosure, if the block is coded using coefficient-domain BDPCM, the inverse quantization unit 210 may determine a quantized residual value based on the residual quantization samples, for example, by applying Equation (3) or Equation (4). More specifically, if the block is coded using a vertical intra prediction mode, the inverse quantization unit 210 may apply Equation (3). If the block is coded using a horizontal intra prediction mode, the inverse quantization unit 210 may apply Equation (4). After determining the quantized residual value, the inverse quantization unit 210 may inverse quantize the quantized residual value.
[0109] After inverse quantization unit 210 forms the transform coefficient block, inverse transform processing unit 212 may 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 212 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse transform, or another inverse transform to the coefficient block. In examples where the block is coded and used using coefficient-domain BDPCM, inverse transform processing unit 212 may skip applying the inverse transform.
[0110]
[0105] Reconstruction unit 214 may generate a reconstructed block that corresponds to the current block (potentially with some distortion) based on the reconstructed residual block and the prediction block generated by mode select unit 202. For example, reconstruction unit 214 may add samples of the reconstructed residual block to corresponding samples from the prediction block generated by mode select unit 202 to generate the reconstructed block.
[0111] Filter unit 216 may perform one or more filter operations on the reconstructed blocks. For example, filter unit 216 may perform a deblocking operation to reduce blockiness artifacts along the edges of a CU. The operations of filter unit 216 may be skipped in some examples.
[0112]
[0107] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in examples where the operation of the filter unit 216 is not required, the reconstruction unit 214 may store the reconstructed blocks in the DPB 218. In examples where the operation of the filter unit 216 is required, the filter unit 216 may store the filtered reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 may retrieve reference pictures formed from the reconstructed (and potentially filtered) blocks from the DPB 218 to inter-predict blocks of a later-encoded picture. In addition, the intra-prediction unit 226 may use the reconstructed blocks in the DPB 218 of the current picture to intra-predict other blocks in the current picture.
[0113]
[0108] Generally, entropy encoding unit 220 may entropy encode syntax elements received from other functional components of video encoder 200. For example, entropy encoding unit 220 may entropy encode quantized transform coefficient blocks from quantization unit 208. As another example, entropy encoding unit 220 may entropy encode predictive 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 may perform one or more entropy encoding operations on syntax elements, which are another example of video data, to generate entropy-encoded data. For example, entropy encoding unit 220 may perform a context-adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable-to-variable (V2V) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a Probability Internal 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 may operate in a bypass mode in which syntax elements are not entropy coded.
[0114] Video encoder 200 may output a bitstream including entropy-encoded syntax elements needed to reconstruct blocks of a slice or picture. For example, in the example of FIG. 3, entropy encoding unit 220 may output the bitstream. According to one or more examples of this disclosure, video encoder 200 may signal residual quantized samples in the bitstream. For example, entropy encoding unit 220 may entropy encode syntax elements representing the residual quantized samples and include the entropy-encoded syntax elements in the bitstream.
[0115]
[0110] The operations described above are described with respect to blocks. Such descriptions should be understood as operations for luma coding blocks and / or chroma coding blocks. As described above, in some examples, the luma coding block and the chroma coding block are the luma component and the chroma component of a CU. In some examples, the luma coding block and the chroma coding block are the luma component and the chroma component of a PU.
[0116]
[0111] In some examples, operations performed with respect to luma coding blocks need not be repeated for chroma coding blocks. As one example, the operations of identifying 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 may be scaled to determine MVs for chroma blocks, and the reference pictures may be the same. As another example, the intra prediction process may be the same for luma coding blocks and chroma coding blocks.
[0117]
[0112] 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 a circuit, the one or more processing units configured to: generate a prediction value by performing intra prediction for a block of video data using unfiltered samples from an upper or left block boundary sample; generate a residual value based on the original sample value of the block and the prediction value; quantize the residual value; and determine a residual quantization sample based on the quantized residual value.
[0118]
[0113] Figure 4 is a block diagram illustrating an example video decoder 300 that may implement the techniques of this disclosure. Figure 4 is provided for purposes of explanation and not to limit the techniques broadly illustrated and described in this disclosure. For purposes of explanation, this disclosure describes the video decoder 300 in accordance with JEM, VVC, and HEVC techniques. However, the techniques of this disclosure may be implemented by video coding devices configured for other video coding standards.
[0119] 4, the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filter unit 312, and a decoded picture buffer (DPB) 314. Any or all of the CPB memory 320, the entropy decoding unit 302, the prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, the filter unit 312, and the DPB 314 may be implemented in one or more processors or processing circuits. Moreover, the video decoder 300 may include additional or alternative processors or processing circuits for performing these and other functions.
[0120] Prediction processing unit 304 includes a motion compensation unit 316 and an intra prediction unit 318. Prediction processing unit 304 may include additional units for performing prediction according to other prediction modes. By way of example, prediction processing unit 304 may include a palette unit, an intra block copy unit (which may form part of motion compensation unit 316), an affine unit, a linear model (LM) unit, etc. In other examples, video decoder 300 may include more, fewer, or different functional components.
[0121]
[0116] The CPB memory 320 may store video data, such as an encoded video bitstream, to be decoded by components of the video decoder 300. The video data stored in the CPB memory 320 may be retrieved, for example, from the computer-readable medium 110 (FIG. 1). The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from the encoded video bitstream. The CPB memory 320 may also store video data other than syntax elements of coded pictures, such as temporary data representing output from various units of the video decoder 300. The DPB 314 generally stores decoded pictures that 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 the DPB 314 may 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 CPB memory 320 and the 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.
[0122] Additionally or alternatively, in some examples, video decoder 300 may retrieve coded video data from memory 120 (FIG. 1). That is, memory 120 may store the data discussed above using CPB memory 320. Similarly, memory 120 may store instructions to be executed by video decoder 300 when some or all of the functionality of video decoder 300 is implemented in software to be executed by processing circuitry of video decoder 300.
[0123] The various units shown in FIG. 4 are presented to aid in understanding the operations performed by video decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. As with FIG. 3, a fixed-function circuit refers to a circuit that provides a specific function and is preset to the operations that may be performed. A programmable circuit refers to a circuit that is programmed to perform various tasks and to provide flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed-function circuit performs are generally immutable. In some examples, one or more of the units may be separate circuit blocks (fixed function or programmable), and in some examples, one or more units may be integrated circuits.
[0124]
[0119] Video decoder 300 may include a programmable core formed from ALUs, EFUs, digital circuits, analog circuits, and / or programmable circuits. In examples where the operations of video decoder 300 are performed by software executing on programmable circuits, on-chip or off-chip memory may store instructions (e.g., object code) of the software that video decoder 300 receives and executes.
[0125]
[0120] The entropy decoding unit 302 may receive the encoded video data from the CPB and entropy decode the video data to recover the syntax elements. The prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, and the filter unit 312 may generate decoded video data based on the syntax elements extracted from the bitstream.
[0126]
[0121] Generally, video decoder 300 reconstructs a picture on a block-by-block basis. Video decoder 300 may perform a reconstruction operation on each block individually (here, the block currently being reconstructed, i.e., currently being decoded, may be referred to as the "current block").
[0127]
[0122] The entropy decoding unit 302 may 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 a transform mode indication. The inverse quantization unit 306 may use the QP associated with the quantized transform coefficient block to determine the degree of quantization, and similarly, to determine the degree of inverse quantization to apply. The inverse quantization unit 306 may perform, for example, a bitwise left-shift operation to inverse quantize the quantized transform coefficients. The inverse quantization unit 306 may thereby form a transform coefficient block including the transform coefficients.
[0128] According to one or more techniques of this disclosure, the inverse quantization unit 306 may determine residual quantization samples for a block of video data based on syntax elements obtained by the entropy decoding unit 302 from the bitstream. Furthermore, the inverse quantization unit 306 may determine a quantized residual value based on the residual quantization samples. For example, the inverse quantization unit 306 may apply equation (3) or (4) to determine the quantized residual value. More specifically, if the block is coded using a vertical intra prediction mode, the inverse quantization unit 306 may apply equation (3). If the block is coded using a horizontal intra prediction mode, the inverse quantization unit 306 may apply equation (4). After determining the quantized residual value, the inverse quantization unit 306 may inverse quantize the quantized residual value.
[0129] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, the inverse transform processing unit 308 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse transform, or another inverse transform to the transform coefficient block. In examples where the block is coded and used using coefficient-domain BDPCM, the inverse transform processing unit 308 may skip applying the inverse transform.
[0130]
[0125] Furthermore, prediction processing unit 304 generates a predictive block according to the prediction information syntax element entropy decoded by entropy decoding unit 302. For example, if the prediction information syntax element indicates that the current block is inter-predicted, motion compensation unit 316 may generate a predictive block. In this case, the prediction information syntax element may indicate a reference picture in DPB 314 from which to retrieve the reference block, as well as a motion vector that identifies the location of the reference block in the reference picture relative to the location of the current block in the current picture. Motion compensation unit 316 may generally perform the inter-prediction process in a manner substantially similar to that described with respect to motion compensation unit 224 (FIG. 3).
[0131]
[0126] As another example, if the prediction information syntax element indicates that the current block is intra-predicted, intra prediction unit 318 may generate a predictive block according to the intra-prediction mode indicated by the prediction information syntax element. Again, intra prediction unit 318 may generally perform the intra-prediction process in a manner substantially similar to that described with respect to intra prediction unit 226 (FIG. 3). Intra prediction unit 318 may retrieve data of neighboring samples for the current block from DPB 314.
[0132]
[0127] The reconstruction unit 310 may reconstruct the current block using the predictive block and the residual block. For example, the reconstruction unit 310 may add samples of the residual block to corresponding samples of the predictive block to reconstruct the current block.
[0133]
[0128] Filter unit 312 may perform one or more filter operations on the reconstructed blocks. For example, filter unit 312 may perform a deblocking operation to reduce blockiness artifacts along the edges of the reconstructed blocks. The operations of filter unit 312 are not necessarily performed in all examples.
[0134] The video decoder 300 may store the reconstructed blocks in the DPB 314. For example, in examples where the operations of the filter unit 312 are not performed, the reconstruction unit 310 may store the reconstructed blocks in the DPB 314. In examples where the operations of the filter unit 312 are performed, the filter unit 312 may store the filtered reconstructed blocks in the DPB 314. As discussed above, the DPB 314 may provide reference information to the prediction processing unit 304, such as samples of the current picture for intra prediction and previously decoded pictures for subsequent motion compensation. Moreover, the video decoder 300 may output decoded pictures from the DPB on a display device, such as the display device 118 of FIG. 1, for subsequent presentation.
[0135]
[0130] Thus, the video decoder 300 represents an example of a video decoding device that includes a memory configured to store video data and one or more processing units implemented in a circuit, the one or more processing units configured to: determine residual quantization samples of a block of video data based on syntax elements in a bitstream comprising an encoded representation of the video data; determine quantized residual values based on the residual quantization samples; dequantize the quantized residual values; generate predicted values by performing intra prediction for the block using unfiltered samples from the top or left block boundary samples; and reconstruct original sample values of the block based on the dequantized quantized residuals and the predicted values.
[0136]
[0131] In the example of Figure 4, the entropy decoding unit 302 of the video decoder 300 may determine residual quantized samples of a block of video data based on syntax elements in a bitstream comprising a coded representation of the video data. Further, in the example of Figure 4, the video decoder 300 may generate predicted values by determining quantized residual values based on the residual quantized samples, dequantizing the quantized residual values, and performing intra prediction for the block using unfiltered samples from the top or left block boundary samples, and reconstruct original sample values of the block based on the dequantized quantized residual and the predicted values.
[0137]
[0132] Figure 5 is a flowchart illustrating an example method for encoding a current block. The current block may comprise a current CU. Although described with respect to video encoder 200 (Figures 1 and 2), it should be understood that other devices may be configured to implement a method similar to that of Figure 5.
[0138] In this example, video encoder 200 first predicts the current block (350). For example, video encoder 200 may form a predictive block for the current block. Video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, video encoder 200 may calculate the difference between the original uncoded block and the predictive block for the current block. Video encoder 200 then transforms the difference values to generate transform coefficients and quantizes the transform coefficients of the residual block (354). According to the techniques of this disclosure, video encoder 200 may skip applying a transform and may use the quantized residual values to perform coefficient-domain BDPCM. Next, video encoder 200 may scan the quantized transform coefficients of the residual block (or the quantized residual values when video encoder 200 applied coefficient-domain BDPCM) (356). During or following the scan, video encoder 200 may entropy code the transform coefficients (or quantized residual values, if video encoder 200 applied coefficient-domain BDPCM) (358). For example, video encoder 200 may code the transform coefficients (or quantized residual values, if video encoder 200 applied coefficient-domain BDPCM) using CAVLC or CABAC. Video encoder 200 may then output entropy-coded data for the block (360). Thus, in examples in which video encoder 200 applies coefficient-domain BDPCM, video encoder 200 may signal the residual quantization values.
[0139] 6 is a flowchart illustrating an example method for decoding a current block of video data. The current block may comprise a current CU. Although described with respect to video decoder 300 (FIGS. 1 and 3), it should be understood that other devices may be configured to implement a method similar to that of FIG.
[0140] The video decoder 300 may receive entropy-coded data for the current block, such as entropy-coded prediction information and entropy-coded data for the transform coefficients of the residual block corresponding to the current block (370). The video decoder 300 may entropy decode the entropy-coded data to determine prediction information for the current block and reconstruct transform coefficients of the residual block (372). The video decoder 300 may predict the current block using, for example, the intra-prediction or inter-prediction mode indicated by the prediction information for the current block, to calculate a predictive block for the current block (374). The video decoder 300 may then inverse scan the reconstructed transform coefficients to create a block of quantized transform coefficients (376). The video decoder 300 may then dequantize, apply, and inverse transform the transform coefficients to generate the residual block (378). The video decoder 300 may implement the techniques of this disclosure for coefficient-domain BDPCM as part of generating the residual block. Video decoder 300 may ultimately decode the current block by combining the predictive block and the residual block (380).
[0141]
[0136] Figure 7 is a flowchart illustrating an example video encoding process including coefficient domain block differential pulse code modulation (BDPCM) in accordance with one or more techniques of this disclosure. Figure 7 may be a more specific instance of the operation of Figure 5 in which video encoder 200 uses coefficient domain BDPCM. In the example of Figure 7, video encoder 200 may generate a block of predictors by performing intra prediction for the block of video data using unfiltered samples from above or left block boundary samples (700). For example, video encoder 200 may perform intra prediction according to any of the examples provided elsewhere in this disclosure.
[0142] Additionally, video encoder 200 may generate residual values based on the original sample values and the predicted values of the block (702). Each of the residual values may indicate a difference between one of the original sample values of the block and the corresponding predicted value.
[0143] 7, video encoder 200 may quantize the residual values (704). For example, video encoder 200 may quantize the residual values according to any of the examples for quantization described elsewhere in this disclosure.
[0144] After quantizing the residual values, video encoder 200 may determine residual quantization samples based on the quantized residual values (706). In examples where the intra-prediction is vertical prediction, video encoder 200 may determine residual quantization samples based on the quantized residual values (706).
[0145]
number
[0146] where:
[0147]
number
[0148] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are quantized residual values, M is the number of rows in the block, and N is the number of columns in the block. In an example where the intra prediction is horizontal prediction, the video encoder 200 may convert the residual quantized samples into
[0149]
number
[0150] where:
[0151]
number
[0152] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) is the quantized residual value, M is the number of rows in the block, and N is the number of columns in the block.
[0153]
[0140] Video encoder 200 may signal the residual quantized samples (708). For example, video encoder 200 may include, in the bitstream, entropy-coded syntax elements that may represent the residual quantized samples.
[0154]
[0141] Figure 8 is a flowchart illustrating an example video decoding process including coefficient-domain BDPCM in accordance with one or more techniques of this disclosure. Figure 8 may be a more specific instance of the operation of Figure 5 in which video encoder 200 uses coefficient-domain BDPCM. In the example of Figure 8, video decoder 300 may determine residual quantization samples for a block of video data based on syntax elements in a bitstream comprising an encoded representation of the video data (800). For example, video decoder 300 may use entropy decoding to decode syntax elements in the bitstream that indicate residual quantization samples for the block.
[0155]
[0142] Further, in the example of Figure 8, the video decoder 300 may determine quantized residual values based on the residual quantized samples (802). In examples where the intra prediction is vertical prediction, the video decoder 300 may determine quantized residual values based on the residual quantized samples (802).
[0156]
number
[0157] where Q(r i,j) is the quantized residual value at position i, j,
[0158]
number
[0159] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block. In an example where the intra prediction is a horizontal prediction, the video decoder 300 may denote the quantized residual value as
[0160]
number
[0161] where Q(r i,j ) is the quantized residual value at position i, j,
[0162]
number
[0163] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block.
[0164] After determining the quantized residual values, the video decoder 300 may dequantize the quantized residual values (804). For example, the video decoder 300 may dequantize the quantized residual values by reversing any of the quantization examples provided elsewhere in this disclosure.
[0165]
[0144] The video decoder 300 may generate a prediction by performing intra prediction for the block using unfiltered samples from the above or left block boundary samples (806). For example, the video decoder 300 may perform intra prediction according to any of the examples provided elsewhere in this disclosure.
[0166]
[0145] The video decoder 300 may reconstruct the original sample values of the block based on the dequantized quantized residual values and the predicted values (808). For example, the video decoder 300 may add the dequantized quantized residual values to the corresponding predicted values to reconstruct the original sample values.
[0167]
[0146] The following paragraphs provide a non-limiting list of enumerated examples according to the techniques of this disclosure.
[0168] Example 1. A method of decoding video data, comprising: determining residual quantization samples for a block of the video data based on syntax elements in a bitstream comprising a coded representation of the video data, determining quantized residual values based on the residual quantization samples, dequantizing the quantized residual values, generating a prediction value by performing intra prediction for the block using unfiltered samples from top or left block boundary samples, and reconstructing original sample values of the block based on the dequantized quantized residual and the prediction value.
[0169]
[0148] Example 2. Determining the quantized residual value is based on the intra prediction being a vertical prediction.
[0170]
number
[0171] where Q(r i,j ) is the quantized residual value at position i, j,
[0172]
number
[0173] 2. The method of Example 1, wherein M is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block.
[0174]
[0149] Example 3. Determining the quantized residual value is based on the intra prediction being a horizontal prediction.
[0175]
number
[0176] where Q(r i,j ) is the quantized residual value at position i, j,
[0177]
number
[0178] 2. The method of Example 1, wherein M is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block.
[0179] Example 4. A method of encoding video data, comprising: generating a prediction value by performing intra prediction for a block of the video data using unfiltered samples from top or left block boundary samples, generating residual values based on original sample values of the block and the prediction value, quantizing the residual values, and determining residual quantized samples based on the quantized residual values.
[0180]
[0151] Example 5. The determining the residual quantized sample comprises: determining the quantized residual based on the intra prediction, which is a vertical prediction.
[0181]
number
[0182] wherein:
[0183]
number
[0184] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j 5. The method of Example 4, wherein M is the number of rows in the block, and N is the number of columns in the block.
[0185]
[0152] Example 6. Determining the quantized residual includes determining the quantized residual based on the intra prediction, which is a horizontal prediction.
[0186]
number
[0187] wherein:
[0188]
number
[0189] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j 5. The method of Example 4, wherein M is the number of rows in the block, and N is the number of columns in the block.
[0190] Example 7. A device for coding video data, comprising one or more means for performing the method of any of Examples 1-6.
[0191] Example 8. The device of Example 7, wherein the one or more means comprise one or more processors implemented in circuitry.
[0192] Example 9. The device of any of Examples 7 and 8, further comprising a memory for storing the video data.
[0193] Example 10. The device of any of Examples 7-9, further comprising a display configured to display the decoded video data.
[0194] Example 11. The device of any of Examples 7-10, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
[0195] Example 12. The device of any of Examples 7-11, wherein the device comprises a video decoder.
[0196] Example 13. The device of any of Examples 7-12, wherein the device comprises a video encoder.
[0197] Example 14. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform the method of any of Examples 1-6.
[0198] Example 15. A device for encoding video data, the device comprising means for performing the method of any of Examples 1-6.
[0199] It should be appreciated that, depending on the example, some acts or events of any of the techniques described herein may be performed in a different sequence, added, merged, or entirely excluded (e.g., not all described acts or events may be required to practice the techniques). Moreover, in some examples, acts or events may be performed simultaneously rather than sequentially, for example, through multithreaded processing, interrupt processing, or multiple processors.
[0200] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or may include communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communications protocol. In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media or (2) communication media such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0201] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other 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 connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media cover non-transitory, tangible storage media, and not connections, carrier waves, signals, or other transitory media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0202]
[0165] The instructions may 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 terms "processor" and "processing circuitry" as used herein may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Also, the techniques may be fully implemented in one or more circuits or logic elements.
[0203] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Although various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to implement the disclosed techniques, those components, modules, or units need not necessarily be realized by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or provided by a collection of interoperating hardware units, including one or more processors described above, along with suitable software and / or firmware.
[0204]
[0167] Various examples have been described. These and other examples are within the scope of the appended claims.
Claims
1. 1. A method for decoding video data, comprising: determining residual quantization samples for the blocks of video data based on syntax elements in a bitstream comprising the coded representation of the video data; determining a quantized residual value based on the residual quantized samples; after determining the quantized residual value, dequantizing the quantized residual value; generating a prediction by performing intra prediction for the block using unfiltered samples from above or left block boundary samples; reconstructing original sample values of the block based on the dequantized quantized residual values and the predicted values; A method comprising:
2. Determining the quantized residual value comprises: The quantized residual value is calculated based on the intra prediction, which is a vertical prediction. [Equation 1] where Q(r i,j ) is the quantized residual value at position i, j, [Equation 2] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block. The method of claim 1 , comprising:
3. Determining the quantized residual value comprises: The quantized residual value is calculated based on the intra prediction, which is a horizontal prediction. [Equation 3] where Q(r i,j ) is the quantized residual value at position i, j, [Equation 4] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block. The method of claim 1 , comprising:
4. 1. A method for encoding video data, comprising: generating a block of predictors by performing intra prediction for the block of video data using unfiltered samples from above or left block boundary samples; generating residual values based on the original sample values of the block and the predicted values; and quantizing the residual values. quantizing the residual values and then determining residual quantized samples based on the quantized residual values; signaling the residual quantized samples; and A method comprising:
5. determining the residual quantized samples The residual quantized samples are calculated based on the intra prediction, which is a vertical prediction. [Equation 5] where: [Equation 6] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are the quantized residual values, M is the number of rows of said block, and N is the number of columns of said block; The method of claim 4 comprising:
6. Determining the quantized residual value comprises: The residual quantized samples are calculated based on the intra prediction, which is a horizontal prediction. [Equation 7] where: [Equation 8] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are the quantized residual values, M is the number of rows of said block, and N is the number of columns of said block; The method of claim 4 comprising:
7. 1. A device for decoding video data, comprising: a memory configured to store the video data; one or more processors implemented in circuitry, said one or more processors: determining residual quantization samples for the blocks of video data based on syntax elements in a bitstream comprising the coded representation of the video data; determining a quantized residual value based on the residual quantized samples; after determining the quantized residual value, dequantizing the quantized residual value; generating a prediction by performing intra prediction for the block using unfiltered samples from above or left block boundary samples; reconstructing original sample values of the block based on the dequantized quantized residual values and the predicted values; A device configured to:
8. The one or more processors may, as part of determining the quantized residual value, The quantized residual value is calculated based on the intra prediction, which is a vertical prediction. [Equation 9] where Q(r i,j ) is the quantized residual value at position i, j, [Equation 10] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block. The device of claim 7 configured to:
9. The one or more processors may, as part of determining the quantized residual value, The quantized residual value is calculated based on the intra prediction, which is a horizontal prediction. [0011] where Q(r i,j ) is the quantized residual value at position i, j, [0012] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block. The device of claim 7 configured to:
10. The device of claim 7 , further comprising a display configured to display the decoded video data.
11. The device of claim 7 , wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
12. 1. A device for encoding video data, comprising: a memory configured to store the video data; one or more processors implemented in circuitry, said one or more processors: generating a block of predictors by performing intra prediction for the block of video data using unfiltered samples from above or left block boundary samples; generating residual values based on the original sample values of the block and the predicted values; quantizing the residual values; quantizing the residual values and then determining residual quantized samples based on the quantized residual values; signaling the residual quantized samples; and A device configured to:
13. The one or more processors may, as part of determining the residual quantized samples, The residual quantized samples are calculated based on the intra prediction, which is a vertical prediction. [0013] where: [0014] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are the quantized residual values, M is the number of rows of said block, and N is the number of columns of said block; The device of claim 12 configured to:
14. The one or more processors may, as part of determining the quantized residual value, The residual quantized samples are calculated based on the intra prediction, which is a horizontal prediction. [Equation 15] where: [0016] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are the quantized residual values, M is the number of rows of said block, and N is the number of columns of said block; The device of claim 12 configured to:
15. The device of claim 12 , wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
16. 1. A device for decoding video data, comprising: means for determining residual quantization samples for the blocks of video data based on syntax elements in a bitstream comprising the coded representation of the video data; means for determining a quantized residual value based on the residual quantized samples; means for dequantizing the quantized residual value after determining the quantized residual value; and means for generating a predicted value by performing intra prediction for the block using unfiltered samples from top or left block boundary samples. means for reconstructing original sample values of the block based on the dequantized quantized residual values and the predicted values; A device comprising:
17. The means for determining the quantized residual value comprises: The quantized residual value is calculated based on the intra prediction, which is a vertical prediction. [Equation 17] where Q(r i,j ) is the quantized residual value at position i, j, [Equation 18] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block.
17. The device of claim 16, comprising:
18. The means for determining the quantized residual value comprises: The quantized residual value is calculated based on the intra prediction, which is a horizontal prediction. [Equation 19] where Q(r i,j ) is the quantized residual value at position i, j, [Equation 20] is one of the residual quantized samples, M is the number of rows in the block, and N is the number of columns in the block.
17. The device of claim 16, comprising:
19. 1. A device for encoding video data, comprising: means for generating a block of predictors by performing intra prediction for the block of video data using unfiltered samples from above or left block boundary samples; means for generating residual values based on the original sample values of the block and the predicted values; means for quantizing the residual values; means for quantizing the residual values and then determining residual quantized samples based on the quantized residual values; means for signaling the residual quantized samples; A device comprising:
20. The means for determining the residual quantized samples comprises: The residual quantized samples are calculated based on the intra prediction, which is a vertical prediction. [Equation 21] means for determining as, where: [Equation 22] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are the quantized residual values, M is the number of rows of said block, and N is the number of columns of said block; 20. The device of claim 19, comprising:
21. The means for determining the quantized residual value comprises: The residual quantized samples are calculated based on the intra prediction, which is a horizontal prediction. [Equation 23] means for determining as, where: [0000] is the residual quantized sample at position i, j, and Q(r i,j ) and Q(r (i-1),j ) are the quantized residual values, M is the number of rows of said block, and N is the number of columns of said block; 20. The device of claim 19, comprising:
22. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: determining residual quantization samples for blocks of video data based on syntax elements in a bitstream comprising a coded representation of the video data; determining a quantized residual value based on the residual quantized samples; after determining the quantized residual value, dequantizing the quantized residual value; generating a prediction by performing intra prediction for the block using unfiltered samples from above or left block boundary samples; reconstructing original sample values of the block based on the dequantized quantized residual values and the predicted values; A computer-readable storage medium that causes the
23. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: generating a block of predictors by performing intra prediction for the block of video data using unfiltered samples from the top or left block boundary samples; generating residual values based on the original sample values of the block and the predicted values; and quantizing the residual values. quantizing the residual values and then determining residual quantized samples based on the quantized residual values; signaling the residual quantized samples; and A computer-readable storage medium that causes the