Fast angular search and adaptive SKIP decision in intra-prediction for video encoding
By limiting intra-prediction to larger blocks and employing fast angular candidate selection and reduced RDO, the complexity of video compression is reduced, addressing the increased complexity in modern codecs like VVC without compromising quality.
Patent Information
- Application Number
- PCT/CN2024/088213
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-04-17
- Publication Date
- 2025-10-23
AI Technical Summary
Existing video compression technologies face significant complexity increases due to extensive rate-distortion cost computations for intra-prediction coding, particularly in codecs like VVC, which can increase runtime by 20 times compared to earlier codecs, despite maintaining quality gains from added block partitioning structures and coding tools.
Implementing intra-prediction decision making for larger sized blocks only, and adaptively skipping it for smaller blocks, combined with fast angular candidate selection and reduced rate-distortion optimization on 4 or 5 intra-prediction modes to reduce complexity and computation.
This approach reduces complexity by half while maintaining video quality, making it applicable to codecs such as AVC, HEVC, AV1, and VVC, by optimizing intra-prediction decisions for larger blocks and using a reduced set of angular candidates and RDO.
Smart Images

Figure CN2024088213_23102025_PF_FP_ABST
Abstract
Description
FAST ANGULAR SEARCH AND ADAPTIVE SKIP DECISION IN INTRA-PREDICTION FOR VIDEO ENCODINGBackground
[0001] Video compression is a technique for making video files smaller and easier to transmit over the Internet. There are different methods and algorithms for video compression, with different performance and tradeoffs. Video compression involves encoding and decoding. Encoding is the process of transforming (uncompressed) video data into a compressed format. Decoding is the process of restoring video data from the compressed format. An encoder-decoder system is called a codec.Brief Description of the Drawings
[0002] Embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, like reference numerals designate like structural elements. Embodiments are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.
[0003] FIG. 1 illustrates an encoding system and a plurality of decoding systems, according to some embodiments of the disclosure.
[0004] FIG. 2 illustrates an exemplary encoder to encode video frames and output an encoded bitstream, according to some embodiments of the disclosure.
[0005] FIG. 3 illustrates an exemplary decoder to decode an encoded bitstream and output a decoded video, according to some embodiments of the disclosure.
[0006] FIG. 4 illustrates partitioning, according to some embodiments of the disclosure.
[0007] FIG. 5 illustrates intra-prediction modes, according to some embodiments of the disclosure.
[0008] FIG. 6 illustrates intra-prediction in an encoder, according to some embodiments of the disclosure.
[0009] FIG. 7 illustrates intra-prediction decision process, according to some embodiments of the disclosure.
[0010] FIG. 8 illustrates fast angular candidate selection and rate-distortion optimization (RDO) process, according to some embodiments of the disclosure.
[0011] FIG. 9 illustrates a method for making an intra-prediction decision, according to some embodiments of the disclosure.
[0012] FIG. 10 depicts a block diagram of an exemplary computing device, according to some embodiments of the disclosure.Detailed Description
[0013] Overview
[0014] Video coding or video compression is the process of compressing video data for storage, transmission, and playback. Video compression may involve taking a large amount of raw video data and applying one or more compression techniques to reduce the amount of data needed to represent the video while maintaining an acceptable level of visual quality. In some cases, video compression can offer efficient storage and transmission of video content over limited bandwidth networks.
[0015] A video includes one or more (temporal) sequences of video frames or frames. A frame may include an image, or a single still image. A frame may have millions of pixels. For example, a frame for an uncompressed 4K video may have a resolution of 3840x2160 pixels. Pixels may have luma / luminance and chroma / chrominance values. The terms “frame” and “picture” may be used interchangeably. There are several frame types of picture types. I-frames or intra-frames may be least compressible and do not depend on other frames to decode. A frame may be labeled or specified as an intra-frame. I-frames may include scene change frames. A scene change frame may be a frame that captures a different scene from the scene captured in a previous frame. A scene change frame may have no to little correlation to the previous frame. A scene change frame may be a first frame of a new shot. An I-frame may be a reference frame for one or more other frames. P-frames may depend on data from previous frames to decode and may be more compressible than I-frames. A P-frame may be a reference frame for one or more other frames. B-frames may depend on data from previous and forward frames to decode and may be more compressible than I-frames and P-frames. A B-frame can refer to two or more frames, such as one frame in the future and one frame in the past. Other frame types may include reference B-frame and non-reference B-frame. Reference B-frame can act as a reference for another frame. A non-reference B-frame is not used as a reference for any frame. Reference B-frames are stored in a decoded picture buffer whereas a non-reference B-frame does not need to be stored in the decoded picture buffer. P-frames and B-frames may be referred to as inter-frames. The order or encoding hierarchy in which I-frames, P-frames, and B-frames are arranged may be referred to as a Group of Pictures (GOP) . A slice may be a spatially distinct region of a frame that is encoded separately from any other region in the same frame.
[0016] In some cases, a frame may be partitioned into one or more blocks. Blocks may be used for block-based compression. The blocks of pixels resulting from partitioning may be referred to as partitions. Blocks may have sizes which are much smaller, such as 512x512 pixels, 256x256 pixels, 128x128 pixels, 64x64 pixels, 32x32 pixels, 16x16pixels, 8x8 pixels, 4x4 pixels, etc. A block may include a square or rectangular region of a frame. Various video compression techniques may use different terminology for the blocks or different partitioning structures for creating the blocks. In some video compression techniques, a frame may be partitioned into Coding Tree Units (CTUs) . A CTU may be divided (separately for luma and chroma components) into Coding Tree Blocks (CTBs) . A CTB can have a size of 64x64 pixels, 32x32 pixels, or 16x16 pixels. A CTB can be divided into Coding Units (CUs) . A CU can be divided into Predicition Units (PUs) and / or discrete cosine transforms (DCT) Transform Units (TUs) . CTUs, CTBs, CUs, PUs, and TUs may be considered blocks or partitions herein.
[0017] One of the tasks of an encoder in a video codec is to make encoding decisions at different levels for the video (e.g., sequence level, GOP level, frame / picture level, slice level, CTU level, CTB level, block level, CU level, PU level, TU level, etc. ) , based on a desired bitrate and / or desired (objective and / or subjective) quality. Making encoding decisions may include evaluating different options or parameter values for encoding the data, and determining optimal options or parameter values that may achieve the desired bitrate and / or quality. The chosen option and / or parameter values may be applied to encode the video to generate a bitstream. The chosen option and / or parameter values would be encoded in the bitstream to signal to a decoder how to decode the encoded bitstream in accordance with the encoding decisions which were made by the encoder. Modern codecs offer a wide range of options and parameter values. While evaluating all possible combinations of options and parameter values may yield the most optimal encoding decision, an encoder does not have unlimited resources to afford the complexity that would be required to evaluate each available option and parameter value.
[0018] While some codecs can achieve significant subjective quality improvement with similar bitrates compared to earlier codecs, the improvements came at a cost of added complexity in the encoder and decoder. Some of the complexity increase is due to added available block partitioning structures and available coding tools for coding the blocks or partitions. The added available block partitioning structures meant that a frame, or a portion of a frame (e.g., a CTU) , can be partitioned using a variety of available partitioning structures into blocks or partitions (e.g., CUs) . There may be many (e.g., dozens to hundreds) diverse ways to partition frame or the portion of the frame into blocks or partitions. The added available coding tools for coding the blocks / partitions meant that the coding tools are evaluated for each block / partition after partitioning and for every way the frame or the portion of the frame is partitioned.
[0019] To find an optimal block partitioning and a set of coding tools for the blocks / partitions, e.g., such as finding optimal partitioning of a CTU and coding tools for the CUs or partitions of the CTU, an encoder may evaluate the bitrate and distortion for all feasible combinations of block partitioning structures and coding tools for the blocks / partitions and find the combination that yields the best rate-distortion cost. It has been determined from experiments that the complexity increase can cause the runtime associated with performing extensive rate-distortion cost computations for intra-prediction coding to increase by 20 times when compared to earlier codecs. It is a technical challenge to find an encoding solution that can reduce complexity for intra-prediction encoding while maintaining the quality gains from the added available block partitioning structures and available coding tools for coding the blocks / partitions.
[0020] In some embodiments, the complexity associated with block partitioning structures is reduced by performing intra-prediction decision for larger sized blocks / partitions in certain scenarios or limiting intra-prediction decision making to larger sized blocks / partitions only. Intra-prediction decision making for the smaller blocks / partitions may be adaptively skipped in certain scenarios. For example, intra-prediction decision making may be skipped for 4x4 pixels blocks / partitions. A smaller block / partition may be encoded by the intra-prediction decision made for a larger block / partition that contains the smaller block / partition instead. Performing intra-prediction for larger sized blocks / partitions only means that a frame or a portion of the frame does not get partitioned into having smaller sized blocks / partitions. Partitioning larger sized blocks / partitions may be halted so that there are no smaller blocks / partitions are created as a result of partitioning. Intra-prediction decision making would be limited to blocks / partitions having a certain size or larger. One or more of the frame types (or picture types) and quantization parameter (QP) are checked to see if they meet one or more partition skip conditions. The partition skip conditions can check for the certain scenarios where skipping intra-prediction decision making for the smaller blocks / partitions (or limiting intra-prediction decision making to larger blocks / partitions) is less likely to cause a significant bitrate increase and / or quality degradation. Advantageously, checking one or more of the frame type and QP can be performed readily with available information about a current frame to be encoded and would not require additional analysis on the frame.
[0021] In some embodiments, the complexity associated with added coding tools is reduced by modifying intra-prediction decision making (for blocks / partitions where intra-prediction decision making is to be applied or not skipped) to include fast angular candidate selection based on a reduce set of angular candidates and rate-distortion optimization (RDO) on 4 or 5 intra-prediction modes. Applying fast angular candidate selection and RDO on 4 or 5 intra-prediction modes can reduce the search space and computations in intra-prediction decision making by half.
[0022] Techniques for making intra-prediction decisions described and illustrated herein may be applied to a variety of codecs, such as AVC (Advanced Video Coding) , HEVC (High Efficiency Video Coding) , AV1 (AOMedia Video 1) , and VVC (Versatile Video Coding) . AVC, also known as “ITU-T H. 264" , was approved in 2003 and last revised 2021-08-22. HEVC, also known as “ITU-T H. 265” , was approved in 2013 and last revised 2023-09-13. AV1 is a video coding codec designed for video transmissions over the Internet. “AV1 Bitstream & Decoding Process Specification” version 1.1.1 with Errata was last modified in 2019. VVC, also known as “ITU-T H. 266” , was finalized in 2020. While the techniques described herein relate to VVC, it is envisioned by the disclosure that the techniques may be applied to other codecs having block partitioning and intra-prediction decisions that are the same or similar to the ones made in VVC.
[0023] Video compression
[0024] FIG. 1 illustrates encoding system 130 and one or more decoding systems 1501. . . D, according to some embodiments of the disclosure.
[0025] Encoding system 130 may be implemented on computing device 1000 of FIG. 10. Encoding system 130 can be implemented in the cloud or in a data center. Encoding system 130 can be implemented on a device that is used to capture the video. Encoding system 130 can be implemented on a standalone computing system. Encoding system 130 may perform the process of encoding in video compression. Encoding system 130 may receive a video (e.g., uncompressed video, original video, raw video, etc. ) comprising a sequence of video frames 104. The video frames 104 may include image frames or images that make up the video. Avideo may have a frame rate or number of frames per second (FPS) , that defines the number of frames per second of video. The higher the FPS, the more realistic and fluid the video looks. Typically, FPS is greater than 24 frames per second for a natural, realistic viewing experience to a human viewer. Examples of video may include a television episode, a movie, a short film, a short video (e.g., less than 15 seconds long) , a video capturing gaming experience, computer screen content, video conferencing content, live event broadcast content, sports content, a surveillance video, a video shot using a mobile computing device (e.g., a smartphone) , etc. In some cases, video may include a mix or combination of different types of video.
[0026] Encoding system 130 may include encoder 102 that receives video frames 104 and encodes video frames 104 into encoded bitstream 180. An exemplary implementation of encoder 102 is illustrated in FIG. 2.
[0027] Encoded bitstream 180 may be compressed, meaning that encoded bitstream 180 may be smaller in size than video frames 104. Encoded bitstream 180 may include a series of bits, e.g., having 0's and 1's . Encoded bitstream 180 may have header information, payload information, and footer information, which may be encoded as bits in the bitstream. Header information may provide information about one or more of: the format of encoded bitstream 180, the encoding process implemented in encoder 102, the parameters of encoder 102, and metadata of encoded bitstream 180. For example, header information may include one or more of: resolution information, frame rate, aspect ratio, color space, etc. Payload information may include data representing content of video frames 104, such as samples frames, symbols, syntax elements, etc. For example, payload information may include bits that encode one or more of motion predictors, transform coefficients, prediction modes, and quantization levels of video frames 104. Footer information may indicate an end of the encoded bitstream 180. Footer information may include other information including one or more of: checksums, error correction codes, and signatures. Format of encoded bitstream 180 may vary depending on the specification of the encoding and decoding process, i.e., the codec.
[0028] Encoded bitstream 180 may include packets, where encoded video data and signaling information may be packetized. One exemplary format is the Open Bitstream Unit (OBU) , which is used in AV1 encoded bitstreams. An OBU may include a header and a payload. The header can include information about the OBU, such as information that indicates the type of OBU. Examples of OBU types may include sequence header OBU, frame header OBU, metadata OBU, temporal delimiter OBU, and tile group OBU. Payloads in OBUs may carry quantized transform coefficients and syntax elements that may be used in the decoder to properly decode the encoded video data to regenerate video frames.
[0029] Encoded bitstream 180 may be transmitted to one or more decoding systems 1501. . . D, via network 140. Network 140 may be the Internet. Network 140 may include one or more of: cellular data networks, wireless data networks, wired data networks, cable Internet networks, fiber optic networks, satellite Internet networks, etc.
[0030] D number of decoding systems 1501. . . D are illustrated. At least one of the decoding systems 1501. . . D may be implemented on computing device 1000 of FIG. 10. Examples of systems 1501. . . D may include personal computers, mobile computing devices, gaming devices, augmented reality devices, mixed reality devices, virtual reality devices, televisions, etc. Each one of decoding systems 1501. . . D may perform the process of decoding in video compression. Each one of decoding systems 1501. . . D may include a decoder (e.g., decoder 1. . . D 1621. . . D) , and one or more display devices (e.g., display device 1. . . D 1641. . . D) . An exemplary implementation of a decoder, e.g., decoder 1 1621, is illustrated in FIG. 3.
[0031] For example, decoding system 1 1501, may include decoder 1 1621 and a display device 1 1641. Decoder 1 1621 may implement a decoding process of video compression. Decoder 1 1621 may receive encoded bitstream 180 and produce decoded video 1681. Decoded video 1681 may include a series of video frames, which may be a version or reconstructed version of video frames 104 encoded by encoding system 130. Display device 1 1641 may output the decoded video 1681 for display to one or more human viewers or users of decoding system 1 1501.
[0032] For example, decoding system 2 1502, may include decoder 2 1622 and a display device 2 1642. Decoder 2 1622 may implement a decoding process of video compression. Decoder 2 1622 may receive encoded bitstream 180 and produce decoded video 1682. Decoded video 1682 may include a series of video frames, which may be a version or reconstructed version of video frames 104 encoded by encoding system 130. Display device 2 1642 may output the decoded video 1682 for display to one or more human viewers or users of decoding system 2 1502.
[0033] For example, decoding system D 150D, may include decoder D 162D and a display device D 164D. Decoder D 162D may implement a decoding process of video compression. Decoder D 162D may receive encoded bitstream 180 and produce decoded video 168D. Decoded video 168D may include a series of video frames, which may be a version or reconstructed version of video frames 104 encoded by encoding system 130. Display device D 164D may output the decoded video 168D for display to one or more human viewers or users of decoding system D 150D.
[0034] Video encoder
[0035] FIG. 2 illustrates encoder 102 to encode video frames and output an encoded bitstream, according to some embodiments of the disclosure. Encoder 102 may include one or more of: signal processing operations and data processing operations, including inter and intra-prediction, transform, quantization, in-loop filtering, and entropy coding. Encoder 102 may include a reconstruction loop involving inverse quantization, and inverse transformation to guarantee that the decoder would see the same reference blocks and frames. Encoder 102 may receive video frames 104 and encodes video frames 104 into encoded bitstream 180. Encoder 102 may include one or more of partitioning 206, transform and quantization 214, inverse transform and inverse quantization 218, in-loop filter 228, motion estimation 234, inter-prediction 236, intra-prediction 238, and entropy coding 216.
[0036] Partitioning 206 may divide a frame in video frames 104 into blocks of pixels. Different codecs may allow different variable range of block sizes. In one codec, a frame may be partitioned by partitioning 206 into blocks of size 128x128 or 64x64 pixels. In some cases, a frame may be partitioned by partitioning 206 into blocks of 32x32 or 16x16 pixels. In some cases, a frame may be partitioned by partitioning 206 into blocks of 256x256 or 512x512 pixels. Large blocks may be referred to as superblocks, macroblocks, or CTBs. Partitioning 206 may further divide each large block using a multi-way partition tree structure. In some cases, a partition of a superblock can be recursively divided further by partitioning 206 using the multi-way partition tree structure (e.g., down to 4x4 size blocks / partitions) . In another codec, a frame may be partitioned by partitioning 206 into CTUs of size 128x128 pixels. Partitioning 206 may divide a CTU using a quadtree partitioning structure into four CUs. Partitioning 206 may further recursively divide a CU using the quadtree partitioning structure. Partitioning 206 may (further) subdivide a CU using a multi-type tree structure (e.g., a quadtree, a binary tree, or ternary tree structure) . A smallest CU may have a size of 4x4 pixels. An example of partitioning is illustrated in FIG. 4. Partitioning 206 may output original samples 208, e.g., as blocks of pixels, or partitions.
[0037] Intra-prediction 238 may predict samples of a block or partition from reconstructed predicted samples of previously encoded spatial neighboring / reference blocks of the same frame. Intra-prediction 238 may receive reconstructed predicted samples 226 (of previously encoded spatial neighbor blocks of the same frame) . Reconstructed predicted samples 226 may be generated by summer 222 from reconstructed predicted residues 224 and predicted samples 212. Intra-prediction 238 may determine a suitable predictor for predicting the samples from reconstructed predicted samples of previously encoded spatial neighboring / reference blocks of the same frame (thus making an intra-prediction decision) . Examples of intra-frame predictors are illustrated in FIG. 5. Exemplary implementations and operations of intra-prediction 238 are illustrated in FIGS. 6-9. Intra-prediction 238 may generate predicted samples 212 generated using the suitable predictor. Intra-prediction 238 may output or identify the neighboring / reference block and a predictor used in generating the predicted samples 212. The identified neighboring / reference block and predictor may be encoded in the encoded bitstream 180 to enable a decoder to reconstruct a block using the same neighboring / reference block and predictor. In one codec, intra-prediction 238 may support a number of diverse predictors, e.g., 56 different predictors. In one codec, intra-prediction 238 may support a number of diverse predictors, e.g., 95 different predictors. Some predictors, e.g., directional predictors, may capture different spatial redundancies in directional textures. Pixel values of a block can be predicted using a directional predictor in intra-prediction 238 by extrapolating pixel values of a neighboring / reference block along a certain direction. Intra-prediction 238 of different codecs may support different sets of predictors to exploit different spatial patterns within the same frame. Examples of predictors may include DC, planar, Paeth, smooth, smooth vertical, smooth horizontal, recursive-based filtering modes, chroma-from-luma, intra-block copy, color palette, multiple-reference line, intra sub-partition, matrix-based intra-prediction (matrix coefficients may be defined by offline training using neural networks) , angular prediction, wide-angle prediction, cross-component linear model, template matching, etc. “DC” stands for direct current, and one skilled in the art may refer to direct current simply as “DC” . In some cases, intra-prediction 238 may perform block-prediction, where a predicted block may be produced from a reconstructed neighboring / reference block of the same frame using a vector. Optionally, an interpolation filter of a certain type may be applied to the predicted block to blend pixels of the predicted block. Pixel values of a block can be predicted using a vector compensation process in intra-prediction 238 by translating a neighboring / reference block (within the same frame) according to the vector (and optionally applying an interpolation filter to the neighboring / reference block) to produce predicted samples 212. Intra-prediction 238 may output or identify the vector applied in generating predicted samples 212. In some codecs, intra-prediction 238 may encode (1) a residual vector generated from the applied vector and a vector predictor candidate, and (2) information that identifies the vector predictor candidate, rather than encoding the applied vector itself. Intra-prediction 238 may output or identify an interpolation filter type applied in generating predicted samples 212.
[0038] Motion estimation 234 and inter-prediction 236 may predict samples of a block from samples of previously encoded frames, e.g., reference frames in decoded picture buffer 232. Motion estimation 234 and inter-prediction 236 may perform motion compensation, which may involve identifying a suitable reference block and a suitable motion predictor (or vector) for a block and optionally an interpolation filter to be applied to the reference block. Motion estimation 234 may receive original samples 208 from partitioning 206. Motion estimation 234 may receive samples from decoded picture buffer 232 (e.g., samples of previously encoded frames or reference frames) . Motion estimation 234 may use a number of reference frames for determining one or more suitable motion predictors. A motion predictor may include a reference block and a motion vector that can be applied to generate a motion compensated block or predicted block. Motion predictors may include motion vectors that capture the movement of blocks between frames in a video. Motion estimation 234 may output or identify one or more reference frames and one or more suitable motion predictors. Inter-prediction 236 may apply the one or more suitable motion predictors determined in motion estimation 234 and one or more reference frames to generate predicted samples 212. The identified reference frame (s) and motion predictor (s) may be encoded in the encoded bitstream 180 to enable a decoder to reconstruct a block using the same reference frame (s) and motion predictor (s) . In one codec, motion estimation 234 may implement single reference frame prediction mode, where a single reference frame with a corresponding motion predictor is used for inter-prediction 236. Motion estimation 234 may implement compound reference frame prediction mode where two reference frames with two corresponding motion predictors are used for inter-prediction 236. In one codec, motion estimation 234 may implement techniques for searching and identifying good reference frame (s) that can yield the most efficient motion predictor. The techniques in motion estimation 234 may include searching for good reference frame (s) candidates spatially (within the same frame) and temporally (in previously encoded frames) . The techniques in motion estimation 234 may include searching a deep spatial neighborhood to find a spatial candidate pool. The techniques in motion estimation 234 may include utilizing temporal motion field estimation mechanisms to generate a temporal candidate pool. The techniques in motion estimation 234 may use a motion field estimation process. After temporal and spatial candidates may be ranked and a suitable motion predictor may be determined. In one codec, inter-prediction 236 may support a number of diverse motion predictors. Examples of predictors may include geometric motion vectors (complex, non-linear motion) , warped motion compensation (affine transformations that capture non-translational object movements) , overlapped block motion compensation, advanced compound prediction (compound wedge prediction, difference-modulated masked prediction, frame distance-based compound prediction, and compound inter-intra-prediction) , dynamic spatial and temporal motion vector referencing, affine motion compensation (capturing higher-order motion such as rotation, scaling, and sheering) , adaptive motion vector resolution modes, geometric partitioning modes, bidirectional optical flow, prediction refinement with optical flow, bi-prediction with weights, extended merge prediction, etc. Optionally, an interpolation filter of a certain type may be applied to the predicted block to blend pixels of the predicted block. Pixel values of a block can be predicted using the motion predictor / vector determined in a motion compensation process in motion estimation 234 and inter-prediction 236 and optionally applying an interpolation filter. In some cases, inter-prediction 236 may perform motion compensation, where a predicted block may be produced from a reconstructed reference block of a reference frame using the motion predictor / vector. Inter-prediction 236 may output or identify the motion predictor / vector applied in generating predicted samples 212. In some codecs, inter-prediction 236 may encode (1) a residual vector generated from the applied vector and a vector predictor candidate, and (2) information that identifies the vector predictor candidate, rather than encoding the applied vector itself. Inter-prediction 236 may output or identify an interpolation filter type applied in generating predicted samples 212.
[0039] Mode selection 230 may be informed by components such as motion estimation 234 to determine whether inter-prediction 236 or intra-prediction 238 may be more efficient for encoding a block (thus making an encoding decision) . Inter-prediction 236 may output predicted samples 212 of a predicted block. Inter-prediction 236 may output a selected predictor and a selected interpolation filter (if applicable) that may be used to generate the predicted block. Intra-prediction 238 may output predicted samples 212 of a predicted block. Intra-prediction 238 may output a selected predictor and a selected interpolation filter (if applicable) that may be used to generate the predicted block. Regardless of the mode, predicted residues 210 may be generated by subtractor 220 by subtracting original samples 208 by predicted samples 212. In some cases, predicted residues 210 may include residual vectors from inter-prediction 236 and / or intra-prediction 238.
[0040] Transform and quantization 214 may receive predicted residues 210. Predicted residues 210 may be generated by subtractor 220 that takes original samples 208 and subtracts predicted samples 212 to output predicted residues 210. Predicted residues 210 may be referred to as prediction error of the intra-prediction 238 and inter-prediction 236 (e.g., error between the original samples and predicted samples 212) . Prediction error has a smaller range of values than the original samples and can be coded with fewer bits in encoded bitstream 180. Transform and quantization 214 may include one or more of transforming and quantizing. Transforming may include converting the predicted residues 210 from the spatial domain to the frequency domain. Transforming may include applying one or more transform kernels. Examples of transform kernels may include horizontal and vertical forms of DCT, asymmetrical discrete sine transform (ADST) , flip ADST, and identity transform (IDTX) , multiple transform selection, low-frequency non-separatable transform, subblock transform, non-square transforms, DCT-VIII, discrete sine transform VII (DST-VII) , discrete wavelet transform (DWT) , etc. Transforming may convert the predicted residues 210 into transform coefficients. Quantizing may quantize the transformed coefficients, e.g., by reducing the precision of the transform coefficients. Quantizing may include using quantization matrices (e.g., linear and non-linear quantization matrices) . The elements in the quantization matrix can be larger for higher frequency bands and smaller for lower frequency bands, which means that the higher frequency coefficients are more coarsely quantized, and the lower frequency coefficients are more finely quantized. Quantizing may include dividing each transform coefficient by a corresponding element in the quantization matrix and rounding to the nearest integer. Effectively, the quantization matrices may implement different QPs for different frequency bands and chroma planes and can use spatial prediction. A suitable quantization matrix can be selected and signaled for each frame and encoded in encoded bitstream 180. Transform and quantization 214 may output quantized transform coefficients and syntax elements 278 that indicate the coding modes and parameters used in the encoding process implemented in encoder 102.
[0041] Inverse transform and inverse quantization 218 may apply the inverse operations performed in transform and quantization 214 to produce reconstructed predicted residues 224 as part of a reconstruction path to produce decoded picture buffer 232 for encoder 102. Inverse transform and inverse quantization 218 may receive quantized transform coefficients and syntax elements 278. Inverse transform and inverse quantization 218 may perform one or more inverse quantization operations, e.g., applying an inverse quantization matrix, to obtain the unquantized / original transform coefficients. Inverse transform and inverse quantization 218 may perform one or more inverse transform operations, e.g., inverse transform (e.g., inverse DCT, inverse DWT, etc. ) , to obtain reconstructed predicted residues 224. A reconstruction path is provided in encoder 102 to generate reference blocks and frames, which are stored in decoded picture buffer 232. The reference blocks and frames may match the blocks and frames to be generated in the decoder. The reference blocks and frames are used as reference blocks and frames by motion estimation 234, inter-prediction 236, and intra-prediction 238.
[0042] In-loop filter 228 may implement filters to smooth out artifacts introduced by the encoding process in encoder 102 (e.g., processing performed by partitioning 206 and transform and quantization 214) . In-loop filter 228 may receive reconstructed predicted samples 226 from summer 222 and output frames to decoded picture buffer 232. Examples of in-loop filters may include constrained low-pass filter, directional deringing filter, edge-directed conditional replacement filter, loop restoration filter, Wiener filter, self-guided restoration filters, constrained directional enhancement filter (CDEF) , Luma Mapping with Chroma Scaling (LMCS) filter, Sample Adaptive Offset (SAO) filter, Adaptive Loop Filter (ALF) , cross-component ALF, low-pass filter, deblocking filter, etc. For example, applying a deblocking filter across a boundary between two blocks can resolve blocky artifacts caused by the Gibbs phenomenon. In some embodiments, in-loop filter 228 may fetch data from a frame buffer having reconstructed predicted samples 226 of various blocks of a video frame. In-loop filter 228 may determine whether to apply an in-loop filter or not. In-loop filter 228 may determine one or more suitable filters that achieve good visual quality and / or one or more suitable filters that suitably remove the artifacts introduced by the encoding process in encoder 102. In-loop filter 228 may determine a type of an in-loop filter to apply across a boundary between two blocks. In-loop filter 228 may determine one or more strengths of an in-loop filter (e.g., filter coefficients) to apply across a boundary between two blocks based on the reconstructed predicted samples 226 of the two blocks. In some cases, in-loop filter 228 may take a desired bitrate into account when determining one or more suitable filters. In some cases, in-loop filter 228 may take a specified QP into account when determining one or more suitable filters. In-loop filter 228 may apply one or more (suitable) filters across a boundary that separates two blocks. After applying the one or more (suitable) filters, in-loop filter 228 may write (filtered) reconstructed samples to a frame buffer such as decoded picture buffer 232.
[0043] Entropy coding 216 may receive quantized transform coefficients and syntax elements 278 (e.g., referred to herein as symbols) and perform entropy coding. Entropy coding 216 may generate and output encoded bitstream 180. Entropy coding 216 may exploit statistical redundancy and apply lossless algorithms to encode the symbols and produce a compressed bitstream, e.g., encoded bitstream 180. Entropy coding 216 may implement some version of arithmetic coding. Different versions may have different pros and cons. In one codec, entropy coding 216 may implement (symbol to symbol) adaptive multi-symbol arithmetic coding. In another codec, entropy coding 216 may implement context-based adaptive binary arithmetic coder (CABAC) . Binary arithmetic coding differs from multi-symbol arithmetic coding. Binary arithmetic coding encodes only a bit at a time, e.g., having either a binary value of 0 or 1. Binary arithmetic coding may first convert each symbol into a binary representation (e.g., using a fixed number of bits per-symbol) . Handling just binary value of 0 or 1 can simplify computation and reduce complexity. Binary arithmetic coding may assign a probability to each binary value (e.g., a chance of the bit having a binary value of 0 and a chance of the bit having a binary value of 1) . Multi-symbol arithmetic coding performs encoding for an alphabet having at least two or three symbol values and assigns a probability to each symbol value in the alphabet. Multi-symbol arithmetic coding can encode more bits at a time, which may result in a fewer number of operations for encoding the same amount of data. Multi-symbol arithmetic coding can require more computation and storage (since probability estimates may be updated for every element in the alphabet) . Maintaining and updating probabilities (e.g., cumulative probability estimates) for each possible symbol value in multi-symbol arithmetic coding can be more complex (e.g., complexity grows with alphabet size) . Multi-symbol arithmetic coding is not to be confused with binary arithmetic coding, as the two different entropy coding processes are implemented differently and can result in different encoded bitstreams for the same set of quantized transform coefficients and syntax elements 278.
[0044] Video decoder
[0045] FIG. 3 illustrates decoder 1 1621 to decode an encoded bitstream and output a decoded video, according to some embodiments of the disclosure. Decoder 1 1621 may include one or more of: signal processing operations and data processing operations, including entropy decoding, inverse transform, inverse quantization, inter and intra-prediction, in-loop filtering, etc. Decoder 1 1621 may have signal and data processing operations that mirror the operations performed in the encoder. Decoder 1 1621 may apply signal and data processing operations that are signaled in encoded bitstream 180 to reconstruct the video. Decoder 1 1621 may receive encoded bitstream 180 and generate and output decoded video 1681 having a plurality of video frames. The decoded video 1681may be provided to one or more display devices for display to one or more human viewers. Decoder 1 1621 may include one or more of entropy decoding 302, inverse transform and inverse quantization 218, in-loop filter 228, inter-prediction 236, and intra-prediction 238. Some of the functionalities are previously described and used in the encoder, such as encoder 102 of FIG. 2.
[0046] Entropy decoding 302 may decode the encoded bitstream 180 and output symbols that were coded in the encoded bitstream 180. The symbols may include quantized transform coefficients and syntax elements 278. Entropy decoding 302 may reconstruct the symbols from the encoded bitstream 180.
[0047] Inverse transform and inverse quantization 218 may receive quantized transform coefficients and syntax elements 278 and perform operations which are performed in the encoder. Inverse transform and inverse quantization 218 may output reconstructed predicted residues 224. Summer 222 may receive reconstructed predicted residues 224 and predicted samples 212 and generate reconstructed predicted samples 226. Inverse transform and inverse quantization 218 may output syntax elements 278 having signaling information for informing / instructing / controlling operations in decoder 1 1621 such as mode selection 230, intra-prediction 238, inter-prediction 236, and in-loop filter 228.
[0048] Depending on the prediction modes signaled in the encoded bitstream 180 (e.g., as syntax elements in quantized transform coefficients and syntax elements 278) , intra-prediction 238 or inter-prediction 236 may be applied to generate predicted samples 212.
[0049] Summer 222 may sum predicted samples 212 of a decoded reference block and reconstructed predicted residues 224 to produce reconstructed predicted samples 226 of a reconstructed block. For intra-prediction 238, the decoded reference block may be in the same frame as the block that is being decoded or reconstructed. For inter-prediction 236, the decoded reference block may be in a different (reference) frame in decoded picture buffer 232.
[0050] Intra-prediction 238 may determine a reconstructed vector based on a residual vector and a selected vector predictor candidate. Intra-prediction 238 may apply a reconstructed predictor or vector (e.g., in accordance with signaled predictor information) to the reconstructed block, which may be generated using a decoded reference block of the same frame. Intra-prediction 238 may apply a suitable interpolation filter type (e.g., in accordance with signaled interpolation filter information) to the reconstructed block to generate predicted samples 212.
[0051] Inter-prediction 236 may determine a reconstructed vector based on a residual vector and a selected vector predictor candidate. Inter-prediction 236 may apply a reconstructed predictor or vector (e.g., in accordance with signaled predictor information) to a reconstructed block, which may be generated using a decoded reference block of a different frame from decoded picture buffer 232. Inter-prediction 236 may apply a suitable interpolation filter type (e.g., in accordance with signaled interpolation filter information) to the reconstructed block to generate predicted samples 212.
[0052] In-loop filter 228 may receive reconstructed predicted samples 226. In-loop filter 228 may apply one or more filters signaled in the encoded bitstream 180 to the reconstructed predicted samples 226. In-loop filter 228 may output decoded video 1681.
[0053] Block partitioning
[0054] FIG. 4 illustrates partitioning, according to some embodiments of the disclosure. In VVC, a frame in video frames 104 may be partitioned into a plurality of non-overlapping CTUs. An exemplary CTU 402, and one exemplary way to partition CTU 402 is depicted. A CTU have a specified size, such as 128x128 pixels, or 64x64 pixels. The CTU can be recursively split using different types of partitioning shapes. CTU 402 may be partitioned using a quadtree partitioning structure into 4 CUs. One or more of the CUs obtained through the quadtree partitioning structure can be recursively divided (e.g., up to three times) into smaller CUs using one of the multi-type structures, including, e.g., a quadtree, a binary tree, or ternary tree structure to support non-square partitions. Quadtree partitioning structure 410 can partition a CU into 4 CUs. Binary tree partitioning structure 420 can partition a CU into 2 CUs (e.g., divided horizontally or vertically) . Ternary tree structure 430 can partition a CU in to 3 CUs (e.g., divided horizontally or vertically) . A smallest CU (e.g., referred to as a block or a partition) may have a size of 4x4 pixels. CUs may be larger than 4x4 pixels. It can be appreciated that CTU 402 may be partitioned into CUs through many different feasible partition combinations. CTU 402 may be partitioned in many different ways, resulting in many different partitioned results.
[0055] CTU 402 may be partitioned into blocks / partitions by partitioning 206 of FIG. 2. CTU 402 may be partitioned into blocks / partitions by intra-prediction 238 of FIG. 2. CTU 402 may be partitioned into blocks / partitions by inter-prediction 236 of FIG. 2.
[0056] Intra-prediction modes
[0057] FIG. 5 illustrates intra-prediction modes, according to some embodiments of the disclosure. In VVC, a total of 95 intra-prediction modes or intra-frame predictors are supported.
[0058] Intra-prediction modes may include 65 angular prediction modes, depicted as solid arrows. The (even) number at the end of the arrow identifies the angular prediction mode illustrated by the arrow. An arrow between two even numbered arrows is identified by a corresponding odd number between the two even numbers. For example, an arrow between the arrow with number 38 and the arrow with number 40 is identified by the number 37. The 65 angular prediction modes may be identified by the numbers 2 through 66.
[0059] Intra-prediction modes may include 28 wide-angle prediction modes for non-square blocks / partitions (e.g., non-square CUs) . The 28 wide-angle prediction modes may be identified by the numbers -1 through -14, and the numbers 67 through 80.
[0060] Intra-prediction modes may include a DC mode, which may be identified by the number 1.
[0061] Intra-prediction modes may include a planar mode, which may be identified by the number 0.
[0062] Intra-prediction coding tools, e.g., the 95 intra-prediction modes as illustrated in FIG. 5, are expected to be evaluated for all the feasible partition combinations or partitioned results as illustrated in FIG. 4 to determine an optimal intra-prediction decision for a CTU. The optimal intra-prediction decision would include how the CTU would be optimally partitioned and an optimal coding tool corresponding to each CU in the optimal partition result. Different combinations of feasible partition combinations and coding tools for each CU in each feasible partition may be evaluated. Specifically, RDO calculations may be computed for all the combinations of partition results and available intra-prediction coding tools for each CU in each partition result. There are too many combinations to evaluate in a practical manner. However, omitting certain combinations to decrease complexity is not a trivial task, because omitting certain combinations in a haphazard or arbitrary manner may result in non-optimal intra-prediction decision making and sub-optimal encoding results.
[0063] Intra-prediction with adaptive skip decision and fast angular candidate selection
[0064] FIG. 6 illustrates intra-prediction 238 in an encoder 102 of FIG. 1, according to some embodiments of the disclosure. Intra-prediction 238 may include prediction 678, which may apply a selected intra-prediction mode to reconstructed predicted samples 226 to generate predicted samples 212. Reconstructed predicted samples 226 may include reference samples, and the selected intra-prediction mode may be applied to the reference samples to produce predicted samples 212.
[0065] Intra-prediction 238 may include one or more components to make one or more intra-prediction decisions, which may include how the CTU optimally partitioned (e.g., a partitioned result) and an optimal intra-prediction mode corresponding to each CU in the optimal partition result. The one or more components may evaluate a range of available intra-prediction options (e.g., combining how a CTU is to be partitioned and corresponding intra-prediction modes for the CUs in the partitioned result) , and select an intra-prediction option that is optimal. The one or more intra-prediction decisions corresponding to the selected intra-prediction option may be signaled in the encoded bitstream.
[0066] Intra-prediction 238 may receive video frames 104. Intra-prediction 238 may receive a current frame 640 to be encoded. Intra-prediction 238 may determine an amount of distortion resulting from applying an available intra-prediction option by comparing the results from applying the option with current frame 640.
[0067] Intra-prediction 238 may perform RDO when making intra-prediction decision. RDO determines a trade-off between the bitrate (e.g., a compression rate) , and the distortion (e.g., quality, objective quality, subjective quality, etc. ) introduced by the compression process. The goal of RDO is to make an optimal encoding decision (in this case, one or more intra-prediction decisions) that minimizes a rate-distortion cost function that balances bitrate and distortion in the following equation: Cost = distortion + λ*bitrate (equation 1)
[0068] Cost represents the rate-distortion cost. distortion represents the distortion (e.g., mean squared error, sum of absolute differences, objective quality loss, subjective quality loss, etc. ) . bitrate represents the bitrate, or a number of bits to encode the data. λ or lambda is an RDO parameter (sometimes referred to as the Lagrangian multiplier) that can control or adjust the relative importance of bitrate versus distortion in the rate-distortion cost function. A higher value for λ means more emphasis on reducing the bitrate. A lower value for λ means more emphasis on reducing distortion.
[0069] The technical task for intra-prediction 238 is to reduce complexity in intra-prediction decision making while maintain the quality gain from the added partitioning structures and coding tools. To achieve this technical task, intra-prediction 238 includes one or more components that can identify scenarios where intra-prediction decision making for smaller blocks / partitions can be skipped. The recursive division or partition of a CTU as illustrated in FIG. 4 can mean that a CTU partitioning result may include many smaller CUs, such as CUs that are 4x4 pixels in size. If the intra-prediction decision making is skipped for the smaller CUs (or smaller blocks / partitions) and intra-prediction 238 can rely on the intra-prediction options considered for the larger block that has the smaller CU, computations to evaluate all the intra-prediction options for the smaller CU can be avoided. Therefore, it may be desirable to identify scenarios where considering intra-prediction options for the smaller CUs would not improve, or at best only marginally improve quality and bitrate. It may be desirable to identify scenarios where degradation in quality caused by omitting or skipping intra-prediction options for the smaller CUs would not propagate or significantly impact the quality of the rest of encoded video having the current frame 640 and other frames in video frames 104. The scenarios can be effectively and efficiently identified based on the frame type, the location in the encoding hierarchy (e.g., GOP) , and a utilized QP of the current frame 640.
[0070] Intra-prediction 238 may receive QP 602. QP 602 may be a QP specified for a given frame or picture. QP 602 may be determined or specified by an encoding application, based on one or more target requirements for encoding video frames 104. QP 602 may be determined or specified by quantization 214 of FIG. 2.
[0071] Intra-prediction 238 may receive a current frame 640 to be encoded and encoding information 604 associated with current frame 640. Encoding information 604 may include the frame type or picture type. Encoding information 604 may include the location of current frame 640 in the encoding hierarchy. Encoding information 604 may include one or more encoding decisions for current frame 640. Encoding information 604 may be provided by one or more components or parts in encoder 102 of FIG. 2 (e.g., inter-prediction 236) . Encoding information 604 may be determined by one or more components or parts in encoder 102 of FIG. 2 (e.g., inter-prediction 236) .
[0072] To identify the scenarios where intra-prediction decision making for smaller blocks / partitions may not be skipped, intra-prediction 238 may include all intra-coding check 612. Intra-coding check 612 may efficiently decide at the frame level or picture level whether intra-prediction decision making is to be skipped for smaller blocks / partitions. Intra-coding check 612 may receive encoding information 604 and determine whether current frame 640 uses intra-coding for all blocks of the current frame 640. Current frame 640 may have been designated by one or more components or parts in encoder 102 of FIG. 2 to use intra-coding (or intra-prediction) only for all blocks of current frame 640, or for the entire current frame 640. If intra-coding check 612 determines that the current frame 640 uses all intra-coding for all blocks of the current frame 640, it is likely that current frame 640 may have data that is to be relied upon for decoding further frames. Therefore, intra-prediction decision making is not skipped for smaller blocks / partitions, since quality degradation from skipping intra-prediction decision making for smaller partitions may propagate to other blocks of current frame 640 and / or other frames. In some embodiments, intra-coding check 612 may be omitted.
[0073] To identify the scenarios where intra-prediction decision making for smaller blocks / partitions may not be skipped, intra-prediction 238 may include intra-frame or scene change frame 614. Intra-frame or scene change frame 614 may efficiently decide at the frame level or picture level whether intra-prediction decision making is to be skipped for smaller blocks / partitions. Intra-frame or scene change frame 614 may receive encoding information 604 and determine whether current frame 640 the current frame is an intra-frame. Intra-frame or scene change frame 614 may receive encoding information 604 and determine whether current frame 640 the current frame is a scene change frame. Intra-frame or scene change frame 614 may receive encoding information 604 and determine whether current frame 640 the current frame is an intra-frame or a scene change frame. Current frame 640 may have been designated by one or more components or parts in encoder 102 of FIG. 2 to be an intra-frame or a scene change frame. If intra-frame or scene change frame 614 determines that the current frame 640 is an intra-frame or a scene change frame, it is likely that current frame 640 may have data that is to be relied upon for decoding further frames. Therefore, intra-prediction decision making is not skipped for smaller blocks / partitions, since quality degradation from skipping intra-prediction decision making for smaller partitions may propagate to other frames. In some embodiments, intra-frame or scene change frame 614 may be omitted.
[0074] To identify the scenarios where intra-prediction decision making for smaller blocks / partitions may be skipped, intra-prediction 238 may include partition skip condition check 620. Partition skip condition check 620 may efficiently decide at the frame level or picture level whether intra-prediction decision making is to be skipped for smaller blocks / pa rtitions.
[0075] Partition skip condition check 620 may receive encoding information 604 for current frame 640. Partition skip condition check 620 may include frame type check 616. Frame type check 616 may check frame type of current frame 640 in encoding information 604. Frame type check 616 may check a location of current frame 640 in the encoding hierarchy (e.g., reference B-frame type in the encoding hierarchy, non-reference B-frame type in the encoding hierarchy, and a P-frame type in the encoding hierarchy) . Frame type check 616 may check whether the frame type is a reference B-frame type. Frame type check 616 may check whether the frame type is a non-reference B-frame type. Frame type check 616 may check whether the frame type is a P-frame type. Current frame 640 may have been designated by one or more components or parts in encoder 102 of FIG. 2 to have a location in the encoding hierarchy, or to be a reference B-frame type, a non-reference B-frame type, or a P-frame type.
[0076] Partition skip condition check 620 may receive QP 602. Partition skip condition check 620 may include QP thresholding 618. QP thresholding 618 may compare QP 602 against one or more QP thresholds. QP thresholding 618 may determine whether QP 602 is greater than one or more QP thresholds. QP thresholding 618 may determine whether QP 602 is greater than or equal to one or more QP thresholds.
[0077] Frame type check 616 and QP thresholding 618 may determine whether current frame 640 meets one or more partition skip conditions. Partition skip condition check 620, e.g., frame type check 616 and / or QP thresholding 618, may determine whether one or more of a frame type (in encoding information 604) and a QP 602 of current frame 640 meet one or more partition skip conditions. The one or more partition skip conditions, if met, may mean that current frame 640 (and other frames) may tolerate some quality degradation from skipping intra-prediction decision making for smaller partitions. Therefore, intra-prediction decision making can be skipped for smaller blocks / partitions, since quality degradation from skipping intra-prediction decision making for smaller partitions is unlikely to propagate to other frames, or the quality degradation may be tolerable.
[0078] One exemplary partition skip condition includes using frame type check 616 to check whether a frame type of current frame 640 is a non-reference B-frame type. Since current frame 640 is not being used as a reference for other frames, current frame 640 (and other frames) may tolerate some quality degradation from skipping intra-prediction decision making for smaller partitions. Therefore, intra-prediction decision making can be skipped for smaller blocks / partitions, since quality degradation from skipping intra-prediction decision making for smaller partitions is not going to be propagated to other frames.
[0079] Another exemplary partition skip condition includes using frame type check 616 to check whether a frame type of current frame 640 is a reference B-frame type, and using QP thresholding 618 to check whether QP 602 is greater than first QP threshold (QPThres1) . Even though current frame 640 is being used as a reference for other frames, current frame 640 (and other frames) may tolerate some quality degradation from skipping intra-prediction decision making for smaller partitions when QP 602 is sufficiently high. When QP 602 is sufficiently high, the detail in current frame 640 would be lost due to quantization at a high QP value anyways. Therefore, intra-prediction decision making can be skipped for smaller blocks / partitions, since quality degradation from skipping intra-prediction decision making for smaller partitions may be tolerated.
[0080] Another exemplary partition skip condition includes using frame type check 616 to check whether a frame type of current frame 640 is a P-frame type, and using QP thresholding 618 to check whether QP 602 is greater than second QP threshold (QPThres2) . Even though current frame 640 might be used as a reference for other frames, current frame 640 (and other frames) may tolerate some quality degradation from skipping intra-prediction decision making for smaller partitions when QP 602 is sufficiently high. When QP 602 is sufficiently high, the detail in current frame 640 would be lost due to quantization at a high QP value anyways. Therefore, intra-prediction decision making can be skipped for smaller blocks / partitions, since quality degradation from skipping intra-prediction decision making for smaller partitions may be tolerated.
[0081] In some embodiments, the second threshold used in QP thresholding 618 may be greater than the first threshold used in QP thresholding 618, e.g., QPThres2 > QPThres1. In some embodiments, the second threshold used in QP thresholding 618 may be the same as (or equal to) the first threshold used in QP thresholding 618. QPThres2 = QPThres1. In some embodiments, the second threshold used in QP thresholding 618 may be greater than or equal to the first threshold used in QP thresholding 618. QPThres2 ≥ QPThres1.
[0082] Intra-prediction 238 may identify partitions for each block (e.g., CTU) of current frame 640 that is to be intra-coded using different combinations of partitioning structures (or partitioning options) as previously illustrated in FIG. 4. Applying a partitioning option of the many different partition options to a block (e.g., a CTU) would identify (aset of) partitions for the block. The partitions may include partitions of various sizes and may have a minimum partition size. Intra-prediction 238 may identify different sets of first partitions that represent the different possible partitioning options for each block of current frame 640. When intra-prediction decision making is not skipped for smaller partitions, or intra-prediction decision making is to be performed normally, the partitions may have a first minimum partition size of 4x4 pixels. The partitions may include partitions having one or more predetermined sizes.
[0083] Skipping intra-prediction decision making for smaller partitions may be performed by partition skip condition check 620. One or more checks performed in partition skip condition check 620 may trigger partition skip condition check 620 to skip intra-prediction decision making for smaller partitions. When intra-prediction decision making is skipped for smaller partitions, the partitions may have a second minimum partition size that is greater than 4x4 pixels. The partitions may exclude partitions having a predetermined size or smaller, e.g., a size of 4x4 pixels or smaller. The second minimum partition size may be greater than the first minimum partition size. The first minimum size may be smaller than the second minimum size. Partition skip condition check 620 may stop or halt dividing blocks or partitions into smaller partitions of a certain size. For example, partition skip condition check 620 may identify a set of partitions for a block of current frame 640 that includes partitions that are larger than the certain size (e.g., larger than 4x4 pixels) . The set of partitions would exclude partitions having the certain size (e.g., 4x4 pixels or smaller) .
[0084] Intra-prediction 238 may evaluate the different intra-prediction modes for (each one of) the partitions identified for each block (e.g., CTU) to be intra-coded of current frame 640. When partition skip condition check 620 is applied, partitions identified for each block (e.g., CTU) to be intra-coded of current frame 640 may be limited to larger blocks or partitions having a certain size or larger. When partition skip condition check 620 is not applied, partitions identified for each block (e.g., CTU) to be intra-coded of current frame 640 is not limited to larger blocks or partitions having a certain size or larger and can include smaller blocks or partitions such as 4x4 blocks or partitions.
[0085] To further achieve the technical task of reducing complexity of intra-prediction 238 while maintaining the quality gain from the added partitioning structures and coding tools, intra-prediction 238 includes one or more components that can reduce the computations used in finding an optimal intra-prediction mode for a block / partition. The components that can further reduce complexity include fast angular candidate selection 660 and RDO on selected candidates 670.
[0086] As previously illustrated in FIG. 5, a codec may support many intra-prediction modes, e.g., 95 intra-prediction modes. Evaluating all the intra-prediction modes for each block / partition with RDO is complex and not practical. One approach is to review all of the intra-prediction modes using a crude measure of distortion by computing different prediction costs for the different intra-prediction modes, and then selecting a set of candidates that have lower prediction costs to proceed with RDO. A prediction cost, not to be confused with the rate-distortion cost as illustrated by equation 1, may include a measure of distortion or dissimilarity / difference between the original samples and predicted samples, such as a sum of absolute differences (SAD) , and / or sum of absolute transformed differences (SATD) .
[0087] To compute SAD, an intra-prediction mode or candidate can be applied to reference samples to determine predicted samples. The sum of absolute differences between the original samples (original block) and the predicted samples (predicted block) may be calculated as SAD for the intra-prediction mode or candidate.
[0088] To compute SATD, an intra-prediction mode or candidate can be applied to reference samples to determine predicted samples. The absolute differences between the original samples (original block) and the predicted samples (predicted block) may be calculated. The absolute differences may be transformed using, e.g., a Hadamard Transform, or other suitable frequency domain transform. The sum of the transformed absolute differences may be calculated as SATD for the intra-prediction mode or candidate.
[0089] However, such approach involving computing prediction costs and searching through all intra-prediction modes may still be too computationally intensive and can require high gate count when implemented in hardware. To address this issue, fast angular candidate selection 660 may perform angular candidate selection for partitions of the blocks of current frame 640 using a reduced set of angular candidates as opposed to the full set of angular candidates. Angular candidates may include numbered arrows -14 to 1 and numbered arrows 2 to 80 as illustrated in FIG. 5. In some embodiments, the reduced set of angular candidates includes the even angular intra-prediction modes (e.g., the even numbered arrows in FIG. 5, or even angular candidates only) . In some embodiments, the reduced set of angular candidates includes the odd angular intra-prediction modes (e.g., the odd numbered arrows in FIG. 5, or odd angular candidates only) . Fast angular candidate selection 660 may receive original samples in current frame 640 and apply an angular candidate from the reduced set of angular candidates to reference samples to produce predicted samples. Fast angular candidate selection 660 may compute a prediction cost for the angular candidate based on the original samples and the predicted samples. Fast angular candidate selection 660 may determine a prediction cost for each angular candidate in a reduced set of angular candidates only, instead of determining prediction costs for all of the angular candidates. Fast angular candidate selection 660 may select an angular candidate from the reduced set of angular candidates that has a lowest prediction cost.
[0090] RDO on selected candidates 670 may further select a first neighbor of the selected angular candidate that has the lowest prediction cost. The first neighbor may be an immediate left neighbor of the selected angular candidate with an odd angle if the reduced set of angular candidates comprises even angular predictions modes. The first neighbor may be an immediate left neighbor of the selected angular candidate with an even angle if the reduced set of angular candidates comprises odd angular predictions modes.
[0091] RDO on selected candidates 670 may further select a second neighbor of the selected angular candidate that has the lowest prediction cost. The second neighbor may be an immediate right neighbor of the selected angular candidate with an odd angle if the reduced set of angular candidates comprises even angular predictions modes. The second neighbor may be an immediate right neighbor of the selected angular candidate with an even angle if the reduced set of angular candidates comprises odd angular predictions modes.
[0092] In an example, fast angular candidate selection 660 determined that angular candidate numbered 16 has a lowest prediction cost. The first neighbor and the second neighbor may be the angular candidate numbered 15 and angular candidate numbered 17 respectively.
[0093] In an example, for square CU / partition, if fast angular candidate selection 660 determined that angular candidate numbered 2 has a lowest prediction cost, only its top neighbor, angular candidate numbered 3 is selected. In another example, for square CU / partition, if fast angular candidate selection 660 determined that angular candidate numbered 66 has a lowest prediction cost, only its left neighbor, angular candidate numbered 65 is selected.
[0094] In an example, for non-square CU / partition, if fast angular candidate selection 660 determined that angular candidate numbered 80 has a lowest prediction cost, only its top neighbor, angular candidate numbered 79 is selected. In another example, for non-square CU / partition, if fast angular candidate selection 660 determined that angular candidate numbered -14 has a lowest prediction cost, only its left neighbor, angular candidate numbered -13 is selected.
[0095] RDO on selected candidates 670 may further select a planar mode. RDO on selected candidates 670 may further select a DC mode. In practice, planar mode and DC mode may be common statistically.
[0096] RDO on selected candidates 670 may perform RDO based on the selected angular candidate having a lowest prediction cost from fast angular candidate selection 660, one or more of the first neighbor and the second neighbor, the planar mode, and the DC mode. Selected candidates 670 may perform RDO for a selected set of candidates, comprising the selected angular candidate, the first neighbor, (optionally) the second neighbor, the planar mode, and DC mode. Selected candidates 670 may apply RDO as illustrated by equation 1 to determine a best intra-prediction mode for the block / partition.
[0097] Exemplary intra-prediction decision processes and methods
[0098] FIG. 7 illustrates intra-prediction decision process 700, according to some embodiments of the disclosure. Intra-prediction decision process 700 may be performed by one or more components illustrated in intra-prediction 238 of FIG. 6. Process 700 may be encoded as instructions on memory 1004, which may be executed by processing device 1002 of computing device 1000 of FIG. 10.
[0099] In 702, intra-prediction 238 (e.g., intra-coding check 612 of FIG. 6) may determine whether a current frame uses intra-coding for all blocks of the current frame. In some cases, 702 is optional or not implemented. If the current frame uses intra-coding for all blocks, the process 700 proceeds to 720 via the “YES” path from 702. If the current frame does not use intra-coding for all blocks (e.g., uses intra-coding for just some or none of the blocks) , the process 700 can proceed to 704 via the “NO” path from 702.
[0100] In 704, intra-prediction 238 (e.g., intra-frame or scene change frame 614 of FIG. 6) may determine whether the current frame is an intra-frame or a scene change frame. In some cases, 704 is optional or not implemented. If the current frame is the intra-frame or the scene change frame, the process 700 proceeds to 720 via the “YES” path from 704. If the current frame is not the intra-frame or the scene change frame, the process 700 can proceed to 706 via the “NO” path from 704.
[0101] 702 may be performed in parallel with 704. 702 may be performed before 704. 704 may be performed before 702.
[0102] 706 and / or 708 may be performed as part of determining whether one or more of the frame type (e.g., frame type, picture type, position in a GOP or encoding hierarchy) and the QP of the current frame meet one or more partition skip conditions. 706 and / or 708 may be performed by partition skip condition check 620 of FIG. 6. If one or more partition skip conditions are met (e.g., as determined in 706 and / or 708) , the process 700 proceeds to 710.
[0103] In 706, intra-prediction 238 (e.g. frame type check 616 of FIG. 6) may determine whether the frame type is a non-reference B-frame type. If the current frame is a non-reference B-frame type, the process 700 proceeds to 710 via the “YES” path from 706. If the current frame is not a non-reference B-frame type, the process 700 can proceed to 706 via the “NO” path from 706.
[0104] In 708, intra-prediction 238 (e.g. QP thresholding 618 of FIG. 6) may determine whether the QP is greater than a predetermined threshold. The predetermined threshold may depend on the frame type of the current frame. At 708, intra-prediction 238 (e.g., frame type check 616 of FIG. 6) may determine whether the frame type is a reference B-frame type and set a predetermined threshold to a value T1 that corresponds to the reference B-frame type. At 708, intra-prediction 238 (e.g., frame type check 616 of FIG. 6) may determine whether the frame type is a P-frame type and set a predetermined threshold to a value T2 that corresponds to the P-frame type. T2 may be equal to T1. T2 may be larger than T1. If the QP is greater than the predetermined threshold, the process 700 proceeds to 710 via the “YES” path from 708. If the QP is less than the predetermined threshold, the process 700 can proceed to 720 via the “NO” path from 708.
[0105] In 710, intra-prediction 238 (e.g., partition skip condition check 620 of FIG. 6) may skip performing intra-prediction decision making for smaller partitions (e.g., partitions having a size of 4x4 pixels) . For non-skipped partitions / blocks, the process 700 may proceed to 720 via the “FOR NON-SKIPPED PARTITIONS” path from 710.
[0106] In 720, intra-prediction 238 (e.g., fast angular candidate selection 660 of FIG. 6) may perform angular candidate selection for partitions of the blocks of current frame using a reduced set of angular candidates. Intra-prediction 238 (e.g., fast angular candidate selection 660 of FIG. 6) may determine a prediction cost for each angular candidate in the reduced set of angular candidates. Intra-prediction 238 (e.g., fast angular candidate selection 660 of FIG. 6) may select an angular candidate from the reduced set of angular candidates that has a lowest prediction cost. Skipped partitions would not proceed to 720. After 720, process 700 may proceed to 730.
[0107] In 730, intra-prediction 238 (e.g., RDO on selected candidates 670 of FIG. 6) may perform RDO based on an angular candidate selected from the angular candidate selection in 720, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode. Intra-prediction 238 (e.g., RDO on selected candidates 670 of FIG. 6) may select from the selected candidates the best intra-prediction mode having the lowest rate-distortion cost.
[0108] FIG. 8 illustrates fast angular candidate selection and RDO process 800, according to some embodiments of the disclosure. Fast angular candidate selection and RDO process 800 may be performed by one or more components illustrated in intra-prediction 238 of FIG. 6. Process 800 illustrates an exemplary implementation of 720 and 730 of FIG. 7. Process 800 may be encoded as instructions on memory 1004, which may be executed by processing device 1002 of computing device 1000 of FIG. 10.
[0109] In 802, intra-prediction 238 (e.g., fast angular candidate selection 660 of FIG. 6) may search even angles to find an angle with a minimum prediction cost.
[0110] In 804, intra-prediction 238 (e.g., RDO on selected candidates 670 of FIG. 6) may select the left and / or right neighbors of the angle with the minimum prediction cost.
[0111] In 806, intra-prediction 238 (e.g., RDO on selected candidates 670 of FIG. 6) may perform RDO to select best mode from selected candidates.
[0112] FIG. 9 illustrates method 900 for making an intra-prediction decision, according to some embodiments of the disclosure. Method 900 may be performed by one or more components illustrated in intra-prediction 238 of FIG. 6. Method 900 may be encoded as instructions on memory 1004, which may be executed by processing device 1002 of computing device 1000 of FIG. 10.
[0113] In 902, intra-prediction 238 may determine whether a current frame uses intra-coding for all blocks of the current frame.
[0114] In 904, intra-prediction 238 may, in response to determining that the current frame using intra-coding for all blocks, perform angular candidate selection for first partitions of the blocks using a reduced set of angular candidates. The first partitions include partitions having a predetermined size.
[0115] In 906, intra-prediction 238 may determine whether a current frame is an intra-frame or a scene change frame.
[0116] In 908, intra-prediction 238 may, in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for the first partitions of the blocks of current frame using a reduced set of angular candidates. The first partitions include partitions having the predetermined size.
[0117] In 910, intra-prediction 238 may determine whether one or more of a frame type and a QP of the current frame meet one or more partition skip conditions.
[0118] In 912, intra-prediction 238 may, in response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates. The second partitions exclude partitions having the predetermined size.
[0119] Exemplary computing device
[0120] FIG. 10 is a block diagram of an apparatus or a system, e.g., an exemplary computing device 1000, according to some embodiments of the disclosure. One or more computing devices 1000 may be used to implement the functionalities described with the FIGS. and herein. A number of components are illustrated in the FIGS. can be included in the computing device 1000, but any one or more of these components may be omitted or duplicated, as suitable for the application. In some embodiments, some or all of the components included in the computing device 1000 may be attached to one or more motherboards. In some embodiments, some or all of these components are fabricated onto a single system on a chip (SoC) die. Additionally, in various embodiments, the computing device 1000 may not include one or more of the components illustrated in FIG. 10, and the computing device 1000 may include interface circuitry for coupling to the one or more components. For example, the computing device 1000 may not include a display device 1006, and may include display device interface circuitry (e.g., a connector and driver circuitry) to which a display device 1006 may be coupled. In another set of examples, the computing device 1000 may not include an audio input device 1018 or an audio output device 1008 and may include audio input or output device interface circuitry (e.g., connectors and supporting circuitry) to which an audio input device 1018 or audio output device 1008 may be coupled.
[0121] The computing device 1000 may include a processing device 1002 (e.g., one or more processing devices, one or more of the same type of processing device, one or more of different types of processing device) . The processing device 1002 may include processing circuitry or electronic circuitry that process electronic data from data storage elements (e.g., registers, memory, resistors, capacitors, quantum bit cells) to transform that electronic data into other electronic data that may be stored in registers and / or memory. Examples of processing device 1002 may include a CPU, a GPU, a quantum processor, a machine learning processor, an artificial intelligence processor, a neural-network processor, an artificial intelligence accelerator, an application specific integrated circuit (ASIC) , an analog signal processor, an analog computer, a microprocessor, a digital signal processor, a field programmable gate array (FPGA) , a tensor processing unit (TPU) , a data processing unit (DPU) , etc.
[0122] The computing device 1000 may include a memory 1004, which may itself include one or more memory devices such as volatile memory (e.g., DRAM) , nonvolatile memory (e.g., read-only memory (ROM) ) , high bandwidth memory (HBM) , flash memory, solid state memory, and / or a hard drive. Memory 1004 includes one or more non-transitory computer-readable storage media. In some embodiments, memory 1004 may include memory that shares a die with the processing device 1002.
[0123] In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform operations described herein, such as operations illustrated in FIGS. 1-9, intra-prediction decision process 700, process 800, and method 900. In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform one or more operations of encoder 102. In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform one or more operations of intra-prediction 238. The instructions stored in memory 1004 may be executed by processing device 1002.
[0124] In some embodiments, memory 1004 may store data, e.g., data structures, binary data, bits, metadata, files, blobs, etc., as described with the FIGS. and herein. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: input frames to the encoder (e.g., video frames 104) , intermediate data structures computed by the encoder, bitstream generated by the encoder (encoded bitstream 180) , bitstream received by a decoder (encoded bitstream 180) , intermediate data structures computed by the decoder, and reconstructed frames generated by the decoder. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: data received and / or data generated by intra-prediction 238 of FIGS. 2 and 6. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: data received and / or data generated by process 700 of FIG. 7. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: data received and / or data generated by process 800 of FIG. 8. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: data received and / or data generated by method 900 of FIG. 9.
[0125] In some embodiments, the computing device 1000 may include a communication device 1012 (e.g., one or more communication devices) . For example, the communication device 1012 may be configured for managing wired and / or wireless communications for the transfer of data to and from the computing device 1000. The term "wireless" and its derivatives may be used to describe circuits, devices, systems, methods, techniques, communications channels, etc., that may communicate data through the use of modulated electromagnetic radiation through a nonsolid medium. The term does not imply that the associated devices do not contain any wires, although in some embodiments they might not. The communication device 1012 may implement any of a number of wireless standards or protocols, including but not limited to Institute for Electrical and Electronic Engineers (IEEE) standards including Wi-Fi (IEEE 802.10 family) , IEEE 802.16 standards (e.g., IEEE 802.16-2005 Amendment) , Long-Term Evolution (LTE) project along with any amendments, updates, and / or revisions (e.g., advanced LTE project, ultramobile broadband (UMB) project (also referred to as "3GPP2" ) , etc. ) . IEEE 802.16 compatible Broadband Wireless Access (BWA) networks are generally referred to as WiMAX networks, an acronym that stands for worldwide interoperability for microwave access, which is a certification mark for products that pass conformity and interoperability tests for the IEEE 802.16 standards. The communication device 1012 may operate in accordance with a Global System for Mobile Communication (GSM) , General Packet Radio Service (GPRS) , Universal Mobile Telecommunications System (UMTS) , High Speed Packet Access (HSPA) , Evolved HSPA (E-HSPA) , or LTE network. The communication device 1012 may operate in accordance with Enhanced Data for GSM Evolution (EDGE) , GSM EDGE Radio Access Network (GERAN) , Universal Terrestrial Radio Access Network (UTRAN) , or Evolved UTRAN (E-UTRAN) . The communication device 1012 may operate in accordance with Code-division Multiple Access (CDMA) , Time Division Multiple Access (TDMA) , Digital Enhanced Cordless Telecommunications (DECT) , Evolution-Data Optimized (EV-DO) , and derivatives thereof, as well as any other wireless protocols that are designated as 4G, 4G, 5G, and beyond. The communication device 1012 may operate in accordance with other wireless protocols in other embodiments. The computing device 1000 may include an antenna 1022 to facilitate wireless communications and / or to receive other wireless communications (such as radio frequency transmissions) . Computing device 1000 may include receiver circuits and / or transmitter circuits. In some embodiments, the communication device 1012 may manage wired communications, such as electrical, optical, or any other suitable communication protocols (e.g., the Ethernet) . As noted above, the communication device 1012 may include multiple communication chips. For instance, a first communication device 1012 may be dedicated to shorter-range wireless communications such as Wi-Fi or Bluetooth, and a second communication device 1012 may be dedicated to longer-range wireless communications such as global positioning system (GPS) , EDGE, GPRS, CDMA, WiMAX, LTE, EV-DO, or others. In some embodiments, a first communication device 1012 may be dedicated to wireless communications, and a second communication device 1012 may be dedicated to wired communications.
[0126] The computing device 1000 may include power source / power circuitry 1014. The power source / power circuitry 1014 may include one or more energy storage devices (e.g., batteries or capacitors) and / or circuitry for coupling components of the computing device 1000 to an energy source separate from the computing device 1000 (e.g., DC power, AC power, etc. ) .
[0127] The computing device 1000 may include a display device 1006 (or corresponding interface circuitry, as discussed above) . The display device 1006 may include any visual indicators, such as a heads-up display, a computer monitor, a projector, a touchscreen display, a liquid crystal display (LCD) , a light-emitting diode display, or a flat panel display, for example.
[0128] The computing device 1000 may include an audio output device 1008 (or corresponding interface circuitry, as discussed above) . The audio output device 1008 may include any device that generates an audible indicator, such as speakers, headsets, or earbuds, for example.
[0129] The computing device 1000 may include an audio input device 1018 (or corresponding interface circuitry, as discussed above) . The audio input device 1018 may include any device that generates a signal representative of a sound, such as microphones, microphone arrays, or digital instruments (e.g., instruments having a musical instrument digital interface (MIDI) output) .
[0130] The computing device 1000 may include a GPS device 1016 (or corresponding interface circuitry, as discussed above) . The GPS device 1016 may be in communication with a satellite-based system and may receive a location of the computing device 1000, as known in the art.
[0131] The computing device 1000 may include a sensor1030 (or one or more sensors) . The computing device 1000 may include corresponding interface circuitry, as discussed above) . Sensor 1030 may sense physical phenomenon and translate the physical phenomenon into electrical signals that can be processed by, e.g., processing device 1002. Examples of sensor 1030 may include: capacitive sensor, inductive sensor, resistive sensor, electromagnetic field sensor, light sensor, camera, imager, microphone, pressure sensor, temperature sensor, vibrational sensor, accelerometer, gyroscope, strain sensor, moisture sensor, humidity sensor, distance sensor, range sensor, time-of-flight sensor, pH sensor, particle sensor, air quality sensor, chemical sensor, gas sensor, biosensor, ultrasound sensor, a scanner, etc.
[0132] The computing device 1000 may include another output device 1010 (or corresponding interface circuitry, as discussed above) . Examples of the other output device 1010 may include an audio codec, a video codec, a printer, a wired or wireless transmitter for providing information to other devices, haptic output device, gas output device, vibrational output device, lighting output device, home automation controller, or an additional storage device.
[0133] The computing device 1000 may include another input device 1020 (or corresponding interface circuitry, as discussed above) . Examples of the other input device 1020 may include an accelerometer, a gyroscope, a compass, an image capture device, a keyboard, a cursor control device such as a mouse, a stylus, a touchpad, a bar code reader, a Quick Response (QR) code reader, any sensor, or a radio frequency identification (RFID) reader.
[0134] The computing device 1000 may have any desired form factor, such as a handheld or mobile computer system (e.g., a cell phone, a smart phone, a mobile Internet device, a music player, a tablet computer, a laptop computer, a netbook computer, a personal digital assistant (PDA) , an ultramobile personal computer, a remote control, wearable device, headgear, eyewear, footwear, electronic clothing, etc. ) , a desktop computer system, a server or other networked computing component, a printer, a scanner, a monitor, a set-top box, an entertainment control unit, a vehicle control unit, a digital camera, a digital video recorder, an Internet-of-Things device, or a wearable computer system. In some embodiments, the computing device 1000 may be any other electronic device that processes data.
[0135] Select examples
[0136] Example 1 provides a method, including determining whether a current frame is an intra-frame or a scene change frame; in response to determining that the current frame is the intra-frame or the scene change frame, performing angular candidate selection for first partitions of blocks of the current frame using a reduced set of angular candidates, where the first partitions include one or more partitions having a predetermined size; determining whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; and in response to determining that the one or more partition skip conditions are met, performing angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates, where the second partitions exclude the one or more partitions having the predetermined size.
[0137] Example 2 provides the method of example 1, further including determining whether the current frame uses intra-coding for all blocks of the current frame; and in response to determining that the current frame using intra-coding for all blocks, performing angular candidate selection for the first partitions of the blocks using the reduced set of angular candidates.
[0138] Example 3 provides the method of example 1 or 2, where: the first partitions have a first minimum size; the second partitions have a second minimum size; and the first minimum size is smaller than the second minimum size.
[0139] Example 4 provides the method of any one of examples 1-3, where the second partitions are larger than 4x4 pixels.
[0140] Example 5 provides the method of any one of examples 1-4, where the reduced set of angular candidates includes even angular candidates only.
[0141] Example 6 provides the method of any one of examples 1-5, where performing angular candidate selection includes determining a prediction cost for each angular candidate in the reduced set of angular candidates; and selecting an angular candidate from the reduced set of angular candidates that has a lowest prediction cost.
[0142] Example 7 provides the method of any one of examples 1-6, further including in response to determining that the current frame using intra-coding for all blocks of the current frame, performing rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.
[0143] Example 8 provides the method of any one of examples 1-7, further including in response to determining that the current frame is an intra-frame or a scene change frame, performing rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.
[0144] Example 9 provides the method of any one of examples 1-8, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is a non-reference B-frame type.
[0145] Example 10 provides the method of any one of examples 1-9, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold.
[0146] Example 11 provides the method of any one of examples 1-10, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is P-frame type and the quantization parameter is greater than a second threshold.
[0147] Example 12 provides the method of any one of examples 1-11, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining whether the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold; and determining whether the frame type is P-frame type and the quantization parameter is greater than a second threshold; where the second threshold is greater than the first threshold.
[0148] Example 13 provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to: determine whether a current frame is an intra-frame or a scene change frame; in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for first partitions of blocks of the current frame using a reduced set of angular candidates, where the first partitions include one or more partitions having a predetermined size; determine whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; and in response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates, where the second partitions exclude the one or more partitions having the predetermined size.
[0149] A variation of example 13 provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to: determine whether a current frame is an intra-frame or a scene change frame; in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for first partitions of blocks of the current frame using a reduced set of angular candidates, wherein the first partitions include one or more partitions includes partitions that are 4x4 pixels in size; determine whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; and in response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates, wherein the second partitions exclude partitions that are 4x4 pixels in size.
[0150] Example 14 provides the one or more non-transitory computer-readable media of example 13, where the instructions further cause the one or more processors to: determine whether the current frame uses intra-coding for all blocks of the current frame; and in response to determining that the current frame using intra-coding for all blocks, perform angular candidate selection for the first partitions of the blocks using the reduced set of angular candidates.
[0151] Example 15 provides the one or more non-transitory computer-readable media of example 13 or 14, where: the first partitions have a first minimum size; the second partitions have a second minimum size; and the first minimum size is smaller than the second minimum size.
[0152] Example 16 provides the one or more non-transitory computer-readable media of any one of examples 13-15, where the second partitions are larger than 4x4 pixels.
[0153] Example 17 provides the one or more non-transitory computer-readable media of any one of examples 13-16, where the reduced set of angular candidates includes even angular candidates only.
[0154] Example 18 provides the one or more non-transitory computer-readable media of any one of examples 13-17, where performing angular candidate selection includes determining a prediction cost for each angular candidate in the reduced set of angular candidates; and selecting an angular candidate from the reduced set of angular candidates that has a lowest prediction cost.
[0155] Example 19 provides the one or more non-transitory computer-readable media of any one of examples 13-18, where the instructions further cause the one or more processors to: in response to determining that the current frame using intra-coding for all blocks of the current frame, perform rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.
[0156] Example 20 provides the one or more non-transitory computer-readable media of any one of examples 13-19, where the instructions further cause the one or more processors to: in response to determining that the current frame is an intra-frame or a scene change frame, perform rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.
[0157] Example 21 provides the one or more non-transitory computer-readable media of any one of examples 13-20, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is a non-reference B-frame type.
[0158] Example 22 provides the one or more non-transitory computer-readable media of any one of examples 13-21, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold.
[0159] Example 23 provides the one or more non-transitory computer-readable media of any one of examples 13-22, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is P-frame type and the quantization parameter is greater than a second threshold.
[0160] Example 24 provides the one or more non-transitory computer-readable media of any one of examples 13-23, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining whether the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold; and determining whether the frame type is P-frame type and the quantization parameter is greater than a second threshold; where the second threshold is greater than the first threshold.
[0161] Example 25 provides a system, including one or more processors; and one or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to: determine whether a current frame is an intra-frame or a scene change frame; in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for first partitions of blocks of the current frame using a reduced set of angular candidates, where the first partitions include one or more partitions having a predetermined size; determine whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; and in response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates, where the second partitions exclude the one or more partitions having the predetermined size.
[0162] A variation of example 25 provides A system, comprising: one or more processors; and one or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to: determine whether a current frame is an intra-frame or a scene change frame; in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for first partitions of blocks of the current frame using even angular candidates, wherein the first partitions include one or more partitions having a predetermined size; determine whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; and in response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the even angular candidates, wherein the second partitions exclude the one or more partitions having the predetermined size.
[0163] Example 26 provides the system of example 25, where the instructions further cause the one or more processors to: determine whether the current frame uses intra-coding for all blocks of the current frame; and in response to determining that the current frame using intra-coding for all blocks, perform angular candidate selection for the first partitions of the blocks using the reduced set of angular candidates.
[0164] Example 27 provides the system of example 25 or 26, where: the first partitions have a first minimum size; the second partitions have a second minimum size; and the first minimum size is smaller than the second minimum size.
[0165] Example 28 provides the system of any one of examples 25-27, where the second partitions are larger than 4x4 pixels.
[0166] Example 29 provides the system of any one of examples 25-28, where the reduced set of angular candidates includes even angular candidates only.
[0167] Example 30 provides the system of any one of examples 25-29, where performing angular candidate selection includes determining a prediction cost for each angular candidate in the reduced set of angular candidates; and selecting an angular candidate from the reduced set of angular candidates that has a lowest prediction cost.
[0168] Example 31 provides the system of any one of examples 25-30, where the instructions further cause the one or more processors to: in response to determining that the current frame using intra-coding for all blocks of the current frame, perform rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.
[0169] Example 32 provides the system of any one of examples 25-31, where the instructions further cause the one or more processors to: in response to determining that the current frame is an intra-frame or a scene change frame, perform rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.
[0170] Example 33 provides the system of any one of examples 25-32 where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is a non-reference B-frame type.
[0171] Example 34 provides the system of any one of examples 25-33, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold.
[0172] Example 35 provides the system of any one of examples 25-34, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining that the frame type is P-frame type and the quantization parameter is greater than a second threshold.
[0173] Example 36 provides the system of any one of examples 25-35, where determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions includes determining whether the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold; and determining whether the frame type is P-frame type and the quantization parameter is greater than a second threshold; where the second threshold is greater than the first threshold.
[0174] Example A provides an apparatus comprising means to carry out or means for carrying out any one of the methods provided in examples 1-12 and methods / processes described herein.
[0175] Example B provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to perform any one of the methods provided in examples 1-12 and methods / processes described herein.
[0176] Example C provides an apparatus, comprising: one or more processors to execute instructions, and one or more non-transitory computer-readable media storing the instructions that, when executed by one or more processors, cause the one or more processors to perform any one of the methods provided in examples 1-12 and methods / processes described herein.
[0177] Example D provides an encoder to generate an encoded bitstream using operations described herein.
[0178] Example E provides an encoder to perform any one of the methods provided in examples 1-12 and methods / processes described herein.
[0179] Example F provides intra-prediction 238 as described herein.
[0180] Variations and other notes
[0181] Although the operations of the example method shown in and described with reference to FIGS. 7-9 are illustrated as occurring once each and in a particular order, it will be recognized that some operations may be performed in any suitable order and repeated as desired. Furthermore, the operations illustrated in FIGS. 7-9 or other FIGS. may be combined or may include more or fewer details than described.
[0182] The above description of illustrated implementations of the disclosure, including what is described in the Abstract, is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. While specific implementations of, and examples for, the disclosure are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the disclosure, as those skilled in the relevant art will recognize. These modifications may be made to the disclosure in light of the above detailed description.
[0183] For purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the illustrative implementations. However, it will be apparent to one skilled in the art that the present disclosure may be practiced without the specific details and / or that the present disclosure may be practiced with only some of the described aspects. In other instances, well known features are omitted or simplified in order not to obscure the illustrative implementations.
[0184] Further, references are made to the accompanying drawings that formapart hereof, and in which are shown, by way of illustration, embodiments that may be practiced. It is to be understood that other embodiments may be utilized, and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense.
[0185] Various operations may be described as multiple discrete actions or operations in turn, in a manner that is most helpful in understanding the disclosed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order of presentation. Operations described may be performed in a different order from the described embodiment. Various additional operations may be performed or described operations may be omitted in additional embodiments.
[0186] For the purposes of the present disclosure, the phrase “A or B” or the phrase "A and / or B" means (A) , (B) , or (A and B) . For the purposes of the present disclosure, the phrase “A, B, or C” or the phrase "A, B, and / or C" means (A) , (B) , (C) , (A and B) , (A and C) , (B and C) , or (A, B, and C) . The term "between, " when used with reference to measurement ranges, is inclusive of the ends of the measurement ranges.
[0187] For the purposes of the present disclosure, “A is less than or equal to a first threshold” is equivalent to “A is less than a second threshold” provided that the first threshold and the second thresholds are set in a manner so that both statements result in the same logical outcome for any value of A. For the purposes of the present disclosure, “B is greater than a first threshold” is equivalent to “B is greater than or equal to a second threshold” provided that the first threshold and the second thresholds are set in a manner so that both statements result in the same logical outcome for any value of B.
[0188] The description uses the phrases "in an embodiment" or "in embodiments, " which may each refer to one or more of the same or different embodiments. The terms "comprising, " "including, " "having, " and the like, as used with respect to embodiments of the present disclosure, are synonymous. The disclosure may use perspective-based descriptions such as "above, " "below, " "top, " "bottom, " and "side" to explain various features of the drawings, but these terms are simply for ease of discussion, and do not imply a desired or required orientation. The accompanying drawings are not necessarily drawn to scale. Unless otherwise specified, the use of the ordinal adjectives “first, ” “second, ” and “third, ” etc., to describe a common object, merely indicates that different instances of like objects are being referred to and are not intended to imply that the objects so described must be in a given sequence, either temporally, spatially, in ranking or in any other manner.
[0189] In the following detailed description, various aspects of the illustrative implementations will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art.
[0190] The terms “substantially, ” “close, ” “approximately, ” “near, ” and “about, ” generally refer to being within + / -20%of a target value as described herein or as known in the art. Similarly, terms indicating orientation of various elements, e.g., “coplanar, ” “perpendicular, ” “orthogonal, ” “parallel, ” or any other angle between the elements, generally refer to being within + / -5-20%of a target value as described herein or as known in the art.
[0191] In addition, the terms “comprise, ” “comprising, ” “include, ” “including, ” “have, ” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a method, process, or device, that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such method, process, or device. Also, the term “or” refers to an inclusive “or” and not to an exclusive “or. ”
[0192] The systems, methods and devices of this disclosure each have several innovative aspects, no single one of which is solely responsible for all desirable attributes disclosed herein. Details of one or more implementations of the subject matter described in this specification are set forth in the description and the accompanying drawings.
Claims
1.A method, comprising:determining whether a current frame is an intra-frame or a scene change frame;in response to determining that the current frame is the intra-frame or the scene change frame, performing angular candidate selection for first partitions of blocks of the current frame using a reduced set of angular candidates, wherein the first partitions include one or more partitions having a predetermined size;determining whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; andin response to determining that the one or more partition skip conditions are met, performing angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates, wherein the second partitions exclude the one or more partitions having the predetermined size.2.The method of claim 1, further comprising:determining whether the current frame uses intra-coding for all blocks of the current frame; andin response to determining that the current frame using intra-coding for all blocks, performing angular candidate selection for the first partitions of the blocks using the reduced set of angular candidates.3.The method of claim 1, wherein:the first partitions have a first minimum size;the second partitions have a second minimum size; andthe first minimum size is smaller than the second minimum size.4.The method of claim 1, wherein the second partitions are larger than 4x4 pixels.5.The method of claim 1, wherein the reduced set of angular candidates comprises even angular candidates only.6.The method of claim 1, wherein performing angular candidate selection comprises:determining a prediction cost for each angular candidate in the reduced set of angular candidates; andselecting an angular candidate from the reduced set of angular candidates that has a lowest prediction cost.7.The method of claim 1, further comprising:in response to determining that the current frame using intra-coding for all blocks of the current frame, performing rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.8.The method of claim 1, further comprising:in response to determining that the current frame is the intra-frame or the scene change frame, performing rate-distortion optimization based on an angular candidate selected from the angular candidate selection, one or more of a first neighbor of the selected angular candidate and a second neighbor of the selected angular candidate, a planar mode, and DC mode.9.The method of claim 1, wherein determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions comprises:determining that the frame type is a non-reference B-frame type.10.The method of claim 1, wherein determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions comprises:determining that the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold.11.The method of claim 1, wherein determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions comprises:determining that the frame type is P-frame type and the quantization parameter is greater than a second threshold.12.The method of claim 1, wherein determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions comprises:determining whether the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold; anddetermining whether the frame type is P-frame type and the quantization parameter is greater than a second threshold;wherein the second threshold is greater than the first threshold.13.One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to:determine whether a current frame is an intra-frame or a scene change frame;in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for first partitions of blocks of the current frame using a reduced set of angular candidates, wherein the first partitions include one or more partitions includes partitions that are 4x4 pixels in size;determine whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; andin response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the reduced set of angular candidates, wherein the second partitions exclude partitions that are 4x4 pixels in size.14.The one or more non-transitory computer-readable media of claim 13, wherein the instructions further cause the one or more processors to:determine whether the current frame uses intra-coding for all blocks of the current frame; andin response to determining that the current frame using intra-coding for all blocks, perform angular candidate selection for the first partitions of the blocks using the reduced set of angular candidates.15.The one or more non-transitory computer-readable media of claim 13, wherein the reduced set of angular candidates comprises even angular candidates only.16.The one or more non-transitory computer-readable media of claim 13, wherein performing angular candidate selection comprises:determining a prediction cost for each angular candidate in the reduced set of angular candidates; andselecting an angular candidate from the reduced set of angular candidates that has a lowest prediction cost.17.The one or more non-transitory computer-readable media of claim 13, wherein determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions comprises:determining that the frame type is a non-reference B-frame type;determining whether the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold; anddetermining whether the frame type is P-frame type and the quantization parameter is greater than a second threshold;wherein the second threshold is greater than the first threshold.18.A system, comprising:one or more processors; andone or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to:determine whether a current frame is an intra-frame or a scene change frame;in response to determining that the current frame is the intra-frame or the scene change frame, perform angular candidate selection for first partitions of blocks of the current frame using even angular candidates, wherein the first partitions include one or more partitions having a predetermined size;determine whether one or more of a frame type and a quantization parameter of the current frame meet one or more partition skip conditions; andin response to determining that the one or more partition skip conditions are met, perform angular candidate selection for second partitions of the blocks of the current frame using the even angular candidates, wherein the second partitions exclude the one or more partitions having the predetermined size.19.The system of claim 18, wherein the instructions further cause the one or more processors to:in response to determining that the current frame is the intra-frame or the scene change frame, perform rate-distortion optimization based on an even angular candidate selected from the angular candidate selection, one or more of a first odd neighbor of the selected angular candidate and a second odd neighbor of the selected angular candidate, a planar mode, and DC mode.20.The system of claim 18, wherein determining whether one or more of the frame type and the quantization parameter of the current frame meet one or more partition skip conditions comprises:determining that the frame type is a non-reference B-frame type;determining whether the frame type is a reference B-frame type and the quantization parameter is greater than a first threshold; anddetermining whether the frame type is P-frame type and the quantization parameter is greater than a second threshold;wherein the second threshold is greater than the first threshold.
Citation Information
Patent Citations
Video coding method and system based on region of interest
CN114745549A
Video coding method and device, electronic equipment and computer readable storage medium
CN117596397A
Intra prediction and intra mode coding
US20160373742A1
Intra-frame prediction method, coder, decoder and storage medium
WO2022174467A1