Intra-frame filtering flag in video decoding
By introducing a threshold mechanism in video encoding and decoder, the use of intra-frame filter and PDPC mode is determined based on the number of non-zero transform coefficients, the problem of intra-frame filter application in the prior art is solved, and the encoding efficiency and flexibility.
Patent Information
- Application Number
- CN202210271655.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-03-07
- Filing Date
- 2018-03-08
- Publication Date
- 2025-01-03
- Estimated Expiration
- 2038-03-08
AI Technical Summary
The existing video encoding technology has problems with inefficiency in the use of intra-frame filters, especially when the non-zero transformation coefficient is small, the application of intra-frame reference sample smoothing filter and position-dependent prediction combination mode is not optimized enough. This leads to a decrease in encoding efficiency.
By configuring a threshold mechanism in the video encoder and decoder, whether to explicitly encode or decode the intra-frame filter flag and PDPC mode based on the number of non-zero transform coefficients in the block, only if the non-zero transform coefficients reach the threshold Encoding or decoding is explicitly performed to optimize intra prediction and filtering.
It improves the efficiency of the video encoding and decoding process, reduces the complexity and bit rate of the encoded bitstream, enhances the flexibility and adaptability of the intra prediction mode, especially when processing low redundant data blocks.
Smart Images

Figure CN114554201B_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with application number 201880015640.6 filed on March 8, 2018 and invention name “Intra-frame filtering flag in video decoding”. Technical Field
[0002] The present invention relates to video encoding and video decoding. Background Art
[0003] Digital video capabilities may be incorporated into a wide range of devices, including digital televisions, digital live 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 radio telephones (so-called "smart phones"), video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video coding techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10 Advanced Video Coding (AVC), High Efficiency Video Coding (HEVC or H.265) standards, and extensions of such standards. Video devices may more efficiently transmit, receive, encode, decode, and / or store digital video information by implementing such video coding techniques.
[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent to video sequences. For block-based video coding, a video tile (e.g., a video frame or a portion of a video frame) may be partitioned into video blocks, which may also be referred to as treeblocks, coding units (CUs), and / or coding nodes. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames.
[0005] Spatial or temporal prediction produces a predictive block for the block to be coded. The residual data represents the pixel differences between the original block to be coded and the predictive block. For further compression, the residual data can be transformed from the pixel domain to the transform domain, producing residual transform coefficients that can then be quantized. Entropy coding can be applied to achieve even further compression. Summary of the invention
[0006] The present invention relates to intra prediction, determination of prediction direction, determination of prediction mode, determination of coding mode, determination of use of intra filtering in video coding (eg, video encoding and / or video decoding), and explicitly coding and signaling syntax elements.
[0007] In one or more examples discussed below, a video encoder and a video decoder may be configured to determine whether to explicitly encode a syntax element indicating a coding mode to be used based on a comparison of a number of non-zero transform coefficients associated with a block to a threshold value. If the number of non-zero transform coefficients in the block is greater than or equal to a threshold value, the video encoder and the video decoder explicitly code the syntax element for the coding mode. If the number of non-zero transform coefficients in the block is less than the threshold value, the video encoder and the video decoder do not explicitly code the syntax element indicating the coding mode. The techniques of this disclosure may be used with any coding mode, including intra reference sample smoothing filter and position-dependent prediction combination (PDPC) mode.
[0008] In one example of the present invention, a method of decoding video data includes: receiving a first block of video data; receiving a first syntax element indicating whether to use a decoding mode for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients that is greater than or equal to a threshold; explicitly decoding a value of the received first syntax element; and applying the decoding mode to the first block of video data according to the value of the first syntax element.
[0009] In another example of the present invention, a method of encoding video data includes: determining a decoding mode for encoding a first block of video data; in a condition where the first block of video data is associated with a number of non-zero transform coefficients that is greater than or equal to a threshold, explicitly encoding a first syntax element indicating whether the decoding mode is used for the first block of video data; and signaling the first syntax element in an encoded video bitstream.
[0010] In another example of the present invention, an apparatus configured to decode a video includes a memory configured to store the video data; and one or more processors in communication with the memory, the one or more processors configured to receive a first block of the video data; receive a first syntax element indicating whether to use a coding mode for the first block of the video data if the first block of the video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold; explicitly decode a value of the received first syntax element; and apply the coding mode to the first block of the video data according to the value of the first syntax element.
[0011] In another example of the present disclosure, an apparatus configured to encode video data includes a memory configured to store the video data; and one or more processors in communication with the memory, the one or more processors configured to determine a coding mode for encoding a first block of the video data; in a condition where the first block of the video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold, explicitly encode a first syntax element indicating whether to use the coding mode for the first block of the video data; and signal the first syntax element in an encoded video bitstream.
[0012] In another example of the present invention, an apparatus configured to decode video data includes: means for receiving a first block of video data; means for receiving a first syntax element indicating whether to use a decoding mode for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients that is greater than or equal to a threshold; means for explicitly decoding a value of the received first syntax element; and means for applying the decoding mode to the first block of video data according to the value of the first syntax element.
[0013] In another example of the present disclosure, an apparatus configured to encode video data includes means for determining a coding mode for encoding a first block of video data; means for explicitly encoding a first syntax element indicating whether to use the coding mode for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients that is greater than or equal to a threshold; and means for signaling the first syntax element in an encoded video bitstream.
[0014] In another example, the present disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device to be configured to: decode video data to receive a first block of the video data; receive a first syntax element indicating whether to use a coding mode for the first block of the video data if the first block of the video data is associated with a number of non-zero transform coefficients that is greater than or equal to a threshold; explicitly decode a value of the received first syntax element; and apply the coding mode to the first block of the video data according to the value of the first syntax element.
[0015] In another example, the disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device to be configured to: encode video data to determine a coding mode for encoding a first block of the video data; in a condition where the first block of the video data is associated with a number of non-zero transform coefficients that is greater than or equal to a threshold, explicitly encode a first syntax element indicating whether to use the coding mode for the first block of the video data; and signal the first syntax element in an encoded video bitstream.
[0016] The example techniques described below for determining explicitly coded syntax elements for a coding mode may be used in any combination with one or more other techniques described in this disclosure. For example, the techniques of this disclosure for determining explicitly coded syntax elements for a coding mode may be used in combination with: techniques for coding syntax elements for transform indexes; techniques for determining explicitly coded syntax elements for luma and chroma blocks; techniques for determining explicitly coded syntax elements for non-transform skip blocks; techniques for determining explicitly coded syntax elements for blocks with a specific intra-prediction mode; techniques for determining explicitly coded syntax elements based on block size; and techniques for context coding syntax elements.
[0017] The details of one or more aspects of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the techniques described in this disclosure will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0018] Figure 1 is a block diagram illustrating an example video encoding and decoding system configured to implement the techniques of this disclosure.
[0019] Figure 2A A conceptual diagram illustrating an example of block partitioning using a quadtree plus binary tree (QTBT) structure.
[0020] Figure 2B To illustrate the use of Figure 2A Conceptual diagram of the tree structure of the QTBT structure for block segmentation.
[0021] Figure 3A Prediction of a 4x4 block using an unfiltered reference according to the techniques of this disclosure is illustrated.
[0022] Figure 3B Prediction of a 4x4 block using filtered references according to the techniques of this disclosure is illustrated.
[0023] Figure 4 is a block diagram illustrating an example of a video encoder configured to implement the techniques of this disclosure.
[0024] Figure 5 is a block diagram illustrating an example of a video decoder configured to implement the techniques of this disclosure.
[0025] Figure 6 A flowchart illustrating an exemplary encoding method of the present invention.
[0026] Figure 7 Flowchart illustrating an exemplary decoding method of the present invention. DETAILED DESCRIPTION
[0027] The present invention relates to intra prediction, determination of prediction direction, determination of prediction mode, determination of coding mode, determination of use of intra filtering in video coding (eg, video encoding and / or video decoding), and explicitly coding and signaling syntax elements.
[0028] Video coding standards include ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual, ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC), ITU-T H.265 (also known as High Efficiency Video Coding (HEVC)), which includes extensions such as scalable video coding (SVC), multi-view video coding (MVC), and screen content coding (SCC). Other video coding standards include future video coding standards such as the Joint Video Exploration Team (JVET) test model, which is a research and development activity other than HEVC. Video coding standards also include proprietary video codecs (e.g., Google VP8, VP9, VP10), and video codecs developed by other organizations (e.g., the Alliance for Open Media).
[0029] In HEVC and the Joint Exploration Model (JEM), which is a test software being studied by JVET, intra-frame references can be smoothed, for example, a filter can be applied. In HEVC, mode-dependent intra-frame smoothing (MDIS) is used in a way that a filter is applied to intra-frame references (neighbor samples related to the current decoded block) before generating intra-frame predictions from intra-frame references. The mode in which MDIS is allowed is derived based on how close the current intra-frame mode is to the horizontal or vertical direction. The mode in which MDIS is allowed can be derived based on the absolute difference of the intra-frame mode index between the current mode and the horizontal and vertical mode indexes. If the absolute difference exceeds a certain threshold (for example, the threshold can be related to the block size), then the MDIS filter is not applied, otherwise, the MDIS filter is applied. In other words, in intra-frame modes far away from the horizontal or vertical direction, the intra-frame reference filter is applied. MDIS is not applied to non-corner modes, such as DC or flat modes.
[0030] In JEM, MDIS is replaced by a smoothing filter (reference sample adaptive filtering (RSAF) or adaptive reference sample smoothing (ARSS)), which in some examples can be applied to all intra modes except DC mode. A flag indicating whether the filter is applied in the current block is signaled to the decoder side. It is not signaled as an explicit flag, but hidden in the transform coefficients. That is, the value of the flag indicating whether the filter is applied to the current block can be determined by the video decoder based on certain values or characteristics of the transform coefficients. For example, if the transform coefficients meet a certain parity condition, the flag is derived as 1, otherwise, the flag is derived as 0.
[0031] Another method used in JEM is the Position Dependent Intra Prediction Combination (PDPC) mode. PDPC is a coding mode that weights the intra predictor and intra reference samples, where the weights can be derived based on the block size (including width and height) and the intra mode.
[0032] Figure 1 1 is a block diagram illustrating an example video encoding and decoding system 10 that may be configured to perform the techniques of this disclosure. Figure 1 As shown in , system 10 includes a source device 12 that provides encoded video data to be later decoded by a destination device 14. In particular, source device 12 provides the video data to destination device 14 via a computer-readable medium 16. Source device 12 and destination device 14 may include any of a wide range of devices, including desktop computers, notebook computers (e.g., laptop computers), tablet computers, set-top boxes, telephone handsets such as so-called "smart" phones, tablet computers, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, and the like. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices. Source device 12 is an example video encoding device (i.e., a device for encoding video data). Destination device 14 is an example video decoding device (i.e., a device for decoding video data).
[0033] exist Figure 11, source device 12 includes a video source 18, a storage medium 20 configured to store video data, a video encoder 22, and an output interface 24. Destination device 14 includes an input interface 26, a storage medium 28 configured to store encoded video data, a video decoder 30, and a display device 32. In other examples, source device 12 and destination device 14 may include other components or arrangements. For example, source device 12 may receive video data from an external video source (e.g., an external camera). Likewise, destination device 14 may interface with an external display device rather than including an integrated display device 32.
[0034] Figure 1 The illustrated system 10 of is merely one example. Techniques for processing and / or coding (e.g., encoding and / or decoding) video data may be performed by any digital video encoding and / or decoding device. Although typically the techniques of this disclosure are performed by a video encoding device and / or a video decoding device, the techniques may also be performed by a video encoder / decoder (commonly referred to as a “codec”). Source device 12 and destination device 14 are merely examples of such coding devices in which source device 12 generates coded video data for transmission to destination device 14. In some examples, source device 12 and destination device 14 may operate in a substantially symmetrical manner such that each of source device 12 and destination device 14 includes video encoding and decoding components. Thus, system 10 may support one-way or two-way video transmission between source device 12 and destination device 14, such as for video streaming, video playback, video broadcasting, or video telephony.
[0035] Video source 18 of source device 12 may include a video capture device, such as a video camera, a video archive containing previously captured video, and / or a video feed interface for receiving video data from a video content provider. As another alternative, video source 18 may generate computer graphics-based data as source video, or a combination of live video, archived video, and computer-generated video. Source device 12 may include one or more data storage media (e.g., storage media 20) configured to store video data. The techniques described in this disclosure may be applicable to video decoding and may be generally applicable to wireless and / or wired applications. In each case, the captured, pre-captured, or computer-generated video may be encoded by video encoder 22. Output interface 24 may output the encoded video information (e.g., a bitstream of encoded video data) to computer-readable medium 16.
[0036] Destination device 14 may receive the encoded video data to be decoded via computer-readable medium 16. Computer-readable medium 16 may include any type of media or device capable of moving the encoded video data from source device 12 to destination device 14. In some examples, computer-readable medium 16 includes a communication medium that enables source device 12 to transmit the encoded video data directly to destination device 14 in real time. The encoded video data may be modulated according to a communication standard (e.g., a wireless communication protocol) and transmitted to destination device 14. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network (e.g., a local area network, a wide area network, or a global area network such as the Internet). The communication medium may include routers, switches, base stations, or any other equipment that can be used to facilitate communication from source device 12 to destination device 14. Destination device 14 may include one or more data storage media configured to store the encoded video data and the decoded video data.
[0037] In some examples, the encoded data may be output from the output interface 24 to a storage device. Similarly, the encoded data may be accessed from the storage device through the input interface. The storage device may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, the storage device may correspond to a file server or another intermediate storage device that can store the encoded video generated by the source device 12. The destination device 14 may access the stored video data from the storage device via streaming or downloading. The file server may be any type of server capable of storing encoded video data and transmitting the encoded video data to the destination device 14. Example file servers include a web server (e.g., for a website), an FTP server, a network attached storage (NAS) device, or a local disk drive. The destination device 14 may access the encoded video data via any standard data connection (including an Internet connection). This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of both suitable for accessing the encoded video data stored on the file server. The transmission of the encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.
[0038] The techniques described in this disclosure may be applied to video coding to support any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, Internet streaming video transmissions (e.g., Dynamic Adaptive Streaming over HTTP (DASH)), digital video encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications. In some examples, system 10 may be configured to support one-way or two-way video transmissions to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.
[0039] Computer-readable medium 16 may include transient media, such as wireless broadcasts or wired network transmissions, or storage media (i.e., non-transitory storage media), such as hard disks, flash drives, compact discs, digital video discs, Blu-ray discs, or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from source device 12 and provide the encoded video data to destination device 14, for example, via network transmission. Similarly, a computing device of a media production facility (such as a disc stamping facility) may receive encoded video data from source device 12 and produce a disc containing the encoded video data. Thus, in various examples, computer-readable medium 16 may be understood to include one or more computer-readable media in various forms.
[0040] Input interface 26 of destination device 14 receives information from computer-readable medium 16. The information of computer-readable medium 16 may include syntax information defined by video encoder 22 of video encoder 22, which is also used by video decoder 30, including syntax elements that describe characteristics and / or processing of blocks and other coding units, such as groups of pictures (GOPs). Storage medium 28 may store the encoded video data received through input interface 26. Display device 32 displays the decoded video data to a user, and may include 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.
[0041] Video encoder 22 and video decoder 30 may each be implemented as any of a variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented in part in software, a device may store instructions for the software in a suitable, non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of video encoder 22 and video decoder 30 may be included in one or more encoders or decoders, either of which may be integrated as part of a combined codec in a respective device.
[0042] In some examples, video encoder 22 and video decoder 30 may operate according to a video coding standard. Example video coding standards include, but are not limited to, ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual, and ITU-T H.264 (also referred to as ISO / IEC MPEG-4 AVC), including its scalable video coding (SVC) and multi-view video coding (MVC) extensions. Additionally, a new video coding standard (i.e., High Efficiency Video Coding (HEVC) or ITU-T H.265) has been developed by the Joint Collaborative Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG), including its range and screen content coding extensions, 3D video coding (3D-HEVC) and multi-view extensions (MV-HEVC), and scalable extensions (SHVC).
[0043] In other examples, video encoder 22 and video decoder 30 may be configured to operate according to other video coding techniques and / or standards, including new video coding techniques being explored by the Joint Video Exploration Team (JVET).
[0044] In HEVC and other video coding specifications, a video sequence typically includes a series of pictures. A picture may also be referred to as a "frame". A picture may include three sample arrays, indicated as S L , S Cb and S Cr . S L is a two-dimensional array (e.g., block) of luma samples. Cb is a two-dimensional array of Cb chrominance samples. Cris a two-dimensional array of Cr chrominance samples. Chrominance samples may also be referred to herein as "chrominance" samples. In other cases, a picture may be monochrome and may include only an array of luma samples.
[0045] To generate an encoded representation of a picture (e.g., an encoded video bitstream), the video encoder 22 may generate a set of coding tree units (CTUs). Each of the CTUs may include a coding tree block (CTB) of luma samples, two corresponding CTBs of chroma samples, and a syntax structure for coding the samples of the coding tree block. In a monochrome picture or a picture with three separate color planes, a CTU may include a single coding tree block and a syntax structure for coding the samples of the coding tree block. A coding tree block may be an N×N block of samples. A CTU may also be referred to as a “tree block” or a “largest coding unit” (LCU). A CTU of HEVC may be broadly similar to macroblocks of other standards such as H.264 / AVC. However, a CTU is not necessarily limited to a particular size and may include one or more coding units (CUs). A tile may include an integer number of CTUs sequentially ordered in raster scan order.
[0046] To generate a coded CTU, video encoder 22 may recursively perform quadtree partitioning on the coding treeblock of the CTU to divide the coding treeblock into coding blocks, hereinafter referred to as "coding tree units". A coding block is an N×N block of samples. A CU may include a coding block of luma samples of a picture having a luma sample array, a Cb sample array, and a Cr sample array, and two corresponding coding blocks of chroma samples, and syntax structures for coding the samples of the coding blocks. In a monochrome picture or a picture with three separate color planes, a CU may include a single coding block and syntax structures for coding the samples of the coding treeblock.
[0047] Video encoder 22 may partition the coding blocks of a CU into one or more prediction blocks. A prediction block is a rectangular (i.e., square or non-square) block of samples for which the same prediction is applied. A prediction unit (PU) of a CU may include a prediction block of luma samples, two corresponding prediction blocks of chroma samples, and syntax structures used to predict the prediction blocks. In a monochrome picture or a picture with three separate color planes, a PU may include a single prediction block and syntax structures used to predict the prediction blocks. Video encoder 22 may generate predictive blocks (e.g., luma, Cb, and Cr predictive blocks) for the prediction blocks (e.g., luma, Cb, and Cr prediction blocks) of each PU of a CU.
[0048] Video encoder 22 may use intra prediction or inter prediction to generate predictive blocks for a PU.If video encoder 22 uses intra prediction to generate predictive blocks for a PU, video encoder 22 may generate the predictive blocks for the PU based on decoded samples of the picture that includes the PU.
[0049] After video encoder 22 generates predictive blocks (e.g., luma, Cb, and Cr predictive blocks) for one or more PUs of a CU, video encoder 22 may generate one or more residual blocks for the CU. As an example, video encoder 22 may generate a luma residual block for the CU. Each sample in the luma residual block of the CU indicates the difference between a luma sample in one of the predictive luma blocks of the CU and a corresponding sample in the original luma coding block of the CU. In addition, video encoder 22 may generate a Cb residual block for the CU. In one example of chroma prediction, each sample in the Cb residual block of the CU may indicate the difference between a Cb sample in one of the predictive Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU. Video encoder 22 may also generate a Cr residual block for the CU. Each sample in the Cr residual block of the CU may indicate the difference between a Cr sample in one of the predictive Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU. However, it should be understood that other techniques for chroma prediction may be used.
[0050] In addition, video encoder 22 may decompose the residual blocks (e.g., luma, Cb, and Cr residual blocks) of a CU into one or more transform blocks (e.g., luma, Cb, and Cr transform blocks) using quadtree partitioning. A transform block is a rectangular (i.e., square or non-square) block of samples to which the same transform is applied. A transform unit (TU) of a CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and a syntax structure used to transform the transform block samples. Thus, each TU of a CU may have a luma transform block, a Cb transform block, and a Cr transform block. The luma transform block of a TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In a monochrome picture or a picture with three separate color planes, a TU may include a single transform block and a syntax structure used to transform the samples of the transform block.
[0051] Video encoder 22 may apply one or more transforms to a transform block of a TU to generate a coefficient block for the TU. For example, video encoder 22 may apply one or more transforms to a luma transform block of a TU to generate a luma coefficient block for the TU. A coefficient block may be a two-dimensional array of transform coefficients. The transform coefficients may be scalars. Video encoder 22 may apply one or more transforms to a Cb transform block of a TU to generate a Cb coefficient block for the TU. Video encoder 22 may apply one or more transforms to a Cr transform block of a TU to generate a Cr coefficient block for the TU.
[0052] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), video encoder 22 may quantize the coefficient block. 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, thereby providing further compression. After video encoder 22 quantizes the coefficient block, video encoder 22 may entropy encode syntax elements that indicate the quantized transform coefficients. For example, video encoder 22 may perform context adaptive binary arithmetic coding (CABAC) on the syntax elements that indicate the quantized transform coefficients.
[0053] Video encoder 22 may output a bitstream that includes a sequence of bits that form a representation of a coded picture and associated data. Thus, the bitstream includes an encoded representation of the video data. The bitstream may include a sequence of network abstraction layer (NAL) units. A NAL unit is a syntax structure containing an indication of the type of data in the NAL unit and a bit group in the form of a raw bit group sequence payload (RBSP) containing the data, interspersed with emulation prevention bits as needed. Each of the NAL units may include a NAL unit header and may encapsulate an RBSP. The NAL unit header may include a syntax element indicating a NAL unit type code. The NAL unit type code specified by the NAL unit header of the NAL unit indicates the type of the NAL unit. The RBSP may be a syntax structure containing an integer number of bit groups encapsulated within the NAL unit. In some cases, the RBSP includes zero bits.
[0054] The video decoder 30 may receive an encoded video bitstream generated by the video encoder 22. In addition, the video decoder 30 may parse the bitstream to obtain syntax elements from the bitstream. The video decoder 30 may reconstruct a picture of the video data based at least in part on the syntax elements obtained from the bitstream. The process of reconstructing the video data may be generally reciprocal to the process performed by the video encoder 22. For example, the video decoder 30 may use the motion vector of the PU to determine the predictive block of the PU of the current CU. In addition, the video decoder 30 may inverse quantize the coefficient blocks of the TU of the current CU. The video decoder 30 may perform an inverse transform on the coefficient blocks to reconstruct the transform blocks of the TU of the current CU. The video decoder 30 may reconstruct the coding blocks of the current CU by adding the samples of the predictive blocks of the PU of the current CU to the corresponding samples of the transform blocks of the TU of the current CU. By reconstructing the coding blocks of each CU of the picture, the video decoder 30 may reconstruct the picture.
[0055] In some examples of video codec architectures (e.g., the quadtree partitioning framework of HEVC), partitioning of video data into blocks for color components (e.g., luma blocks and chroma blocks) is performed jointly. That is, in some examples, luma blocks and chroma blocks are partitioned in the same manner so that no more than one luma block corresponds to a chroma block in a particular position within a picture.
[0056] The quadtree plus binary tree (QTBT) partitioning structure is being studied by the Joint Video Exploration Group (JVET). In "Block partitioning structure for next generation video coding", J. An et al., International Telecommunication Union, COM16-C966, September 2015 (hereinafter "VCEG proposal COM16-C966"), the QTBT partitioning technique is described for future video coding standards other than HEVC. Simulations have shown that the proposed QTBT structure can be more efficient than the quadtree structure used in HEVC.
[0057] In the QTBT structure described in VCEG proposal COM16-C966, the CTB is first partitioned using a quadtree partitioning technique, where the quadtree splitting of a node may be iterated until the node reaches the minimum allowed quadtree leaf node size. The minimum allowed quadtree leaf node size may be indicated to the video decoder 30 by the value of the syntax element MinQTSize. If the quadtree leaf node size is not greater than the maximum allowed binary tree root node size (e.g., as indicated by the syntax element MaxBTSize), the quadtree leaf node may be further partitioned using binary tree partitioning. The binary tree partitioning of a node may be iterated until the node reaches the minimum allowed binary tree leaf node size (e.g., as indicated by the syntax element MinBTSize) or the maximum allowed binary tree depth (e.g., as indicated by the syntax element MaxBTDepth). VCEG proposal COM16-C966 uses the term "CU" to refer to a binary tree leaf node. In VCEG recommendation COM16-C966, a CU is used for prediction (e.g., intra prediction, inter prediction, etc.) and transformation without further partitioning. In general, according to the QTBT technique, there are two types of splits for binary tree splitting: symmetric horizontal splitting and symmetric vertical splitting. In each case, the block is split by dividing the block horizontally or vertically from the middle. This is different from the quadtree partitioning, which divides the block into four blocks.
[0058] In one example of a QTBT partitioning structure, the CTU size is set to 128x128 (e.g., a 128x128 luma block and two corresponding 64x64 chroma blocks), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (for both width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree partitioning is first applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes may have sizes from 16x16 (i.e., MinQTSize is 16x16) to 128x128 (i.e., the CTU size). According to one example of QTBT partitioning, if a leaf quadtree node is 128x128, the leaf quadtree node may not be further split by a binary tree because the size of the leaf quadtree node exceeds MaxBTSize (i.e., 64x64). Otherwise, the leaf quadtree node is further partitioned by a binary tree. Therefore, the quad tree leaf node is also the root node of the binary tree and has a binary tree depth of 0. A binary tree depth reaching MaxBTDepth (e.g., 4) means that there is no further splitting. A binary tree node with a width equal to MinBTSize (e.g., 4) means that there is no further horizontal splitting. Similarly, a binary tree node with a height equal to MinBTSize means no further vertical splitting. The leaf nodes (CUs) of the binary tree are further processed (e.g., by performing a prediction process and a transform process) without further segmentation.
[0059] Figure 2A An example of a block 50 (e.g., CTB) partitioned using the QTBT partitioning technique is described. Figure 2A As shown in , using the QTBT segmentation technique, each of the resulting blocks is split symmetrically through the center of each block. Figure 2B Description corresponds to Figure 2A The tree structure of the block partition. Figure 2B The solid lines in indicate quadtree splits and the dotted lines indicate binary tree splits. In one example, in each splitting (i.e., non-leaf) node of the binary tree, a syntax element (e.g., a flag) is signaled to indicate the type of split performed (e.g., horizontal or vertical), where 0 indicates horizontal splitting and 1 indicates vertical splitting. For quadtree splitting, there is no need to indicate the type of splitting, since quadtree splitting always splits a block horizontally and vertically into 4 sub-blocks of equal size.
[0060] like Figure 2B As shown in FIG. 1 , at node 70, block 50 is split into Figure 2AThe four blocks 51, 52, 53 and 54 are shown in FIG. Block 54 is not further split and is therefore a leaf node. At node 72, block 51 is further split into two blocks using binary tree partitioning. Figure 2B As shown in FIG. 1 , node 72 is marked with 1, indicating a vertical split. Thus, the split at node 72 results in block 57 and a block containing both blocks 55 and 56. Blocks 55 and 56 are generated by another vertical split at node 74. At node 76, block 52 is further split into two blocks 58 and 59 using binary tree partitioning. Figure 2B As shown in FIG. 1 , node 76 is marked with a 1, indicating a horizontal split.
[0061] At node 78, block 53 is split into 4 equal-sized blocks using quadtree splitting. Blocks 63 and 66 are generated from this quadtree splitting and are not further split. At node 80, the upper left block is first split using vertical binary tree splitting, thereby generating block 60 and the right vertical block. The right vertical block is then split into block 61 and block 62 using horizontal binary tree splitting. At node 84, the lower right block generated from the quadtree splitting at node 78 is split into block 64 and block 65 using horizontal binary tree splitting.
[0062] In one example of QTBT partitioning, for example, in contrast to HEVC (where quadtree partitioning is performed jointly for luma and chroma blocks), luma and chroma partitioning may be performed independently of each other for I-tiles. That is, in some examples under investigation, luma blocks and chroma blocks may be partitioned separately such that luma blocks and chroma blocks do not directly overlap. Thus, in some examples of QTBT partitioning, chroma blocks may be partitioned in such a way that at least one partitioned chroma block is not spatially aligned with a single partitioned luma block. That is, luma samples co-located with a particular chroma block may be within two or more different luma partitions.
[0063] The following sections describe techniques for determining parameters of a position-dependent intra-prediction combination (PDPC) coding mode for a block of video data. When coding video data using the PDPC coding mode, video encoder 22 and / or video decoder 30 may use one or more parameterized equations that define how to combine predictions based on filtered and unfiltered reference values and based on the positions of predicted pixels (or color component values of pixels). This disclosure describes several sets of parameters so that video encoder 22 may be configured to test the sets of parameters (e.g., via the use of rate-distortion analysis) and signal the best parameters (e.g., parameters that result in the best rate-distortion performance among those parameters tested) to video decoder 30. In other examples, video decoder 30 may be configured to determine PDPC parameters from characteristics of the video data (e.g., block size, block height, block width, etc.).
[0064] Figure 3A Prediction of a 4x4 block (p) using an unfiltered reference (r) is illustrated according to the techniques of this disclosure. Figure 3B The prediction of a 4x4 block (q) using a filtered reference (s) is illustrated according to the techniques of the present invention. Figure 3A and 3B Both illustrate a 4x4 pixel block and 17 (4x4+1) corresponding reference values, but the techniques of this disclosure are applicable to any block size and any number of reference values.
[0065] When performing the PDPC decoding mode, video encoder 22 and / or video decoder 30 may utilize a combination between filtered (q) and unfiltered (p) prediction so that a prediction block for a current block to be decoded can be calculated using pixel values from filtered (s) and unfiltered (r) reference arrays.
[0066] In one example of the PDPC technique, given any two sets of pixel predictions p r [x,y] and q s [x,y] is calculated using only the unfiltered and filtered references r and s, respectively, and the combined predicted value of the pixel indicated by v[x,y] is defined by the following formula:
[0067] v[x,y]=c[x,y]p r [x,y]+(1-c[x,y])q s [x,y] (1)
[0068] Where c[x,y] is a set of combination parameters. The value of weight c[x,y] may be a value between 0 and 1. The sum of weight c[x,y] and (1-c[x,y]) may be equal to one.
[0069] In some examples, it may not be practical to have a set of parameters as large as the number of pixels in a block. In such examples, c[x,y] may be defined by a set of many smaller parameters plus equations to calculate all combined values from those parameters. In this example, the following formula may be used:
[0070]
[0071] in g, and d v ,d h ∈{1,2} is the prediction parameter, N is the block size, and To use the calculated prediction value according to the HEVC standard, for a specific mode, the unfiltered and filtered references are used separately, and
[0072]
[0073] is a normalization factor defined by the prediction parameters (i.e., used to normalize the overall weights assigned to and will Added to 1).
[0074] Equation 2 can be generalized for any video coding standard in Equation 2A:
[0075]
[0076] in g, and d v ,d h ∈{1,2} is the prediction parameter, N is the block size, and To use the calculated prediction value according to the video coding standard (or video coding scheme or algorithm), for a specific mode, the unfiltered and filtered references are used separately, and
[0077]
[0078] is a normalization factor defined by the prediction parameters (i.e., used to normalize the overall weights assigned to and will Added to 1).
[0079] Such prediction parameters may include weights to provide the best linear combination of predicted terms depending on the type of intra-prediction mode used (e.g., DC, flat, and 33-directional modes for HEVC). For example, HEVC contains 35 intra-prediction modes. The prediction parameters for each of the available intra-prediction modes are g,d v and d h The value of each of (i.e., for each intra prediction mode g,d v and d h These values may be encoded in the bitstream with the video or may be constant values known in advance by the encoder and decoder and may not need to be transmitted in the file or bitstream. g,d v and d h The value of may be determined by an optimization training algorithm that finds the value of the prediction parameter that produces the best compression for a set of training videos.
[0080] In another example, there are multiple predefined prediction parameter sets for each intra-prediction mode (in, for example, a lookup table), and the selected prediction parameter set (rather than the parameters themselves) is transmitted to the decoder in the encoded file or bitstream. g,d v and dh The value of may be generated on the fly by a video encoder and transmitted to a decoder in an encoded file or bitstream.
[0081] In another example, a video coding device performing such techniques may use a modified version of HEVC instead of using HEVC prediction, similar to a video coding device using 65-directional prediction instead of 33-directional prediction.In fact, any type of intra-prediction may be used.
[0082] In another example, the formula may be selected to facilitate calculation. For example, we may use the following type of prediction
[0083]
[0084] in
[0085]
[0086] and
[0087]
[0088] This approach can use the linearity of HEVC (or other) prediction. Define h as the impulse response of filter k from a predefined set, if we have
[0089] s=ar+(1-a)(h*r) (7)
[0090] Where "*" represents convolution, then
[0091]
[0092] That is, the linear combination prediction can be calculated from the linear combination reference.
[0093] Equations 4, 6, and 8 may be generalized for any video coding standard in Equations 4A, 6A, and 8A:
[0094]
[0095] in
[0096]
[0097] and
[0098]
[0099] This method can exploit the predicted linearity of the decoding standard. Defining h as the impulse response of filter k from a predefined set, if we have
[0100] s=ar+(1-a)(h*r) (7A)
[0101] Where "*" represents convolution, then
[0102]
[0103] That is, the linear combination prediction can be calculated from the linear combination reference.
[0104] In one example, the prediction function may use only the reference vectors (e.g., r and s) as input. In this example, the behavior of the reference vectors is not changed if the references are already filtered or unfiltered. If r and s are equal (e.g., some unfiltered reference r happens to be equal to another filtered reference s), then the prediction function (e.g., p) applied to the filtered and unfiltered references is r [x,y] (also written as p(x,y,r) is equal to p s [x,y] (also written as p(x,y,s)). In addition, pixel predictions p and q may be equivalent (e.g., produce the same output given the same input). In such examples, equations (1) to (8) may be rewritten with pixel prediction p[x,y] replacing pixel prediction q[x,y].
[0105] In another example, the prediction (e.g., a set of functions) may vary depending on the information that has been filtered. In this example, different sets of functions (e.g., p r [x,y] and q s [x,y]). In this case, even if r is equal to s, p r [x,y] and q s [x, y] may still be unequal. In other words, the same input may produce different outputs depending on whether the input has been filtered or unfiltered. In this example, p[x, y] may not be able to be replaced by q[x, y].
[0106] An advantage of the prediction equation shown is that a set of optimized parameters (i.e., a set of optimized parameters that optimizes prediction accuracy) can be determined for different types of video textures through parameterized formulas using techniques such as training. Conversely, in some examples, this approach can be extended by computing several sets of predictor parameters for some typical types of structures, and having a compression scheme where the encoder tests predictors from each set and encodes the predictor that produces the best compression as side information.
[0107] In some examples of the techniques described above, when the PDPC coding mode is enabled, intra-prediction weights and PDPC parameters for the PDPC mode that control the use of filtered or unfiltered samples are pre-computed and stored in a lookup table (LUT). In one example, video decoder 30 determines the PDPC parameters based on block size and intra-prediction direction. Prior art techniques for the PDPC coding mode assume that the intra-prediction block size is always square.
[0108] In examples of HEVC and JEM, intra-frame references may be smoothed. For example, filters may be applied to intra-frame references. In HEVC, mode-dependent intra-frame smoothing (MDIS) is used in a manner in which filters are applied to intra-frame references (neighboring samples related to the current decoded block) before intra-frame predictions are generated from intra-frame references. Video encoder 22 and video decoder 30 may derive certain intra-frame prediction modes in which MDIS is enabled based on the degree to which the current intra-frame prediction mode is close to the horizontal or vertical direction. The mode in which MDIS is enabled may be derived based on the absolute difference of the intra-frame mode index between the current mode and the horizontal and vertical mode indexes. If the absolute difference exceeds a threshold (e.g., the threshold may be related to the block size), the MDIS filter is not applied, otherwise, the MDIS filter is applied. In other words, for intra-frame modes that are far away from the horizontal or vertical direction (e.g., compared to the threshold), an intra-frame reference filter is applied. In some examples, MDIS is not applied to non-angular modes such as DC or flat modes.
[0109] In JEM, MDIS is replaced with a smoothing filter coding mode, such as reference sample adaptive filtering (RSAF) or adaptive reference sample smoothing (ARSS), which in some examples may be applied to all intra-prediction modes except DC mode. Generally speaking, such techniques may be referred to as intra-reference sample smoothing filters. Video encoder 22 may be configured to generate and signal a syntax element, such as a flag, that indicates whether an intra-reference sample smoothing filter is applied to a current block. In some examples, video encoder 22 may not be configured to explicitly code a syntax element indicating whether a filter is applied to a current block. In the context of the present invention, explicitly coding a syntax element refers to actually encoding or decoding the value of a syntax element in an encoded video bitstream. That is, explicitly coding may refer to video encoder 22 generating a value for a syntax element and explicitly encoding the value into an encoded video bitstream. Likewise, explicitly coding may refer to video decoder 30 receiving the value of a syntax element in an encoded bitstream and explicitly decoding the value of the syntax element.
[0110] In some examples, video encoder 22 is not configured to signal and explicitly encode a syntax element (e.g., a flag) that indicates whether an intra-reference sample smoothing filter is applied to a current block of video data. Instead, video encoder 22 is configured to "hide" the value of the flag in the transform coefficients. That is, the value of the flag indicating whether an intra-reference sample smoothing filter is applied to the current block is not explicitly encoded, but can be determined (e.g., implicitly decoded) by video decoder 30 based on certain values or characteristics of the transform coefficients associated with the current block. For example, if the transform coefficient satisfies a certain parity condition (e.g., has a positive or negative value), then video decoder 30 derives the flag as having a value of 1, otherwise, video decoder 30 derives the value of the flag as 0, or vice versa.
[0111] In the context of this disclosure, the term decoding may generally include explicit and implicit decoding of values of syntax elements. In explicit decoding, the encoded syntax elements are present in the encoded video bitstream. Video decoder 30 explicitly decodes the encoded syntax elements to determine the values of the syntax elements. In implicit decoding, the syntax elements are not sent in the encoded video bitstream. Instead, video decoder 30 derives the values of the syntax elements from video coding statistics (e.g., co-location of transform coefficients) based on some predetermined criteria.
[0112] Another method used in JEM is the PDPC mode. As described above, PDPC is a coding mode that weights intra predictors and intra reference samples, where the weights can be derived based on block size (including width and height) and intra prediction mode.
[0113] The following describes example techniques of this disclosure for determining a prediction direction, determining a prediction mode, determining a coding mode, determining the use of intra-frame filtering in video coding (e.g., video encoding and / or video decoding), and explicitly coding and signaling syntax elements. The techniques disclosed herein may be used in any combination and in any conjunction with other techniques. In some examples, the coding techniques of this disclosure may be implemented using syntax elements (e.g., flags), which may be explicitly coded and signaled, hidden in transform coefficient information or elsewhere, derived at video encoder 22 and video decoder 30 without signaling, etc.
[0114] The techniques of this disclosure are described with reference to intra-reference sample smoothing filters and PDPC modes (generally, "coding modes"). Intra-reference sample smoothing and PDPC modes are used for illustration and description purposes. The techniques of this disclosure are not limited to those examples, and the disclosed techniques may be applied to other video coding modes, techniques, and tools.
[0115] Initially, techniques related to intra-reference sample smoothing filter syntax elements (e.g., flags) are discussed. This disclosure proposes that video encoder 22 generate and / or signal an intra-reference sample smoothing filter flag in an explicit manner. That is, video encoder 22 may be configured to explicitly encode a syntax element indicating whether a particular coding mode (e.g., an intra-reference sample smoothing filter) is used to code a block of video data. For example, video encoder 22 may generate an intra-reference sample smoothing filter flag and signal it in an encoded video bitstream. In this way, video encoder 22 may avoid any need to modify transform coefficients to ensure that co-location conditions are valid (e.g., the co-location conditions of the transform coefficients correctly indicate the value of the flag), as may be done when the intra-smoothing flag is not explicitly coded. This technique may reduce apparent complexity at video encoder 22. Video decoder 30 may be configured to receive an explicitly coded syntax element (e.g., an intra-reference sample smoothing filter flag) in an encoded video bitstream, for example, rather than deriving the value of the flag from the co-location of the transform coefficients. Video decoder 30 may then explicitly decode the value of the intra-reference sample smoothing filter flag.
[0116] However, in some examples, coding the intra-reference sample smoothing filter syntax element may be a burden for some blocks (i.e., the number of bits used to code the bits may be significantly increased). For example, where the residual information associated with the block is small and a few bits are used to encode the block, the bits used to signal the syntax element (e.g., the intra-reference sample smoothing filter flag) may produce a higher bit rate ratio than desired. To address this potential problem, the video encoder 22 may be configured to explicitly encode and signal the intra-reference sample smoothing filter flag if the video data block has a certain number of non-zero transform coefficients, or the number of non-zero transform coefficients exceeds a threshold. For example, the threshold may be equal to 3, meaning that if the video data block has 3 or more non-zero transform coefficients, the video encoder 22 signals (e.g., explicitly encodes) the intra-reference sample smoothing filter flag. Otherwise, the video encoder 22 does not explicitly encode the intra-reference sample smoothing filter flag. Other threshold examples include 0, 1, 2, or any other number of non-zero transform coefficients.
[0117] Thus, according to one example of the present disclosure, video encoder 22 may be configured to determine a coding mode (e.g., using an intra-reference sample smoothing filter) for encoding a first block of video data. Based on whether an intra-reference sample smoothing filter is used for the first block of video data, video encoder 22 may be configured to explicitly encode a first syntax element (e.g., an intra-reference sample smoothing filter flag) indicating whether a coding mode (e.g., an intra-reference sample smoothing filter) is used for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold. That is, if the first block of video data is associated with a number of non-zero transform coefficients greater than the threshold, video encoder 22 explicitly encodes the first syntax element. Video encoder 22 may signal the first syntax element in an encoded video bitstream.
[0118] For the second block of video data, video encoder 22 may be configured to not encode a value for a syntax element (e.g., an intra reference sample smoothing filter flag) indicating whether to use a coding mode for the second block of video data if the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold value. That is, the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold value.
[0119] In a reciprocal manner, video decoder 30 may be configured to receive a first block of video data and, if the first block of video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold, receive a first syntax element (e.g., an intra-reference sample smoothing filter flag) indicating whether a coding mode (e.g., use of an intra-reference sample smoothing filter) is used for the first block of video data. Video decoder 30 may be further configured to explicitly decode a value of the received first syntax element and apply the coding mode (e.g., use of an intra-reference sample smoothing filter) to the first block of video data according to the value of the first syntax element.
[0120] In the event that video encoder 22 does not explicitly encode the syntax element (e.g., for a second block of video data as described above), video decoder 30 may be configured to receive the second block of video data, infer a value of a second syntax element indicating whether to use a coding mode (e.g., an intra-reference sample smoothing filter) for the second block of video data, and apply the coding mode (e.g., use the intra-reference sample smoothing filter) according to the inferred value of the second syntax element, in the event that the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold value, and apply the coding mode (e.g., use the intra-reference sample smoothing filter) according to the inferred value of the second syntax element. As discussed in more detail below, video decoder 30 may be configured to infer the value of the syntax element using one or more techniques, including inferring the value of the syntax element from characteristics of transform coefficients associated with the block of video data, and / or inferring the value of the syntax element based on some predefined default value (e.g., always apply the intra-reference sample smoothing filter, never apply the intra-reference sample smoothing filter, apply a default filter, etc.).
[0121] In the above example, the coding mode is to use an intra reference sample smoothing filter. In other examples discussed below, the coding mode indicated by an explicitly coded syntax element may be a PDPC mode. However, the techniques of this disclosure may be used with other coding modes.
[0122] In some examples, video encoder 22 may be configured to compare the number of non-zero transform coefficients associated with a block of video data to a threshold value jointly for luma and chroma components of the block of video data when determining whether to explicitly encode syntax elements for a coding mode. That is, video encoder 22 may consider a number of non-zero coefficients for luma blocks and chroma blocks together. Video decoder 30 may be configured to perform the same comparison with video encoder 22 when determining whether syntax elements for a coding mode have been explicitly encoded and will be received.
[0123] In other examples, video encoder 22 may be configured to compare non-zero transform coefficients only for luma blocks when determining whether to explicitly encode syntax elements for a coding mode. In this example, video encoder 22 may be configured to generate syntax elements for a coding mode separately for luma blocks and chroma blocks. Thus, further in this example, video encoder 22 may consider non-zero transform coefficients only for chroma blocks when determining whether to explicitly encode syntax elements for a coding mode for chroma blocks. Moreover, video decoder 30 may be configured to perform the same comparison as video encoder 22 when determining whether syntax elements for a coding mode have been explicitly encoded and will be received for luma and / or chroma coding blocks.
[0124] In another example, the manner in which video encoder 22 and video decoder 30 are configured to count non-zero transform coefficients to determine to explicitly code syntax elements may be related to the type of tile. For example, video encoder 22 and video decoder 30 may be configured to use one technique for counting non-zero transform coefficients for I tiles and another different technique for counting non-zero transform coefficients for non-I tiles (e.g., P tiles or B tiles).
[0125] In another example, video encoder 22 and video decoder 30 may be configured to count non-zero transform coefficients using a technique that depends on whether luma and chroma components are coded together or separately. For example, in some partition structures, luma and chroma components have the same partition structure. In other partition structures (e.g., examples of QTBT partitioning), luma and chroma components may be partitioned independently so that their respective partition structures are different from each other. In this example, separate coding may mean that luma and chroma blocks may have different partition representations or tree structures. In this example, when separate and / or independent luma / chroma coding is enabled for I-pictures, video encoder 22 and video decoder 30 may be configured to count non-zero transform coefficients for luma components. For non-I-pictures, when separate coding is not enabled, video encoder 22 and video decoder 30 may be configured to count non-zero transform coefficients for both luma and chroma transform coefficients or only for luma transform coefficients.
[0126] In another example, when the video encoder 22 and the video decoder 30 are configured to count non-zero coefficients for both luma and chroma components, the non-zero coefficient counting is performed per component. For example, the video encoder 22 and the video decoder 30 may include three non-zero coefficient counters; one counter for each color component (e.g., Y, Cb, and Cr). In another example, the video encoder 22 and the video decoder 30 may include two counters; one counter for one luma component and one counter for two chroma components. In this example, the thresholds may be set according to the components, and the thresholds may be different for different color components.
[0127] In one example, the threshold used to explicitly code and / or signal the intra-reference sample smoothing filter flag is the same as the threshold used to explicitly code and signal the primary and / or secondary transform indices or flags. In this example, there is some degree of consistency between different video coding techniques (e.g., between transform signaling and intra-reference sample smoothing filter flag signaling), and one non-zero coefficient count and threshold can be used, which can simplify implementation.
[0128] In another example, video encoder 22 and / or video decoder 30 may explicitly code the intra-reference sample smoothing filter flag based on a threshold determination of non-zero transform coefficients only for non-transform skip blocks. That is, for transform skip blocks, video encoder 22 and video decoder 30 may not explicitly code the intra-reference sample smoothing filter flag. For non-transform skip blocks (i.e., blocks to which transforms are applied), video encoder 22 and video decoder 30 may explicitly code the intra-reference sample smoothing filter flag. Transform skip is a method in which a horizontal or vertical transform or both transforms are not applied to the residue of a block (i.e., skipped). The transform may be any transform: a primary transform or a secondary transform or both.
[0129] In another example, the video encoder 22 and / or the video decoder 30 may explicitly code the intra-reference sample smoothing filter flag based on a threshold determination of non-zero transform coefficients only for blocks coded with a particular intra-prediction mode. For example, the video encoder 22 and / or the video decoder 30 may explicitly code the intra-reference sample smoothing filter flag based on a threshold determination of non-zero transform coefficients for blocks coded with an intra-prediction mode other than flat mode, linear model (LM) prediction mode, or DC mode. For example, if a block of a component involved (e.g., a luma or chroma component) is coded using flat mode, the video encoder 22 and / or the video decoder 30 will not consider a number of non-zero transform coefficients of this involved component when determining to explicitly code the intra-reference sample smoothing filter flag. In this way, the video encoder 22 is configured to explicitly code the intra-reference sample smoothing filter flag based on the intra-prediction mode used to encode the block of video data. Likewise, video decoder 30 is configured to receive an intra reference sample smoothing filter flag based on the intra prediction mode used to encode a block of video data.
[0130] In another example, in addition to comparing the number of non-zero transform coefficients to a threshold, video encoder 22 and video decoder 30 may apply a block size threshold in order to determine whether to explicitly code an intra-reference sample smoothing filter flag. For example, video encoder 22 may be configured to explicitly code and signal an intra-reference sample smoothing filter flag for blocks of a size greater than or equal to a predetermined minimum size and less than a predetermined maximum block size, where the minimum and maximum block sizes may be configurable or fixed for video encoder 22 and video decoder 30. Likewise, video decoder 30 may be configured to receive and explicitly decode an intra-reference sample smoothing filter flag for blocks of a size greater than or equal to a predetermined minimum size and less than a predetermined maximum block size.
[0131] Thus, in this example, video encoder 22 may be configured to explicitly code the intra-reference sample smoothing filter flag if the first block of video data is greater than or equal to a predetermined size. Likewise, video decoder 30 may be configured to receive and explicitly decode the intra-reference sample smoothing filter flag if the first block of video data is greater than or equal to a predetermined size.
[0132] The minimum block size threshold may be set to be greater than or equal to 8×8, meaning that all blocks smaller than 8×8 (e.g., 4×4, 4×8, 8×4, etc.) are restricted, and the intra reference sample smoothing filter flag is not signaled for such blocks. Similarly, the maximum block threshold may be set to 32×32, for example. In another example, the threshold may be expressed as width*height. That is, 8×8 converts to 64, and 32×32 converts to 1024. To check whether the current block is restricted to explicitly coding the intra reference sample smoothing filter flag, video encoder 22 and video decoder 30 may check the width*height of the block by the threshold.
[0133] In any of the above examples where the intra-reference sample smoothing filter flag is not explicitly coded and / or signaled, video decoder 30 may be configured to apply some default smoothing filter to the video data block. For example, video decoder 30 may apply an MDIS filter (which is mode dependent), video decoder 30 may apply any other filter, or video decoder 30 may apply no filtering.
[0134] In other examples of the present invention, video encoder 22 may be configured to explicitly code and signal flags (e.g., intra-reference sample smoothing filter flags) that are used only for certain intra-prediction modes. For example, video encoder 22 may be configured to explicitly code and signal the intra-reference sample smoothing filter flag for intra-prediction modes that allow MDIS (e.g., MDIS mode), for MDIS mode and flat mode, or for any other intra-prediction mode subset of available intra-prediction modes.
[0135] In another example, the video encoder 22 and the video decoder 33 are configured to apply an intra-reference sample smoothing filter to a video data block encoded with an intra-prediction mode that is far from the horizontal or vertical direction (e.g., compared to a threshold value). Additionally or optionally, the video encoder 22 and the video decoder 33 are configured to apply an intra-reference sample smoothing filter to a video data block coded using a flat intra-prediction mode or other non-angular intra-prediction mode. The video encoder 22 and the video decoder 30 may be configured to derive a subset of intra-prediction modes to determine whether to apply an intra-reference sample smoothing filter. The video encoder 22 and the video decoder 33 may be configured to derive a subset based on an intra-prediction mode direction. In one example, the video encoder 22 and the video decoder 33 may be configured to derive a subset of intra-prediction modes based on how close (e.g., based on a threshold value) the index of the intra-prediction mode is to the index of the horizontal, vertical, and / or diagonal intra-prediction mode. Another separate subset of intra-prediction modes may be assigned for non-angular directions, such as flat and / or DC intra-frame modes, and the like.
[0136] In another example, the video encoder 22 and the video decoder 30 are configured to explicitly code and signal an intra-reference sample smoothing filter flag for different color components of a block of video data. For example, the video encoder 22 and the video decoder 33 are configured to explicitly code and signal a flag for a luma component. Additionally, the video encoder 22 and the video decoder 33 are configured to explicitly code and signal a flag for a chroma Cb (e.g., Chroma_Cb) and a chroma Cr (e.g., Chroma_Cr) component. The signaling of a flag for one component may depend on the value of a flag that has been signaled for the other component. As an example, the video encoder 22 may be configured to explicitly code and signal an intra-reference sample smoothing filter flag for both luma and chroma components. When a flag is signaled for chroma, entropy coding / parsing of the flag by the video encoder 22 and the video decoder 30, respectively, may depend on the value of the flag signaled for luma. Dependencies may be reflected by context values (but are not limited to such).
[0137] In another example, the intra-reference sample smoothing filter flag may not be signaled, but rather derived from the intra-prediction mode index for a decoded video data block by the video decoder 30. For example, a video data block encoded using an intra-prediction mode with an even mode index uses an intra-reference sample smoothing filter (enabled flag), and a video data block encoded using an intra-prediction mode with an odd mode index does not have the intra-reference sample smoothing filter applied (disabled flag), or vice versa.
[0138] In some examples, video encoder 22 and video decoder 30 may apply intra-smoothing to a first block having a particular intra-mode, and applying intra-smoothing to neighboring blocks having an intra-mode close to the intra-mode used for the first block may provide a preferred variant to intra-prediction. This is because neighboring intra-prediction mode directions (e.g., intra-prediction mode directions that are immediately adjacent to or close to each other with respect to a threshold) may provide similar intra-predictors (due to the proximity of the directions), but the smoothing flag may further distinguish the predictors. In one example, video encoder 22 and video decoder 30 may be configured to perform intra-smoothing on every other intra-prediction mode. For example, intra-smoothing may be performed for intra-prediction modes with even indices, and may not be performed for intra-prediction modes with odd indices, or vice versa. In other examples, intra-prediction may be performed on every other intra-prediction mode, every other intra-prediction mode, or for any subset of intra-prediction modes.
[0139] In addition, the intra-reference sample smoothing filter flag need not be explicitly signaled, and a bit may be saved. Non-corner intra-prediction modes may be associated with separate rules. For example, video encoder 22 and video decoder 30 may be configured to always apply intra-reference sample smoothing for a block of video data coded using a flat intra-prediction mode. In another example, video encoder 22 and video decoder 30 may be configured to not apply intra-reference sample smoothing for a block of video data coded using a flat intra-prediction mode. In still other examples, video encoder 22 and video decoder 30 may be configured to explicitly code an intra-reference sample smoothing filter flag to indicate whether intra-reference sample smoothing is applied to a block of video data coded using a flat intra-prediction mode.
[0140] In some examples, context modeling for entropy coding of the intra-reference sample smoothing filter flag (i.e., context for entropy coding, such as CABAC) may be related to the intra-prediction mode. For example, the video encoder 22 and the video decoder 30 may be configured to entropy code the intra-reference sample smoothing filter flag using one context for certain intra-prediction modes, and the video encoder 22 and the video decoder 30 may be configured to entropy code the intra-reference sample smoothing filter flag using another context for other intra-prediction modes. The context assignment may be based on a subset of intra-prediction modes available for the intra-prediction modes. That is, the video encoder 22 and the video decoder 30 may be configured to assign a context for coding the intra-reference sample smoothing filter flag based on the subset of intra-prediction modes to which the intra-prediction mode of the current block of video data belongs. For example, the subset of intra-prediction modes may be a non-angular mode, an angular mode, a mode to which MDIS may be applied, and / or a flat mode. The video encoder 22 and the video decoder 30 may be configured to derive the subset to which the current block of video data belongs based on how close the current intra-prediction mode is to a particular mode (e.g., based on a threshold value). For example, the video encoder 22 and the video decoder 30 may be configured to determine how close the index for the current intra-prediction mode is to an index for a horizontal intra-prediction mode, a vertical intra-prediction mode, a diagonal intra-prediction mode, or other intra-prediction mode. Another separate subset may be assigned for non-angular directions, such as flat and / or DC intra-modes, etc.
[0141] PDPC mode signaling techniques will now be discussed. In one example of the present invention, PDPC mode usage may be restricted, and video encoder 22 is configured to not signal a PDPC flag for restricted conditions. The PDPC flag, or more generally, a PDPC syntax element, indicates that the PDPC mode is used for a particular block of particular video data. Restrictions may be imposed similar to techniques for the intra-reference sample smoothing filter flag as described above.
[0142] In one example, video encoder 22 may be configured to explicitly encode and signal a PDPC mode flag if a block of video data has a certain number of non-zero transform coefficients or the number of non-zero transform coefficients exceeds a threshold. For example, the threshold may be equal to 3, meaning that if a block of video data has 3 or more non-zero transform coefficients, then video encoder 22 signals (e.g., explicitly encodes) a PDPC mode flag. Otherwise, video encoder 22 does not explicitly encode the PDPC mode flag. In some examples, the threshold may be the same as that used to signal the transform index. Other threshold examples include 0, 1, 2, or any other number of non-zero transform coefficients. In one example, the threshold is equal to 2, meaning that video encoder 22 signals a PDPC mode flag if a block of video data has more than 1 non-zero transform coefficient.
[0143] Thus, according to one example of the present disclosure, video encoder 22 may be configured to determine a coding mode (e.g., using a PDPC mode) for encoding a first block of video data. Based on whether the PDPC mode is used for the first block of video data, video encoder 22 may be configured to explicitly encode a first syntax element (e.g., a PDPC mode flag) indicating whether the coding mode (e.g., the PDPC mode) is used for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold. That is, if the first block of video data is associated with a number of non-zero transform coefficients greater than the threshold, video encoder 22 explicitly encodes the first syntax element. Video encoder 22 may signal the first syntax element in an encoded video bitstream.
[0144] For the second block of video data, video encoder 22 may be configured to not encode a value for a syntax element (e.g., a PDPC mode flag) indicating whether to use the coding mode for the second block of video data if the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold value. That is, the second block of video data is associated with a number of non-zero transform coefficients that is less than the threshold value.
[0145] In a reciprocal manner, video decoder 30 may be configured to receive a first block of video data and, if the first block of video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold, receive a first syntax element (e.g., a PDPC mode flag) indicating whether a coding mode (e.g., using a PDPC mode) is used for the first block of video data. Video decoder 30 may be further configured to explicitly decode the value of the received first syntax element and apply the coding mode (e.g., the PDPC mode) to the first block of video data according to the value of the first syntax element.
[0146] In the event that video encoder 22 does not explicitly encode a syntax element (e.g., for a second block of video data as described above), video decoder 30 may be configured to receive the second block of video data, infer a value of a second syntax element indicating whether a coding mode (e.g., a PDPC mode) is to be used for the second block of video data, and apply the coding mode (e.g., the PDPC mode) according to the inferred value of the second syntax element, in the event that the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold value.
[0147] In some examples, video encoder 22 may be configured to compare the number of non-zero transform coefficients associated with a block of video data to a threshold value jointly for luma and chroma components of the block of video data when determining whether to explicitly encode syntax elements for a coding mode (e.g., PDPC mode). That is, video encoder 22 may consider a number of non-zero coefficients for luma blocks and chroma blocks together. Video decoder 30 may be configured to perform the same comparison with video encoder 22 when determining whether syntax elements for a coding mode have been explicitly encoded and will be received.
[0148] In other examples, video encoder 22 may be configured to compare non-zero transform coefficients only for luma blocks when determining whether to explicitly encode syntax elements for a coding mode (e.g., PDPC mode). In this example, video encoder 22 may be configured to generate syntax elements for the coding mode separately for luma blocks and chroma blocks. Thus, further in this example, video encoder 22 may consider non-zero transform coefficients only for chroma blocks when determining whether to explicitly encode syntax elements for a coding mode (e.g., PDPC mode) for chroma blocks. Moreover, video decoder 30 may be configured to perform the same comparison as video encoder 22 when determining whether syntax elements for a coding mode have been explicitly encoded and will be received for luma and / or chroma coding blocks.
[0149] In another example, the manner in which video encoder 22 and video decoder 30 are configured to count non-zero transform coefficients to determine to explicitly encode syntax elements may be related to the type of tile. For example, video encoder 22 and video decoder 30 may be configured to use one technique for counting non-zero transform coefficients for I tiles and another different technique for counting non-zero transform coefficients for non-I tiles (e.g., P tiles or B tiles).
[0150] In another example, video encoder 22 and video decoder 30 may be configured to count non-zero transform coefficients using a technique that depends on whether luma and chroma components are coded together or separately. For example, in some partition structures, luma and chroma components have the same partition structure. In other partition structures (e.g., examples of QTBT partitioning), luma and chroma components may be partitioned independently so that their respective partition structures are different from each other. In this example, separate coding may mean that luma and chroma blocks may have different partition representations or tree structures. In this example, when separate and / or independent luma / chroma coding is enabled for I-pictures, video encoder 22 and video decoder 30 may be configured to count non-zero transform coefficients for luma components. For non-I-pictures, when separate coding is not enabled, video encoder 22 and video decoder 30 may be configured to count non-zero transform coefficients for luma and chroma transform coefficients or only for luma transform coefficients.
[0151] In another example, when the video encoder 22 and the video decoder 30 are configured to count non-zero coefficients for both luma and chroma components, the non-zero coefficient counting is performed per component. For example, the video encoder 22 and the video decoder 30 may include three non-zero coefficient counters; one counter for each color component (e.g., Y, Cb, and Cr). In another example, the video encoder 22 and the video decoder 30 may include two counters; one counter for one luma component and one counter for two chroma components. In this example, the thresholds may be set according to the components, and the thresholds may be different for different color components.
[0152] In another example, video encoder 22 and / or video decoder 30 may explicitly code the PDPC mode flag based on a threshold determination of non-zero transform coefficients only for non-transform skip blocks. That is, for transform skip blocks, video encoder 22 and video decoder 30 may not explicitly code the PDPC mode flag. For non-transform skip blocks (i.e., blocks to which transforms are applied), video encoder 22 and video decoder 30 may explicitly code the PDPC mode flag. Transform skip is a method in which a horizontal or vertical transform or both transforms are not applied to the residue of a block (i.e., skipped). The transform may be any transform: a primary transform or a secondary transform or both.
[0153] In another example, the video encoder 22 and / or the video decoder 30 may explicitly code the PDPC mode flag based on a threshold determination of non-zero transform coefficients only for blocks coded with a specific intra-prediction mode. For example, the video encoder 22 and / or the video decoder 30 may explicitly code the PDPC mode flag based on a threshold determination of non-zero transform coefficients for blocks coded with intra-prediction modes other than flat mode, linear model (LM) prediction mode, or DC mode. For example, if a block of a component involved (e.g., luma or chroma component) is coded using a flat mode, the video encoder 22 and / or the video decoder 30 will not consider several non-zero transform coefficients of the component involved when determining to explicitly code the PDPC mode flag. In this way, the video encoder 22 is configured to explicitly code the PDPC mode flag based on the intra-prediction mode used to encode the video data block. Likewise, the video decoder 30 is configured to receive the PDPC mode flag based on the intra-prediction mode used to encode the video data block.
[0154] In another example, in addition to comparing the number of non-zero transform coefficients to a threshold, video encoder 22 and video decoder 30 may apply a block size threshold in order to determine whether to explicitly code the PDPC mode flag. For example, video encoder 22 may be configured to explicitly code and signal the PDPC mode flag for blocks of a size greater than or equal to a predetermined minimum size and less than a predetermined maximum block size, where the minimum and maximum block sizes may be configurable or fixed for video encoder 22 and video decoder 30. Likewise, video decoder 30 may be configured to receive and explicitly decode the PDPC mode flag for blocks of a size greater than or equal to a predetermined minimum size and less than a predetermined maximum block size.
[0155] Thus, in this example, video encoder 22 may be configured to explicitly decode the PDPC mode flag when the first block of video data is greater than or equal to a predetermined size. Likewise, video decoder 30 may be configured to receive and explicitly decode the PDPC mode flag when the first block of video data is greater than or equal to a predetermined size.
[0156] The minimum block size threshold may be set to be greater than or equal to 8x8, meaning that all blocks smaller than 8x8 (e.g., 4x4, 4x8, 8x4, etc.) are restricted, and the PDPC mode flag is not signaled for such blocks. Similarly, the maximum block threshold may be set to 32x32, for example. In another example, the threshold may be expressed as width*height. That is, 8x8 converts to 64, and 32x32 converts to 1024. To check whether the current block is restricted to explicitly coding the PDPC mode flag, video encoder 22 and video decoder 30 may check the width*height of the block by the threshold.
[0157] In any of the above examples where the intra-reference sample smoothing filter flag is not explicitly coded and / or signaled, video decoder 30 may be configured to derive some default values for the PDPC mode flag for certain intra-prediction modes. In one example, for some smooth intra-prediction modes (e.g., flat mode), the PDPC mode is always applied.
[0158] In another example, the video encoder 22 and the video decoder 30 are configured to explicitly code and signal the PDPC mode flag for different color components of a block of video data. For example, the video encoder 22 and the video decoder 33 are configured to explicitly code and signal a flag for a luma component. Additionally, the video encoder 22 and the video decoder 33 are configured to explicitly code and signal one flag for a chroma Cb (e.g., Chroma_Cb) and a chroma Cr (e.g., Chroma_Cr) component. The signaling of a flag for one component may depend on the value of a flag already signaled for the other component. As an example, the video encoder 22 may be configured to explicitly code and signal the PDPC mode flag for both luma and chroma components. When a flag is signaled for chroma, the entropy coding / parsing of the flag by the video encoder 22 and the video decoder 30, respectively, may depend on the value of the flag signaled for luma. The dependency may be reflected by a context value (but is not limited thereto).
[0159] Additionally or alternatively, PDPC mode restrictions may be performed based on an intra-prediction mode basis. For example, for certain intra-prediction modes or for some subsets of the intra-prediction mode subsets, the video encoder 22 and the video decoder 30 may be configured not to apply the PDPC mode and the video encoder 22 may be configured not to explicitly encode the PDPC flag. The video encoder 22 and the video decoder 30 may be configured to derive the subset to which the current block of video data belongs based on the degree to which the current intra-prediction mode is close to a particular mode (e.g., based on a threshold). For example, the video encoder 22 and the video decoder 30 may be configured to determine the degree to which the index for the current intra-prediction mode is close to the index for the horizontal intra-prediction mode, the vertical intra-prediction mode, the diagonal intra-prediction mode, or other intra-prediction mode. Another separate subset may be assigned for non-angular directions, such as flat and / or DC intra-frame modes, etc. In a specific example, the PDPC mode is not applied to the flat mode.
[0160] In another example, the PDPC mode may be combined with other video coding tools or techniques, such as the secondary transform and / or intra reference sample smoothing filter described above. This combination may be allowed for certain intra modes, and a PDPC flag mode may be signaled for conditions where the PDPC mode is allowed. The intra mode selection may be one of the examples described above.
[0161] In some examples, context modeling for entropy coding of the PDPC mode flag (i.e., context for entropy coding, such as CABAC) may be related to the intra-prediction mode and / or block size. For example, video encoder 22 and video decoder 30 may be configured to entropy code the PDPC mode flag using one context for certain intra-prediction modes, and video encoder 22 and video decoder 30 may be configured to entropy code the PDPC mode flag using another context for other intra-prediction modes. The context assignment may be a subset of intra-prediction modes based on available intra-prediction modes. That is, video encoder 22 and video decoder 30 may be configured to assign a context for coding the PDPC mode flag based on the subset of intra-prediction modes to which the intra-prediction mode of the current block of video data belongs. For example, the subset of intra-prediction modes may be a non-angular mode, an angular mode, a mode to which MDIS may be applied, and / or a flat mode. The video encoder 22 and the video decoder 30 may be configured to derive the subset to which the current block of video data belongs based on how close the current intra-prediction mode is to a particular mode (e.g., based on a threshold value). For example, the video encoder 22 and the video decoder 30 may be configured to determine how close the index for the current intra-prediction mode is to an index for a horizontal intra-prediction mode, a vertical intra-prediction mode, a diagonal intra-prediction mode, or other intra-prediction mode. Another separate subset may be assigned for non-angular directions, such as flat and / or DC intra-modes, etc.
[0162] Figure 4 2 is a block diagram illustrating an example video encoder 22 that may implement the techniques of this disclosure. Figure 4 , and the diagram should not be considered as limiting the techniques as broadly illustrated and described in this disclosure. However, the techniques of this disclosure may be applicable to other coding standards or methods.
[0163] exist Figure 4 In the example of , video encoder 22 includes prediction processing unit 100, video data memory 101, residual generation unit 102, transform processing unit 104, quantization unit 106, inverse quantization unit 108, inverse transform processing unit 110, reconstruction unit 112, filter unit 114, decoded picture buffer 116, and entropy encoding unit 118. Prediction processing unit 100 includes inter-prediction processing unit 120 and intra-prediction processing unit 126. Inter-prediction processing unit 120 may include a motion estimation unit and a motion compensation unit (not shown).
[0164] The video data memory 101 may be configured to store video data to be encoded by components of the video encoder 22. The video data stored in the video data memory 101 may be obtained, for example, from a video source 18. The decoded picture buffer 116 may be a reference picture memory that stores reference video data for use by the video encoder 22, for example, in encoding the video data in an intra-frame or inter-frame prediction mode. The video data memory 101 and the decoded picture buffer 116 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 video data memory 101 and the decoded picture buffer 116 may be provided by the same memory device or by separate memory devices. In various examples, the video data memory 101 may be on-chip with other components of the video encoder 22, or off-chip relative to those components. The video data memory 101 may be connected to Figure 1 The storage medium 20 is the same as or a part of it.
[0165] Video encoder 22 receives video data. Video encoder 22 may encode each CTU in a tile of a picture of the video data. Each of the CTUs may be associated with a luma coding tree block (CTB) of equal size and a corresponding CTB of the picture. As part of encoding the CTU, prediction processing unit 100 may perform partitioning to partition the CTB of the CTU into progressively smaller blocks. In some examples, video encoder 22 may partition the blocks using a QTBT structure. The smaller blocks may be coding blocks of a CU. For example, prediction processing unit 100 may partition the CTBs associated with the CTU according to a tree structure. According to one or more techniques of the present invention, for each corresponding non-leaf node of the tree structure at each depth level of the tree structure, there are multiple allowed splitting patterns for the corresponding non-leaf node and the video block corresponding to the corresponding non-leaf node is partitioned into video blocks of child nodes corresponding to the corresponding non-leaf node according to one of the multiple allowed splitting patterns.
[0166] Video encoder 22 may encode a CU of a CTU to generate an encoded representation of the CU (i.e., a coded CU). As part of encoding a CU, prediction processing unit 100 may partition the coding blocks associated with the CU among one or more PUs of the CU. Thus, each PU may be associated with a luma prediction block and a corresponding chroma prediction block. Video encoder 22 and video decoder 30 may support PUs of various sizes. As indicated 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 block of the PU. Assuming that the size of a particular CU is 2N×2N, video encoder 22 and video decoder 30 may support PU sizes of 2N×2N or N×N for intra-prediction, and symmetric PU sizes of 2N×2N, 2N×N, N×2N, N×N, or similar sizes for inter-prediction. Video encoder 22 and video decoder 30 may also support asymmetric partitioning of PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter prediction.
[0167] The inter-prediction processing unit 120 may generate predictive data for a PU by performing inter-prediction on each PU of the CU. The predictive data for the PU may include the predictive block of the PU and the motion information of the PU. Depending on whether the PU is in an I-tile, a P-tile, or a B-tile, the inter-prediction processing unit 120 may perform different operations for the PU of the CU. In an I-tile, all PUs are intra-predicted. Therefore, if the PU is in an I-tile, the inter-prediction processing unit 120 does not perform inter-prediction on the PU. Therefore, for blocks encoded in I mode, the predicted blocks are formed from previously encoded neighboring blocks in the same tile using spatial prediction. If the PU is in a P-tile, the inter-prediction processing unit 120 may use unidirectional inter-prediction to generate the predictive block of the PU. If the PU is in a B-tile, the inter-prediction processing unit 120 may use unidirectional or bidirectional inter-prediction to generate the predictive block of the PU.
[0168] Intra-prediction processing unit 126 may generate predictive data for a PU by performing intra-prediction on the PU. The predictive data for the PU may include a predictive block and various syntax elements for the PU. Intra-prediction processing unit 126 may perform intra-prediction on PUs in I-pictures, P-pictures, and B-pictures. Intra-prediction processing unit 126 may be configured to determine one or more coding modes to apply when predicting a block of video data using intra-prediction, including applying an intra-reference sample smoothing filter and / or a PDPC mode. Intra-prediction processing unit 126 and / or another component of video encoder 22 may be configured to perform the explicit coding techniques described above for intra-reference sample smoothing filters and PDPC mode syntax coding.
[0169] To perform intra prediction on a PU, intra prediction processing unit 126 may use multiple intra prediction modes to generate multiple sets of predictive data for the PU. Intra prediction processing unit 126 may use samples from sample blocks of neighboring PUs to generate predictive blocks for the PU. For PUs, CUs, and CTUs, assuming a left-to-right, top-to-bottom coding order, the neighboring PU may be above, to the right, to the left, or to the left of the PU. Intra prediction processing unit 126 may use various numbers of intra prediction modes, for example, 33 directional intra prediction modes. In some examples, the number of intra prediction modes may depend on the size of the region associated with the PU.
[0170] Prediction processing unit 100 may select predictive data for PUs of a CU from the predictive data generated for the PUs by inter-prediction processing unit 120 or the predictive data generated for the PUs by intra-prediction processing unit 126. In some examples, prediction processing unit 100 selects predictive data for the PUs of the CU based on a rate / distortion metric of the set of predictive data. The predictive block of the selected predictive data may be referred to herein as a selected predictive block.
[0171] Residual generation unit 102 may generate a residual block (e.g., luma, Cb, and Cr residual block) for a CU based on the coding blocks (e.g., luma, Cb, and Cr coding blocks) of the CU and selected predictive blocks (e.g., predictive luma blocks, predictive Cb blocks, and predictive Cr blocks) of the PUs of the CU. For example, residual generation unit 102 may generate the residual block for the CU such that each sample in the residual block has a value equal to a difference between a sample in the coding blocks of the CU and a corresponding sample in a corresponding selected predictive block of the PUs of the CU.
[0172] Transform processing unit 104 may perform quadtree partitioning to partition the residual blocks associated with a CU into transform blocks associated with TUs of the CU. Thus, a TU may be associated with one luma transform block and two chroma transform blocks. The size and positioning of the luma transform blocks and the chroma transform blocks of the TUs of the CU may or may not be based on the size and positioning of the prediction blocks of the PUs of the CU. A quadtree structure referred to as a “residual quadtree” (RQT) may include nodes associated with each of the regions. The TUs of a CU may correspond to leaf nodes of the RQT.
[0173] Transform processing unit 104 may generate transform coefficient blocks for each TU of a CU by applying one or more transforms to the transform blocks of the TU. Transform processing unit 104 may apply various transforms to the transform blocks associated with the TU. For example, transform processing unit 104 may apply a discrete cosine transform (DCT), a directional transform, or a conceptually similar transform to the transform blocks. In some examples, transform processing unit 104 does not apply a transform to the transform blocks. In such examples, the transform blocks may be processed as transform coefficient blocks.
[0174] Quantization unit 106 may quantize transform coefficients in a coefficient block. The quantization process may reduce the bit depth associated with some or all of the transform coefficients. For example, during quantization, an n-bit transform coefficient may be truncated down to an m-bit transform coefficient, where n is greater than m. Quantization unit 106 may quantize a coefficient block associated with a TU of a CU based on a quantization parameter (QP) value associated with the CU. Video encoder 22 may adjust the degree of quantization applied to the coefficient block associated with the CU by adjusting the QP value associated with the CU. Quantization may introduce a loss of information. Therefore, the quantized transform coefficients may have a lower precision than the original transform coefficients.
[0175] Inverse quantization unit 108 and inverse transform processing unit 110 may apply inverse quantization and inverse transform, respectively, to the coefficient block to reconstruct a residual block from the coefficient block. Reconstruction unit 112 may add the reconstructed residual block to corresponding samples from one or more predictive blocks generated by prediction processing unit 100 to produce a reconstructed transform block associated with the TU. Reconstruction By reconstructing the transform blocks for each TU of a CU in this manner, video encoder 22 may reconstruct the coding blocks of the CU.
[0176] Filter unit 114 may perform one or more deblocking operations to reduce block artifacts in the coding blocks associated with the CU. Decoded picture buffer 116 may store the reconstructed coding blocks after filter unit 114 performs one or more deblocking operations on the reconstructed coding blocks. Inter-prediction processing unit 120 may use a reference picture containing the reconstructed coding blocks to perform inter prediction on PUs of other pictures. In addition, intra-prediction processing unit 126 may use the reconstructed coding blocks in decoded picture buffer 116 to perform intra prediction on other PUs in the same picture as the CU.
[0177] Entropy encoding unit 118 may receive data from other functional components of video encoder 22. For example, entropy encoding unit 118 may receive coefficient blocks from quantization unit 106 and may receive syntax elements from prediction processing unit 100. Entropy encoding unit 118 may perform one or more entropy encoding operations on the data to generate entropy encoded data. For example, entropy encoding unit 118 may perform a CABAC operation, a context adaptive variable length coding (CAVLC) operation, a variable to variable (V2V) length coding operation, a syntax-based context adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, an exponential Golomb coding operation, or another type of entropy encoding operation on the data. Video encoder 22 may output a bitstream that includes the entropy encoded data generated by entropy encoding unit 118. For example, the bitstream may include data representing an RQT for a CU.
[0178] Figure 5 1 is a block diagram illustrating an example video decoder 30 configured to implement the techniques of this disclosure. Figure 5 , and it does not limit the techniques as broadly illustrated and described in this disclosure. For purposes of explanation, this disclosure describes video decoder 30 in the context of HEVC coding. However, the techniques of this disclosure may be applicable to other coding standards or methods, including techniques that allow non-square partitioning and / or independent luma and chroma partitioning.
[0179] exist Figure 5 In the example of , video decoder 30 includes entropy decoding unit 150, video data memory 151, prediction processing unit 152, inverse quantization unit 154, inverse transform processing unit 156, reconstruction unit 158, filter unit 160, and decoded picture buffer 162. Prediction processing unit 152 includes motion compensation unit 164 and intra-prediction processing unit 166. In other examples, video decoder 30 may include more, fewer, or different functional components.
[0180] The video data memory 151 may store video data, such as an encoded video bitstream, to be decoded by components of the video decoder 30. The video data stored in the video data memory 151 may be obtained, for example, from a computer-readable medium 16, from a local video source such as a camera, via a wired or wireless network communication of video data, or by accessing a physical data storage medium. The video data memory 151 may form a coded picture buffer (CPB) that stores encoded video data from an encoded video bitstream. The decoded picture buffer 162 may be a reference picture memory that stores reference video data for the video decoder 30, for example, to decode video data in an intra-frame or inter-frame prediction mode or for output. The video data memory 151 and the decoded picture buffer 162 may be formed by any of a variety of memory devices, such as DRAM (including SDRAM, MRAM, RRAM), or other types of memory devices. The video data memory 151 and the decoded picture buffer 162 may be provided by the same memory device or separate memory devices. In various examples, video data memory 151 may be on-chip with other components of video decoder 30, or off-chip relative to those components. Figure 1 The storage medium 28 is the same as or part of the storage medium.
[0181] Video data memory 151 receives and stores encoded video data (e.g., NAL units) of a bitstream. Entropy decoding unit 150 may receive encoded video data (e.g., NAL units) from video data memory 151, and may parse the NAL units to obtain syntax elements. Entropy decoding unit 150 may entropy decode the entropy-encoded syntax elements in the NAL units. Prediction processing unit 152, inverse quantization unit 154, inverse transform processing unit 156, reconstruction unit 158, and filter unit 160 may generate decoded video data based on the syntax elements extracted from the bitstream. Entropy decoding unit 150 may perform a process that is generally the inverse of that of entropy encoding unit 118.
[0182] According to some examples of this disclosure, entropy decoding unit 150 may determine a tree structure as part of obtaining syntax elements from a bitstream. The tree structure may specify how an initial video block (e.g., CTB) is partitioned into smaller video blocks (e.g., coding units). According to one or more techniques of this disclosure, for each respective non-leaf node of the tree structure at each depth level of the tree structure, there are a plurality of allowed splitting patterns for the respective non-leaf node and the video block corresponding to the respective non-leaf node is partitioned into video blocks of child nodes corresponding to the respective non-leaf node according to one of the plurality of allowed splitting patterns.
[0183] In addition to obtaining syntax elements from the bitstream, video decoder 30 may perform a reconstruction operation on a non-partitioned CU. To perform a reconstruction operation on a CU, video decoder 30 may perform a reconstruction operation on each TU of the CU. By performing a reconstruction operation on each TU of the CU, video decoder 30 may reconstruct the residual blocks of the CU.
[0184] As part of performing a reconstruction operation on a TU of a CU, inverse quantization unit 154 may inverse quantize (i.e., dequantize) a coefficient block associated with the TU. After inverse quantization unit 154 inverse quantizes the coefficient block, inverse transform processing unit 156 may apply one or more inverse transforms to the coefficient block in order to generate a residual block associated with the TU. For example, inverse transform processing unit 156 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse directional transform, or another inverse transform to the coefficient block.
[0185] If the PU is encoded using intra prediction, intra prediction processing unit 166 may perform intra prediction to generate predictive blocks for the PU. Intra prediction processing unit 166 may use intra prediction modes to generate predictive blocks for the PU based on sample space neighboring blocks. Intra prediction processing unit 166 may determine the intra prediction mode for the PU based on one or more syntax elements obtained from the bitstream. Intra prediction processing unit 166 may be configured to determine one or more coding modes to apply when predicting a block of video data using intra prediction, including applying an intra reference sample smoothing filter and / or a PDPC mode. Intra prediction processing unit 166 and / or another component of video decoder 30 may be configured to perform the explicit coding techniques described above for intra reference sample smoothing filters and PDPC mode syntax coding.
[0186] If the PU is encoded using inter prediction, entropy decoding unit 150 may determine motion information of the PU. Motion compensation unit 164 may determine one or more reference blocks based on the motion information of the PU. Motion compensation unit 164 may generate predictive blocks (e.g., predictive luma, Cb, and Cr blocks) for the PU based on the one or more reference blocks.
[0187] Reconstruction unit 158 may use transform blocks (e.g., luma, Cb, and Cr transform blocks) of TUs of a CU and predictive blocks (e.g., luma, Cb, and Cr blocks) of PUs of the CU (i.e., intra prediction data or inter prediction data, as applicable) to reconstruct the coding blocks (e.g., luma, Cb, and Cr coding blocks) of the CU. For example, reconstruction unit 158 may add samples of transform blocks (e.g., luma, Cb, and Cr transform blocks) to corresponding samples of predictive blocks (e.g., luma, Cb, and Cr predictive blocks) to reconstruct the coding blocks (e.g., luma, Cb, and Cr coding blocks) of the CU.
[0188] Filter unit 160 may perform a deblocking operation to reduce block artifacts associated with the coding blocks of the CU. Video decoder 30 may store the coding blocks of the CU in a decoded picture buffer 162. Decoded picture buffer 162 may provide reference pictures for subsequent motion compensation, intra prediction, and display on a display device (e.g., Figure 1 For example, video decoder 30 may perform intra prediction or inter prediction operations on PUs of other CUs based on blocks in decoded picture buffer 162.
[0189] Figure 6 A flowchart illustrating an exemplary encoding method of the present invention. Figure 6 The techniques of may be performed by one or more structural components of video encoder 22.
[0190] In one example of the present invention, video encoder 22 may be configured to determine a coding mode for encoding a first block of video data (600). In one example of the present invention, the coding mode is at least one of an intra-reference sample smoothing mode or a PDPC mode. Video encoder 22 may also be configured to explicitly encode a first syntax element indicating whether to use the coding mode for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold (602). In one example of the present invention, the threshold is one of 1, 2, or 3 non-zero coefficients. Video encoder 22 may also signal the first syntax element in the encoded video bitstream (604).
[0191] In another example of the disclosure, to explicitly encode the first syntax element, video encoder 22 may be further configured to explicitly encode the first syntax element based on the intra-prediction mode used to encode the first block of video data.
[0192] In another example of the present disclosure, to explicitly encode the first syntax element, the video encoder 22 may be further configured to explicitly encode the first syntax element if the first block of video data is greater than or equal to a predetermined size.
[0193] In another example of the present invention, the number of non-zero transform coefficients includes non-zero transform coefficients for luma and chroma components of the first block of video data. In another example of the present invention, the first block of video data includes a luma block of video data, and the number of non-zero transform coefficients includes non-zero transform coefficients for the luma block of video data. In another example of the present invention, the first block of video data is not a transform skip block.
[0194] In another example of the disclosure, video encoder 22 is further configured to determine a context for encoding a first syntax element based on an intra-prediction mode used to encode a first block of video data, and encode the first syntax element using the determined context.
[0195] In another example of the present invention, video encoder 22 is further configured to determine a decoding mode for encoding a second block of video data, and not encode a value of a second syntax element indicating whether to use the decoding mode for the second block of video data if the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold.
[0196] Figure 7 Flowchart illustrating an exemplary decoding method of the present invention. Figure 7 The techniques of may be performed by one or more structural components of video decoder 30.
[0197] In one example of the present invention, video decoder 30 may be configured to receive a first block of video data (700). Video decoder 30 may be further configured to receive a first syntax element indicating whether to use a coding mode for the first block of video data if the first block of video data is associated with a number of non-zero transform coefficients greater than or equal to a threshold (702), and explicitly decode the value of the received first syntax element (704). In one example of the present invention, the threshold is one of 1, 2, or 3 non-zero coefficients. Video decoder 30 may apply the coding mode to the first block of video data according to the value of the first syntax element (706). In one example of the present invention, the coding mode is at least one of an intra-reference sample smoothing mode or a PDPC mode.
[0198] In another example of the disclosure, to receive the first syntax element, video decoder 30 may be further configured to receive the first syntax element based on an intra-prediction mode used to encode the first block of video data.
[0199] In another example of the present disclosure, to receive the first syntax element, video decoder 30 may be further configured to receive the first syntax element if the first block of video data is greater than or equal to a predetermined size.
[0200] In another example of the disclosure, the number of non-zero transform coefficients includes non-zero transform coefficients for luma and chroma components of a first block of video data. In another example, the first block of video data includes a luma block of video data, and the number of non-zero transform coefficients includes non-zero transform coefficients for the luma block of video data. In another example, the first block of video data is not a transform skip block.
[0201] In another example of the disclosure, video decoder 30 may be configured to determine a context for decoding a first syntax element based on an intra-prediction mode used to encode a first block of video data, and decode the first syntax element using the determined context.
[0202] In another example of the present invention, video decoder 30 may be configured to receive a second block of video data, infer a value of a second syntax element indicating whether to use a coding mode for the second block of video data if the second block of video data is associated with a number of non-zero transform coefficients that is less than a threshold, and apply the coding mode according to the inferred value of the second syntax element.
[0203] Certain aspects of this disclosure have been described for purposes of illustration with respect to extensions to the HEVC standard and the JEM software model studied by JVET. However, the techniques described in this disclosure may be used for other video coding processes, including other standard or proprietary video coding processes that are under development or yet to be developed.
[0204] A video coder as described in this disclosure may refer to a video encoder or a video decoder. Similarly, a video coding unit may refer to a video encoder or a video decoder. Likewise, video coding may refer to video encoding or video decoding (when applicable).
[0205] It should be appreciated that, depending on the example, certain actions or events of any of the techniques described herein may be performed in a different sequence, may be added, merged, or omitted entirely (e.g., not all described actions or events are necessary to practice the techniques). Furthermore, in some examples, actions or events may be performed simultaneously rather than sequentially, such as via multithreading, interrupt handling, or multiple processors.
[0206] In one or more instances, the described functions 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 codes and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media (which corresponds to tangible media such as data storage media) or communication media, which includes (for example) any media that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) tangible computer-readable storage media in a non-transitory form, or (2) communication media, such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in the present invention. A computer program product may include computer-readable media.
[0207] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or any other media that can be used to store the desired program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server or other remote source using a coaxial cable, optical fiber cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio and microwaves, then the coaxial cable, optical fiber cable, twisted pair, DSL, or wireless technologies such as infrared, radio and microwaves are included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other temporary media, but are directed to non-temporary tangible storage media. As used herein, magnetic disks and optical disks include compact discs (CDs), laser discs, optical discs, digital video discs (DVDs), floppy disks, and Blu-ray discs, where magnetic disks usually reproduce data magnetically, while optical discs reproduce data optically by lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0208] 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 logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term "processor" as used herein may refer to any of the aforementioned structures or any other structures suitable for implementing the techniques described herein. Furthermore, in some examples, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding or incorporated into a combined codec. Moreover, the techniques may be fully implemented in one or more circuits or logic elements.
[0209] 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). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require implementation by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or provided by a set of interoperating hardware units, including one or more processors as described above, along with appropriate software and / or firmware.
[0210] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method for decoding video data, the method comprising: determining an intra prediction mode for a current block of video data to derive a determined intra prediction mode, the determined intra prediction mode being among a plurality of intra prediction modes, wherein the plurality of intra prediction modes comprises a first subset of intra prediction modes and a second subset of intra prediction modes, wherein the first subset is different from the second subset; determining that the determined intra-prediction mode is included in the first subset of intra-prediction modes, wherein the first subset of intra-prediction modes includes a first plurality of intra-prediction modes but less than all of the plurality of intra-prediction modes; Based on determining that the determined intra prediction mode is included in the first subset of intra prediction modes and no syntax element indicating whether to apply a position-dependent intra prediction combination (PDPC) mode to the current block of video data is received, determining not to apply the PDPC mode to the current block of video data, wherein the PDPC mode is a coding mode that applies weights to reference samples; and In accordance with determining not to apply the PDPC mode, applying the determined intra prediction mode to the current block of video data and not applying the PDPC mode.
2. The method according to claim 1, further comprising: determining a second intra prediction mode for a second block of the video to derive a determined second intra prediction mode, the determined second intra prediction mode being among the plurality of intra prediction modes; determining that the determined second intra prediction mode is included in the second subset of intra prediction modes, wherein the second subset of intra prediction modes includes less than all of the plurality of intra prediction modes; Determining to apply the PDPC mode to the second block of video data based on determining that the determined second intra prediction mode is included in the second subset of intra prediction modes; as well as Based on the determination to apply the PDPC mode to the second block of video data, the determined second intra-frame prediction mode and the PDPC mode are applied to the second block of video data.
3. The method according to claim 2, further comprising: Applying the PDPC mode to the second block of the video is determined based on proximity of the determined index of the second intra prediction mode relative to one or more of an index of a horizontal intra prediction mode, an index of a vertical intra prediction mode, or an index of a diagonal intra prediction mode.
4. The method according to claim 2, further comprising: Based on a proximity of the determined index of the second intra prediction mode relative to one or more of an index of a planar intra prediction mode or an index of a DC intra prediction mode, it is determined to apply the PDPC mode to the second block of the video.
5. The method according to claim 2, further comprising: determining whether to use an intra reference sample smoothing mode for the second block of video data based on the determined second intra prediction mode for the second block of video data; as well as Based on the determination of whether to use the intra-reference sample smoothing mode for the second block, the intra-reference sample smoothing mode is applied to the second block of video data.
6. An apparatus configured to decode video data, the apparatus comprising: a memory configured to store a current block of video data; as well as one or more processors implemented in circuitry and in communication with the memory, the one or more processors being configured to: determining an intra-prediction mode for a current block of video data to derive a determined intra-prediction mode, the determined intra-prediction mode being among the plurality of intra-prediction modes, wherein the plurality of intra-prediction modes comprises a first subset of intra-prediction modes and a second subset of intra-prediction modes, wherein the first subset is different from the second subset; determining that the determined intra-prediction mode is included in the first subset of intra-prediction modes, wherein the first subset of intra-prediction modes includes a first plurality of intra-prediction modes but less than all of the plurality of intra-prediction modes; Based on determining that the determined intra prediction mode is included in the first subset of intra prediction modes and no syntax element indicating whether to apply a position-dependent intra prediction combination (PDPC) mode to the current block of video data is received, determining not to apply the PDPC mode to the current block of video data, wherein the PDPC mode is a coding mode that applies weights to reference samples; and In accordance with determining not to apply the PDPC mode, applying the determined intra prediction mode to the current block of video data and not applying the PDPC mode.
7. The device according to claim 6, wherein: The one or more processors are further configured to: determining a second intra prediction mode for a second block of the video to derive a determined second intra prediction mode, the determined second intra prediction mode being among the plurality of intra prediction modes; determining that the determined second intra prediction mode is included in the second subset of intra prediction modes, wherein the second subset of intra prediction modes includes less than all of the plurality of intra prediction modes; Determining to apply the PDPC mode to the second block of video data based on determining that the determined second intra prediction mode is included in the second subset of intra prediction modes; as well as Based on the determination to apply the PDPC mode to the second block of video data, the determined second intra-frame prediction mode and the PDPC mode are applied to the second block of video data.
8. The device according to claim 7, wherein: The one or more processors are further configured to: Applying the PDPC mode to the second block of video data is determined based on proximity of the determined index of the second intra prediction mode relative to one or more of an index of a horizontal intra prediction mode, an index of a vertical intra prediction mode, or an index of a diagonal intra prediction mode.
9. The device according to claim 7, wherein: The one or more processors are further configured to: Based on a proximity of the determined index of the second intra prediction mode relative to one or more of an index of a planar intra prediction mode or an index of a DC intra prediction mode, it is determined to apply the PDPC mode to the second block of the video.
10. The device according to claim 7, wherein: The one or more processors are further configured to: determining whether to use an intra reference sample smoothing mode for the second block of video data based on the determined second intra prediction mode for the second block of video data; as well as Based on the determination of whether to use the intra-reference sample smoothing mode for the second block, the intra-reference sample smoothing mode is applied to the second block of video data.
11. An apparatus configured to decode video data, the apparatus comprising: means for determining an intra-prediction mode for a current block of video data to derive a determined intra-prediction mode, the determined intra-prediction mode being among a plurality of intra-prediction modes, wherein the plurality of intra-prediction modes comprises a first subset of intra-prediction modes and a second subset of intra-prediction modes, wherein the first subset is different from the second subset; means for determining that the determined intra-prediction mode is included in the first subset of intra-prediction modes, wherein the first subset of intra-prediction modes includes a first plurality of intra-prediction modes but less than all of the plurality of intra-prediction modes; means for determining not to apply a position-dependent intra prediction combination (PDPC) mode to the current block of video data based on determining that the determined intra prediction mode is included in the first subset of intra prediction modes and not receiving an indication of whether to apply the PDPC mode to the current block of video data, wherein The PDPC mode is a decoding mode that applies weights to reference samples; as well as Means for applying the determined intra-prediction mode to the current block of video data and not applying the PDPC mode in response to determining that the PDPC mode is not to be applied.
12. The apparatus according to claim 11, further comprising: means for determining a second intra-prediction mode for a second block of video data to derive a determined second intra-prediction mode, the determined second intra-prediction mode being among the plurality of intra-prediction modes; means for determining that the determined second intra-prediction mode is included in the second subset of intra-prediction modes, wherein the second subset of intra-prediction modes includes less than all of the plurality of intra-prediction modes; for determining to apply the PDPC mode to the second block of video data based on determining that the determined second intra prediction mode is included in the second subset of intra prediction modes; as well as Means for applying the determined second intra-prediction mode and the PDPC mode to the second block of video data based on the determination to apply the PDPC mode to the second block of video data.
13. The apparatus according to claim 12, further comprising: Means for determining to apply the PDPC mode to the second block of video based on proximity of the determined index of the second intra prediction mode relative to one or more of an index of a horizontal intra prediction mode, an index of a vertical intra prediction mode, or an index of a diagonal intra prediction mode.
14. The apparatus according to claim 12, further comprising: Means for determining to apply the PDPC mode to the second block of video data based on proximity of the determined index of the second intra prediction mode relative to one or more of an index of a planar intra prediction mode or an index of a DC intra prediction mode.
15. The apparatus according to claim 12, further comprising: means for determining whether to use an intra reference sample smoothing mode for said second block of video data based on the determined second intra prediction mode for said second block of video data; as well as means for applying the intra-reference sample smoothing mode to the second block of video data in accordance with the determination whether to use the intra-reference sample smoothing mode for the second block.
16. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to be configured to decode video data to: determining an intra prediction mode for a current block of video data to derive a determined intra prediction mode, the determined intra prediction mode being among a plurality of intra prediction modes, wherein the plurality of intra prediction modes comprises a first subset of intra prediction modes and a second subset of intra prediction modes, wherein the first subset is different from the second subset; determining that the determined intra-prediction mode is included in the first subset of intra-prediction modes, wherein the first subset of intra-prediction modes includes a first plurality of intra-prediction modes but less than all of the plurality of intra-prediction modes; Based on determining that the determined intra prediction mode is included in the first subset of intra prediction modes and no syntax element indicating whether to apply a position-dependent intra prediction combination (PDPC) mode to the current block of video data is received, determining not to apply the PDPC mode to the current block of video data, wherein the PDPC mode is a coding mode that applies weights to reference samples; and The determined intra prediction mode is applied to the current block of video data and the PDPC mode is not applied in accordance with the determination not to apply the PDPC mode.
17. The non-transitory computer-readable storage medium of claim 16, wherein: The instructions further cause the one or more processors to: determining a second intra prediction mode for a second block of video data to derive a determined second intra prediction mode, the determined second intra prediction mode being among the plurality of intra prediction modes; determining that the determined second intra prediction mode is included in the second subset of intra prediction modes, wherein the second subset of intra prediction modes includes less than all of the plurality of intra prediction modes; Determining to apply the PDPC mode to the second block of video data based on determining that the determined second intra prediction mode is included in the second subset of intra prediction modes; as well as Based on the determination to apply the PDPC mode to the second block of video data, the determined second intra-frame prediction mode and the PDPC mode are applied to the second block of video data.
18. The non-transitory computer-readable storage medium of claim 17, wherein: The instructions further cause the one or more processors to: Applying the PDPC mode to the second block of the video is determined based on proximity of the determined index of the second intra prediction mode relative to one or more of an index of a horizontal intra prediction mode, an index of a vertical intra prediction mode, or an index of a diagonal intra prediction mode.
19. The non-transitory computer-readable storage medium of claim 17, wherein: The instructions further cause the one or more processors to: Based on a proximity of the determined index of the second intra prediction mode relative to one or more of an index of a planar intra prediction mode or an index of a DC intra prediction mode, it is determined to apply the PDPC mode to the second block of video data.
20. The non-transitory computer-readable storage medium of claim 17, wherein: The instructions further cause the one or more processors to: determining whether to use an intra reference sample smoothing mode for the second block of video data based on the determined second intra prediction mode for the second block of video data; as well as Based on the determination of whether to use the intra-reference sample smoothing mode for the second block, the intra-reference sample smoothing mode is applied to the second block of video data.
Citation Information
Patent Citations
Intra filtering flag in video coding
CN110393010A
