Inseparable transforms for inter coded blocks
By applying inseparable transformation technology in video data blocks, the problem of low processing burden and decoding efficiency in the prior art is solved, and efficient video compression and decoding are achieved.
Patent Information
- Application Number
- CN202380049990.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-06-28
- Filing Date
- 2023-06-29
- Publication Date
- 2025-02-14
AI Technical Summary
When existing video decoding technology processes high-quality, high fidelity, high resolution, and high frame rate video data, it leads to an increase in processing burden and it is difficult to effectively compress video data to improve decoding efficiency.
Using inseparable transformation technology, video data blocks encoded using inter-frame prediction are processed. By determining the direction associated with the video data block, inseparable transformation is applied to the video data block to achieve more efficient encoding and decoding. .
It improves the decoding efficiency of video data, reduces the processing burden, achieves higher quality video compression, and reduces the computational complexity.
Smart Images

Figure CN119452645A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to video coding (eg, encoding and / or decoding of video data). For example, aspects of the present application relate to providing a non-separable transform for video data (eg, for inter-coded blocks). Background Art
[0002] Many devices and systems allow video data to be processed and output for consumption. Digital video data often includes large amounts of data to meet the needs of video consumers and providers. For example, consumers of video data expect high quality, high fidelity, high resolution, high frame rate, etc. As a result, the large amounts of video data required to meet these needs burdens the communication networks and devices that process and store video data.
[0003] Various video coding techniques can be used to compress video data. Video coding techniques can be performed according to one or more video coding standards. For example, video coding standards include High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC), Animation Experts Group (MPEG) 2 Part 2 Coding, VP9, Alliance for Open Media (AOMedia) Video 1 (AV1), Basic Video Coding (EVC), etc. Video coding generally utilizes prediction methods (e.g., inter-frame prediction, intra-frame prediction, etc.) that utilize redundancy present in video images or sequences. An important goal of video coding techniques is to compress video data into a form that uses a lower bit rate while avoiding or minimizing degradation of video quality. As evolving video services become available, coding techniques with improved coding accuracy or efficiency are needed. Summary of the invention
[0004] Systems and techniques for providing a non-separable transform for video data (e.g., for an inter-coded block) are described herein. For example, a device may obtain a block of video data encoded using inter-frame prediction. In some examples, the device may determine a direction associated with the block of video data, for example, based on pixels of the block of video data, based on pixels of at least one neighboring block of the block of video data, or based on information associated with a geometric partitioning mode (GPM) associated with the block of video data. The device may apply a non-separable transform to the block of video data, for example, to decode or encode the video data. In some examples, the device may apply the non-separable transform to the block according to the direction associated with the block of video data.
[0005] According to at least one example, a device for processing video data is provided. The device includes a memory and at least one processor coupled to the memory (e.g., implemented in a circuit system). The at least one processor is configured and capable of: obtaining a video data block encoded using inter-frame prediction; and applying a non-separable transform to the video data block.
[0006] In another example, a method of processing video data is provided. The method includes: obtaining a block of video data encoded using inter-frame prediction; and applying a non-separable transform to the block of video data.
[0007] In another example, a non-transitory computer-readable medium having stored thereon instructions is provided that, when executed by one or more processors, causes the one or more processors to: obtain a block of video data encoded using inter-frame prediction; and apply a non-separable transform to the block of video data.
[0008] In another example, an apparatus for processing video data is provided. The apparatus includes: means for obtaining a block of video data encoded using inter-frame prediction; and means for applying a non-separable transform to the block of video data.
[0009] In some aspects, a kernel associated with the non-separable transform depends on a direction associated with the block of video data.
[0010] In some aspects, one or more of the methods, devices, and computer-readable media described above further include: determining a direction associated with the block of video data based on one or more pixels of the block of video data; and applying the inseparable transform to the block of video data based on the direction associated with the block of video data, thereby applying the inseparable transform to the block of video data. In some aspects, one or more of the methods, devices, and computer-readable media described above further include: determining at least one gradient of the pixels of the block; and determining a dominant direction associated with the block based on the at least one gradient, thereby determining the direction associated with the block of video data based on the one or more pixels of the block. In some aspects, the direction associated with the block of video data is the direction of an edge in the block of video data.
[0011] In some aspects, one or more of the methods, devices, and computer-readable media described above further include: determining a direction associated with the video data block based on pixels of at least one neighboring block of the video data block; and applying the inseparable transform to the video data block according to the direction associated with the video data block, thereby applying the inseparable transform to the video data block. In some aspects, the at least one neighboring block includes a first neighboring block above the block and a second neighboring block to the left of the block. In some aspects, one or more of the methods, devices, and computer-readable media described above further include: determining a gradient of the pixel included in the at least one neighboring block; and determining the direction of the block based on the gradient, thereby determining the direction associated with the video data block based on the pixels of the at least one neighboring block. In some aspects, the at least one neighboring block includes an intra-coded block.
[0012] In some aspects, one or more of the methods, apparatuses, and computer-readable media described above further include: determining a direction associated with the block of video data based on information associated with a geometric partitioning pattern (GPM) associated with the block of video data; and applying the inseparable transform to the block of video data according to the direction associated with the block of video data, thereby applying the inseparable transform to the block of video data. In some aspects, one or more of the methods, apparatuses, and computer-readable media described above further include: determining a direction of a partition edge to determine the direction associated with the block of video data, wherein the block of video data is partitioned along the partition edge according to the GPM.
[0013] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further comprises: applying the non-separable transform directly to one or more pixels of the block of video data.
[0014] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further comprises: applying the separable transform as a primary transform to one or more pixels of the block of video data; and applying the non-separable transform as a secondary transform to the one or more pixels of the block of video data.
[0015] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further comprises: applying the non-separable transform as a primary transform to one or more pixels of the block of video data; and applying the separable transform as a secondary transform to the one or more pixels of the block of video data.
[0016] In some aspects, it is determined whether a size of the block of video data is greater than a size threshold; and based on determining that the size of the block of video data is greater than the size threshold, the non-separable transform is applied to the block of video data.
[0017] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further comprises sending one or more non-separable transform candidates for the block of video data.
[0018] In some aspects, the block of video data comprises a block of residual video data.
[0019] In some aspects, one or more of the methods, devices, and computer-readable media described above further include: applying a separable transform to the video data block to generate coefficients before applying the non-separable transform to the video data block; and applying the non-separable transform to the coefficients, thereby applying the non-separable transform to the video data block. In some aspects, the separable transform is a discrete cosine transform (DCT).
[0020] In some aspects, one or more of the methods, devices, and computer-readable media described above further comprises: applying a separable transform to the video data block after applying the non-separable transform to the video data block. In some aspects, the separable transform is an inverse discrete cosine transform (DCT).
[0021] In some aspects, the non-separable transform comprises a low frequency non-separable transform (LFNST). In some aspects, the non-separable transform comprises an inverse low frequency non-separable transform (LFNST).
[0022] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further comprises decoding the video data using a reconstruction residual generated according to the inseparable transform applied to the block of video data.
[0023] In some aspects, one or more of the methods, apparatus, and computer-readable media described above further comprises encoding the video data using a residual generated from the non-separable transform applied to the block of video data.
[0024] In some aspects, applying the non-separable transform to the block of video data is configured to generate a reconstructed residual associated with the block of video data.
[0025] In some aspects, one or more of the devices described herein are and / or include and / or are part of an extended reality (XR) device or system (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device), a mobile device or wireless communication device (e.g., a mobile phone or other mobile device), a wearable device, a camera, a personal computer, a laptop, a vehicle or a computing device or component of a vehicle, a server computer or server device (e.g., an edge or cloud-based server, a personal computer acting as a server device, a mobile device such as a mobile phone acting as a server device, an XR device acting as a server device, a vehicle acting as a server device, a network router, or other device acting as a server device), another device, or a combination thereof. In some aspects, the device includes one or more cameras for capturing one or more images. In some aspects, the device also includes a display for displaying one or more images, notifications, and / or other displayable data. In some aspects, the above-mentioned device may include one or more sensors (e.g., one or more inertial measurement units (IMUs), such as one or more gyroscopes, one or more gyrometers, one or more accelerometers, any combination thereof, and / or other sensors).
[0026] The foregoing and other features and examples will become more apparent after reference to the following description, claims and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] Examples of various specific implementations are described in detail below with reference to the following drawings:
[0028] Figure 1 is a block diagram illustrating an encoding device and a decoding device according to some aspects;
[0029] Figure 2 is a block diagram illustrating an example of an inverse transform process using a low frequency non-separable transform (LFNST) in accordance with various aspects described herein;
[0030] Figure 3A is a conceptual diagram illustrating pixels of a block or sub-block from which one or more gradients are calculated for determining a direction in accordance with various aspects described herein;
[0031] Figure 3B is a diagram illustrating an example of a Histogram of Gradients (HoG) indicating magnitudes in different directions calculated from one or more gradients of a pixel in accordance with aspects described herein;
[0032] Figure 4 is a flow chart illustrating an example of a process for processing video data according to some aspects;
[0033] Figure 5 is a block diagram illustrating a video encoding apparatus according to some aspects; and
[0034] Figure 6 is a block diagram illustrating a video decoding apparatus according to some aspects. DETAILED DESCRIPTION
[0035] Some aspects and examples of the present disclosure are provided below. As will be apparent to those skilled in the art, some of these aspects and examples can be applied independently, and some of them can be applied in combination. In the following description, specific details are set forth for explanation purposes to provide a thorough understanding of the examples of the present application. However, it will be apparent that each example can be implemented without these specific details. Each drawing and description are not intended to be restrictive.
[0036] The following description provides only illustrative examples and is not intended to limit the scope, applicability or configuration of the present disclosure. On the contrary, the following description of various examples will provide an enabling description for implementing specific examples to those skilled in the art. It should be understood that various changes may be made to the function and arrangement of elements without departing from the essence and scope of the present application as set forth in the appended claims.
[0037] The video coding device implements video compression techniques to efficiently code (e.g., encode and / or decode) video data. For example, such video compression techniques may include applying different prediction modes, including spatial prediction (e.g., referred to as intra-frame prediction, intra-prediction, or intra-coding), temporal prediction (e.g., referred to as inter-frame prediction, inter-prediction, or inter-coding), inter-layer prediction (across different layers of video data, and / or other prediction techniques for reducing or removing redundancy inherent in video sequences. The video encoder may partition each picture of the original video sequence into a plurality of rectangular areas, which are referred to as video blocks or coding units (described in more detail below). These video blocks may be encoded using a specific prediction mode.
[0038] Video blocks may be divided into one or more groups of smaller blocks in one or more ways. Blocks may include coding tree blocks, prediction blocks, transform blocks, and / or other suitable blocks. Unless otherwise specified, references to "blocks" may generally refer to such video blocks (e.g., coding tree blocks, coding blocks, prediction blocks, transform blocks, or other suitable blocks or sub-blocks, as will be understood by those of ordinary skill in the art). In addition, each of these blocks may also be referred to interchangeably herein as a "unit" (e.g., coding tree unit (CTU), coding unit, prediction unit (PU), transform unit (TU), etc.). In some cases, a unit may indicate a decoding logic unit encoded in a bitstream, and a block may indicate a portion of a process in a video frame buffer for which a process is directed.
[0039] For inter-prediction mode, the video encoder may search for a block similar to the block being encoded in a frame (or picture) located at another temporal position (which is called a reference frame or reference picture). The video encoder may limit the search to a certain spatial displacement from the block to be encoded. A two-dimensional (2D) motion vector including a horizontal displacement component and a vertical displacement component may be used to locate the best match. For intra-prediction mode, the video encoder may use spatial prediction techniques to form a predicted block based on data from previously encoded neighboring blocks within the same picture.
[0040] The video encoder may determine a prediction error. For example, the prediction may be determined as the difference between the pixel values in the block being encoded and the predicted block. The prediction error may also be referred to as a residual. The video encoder may also apply a transform to the prediction error using transform coding (e.g., using a form of discrete cosine transform (DCT), a form of discrete sine transform (DST), or other suitable transforms) to generate transform coefficients. After the transform, the video encoder may quantize the transform coefficients. The quantized transform coefficients and motion vectors may be represented using syntax elements and, together with control information, form a decoded representation of the video sequence. In some instances, the video encoder may entropy code the syntax elements to further reduce the number of bits required for their representation.
[0041] The video decoder can use the syntax elements and control information discussed above to construct predictive data (e.g., predictive blocks) for decoding the current frame. For example, the video decoder can add the predicted block and the compressed prediction error. The video decoder can determine the compressed prediction error by weighting the transform basis function using the quantized coefficients. The difference between the reconstructed frame and the original frame is called the reconstruction error.
[0042] Examples of video coding formats and / or codecs include ITU-T H.261, ISO / IEC MPEG-1 video, ITU-T H.262 or ISO / IEC MPEG-2 video, ITU-T H.263, ISO / IEC MPEG-4 video, ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC) (including its scalable video coding (SVC) and multi-view video coding (MVC) extensions), High Efficiency Video Coding (HEVC) or ITU-T H.265, and Versatile Video Coding (VVC) or ITU-T H.266. There are various extensions to HEVC that handle multi-layer video coding, including range and screen content coding extensions, 3D video coding (3D-HEVC) and multi-view extensions (MV-HEVC), and scalable extensions (SHVC). HEVC and its extensions have been developed by the Joint Collaborative Team on Video Coding (JCT-VC) and the Joint Collaborative Team on 3D Video Coding Extensions Development (JCT-3V) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG). VP9, AOMedia Video 1 (AV1) developed by the Alliance for Open Media (AOMedia), and Essential Video Coding (EVC) are other video coding standards to which the techniques described herein may be applied.
[0043] According to the VVC standard and in Enhanced Compression Model 5.0 (ECM-5.0), a non-separable transform may be used for intra-coded blocks, which are blocks that are coded (e.g., encoded and / or decoded) using intra prediction. In some cases, such as to reduce computational complexity, the non-separable transform is implemented as a secondary transform (also known as a low-frequency non-separable transform (LFNST)), which is applied on low-frequency discrete cosine transform (DCT) coefficients (e.g., DCT2 coefficients) or on the general primary separable transform coefficients, with the other coefficients being zeroed. In some cases, the LFNST kernel may rely on the intra prediction mode to better capture the directionality of the block and the corresponding residual, resulting in better energy compression.
[0044] Only separable transforms (eg, DCT2 and non-DCT2 transforms) are available for inter-coded blocks (blocks encoded and / or decoded using inter prediction), in which case one or more non-separable transforms are not available for the inter-coded blocks.
[0045] As described in greater detail below, described herein are systems, apparatus, methods (also referred to as processes), and computer-readable media (collectively, "systems and techniques") for providing application of one or more non-separable transforms to inter-coded blocks.
[0046] The systems and techniques described herein may be applied to one or more of a variety of block-based video coding techniques, where video is reconstructed on a block-by-block basis. For example, the systems and techniques described herein may be applied to any of the existing video codecs (e.g., VVC, HEVC, AVC, or other suitable existing video codecs), and / or may be effective decoding tools for any video coding standards being developed and / or future video coding standards. For example, video codecs such as VVC, HEVC, AVC, and / or their extensions may be used to perform the examples described herein. However, the techniques and systems described herein may also be applicable to other decoding standards, codecs, or formats, such as MPEG, JPEG (or other decoding standards for still images), VP9, AV1, their extensions, or other suitable decoding standards that are already available or not yet available or not yet developed. For example, in some examples, the systems and techniques may operate according to proprietary video codecs / formats such as AV1, extensions of AVI, and / or successors of AV1 (e.g., AV2), or other proprietary formats or industry standards. Thus, although the techniques and systems described herein may be described with reference to a particular video coding standard, one of ordinary skill in the art will appreciate that the description should not be construed as applying only to that particular standard.
[0047] Various aspects of the systems and techniques described herein will be discussed herein with reference to the figures.
[0048] Figure 1 It is a block diagram of an example of a system 100 including an encoding device 104 and a decoding device 112 that can perform one or more of the techniques described herein. The encoding device 104 can be part of a source device, and the decoding device 112 can be part of a receiving device. The source device and / or the receiving device may include an electronic device, such as a mobile or fixed-line phone handset (e.g., a smart phone, a cellular phone, etc.), a desktop computer, a laptop or notebook computer, a tablet computer, a set-top box, a television, a camera, a display device, a digital media player, a video game console, a video streaming device, an Internet Protocol (IP) camera, or any other suitable electronic device. In some examples, the source device and the receiving device may include one or more wireless transceivers for wireless communication. The decoding techniques described herein are applicable to video decoding in various multimedia applications, including streaming video transmission (e.g., via the Internet), television broadcasting or transmission, encoding digital video for storage on a data storage medium, decoding digital video stored on a data storage medium, or other applications. As used herein, the term decoding may refer to encoding and / or decoding. In some examples, system 100 may support one-way or two-way video transmission to support applications such as video conferencing, video streaming, video playback, video broadcasting, gaming, and / or video telephony.
[0049] The encoding device 104 (or encoder) can be used to encode video data using a video coding standard, format, codec or protocol to generate a coded video bitstream. Examples of video coding standards and formats, codecs include ITU-T H.261, ISO / IEC MPEG-1 video, ITU-T H.262 or ISO / IEC MPEG-2 video, ITU-T H.263, ISO / IEC MPEG-4 video, ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC) (including its scalable video coding (SVC) and multi-view video coding (MVC) extensions), high efficiency video coding (HEVC) or ITU-T H.265 and universal video coding (VVC) or ITU-TH.266. There are various extensions to HEVC to handle multi-layer video coding, including range and screen content coding extensions, 3D video coding (3D-HEVC) and multi-view extensions (MV-HEVC) and scalable extensions (SHVC). HEVC and its extensions have been developed by the Joint Collaborative Team on Video Coding (JCT-VC) and the Joint Collaborative Team on 3D Video Coding Extensions Development (JCT-3V) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG). VP9, AOMedia Video 1 (AV1) developed by the Alliance for Open Media (AOMedia), and Essential Video Coding (EVC) are other video coding standards to which the techniques described herein may be applied.
[0050] refer to Figure 1 , video source 102 may provide video data to encoding device 104. Video source 102 may be part of a source device, or may be part of a device other than a source device. Video source 102 may include a video capture device (e.g., a video camera, a camera phone, a video phone, etc.), a video archive including stored video, a video server or content provider providing video data, a video feed interface receiving video from a video server or content provider, a computer graphics system for generating computer graphics video data, a combination of such sources, or any other suitable video source.
[0051] The video data from the video source 102 may include one or more input pictures or frames. A picture or frame is a static image, which in some cases is part of a video. In some examples, the data from the video source 102 may be a static image that is not part of a video. In HEVC, VVC and other video coding specifications, a video sequence may include a series of pictures. A picture may include three sample arrays, which are represented as SL, SCb and SCr. SL is a two-dimensional array of luma samples, SCb is a two-dimensional array of Cb chroma samples, and SCr is a two-dimensional array of Cr chroma samples. Chroma samples may also be referred to as "chroma" samples in this article. A pixel may refer to all three components (luminance samples and chroma samples) of a given position in an array of a picture. In other instances, a picture may be monochrome and may include only a luma sample array, in which case the terms pixel and sample may be used interchangeably. With respect to the example techniques described herein that refer to individual samples for illustrative purposes, the same techniques may be applied to pixels (e.g., all three sample components of a given position in an array of a picture). With respect to the example techniques described herein that refer to pixels (eg, all three sample components of a given position in an array of a picture) for illustrative purposes, the same techniques may be applied to individual samples.
[0052] The encoder engine 106 (or encoder) of the encoding device 104 encodes the video data to generate a coded video bitstream. In some examples, the coded video bitstream (or "video bitstream" or "bitstream") is a series of one or more decoded video sequences. The decoded video sequence (CVS) includes a series of access units (AUs) starting from an AU having a random access point picture in the base layer and having certain attributes, until the next AU having a random access point picture in the base layer and having certain attributes and not including the next AU. For example, certain attributes of the random access point picture that starts the CVS may include a RASL marker equal to 1 (e.g., NoRaslOutputFlag). Otherwise, the random access point picture (with a RASL marker equal to 0) does not start the CVS. The access unit (AU) includes one or more decoded pictures and control information corresponding to the decoded pictures sharing the same output time. The decoded slices of the picture are encapsulated as data units at the bitstream level, which are called network abstraction layer (NAL) units. For example, a HEVC video bitstream may include one or more CVSs, which include NAL units. Each NAL unit in the NAL unit has a NAL unit header. In one example, the header is one byte for H.264 / AVC (except for multi-layer extensions) and two bytes for HEVC. The syntax elements in the NAL unit header use designated bits and are therefore visible to all kinds of systems and transport layers (such as transport streams, real-time transport (RTP) protocols, file formats, etc.).
[0053] There are two types of NAL units in the HEVC standard, including video coding layer (VCL) NAL units and non-VCL NAL units. The VCL NAL unit includes one slice or slice segment of coded picture data (described below), and the non-VCL NAL unit includes control information related to one or more coded pictures. In some cases, the NAL unit may be referred to as a packet. The HEVC AU includes a VCL NAL unit containing coded picture data and a non-VCL NAL unit corresponding to the coded picture data (if any).
[0054] The NAL unit may include a sequence of bits (e.g., a coded video bitstream, a CVS of a bitstream, etc.) that form a coded representation of video data, such as a coded representation of a picture in a video. The encoder engine 106 generates a coded representation of a picture by partitioning each picture into a plurality of slices. A slice is independent of other slices so that information in the slice can be decoded without relying on data from other slices in the same picture. A slice includes one or more slice segments, which include independent slice segments and (if present) one or more dependent slice segments that depend on the previous slice segment. The slice is partitioned into coding tree blocks (CTBs) of luminance samples and chrominance samples. The CTB of the luminance sample and one or more CTBs of the chrominance sample together with the syntax for the sample are referred to as a coding tree unit (CTU). A CTU may also be referred to as a "tree block" or a "maximum coding unit" (LCU). A CTU is a basic processing unit for HEVC encoding. A CTU may be split into a plurality of coding units (CUs) of different sizes. A CU contains a luminance sample array and a chrominance sample array called a coding block (CB).
[0055] Luma CB and chroma CB can be further split into prediction blocks (PB). A PB is a block of samples of a luma component or a chroma component that uses the same motion parameters for inter prediction or intra-block copy prediction (when available or enabled). The luma PB and one or more chroma PBs together with the associated syntax form a prediction unit (PU). For inter prediction, a set of motion parameters (e.g., one or more motion vectors, reference indices, etc.) are signaled in the bitstream for each PU, as well as inter prediction for luma PB and one or more chroma PBs. Motion parameters may also be referred to as motion information. A CB may also be partitioned into one or more transform blocks (TB). A TB represents a square block of samples of a color component to which a residual transform (e.g., in some cases, the same two-dimensional transform) is applied to decode the prediction residual signal. A transform unit (TU) represents a TB of luma samples and chroma samples and corresponding syntax elements.
[0056] The size of the CU corresponds to the size of the decoding mode and may be a square shape. For example, the size of the CU may be 8×8 samples, 16×16 samples, 32×32 samples, 64×64 samples, or any other appropriate size up to the size of the corresponding CTU. The phrase "N×N" is used herein to refer to the pixel dimensions of the video block in the vertical and horizontal dimensions (e.g., 8 pixels×8 pixels). The pixels in the block may be arranged in rows and columns. In some examples, the block may not have the same number of pixels in the horizontal direction as in the vertical direction. The syntax data associated with the CU may describe, for example, the partitioning of the CU into one or more PUs. The partitioning mode may vary depending on whether the CU is encoded in an intra-prediction mode or an inter-prediction mode. The PU may be partitioned into a non-square shape. The syntax data associated with the CU may also, for example, describe the partitioning of the CU into one or more TUs according to the CTU. The TU may be square or non-square in shape.
[0057] According to the HEVC standard, a transform unit (TU) may be used to perform the transform. The TU may vary for different CUs. The size of the TU may be set based on the size of the PU within a given CU. The TU may have the same size as the PU or be smaller than the PU. In some examples, a quadtree structure called a residual quadtree (RQT) may be used to subdivide the residual samples corresponding to the CU into smaller units. The leaf nodes of the RQT may correspond to the TU. The pixel difference values associated with the TU may be transformed to generate transform coefficients. The transform coefficients may be quantized by the encoder engine 106.
[0058] Once the picture of the video data is partitioned into CUs, the encoder engine 106 predicts each PU using a prediction mode. The prediction unit or prediction block is subtracted from the original video data to obtain a residual (described below). For each CU, the prediction mode can be signaled in the bitstream using syntax data. The prediction mode may include intra-frame prediction (or intra-picture prediction) or inter-frame prediction (or inter-picture prediction). Intra-frame prediction exploits the correlation between spatially adjacent samples within a picture. For example, using intra-frame prediction, each PU is predicted from adjacent image data in the same picture using, for example, DC prediction to find an average value for the PU, using plane prediction to adapt the plane surface to the PU, using directional prediction to infer from adjacent data, or using any other suitable prediction type. Inter-frame prediction uses temporal correlation between pictures to derive motion compensated prediction for blocks of image samples. For example, using inter-frame prediction, each PU is predicted from image data in one or more reference pictures (before or after the current picture in output order) using motion compensated prediction. For example, a decision can be made at the CU level whether to use inter-picture prediction or intra-picture prediction to decode a picture area.
[0059] The encoder engine 106 and the decoder engine 116 (described in more detail below) may be configured to operate according to VVC. According to VVC, a video decoder (such as the encoder engine 106 and / or the decoder engine 116) partitions a picture into a plurality of coding tree units (CTUs) (wherein the CTB of a luminance sample and one or more CTBs of a chrominance sample together with the syntax for the sample are referred to as CTUs). The video decoder may partition the CTU according to a tree structure such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure removes the concept of multiple partition types, such as the separation between CU, PU, and TU of HEVC. The QTBT structure includes two levels, including a first level partitioned according to quadtree partitioning, and a second level partitioned according to binary tree partitioning. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of the binary tree correspond to the coding units (CUs).
[0060] In the MTT segmentation structure, blocks can be segmented using quadtree segmentation, binary tree segmentation, and one or more types of ternary tree segmentation. A ternary tree segmentation is a segmentation in which a block is split into three sub-blocks. In some examples, a ternary tree segmentation divides a block into three sub-blocks without dividing the original block through the center. The segmentation types in MTT (e.g., quadtree, binary tree, and ternary tree) can be symmetric or asymmetric.
[0061] When operating according to the AV1 codec, the encoding device 104 and the decoding device 112 may be configured to decode the video data in units of blocks. In AV1, the largest decoding block that can be processed is called a super block. In AV1, a super block may be 128×128 luma samples or 64×64 luma samples. However, in subsequent video coding formats (e.g., AV2), super blocks may be defined by different (e.g., larger) luma sample sizes. In some examples, the super block is the top layer of the block quadtree. The encoding device 104 may further divide the super block into smaller decoding blocks. The encoding device 104 may divide the super block and other decoding blocks into smaller blocks using square or non-square partitioning. Non-square blocks may include N / 2×N blocks, N×N / 2 blocks, N / 4×N blocks, and N×N / 4 blocks. The encoding device 104 and the decoding device 112 may perform separate prediction and transform processing on each decoding block.
[0062] AV1 also defines tiles of video data. A tile is a rectangular array of super blocks that can be decoded independently of other tiles. That is, the encoding device 104 and the decoding device 112 can encode and decode coded blocks within a tile, respectively, without using video data from other tiles. However, the encoding device 104 and the decoding device 112 can perform filtering across tile boundaries. The size of the tiles can be uniform or non-uniform. Tile-based decoding can enable parallel processing and / or multi-threading specifically implemented by the encoder and decoder.
[0063] In some examples, the encoding device 104 and the decoding device 112 may use a single QTBT or MTT structure to represent each of the luma component and the chroma components, while in other examples, the video coder may use two or more QTBT or MTT structures, such as one QTBT or MTT structure for the luma component and another QTBT or MTT structure for the two chroma components (or two QTBT and / or MTT structures for corresponding chroma components).
[0064] The encoding device 104 and the decoding device 112 may be configured to use quadtree partitioning per HEVC, QTBT partitioning, MTT partitioning, or other partitioning structures.
[0065] In some examples, a slice type is assigned to one or more slices of a picture. Slice types include I slices, P slices, and B slices. An I slice (intra, independently decodable) is a slice of a picture that is coded only by intra prediction, and is therefore independently decodable because an I slice only requires data within the frame to predict any prediction unit or prediction block of the slice. A P slice (unidirectionally predicted frame) is a slice of a picture that can be coded with intra prediction and with unidirectional inter prediction. Each prediction unit or prediction block within a P slice is coded with intra prediction or inter prediction. When inter prediction is applied, the prediction unit or prediction block is predicted by only one reference picture, and therefore the reference sample comes from only one reference region of one frame. A B slice (bidirectionally predictive frame) is a slice of a picture that can be coded with intra prediction and inter prediction (e.g., either bidirectional prediction or unidirectional prediction). A prediction unit or prediction block of a B slice may be predicted bidirectionally from two reference pictures, where each picture contributes to one reference region and the sample sets of the two reference regions are weighted (e.g., with equal weights or with different weights) to produce a prediction signal for the bidirectionally predicted block. As described above, slices of a picture are coded independently. In some cases, a picture may be coded as only one slice.
[0066] As noted above, intra-picture prediction exploits the correlation between spatially adjacent samples within a picture. There are multiple intra-prediction modes (also referred to as "intra-modes"). In some examples, intra-prediction of luma blocks includes 35 modes, including a planar mode, a DC mode, and 33 angular modes (e.g., a diagonal intra-prediction mode and an angular mode adjacent to the diagonal intra-prediction mode). The 35 modes of intra-prediction are indexed as shown in Table 1 below. In other examples, more intra-modes may be defined, including prediction angles that may not yet be represented by the 33 angular modes. In other examples, the prediction angles associated with the angular modes may be different from those used in HEVC.
[0067] Table 1. Specification of intra prediction modes and associated names
[0068] Intra prediction mode Associated name 0 INTRA_PLANAR 1 INTRA_DC 2……34 INTRA_ANGULAR2..INTRA_ANGULAR34
[0069] Inter-picture prediction uses the temporal correlation between pictures in order to derive motion compensated prediction for image sample blocks. Using a translational motion model, the position of a block in a previously decoded picture (reference picture) is indicated by a motion vector (Δx, Δy), where Δx specifies the horizontal displacement of the reference block relative to the position of the current block, and Δy specifies the vertical displacement of the reference block relative to the position of the current block. In some cases, the motion vector (Δx, Δy) may have integer sampling accuracy (also referred to as integer accuracy), in which case the motion vector points to an integer pixel grid (or integer pixel sampling grid) of a reference frame. In some cases, the motion vector (Δx, Δy) may have fractional sampling accuracy (also referred to as fractional pixel accuracy or non-integer accuracy) to more accurately capture the movement of underlying objects, without being limited to the integer pixel grid of a reference frame. The accuracy of the motion vector can be represented by the quantization level of the motion vector. For example, the quantization level can be integer accuracy (e.g., 1 pixel) or fractional pixel accuracy (e.g., 1 / 4 pixel, 1 / 2 pixel, or other sub-pixel value). When the corresponding motion vector has fractional sampling accuracy, interpolation is applied to the reference picture to derive the prediction signal. For example, the samples available at integer positions may be filtered (e.g., using one or more interpolation filters) to estimate the values at fractional positions. The previously decoded reference picture is indicated by the reference index (refIdx) of the reference picture list. The motion vector and the reference index may be referred to as motion parameters. Two types of inter-picture prediction may be performed, including unidirectional prediction and bidirectional prediction.
[0070] In the case of inter-frame prediction using bidirectional prediction (also known as bidirectional inter-frame prediction), two sets of motion parameters (Δx0, y0, refIdx0 and Δx1, y1, refIdx1) are used to generate two motion compensated predictions (from the same reference picture or possibly from different reference pictures). For example, in the case of bidirectional prediction, each prediction block uses two motion compensated prediction signals and generates B prediction units. The two motion compensated predictions are combined to obtain the final motion compensated prediction. For example, the two motion compensated predictions can be combined by averaging. In another example, weighted prediction can be used, in which case different weights can be applied to each motion compensated prediction. The reference pictures that can be used in bidirectional prediction are stored in two separate lists, represented as list 0 and list 1 respectively. The motion parameters can be derived using a motion estimation process at the encoder.
[0071] In the case of inter prediction using unidirectional prediction (also referred to as unidirectional inter prediction), a set of motion parameters (Δx0, y0, refIdx0) is used to generate motion compensated prediction from a reference picture. For example, in the case of unidirectional prediction, each prediction block uses at most one motion compensated prediction signal and generates P prediction units.
[0072] The PU may include data related to the prediction process (e.g., motion parameters or other suitable data). For example, when the PU is encoded using intra prediction, the PU may include data describing the intra prediction mode for the PU. As another example, when the PU is encoded using inter prediction, the PU may include data defining a motion vector for the PU. The data defining the motion vector for the PU may describe, for example, a horizontal component of the motion vector (Δx), a vertical component of the motion vector (Δy), a resolution for the motion vector (e.g., integer precision, quarter-pixel precision, or eighth-pixel precision), a reference picture to which the motion vector points, a reference index, a reference picture list for the motion vector (e.g., list 0, list 1, or list C), or any combination thereof.
[0073] AV1 includes two general techniques for encoding and decoding coded blocks of video data. The two general techniques are intra-frame prediction (e.g., intra-frame prediction or spatial prediction) and inter-frame prediction (e.g., inter-frame prediction or temporal prediction). In the content of AV1, when an intra-frame prediction mode is used to predict a block of a current frame of video data, the encoding device 104 and the decoding device 112 do not use video data from other frames of the video data. For most intra-frame prediction modes, the video encoding device 104 encodes a block of the current frame based on the difference between the sample value in the current block and the prediction value generated from the reference sample in the same frame. The video encoding device 104 determines the prediction value generated from the reference sample based on the intra-frame prediction mode.
[0074] After performing prediction using intra prediction and / or inter prediction, the encoding device 104 may perform transformation and quantization. For example, after prediction, the encoder engine 106 may calculate a residual value corresponding to the PU. The residual value may include a pixel difference value between a current pixel block (PU) being decoded and a prediction block (e.g., a predicted version of the current block) used to predict the current block. For example, after generating a prediction block (e.g., using inter prediction or intra prediction), the encoder engine 106 may generate a residual block by subtracting the prediction block generated by the prediction unit from the current block. The residual block includes a set of pixel difference values that quantizes the difference between the pixel values of the current block and the pixel values of the prediction block. In some examples, the residual block may be represented by a two-dimensional block format (e.g., a two-dimensional matrix or array of pixel values). In such examples, the residual block is a two-dimensional representation of the pixel values.
[0075] Any residual data that may remain after prediction is performed is transformed using a block transform, which may be based on a discrete cosine transform, a discrete sine transform, an integer transform, a wavelet transform, other suitable transform functions, or any combination thereof. In some cases, one or more block transforms (e.g., of size 32×32, 16×16, 8×8, 4×4, or other suitable sizes) may be applied to the residual data in each CU. In some examples, TUs may be used for the transform and quantization process implemented by the encoder engine 106. A given CU with one or more PUs may also include one or more TUs. As described in further detail below, the residual values may be transformed into transform coefficients using a block transform, and may be quantized and scanned using a TU to produce serialized transform coefficients for entropy coding.
[0076] In some examples, after intra-predictive coding or inter-predictive coding using a PU of a CU, the encoder engine 106 may calculate residual data for a TU of the CU. A PU may include pixel data in a spatial domain (or pixel domain). A TU may include coefficients in a transform domain after applying a block transform. As previously noted, the residual data may correspond to a pixel difference between a pixel of an unencoded picture and a prediction value corresponding to the PU. The encoder engine 106 may form a TU including the residual data for the CU, and may transform the TU to generate transform coefficients for the CU.
[0077] The encoder engine 106 may perform quantization of the transform coefficients. Quantization provides further compression by quantizing the transform coefficients to reduce the amount of data used to represent the coefficients. For example, quantization may reduce the bit depth associated with some or all of the coefficients. In one example, a coefficient having an n-bit value may be rounded down to an m-bit value during quantization, where n is greater than m.
[0078] Once quantization is performed, the decoded video bitstream includes the quantized transform coefficients, prediction information (e.g., prediction mode, motion vectors, block vectors, etc.), segmentation information, and any other suitable data (such as other syntax data). Different elements of the decoded video bitstream can be entropy encoded by the encoder engine 106. In some examples, the encoder engine 106 can scan the quantized transform coefficients using a predefined scanning order to produce a serialized vector that can be entropy encoded. In some examples, the encoder engine 106 can perform adaptive scanning. After scanning the quantized transform coefficients to form a vector (e.g., a one-dimensional vector), the encoder engine 106 can entropy encode the vector. For example, the encoder engine 106 can use context adaptive variable length coding, context adaptive binary arithmetic coding, syntax-based context adaptive binary arithmetic coding, probability interval segmentation entropy coding, or another suitable entropy coding technique.
[0079] The output 110 of the encoding device 104 may transmit the NAL units constituting the encoded video bitstream data to a decoding device 112 of a receiving device over a communication link 120. The input 114 of the decoding device 112 may receive the NAL units. The communication link 120 may include a channel provided by a wireless network, a wired network, or a combination of a wired network and a wireless network. The wireless network may include any wireless interface or combination of wireless interfaces and may include any suitable wireless network (e.g., the Internet or other wide area network, a packet-based network, a WiFi network, or a wireless network). TM , Radio Frequency (RF), UWB, WiFi Direct, Cellular, Long Term Evolution (LTE), WiMax TM The wired network may include any wired interface (e.g., optical fiber, Ethernet, power line Ethernet, Ethernet based on coaxial cable, digital signal line (DSL), etc.). The wired network and / or wireless network may be implemented using various equipment (such as base stations, routers, access points, bridges, gateways, switches, etc.). The encoded video bitstream data may be modulated according to a communication standard (such as a wireless communication protocol) and sent to a receiving device.
[0080] In some examples, the encoding device 104 may store the encoded video bitstream data in a storage device 108. The output end 110 may retrieve the encoded video bitstream data from the encoder engine 106 or from the storage device 108. The storage device 108 may include any of a variety of distributed or locally accessed data storage media. For example, the storage device 108 may include a hard drive, a storage disk, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing the encoded video data. The storage device 108 may also include a decoded picture buffer (DPB) for storing reference pictures for use in inter-frame prediction. In a further example, the storage device 108 may correspond to a file server or another intermediate storage device that can store the encoded video generated by the source device. In such a case, a receiving device including a decoding device 112 can access the stored video data from the storage device via streaming or downloading. The file server can be any type of server capable of storing the encoded video data and sending the encoded video data to the receiving device. Example file servers include web servers (e.g., for websites), FTP servers, network attached storage (NAS) devices, or local disk drives. The receiving device may access the encoded video data through any standard data connection (including an Internet connection), and may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of the two suitable for accessing the encoded video data stored on a file server. The transmission of the encoded video data from the storage device 108 may be streaming, download transmission, or a combination thereof.
[0081] The input end 114 of the decoding device 112 receives the encoded video bitstream data, and the video bitstream data can be provided to the decoder engine 116, or provided to the storage device 118 for later use by the decoder engine 116. For example, the storage device 118 may include a DPB for storing reference pictures used in inter-frame prediction. The receiving device including the decoding device 112 can receive the encoded video data to be decoded via the storage device 108. The encoded video data can be modulated according to a communication standard (such as a wireless communication protocol) and sent to the receiving device. The communication medium for sending the encoded video data may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form a part of a packet-based network such as the following: a local area network, a wide area network, or a global network such as the Internet. The communication medium may include a router, a switch, a base station, or any other equipment that may be useful for facilitating communication from a source device to a receiving device.
[0082] The decoder engine 116 may decode the encoded video bitstream data by entropy decoding (e.g., using an entropy decoder) and extracting elements of one or more decoded video sequences that constitute the encoded video data. The decoder engine 116 may rescale the encoded video bitstream data and perform an inverse transform on it. The residual data is passed to the prediction stage of the decoder engine 116. The decoder engine 116 predicts a block of pixels (e.g., a PU). In some examples, the prediction is added to the output of the inverse transform (residual data).
[0083] The decoding device 112 may output the decoded video to a video destination device 122, which may include a display or other output device for displaying the decoded video data to a consumer of the content. In some aspects, the video destination device 122 may be part of a receiving device that includes the decoding device 112. In some aspects, the video destination device 122 may be part of a separate device distinct from the receiving device.
[0084] In some examples, the video encoding device 104 and / or the video decoding device 112 may be integrated with the audio encoding device and the audio decoding device, respectively. The video encoding device 104 and / or the video decoding device 112 may also include other hardware or software necessary to implement the decoding techniques described above, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. The video encoding device 104 and the video decoding device 112 may be integrated as part of a combined encoder / decoder (codec) in the corresponding device. Reference is made to Figure 5 An example of specific details of the encoding device 104 is described below. Figure 6 An example of specific details of the decoding device 112 is described.
[0085] exist Figure 1The example system shown in is an illustrative example that can be used in this article. The technology for processing video data using the technology described herein can be performed by any digital video encoding and / or decoding device. Although generally speaking, the technology of the present disclosure is performed by a video encoding device or a video decoding device, these technologies can also be performed by a combined video encoder-decoder (commonly referred to as a "codec"). In addition, the technology of the present disclosure can also be performed by a video preprocessor. The source device and the receiving device are merely examples of such decoding devices, wherein the source device generates decoded video data for sending to the receiving device. In some examples, the source device and the receiving device can operate in a substantially symmetrical manner so that each of these devices includes a video encoding and decoding component. Therefore, the example system can support one-way or two-way video transmission between video devices, for example, for video streaming, video playback, video broadcasting, or video telephony.
[0086] Extensions to the HEVC standard include a multi-view video coding extension (referred to as MV-HEVC) and a scalable video coding extension (referred to as SHVC). The MV-HEVC and SHVC extensions share the concept of layered coding, where different layers are included in the coded video bitstream. Each layer in the coded video sequence is addressed by a unique layer identifier (ID). The layer ID may be present in the header of the NAL unit to identify the layer associated with the NAL unit. In MV-HEVC, different layers may represent different views of the same scene in the video bitstream. In SHVC, different scalable layers are provided that represent the video bitstream at different spatial resolutions (or picture resolutions) or at different reconstruction fidelity. The scalable layers may include a base layer (where layer ID = 0) and one or more enhancement layers (where layer ID = 1, 2, ... n). The base layer may conform to the profile of the first version of HEVC and represent the lowest available layer in the bitstream. Compared to the base layer, the enhancement layer has an increased spatial resolution, temporal resolution or frame rate and / or reconstruction fidelity (or quality). Enhancement layers are organized hierarchically and may (or may not) depend on lower layers. In some examples, a single standard codec may be used to code the different layers (e.g., all layers are encoded using HEVC, SHVC, or other coding standards). In some examples, multiple standard codecs may be used to code the different layers. For example, the base layer may be coded using AVC, while one or more enhancement layers may be coded using SHVC and / or MV-HEVC extensions to the HEVC standard.
[0087] Typically, a layer includes a set of VCL NAL units and a corresponding set of non-VCL NAL units. NAL units are assigned specific layer ID values. Layers can be hierarchical in the sense that layers can depend on lower layers. A layer set refers to a set of self-contained layers represented in a bitstream, which means that layers in a layer set can depend on other layers in the layer set during decoding, but do not depend on any other layers to be decoded. Therefore, the layers in a layer set can form an independent bitstream that can represent video content. The set of layers in a layer set can be obtained from another bitstream through the operation of a sub-bitstream extraction process. A layer set may correspond to a set of layers to be decoded when a decoder wants to operate according to certain parameters.
[0088] The present disclosure may generally involve "signaling" certain information (such as syntax elements). The term "signaling" may generally refer to the communication of values of syntax elements and / or other data used to decode encoded video data. For example, video encoding device 104 may signal values of syntax elements in a bitstream. Generally speaking, signaling refers to generating values in a bitstream. As noted above, video source 102 may transmit the bitstream to video destination device 122 in substantially real time or in non-real time (such as may occur when storing syntax elements to storage device 108 for later retrieval by video destination device 122).
[0089] The video bitstream may also include a supplemental enhancement information (SEI) message. For example, a SEI NAL unit may be part of the video bitstream. In some cases, the SEI message may contain information that is not required for the decoding process. For example, the information in the SEI message may not be necessary for the decoder to decode the video picture of the bitstream, but the decoder may use the information to improve the display or processing of the picture (e.g., decoded output). The information in the SEI message may be embedded metadata. In an illustrative example, the information in the SEI message may be used by a decoder-side entity to improve the visibility of the content. In some instances, certain application standards may indicate the presence of such SEI messages in the bitstream, so that quality improvements can be brought to all devices that comply with the application standards (e.g., carrying a frame packing SEI message for a frame-compatible planar stereoscopic 3DTV video format, where an SEI message is carried for each frame of the video; processing recovery point SEI messages; using a pull-scan rectangle SEI message in DVB; and many other examples).
[0090] In some examples, video encoding and / or decoding may use a separable transform. In some examples, a separable transform may be separated into two stages that are performed separately, wherein the first stage includes one or more horizontal transforms and the second stage includes one or more vertical transforms, or vice versa. For example, in an illustrative example, a video encoding and / or decoding process may perform a horizontal transform to generate an intermediate result, and a vertical transform may be performed on the intermediate result to obtain the final result of the separable transform. In some examples, video encoding and / or decoding may use an inseparable transform. In some examples, an inseparable transform may be performed as a single-stage transform (or transform set) without being separated into separate stages based on a horizontal transform and a vertical transform. In some examples, the transform may be applied directly to the residual to obtain coefficients.
[0091] As noted above, according to the VVC standard and Enhanced Compression Model 5.0 (ECM-5.0), a non-separable transform may be used (e.g., during encoding and / or decoding) for blocks that are coded (e.g., encoded and / or decoded) using intra prediction, which are referred to herein as intra-coded blocks. In some cases, such as to reduce computational complexity, the non-separable transform is implemented as a secondary transform (also referred to as a low-frequency non-separable transform (LFNST)), which is applied on low-frequency discrete cosine transform (DCT) coefficients (e.g., DCT2 coefficients) or among the general primary separable transform coefficients, where in some cases, other coefficients are cleared to zero. In some cases, the LFNST kernel may rely on the intra prediction mode to better capture the directionality of the block and the corresponding residual, thereby producing better energy compression. In encoding, improving energy compression by using a non-separable transform (e.g., LFNST) after a separable transform (e.g., DCT or DCT2) can mean that the residual energy is concentrated in only a few coefficients rather than being more evenly distributed throughout the block, which in turn achieves fewer multiplication operations with non-zero coefficients and more multiplication operations with zero-valued coefficients (e.g., which are faster to compute and less computationally intensive). This benefit also applies to applying an inverse separable transform (e.g., inverse DCT or inverse DCT2) after an inverse non-separable transform (e.g., inverse LFNST) for decoding.
[0092] Figure 2 1 is a block diagram illustrating an example of an inverse transform process 200 utilizing a low frequency non-separable transform (LFNST). In some examples, the inverse transform process 200 utilizing LFNST may be performed by a decoder (such as a decoding device 112, a decoding engine 116, or a combination thereof). The input to the decoder may include encoded (e.g., compressed) image data and / or video data, such as received by the decoding device 112 via Figure 1The inverse transform process 200 using LFNST may be applied to at least one block or sub-block of coded image data and / or video data as part of decoding (e.g., decompressing) the coded image data and / or video data (e.g., as part of generating a reconstructed residual 210 for decoding the coded image data and / or video data).
[0093] Figure 2 The inverse transform process 200 illustrated in FIG. 2 may include various steps. For example, decoded transform coefficients 202 may be used as input to an inverse LFNST 204, such as by converting a two-dimensional (2-D) block (e.g., via a predefined scan / order) into a one-dimensional (1-D) coefficient list (or vector). An example of a 2-D block representing decoded transform coefficients 202 is illustrated as a shaded square in a halftone pattern. The inverse LFNST 204 may then be applied to the 1-D input coefficient list and the output coefficients may be reorganized (e.g., via a predefined scan / order, such as via a horizontal raster scan order or a vertical raster scan order) into a 2-D block representing inverse transformed LFNST coefficients 206 illustrated with a cross-hatched diagram. The inverse transformed LFNST coefficients 206 may then be used as input to a separable inverse DCT-2 208 to obtain a reconstructed residual 210, which is illustrated as a rectangle shaded with a checkerboard pattern. In some examples, the 2-D block representing the decoded transform coefficients 202 may represent a block or sub-block (e.g., of an encoded image frame or video frame being decoded and / or associated residuals). In some examples, due to energy compression as discussed above, the residual energy is concentrated in the 2-D block representing the decoded transform coefficients 202, where at least some of the other coefficients outside the 2-D are cleared to zero. In some examples, due to energy compression as discussed above, the residual energy is concentrated in the 2-D block representing the inverse transformed LFNST coefficients 206, where at least some of the other coefficients outside the 2-D are cleared to zero.
[0094] Figure 2 The inverse transform process 200 illustrated in FIG. 2 may be reversed by the encoder (e.g., run from right to left instead of left to right). For example, the encoder may apply a separable DCT-2 transform to obtain DCT-2 coefficients. Due to energy compression, the DCT-2 coefficients may be concentrated in a portion of the block, effectively reducing the matrix size. The encoder may apply a LFNST transform to the portion of the block (e.g., to the DCT-2 coefficients) to obtain the final coefficients of the combined transform.
[0095] However, according to VVC and ECM-5.0, only separable transforms (e.g., DCT2 transforms and non-DCT2 transforms) can be used for blocks (e.g., CUs) that are decoded using inter-frame prediction, which are referred to herein as inter-frame decoded blocks. In other words, one or more inseparable transforms are not available for inter-frame decoded blocks. For example, the non-DCT2 transform consists of a DST7 kernel and a DCT8 kernel, and there are four possibilities for horizontal (trHor) and vertical (trVer) transforms: (trHor, trVer) = {(DST7, DST7), (DST`7, DCT8), (DCT8, DST7), (DCT8, DCT8)}. A flag is signaled to indicate whether a non-DCT2 transform is used for each CU, and then a 2-bit fixed length coding is used to indicate the selected candidate among the four choices.
[0096] In some examples, a non-separable transform such as LFNST may more accurately and / or more optimally capture diagonal features (e.g., diagonal edges), whereas a separable transform (e.g., DCT or DCT-2) having a horizontal transform stage and a vertical transform stage may not accurately and / or optimally capture diagonal features (e.g., diagonal edges). Therefore, incorporating a non-separable transform such as LFNST into the inverse transform process 200 may produce a reconstructed residual 210 having more accurately reconstructed diagonal features (e.g., diagonal edges).
[0097] In some examples, VVC is able to use a non-separable transform for blocks (e.g., CUs) that are coded using intra prediction, which are referred to herein as intra-coded blocks. This allows VVC to accurately and efficiently indicate several different directions of features (e.g., edges) via the transform matrix, including horizontal, vertical, and several diagonal directions, depending on what best fits the direction of the feature in the residual. For each direction (as indicated by the intra prediction mode), VVC can define a different LFNST kernel.
[0098] Adding at least one non-separable transform (e.g., LFNST) to the inverse transform process 200 for an inter-coded block may provide some of the technical benefits discussed above (e.g., more accurate, efficient, and optimal representation of diagonal features) to the inter-coded block. While intra-prediction provides an indication of direction through the intra-prediction mode, inter-prediction generally does not provide an indication of direction. Therefore, to add at least one non-separable transform (e.g., LFNST) to the inverse transform process 200 for an inter-coded block, the direction may be identified or indicated based on one or more of the various processes discussed further below, such as obtaining a gradient in the current predicted block, deriving the direction from a template including reconstructed pixels from neighboring blocks, determining the direction from geometric partitioning mode (GPM) edge information of a GPM-coded block, or a combination thereof.
[0099] As previously noted, systems and techniques are described herein for providing application of one or more non-separable transforms to inter-coded blocks. Various aspects of the systems and techniques described herein may be applied independently or in any combination. The systems and techniques may be used by Figure 1 and Figure 5 The encoding device 104 and / or Figure 1 and Figure 6 The decoding device 112 is used to execute or use them to implement.
[0100] In some aspects, the systems and techniques provide direction-dependent non-separable transform kernels. For example, to better capture the direction of a coded block (and / or the direction of a residual), one or more non-separable transform kernels may depend on the direction of the coded block (e.g., a CU or other video data block). For example, kernels may be designed for M classes (where M is the number of directions considered; note that kernels may also be designed for blocks that clearly do not have a significant direction), where each class may have N number of candidate kernels (e.g., specifying M×N non-separable transform kernels).
[0101] One or more techniques may be used to derive the direction of a block, for example any form of processing / filtering that uses the directional information provided for the block may be applied. In one illustrative example, the direction may be derived from the current predicted block. In such examples, the direction of the block may be derived for a motion compensated predicted block. This may be based on the assumption that as long as the prediction quality is good enough, the often predicted block is a reasonable approximation of the original block. In some cases, a method such as or similar to a histogram of gradients (HoG) may be used to detect the dominant edge direction.
[0102] Figure 3A is a conceptual diagram illustrating pixels of a block or sub-block from which one or more gradients are calculated for determining a direction. For example, using, for example, a sobel filter Figure 3AOne or more gradients are calculated for each pixel in the shaded pixels (e.g., including pixel 302). In some examples, a horizontal gradient (Gx) and a vertical gradient (Gy) may be determined for each pixel, for example using the formulas Gx(r,c)=I(r,c+1)--I(r,c-1) and Gy(r,c)=I(r+1,c)--I(r-1,c), where r and c represent the row and column of the pixel. The angle and magnitude of each pixel is determined as Angle=|tan -1 (Gy / Gx)|and Angle can be called direction or orientation. Amplitude can be called magnitude.
[0103] Figure 3B is a diagram illustrating an example of a Histogram of Gradients (HoG) that indicates magnitudes of different directions calculated from one or more gradients of a pixel. Within the HoG, different points along the horizontal axis (and hence different bars of the HoG) represent different directions and / or direction intervals (e.g., direction ranges). For example, Figure 3B The HoG includes 20 different bars, which can represent 20 different direction intervals. Each direction interval can have a different angle range, so that each angle in the angle determined according to the gradient (as described above with respect to Figure 3A In one exemplary aspect, the direction intervals may include ranges that are 18 degrees apart from each other (e.g., 0 degrees to 18 degrees, 18 degrees to 36 degrees, etc.). In a second exemplary aspect, the direction intervals may include ranges that are 9 degrees apart from each other (e.g., 0 degrees to 9 degrees, 9 degrees to 18 degrees, etc.). Similarly, each of the 20 different bars may represent 20 directions. In this case, according to the gradient (as described above with respect to Figure 3A Each of the angles determined (discussed) is grouped into the closest directions listed along the direction axis in the HoG. In one exemplary aspect, the directions may be spaced 18 degrees apart from each other (e.g., 0 degrees, 18 degrees, 36 degrees, etc.). In a second exemplary aspect, the directions may be spaced 9 degrees apart from each other (e.g., 0 degrees, 9 degrees, 18 degrees, etc.). The HoG may then be used to find the dominant feature direction of the features in the block (which may be referred to as the dominant direction of the block) based on which bar (which direction interval) in the HoG has the largest (maximized) magnitude. Figure 3B is exemplified as Figure 3B The dominant direction may be determined as the direction at the center of the direction interval (e.g., 9 degrees if the direction interval represents a range from 0 degrees to 18 degrees). The direction may be referred to as the orientation. Amplitude may be referred to as magnitude. HoG may be referred to as a histogram of oriented gradients.
[0104] In another illustrative example, the direction may be derived from a template that includes reconstructed pixels from one or more neighboring blocks. For example, similar to the decoder-side intra mode derivation (DIMD) intra prediction tool in ECM-5.0, the HoG may be derived from the reconstructed neighboring pixels. The L-shaped template may be constructed using reconstructed pixels from the left pixels (from the left neighboring block to the left of the current block) and the top pixels (from the top neighboring block above the current block) relative to the current block. The HoG may be calculated based on the pixels in the template (e.g., pixels of the neighboring blocks and / or the current block) to be used as the direction of the current block.
[0105] In another illustrative example, the direction may be derived using the geometric partitioning mode (GPM) edge information of the GPM-coded block. For example, in VVC and ECM-5.0, GPM is an inter-coding tool that segments or partitions one or more coding blocks into two parts. The direction of the block may be determined using GPM based on the assumption that the residual of the GPM may be around the edge (which segments the block into two parts). Therefore, the direction of the edge (which partitions the two parts) may also be used to derive the direction of the coding block. In some aspects, different segments or partitions of the one or more coding blocks (as partitioned using GPM) may have different motion vector codings, which may also be used to derive the direction of the coding block.
[0106] With respect to applying a non-separable transform to an inter-coded block, the non-separable transform may be applied directly to the residual pixels. Alternatively or additionally, the non-separable transform may be applied as a secondary transform on the primary transform coefficients (e.g., on coefficients determined using a separable transform such as DCT or DCT2). In the case where the non-separable transform is applied as a secondary transform on the primary transform coefficients, a subset of coefficients may be zeroed. The extent of the zeroing may depend on the coding block size.
[0107] In some cases, the non-separable transform may be applied only for certain block sizes. For example, if the size of the block (e.g., an inter-coded block) is less than a first size threshold (e.g., 8x8, 16x16, 32x32, etc.), the non-separable transform is not applied. In another example, if the block size is greater than the first size threshold or the second size threshold, the non-separable transform is not applied.
[0108] In some aspects, the non-separable transform candidates may be signaled as additional transform candidates (eg, in addition to existing separable transforms), or the non-separable transform candidates may be applied in a coupled manner on top of existing separable transforms.
[0109] In some examples, the techniques or processes described herein may be performed by a computing device or apparatus (such as encoding device 104, decoding device 112, and / or any other computing device). In some cases, a computing device or apparatus may include a processor, a microprocessor, a microcomputer, or other components of a device configured to perform the steps of the process described herein. In some examples, a computing device or apparatus may include a camera configured to capture video data (e.g., a video sequence) including video frames. For example, a computing device may include a camera device, which may or may not include a video codec. As another example, a computing device may include a mobile device with a camera (e.g., a camera device such as a digital camera, an IP camera, etc., a mobile phone or tablet computer including a camera, or other types of devices with a camera). In some cases, a computing device may include a display for displaying an image. In some examples, a camera or other capture device that captures video data is separated from a computing device, in which case the computing device receives the captured video data. The computing device may also include a network interface, a transceiver, and / or a transmitter configured to transmit video data. The network interface, the transceiver, and / or the transmitter may be configured to transmit data based on an Internet Protocol (IP) or other network data.
[0110] Figure 4 4 is a flowchart illustrating a process 400 for processing video data. The process 400 may be performed by a video processing system. The video processing system may include, for example, the system 100, a video source 102, an encoding device 104 (e.g., Figure 1 and / or Figure 5 ), encoder engine 106, communication link 120, decoding device 112 (e.g., Figure 1 and / or Figure 6 decoding device), decoder engine 116, video destination device 122, computing system, system, and apparatus, device, non-transitory computer-readable storage medium having stored thereon a program to be executed using a processor, or a combination thereof.
[0111] At operation 405, the video processing system (or a component thereof) is configured and capable of: obtaining a block of video data encoded using inter-frame prediction.
[0112] At operation 410, the video processing system (or a component thereof) is configured and capable of: applying a non-separable transform to the block of video data.
[0113] In some aspects, the kernel associated with the inseparable transform depends on a direction associated with the block of video data. For example, the direction may be determined based on pixels of the block of video data, based on pixels of at least one neighboring block of the block of video data, or based on information associated with a geometric partitioning mode (GPM) associated with the block of video data.
[0114] In some aspects, the video processing system (or components thereof) is configured and capable of: determining a direction associated with the video data block based on one or more pixels of the video data block (e.g., as related to FIG. 3A to FIG. 3B The video processing system (or a component thereof) can: apply the inseparable transform to the block of video data according to the direction associated with the block of video data, thereby applying the inseparable transform to the block of video data. In some aspects, the video processing system (or a component thereof) is configured and capable of: determining at least one gradient of pixels of the block (e.g., as in Figure 3A The video processing system (or a component thereof) is capable of: determining a dominant direction associated with the block based on the at least one gradient, thereby determining the direction associated with the block of video data based on the one or more pixels of the block (e.g., based on Figure 3B In some aspects, the direction associated with the block of video data is the direction of an edge (or corner or patch or another feature) in the block of video data.
[0115] In some aspects, the video processing system (or its components) is configured and capable of: determining a direction associated with the block of video data based on pixels of at least one neighboring block of the block of video data (e.g., in a template). The video processing system (or its components) is capable of: applying the inseparable transform to the block of video data according to the direction associated with the block of video data, thereby applying the inseparable transform to the block of video data. In some aspects, the at least one neighboring block includes a first neighboring block above the block and a second neighboring block to the left of the block (e.g., as part of the template). In some aspects, the video processing system (or its components) is configured and capable of: determining a gradient of the pixel included in the at least one neighboring block (e.g., as in Figure 3A , but using the at least one neighboring block). The video processing system (or a component thereof) is capable of: determining the direction of the block based on the gradient, thereby determining the direction associated with the block of video data based on the pixels of the at least one neighboring block (e.g., as in Figure 3B In some aspects, the at least one neighboring block comprises an intra-coded block. In some aspects, the at least one neighboring block comprises an inter-coded block. In some aspects, the direction associated with the block of video data is and / or is based on the direction of an edge (or corner or patch or another feature) in the at least one neighboring block.
[0116] In some aspects, the video processing system (or a component thereof) is configured and capable of: determining a direction associated with the block of video data based on information associated with a geometric partitioning pattern (GPM) associated with the block of video data. The video processing system (or a component thereof) is capable of: applying the inseparable transform to the block of video data according to the direction associated with the block of video data, thereby applying the inseparable transform to the block of video data. In some aspects, the block of video data is partitioned along a partition edge according to the GPM, and the video processing system (or a component thereof) is configured and capable of: determining a direction of the partition edge in order to determine the direction associated with the block of video data.
[0117] In some aspects, the video processing system (or components thereof) is configured and capable of: applying the non-separable transform directly to one or more pixels of the block of video data.
[0118] In some aspects, the video processing system (or components thereof) is configured and capable of: applying the non-separable transform (e.g., inverse LFNST 204) as a primary transform to one or more pixels of the block of video data, and applying the separable transform (e.g., inverse DCT-2 208) as a secondary transform to the one or more pixels of the block of video data (e.g., as in Figure 2 In some aspects, the video processing system (or components thereof) is configured and capable of: applying a separable transform (e.g., a DCT-2 transform, such as in the inverse of the inverse DCT-2 208) as a primary transform to one or more pixels of the block of video data, and applying a non-separable transform (e.g., a LFNST transform, such as in the inverse of the inverse LFNST 204) as a secondary transform to the one or more pixels of the block of video data (e.g., Figure 2 inverse of ).
[0119] In some aspects, the video processing system (or its components) is configured and capable of: determining whether the size of the video data block is greater than a size threshold. The video processing system (or its components) is capable of: applying the inseparable transform to the video data block based on determining that the size of the video data block is greater than the size threshold.
[0120] In some aspects, the video processing system (or components thereof) is configured and capable of: sending one or more inseparable transform candidates for the block of video data.
[0121] In some aspects, the block of video data comprises a block of residual video data.
[0122] In some aspects, the video processing system (or components thereof) is configured and capable of: applying a separable transform (e.g., inverse DCT-2 208) to the block of video data after applying the non-separable transform (e.g., inverse LFNST 204) to the block of video data (e.g., as in Figure 2 In some aspects, the separable transform is an inverse discrete cosine transform (DCT) (e.g., inverse DCT-2 208). In some aspects, the video processing system (or components thereof) is configured and capable of: applying the separable transform (e.g., DCT-2) to the block of video data to generate coefficients before applying the non-separable transform (e.g., LFNST) to the block of video data. The video processing system (or components thereof) is capable of: applying the non-separable transform to the coefficients, thereby applying the non-separable transform to the block of video data (e.g., Figure 2 In some aspects, the separable transform is a discrete cosine transform (DCT) (e.g., DCT-2 or inverse DCT-2 208).
[0123] In some aspects, the non-separable transform comprises an inverse low frequency non-separable transform (LFNST) (e.g., Figure 2 In some aspects, the non-separable transform comprises a low frequency non-separable transform (LFNST) (eg, an inverse of the inverse LFNST 204).
[0124] In some aspects, the video processing system (or components thereof) is configured and capable of: decoding the video data (e.g., as in a decoding device 112, a decoder engine 116, and / or a decoder performing an inverse transform process 200) using a reconstructed residual (e.g., a reconstructed residual 210) generated based on the inseparable transform applied to the block of video data.
[0125] In some aspects, the video processing system (or components thereof) is configured and capable of: encoding the video data (e.g., as in an encoding device 104, an encoder engine 106, and / or an encoder that performs an inverse of the inverse transform process 200) using a residual generated based on the inseparable transform applied to the block of video data.
[0126] In some aspects, applying the non-separable transform (e.g., inverse LFNST 204) to the block of video data is configured to generate a reconstruction residual (e.g., reconstruction residual 210) associated with the block of video data (e.g., as in Figure 2 middle).
[0127] The processes described herein may be implemented in hardware, computer instructions, or any combination thereof. In the context of computer instructions, each operation represents a computer-executable instruction stored on one or more computer-readable storage media that, when executed by one or more processors, performs the described operation. Generally speaking, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform a specific function or implement a specific data type. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement the process.
[0128] In addition, the processes described herein may be performed under the control of one or more computer systems configured with executable instructions, and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that is executed together on one or more processors, implemented by hardware, or a combination of the above. As noted above, the code may be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program including a plurality of instructions that can be executed by one or more processors. The computer-readable or machine-readable storage medium may be non-transitory.
[0129] The decoding techniques discussed herein may be used in example video encoding and decoding systems (e.g., Figure 1 In some examples, a system includes a source device that provides encoded video data that will be decoded by a target device later. Specifically, the source device provides video data to the target device via a computer-readable medium. The source device and the target device may include any of a variety of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets (such as so-called "smart" phones, so-called "smart" tablets), televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some cases, the source device and the target device may be equipped for wireless communication.
[0130] The target device may receive the encoded video data to be decoded via a computer-readable medium. The computer-readable medium may include any type of medium or device capable of moving the encoded video data from the source device to the target device. In one example, the computer-readable medium may include a communication medium that enables the source device to directly send the encoded video data to the target device in real time. The encoded video data may be modulated according to a communication standard (such as a wireless communication protocol) and sent to the target device. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form a part of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include a router, a switch, a base station, or any other equipment that may be useful for facilitating communication from the source device to the target device.
[0131] In some examples, the encoded data can be output from the output interface to the storage device. Similarly, the encoded data can be accessed from the storage device through the input interface. The storage device may include any data storage medium in various distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, the storage device may correspond to a file server or another intermediate storage device that can store the encoded video generated by the source device. The target device can access the stored video data from the storage device via streaming or downloading. The file server can be any type of server that can store the encoded video data and send the encoded video data to the target device. Example file servers include web servers (e.g., for websites), FTP servers, network attached storage (NAS) devices, or local disk drives. The target device can access the encoded video data through any standard data connection (including an Internet connection). The connection may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a DSL, a cable modem, etc.) suitable for accessing the encoded video data stored on the file server, or a combination of the two. The transmission of the encoded video data from the storage device may be streaming, download transmission, or a combination thereof.
[0132] The techniques of the present disclosure are not necessarily limited to wireless applications or settings. These techniques can be applied to video decoding to support any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, Internet streaming video transmissions (such as Dynamic Adaptive Streaming over HTTP (DASH)), digital video encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications. In some examples, the system can be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.
[0133] In one example, the source device includes a video source, a video encoder, and an output interface. The target device may include an input interface, a video decoder, and a display device. The video encoder of the source device may be configured to apply the technology disclosed herein. In other examples, the source device and the target device may include other components or arrangements. For example, the source device may receive video data from an external video source such as an external camera. Similarly, the target device may be docked with an external display device, rather than including an integrated display device.
[0134] The above example system is just an example. The technology for processing video data simultaneously can be performed by any digital video encoding and / or decoding device. Although generally speaking the technology of the present disclosure is performed by a video encoding device, these technologies can also be performed by a video encoder / decoder (commonly referred to as a "codec"). In addition, the technology of the present disclosure can also be performed by a video preprocessor. The source device and the target device are just examples of such decoding devices, wherein the source device generates decoded video data to send to the target device. In some examples, the source device and the target device can operate in a substantially symmetrical manner so that each of these devices includes a video encoding and decoding component. Therefore, the example system can support one-way or two-way video transmission between video devices, for example, for video streaming, video playback, video broadcasting or video telephony.
[0135] The video source may include a video capture device, such as a video camera, a video archiving unit including previously captured video, and / or a video feed interface for receiving video from a video content provider. As another alternative, the video source may generate computer graphics-based data as the source video, or generate a combination of real-time video, archived video, and computer-generated video. In some cases, if the video source is a video camera, the source device and the target device may form a so-called camera phone or video phone. However, as described above, the technology described in the present disclosure is generally applicable to video decoding, and may be applicable to wireless and / or wired applications. In each case, the captured, pre-captured or computer-generated video may be encoded by a video encoder. Encoded video information may be output to a computer-readable medium by an output interface.
[0136] As noted, computer-readable media may include transient media (such as wireless broadcasts or wired network transmissions) or storage media (i.e., non-transient storage media), such as hard disks, flash drives, compact discs, digital video discs, Blu-ray discs, or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from a source device and provide the encoded video data to a target device, for example, via a network transmission. Similarly, a computing device of a media production facility (such as a disc stamping facility) may receive encoded video data from a source device and produce a disc containing the encoded video data. Therefore, in various examples, computer-readable media may be understood to include one or more computer-readable media in various forms.
[0137] An input interface of a target device receives information from a computer-readable medium. The information of the computer-readable medium may include syntax information defined by a video encoder, which is also used by a video decoder, and the syntax information includes syntax elements describing characteristics and / or processing of blocks and other coded units (e.g., groups of pictures (GOPs)). A display device displays the decoded video data to a user and may include any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device. Various examples of the present application have been described.
[0138] The details of the encoding device 104 and the decoding device 112 are respectively described in Figure 5 and Figure 6 Shown in. Figure 55 is a block diagram 500 illustrating an example encoding device 104 that can implement one or more of the techniques described in the present disclosure. For example, the encoding device 104 can generate the syntax structures described herein (e.g., syntax structures of VPS, SPS, PPS or other syntax elements). The encoding device 104 can perform intra-frame prediction decoding and inter-frame prediction decoding of video blocks within a video slice. As previously described, intra-frame decoding relies at least in part on spatial prediction to reduce or remove spatial redundancy within a given video frame or picture. Inter-frame decoding relies at least in part on temporal prediction to reduce or remove temporal redundancy within adjacent or surrounding frames of a video sequence. Intra-frame mode (I mode) may refer to any of several spatial-based compression modes. Inter-frame mode (such as unidirectional prediction (P mode) or bidirectional prediction (B mode)) may refer to any of several temporal-based compression modes.
[0139] The encoding device 104 includes a segmentation unit 35, a prediction processing unit 41, a filter unit 63, a picture memory 64, a summer 50, a transform processing unit 52, a quantization unit 54, and an entropy coding unit 56. The prediction processing unit 41 includes a motion estimation unit 42, a motion compensation unit 44, and an intra-frame prediction processing unit 46. For video block reconstruction, the encoding device 104 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and a summer 62. The filter unit 63 is intended to represent one or more loop filters, such as a deblocking filter, an adaptive loop filter (ALF), and a sample adaptive offset (SAO) filter. Although the filter unit 63 is not limited to a single-loop filter, the filter unit 63 is not limited to a single-loop filter, and the filter unit 63 is not limited to a single-loop filter. Figure 5 6 is shown as an in-loop filter, but in other configurations, filter unit 63 may be implemented as a post-loop filter. Post-processing device 57 may perform additional processing on the encoded video data generated by encoding device 104. In some examples, the techniques of this disclosure may be implemented by encoding device 104. However, in other examples, one or more of the techniques of this disclosure may be implemented by post-processing device 57.
[0140] like Figure 5As shown, the encoding device 104 receives video data, and the segmentation unit 35 segments the data into video blocks. Segmentation may also include segmentation into slices, slice segments, tiles or other larger units and video block segmentation (e.g., according to a quadtree structure of LCUs and CUs). The encoding device 104 generally shows components for encoding video blocks within a video slice to be encoded. A slice may be divided into multiple video blocks (and may be divided into sets of video blocks called tiles). The prediction processing unit 41 may select one of a plurality of possible decoding modes for the current video block based on error results (e.g., decoding rate and distortion level, etc.), such as one of one or more inter-frame prediction decoding modes in a plurality of intra-frame prediction decoding modes. The prediction processing unit 41 may provide the resulting intra-frame decoded block or inter-frame decoded block to the summer 50 to generate residual block data and to the summer 62 to reconstruct the encoded block for use as a reference picture.
[0141] Intra-prediction processing unit 46 within prediction processing unit 41 may perform intra-predictive coding of the current video block relative to one or more neighboring blocks in the same frame or slice as the current block to be coded to provide spatial compression. Motion estimation unit 42 and motion compensation unit 44 within prediction processing unit 41 may perform inter-predictive coding of the current video block relative to one or more predictive blocks in one or more reference pictures to provide temporal compression.
[0142] Motion estimation unit 42 may be configured to determine an inter-prediction mode for a video slice according to a predetermined pattern for a video sequence. The predetermined pattern may designate a video slice in a sequence as a P slice, a B slice, or a GPB slice. Motion estimation unit 42 and motion compensation unit 44 may be highly integrated but are shown separately for conceptual purposes. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors, which estimate the motion of a video block. For example, a motion vector may indicate the displacement of a prediction unit (PU) of a video block within a current video frame or picture relative to a predictive block within a reference picture.
[0143] A predictive block is a block that is found to closely match a PU of a video block to be coded in terms of pixel difference, which may be determined by a sum of absolute difference (SAD), a sum of squared difference (SSD), or other difference metrics. In some examples, encoding device 104 may calculate values for sub-integer pixel positions of a reference picture stored in picture memory 64. For example, encoding device 104 may interpolate values for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of a reference picture. Thus, motion estimation unit 42 may perform a motion search relative to full pixel positions and fractional pixel positions and output a motion vector with fractional pixel precision.
[0144] Motion estimation unit 42 calculates a motion vector for a PU by comparing the position of a PU of a video block in an inter-coded slice to the position of a predictive block of a reference picture. The reference picture may be selected from a first reference picture list (List 0) or a second reference picture list (List 1), each of which identifies one or more reference pictures stored in picture memory 64. Motion estimation unit 42 communicates the calculated motion vector to entropy encoding unit 56 and motion compensation unit 44.
[0145] Motion compensation performed by motion compensation unit 44 may involve extracting or generating a predictive block based on a motion vector determined by motion estimation, possibly performing interpolation to sub-pixel precision. Upon receiving the motion vector of the PU of the current video block, motion compensation unit 44 may locate the predictive block pointed to by the motion vector in the reference picture list. The encoding device 104 forms a residual video block by subtracting the pixel values of the predictive block from the pixel values of the current video block being decoded, thereby forming a pixel difference value. The pixel difference value forms the residual data of the block and may include both a luminance difference component and a chrominance difference component. Summer 50 represents one or more components that perform a subtraction operation. Motion compensation unit 44 may also generate syntax elements associated with video blocks and video slices for use by the decoding device 112 when decoding video blocks of the video slices.
[0146] Intra-prediction processing unit 46 may perform intra-prediction on the current block as an alternative to inter-prediction performed by motion estimation unit 42 and motion compensation unit 44, as described above. Specifically, intra-prediction processing unit 46 may determine an intra-prediction mode for encoding the current block. In some examples, intra-prediction processing unit 46 may encode the current block using various intra-prediction modes, for example, during a separate encoding process, and intra-prediction processing unit 46 may select an appropriate intra-prediction mode to use from the tested modes. For example, intra-prediction processing unit 46 may calculate rate-distortion values using rate-distortion analysis for various tested intra-prediction modes, and may select an intra-prediction mode with the best rate-distortion characteristics among the tested modes. Rate-distortion analysis typically determines the amount of distortion (or error) between the encoded block and the original unencoded block that is encoded to produce the encoded block, as well as the bit rate (i.e., the number of bits) used to produce the encoded block. Intra-prediction processing unit 46 may calculate ratios from the distortions and rates for the various encoded blocks to determine which intra-prediction mode exhibits the best rate-distortion value for the block.
[0147] In any case, after selecting an intra-prediction mode for a block, intra-prediction processing unit 46 may provide information indicating the selected intra-prediction mode for the block to entropy encoding unit 56. Entropy encoding unit 56 may encode the information indicating the selected intra-prediction mode. Encoding device 104 may include in the transmitted bitstream configuration data a definition of coding contexts for various blocks and an indication of the most probable intra-prediction mode, an intra-prediction mode index table, and a modified intra-prediction mode index table for each of the contexts. The bitstream configuration data may include a plurality of intra-prediction mode index tables and a plurality of modified intra-prediction mode index tables (also referred to as codeword mapping tables).
[0148] After the prediction processing unit 41 generates a predictive block for the current video block via inter-frame prediction or intra-frame prediction, the encoding device 104 forms a residual video block by subtracting the predictive block from the current video block. The residual video data in the residual block may be included in one or more TUs and applied to the transform processing unit 52. The transform processing unit 52 transforms the residual video data into residual transform coefficients using a transform (such as a discrete cosine transform (DCT) or a conceptually similar transform). The transform processing unit 52 may convert the residual video data from a pixel domain to a transform domain, such as a frequency domain.
[0149] Transform processing unit 52 may pass the resulting transform coefficients to quantization unit 54. Quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, quantization unit 54 may perform a scan of the matrix including the quantized transform coefficients. Alternatively, entropy encoding unit 56 may perform the scan.
[0150] After quantization, entropy encoding unit 56 entropy encodes the quantized transform coefficients. For example, entropy encoding unit 56 may perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy encoding technique. After entropy encoding by entropy encoding unit 56, the encoded bitstream may be sent to decoding device 112, or archived for later sending or retrieval by decoding device 112. Entropy encoding unit 56 may also entropy encode motion vectors and other syntax elements for the current video slice being coded.
[0151] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual block in the pixel domain for later use as a reference block of a reference picture. Motion compensation unit 44 may calculate a reference block by adding the residual block to a predictive block of one of the reference pictures in a reference picture list. Motion compensation unit 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate sub-integer pixel values for use in motion estimation. Summer 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reference block for storage in picture memory 64. The reference block may be used by motion estimation unit 42 and motion compensation unit 44 as a reference block for inter-prediction of a block in a subsequent video frame or picture.
[0152] The encoding device 104 may perform any of the techniques described herein. Some techniques of this disclosure have been generally described with respect to the encoding device 104, but as mentioned above, some techniques of this disclosure may also be implemented by the post-processing device 57.
[0153] Figure 5 The encoding device 104 of represents an example of a video encoder configured to perform one or more of the transform decoding techniques described herein. The encoding device 104 may perform any of the techniques described herein, including the techniques described above with respect to Figure 6 The process described.
[0154] Figure 6 6 is a block diagram 600 illustrating an example decoding device 112. The decoding device 112 includes an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, a summer 90, a filter unit 91, and a picture memory 92. The prediction processing unit 81 includes a motion compensation unit 82 and an intra-frame prediction processing unit 84. In some examples, the decoding device 112 may perform substantially the same Figure 5 The encoding pass described by the encoding device 104 is a decoding pass that is the inverse of the encoding pass.
[0155] During the decoding process, the decoding device 112 receives an encoded video bitstream representing video blocks and associated syntax elements of an encoded video slice transmitted by the encoding device 104. In some examples, the decoding device 112 may receive the encoded video bitstream from the encoding device 104. In some examples, the decoding device 112 may receive the encoded video bitstream from a network entity 79 such as a server, a media-aware network element (MANE), a video editor / splicer, or other such device configured to implement one or more of the above-mentioned techniques. The network entity 79 may or may not include the encoding device 104. Some of the techniques described in the present disclosure may be implemented by the network entity 79 before the network entity 79 transmits the encoded video bitstream to the decoding device 112. In some video decoding systems, the network entity 79 and the decoding device 112 may be parts of separate devices, while in other instances, the functionality described with respect to the network entity 79 may be performed by the same device including the decoding device 112.
[0156] The entropy decoding unit 80 of the decoding device 112 entropy decodes the bitstream to generate quantized coefficients, motion vectors and other syntax elements. The entropy decoding unit 80 forwards the motion vectors and other syntax elements to the prediction processing unit 81. The decoding device 112 may receive syntax elements at the video slice level and / or the video block level. The entropy decoding unit 80 may process and parse both fixed length syntax elements and variable length syntax elements in one or more parameter sets (such as VPS, SPS, and PPS).
[0157] When the video slice is decoded as an intra-coded (I) slice, the intra-prediction processing unit 84 of the prediction processing unit 81 may generate prediction data for the video block of the current video slice based on the signaled intra-prediction mode and data from a previously decoded block of the current frame or picture. When the video frame is decoded as an inter-coded (i.e., B, P, or GPB) slice, the motion compensation unit 82 of the prediction processing unit 81 generates a predictive block for the video block of the current video slice based on the motion vector and other syntax elements received from the entropy decoding unit 80. The predictive block may be generated from one of the reference pictures in the reference picture list. The decoding device 112 may construct the reference frame lists (list 0 and list 1) using a default construction technique based on the reference pictures stored in the picture memory 92.
[0158] Motion compensation unit 82 determines prediction information for a video block of the current video slice by parsing the motion vectors and other syntax elements, and uses the prediction information to generate a predictive block for the current video block being decoded. For example, motion compensation unit 82 may use one or more syntax elements in a parameter set to determine a prediction mode (e.g., intra prediction or inter prediction) for coding a video block of a video slice, an inter-prediction slice type (e.g., a B slice, a P slice, or a GPB slice), construction information for one or more reference picture lists for the slice, a motion vector for each inter-coded video block of the slice, an inter-prediction state for each inter-coded video block of the slice, and other information for decoding a video block in the current video slice.
[0159] The motion compensation unit 82 may also perform interpolation based on interpolation filters. The motion compensation unit 82 may calculate interpolated values for sub-integer pixels of the reference blocks using interpolation filters as used by the encoding device 104 during encoding of the video blocks. In the above case, the motion compensation unit 82 may determine the interpolation filters used by the encoding device 104 from the received syntax elements and may use the interpolation filters to produce the predictive blocks.
[0160] Inverse quantization unit 86 inverse quantizes or dequantizes the quantized transform coefficients provided in the bitstream and decoded by entropy decoding unit 80. The inverse quantization process may include determining the degree of quantization using quantization parameters calculated by encoding device 104 for each video block in the video slice, and likewise determining the degree of inverse quantization that should be applied. Inverse transform processing unit 88 applies an inverse transform (e.g., an inverse DCT or other suitable inverse transform), an inverse integer transform, or a conceptually similar inverse transform process to the transform coefficients to produce residual blocks in the pixel domain.
[0161] After motion compensation unit 82 generates a predictive block for the current video block based on the motion vector and other syntax elements, decoding device 112 forms a decoded video block by adding the residual block from inverse transform processing unit 88 to the corresponding predictive block generated by motion compensation unit 82. Summer 90 represents one or more components that perform this summing operation. If desired, a loop filter (in the decoding loop or after the decoding loop) may also be used to smooth pixel transitions or otherwise improve video quality. Filter unit 91 is intended to represent one or more loop filters, such as a deblocking filter, an adaptive loop filter (ALF), and a sample adaptive offset (SAO) filter. Although filter unit 91 is Figure 691 is shown as an in-loop filter, but in other configurations, filter unit 91 may be implemented as a post-loop filter. The decoded video blocks in a given frame or picture are stored in picture memory 92, which stores reference pictures for subsequent motion compensation. Picture memory 92 also stores the decoded video for later display on a display device such as Figure 1 The video shown is presented on target device 122).
[0162] Figure 1 The decoding device 112 of represents an example of a video decoder configured to perform one or more of the transform decoding techniques described herein. The decoding device 112 may perform any of the techniques described herein, including the techniques described above with respect to Figure 4 Process 400 is described.
[0163] In the foregoing description, various aspects of the present application are described with reference to the specific examples of the present application, but those skilled in the art will recognize that the subject matter of the present application is not limited thereto. Therefore, although the illustrative examples of the present application have been described in detail herein, it should be understood that the concepts described herein can be implemented and adopted in various other ways, and the appended claims are intended to be interpreted as including these variations, unless limited by the prior art. The various features and aspects of the above-mentioned subject matter can be used individually or in combination. Further, without departing from the broader essence and scope of this specification, each example can be utilized in any number of environments and applications other than the environment and application described herein. Therefore, the description and the accompanying drawings should be considered as illustrative rather than restrictive. For the purpose of illustration, each method is described in a specific order. It should be understood that in an alternative example, the method can be performed in an order different from the described order.
[0164] It should be understood by those of ordinary skill in the art that the less than ("<") and greater than (">") symbols or terms used herein may be replaced by less than or equal to ("≤") and greater than or equal to ("≥") symbols, respectively, without departing from the scope of the present specification.
[0165] Where a component is described as being “configured to” perform certain operations, such configuration may be achieved, for example, by designing electronic circuits or other hardware to perform the operations, by programming programmable electronic circuits (e.g., a microprocessor or other suitable electronic circuits) to perform the operations, or any combination thereof.
[0166] Claim language or other language reciting "at least one of" a set and / or "one or more of" a set indicates that one member of the set or multiple members of the set (in any combination) satisfies the claim. For example, claim language reciting "at least one of A and B" means A, B, or A and B. In another example, claim language reciting "at least one of A, B, and C" means A, B, C, or A and B, or A and C, or B and C, or A and B and C. The language "at least one of" a set and / or "one or more of" a set does not limit the set to the items listed in the set. For example, claim language reciting "at least one of A and B" may mean A, B, or A and B, and may additionally include items not listed in the set of A and B.
[0167] Claim language or other language reciting "at least one processor is configured to," "at least one processor is configured to," etc., indicates that one processor or multiple processors can perform the associated operations (in any combination). For example, claim language reciting "at least one processor is configured to: X, Y, and Z" means that a single processor can be used to perform operations X, Y, and Z; or multiple processors are each tasked with a particular subset of operations X, Y, and Z, such that the multiple processors together perform X, Y, and Z; or a group of multiple processors work together to perform operations X, Y, and Z. In another example, claim language reciting "at least one processor is configured to: X, Y, and Z" can mean that any single processor can perform at least only a subset of operations X, Y, and Z.
[0168] Various illustrative logic blocks, modules, circuits and algorithmic steps described in conjunction with the examples disclosed herein may be implemented as electronic hardware, computer software, firmware or a combination thereof. In order to clearly illustrate this interchangeability of hardware and software, various illustrative components, frames, modules, circuits and steps have been generally described in terms of their functionality. Whether such functions are implemented as hardware or software depends on the specific application and the design constraints proposed to the entire system. The technician may implement the described functionality in different ways for each specific application, but such specific implementation decisions should not be interpreted as making it depart from the scope of the present application.
[0169] The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices, such as general-purpose computers, wireless communication device mobile phones, or integrated circuit devices with multiple uses, including applications in wireless communication device mobile phones and other devices. Any features described as modules or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, these techniques may be implemented at least in part by a computer-readable data storage medium including a program code, the program code including instructions, which execute one or more of the above methods when executed. A computer-readable data storage medium may form a part of a computer program product, which may include packaging materials. A computer-readable medium may include a memory or data storage medium, such as a random access memory (RAM) (such as a synchronous dynamic random access memory (SDRAM)), a read-only memory (ROM), a non-volatile random access memory (NVRAM), an electrically erasable programmable read-only memory (EEPROM), a flash memory, a magnetic or optical data storage medium, etc. Additionally or alternatively, the technology may be implemented at least in part by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and / or executed by a computer, such as a propagated signal or wave.
[0170] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuit systems. Such processors may be configured to perform any of the techniques described in the present disclosure. A general-purpose processor may be a microprocessor; however, in an alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors combined with a DSP core, or any other such configuration. Therefore, the term "processor" as used herein may refer to any of the aforementioned structures, any combination of the aforementioned structures, or any other structure or device suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided in a dedicated software module or hardware module configured for encoding and decoding, or incorporated into a combined video encoder-decoder (CODEC).
[0171] Illustrative aspects of the present disclosure include:
[0172] Aspect 1: A device for processing video data, the device comprising: at least one memory; and at least one processor, the at least one processor being coupled to the at least one memory, the at least one processor being configured to: obtain a video data block encoded using inter-frame prediction; and apply a non-separable transform to the video data block.
[0173] Aspect 2. The apparatus of aspect 1, wherein a kernel associated with the non-separable transform is dependent on a direction associated with the block of video data.
[0174] Aspect 3. According to the device described in any one of Aspects 1 to 2, the at least one processor is configured to: determine a direction associated with the video data block based on one or more pixels of the video data block; and apply the inseparable transformation to the video data block based on the direction associated with the video data block, thereby applying the inseparable transformation to the video data block.
[0175] Aspect 4. According to the device of Aspect 3, the at least one processor is configured to: determine at least one gradient of the pixels of the block; and determine the dominant direction associated with the block based on the at least one gradient, thereby determining the direction associated with the video data block according to the one or more pixels of the block.
[0176] Clause 5. The apparatus according to any one of clauses 3 to 4, wherein the direction associated with the block of video data is the direction of an edge in the block of video data.
[0177] Aspect 6. An apparatus according to any one of Aspects 1 to 5, wherein the at least one processor is configured to: determine a direction associated with the video data block based on pixels of at least one neighboring block of the video data block; and apply the inseparable transformation to the video data block according to the direction associated with the video data block, thereby applying the inseparable transformation to the video data block.
[0178] Aspect 7. The apparatus according to aspect 6, wherein the at least one neighboring block comprises a first neighboring block above the block and a second neighboring block on the left side of the block.
[0179] Aspect 8. According to the device described in any one of Aspects 6 to 7, the at least one processor is configured to: determine the gradient of the pixels included in the at least one neighboring block; and determine the direction of the block based on the gradient, thereby determining the direction associated with the video data block based on the pixels of the at least one neighboring block.
[0180] Aspect 9. The apparatus of any one of aspects 6 to 8, wherein the at least one neighboring block comprises an intra-coded block.
[0181] Aspect 10. An apparatus according to any one of Aspects 1 to 9, wherein the at least one processor is configured to: determine a direction associated with the video data block based on information associated with a geometric partitioning pattern (GPM) associated with the video data block; and apply the inseparable transformation to the video data block according to the direction associated with the video data block, thereby applying the inseparable transformation to the video data block.
[0182] Aspect 11. The apparatus according to aspect 10, wherein the at least one processor is configured to: determine a direction of a partition edge so as to determine the direction associated with the video data block, wherein the video data block is partitioned along the partition edge according to the GPM.
[0183] Aspect 12. The apparatus according to any one of aspects 1 to 11, wherein the at least one processor is configured to: apply the non-separable transformation directly to one or more pixels of the video data block.
[0184] Aspect 13. According to an apparatus as described in any one of Aspects 1 to 12, the at least one processor is configured to: apply the separable transform as a primary transform to one or more pixels of the video data block; and apply the inseparable transform as a secondary transform to the one or more pixels of the video data block.
[0185] Aspect 14. According to an apparatus as described in any one of Aspects 1 to 13, the at least one processor is configured to: apply the inseparable transform as a primary transform to one or more pixels of the video data block; and apply the separable transform as a secondary transform to the one or more pixels of the video data block.
[0186] Aspect 15. According to the device described in any one of Aspects 1 to 14, the at least one processor is configured to: determine whether the size of the video data block is greater than a size threshold; and based on determining that the size of the video data block is greater than the size threshold, apply the inseparable transformation to the video data block.
[0187] Clause 16. The apparatus according to any one of clauses 1 to 15, wherein the at least one processor is configured to: send one or more inseparable transform candidates for the block of video data.
[0188] Clause 17. The apparatus of any one of clauses 1 to 16, wherein the block of video data comprises a block of residual video data.
[0189] Aspect 18. According to an apparatus according to any one of Aspects 1 to 17, the at least one processor is configured to: apply a separable transform to the video data block to generate coefficients before applying the inseparable transform to the video data block; and apply the inseparable transform to the coefficients, thereby applying the inseparable transform to the video data block.
[0190] Aspect 19. The apparatus according to aspect 18, wherein the separable transform is a discrete cosine transform (DCT).
[0191] Clause 20. The apparatus according to any one of clauses 1 to 19, wherein the at least one processor is configured to apply a separable transform to the block of video data after applying the non-separable transform to the block of video data.
[0192] Aspect 21. The apparatus according to aspect 20, wherein the separable transform is an inverse discrete cosine transform (DCT).
[0193] Aspect 22. The apparatus according to any one of aspects 1 to 21, wherein the non-separable transform comprises a low frequency non-separable transform (LFNST).
[0194] Aspect 23. An apparatus according to any one of aspects 1 to 22, wherein the non-separable transform comprises an inverse low frequency non-separable transform (LFNST).
[0195] Aspect 24. An apparatus according to any one of aspects 1 to 23, wherein the at least one processor is configured to decode the video data using a reconstruction residual generated according to the inseparable transform applied to the block of video data.
[0196] Aspect 25. The apparatus according to any one of aspects 1 to 24, wherein the at least one processor is configured to encode the video data using a residual generated according to the inseparable transform applied to the block of video data.
[0197] Clause 26. An apparatus according to any one of clauses 1 to 25, wherein applying the non-separable transform to the block of video data is configured to generate a reconstructed residual associated with the block of video data.
[0198] Aspect 27. A method of processing video data, the method comprising: obtaining a block of video data encoded using inter-frame prediction; and applying a non-separable transform to the block of video data.
[0199] Aspect 28. The method according to Aspect 27 further includes: determining a direction associated with the video data block based on one or more pixels of the video data block; and applying the inseparable transformation to the video data block based on the direction associated with the video data block, thereby applying the inseparable transformation to the video data block.
[0200] Aspect 29. A method according to any one of Aspects 27 to 28, the method further comprising: determining a direction associated with the video data block based on pixels of at least one neighboring block of the video data block; and applying the inseparable transform to the video data block according to the direction associated with the video data block, thereby applying the inseparable transform to the video data block.
[0201] Aspect 30. A method according to any one of Aspects 27 to 29, the method further comprising: determining a direction associated with the video data block based on information associated with a geometric partitioning pattern (GPM) associated with the video data block; and applying the inseparable transform to the video data block according to the direction associated with the video data block, thereby applying the inseparable transform to the video data block.
[0202] Aspect 31: A method according to any one of Aspects 27 to 29, the method further comprising: an operation according to any one of Aspects 2 to 26.
[0203] Aspect 32: A non-transitory computer-readable storage medium comprising instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to perform the operations according to any one of Aspects 1 to 31.
[0204] Aspect 33: An apparatus for processing video data, the apparatus comprising one or more components for performing the operations according to any one of Aspects 1 to 31.
Claims
1. A device for processing video data, the device comprising: at least one memory; and at least one processor, the at least one processor coupled to the at least one memory, the at least one processor configured to: Obtaining a video data block encoded using inter-frame prediction; as well as A non-separable transform is applied to the block of video data.
2. The apparatus of claim 1, wherein a kernel associated with the non-separable transform is dependent on a direction associated with the block of video data.
3. The apparatus of claim 1 , wherein the at least one processor is configured to: determining a direction associated with the block of video data based on one or more pixels of the block of video data; and The non-separable transform is applied to the block of video data by applying the non-separable transform to the block of video data according to the direction associated with the block of video data.
4. The apparatus of claim 3, wherein the at least one processor is configured to: determining at least one gradient of pixels of the block; and A dominant direction associated with the block is determined based on the at least one gradient, thereby determining the direction associated with the block of video data based on the one or more pixels of the block.
5. The device of claim 3, wherein the direction associated with the block of video data is a direction of an edge in the block of video data.
6. The apparatus of claim 1 , wherein the at least one processor is configured to: determining a direction associated with the block of video data based on pixels of at least one neighboring block of the block of video data; and The non-separable transform is applied to the block of video data by applying the non-separable transform to the block of video data according to the direction associated with the block of video data. 7 . The apparatus of claim 6 , wherein the at least one neighboring block comprises a first neighboring block above the block and a second neighboring block on a left side of the block.
8. The apparatus of claim 6, wherein the at least one processor is configured to: determining a gradient of the pixel included in the at least one neighboring block; and The direction of the block is determined based on the gradient, thereby determining the direction associated with the block of video data based on the pixels of the at least one neighboring block.
9. The device of claim 6, wherein the at least one neighboring block comprises an intra-coded block.
10. The apparatus of claim 1, wherein the at least one processor is configured to: determining a direction associated with the block of video data based on information associated with a geometric partitioning pattern (GPM) associated with the block of video data; and The non-separable transform is applied to the block of video data by applying the non-separable transform to the block of video data according to the direction associated with the block of video data.
11. The apparatus of claim 10, wherein the at least one processor is configured to: A direction of a partition edge is determined to determine the direction associated with the block of video data, wherein the block of video data is partitioned along the partition edge according to the GPM.
12. The apparatus of claim 1 , wherein the at least one processor is configured to: The non-separable transform is applied directly to one or more pixels of the block of video data.
13. The apparatus of claim 1 , wherein the at least one processor is configured to: applying a separable transform as a primary transform to one or more pixels of the block of video data; and The non-separable transform is applied as a secondary transform to the one or more pixels of the block of video data.
14. The apparatus of claim 1, wherein the at least one processor is configured to: applying the non-separable transform as a primary transform to one or more pixels of the block of video data; and A separable transform is applied as a secondary transform to the one or more pixels of the block of video data.
15. The apparatus of claim 1, wherein the at least one processor is configured to: determining whether the size of the video data block is greater than a size threshold; and Based on determining that the size of the block of video data is greater than the size threshold, applying the non-separable transform to the block of video data.
16. The apparatus of claim 1, wherein the at least one processor is configured to: One or more inseparable transform candidates are sent for the block of video data.
17. The device of claim 1, wherein the block of video data comprises a block of residual video data.
18. The apparatus of claim 1, wherein the at least one processor is configured to: Applying a separable transform to the block of video data to generate coefficients before applying the non-separable transform to the block of video data; and The non-separable transform is applied to the coefficients, thereby applying the non-separable transform to the block of video data.
19. The apparatus of claim 18, wherein the separable transform is a discrete cosine transform (DCT).
20. The apparatus of claim 1, wherein the at least one processor is configured to: After applying the non-separable transform to the block of video data, a separable transform is applied to the block of video data.
21. The apparatus of claim 20, wherein the separable transform is an inverse discrete cosine transform (DCT).
22. The apparatus of claim 1, wherein the non-separable transform comprises a low frequency non-separable transform (LFNST).
23. The apparatus of claim 1, wherein the non-separable transform comprises an inverse low frequency non-separable transform (LFNST).
24. The apparatus of claim 1, wherein the at least one processor is configured to: The video data is decoded using a reconstructed residual generated from the non-separable transform applied to the block of video data.
25. The apparatus of claim 1, wherein the at least one processor is configured to: The video data is encoded using a residual generated from the inseparable transform applied to the block of video data.
26. The apparatus of claim 1, wherein applying the non-separable transform to the block of video data is configured to generate a reconstructed residual associated with the block of video data.
27. A method for processing video data, the method comprising: Obtaining a video data block encoded using inter-frame prediction; as well as A non-separable transform is applied to the block of video data.
28. The method according to claim 27, further comprising: determining a direction associated with the block of video data based on one or more pixels of the block of video data; as well as The non-separable transform is applied to the block of video data by applying the non-separable transform to the block of video data according to the direction associated with the block of video data.
29. The method according to claim 27, further comprising: determining a direction associated with the block of video data based on pixels of at least one neighboring block of the block of video data; as well as The non-separable transform is applied to the block of video data by applying the non-separable transform to the block of video data according to the direction associated with the block of video data.
30. The method of claim 27, further comprising: determining a direction associated with the block of video data based on information associated with a geometric partitioning mode (GPM) associated with the block of video data; as well as The non-separable transform is applied to the block of video data by applying the non-separable transform to the block of video data according to the direction associated with the block of video data.