Method and device for processing video data and computer readable storage medium

By calculating the brightness and chrominance component clipping values ​​of the video data block in video encoding and decoding, the problem of high computational complexity in the prior art is solved, and more efficient calculations and lower decoding errors are achieved.

CN119893092APending Publication Date: 2025-04-25QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411885768.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2020-05-19
Filing Date
2020-05-20
Publication Date
2025-04-25

AI Technical Summary

Technical Problem

The prior art has high complexity when calculating the clipping value of an adaptive loop filter in video encoding and decoding, resulting in large computing resource consumption and increased decoding error.

Method used

By obtaining the picture block in the video data, the clipping value of the brightness and chrominance components of the corresponding block is determined, and the clipping value is calculated by shifting the first integer left and the second integer, which includes the result of subtracting the offset value associated with the clipping index value in the block.

Benefits of technology

The clipping value calculation of the adaptive loop filter in video encoding and decoding is simplified, the calculation complexity is reduced, the burden on the computing resources of the equipment is reduced, and the decoding error is reduced.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119893092A_ABST
    Figure CN119893092A_ABST
Patent Text Reader

Abstract

A method, an apparatus, and a computer-readable storage medium for processing video data are provided. The method includes: obtaining video data including one or more pictures; obtaining blocks of a picture from the one or more pictures; clipping values of the at least one filter are determined, including a first and a second set of clipping values corresponding to a luma component and a chroma component of the block, where a clipping value of the clipping values is determined by shifting the first integer left by a second integer, the second integer comprises a result of subtracting an offset value associated with a clipping index value from a bit depth value of a sample from the block, and wherein the first set of clipping values corresponding to the luma component and the second set of clipping values corresponding to the chroma component are both determined by shifting the first integer left by a second integer, wherein the offset value comprises a first integer value associated with the luma component and a second integer value associated with the chroma component, the first and second integer values comprising one of 0, 3, 5 or 7; and applying at least one filter to the block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of an invention patent application with an application date of May 20, 2020, application number: 202080036125.3, and invention name: “Simplification of clipping value calculation of adaptive loop filter”. Technical Field

[0002] The present disclosure relates generally to video coding and decoding. In some examples, aspects of the present disclosure relate to simplifying computation of clipping values ​​for adaptive loop filters and / or other filters used to encode and / or decode video data. Background Art

[0003] Many types of computing devices and systems allow video data to be processed and output for consumption. Digital video data includes large amounts of data, often driven in part by large demands from consumers and video providers. For example, consumers of video data expect high-quality video with high fidelity, resolution, frame rate, etc. The large amounts of video data often required to meet such demands place a significant burden on communication networks and devices that process and store such video data. Typically, various video codec techniques can be used to compress video data, thereby limiting the bandwidth and storage burden that such video data places on communication networks and devices.

[0004] Video coding can be performed according to one or more video coding standards. Example video coding standards include Versatile Video Codec (VVC), High Efficiency Video Codec (HEVC), Advanced Video Codec (AVC), Moving Picture Experts Group (MPEG) codec, etc. Prediction methods (e.g., inter-frame prediction, intra-frame prediction, etc.) are usually used to implement video coding. Prediction methods utilize the redundancy present in video images or sequences. Video coding techniques can use this redundancy to compress video data into a form that uses a lower bit rate while avoiding or minimizing the degradation of video quality. With the continuous evolution of video services, coding techniques with higher coding efficiency are needed. Summary of the invention

[0005] Disclosed are systems, methods, and computer-readable media for effectively and efficiently calculating clipping values ​​for an adaptive loop filter used in video encoding and decoding.

[0006] According to at least one example, a method for processing video data is provided, the method comprising: obtaining video data including one or more pictures; obtaining a block of the picture from the one or more pictures; determining clipping values ​​of at least one filter, the clipping values ​​including a first set of clipping values ​​corresponding to a luma component of the block and a second set of clipping values ​​corresponding to a chroma component of the block, wherein the clipping values ​​in the clipping values ​​are determined by shifting a first integer to the left by a second integer, the second integer including a result of subtracting an offset value associated with a clipping index value from a bit depth value of a sample from the block, and wherein the first set of clipping values ​​corresponding to the luma component and the second set of clipping values ​​corresponding to the chroma component are both determined by shifting the first integer to the left by the second integer, wherein the offset value includes a first integer value associated with the luma component and a second integer value associated with the chroma component, the first integer value and the second integer value including one of 0, 3, 5 or 7; and applying the at least one filter to the block.

[0007] According to at least one example, a device is provided, comprising: a memory; and one or more processors coupled to the memory, the one or more processors being configured to: obtain video data comprising one or more pictures; obtain a block of the pictures from the one or more pictures; determine clipping values ​​of at least one filter, the clipping values ​​comprising a first set of clipping values ​​corresponding to a luma component of the block and a second set of clipping values ​​corresponding to a chroma component of the block, wherein the clipping values ​​in the clipping values ​​are determined by shifting a first integer to the left by a second integer, the second integer comprising a result of subtracting an offset value associated with a clipping index value from a bit depth value of a sample from the block, and wherein the first set of clipping values ​​corresponding to the luma component and the second set of clipping values ​​corresponding to the chroma component are both determined by shifting the first integer to the left by the second integer, wherein the offset value comprises a first integer value associated with the luma component and a second integer value associated with the chroma component, the first integer value and the second integer value comprising one of 0, 3, 5, or 7; and apply the at least one filter to the block.

[0008] According to at least one example, a non-transitory computer-readable storage medium is provided, comprising: instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to: obtain video data comprising one or more pictures; obtain a block of the picture from the one or more pictures; determine clipping values ​​of at least one filter, the clipping values ​​comprising a first set of clipping values ​​corresponding to a luma component of the block and a second set of clipping values ​​corresponding to a chroma component of the block, wherein the clipping values ​​in the clipping values ​​are determined by shifting a first integer left by a second integer, the second integer comprising a result of subtracting an offset value associated with a clipping index value from a bit depth value of a sample from the block, and wherein the first set of clipping values ​​corresponding to the luma component and the second set of clipping values ​​corresponding to the chroma component are both determined by shifting the first integer left by the second integer, wherein the offset value comprises a first integer value associated with the luma component and a second integer value associated with the chroma component, the first integer value and the second integer value comprising one of 0, 3, 5, or 7; and apply the at least one filter to the block.

[0009] According to at least one example, a method for simplifying and efficiently calculating a clipping value of an adaptive loop filter is provided. The method may include: obtaining video data including one or more pictures; obtaining a block of the picture from the one or more pictures; determining a clipping value of at least one filter, the clipping value corresponding to at least one of a luminance component of the block and a chrominance component of the block, wherein the clipping value in the clipping value is determined by shifting a first integer left by a second integer, the second integer including a bit depth value of a sample from the block minus an offset value associated with a clipping index value; and applying at least one filter to the block.

[0010] According to at least one example, a device for simplifying and efficiently calculating a clipping value of an adaptive loop filter is provided. The device may include a memory and one or more processors coupled to the memory, the one or more processors being configured to: obtain video data including one or more pictures; obtain a block of the picture from the one or more pictures; determine a clipping value of at least one filter, wherein the clipping value corresponds to at least one of a luminance component of the block and a chrominance component of the block, wherein the clipping value in the clipping value is determined by shifting a first integer left by a second integer, the second integer including a bit depth value of a sample in the block minus an offset value associated with a clipping index value; and apply at least one filter to the block.

[0011] According to at least one example, another device for simplifying and efficiently calculating clipping values ​​of an adaptive loop filter is provided. The device may include a device for obtaining video data including one or more pictures; obtaining a block of a picture from the one or more pictures; a device for determining a clipping value of at least one filter, wherein the clipping value corresponds to at least one of a luminance component of the block and a chrominance component of the block, wherein the clipping value in the clipping value is determined by shifting a first integer left by a second integer, the second integer including a bit depth value of a sample in the block minus an offset value associated with a clipping index value; and a device for applying at least one filter to the block.

[0012] According to at least one example, a non-transitory computer-readable storage medium for simplifying and efficiently calculating clipping values ​​of an adaptive loop filter is provided. The non-transitory computer-readable storage medium may include instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to: obtain video data including one or more pictures; obtain blocks of pictures from the one or more pictures; determine clipping values ​​of at least one filter, wherein the clipping values ​​correspond to at least one of a luminance component of the block and a chrominance component of the block, wherein the clipping values ​​in the clipping values ​​are determined by shifting a first integer left by a second integer, the second integer comprising a bit depth value of a sample in the block minus an offset value associated with a clipping index value; and apply at least one filter to the block.

[0013] In some aspects, at least one filter in the above methods, non-transitory computer-readable media, and apparatuses may include an adaptive loop filter. In addition, in some examples, the clipping values ​​may include a first set of clipping values ​​for a luma component and a second set of clipping values ​​for a chroma component, the first set of clipping values ​​for the luma component and the second set of clipping values ​​for the chroma component being determined by left-shifting the first integer by the second integer.

[0014] In some cases, the first integer is 1, and wherein left shifting the first integer by a second integer includes raising 2 to a power that includes the exponent of the second integer.

[0015] In some aspects, the clipping value corresponds to a set of filter clipping values ​​in a clipping index table, wherein different filter clipping values ​​of the set of filter clipping values ​​in the clipping index table correspond to different locations within the picture.

[0016] In some examples, the offset value includes a predetermined offset value from among a plurality of predetermined offset values, and the offset value may be determined from among the plurality of predetermined offset values ​​based on the clipping index value.

[0017] In some aspects, determining a clipping value for at least one filter includes determining corresponding clipping values ​​for a plurality of samples from a picture, wherein each corresponding clipping value is associated with a particular sample from the plurality of samples, and wherein each corresponding clipping value is determined by left-shifting a first integer by a particular integer associated with the particular sample. In some examples, the particular integer comprises a bit depth value of the particular sample minus a particular result of a particular offset value from a plurality of predetermined offset values. In some cases, the particular offset value may be determined from the plurality of predetermined offset values ​​based on a particular clipping index value associated with the particular sample.

[0018] In some aspects, the clipping values ​​for at least one filter may include one or more luma clipping values ​​for a luma component and one or more chroma clipping values ​​for a chroma component, wherein the one or more luma clipping values ​​are determined by shifting a first integer left by a third integer, the third integer comprising a second result of subtracting a luma offset value associated with a second clipping index value from a bit depth value of luma samples of the picture, and wherein the one or more chroma clipping values ​​are determined by shifting the first integer left by a fourth integer, the fourth integer comprising a third result of subtracting a chroma offset value associated with a third clipping index value from a bit depth value of chroma samples of the picture.

[0019] In some cases, the at least one filter includes a 5x5 adaptive loop filter and a 7x7 adaptive loop filter, wherein applying the at least one filter to the reconstructed block includes applying the 5x5 adaptive loop filter to the chroma component and applying the 7x7 adaptive loop filter to the luma component.

[0020] In some cases, determining a clipping value for at least one filter may include determining filter coefficient values ​​for the at least one filter.

[0021] In some aspects, the above methods, non-transitory computer-readable media, and apparatus may include generating a coded video bitstream including one or more pictures. In some examples, the coded video bitstream may be generated based on video data and the result of applying at least one filter to a block. In some cases, the above methods, non-transitory computer-readable media, and apparatus may include sending the coded video bitstream to a decoding device, wherein the coded video bitstream is sent together with signaling information, the signaling information including at least one of an offset value, a clipping index value, a filter parameter, and an adaptive loop filter flag. In some aspects, the above methods, non-transitory computer-readable media, and apparatus may include storing the coded video bitstream.

[0022] In some aspects, the above-described methods, non-transitory computer-readable media, and apparatus may include obtaining an encoded video bitstream comprising one or more pictures; identifying signaling information associated with the encoded video bitstream, the signaling information comprising at least one of an offset value, a clipping index value, a filter parameter, and an adaptive loop filter flag; and decoding a block of the picture based on the encoded video bitstream.

[0023] In some aspects, decoding the block of the picture from the encoded video bitstream includes reconstructing the block of the picture, and wherein applying the at least one filter includes applying the at least one filter to the reconstructed block.

[0024] In some examples, the apparatus may include one or more sensors. In some aspects, the apparatus may include a mobile device. In some examples, the apparatus may include a mobile phone, a wearable device, a display device, a mobile computer, a head-mounted device, and / or a camera.

[0025] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used alone to determine the scope of the claimed subject matter. The subject matter should be understood by reference to the entire specification of this patent, any or all drawings, and appropriate portions of each claim.

[0026] The foregoing together with other features and embodiments will become more apparent with reference to the following description, claims and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0027] In order to describe the manner in which the disclosed and other advantages and features of the present disclosure can be obtained, the above principles will be described in more detail by referring to the specific embodiments thereof shown in the accompanying drawings. It should be understood that these drawings only depict example embodiments of the present disclosure and should not be considered to limit its scope. The principles of this document are described and explained with additional specificity and detail through the use of the accompanying drawings, in which:

[0028] Figure 1 is a block diagram illustrating examples of encoding devices and decoding devices according to some examples of the present disclosure;

[0029] Figure 2A is a simplified diagram of an example system for applying an adaptive loop filter (ALF) with clipping to an input frame according to some examples of the present disclosure;

[0030] Figure 2B is a flowchart of an example method for ALF filtering with clipping implemented by an encoding device according to some examples of the present disclosure;

[0031] Figure 2Cis a flowchart illustrating an example method of ALF filtering with clipping implemented by a decoding device according to some examples of the present disclosure;

[0032] Figure 3A is a diagram showing examples of chroma filter configurations according to some examples of the present disclosure;

[0033] Figure 3B is a diagram showing examples of luminance filter configurations according to some examples of the present disclosure;

[0034] Figure 4A is a diagram showing example filters without geometric transformation according to some examples of the present disclosure;

[0035] Figures 4B to 4D is a diagram showing example filters with different geometric transformations according to some examples of the present disclosure;

[0036] Figure 5 shows an example table of clipping values ​​based on a simplified clipping value calculation according to some examples of the present disclosure;

[0037] Figure 6 is a flow chart illustrating an example method 600 for processing video data according to some examples of the present disclosure;

[0038] Figure 7 is a block diagram illustrating an example video encoding device according to some examples of the present disclosure; and

[0039] Figure 8 is a block diagram illustrating an example video decoding device according to some examples of the present disclosure. DETAILED DESCRIPTION

[0040] Specific aspects and embodiments of the present disclosure are provided below. It will be appreciated by those skilled in the art that some of these aspects and embodiments may be applied independently and some of them may be applied in combination. In the following description, for the purpose of explanation, specific details are set forth to provide a comprehensive understanding of the embodiments of the present application. However, it is apparent that various embodiments may be practiced without these specific details. The accompanying drawings and description are not intended to be restrictive.

[0041] The following description provides only example embodiments and is not intended to limit the scope, applicability or configuration of the present disclosure. On the contrary, the following description of the exemplary embodiments will provide an enabling description for implementing the exemplary embodiments for 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 spirit and scope of the present application as set forth in the appended claims.

[0042] Video codecs can implement video compression techniques to efficiently encode and decode video data. Video compression techniques can include applying different prediction modes, including spatial prediction (e.g., intra-frame prediction or intra-prediction), temporal prediction (e.g., inter-frame prediction or inter-prediction), inter-layer prediction (across different layers of video data and / or other prediction techniques that reduce or remove redundancy inherent in video sequences), etc. The video encoder can divide each picture of the original video sequence into rectangular areas called video blocks or codec units, which are described in more detail below. These video blocks can be encoded using specific prediction modes.

[0043] In some cases, a video block may be divided into one or more groups of smaller blocks in one or more ways. Blocks may include codec tree blocks, predicted blocks, transform blocks, and / or other suitable blocks. Unless otherwise specified, general references to "blocks" may refer to such video blocks (e.g., codec tree blocks, codec blocks, predicted blocks, transform blocks, or other suitable blocks or sub-blocks, as understood by those skilled in the art). These blocks are also interchangeably referred to as "units" herein (e.g., codec tree units (CTUs), codec units (CUs), prediction units (PUs), transform units (TUs), etc.). In some cases, a unit may indicate a codec logic unit encoded in a bitstream, and a block may indicate a portion of a video frame buffer to which a process is directed.

[0044] For inter-prediction mode, the video encoder may search for a block similar to the block being encoded in a frame (or picture) at another temporal position (referred to as 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 of previously encoded neighboring blocks in the same picture.

[0045] The video encoder can determine a prediction error. In some examples, the prediction can be determined as the difference between the pixel values ​​in the block being encoded and the predicted block. The prediction error can also be referred to as a residual. The video encoder can also apply a transform (e.g., a discrete cosine transform (DCT) or other appropriate transform) to the prediction error to generate a transform coefficient. After the transform, the video encoder can quantize the transform coefficients. Syntax elements can be used to represent the quantized transform coefficients and motion vectors, and together with the control information form a coded representation of the video sequence. In some instances, the video encoder can entropy encode and decode the syntax elements to further reduce the number of bits used for their representation.

[0046] The video decoder can use the syntax elements and control information discussed above to construct prediction data (e.g., a prediction block) 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.

[0047] In some cases, an adaptive loop filter with clipping may be applied to enhance the quality of the reconstructed frame. Clipping is an image processing technique that can be used to process an image and / or improve the quality of an image or frame when the intensity or brightness of one or more regions of the image or frame falls outside of a representable minimum or maximum intensity or brightness. For example, clipping may be used to adjust the intensity or brightness values ​​of such regions of the image or frame to or within a representable minimum or maximum value.

[0048] The technology described herein can simplify and improve the efficiency of the clipping value calculation of the adaptive loop filter used in video coding.In some examples, the technology herein can reduce the complexity of this calculation, reduce decoding error and minimize the processing burden on the computing resources of the device.In addition, the technology described herein can be applied to any video codec (for example, high efficiency video coding (HEVC), advanced video coding (AVC) or other suitable existing video codecs), and / or can be used as an effective coding tool for any video coding standard.Video coding standards include current video coding standards, video standards being developed and / or future video coding standards, such as, universal video coding (VVC), joint exploration model (JEM) and / or other video coding standards under development or to be developed.

[0049] Figure 11 is a block diagram showing an example system 100 including an encoding device 104 and a decoding device 112. The encoding device 104 may be part of a source device, and the decoding device 112 may 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 telephone 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, a head-mounted display (HMD), and / 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 coding and decoding techniques described herein may be applied to video coding and decoding in various multimedia applications. Multimedia applications include, for example, streaming video transmission (e.g., via the Internet), television broadcasting or transmission, encoding digital video to be stored on a data storage medium, decoding of digital video stored on a data storage medium, and / or other applications. 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, video telephony, and the like.

[0050] The encoding device 104 (or encoder) can be used to encode video data using a video codec standard or protocol to generate an encoded video bitstream. Examples of video codec standards include ITU-T H.261, ISO / IEC MPEG-1 Vision, ITU-T H.262 or ISO / IEC MPEG-2 Vision, ITU-T H.263, ISO / IEC MPEG-4 Vision, ITU-TH.264 (also known as ISO / IEC MPEG-4 AVC), including its scalable video codec (SVC) and multi-view video codec (MVC) extensions, and high-efficiency video codec (HEVC) or ITU-T H.265. There are various extensions of HEVC to handle multi-layer video codecs, including range and screen content codec extensions, 3D video codec (3D-HEVC) and multi-view extensions (MV-HEVC) and scalable extensions (SHVC). HEVC and its extensions are developed by the Joint Collaboration Team on Video Coding and Decoding (JCT-VC) and the Joint Collaboration Team on 3D Video Coding and Decoding Extensions (JCT-3V) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG).

[0051] MPEG and ITU-T VCEG also formed the Joint Exploration Video Team (JVET) to explore and develop new video codec tools for the next generation video codec standard, called Versatile Video Codec (VVC). The reference software is called the VVC Test Model (VTM). The goal of VVC is to provide significant improvements in the compression performance of the existing HEVC standard, helping to deploy high-quality video services and emerging applications (e.g., 360° immersive multimedia, high dynamic range (HDR) video, etc.).

[0052] The various aspects described herein provide examples of using VTM, VVC, HEVC and / or their extensions. However, the techniques and systems described herein may also be applicable to other codec standards, such as AVC, MPEG, JPEG (or other codec standards for still images), their extensions, or other suitable codec standards that are already available or not yet available or developed. Therefore, although the techniques and systems described herein may be described with reference to a specific video codec standard, it will be understood by those of ordinary skill in the art that the description should not be interpreted as being applicable only to that specific standard.

[0053] 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 containing 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 these sources, or any other suitable video source.

[0054] The video data from the video source 102 may include one or more input pictures. A picture may also be referred to as a "frame". A picture or frame is a still image that is part of a video in some cases. In some examples, the data from the video source 102 may be a still image that is not part of a video. In HEVC, VVC and other video codec specifications, a video sequence may include a series of pictures. A picture may include three sample arrays, denoted 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. In other instances, a picture may be monochrome and may include only an array of luma samples.

[0055] The encoder engine 106 (or encoder) of the encoding device 104 encodes the video data to generate an encoded video bitstream. In some examples, the encoded video bitstream (or "video bitstream" or "bitstream") is a series of one or more encoded video sequences. A coded video sequence (CVS) includes a series of access units (AUs) starting with an AU in a base layer having a random access point picture and having certain attributes, until but not including the next AU in the base layer having a random access point picture and having certain attributes. For example, certain attributes of the random access point picture that starts the CVS may include a RASL flag equal to 1 (e.g., NoRaslOutputFlag). Otherwise, the random access point picture (having a RASL flag equal to 0) does not start the CVS.

[0056] An access unit (AU) includes one or more coded pictures and control information corresponding to the coded pictures sharing the same output time. The coded slices of the picture are encapsulated into a data unit called a network abstraction layer (NAL) unit at the bitstream level. For example, an HEVC video bitstream may include one or more CVSs including NAL units. Each of the NAL units has a NAL unit header. In one example, the header of H.264 / AVC (except for multi-layer extensions) is one byte and the header of HEVC is two bytes. The syntax elements in the NAL unit header use specified bits and are therefore visible to various systems and transport layers, such as transport streams, real-time transport (RTP) protocols, file formats, etc.

[0057] 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 a slice or slice segment of coded picture data (described below), while the non-VCL NAL unit includes control information related to one or more coded pictures. In some cases, the NAL unit can be called a packet. HEVCAU includes VCL NAL units containing coded picture data and non-VCL NAL units corresponding to the coded picture data (if any).

[0058] The NAL unit may contain a sequence of bits that form an encoded representation of video data (e.g., an encoded video bitstream, a CVS of a bitstream, etc.), such as an encoded representation of a picture in a video. The encoder engine 106 may generate an encoded representation of a picture by dividing each picture into a plurality of slices. A slice may be independent of other slices so that information in the slice is encoded without relying on data from other slices in the same picture. A slice includes one or more slice segments, including an independent slice segment, and one or more dependent slice segments (if any) that rely on previous slice segments.

[0059] In HEVC, slices are divided into coding tree blocks (CTBs) of luma samples and chroma samples. The CTB of luma samples and one or more CTBs of chroma samples, together with the syntax of the samples, are called coding tree units (CTUs). CTUs can also be called "tree blocks" or "largest coding units" (LCUs). CTUs are the basic processing units for HEVC encoding. CTUs can be split into multiple coding units (CUs) of different sizes. A CU contains arrays of luma and chroma samples called coding blocks (CBs).

[0060] Luma and chroma CBs can be further split into prediction blocks (PBs). A PB is a block of samples of a luminance component or a chroma component that uses the same motion parameters for inter-frame prediction or intra-block copy prediction (when available or enabled). A luminance PB and one or more chroma PBs, together with associated syntax, form a prediction unit (PU). For inter-frame prediction, a set of motion parameters (e.g., one or more motion vectors, reference indices, etc.) are signaled in the bitstream of each PU, and the set of motion parameters are used for inter-frame prediction of the luminance 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 (TBs). A TB represents a square block of samples of a color component, based on which the same two-dimensional transform is applied to encode the prediction residual signal. A transform unit (TU) represents a TB of luminance and chroma samples, and corresponding syntax elements.

[0061] The size of the CU corresponds to the size of the coding mode, and in some cases, may be a square shape. For example, the size of the CU may include 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. In this article, the phrase "N×N" is used to represent 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 number of pixels in the horizontal direction of the block may be different from the number of pixels 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. Depending on whether the CU is encoded in intra-prediction mode or in inter-prediction mode, the partitioning mode may be different. The PU may be partitioned into a non-square shape. The syntax data associated with the CU may also describe, for example, the partitioning of the CU into one or more TUs according to the CTU. The shape of the TU may be square or non-square.

[0062] According to the HEVC standard, a transform unit (TU) may be used for transformation. A TU may vary with different CUs. The size of a TU may be determined based on the size of a PU within a given CU. The size of a TU may be the same as or smaller than the size of a PU. In some examples, a quadtree structure called a residual quadtree (RQT) may be used to subdivide the residual samples corresponding to a CU into smaller units. The leaf nodes of the RQT may correspond to TUs. The pixel difference values ​​associated with the TU may be transformed to generate transform coefficients. The transform coefficients may then be quantized by the encoder engine 106.

[0063] Once the picture of the video data is partitioned into CUs, the encoder engine 106 predicts each PU using a prediction mode. Afterwards, the prediction unit or prediction block is subtracted from the original video data to obtain a residual (as 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 the picture. For example, in the case of intra-frame prediction, each PU is predicted based on adjacent image data in the same picture using DC prediction that averages the PU, plane prediction that fits a plane surface to the PU, directional prediction that is inferred from adjacent data, or any other suitable type of prediction. Inter-frame prediction uses temporal correlation between pictures to derive motion compensated predictions of blocks of image samples. For example, in the case of inter-frame prediction, each PU is predicted using motion compensated predictions based on image data in one or more reference pictures (before or after the current picture in output order). A decision on whether to encode or decode a picture area using inter-picture prediction or intra-picture prediction can be made at, for example, the CU level.

[0064] The encoder engine 106 and the decoder engine 116 (described in more detail below) can be configured to operate according to VVC. In VVC, a video codec (e.g., the encoder engine 106 and / or the decoder engine 116) can partition a picture into multiple coding tree units (CTUs). The video codec can 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 that is partitioned according to quadtree partitioning, and a second level that is 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 codec units (CUs).

[0065] In the MTT partitioning structure, blocks can be partitioned using quadtree partitioning, binary tree partitioning, and one or more types of ternary tree partitioning. A ternary tree partitioning is a partitioning in which a block is split into three sub-blocks. In some examples, a ternary tree partitioning divides a block into three sub-blocks without dividing the original block through the center. The partitioning types in MTT (e.g., quadtree, binary tree, and ternary tree) can be symmetric or asymmetric.

[0066] In some examples, the video codec may use a single QTBT or MTT structure to represent each of the luma and chroma components, while in other examples, the video codec may use two or more QTBT or MTT structures, e.g., one QTBT or MTT structure for the luma component and another QTBT or MTT structure for two chroma components (or two QTBT and / or MTT structures for corresponding chroma components).

[0067] The video codec may be configured to use quadtree segmentation, QTBT segmentation, MTT segmentation, or other segmentation structures per HEVC. For purposes of illustration, the description herein may refer to QTBT segmentation. However, it should be understood that the techniques of the present disclosure may also be applied to video codecs configured to use quadtree segmentation or other types of segmentation.

[0068] In some examples, one or more slices of a picture are assigned a slice type. Slice types include I slices, P slices, and B slices. An I slice (intra-frame, independently decodable) is a slice of a picture that is encoded and decoded only by intra-frame 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 (unidirectional predicted frame) is a slice of a picture that can be encoded and decoded using intra-frame prediction and unidirectional inter-frame prediction. Each prediction unit or prediction block within a P slice is encoded and decoded by intra-frame prediction or inter-frame prediction. When inter-frame prediction is applied, the prediction unit or prediction block is predicted only by one reference picture, so the reference sample comes from only one reference area of ​​a frame. A B slice (bidirectional predicted frame) is a slice of a picture that can be encoded and decoded using intra-frame prediction as well as using inter-frame prediction (e.g., bidirectional prediction or unidirectional prediction). A prediction unit or prediction block of a B slice may be bidirectionally predicted from two reference pictures, where each picture provides a 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, the slices of a picture are independently coded. In some cases, a picture may be coded as exactly one slice.

[0069] As described above, intra-picture prediction exploits the correlation between spatially adjacent samples within a picture. Inter-picture prediction uses the temporal correlation between pictures in order to derive motion compensated predictions of blocks of image samples. Using a translational motion model, the block position 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 be integer sample precision (also known as integer precision), 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 sample precision (also known as fractional pixel precision or non-integer precision) to more accurately capture the motion of potential objects without being limited to the integer pixel grid of a reference frame.

[0070] The precision of the motion vector can be represented by the quantization level of the motion vector. For example, the quantization level can be integer precision (e.g., 1-pixel) or fractional pixel precision (e.g., 1 / 4-pixel, 1 / 2-pixel, or other sub-pixel values). When the corresponding motion vector has fractional sample precision, the reference picture is interpolated to derive a prediction signal. For example, the samples available at the integer position can be filtered (e.g., using one or more interpolation filters) to estimate the value at the fractional position. The previously decoded reference picture is indicated by the reference index (refIdx) of the reference picture list. The motion vector and the reference index can be referred to as motion parameters. Two types of inter-picture prediction can be performed, including unidirectional prediction and bidirectional prediction.

[0071] In the case of inter-frame prediction using bi-prediction, two sets of motion parameters (Δx0, y0, refIdx0 and Δx1, y1, refIdx1) are used to generate two motion compensated predictions (based on the same reference picture or possibly on different reference pictures). For example, for bi-prediction, each prediction block uses two motion compensated prediction signals and generates a B prediction unit. The two motion compensated predictions are then 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 this case, different weights can be applied to each motion compensated prediction. The reference pictures that can be used for bi-prediction are stored in two different lists, represented as List 0 and List 1, respectively. The motion parameters can be derived using a motion estimation process at the encoder.

[0072] In the case of inter prediction using uni-prediction, a set of motion parameters (Δx0, y0, refIdx0) is used to generate motion compensated predictions from reference pictures. For example, for uni-prediction, each prediction block uses at most one motion compensated prediction signal and generates a P prediction unit.

[0073] 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 of the PU. As another example, when the PU is encoded using inter prediction, the PU may include data defining the motion vector of the PU. The data defining the motion vector of the PU may describe, for example, the horizontal component of the motion vector (Δx), the vertical component of the motion vector (Δy), the resolution of the motion vector (e.g., integer precision, quarter-pixel precision, or eighth-pixel precision), the reference picture to which the motion vector points, the reference index, the reference picture list of the motion vector (e.g., list 0, list 1, or list C), or any combination of the above.

[0074] The encoding device 104 may then 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 encoded 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-frame prediction or intra-frame 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 quantize 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 in a two-dimensional block format (e.g., a two-dimensional matrix or a pixel value array). In this example, the residual block is a two-dimensional representation of a pixel value.

[0075] Any residual data remaining after performing the prediction is transformed using a block transform, which can 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., sizes 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, a TU may be used for a 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, a block transform may be used to transform the residual values ​​into transform coefficients, and the TUs may be quantized and scanned to produce serialized transform coefficients for entropy coding and decoding.

[0076] In some examples after encoding intra-frame prediction or inter-frame prediction using the PU of the CU, the encoder engine 106 can calculate the residual data of the TU of the CU. The PU may include pixel data in the spatial domain (or pixel domain). After applying the block transform, the TU may include coefficients in the transform domain. As described above, the residual data may correspond to the pixel difference between the pixel of the uncoded picture and the predicted value corresponding to the PU. The encoder engine 106 may form a TU including the residual data of the CU, and then the TU may be transformed to generate transform coefficients for the CU.

[0077] The encoder engine 106 may quantize 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 encoded video bitstream includes 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. Afterwards, the different elements of the encoded 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 scan 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, grammar-based context-adaptive binary arithmetic coding, probability interval segmentation entropy coding, or other suitable entropy coding techniques.

[0079] The output 110 of the encoding device 104 may send the NAL units that make up the encoded video bitstream data to the decoding device 112 of the receiving device via 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 wired and wireless networks. 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 , RF, UWB, WiFi-Direct, Cellular, LTE, WiMax TMThe 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.). Various equipment and / or components may be used to implement wired and / or wireless networks, such as base stations, routers, access points, bridges, gateways, switches, servers, software containers, virtual machines, 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, encoding device 104 can store the encoded video bitstream data in storage 108. Output 110 can retrieve the encoded video bitstream data from encoder engine 106 or from storage 108. Storage 108 can include various distributed or locally accessed data storage media. For example, storage 108 can include a hard drive, a storage disk, flash memory, volatile or non-volatile memory, one or more nodes in a distributed storage system, or any other suitable digital storage medium for storing encoded video data.

[0081] The input 114 of the decoding device 112 receives the encoded video bitstream data and can provide the video bitstream data to the decoder engine 116, or to the storage 118 for later use by the decoder engine 116. The decoder engine 116 can decode the encoded video bitstream data by entropy decoding (e.g., using an entropy decoder) and extracting elements of one or more encoded video sequences that make up the encoded video data. The decoder engine 116 can rescale the encoded video bitstream data and perform an inverse transform. The residual data is passed to the prediction stage of the decoder engine 116. Subsequently, the decoder engine 116 predicts the pixel block (e.g., PU). In some examples, the prediction is added to the output (residual data) of the inverse transform.

[0082] 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. 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 other than the receiving device.

[0083] In some examples, the video encoding device 104 and / or the video decoding device 112 can 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 for implementing the coding and decoding techniques described herein, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), central processing units (CPUs), discrete logic, software, hardware, firmware, or any combination of the above. In some cases, the video encoding device 104 and the video decoding device 112 can be integrated as part of a combined encoder / decoder (codec) in the corresponding device. The following reference Figure 7 An example of specific details of the encoding device 104 is described below. Figure 8 An example of specific details of the decoding device 112 is described.

[0084] Extensions to the HEVC standard include a multi-view video codec extension called MV-HEVC and a scalable video codec extension called SHVC. The MV-HEVC and SHVC extensions share the concept of layered coding, with different layers 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 to represent the video bitstream at different spatial resolutions (or picture resolutions) or different reconstruction fidelity. The scalable layer may include a base layer (layer ID = 0) and one or more enhancement layers (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 enhanced spatial resolution, temporal resolution or frame rate and / or reconstruction fidelity (or quality). The enhancement layer is a layered structure that may (or may not) depend on the lower layer. In some examples, different layers may be encoded and decoded using a single standard codec (e.g., all layers may be encoded and decoded using HEVC, SHVC, or other codec standards). In some examples, different layers may be encoded and decoded using multiple standard codecs. For example, the base layer may be encoded and decoded using AVC, while one or more enhancement layers may be encoded and decoded using SHVC and / or MV-HEVC extensions of the HEVC standard.

[0085] Typically, a layer consists of a set of VCL NAL units and a set of corresponding non-VCL NAL units. NAL units are assigned specific layer ID values. Layers can be hierarchical, which means 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 within a layer set can depend on other layers in the layer set during decoding, but do not depend on any other layers for decoding. Therefore, the layers in a layer set can form an independent bitstream that can represent video content. A set of layers in a layer set can be obtained from another bitstream by running a sub-bitstream extraction process. A layer set can correspond to a set of layers to be decoded when the decoder wants to operate according to certain parameters.

[0086] As previously described, the HEVC bitstream includes a set of NAL units, including VCL NAL units and non-VCL NAL units. The VCL NAL unit includes coded picture data that forms a coded video bitstream. For example, a sequence of bits that form a coded video bitstream is present in a VCL NAL unit. In addition to other information, a non-VCL NAL unit may also contain a parameter set with advanced information related to the coded video bitstream. For example, a parameter set may include a video parameter set (VPS), a sequence parameter set (SPS), and a picture parameter set (PPS). Examples of the goals of a parameter set include bit rate efficiency, error resilience, and providing a system layer interface. Each slice references a single active PPS, SPS, and VPS to access information that the decoding device 112 will use to decode the slice. An identifier (ID) may be encoded and decoded for each parameter set, including a VPS ID, an SPS ID, and a PPS ID. The SPS includes an SPS ID and a VPS ID. The PPS includes a PPS ID and an SPS ID. Each slice header includes a PPS ID. By using the ID, the activation parameter set for a given slice may be identified.

[0087] The PPS includes information applicable to all slices in a given picture. Therefore, all slices in a picture refer to the same PPS. Slices in different pictures can also refer to the same PPS. The SPS includes information applicable to all pictures in the same coded video sequence (CVS) or bitstream. As mentioned above, a coded video sequence is a series of access units (AUs) that start with a random access point picture in the base layer (e.g., an instantaneous decoding reference (IDR) picture or a broken link access (BLA) picture, or other appropriate random access point picture) and have certain properties (as described above) until but not including the next AU in the base layer with a random access point picture and certain properties (or at the end of the bitstream). The information in the SPS may not change with the pictures in the coded video sequence. The pictures in the coded video sequence can use the same SPS. The VPS includes information applicable to all layers in the coded video sequence or bitstream. The VPS includes a syntax structure with syntax elements applicable to the entire coded video sequence. In some examples, the VPS, SPS or PPS can be transmitted in-band with the coded bitstream. In some examples, the VPS, SPS, or PPS may be transmitted out-of-band in a transmission separate from the NAL units containing the encoded video data.

[0088] 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 instances, 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 this 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 cases, certain application standards may require the presence of such SEI messages in the bitstream so that all devices that comply with the application standard can be improved in quality (e.g., the carrying of frame encapsulation SEI messages for frame-compatible planar stereoscopic 3DTV video formats, where SEI messages are carried for each frame of the video, processing recovery point SEI messages, using panoramic scanning in DVB to scan rectangular SEI messages, among many other examples).

[0089] In the field of video coding and decoding, filtering can be applied to improve the quality of the decoded video signal. The filter can be used as a post filter, where the filtered frame is not used to predict future frames. Or the filter can be used as a loop filter, where the filtered frame is used to predict future frames. For example, the filter can be designed by minimizing the error between the original signal and the decoded filtered signal. In some examples, as further described below, an adaptive loop filter (ALF) with clipping can be applied to improve the quality of the decoded video signal. Clipping is an image processing technique that can be used to process an image and / or improve the quality of an image or frame when the intensity or brightness of one or more regions of the image or frame falls outside the minimum or maximum intensity or brightness that can be represented.

[0090] In some examples, clipping can adjust the intensity or brightness values ​​of these areas of the image to a minimum value or a maximum value that can be represented (or within a range of minimum and maximum values). For example, if the intensity value of a region of the image is below the minimum intensity that can be represented, the image can be clipped to increase the intensity value of the region of the image to the minimum intensity value (or not below the minimum intensity value). And if the intensity value of a region of the image exceeds the maximum intensity that can be represented, the image can be clipped to reduce the intensity value of the region of the image to the maximum intensity value (or below the maximum intensity value). Example techniques for calculating clipping values ​​for an image are further described below.

[0091] Figure 2A 2 is a simplified diagram illustrating an example system 200 for applying an ALF 206 with clipping to an input block 202 in a frame. The block 202 may include color components 204 representing image pixels of the block 202. In this example, the color components 204 are in a YCbCr color space and may include luma Y, chroma Cb, and chroma Cr components. The chroma Cb and chroma Cr components in the YCbCr color space may represent a blue difference chroma signal and a red difference chroma signal, respectively, associated with the block 202.

[0092] The ALF 206 having ALF filter coefficient values ​​and clipping values ​​may be applied to luma (Y) component samples 204A, chroma (Cb) component samples 204B, and chroma (Cr) component samples 204C in block 202. In some examples, the ALF 206 having ALF filter coefficient values ​​and clipping values ​​may be applied to samples (e.g., 204A, 204B, 204C) on a block-by-block basis (e.g., to a particular video block). For example, a video encoder or decoder may process blocks in a frame independently, and when processing a block in a frame (e.g., 202), the video encoder or decoder may apply the ALF filter coefficients and clipping values ​​of the ALF 206 to the block. Similarly, the video encoder or decoder may apply the ALF filter coefficients and clipping values ​​to these blocks when processing other blocks. In some examples, ALF 206 with clipping may be applied to luma (Y) component samples 204A, chroma (Cb) component samples 204B, and chroma (Cr) component samples 204C to correct artifacts in block 202, reduce errors between original frames and reconstructed frames, and / or improve the quality of a decoded video signal.

[0093] In addition, the ALF 206 may include one or more filters, and each filter may have a specific filter size and shape, as described below with reference to Figure 3A and 3B As further described. For example, ALF 206 may include filters of a specific size and shape for luma (Y) filtering and filters of a specific size and shape for chroma filtering. As explained above, in some examples, ALF 206 may be applied at the block level. For example, in some cases, ALF 206 may be applied at the CTU or CU level. In other examples, ALF 206 may be applied at the frame level and / or other parts of the frame.

[0094] A luma filter result 208 may be obtained from the ALF 206 applied to the luma (Y) component sample 204A. Similarly, a chroma filter result 210 may be obtained from the ALF 206 applied to the chroma (Cb) component sample 204B and the chroma (Cr) component sample 204C. The luma filter result 208 may include filtered (e.g., modified and / or clipped) luma values ​​for an output block 212, while the chroma filter result 210 may include filtered chroma Cb and chroma Cr values ​​for the output block 212. The output block 212 may include a reconstructed block and / or include luma, chroma Cb, and chroma Cr values ​​from the luma filter result 208 and the chroma filter result 210. In some cases, the output block 212, along with other similarly processed output blocks, may be used to generate a reconstructed frame through ALF filtering and clipping.

[0095] In some examples, on the encoder side, the luminance filtering result 208 and the chrominance filtering result 210 can be used to determine whether luminance and chrominance ALF filtering should be enabled. For example, the quality of the reconstructed block and / or frame after ALF filtering can be compared with the quality of the reconstructed block and / or frame before ALF filtering. Then, ALF filtering can be enabled or disabled based on the quality of the reconstructed block and / or frame after ALF filtering relative to the quality of the reconstructed block and / or frame before ALF filtering. Afterwards, the ALF flag can be signaled together with the encoded bit stream to indicate whether ALF filtering is enabled or disabled for the block. In some cases, the ALF flag can specify whether to enable or disable luminance ALF filtering, whether to enable or disable luminance and chrominance ALF filtering, or whether to completely disable ALF filtering. On the decoder side, the decoder can use the ALF flag to determine whether to perform ALF filtering on the block and / or reconstructed image in the reconstructed image.

[0096] Figure 2B 2 is a flow chart of an example method 220 of ALF filtering with clipping implemented by the encoding device 104. In this example, at block 222, the encoding device 104 may receive an input frame. As previously described, the input frame may include color components, such as luma and chroma components. In some examples, the input frame may include blocks in a frame that was encoded by the encoding device 104 prior to ALF filtering. In some examples, the input frame may be a frame associated with an image and / or video sequence.

[0097] At box 224, the encoding device 104 can classify the luma components in the frame. In some examples, the encoding device 104 can also classify the chroma components in the frame. The classification can be applied to the luma components at the block level (e.g., 4×4 block level) or the sample level (for each sample of the frame). In some cases, the classification can include classifying the direction and activity of each block or sample associated with each luma component in the frame. In some examples, for the luma component, the 4×4 blocks in the entire frame, where N represents a number greater than 0, can be classified based on 1D Laplacian direction (e.g., up to 5 directions) and 2D Laplacian activity (e.g., up to 5 activity values). In some cases, the encoding device 104 can calculate the direction Dir b and unquantified activity Act b In some cases, Act b Can be further quantized to a range of 0 to 4, inclusive.

[0098] In some cases, in addition to the horizontal and vertical gradients used in the existing ALF, the 1D Laplacian can also be used to calculate the values ​​of the two diagonal gradients. As can be seen from the following equations (1) to (4), the sum of the gradients of all pixels within the 8×8 window covering the target pixel can be used as the representative gradient of the target pixel, where R(k,l) is the reconstructed pixel at position (k,l), and the indices i and j refer to the coordinates of the top left pixel in the 4×4 block (e.g., a 4×4 block from a frame). Each pixel is associated with four gradient values, where the vertical gradient is represented by gv and the horizontal gradient is represented by g h Indicates that the 45-degree diagonal gradient is represented by g d2 express.

[0099]

[0100] In order to assign directional Dir b , will be used in the following equation (5) h,v The ratio of the maximum and minimum values ​​of the horizontal and vertical gradients represented by R in equation (6) d0,d1 In some cases, it can also be expressed as R d1,d2 ) are compared with each other through two thresholds t1 and t2.

[0101] in,

[0102] in,

[0103] By comparing the ratio of the detected horizontal and vertical gradients and the diagonal gradient, five directional modes (e.g., Dir in the range [0,4]) are defined in the following equation (7). b , including 0 and 4). Dir b The values ​​and their physical meanings are described in Table 1 below.

[0104]

[0105] Direction value Physical meaning 0 Texture 1 Strong horizontal / vertical 2 Horizontal / Vertical 3 Strong diagonal 4 Diagonal

[0106] Table 1. Direction values ​​and their physical meanings The activity value Act can be calculated as:

[0107]

[0108] In some cases, Act values ​​can be further quantized to a range of 0 to 4, inclusive, and the quantized values ​​are represented as The following describes the process from the activity value Act to the activity index quantification process.

[0109] The quantization process can be defined as follows:

[0110] avg_var=Clip_post(NUM_ENTRY-1,(Act*ScaleFactor)>>shift);

[0111]

[0112] Where NUM_ENTRY is set to 16 (or other suitable value), ScaleFactor is set to 64 (or other suitable value), the shift is (4 + internal codec bit depth) or other suitable value, ActivityToIndex[NUM_ENTRY] = {0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4} or other suitable set of values, and function Clip_post(a,b) returns the smaller value between a and b.

[0113] In general, each 4×4 luminance block can be classified into one of 25 (5×5) categories and sorted according to the Dir b and Act b The value of assigns an index to each 4×4 block. The group index can be denoted as C and can be set equal to in Act b quantized value of .

[0114] At block 226, the encoding device 104 may determine the ALF coefficients and clipping values ​​for the ALF, and at block 228, the encoding device 104 may apply the ALF filter to the frame. In some examples, the ALF filter shape may determine the number of coefficients that will affect the filtering process. Non-limiting example filter shapes may include 5×5, 7×7, and 9×9 diamond shapes. Figure 3A and 3B Example ALF filters are shown that may be applied for chroma and luma filtering.

[0115] refer to Figure 3A , an example filter 300 for chroma filtering is shown. The filter 300 in this example is a 5×5 filter and has a diamond shape. The filter 300 includes cells 302 to 326 for 13 input chroma samples. The cells 302 to 326 include coefficients and clipping values ​​(e.g., C0 to C6) to be applied to the corresponding chroma samples. Each cell (302 to 326) may include filter coefficient values ​​and clipping values ​​applied to the chroma samples associated with the cell.

[0116] refer to Figure 3B, an example filter 330 for luma filtering is shown. The filter 330 in this example is a 7×7 filter and has a diamond shape. The filter 330 includes cells 332 to 380 for 25 input luma samples. The cells 332 to 380 include coefficients and clipping values ​​(C0 to C12) to be applied to the corresponding luma samples. Each cell (332 to 380) may include filter coefficient values ​​and clipping values ​​applied to the luma samples associated with the cell.

[0117] return Figure 2A , in some examples, the decoded filter coefficients f(k,l) corresponding to the coefficients at positions k and l and the clipping values ​​c(k,l) corresponding to the clipping values ​​at positions k and l may be applied to the reconstructed image R(i,j) as follows:

[0118]

[0119] In some examples, a 5×5 filter, such as Figure 3A The filter 300 shown in FIG. 3 can be applied to the chrominance components. While a 7×7 filter, for example Figure 3B The filter 330 shown in can be applied to the luma component. The output value of equation (10) can define the value applied to the center of the filter.

[0120] For example, refer to Figure 3A , each cell (302 to 306) in filter 300 may have a filter coefficient f(k, l) and a clipping value c(k, l), and each of these values ​​in the cell may be applied to a corresponding pixel. In some cases, the value of The center of filter 300 (eg, cell 314 ) shown may be placed or applied to a pixel, while the remaining cells of filter 300 (eg, cells 302 - 312 and 316 - 326 ) may be placed or applied to surrounding or adjacent pixels.

[0121] In addition, refer to Figure 3B , each cell (332 to 380) in filter 330 may have a filter coefficient f(k, l) and a clipping value c(k, l), and each of these values ​​in the cell may be applied to a corresponding pixel. In some cases, the value of The center of filter 330 (eg, cell 356 ) shown may be placed or applied to a pixel, while the remaining cells of filter 330 (eg, cells 332 - 354 and 358 - 380 ) may be placed or applied to surrounding or adjacent pixels.

[0122] Back to Figure 2A, in equation (10), can be calculated by the following operation The operation is: multiplying the current sample R(i,j) of the frame (e.g., luma sample, chroma sample) by the filter coefficient and the clipped difference (e.g., sum (filter coefficient * clipped difference)) or

[0123] The clipped difference may be the difference between the adjacent sample R(i+k,j+l) and the current sample R(i,j). The output of equation (10) may define a value range for clipping. In some cases, a value may be selected from the value range. In some examples, the selected value may be a maximum value in the value range and within a minimum and maximum value that may be represented in the frame. In addition, the selected value may provide a pixel value for the sample.

[0124] In some cases, the clipping value c(k, l) can be calculated as follows. For the luma component, the clipping value c(k, l) can be calculated as follows:

[0125] c(k,l)=Round(2 (BitDepthY*(4–clipIdx(k,l)) / 4) ), Equation (11)

[0126] Where BitDepthY is the bit depth (e.g., color depth) of the luma component, and clipIdx(k,l) is one or more clipping values ​​at position (k,l). In some cases, clipIdx(k,l) can be 0, 1, 2, or 3.

[0127] For the chroma component, the clipping value c(k,l) can be calculated as follows:

[0128] c(k,l)=Round(2 (BitDepthC-8) *2 (8*(3-clipIdx[k,l]) / 3) ), Equation (12)

[0129] Where BitDepthC is the bit depth of the chroma component, and clipIdx(k,l) is the clipping value at position (k,l). In some cases, clipIdx(k,l) can be 0, 1, 2, or 3.

[0130] At block 230, the encoding device 104 may generate an output frame. The output frame may include a reconstructed image after ALF filtering. As previously described, the output frame may include pixel values ​​of luma and chroma components calculated based on filter coefficients and clipping values.

[0131] In some examples, the pixel values ​​generated for the sample by the ALF filtering method 220 may be compared to the pixel values ​​of the original sample to determine whether luma and chroma filtering should be enabled. For example, if the luma filtering result provides better image quality than the original luma sample, the encoding device 104 may enable luma filtering for the frame. If the chroma filtering result provides better image quality than the original chroma sample, the encoding device 104 may enable chroma filtering for the frame.

[0132] In some cases, the encoding device 104 may signal the ALF flag through the encoded bitstream. The signaled ALF flag may indicate to the decoding device (eg, 112) whether ALF filtering is enabled or disabled for a particular frame.

[0133] In some cases, method 220 may include performing geometric transformations. In some examples, a set of filter coefficients and clipping values ​​may be signaled for each class from the pixel classification described at block 224. In some cases, to better distinguish different orientations of blocks labeled with the same class index, four geometric transformations may be performed, including no transformation, diagonal, vertical flip, and rotation.

[0134] An example 5×5 filter 400 is shown in FIG. 4 where no transformation is performed on cells 402-426. Figure 4B -D shows an example 5×5 filter that performs a diagonal transformation 430 on cells 402-426, a vertical flip transformation 440 on cells 402-426, and a rotation transformation 450 on cells 402-426. Specifically, Figure 4B An example of a diagonal geometric transformation 430 is shown, Figure 4C An example of a vertical flip geometric transformation 440 is shown, while Figure 4D An example of a rotational geometric transformation 450 is shown.

[0135] If Figure 4A The example 5×5 filter 400 without transformation shown in FIG. Figure 4B Diagonal geometric transformations in 430, Figure 4C The vertical flip geometric transformation 440 and Figure 4D By comparing the rotational geometric transformation 450 in FIG. 4 , the following formula forms of three additional geometric transformations (eg, diagonal geometric transformation 430, vertical flip geometric transformation 440, and rotational geometric transformation 450) can be obtained:

[0136] Diagonal: f D (k,l)=f(l,k),c D (k,l)=c(l,k),

[0137] Flip vertically: f V(k,l)=f(k,Kl-1),c V (k,l)=c(k,Kl-1)

[0138] Rotation: f R (k,l)=f(Kl-1,k),c R (k,l)=c(Kl-1,k),

[0139] Equation (13)

[0140] Where K is the size of the filter and 0≤k,l≤K-1 are the coefficient coordinates, so the position (0,0) is at the upper left corner and the position (K-1,K-1) is at the lower right corner. It should be noted that when diamond filter support is used, coefficients with coordinates outside the filter support can be set to 0. One way to indicate the geometric transform index is to derive it implicitly to avoid additional overhead. In ALF based on geometric transform (GALF), the transform can be applied to the filter coefficients f(k,l) depending on the gradient value calculated for the block. The relationship between the transform and the four gradients calculated using equations (3)-(7) is described in Table 2 below.

[0141] Gradient Value Transform <![CDATA[g d2 <g d1 And g h <g v ]]> No transformation <![CDATA[g d2 <g d1 And g v <g h ]]> Diagonal <![CDATA[g d1 <g d2 And g h <g v ]]> Flip Vertically <![CDATA[g d1 <g d2 And g v <g h ]]> Rotation

[0142] Table 2 Mapping of gradients and transformations

[0143] One or more transformations can be based on which of the two gradients (horizontal and vertical, or 45 and 135 degree gradients) is larger. Based on the comparison, more precise directional information can be extracted. Therefore, the transformation can obtain different filtering results without increasing the filter coefficient overhead.

[0144] In some examples, filter information signaling can be provided by coded bit stream. For example, a luminance filter group can contain all types of filter information (e.g., including filter coefficients, clipping values, offset values, etc.). Fixed filters can be used to predict filters of each type. A signaling flag can be used for each type to indicate whether the type uses a fixed filter as its filter predictor. If so, fixed filter information can be signaled. In some examples, the filter signaled can be predicted based on the filter previously signaled.

[0145] In order to reduce the number of bits used to represent the filter coefficients, different types can be combined. C to provide information about which classes are merged. CThe types can share the same codec filter coefficients. The mapping between type and filter can be signaled for each luminance filter group. The index i can be truncated using a binary binarization method. C Perform encoding and decoding.

[0146] In VTM-5.0, Adaptive Parameter Set (APS) can be used to carry ALF filter coefficients in the bitstream. APS can contain a set of luminance filters or chrominance filters or both. A tile group only signals the index of the APS for the current tile group in its tile group header.

[0147] In some cases, filter bank switching based on codec tree blocks (CTBs) can be implemented. In VTM-5.0, filters generated based on previously coded slice groups can be used for the current slice group to save filter signaling overhead. The luma CTB can select a filter bank from a fixed filter bank and a filter bank in the APS. The filter bank index can be signaled in the bitstream or with the bitstream. In some cases, some or all chroma CTBs use filters in the same APS. In the slice group header, the APS for the luma and chroma CTBs of the current slice group is signaled.

[0148] return Figure 2B , the output frames generated by the encoding device 104 can be sent in an encoded bitstream to the decoding device 112. As previously described, the encoded bitstream can include signaling information. The decoding device 112 can receive the encoded bitstream, decode the bitstream, and apply ALF filtering and clipping to the frames in the bitstream using the signaling information when such filtering is enabled.

[0149] Figure 2C 2 is a flow chart illustrating an example method 240 for ALF filtering with clipping implemented by the decoding device 112. In this example, at block 242, the decoding device 112 may receive a frame in an encoded bitstream provided by the encoding device 104. In some cases, the frame may be a reconstructed frame or a decoded frame from the encoded bitstream. Furthermore, in some examples, as previously described, the frame may include luma and chroma components.

[0150] At block 224, the decoding device 112 may determine whether the ALF flag signaled with the frame is on or off. If the ALF flag is off, indicating that ALF filtering is disabled, the decoding device 112 may output the frame at block 252. On the other hand, if the ALF flag is on, indicating that ALF filtering is enabled, the decoding device 246 may classify the pixels in the frame at block 246. The decoding device 112 may classify the pixels in the frame as previously described with reference to FIG. Figure 2BThe pixels are classified as described in block 224 shown in FIG.

[0151] The ALF flag may indicate whether luma filtering is enabled (or disabled), or whether both luma filtering and chroma filtering are enabled (or disabled). If luma filtering is enabled, then the ALF filtering performed by the decoding device 112 as described herein may include luma filtering. If both luma and chroma filtering are enabled, then the ALF filtering performed by the decoding device 112 as described herein may include both luma and chroma filtering.

[0152] At block 248, the decoding device 112 may determine the ALF coefficients and the clipping values, and at block 250, the decoding device 112 may apply an ALF filter having the ALF coefficients and the clipping values ​​to the frame. The decoding device 112 may be as previously described with reference to Figure 2B The ALF coefficients and clipping values ​​are determined and applied as illustrated by blocks 226 and 228 shown in FIG.

[0153] At block 252, the decoding device 112 may generate an output frame. If the ALF flag is turned off at block 244, the output frame may include a reconstructed image without ALF filtering. If the ALF flag is turned on at block 244, the output frame may include a reconstructed image after ALF filtering. As previously described, the output frame may include pixel values ​​for luma and chroma components calculated based on the filter coefficients and the clipping values.

[0154] Various problems and deficiencies may occur when using floating point operations to calculate the clipping value c(k, l). For example, equations (11) and (12) described above for calculating the clipping value c(k, l) often require the use of floating point operations to perform such calculations. However, floating point operations may increase the complexity of the calculations (e.g., due to the implementation of decimal numbers), increase the computational burden on the hardware and computing resources of the device (e.g., due to the increased complexity), and increase decoding errors (e.g., due to different architectures calculating floating point numbers in different ways).

[0155] Therefore, in some examples, various methods can be implemented to simplify the calculation of the clipping value of the ALF and improve the efficiency of such calculation. The simplified and continuously efficient calculation of the ALF clipping value can reduce the complexity of the calculation, reduce the computational burden on the hardware of the device, and reduce decoding errors. As further described below, this method can be applied to any video codec (current and / or future), such as HEVC and / or AVC, and / or any video codec standard, such as VVC and / or any future video codec standard.

[0156] In some cases, the techniques described herein can simplify the calculation of clipping values ​​for a luma component, one or more chroma components, or both luma and chroma components. In some implementations, integer arithmetic can be used to calculate clipping values ​​for luma and / or chroma components and simplify such calculations.

[0157] Figure 5 An example table 500 of clipping values ​​based on a simplified clipping value calculation as described herein is shown. In this example, the clipping values ​​in table 500 are calculated using integer arithmetic. The integer arithmetic and techniques used herein to calculate the clipping values ​​in table 500 can reduce the complexity of such calculations, minimize the computational burden on hardware and computing resources, and reduce decoding errors.

[0158] Table 500 includes a bit depth column 502 and a clip index (clipIdx) column 522. The bit depth column 502 includes bit depth values ​​504-520, while the clip index column 522 includes clip index values ​​524-530. In this example, the bit depth values ​​504-520 range from 8 bits to 16 bits, while the clip index values ​​524-530 range from 0 to 3. The bit depth values ​​504-520 can identify the number of bits used for each color component of the pixel, and / or the color depth of the pixel (e.g., the number of bits used to indicate the color of the pixel). The clip index values ​​524-530 indicate the clip index of the clip value to be used for the sample or pixel. In this example, the clip index values ​​524-530 include clip indexes 0 (524), 1 (526), ​​2 (528), and 3 (530).

[0159] In some examples, a specific clipping index value used to calculate a clipping value for a particular bitstream or frame may be signaled along with the encoded bitstream or frame. Additionally, in some examples, the clipping index values ​​524-530 for the chroma components may be defined by alf_chroma_clip_idx[altIdx][j], which may specify a clipping index for the clipping value to be used before multiplying the jth coefficient of the alternative chroma filter with index altIdx. In some examples, for bitstream consistency, the value of alf_chroma_clip_idx[altIdx][j] may range from 0 to 3; where altIdx=0,.., alf_chroma_num_alt_filters_minus1; j=0,…,5; and alf_chroma_num_alt_filters_minus1 indicates the number of alternative chroma filters minus 1. In some examples, alf_chroma_num_alt_filters_minus1 can be in the range of 0 to 7.

[0160] In some examples, the clipping index values ​​524-530 for the luma component may be defined by alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j], which may specify the clipping index of the clipping value to be used before multiplying the j-th coefficient of the signaled luma specified by alf_luma_coeff_delta_idx[filtIdx], where j=0,...,11. In some examples, alf_luma_coeff_delta_idx[filtIdx] may specify the index of the signaled ALF luma coefficient delta for the filter type indicated by filtIdx, which may range from 0 to NumAlfFilters−1, where NumAlfFilters indicates the number of ALF filters. In some cases, when alf_luma_coeff_delta_idx[filtIdx] is not present, it may be inferred to be equal to 0. Also, in some cases, the length of alf_luma_coeff_delta_idx[filtIdx] may be Ceil(Log2(alf_luma_num_filters_signalled_minus1+1)) bits, and the value range of alf_luma_coeff_delta_idx[filtIdx] may be 0 to alf_luma_num_filters_signalled_minus1.

[0161] In some examples, for the luma component, the clipping value in table 500 may be calculated based on the following equation (14); and for the chroma component, the clipping value in table 500 may be calculated based on the following equation (15). For example, the clipping value c(k, l) may be calculated as follows:

[0162] c(k,l)=1<<(BitDepthY-offsetY[clipIdx(k,l)]) for luma; and c(k,l)=1<<(BitDepthC-offsetC[clipIdx(k,l)]) for chroma. Equation (14)

[0163] In equation (14), the term "<<" is a left shift arithmetic operator, and offsetY[i] and offsetC[i], where i = 0, 1, 2, or 3, are predefined or calculated based on the clipping index (clipIdx). In some examples, offsetY = {0, 3, 5, 7} and offsetC = {0, 3, 5, 7}. Here, 0, 3, 5, and 7 can be predetermined values ​​set for offsetY and offsetC. In some examples, the range of specific values ​​of offsetY and offsetC for luma can be determined to be 0-BitDepthY based on the clipping index (clipIdx) value, and the range of specific values ​​of offsetY and offsetC for chroma can be determined to be 0-BitDepthC. In some examples, the clipping index value ranges from 0 to 3, including the endpoints. For example, when the value of clipIdx is equal to 0, the values ​​of offsetY and offsetC can be 0; when the value of clipIdx is equal to 1, the values ​​of offsetY and offsetC can be 3; when the value of clipIdx is equal to 2, the values ​​of offsetY and offsetC can be 5; when the value of clipIdx is equal to 3, the values ​​of offsetY and offsetC can be 7.

[0164] Equation (14) can effectively calculate the clipping values ​​in Table 500 based on the corresponding bit depth values ​​504-520 and clipping index values ​​524-530, and can simplify such calculations based on integer operations. For example, using equation (14), given offset values ​​of 0, 3, 5, and 7 and a bit depth value of 8 (504), the clipping value of c(k,l) can be calculated as follows. If c(k,l)=1<<(BitDepth–offset[clipIdx(k,l)]), and BitDepth=8 and clipIdx=0, then offset[0]=0. Therefore, c(k,l) is equal to 1<<(8–0), which is equal to 1 shifted left by 8 bits. An arithmetic left shift of n bits is equivalent to multiplying by 2 n So, 1 shifted left by 8 bits equals 2 8 Thus, when the bit depth value is 8 and the offset value is 0, c(k,l) is equal to 2 8 , as shown in Table 500.

[0165] Similarly, when BitDepth = 8 and clipIdx = 1, offset[1] = 3. Therefore, c(k,l) is equal to 1<<(8–3), which is equivalent to 1 shifted left by 5 bits or equivalent to 2 5 Thus, when the bit depth value is 8 and the offset value is 3, c(k,l) is equal to 2 5 , as shown in Table 500.

[0166] When BitDepth = 8 and clipIdx = 2, offset[2] = 5. Therefore, c(k, l) is equal to 1<<(8-5), which is equivalent to 1 shifted left by 3 bits or equivalent to 2 3 Thus, when the bit depth value is 8 and the offset value is 5, c(k,l) is equal to 2 3 , as shown in Table 500.

[0167] Finally, when BitDepth = 8 and clipIdx = 3, offset[3] = 7. Therefore, c(k,l) is equal to 1<<(8–7), which is equivalent to 1 shifted left by 1 bit or equivalent to 2 1 Thus, when the bit depth value is 8 and the offset value is 7, c(k,l) is equal to 2 1 , as shown in Table 500.

[0168] Likewise, the above example calculations may be performed on bit depth values ​​506-520 (e.g., 9 to 16) based on offset values ​​0, 3, 5, 7 and clipping index values ​​0, 1, 2, and 3 to generate corresponding clipping values ​​shown in table 500. For example, as shown in table 500, in the case where the bit depth value is 9 and the clipping index value is 0, the clipping value generated based on equation (14) is 2 9 In the case where the bit depth value is 9 and the clipping index value is 1, the clipping value is 2 based on equation (14): 6 In the case where the bit depth value is 9 and the clipping index value is 2, the clipping value generated based on equation (14) is 2 4 In the case where the bit depth value is 9 and the clipping index value is 3, the clipping value generated based on equation (14) is 2 2 .

[0169] This calculation using arithmetic left shift instead of floating point can significantly simplify the clipping value calculation, reduce the burden on hardware and computing resources caused by such calculation, and reduce decoding errors. In addition, the clipping operation can be implemented as a logical OR / AND, with the most significant bit from (BitDepth–offset[clipIdx(k,l)]+1) bits to the least significant bit. This can also reduce the burden on the hardware.

[0170] In other illustrative examples, using integer arithmetic, the clipping value c(k, l) calculation may be implemented as follows:

[0171] c(k,l)=1<<((4*BitDepthY–BitDepthY*clipIdx(k,l))>>2) for luminance; and

[0172] c(k, l) = 1 << ((3 * BitDepthC - 8 * clipIdx(k, l)) / 3) for chrominance. Equation (15)

[0173] In another illustrative example, the clipping value c(k, l) of the luminance component can be calculated as in the following equation (16). Specifically, the equation c(k, l) = Round(2 (BitDepthY*(4–clipIdx(k,l)) / 4) ) can be rewritten as follows:

[0174] c(k, l) = Round(2 (BitDepthY–(BitDepthY*clipIdx(k,l)) / 4) ) = Round(2 (BitDepthY–a–b / 4) )

[0175] = Round(2 (BitDepthY–a) * 2 –b / 4) ) = ((1 << (BitDepthY - a)) * remY[b]) >> c

[0176] Equation (16)

[0177] Here, a is equal to ((BitDepthY * clipIdx(k, l)) >> 2), b is equal to (BitDepthY * clipIdx(k, l)) and 0x03, remY[b] is equivalent to Round(2 –b / 4 * (1 << c)) in floating-point arithmetic, b is 0, 1, 2, or 3, and c is a predefined integer value. In some examples, the value of remY[b] can be stored as an integer value in a look-up table (LUT). In this example based on equation (16), c(k, l) can be calculated using integer arithmetic without using floating-point numbers.

[0178] In such an illustrative example, the clipping value c(k, l) of the chrominance component can be calculated as follows:

[0179] c(k, l) = Round(2 (BitDepthC-8) * 2 (8*(3-clipIdx[k,l]) / 3) ) = Round(2 BitDepthC * 2 -8*clipIdx(k,l) / 3) )

[0180] = Round(2 BitDepthC–a–b / 3 ) = Round(1 << (BitDepthC – a) * 2 –b / 3 )

[0181] = ((1 << (BitDepthC – a)) * remC[b]) >> c Equation (17)

[0182] Here, a is equal to 8 * clipIdx(k, l) / 3, b is equal to (8 * clipIdx(k, l)) modulo 3, remC[b] is equivalent to Round(2 -b / 3 * (1 << c)) in floating-point arithmetic, b is 0, 1, or 2, and c is a predefined integer value. The value of remY[b] can be stored as an integer value in a LUT. In this example of equation (17), c[k, l] can be calculated using integer arithmetic instead of floating-point numbers.

[0183] In another illustrative example, for the luminance component, the clipping value c(k, l) can be calculated as follows:

[0184] c(k, l) = 1 << (BitDepthY – offsetY[clipIdx(k, l)]), Equation (18)

[0185] In addition, for the chrominance component, the clipping value c(k, l) can be calculated as follows:

[0186] c(k, l) = 1 << (BitDepthC – offsetC[clipIdx(k, l)]), Equation (19)

[0187] In the above examples, offsetY[i] and offsetC[i], where i is equal to 0, 1, 2, or 3, are predefined or calculated values based on the clipping index (clipIdx(k, l)).

[0188] In some examples, the clipping values for the luminance and / or chrominance components can be calculated based on other methods not mentioned above using integer arithmetic (e.g., using other equations).

[0189] In some implementations, the same equation can be used to calculate the clipping values for the luminance and chrominance components. For example, the same equation based on Equation (14) above can be used to calculate the clipping values for the luminance and chrominance components.

[0190] In an illustrative example, equations with floating-point arithmetic can be used to calculate the clipping values for both the luminance and chrominance components. For example, in some cases, one of the equations in Equations (11) and (12) can be used to calculate the clipping values for both the luminance and chrominance components. Alternatively, other equations not provided herein can be used. In another illustrative example, equations with integer arithmetic can be used. For example, one of the equations in Equations (14) - (19) can be used. Alternatively, other equations not provided herein can be used.

[0191] After disclosing example systems, components, and concepts, the present disclosure now proceeds to describe an example method 600 for processing video data, as Figure 6As shown. In some examples, the processing of video data by method 600 may include simplifying the calculation of clipping values ​​for adaptive loop filtering. The steps outlined herein are non-limiting examples provided for illustrative purposes and may be implemented in any combination thereof, including combinations that exclude, add, or modify certain steps.

[0192] At block 602, method 600 may include obtaining video data including one or more pictures. In some examples, an encoding device (e.g., 104) may receive one or more pictures from a video source (e.g., 102) such as a camera. In some examples, a decoding device (e.g., 112) may receive an encoded video bitstream including one or more pictures from an encoding device (e.g., 104). In some examples, the encoded video bitstream may include signaling information. The signaling information may include, for example, but not limited to, an offset value for determining a clipping value as described below with reference to block 606, a clipping index value for determining a clipping value as described below with reference to block 606, filter parameters (e.g., filter coefficients, filter size parameters, filter shape parameters, etc.), and / or an adaptive loop filter flag (e.g., an ALF flag indicating whether luma and / or chroma ALF filtering is enabled).

[0193] At block 604, method 600 may include obtaining blocks of a picture from one or more pictures. In some examples, an encoding device (e.g., 104) may segment the video data into one or more blocks including blocks of a picture. In some examples, the blocks may be encoded blocks in an encoded video bitstream, and a decoding device (e.g., 112) may use signaling information in the bitstream to decode the blocks of the picture by applying a codec algorithm and / or standard that matches the codec algorithm and / or standard used to encode the blocks, pictures, and / or bitstream. In some examples, as described with reference to Figure 1 The system 100 shown in FIG. Figure 8 As described with reference to the decoding device 112 shown in FIG. 1 , the decoding device may reconstruct blocks of a picture.

[0194] At block 606, method 600 may include determining a clipping value (e.g., c(k, l)) for at least one filter. In some examples, the clipping value may correspond to a luma component in a block of the picture and / or a chroma component in a block of the picture. In some examples, the clipping value is determined by shifting a first integer left by a second integer. In some cases, the second integer may include a bit depth value of a sample (e.g., luma sample, chroma sample) in the block minus an offset value (e.g., offset[clipIdx(k, l)]) associated with a clipping index value (e.g., clipIdx(k, l)). For example, in some cases, each clipping value is determined based on equation (14) above.

[0195] In some cases, the first integer is 1, and shifting the first integer left by the second integer includes raising 2 to the power of an exponent that is equal to the second integer. For example, if the first integer is 1 and the second integer is 8, then shifting the first integer left by the second integer may be equal to 2 to the power of 8 or 2 8 .

[0196] In some examples, the clipping values ​​may include a first set of clipping values ​​for the luma component and a second set of clipping values ​​for the chroma components. In some cases, as described with reference to block 606, the first set of clipping values ​​for the luma component and the second set of clipping values ​​for the chroma components may both be determined by left shifting the first integer by the second integer.

[0197] In some cases, the clipping value may correspond to a set of filter clipping values ​​in a clipping index table (e.g., table 500), and different clipping values ​​of the set of filter clipping values ​​in the clipping index table may correspond to different positions within a block and / or picture (e.g., k, l). In some examples, the different positions within the block and / or picture may include different pixel positions and / or regions in the picture.

[0198] In some cases, the offset value may be a predetermined offset value from a plurality of predetermined offset values. For example, the offset value may be one of 0, 3, 5, or 7, as previously described with reference to equation (14). In some cases, the offset value is determined from a plurality of predetermined offset values ​​based on a clipping index value (e.g., based on clipIdx(k, l)). In some examples, determining a clipping value for at least one filter may include determining corresponding clipping values ​​for a plurality of samples (e.g., luminance and / or chrominance samples) in a picture, and each corresponding clipping value may be associated with a particular sample from the plurality of samples. In some cases, each corresponding clipping value may be determined by shifting the first integer left by a particular integer associated with the particular sample. The particular integer may include a particular result of subtracting a particular offset value from a bit depth value of the particular sample from a particular offset value from a plurality of predetermined offset values. In some examples, as previously described, the particular offset value is determined from a plurality of predetermined offset values ​​based on a particular clipping index value associated with the particular sample.

[0199] In some cases, the clipping values ​​for at least one filter may include a luma clipping value for a luma component and a chroma clipping value for a chroma component. In some examples, the luma clipping value may be determined by shifting the first integer left by a third integer. The third integer includes a second result of a luma offset value associated with the second clipping index value minus a bit depth value of the luma samples in the block. In some examples, the chroma clipping value may be determined by shifting the first integer left by a fourth integer. The fourth integer includes a third result of a chroma offset value associated with the third clipping index value minus a bit depth value of the chroma samples in the block.

[0200] In some examples, at least one filter may include an ALF. In some examples, at least one filter may include a 5×5 adaptive loop filter, such as Figure 3A The filter 300 shown in FIG. 1 and the 7×7 adaptive loop filter, for example Figure 3B Filter 330 shown in .

[0201] In some cases, determining the clipping value of the at least one filter may include determining a filter coefficient value (e.g., f(k, l)) of the at least one filter. Additionally, in some aspects, at block 606, the method 600 may use other techniques to determine the clipping value. For example, in some cases, the method 600 may determine the clipping value based on any of equations (15) to (19) above.

[0202] At block 608, method 600 may include applying at least one filter to the block. Method 600 may generate an output block including the block filtered and clipped based on the at least one filter. For example, method 600 may generate an output block including the block filtered with an ALF and clipped based on a clipping value. Moreover, applying at least one filter to the block may include applying the filter coefficients and the clipping value to one or more samples (e.g., one or more luma and / or chroma samples) in the block.

[0203] In some cases, applying at least one filter to the block may include applying a 5×5 adaptive loop filter to the chroma component and applying a 7×7 adaptive loop filter to the luma component. In some examples, the 5×5 adaptive loop filter and the 7×7 adaptive loop filter may have a diamond shape. In other examples, the at least one filter may include one or more other filter sizes and / or shapes.

[0204] In some examples, a decoding device (e.g., 112) may obtain an encoded video bitstream including one or more pictures and decode blocks of the pictures according to the encoded video bitstream. In some examples, the decoding device may identify signaling information associated with the encoded video bitstream and use the signaling information to reconstruct the block, determine a clipping value for at least one filter, determine one or more coefficients for at least one filter, determine a filter size and / or shape, determine whether filtering is enabled, and / or apply at least one filter to the reconstructed block. In some examples, the signaling information may include an offset value, a clipping index value, a filter parameter (e.g., a filter coefficient, a filter size parameter, a filter shape parameter, etc.), and / or an adaptive loop filter flag (e.g., an ALF flag indicating whether luma and / or chroma ALF filtering is enabled).

[0205] In some examples, method 600 may include generating an encoded video bitstream including one or more pictures (e.g., via encoding device 104) and sending the encoded video bitstream to a decoding device (e.g., 112). In some cases, the encoded video bitstream may be sent along with signaling information. The signaling information may include, for example, offset values, clipping index values, filter parameters (e.g., filter coefficients, filter size parameters, filter shape parameters, etc.), and / or adaptive loop filter flags (e.g., an ALF flag indicating whether luma and / or chroma ALF filtering is enabled).

[0206] In some examples, method 600 may include storing the encoded video bitstream. In some examples, method 600 may include presenting a reconstructed video based on the encoded video bitstream after reconstructing the blocks of the picture in the encoded video bitstream and applying one or more ALF filters with clipping values ​​to the one or more blocks of the picture in the encoded video.

[0207] In some embodiments, the processes (or methods) described herein may be performed by a computing device or apparatus, such as Figure 1 For example, these processes may be performed by Figure 1 and Figure 7 Executed by the encoding device 104 shown in FIG. 1 , executed by another video source side device or a video transmission device, or executed by Figure 1 and Figure 7 The decoding device 112 shown in is executed, and / or executed by another client-side device. The client-side device is, for example, a player device, a display, or any other client-side device. In some cases, the 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, the computing device or apparatus may include a camera configured to capture video data (e.g., a video sequence) including video frames. In some examples, the camera or other capture device that captures video data is separate from the computing device. In this case, the computing device receives or obtains the captured video data. The computing device may also include a network interface configured to transmit video data. The network interface may be configured to transmit data based on the Internet Protocol (IP) or other types of data. In some examples, the computing device or apparatus may include a display for displaying output video content, such as a sample of a picture of a video bitstream.

[0208] The processes may be described with reference to logic flow diagrams, the operations of which represent sequences of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. In general, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. 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 processes.

[0209] In addition, these processes can be executed under the control of one or more computer systems configured with executable instructions, and can be implemented as codes (e.g., executable instructions, one or more computer programs, or one or more applications) that are executed together on one or more processors. These processes can also be executed by hardware or in a combination of the above. As described above, the code can be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program including multiple instructions that can be executed by one or more processors. The computer-readable or machine-readable storage medium can be non-transitory.

[0210] The coding and decoding techniques discussed herein can be implemented in an example video coding and decoding system (e.g., system 100). In some examples, the system includes a source device that provides encoded video data to 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 can 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, mobile devices, Internet of Things (IoT) devices, HMDs, etc. In some cases, the source device and the target device can be equipped for wireless communication.

[0211] The target device can receive the encoded video data to be decoded via a computer-readable medium. The computer-readable medium can 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 can include a communication medium so that the source device directly transmits the encoded video data to the target device in real time. The encoded video data can be modulated according to a communication standard such as a wireless communication protocol and transmitted to the target device. The communication medium can include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form 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 can include a router, a switch, a base station, or any other device that can be useful for facilitating communication from the source device to the target device.

[0212] In some examples, the encoded data may be output from the output interface to a storage device. Similarly, the encoded data may be accessed from the storage device via the input interface. The storage device may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, the storage device may correspond to a file server or another intermediate storage device that may store the encoded video generated by the source device. The target device may access the stored video data in the storage device via streaming or downloading. The file server may be any type of server capable of storing encoded video data and transmitting the encoded video data to the target device. Example file servers include a Web server (e.g., for a website), an FTP server, a network attached storage (NAS) device, or a local disk drive. The target device may access the encoded video data via any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a DSL, a cable modem, etc.), or a combination of both, suitable for accessing the encoded video data stored on the file server. The transmission of the encoded video data originating from the storage device may be a streaming transmission, a download transmission, or a combination thereof.

[0213] The technology of the present disclosure is not necessarily limited to wireless applications or settings. These technologies can be applied to video encoding and decoding to support any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, satellite television transmission, Internet streaming video transmission, such as dynamic adaptive streaming (DASH) via HTTP, 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.

[0214] 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 connected to an external display device, rather than including an integrated display device.

[0215] The above example system is only an example. The technology for parallel processing of video data can be performed by any digital video encoding and / or decoding device. Although the technology of the present disclosure is usually performed by a video encoding device, these technologies can also be performed by a video encoder / decoder, which is usually 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 only examples of codec devices in which the source device generates encoded video data for transmission to the target device. In some examples, the source and target devices can operate in a substantially symmetrical manner so that each of the devices includes a video encoding and decoding component. Thus, 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.

[0216] The video source may include a video capture device, such as a video camera, a video archive comprising 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 a source video, or a combination of live 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 mentioned above, the technology described in the present disclosure is generally applicable to video coding and decoding, and may be applied to wireless and / or wired applications. In each case, the captured, pre-captured or computer-generated video may be encoded by a video encoder. The encoded video information may then be output to a computer-readable medium via an output interface.

[0217] As described above, computer-readable media may include transient media (e.g., wireless broadcast or wired network transmission) or storage media (i.e., non-temporary storage media) (e.g., hard disk, flash drive, compact disc, digital video disc, Blu-ray disc, 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 mechanism such as a disc stamping mechanism may receive encoded video data from a source device and produce a disc containing the encoded video data. Therefore, in various examples, a computer-readable medium may be understood to include one or more computer-readable media in various forms.

[0218] The input interface of the 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 and used by a video decoder. The information includes syntax elements describing the characteristics and / or processing of blocks and other encoded and decoded units, such as a group of pictures (GOP). The display device displays the decoded video data to a user and may include any of a variety of display devices. Various display devices include, for example, 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 embodiments of the present application have been described.

[0219] The details of the encoding device 104 and the decoding device 112 are described in Figure 7 and Figure 8 are shown separately in. Figure 7is a block diagram illustrating an example encoding device 104 that can implement one or more of the techniques described in the present disclosure. The encoding device 104 can, for example, generate the syntax structures described herein (e.g., syntax structures of a VPS, SPS, PPS, or other syntax elements). The encoding device 104 can perform intra-frame prediction and inter-frame prediction coding and decoding on video blocks within a video slice. As previously described, intra-frame coding and decoding rely at least in part on spatial prediction to reduce or remove spatial redundancy within a given video frame or picture. Inter-frame coding and decoding rely 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) can refer to any of several spatial-based compression modes. Inter-frame mode, such as unidirectional prediction (P mode) or bidirectional prediction (B mode), can refer to any of several temporal-based compression modes.

[0220] The encoding device 104 includes a segmentation unit 35, a prediction processing unit 41, a filter unit 63, a picture memory 64, an adder 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 an adder 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 Figure 7 63 is shown as a 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. The techniques of the present disclosure may be implemented by encoding device 104 in some instances. However, in other instances, one or more of the techniques of the present disclosure may be implemented by post-processing device 57.

[0221] like Figure 7As 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, slices, or other larger units; and, for example, video block segmentation 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 a plurality of video blocks (and may be divided into sets of video blocks referred to as slices). The prediction processing unit 41 may select one of a plurality of possible codec modes for the current video block based on error results (e.g., codec rate and distortion, etc.), for example, one of a plurality of intra-frame prediction codec modes or one of a plurality of inter-frame prediction codec modes. The prediction processing unit 41 may provide the resulting intra-frame or inter-frame codec block to the adder 50 to generate residual block data, and to the adder 62 to reconstruct the encoded block for use as a reference picture.

[0222] Intra-prediction processing unit 46 within prediction processing unit 41 may perform intra-prediction encoding and decoding of the current video block with reference to one or more neighboring blocks within the same frame or slice as the current block to be encoded and decoded, thereby providing spatial compression. Motion estimation unit 42 and motion compensation unit 44 within prediction processing unit 41 may perform inter-prediction encoding and decoding of the current video block with reference to one or more prediction blocks in one or more reference pictures to provide temporal compression.

[0223] 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 specify 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 that estimate motion of a video block. A motion vector, for example, may indicate the displacement of a prediction unit (PU) of a video block within a current video frame or picture relative to a prediction block within a reference picture.

[0224] A prediction 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 the sum of absolute differences (SAD), the sum of squared differences (SSD), or other difference metrics. In some examples, the encoding device 104 may calculate values ​​for sub-integer pixel positions of a reference picture stored in the picture memory 64. For example, the encoding device 104 may interpolate values ​​at quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference picture. Thus, the 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.

[0225] Motion estimation unit 42 calculates a motion vector for a PU of a video block in an inter-coded slice by comparing the position of the PU to the position of a prediction 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 list identifies one or more reference pictures stored in picture memory 64. Motion estimation unit 42 sends the calculated motion vector to entropy encoding unit 56 and motion compensation unit 44.

[0226] Motion compensation performed by motion compensation unit 44 may involve obtaining or generating a prediction 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 prediction block pointed to by the motion vector in the reference picture list. Encoding device 104 forms a residual video block by subtracting the pixel values ​​of the prediction block from the pixel values ​​of the current video block being encoded and decoded to form pixel difference values. The pixel difference values ​​form the residual data of the block and may include both luminance and chrominance difference components. Adder 50 represents one or more components that perform this subtraction operation. Motion compensation unit 44 may also generate syntax elements associated with video blocks and video slices for use by decoding device 112 during decoding of video blocks of video slices.

[0227] The intra-prediction processing unit 46 may perform intra-prediction on the current block, as described above, as an alternative to the inter-prediction performed by the motion estimation unit 42 and the motion compensation unit 44. Specifically, the intra-prediction processing unit 46 may determine an intra-prediction mode to use for encoding the current block. In some instances, the intra-prediction processing unit 46 may encode the current block using various intra-prediction modes, for example, during separate encoding passes, and the intra-prediction processing unit 46 may select an appropriate intra-prediction mode to use from a test mode. For example, the intra-prediction processing unit 46 may calculate rate-distortion values ​​using rate-distortion analysis for various tested intra-prediction modes, and may select the intra-prediction mode having the best rate-distortion characteristics among the tested modes. The rate-distortion analysis typically determines the amount of distortion (or error) between the coded block and the original uncoded block that has been coded and produced the coded block, as well as the bit rate (i.e., the number of bits) used to produce the coded 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.

[0228] In any case, after selecting an intra-prediction mode for a block, intra-prediction processing unit 46 may provide information indicating the intra-prediction mode selected 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 the coding contexts for the various blocks and an indication of the most probable intra-prediction mode, an indication of an intra-prediction mode index table, and an indication of 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).

[0229] After the prediction processing unit 41 generates a prediction 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 prediction block from the current video block. The residual video data in the residual block may be contained 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 transform the residual video data from a pixel domain to a transform domain, such as a frequency domain.

[0230] Transform processing unit 52 may send 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 coefficients. The degree of quantization may be modified by adjusting the quantization parameter. In some examples, quantization unit 54 may then perform a scan of the matrix including the quantized transform coefficients. Alternatively, entropy encoding unit 56 may perform the scan.

[0231] After quantization, the entropy coding unit 56 performs entropy coding on the quantized transform coefficients. For example, the entropy coding 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 coding technique. After entropy coding by the entropy coding unit 56, the encoded bitstream may be transmitted to the decoding device 112, or archived for later transmission or retrieval by the decoding device 112. The entropy coding unit 56 may also perform entropy coding on motion vectors and other syntax elements for the current video slice being encoded or decoded.

[0232] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct a residual block in the pixel domain, which is subsequently used as a reference block for a reference picture. Motion compensation unit 44 may calculate a reference block by adding the residual block to a prediction block of one of the reference pictures in the 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. Adder 62 adds the reconstructed residual block to the motion compensated prediction block generated by motion compensation unit 44 to generate 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 to perform inter-frame prediction on a block in a subsequent video frame or picture.

[0233] In some examples, Figure 7 The encoding device 104 may represent an example of a video encoder configured to calculate ALF filters and clipping values, perform ALF filtering with clipping, derive various encoding and decoding parameters, etc. The encoding device 104 may, for example, calculate ALF filters and clipping values ​​and / or perform ALF filtering with clipping as described above. For example, the encoding device 104 may perform any of the techniques described herein, including those described above with reference to Figures 2A to 6 In some cases, some of the techniques of this disclosure may also be implemented by post-processing device 57.

[0234] Figure 8 1 is a block diagram 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, an adder 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 the same as the reference. Figure 7 The encoding channel described in the encoding device 104 is roughly the opposite of the decoding channel.

[0235] 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 sent by the encoding device 104. In some embodiments, the decoding device 112 may receive the encoded video bitstream from the encoding device 104. In some embodiments, the decoding device 112 may receive the encoded video bitstream from the network entity 79. The network entity 79 includes, for example, 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-described techniques. The network entity 79 may or may not include the encoding device 104. Some of the techniques described in this disclosure may be implemented by the network entity 79 before the network entity 79 sends 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 functions described with reference to the network entity 79 may be performed by the same device including the decoding device 112.

[0236] 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 can receive syntax elements at the video slice level and / or the video block level. The entropy decoding unit 80 can 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.

[0237] When the video slice is coded as an intra-frame codec (I) slice, the intra-frame prediction processing unit 84 of the prediction processing unit 81 can generate prediction data for the video block of the current video slice based on the signaled intra-frame prediction mode and the data from the previously decoded block of the current frame or picture. When the video frame is coded as an inter-frame codec (i.e., B, P or GPB) slice, the motion compensation unit 82 of the prediction processing unit 81 generates a prediction block for the video block of the current video slice based on the motion vector and other syntax elements received from the upper decoding unit 80. The prediction block can be generated from one of the reference pictures in the reference picture list. The decoding device 112 can construct a reference frame list, including list 0 and list 1, using a default construction technique based on the reference pictures stored in the picture memory 92.

[0238] The motion compensation unit 82 determines the prediction information of the video block of the current video slice by parsing the motion vector and other syntax elements, and uses the prediction information to generate the prediction block of the video block currently being decoded. For example, the motion compensation unit 82 can use one or more syntax elements in the parameter set to determine: the prediction mode (e.g., intra-frame or inter-frame prediction) used to encode and decode the video block of the video slice, the inter-frame prediction slice type (e.g., B slice, P slice, or GPB slice), the construction information of one or more reference picture lists for the slice, the motion vector of each inter-frame coded video block of the slice, the inter-frame prediction state of each inter-frame coded video block of the slice, and other information used to decode the video block in the current video slice.

[0239] The motion compensation unit 82 may also perform interpolation based on an interpolation filter. The motion compensation unit 82 may calculate interpolated values ​​for sub-integer pixels of a reference block using an interpolation filter such as that used by the encoding device 104 during encoding of the video block. In this case, the motion compensation unit 82 may determine the interpolation filter used by the encoding device 104 based on the received syntax elements and may use the interpolation filter to generate a prediction block.

[0240] The inverse quantization unit 86 inverse quantizes or dequantizes the quantized transform coefficients provided in the bitstream and decoded by the entropy decoding unit 80. The inverse quantization process may include using the quantization parameters calculated by the encoding device 104 for each video block in the video slice to determine the degree of quantization and the degree of inverse quantization that should be applied. The 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 in order to produce a residual block in the pixel domain.

[0241] After the motion compensation unit 82 generates a prediction block for the current video block based on the motion vector and other syntax elements, the decoding device 112 forms a decoded video block by adding the residual block from the inverse transform processing unit 88 to the corresponding prediction block generated by the motion compensation unit 82. Adder 90 represents one or more components that perform this summation operation. If desired, a loop filter (in the codec loop or after the codec loop) can also be used to smooth pixel transitions or 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 / or a sample adaptive offset (SAO) filter. Although Figure 8Filter unit 91 is shown as a loop filter in FIG. 1 , 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 then stored in picture memory 92. Picture memory 92 stores reference pictures for subsequent motion compensation. Picture memory 92 also stores decoded video for later use in, for example, Figure 1 The video shown in FIG. 1 is presented on a display device of target device 122 .

[0242] In some examples, Figure 8 The decoding device 112 of 114 represents an example of a video decoder that is configured to calculate ALF filters and clipping values, perform ALF filtering with clipping, derive various encoding and decoding parameters, etc. The decoding device 112 can, for example, calculate ALF filters and clipping values ​​and perform ALF filtering with clipping as described above. For example, the decoding device 112 can perform any of the techniques described herein, including the techniques described above with reference to Figures 2A to 6 Describe the process and techniques.

[0243] As used herein, the term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media and / or data capable of storing, containing or carrying instructions. Computer-readable media may include non-temporary media in which data may be stored and do not include carrier waves and / or transient electronic signals that are propagated wirelessly or by wired connections. Examples of non-temporary media may include, but are not limited to, disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), flash memory, memory, or storage devices. Computer-readable media may store codes and / or machine-executable instructions thereon, which may represent any combination of processes, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or instructions, data structures, or program statements. A code segment may be coupled to another code segment or hardware circuit by transmitting and / or receiving information, data, independent variables, parameters, or memory contents. Information, independent variables, parameters, data, etc. may be transmitted, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

[0244] In some examples, computer-readable storage devices, media, and memories may include cables or wireless signals containing bit streams, etc. However, when referred to, non-transitory computer-readable storage media expressly excludes media such as energy, carrier signals, electromagnetic waves, and signals themselves.

[0245] Specific details are provided in the above description to provide a comprehensive understanding of the embodiments and examples provided herein. However, it should be understood by those of ordinary skill in the art that these embodiments can be practiced without these specific details. For the sake of clarity of explanation, in some instances, the present technology can be presented as including independent functional blocks, which include functional blocks including steps or routines in methods including devices, device components, software or a combination of hardware and software. Additional components other than the components shown in the figure and / or described herein can be used. For example, circuits, systems, networks, processes and other components can be shown as components in block diagram form, so as not to confuse the embodiments in terms of unnecessary details. In other instances, in order to avoid making the embodiments obscure, known circuits, processes, algorithms, structures, and techniques can be shown without unnecessary details.

[0246] The above various embodiments can be described as processes or methods, which are depicted as flow charts, flow diagrams, data flow diagrams, structure diagrams or block diagrams. Although the flow chart can describe the operation as a sequential process, many operations can be performed in parallel or simultaneously. In addition, the order of the operations can be rearranged. The process is terminated when its operation is completed, but may have other steps not included in the figure. The process may correspond to a method, function, process, subroutine, subprogram, etc. When the process corresponds to a function, its termination may correspond to the function returning to the calling function or main function.

[0247] The processes and methods according to the above examples can be implemented using available computer executable instructions stored or from a computer readable medium. Such instructions may include, for example, instructions and data that cause or configure a general-purpose computer, a special-purpose computer, or a processing device to perform a specific function or group of functions. Parts of the computer resources used may be easily accessible via a network. Computer executable instructions may be, for example, binary, intermediate format instructions such as assembly language, firmware, source code, etc. Examples of computer readable media may be used to store instructions, information used, and / or information created during the methods according to the above examples. Computer readable media include disks or optical disks, flash memory, USB devices equipped with non-volatile memory, network storage devices, etc.

[0248] The equipment implementing the processes and methods disclosed herein may include hardware, software, firmware, middleware, microcode, hardware description language, or any combination thereof, and may adopt any of a variety of form factors. When implemented in the form of software, firmware, middleware, or microcode, the program code or code segments that perform the necessary tasks (e.g., computer program products) may be stored in a computer-readable or machine-readable medium. The processor may perform the necessary tasks. Typical examples of form factors include laptop computers, smart phones, mobile phones, tablet devices, or other small form factor personal computers, personal digital assistants, rack-mounted devices, stand-alone devices, etc. The functions described herein may also be embodied in peripheral devices or plug-in cards. As another example, such functions may also be implemented on circuit boards between different chips or between different processes performed in a single device.

[0249] Instructions, media for transmitting such instructions, computing resources for executing the same, and other structures for supporting such computing resources are example means for providing the functionality described in this disclosure.

[0250] In the foregoing description, various aspects of the present application are described with reference to the specific embodiments of the present application. However, it should be understood by those skilled in the art that the present application is not limited thereto. Therefore, although the illustrative embodiments of the present application are described in detail herein, it should be understood that the inventive concept can be embodied and adopted in many aspects, and the appended claims are intended to be interpreted as including these variations, unless limited to the prior art. The various features and aspects of the above-mentioned application can be used individually or in combination. Moreover, without departing from the broader spirit and scope of this specification, the embodiment can be used in any number of environments and applications beyond the environment and application described herein. Therefore, the description and the accompanying drawings are considered to be illustrative rather than restrictive. For the purpose of illustration, the method is described in a specific order. It should be understood that in alternative embodiments, these methods can be performed in an order different from the described order.

[0251] It should be understood by those of ordinary skill that the less than ("<") and greater than (">") symbols or terms used herein may be replaced with less than or equal to ("≤") and greater than or equal to ("≥") symbols, respectively, without departing from the scope of this specification.

[0252] Where a component is described as being “configured to” perform certain operations, such configuration may be accomplished, 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.

[0253] The phrase "coupled to" refers to any component that is physically connected to another component, directly or indirectly, and / or any component that communicates directly and / or indirectly with another component (e.g., connected to another component via a wired or wireless connection, and / or other suitable communication interface).

[0254] Claim language or other language stating "at least one of" a set and / or "one or more of" a set indicates that one member of the group or multiple members of the group (in any combination) satisfy the claim. For example, claim language stating "at least one of A and B" means A, B, or A and B. In another example, claim language stating "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 stating "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.

[0255] Various illustrative logic blocks, modules, circuits and algorithmic steps described in conjunction with the examples disclosed herein can 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, blocks, modules, circuits and steps have been generally described above in terms of their functions. Whether this function is implemented as hardware or software depends on specific applications and the design constraints imposed on the entire system. Technicians can implement the described functions in different ways for each specific application, but this implementation decision should not be interpreted as causing deviations from the scope of the application.

[0256] The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. These techniques may be implemented in any of a variety of devices. Various devices include, for example, 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 implemented in discrete interoperable logic devices. If implemented in software, these techniques may be implemented at least in part by a computer-readable data storage medium including program code. The program code includes instructions for executing one or more of the above methods, algorithms, and / or operations when executed. A computer-readable data storage medium may form part of a computer program product, which may include grouped materials. A computer-readable medium may include a memory or a data storage medium, for example, 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, these techniques may be implemented at least in part by a computer-readable communication medium that carries or transmits program code in the form of instructions or data structures that can be accessed, read and / or executed by a computer, such as a propagated signal or wave.

[0257] 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 circuits. Such a processor may be configured to perform any of the techniques described in this 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 combination of multiple microprocessors, a combination of one or more microprocessors in combination with a DSP core, or any other such configuration. Therefore, the term "processor" as used herein may refer to any of the foregoing structures, any combination of the foregoing structures, or any other structure or device suitable for implementing the techniques described herein.

[0258] Illustrative examples of the present disclosure include:

[0259] Example 1: A method includes: obtaining video data including one or more pictures; obtaining a block of the picture from the one or more pictures; determining a clipping value of at least one filter, the clipping value corresponding to at least one of a luminance component of the block and a chrominance component of the block, wherein the clipping value in the clipping value is determined by shifting a first integer left by a second integer, the second integer comprising a bit depth value of a sample from the block minus an offset value associated with a clipping index value; and applying the at least one filter to the block.

[0260] Example 2: A method according to Example 2, wherein at least one filter comprises an adaptive loop filter.

[0261] Example 3: A method according to Example 1 or 2, wherein the clipping values ​​include a first set of clipping values ​​for luma components and a second set of clipping values ​​for chroma components, wherein the first set of clipping values ​​for luma components and the second set of clipping values ​​for chroma components are both determined by shifting a first integer left by a second integer.

[0262] Example 4: The method of any one of Examples 1 to 3, wherein the first integer is 1, and wherein left shifting the first integer by the second integer comprises raising 2 to a power that includes the exponent of the second integer.

[0263] Example 5: A method according to any one of Examples 1 to 4, wherein the clipping value corresponds to a set of filter clipping values ​​in a clipping index table, wherein different filter clipping values ​​of the set of filter clipping values ​​in the clipping index table correspond to different positions within the picture.

[0264] Example 6: A method according to any one of Examples 1 to 5, wherein the offset value includes a predetermined offset value from a plurality of predetermined offset values, and wherein the offset value is determined from the plurality of predetermined offset values ​​based on a clipping index value.

[0265] Example 7: A method according to any one of Examples 1 to 6, wherein determining a clipping value for at least one filter comprises determining corresponding clipping values ​​for multiple samples from a picture, wherein each corresponding clipping value is associated with a specific sample from the multiple samples, and wherein each corresponding clipping value is determined by left-shifting a first integer by a specific integer associated with the specific sample, the specific integer comprising a bit depth value of the specific sample minus a specific result of a specific offset value from a plurality of predetermined offset values.

[0266] Example 8: A method according to any one of Examples 1 to 7, wherein the specific offset value is determined from a plurality of predetermined offset values ​​based on a specific clipping index value associated with the specific sample.

[0267] Example 9: A method according to any one of Examples 1 to 8, wherein the clipping values ​​of at least one filter include one or more luma clipping values ​​for a luma component and one or more chroma clipping values ​​for a chroma component, wherein the one or more luma clipping values ​​are determined by shifting a first integer left by a third integer, the third integer comprising a second result of subtracting a luma offset value associated with a second clipping index value from a luma sample of the picture, and wherein the one or more chroma clipping values ​​are determined by shifting the first integer left by a fourth integer, the fourth integer comprising a third result of subtracting a chroma offset value associated with a third clipping index value from a chroma sample of the picture.

[0268] Example 10: A method according to any one of Examples 1 to 9, wherein at least one filter includes a 5×5 adaptive loop filter and a 7×7 adaptive loop filter, and wherein applying the at least one filter to the block includes: applying the 5×5 adaptive loop filter to the chroma component, and applying the 7×7 adaptive loop filter to the luminance component.

[0269] Example 11: The method according to any one of Examples 1 to 10 also includes: generating an encoded video bitstream including one or more pictures.

[0270] Example 12: A method according to any one of Examples 1 to 11, wherein the encoded video bitstream is generated based on the video data and the result of applying at least one filter to the block.

[0271] Example 13: The method according to any one of Examples 1 to 12 further includes: sending the encoded video bit stream to a decoding device, wherein the encoded video bit stream is sent together with signaling information, and the signaling information includes at least one of an offset value, a clipping index value, a filter parameter, and an adaptive loop filter flag.

[0272] Example 14: The method according to any one of Examples 1 to 13 also includes: storing the encoded video bit stream.

[0273] Example 15: The method according to any one of Examples 1 to 14 further includes: obtaining an encoded video bitstream including one or more pictures; decoding blocks of pictures from the encoded video bitstream; and identifying signaling information associated with the encoded video bitstream, the signaling information including an offset value, the clipping index value, a filter parameter, and at least one of an adaptive loop filter flag.

[0274] Example 16: A method according to any one of Examples 1 to 15, wherein decoding a block of a picture from an encoded video bitstream includes reconstructing a block of the picture, and wherein applying at least one filter includes applying at least one filter to the reconstructed block.

[0275] Example 17: An apparatus comprising: a memory; and one or more processors coupled to the memory, wherein the one or more processors are configured to: obtain video data comprising one or more pictures; obtain a block of the picture from the one or more pictures; determine a clipping value for at least one filter, the clipping value corresponding to at least one of a luminance component of the block and a chrominance component of the block, wherein the clipping value in the clipping value is determined by left-shifting a first integer by a second integer, the second integer comprising a bit depth value of a sample from the block minus an offset value associated with a clipping index value; and apply the at least one filter to the block.

[0276] Example 18: The apparatus of Example 18, wherein at least one filter comprises an adaptive loop filter.

[0277] Example 19: An apparatus according to Example 17 or 18, wherein the clipping values ​​include a first set of clipping values ​​for luma components and a second set of clipping values ​​for chroma components, wherein the first set of clipping values ​​for luma components and the second set of clipping values ​​for chroma components are both determined by shifting the first integer left by the second integer.

[0278] Example 20: An apparatus according to any of Examples 17 to 19, wherein the first integer is 1, and wherein shifting the first integer left by the second integer comprises raising 2 to a power that includes the exponent of the second integer.

[0279] Example 21: An apparatus according to any one of Examples 17 to 20, wherein the clipping value corresponds to a set of filter clipping values ​​in a clipping index table, wherein different filter clipping values ​​of the set of filter clipping values ​​in the clipping index table correspond to different positions within the picture.

[0280] Example 22: According to the device described in any one of Examples 17 to 21, the offset value includes a predetermined offset value from a plurality of predetermined offset values, and wherein the offset value is determined from the plurality of predetermined offset values ​​based on a clipping index value.

[0281] Example 23: An apparatus according to any one of Examples 17 to 22, wherein determining a clipping value for at least one filter comprises determining corresponding clipping values ​​for multiple samples from a picture, wherein each corresponding clipping value is associated with a specific sample from the multiple samples, and wherein each corresponding clipping value is determined by shifting a first integer left by a specific integer associated with the specific sample, the specific integer comprising a specific result of subtracting a specific offset value from a plurality of predetermined offset values ​​from a bit depth value of the specific sample.

[0282] Example 24: An apparatus according to any one of Examples 17 to 23, wherein the specific offset value is determined from a plurality of predetermined offset values ​​based on a specific clipping index value associated with the specific sample.

[0283] Example 25: An apparatus according to any one of Examples 17 to 24, wherein the clipping values ​​of at least one filter include one or more luma clipping values ​​for a luma component and one or more chroma clipping values ​​for a chroma component, wherein the one or more luma clipping values ​​are determined by shifting a first integer left by a third integer, the third integer comprising a second result of subtracting a luma offset value associated with a second clipping index value from a luma sample of the picture, and wherein the one or more chroma clipping values ​​are determined by shifting the first integer left by a fourth integer, the fourth integer comprising a third result of subtracting a chroma offset value associated with a third clipping index value from a chroma sample of the picture.

[0284] Example 26: An apparatus according to any one of Examples 17 to 25, wherein at least one filter includes a 5×5 adaptive loop filter and a 7×7 adaptive loop filter, and wherein applying the at least one filter to the block includes: applying the 5×5 adaptive loop filter to the chroma component, and applying the 7×7 adaptive loop filter to the luminance component.

[0285] Example 27: According to the device described in any of Examples 17 to 26, one or more processors are configured to: generate an encoded video bitstream including one or more pictures.

[0286] Example 28: An apparatus according to any one of Examples 17 to 27, wherein the encoded video bitstream is generated based on the video data and the result of applying at least one filter to the block.

[0287] Example 29: According to the apparatus described in any one of Examples 17 to 28, one or more processors are configured to: send a coded video bit stream to a decoding device, wherein the coded video bit stream is sent together with signaling information, and the signaling information includes at least one of an offset value, a clipping index value, a filter parameter, and an adaptive loop filter flag.

[0288] Example 30: According to the device described in any of Examples 17 to 29, one or more processors are configured to: store the encoded video bitstream.

[0289] Example 31: According to the device described in any of Examples 17 to 30, one or more processors are configured to: obtain an encoded video bitstream including one or more pictures; decode blocks of pictures from the encoded video bitstream; and identify signaling information associated with the encoded video bitstream, the signaling information including at least one of an offset value, a clipping index value, a filter parameter, and an adaptive loop filter flag.

[0290] Example 32: An apparatus according to any one of Examples 17 to 31, wherein decoding a block of a picture from an encoded video bitstream includes reconstructing a block of the picture, and wherein applying at least one filter includes applying at least one filter to the reconstructed block.

[0291] Example 33: An apparatus according to any one of Examples 17 to 32, wherein the apparatus is a mobile computing device.

[0292] Example 34: An apparatus comprising a device for performing a method according to any one of Examples 1 to 16.

[0293] Example 35: 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: obtain video data comprising one or more pictures; obtain blocks of pictures from the one or more pictures; determine a clipping value for at least one filter, the clipping value corresponding to a luminance component of the block and at least one of a chrominance component of the block, wherein the clipping value in the clipping value is determined by shifting a first integer left by a second integer, the second integer comprising a bit depth value of a sample from the block minus an offset value associated with a clipping index value; and apply at least one filter to the block.

[0294] Example 36: The non-transitory computer-readable storage medium of Example 35, wherein at least one filter comprises an adaptive loop filter.

[0295] Example 37: A non-transitory computer-readable storage medium according to Example 35 or 36, wherein the clipping values ​​include a first set of clipping values ​​for a luma component and a second set of clipping values ​​for a chroma component, wherein the first set of clipping values ​​for the luma component and the second set of clipping values ​​for the chroma component are both determined by shifting the first integer left by the second integer.

[0296] Example 38: The non-transitory computer-readable storage medium of any one of Examples 35 to 37, wherein the first integer is 1, and wherein left-shifting the first integer by the second integer comprises raising 2 to a power that includes the exponent of the second integer.

[0297] Example 39: A non-temporary computer-readable storage medium according to any one of Examples 35 to 38, wherein the clipping value corresponds to a set of filter clipping values ​​in a clipping index table, wherein different filter clipping values ​​of the set of filter clipping values ​​in the clipping index table correspond to different positions within the picture.

[0298] Example 40: A non-transitory computer-readable storage medium according to any one of Examples 35 to 39, wherein the offset value includes a predetermined offset value from a plurality of predetermined offset values, and wherein the offset value is determined from the plurality of predetermined offset values ​​based on a clipping index value.

[0299] Example 41: A non-transitory computer-readable storage medium according to any one of Examples 35 to 40, wherein determining a clipping value for at least one filter comprises determining corresponding clipping values ​​for multiple samples from a picture, wherein each corresponding clipping value is associated with a specific sample from the multiple samples, and wherein each corresponding clipping value is determined by left-shifting a first integer by a specific integer associated with the specific sample, the specific integer comprising a bit depth value of the specific sample minus a specific result of a specific offset value from a plurality of predetermined offset values.

[0300] Example 42: A non-transitory computer-readable storage medium according to any one of Examples 35 to 41, wherein the specific offset value is determined from a plurality of predetermined offset values ​​based on a specific clipping index value associated with the specific sample.

[0301] Example 43: A non-transitory computer-readable storage medium according to any one of Examples 35 to 42, wherein the clipping values ​​of at least one filter include one or more luma clipping values ​​for a luma component and one or more chroma clipping values ​​for a chroma component, wherein the one or more luma clipping values ​​are determined by shifting a first integer left by a third integer, the third integer comprising a second result of subtracting a luma offset value associated with a second clipping index value from a luma sample of a picture, and wherein the one or more chroma clipping values ​​are determined by shifting the first integer left by a fourth integer, the fourth integer comprising a third result of subtracting a chroma offset value associated with a third clipping index value from a chroma sample of a picture.

[0302] Example 44: A non-transitory computer-readable storage medium according to any one of Examples 35 to 43, wherein at least one filter includes a 5×5 adaptive loop filter and a 7×7 adaptive loop filter, and wherein applying the at least one filter to the block includes: applying the 5×5 adaptive loop filter to the chroma component, and applying the 7×7 adaptive loop filter to the luma component.

[0303] Example 45: A non-transitory computer-readable storage medium according to any one of Examples 35 to 44, comprising instructions that, when executed by one or more processors, cause the one or more processors to generate an encoded video bitstream comprising one or more pictures.

[0304] Example 46: A non-transitory computer-readable storage medium according to any one of Examples 35 to 45, wherein the encoded video bitstream is generated based on the video data and the result of applying at least one filter to the block.

[0305] Example 47: A non-temporary computer-readable storage medium according to any one of Examples 35 to 46, comprising instructions which, when executed by one or more processors, cause the one or more processors to send an encoded video bitstream to a decoding device, wherein the encoded video bitstream is sent together with signaling information, the signaling information including at least one of an offset value, a clipping index value, a filter parameter, and an adaptive loop filter flag.

[0306] Example 48: A non-transitory computer-readable storage medium according to any one of Examples 35 to 47, comprising instructions that, when executed by one or more processors, cause the one or more processors to store an encoded video bitstream.

[0307] Example 49: A non-transitory computer-readable storage medium according to any one of Examples 35 to 48, comprising instructions which, when executed by one or more processors, cause the one or more processors to obtain an encoded video bitstream comprising one or more pictures; decode blocks of pictures from the encoded video bitstream; and identify signaling information associated with the encoded video bitstream, the signaling information comprising an offset value, the clipping index value, a filter parameter, and at least one of an adaptive loop filter flag.

[0308] Example 50: A non-transitory computer-readable storage medium according to any one of Examples 35 to 49, wherein decoding a block of a picture from an encoded video bitstream includes reconstructing a block of the picture, and wherein applying at least one filter includes applying at least one filter to the reconstructed block.

[0309] Example 51: The non-transitory computer-readable storage medium of any of Examples 35 to 50, wherein the non-transitory computer-readable storage medium is a mobile computing device.

[0310] Example 52: A method for processing video data, the method comprising: obtaining an encoded video bitstream, wherein the encoded video bitstream includes one or more pictures; decoding a picture in the one or more pictures based on the encoded video bitstream; determining clipping values ​​of a filter using integer operations, wherein the clipping values ​​include a clipping value for a luma component and at least one clipping value for at least one chroma component, wherein the clipping value of the luma component is determined based on a bit depth and a clipping index of the luma component, and wherein at least one clipping value of at least one chroma component is determined based on a bit depth and a clipping index of at least one chroma component; and applying the filter to the decoded picture.

[0311] Example 53: A method according to Example 52, wherein the filter includes an adaptive loop filter.

[0312] Example 54: A method according to Example 52 or 53, wherein the clipping index includes one or more clipping values ​​at positions within the picture.

[0313] Example 55: A method according to any one of Examples 52 to 54, wherein the integer operation includes applying one or more operations.

[0314] Example 56: A method according to Example 55, wherein a plurality of shift operations are applied to determine the clipping value for the luma component.

[0315] Example 57: A method according to Example 55 or 56, wherein a single shift operation is applied to determine the clipping value for the luma component.

[0316] Example 58: A method according to any one of Examples 52 to 57, wherein a single shift operation is applied to determine at least one clipping value for at least one chroma component.

[0317] Example 59: A method according to any one of Examples 52 to 58, wherein multiple shift operations are applied to determine at least one clipping value for at least one chroma component.

[0318] Example 60: A method according to any one of Examples 52 to 59, wherein a clipping value for a luma component is further determined based on a luma offset associated with a clipping index, and wherein at least one clipping value for at least one chroma component is further determined based on at least one chroma offset associated with the clipping index.

[0319] Example 61: A method according to any one of Examples 52 to 60, wherein the same equation is used to calculate the clipping value for the luma component and at least one clipping value for at least one chroma component.

[0320] Example 62: An apparatus comprising a memory configured to store video data and a processor configured to process the video data according to the method of any one of Examples 52 to 60.

[0321] Example 63: The apparatus of Example 62, wherein the apparatus comprises a decoder.

[0322] Example 64: An apparatus according to Example 62, wherein the apparatus includes an encoder.

[0323] Example 65: A method according to any one of Examples 62 to 64, wherein the device is a mobile device.

[0324] Example 66: The method of any one of Examples 62 to 65 further includes a display configured to display video data.

[0325] Example 67: The method according to any one of Examples 62 to 66 also includes a camera configured to capture one or more pictures.

[0326] Example 68: A computer readable medium having instructions stored thereon, wherein when executed by a processor, the instructions perform the method according to any one of Examples 52 to 60.

Claims

1. A method for processing video data, the method comprising: Obtaining video data including one or more pictures; Obtaining a block of pictures from the one or more pictures; determining clipping values ​​for at least one filter, the clipping values ​​comprising a first set of clipping values ​​corresponding to luma components of the block and a second set of clipping values ​​corresponding to chroma components of the block, wherein clipping values ​​of the clipping values ​​are determined by shifting a first integer left by a second integer, the second integer comprising a bit depth value of samples from the block minus an offset value associated with a clipping index value, and wherein the first set of clipping values ​​corresponding to the luma components and the second set of clipping values ​​corresponding to the chroma components are both determined by shifting the first integer left by the second integer, wherein the offset value comprises a first integer value associated with the luma component and a second integer value associated with the chroma components, the first integer value and the second integer value comprising one of 0, 3, 5, or 7; and The at least one filter is applied to the block.

2. The method according to claim 1, wherein: The at least one filter comprises an adaptive loop filter.

3. The method according to claim 1, wherein: The first integer is 1, and wherein left shifting the first integer by the second integer comprises raising 2 to a power that includes an exponent of the second integer.

4. The method according to claim 1, wherein: The clipping value corresponds to a set of filter clipping values ​​in a clipping index table, wherein different filter clipping values ​​of the set of filter clipping values ​​in the clipping index table correspond to different positions within the picture.

5. The method according to claim 1, wherein: The offset value comprises a predetermined offset value from among a plurality of predetermined offset values, and wherein the offset value is determined from among the plurality of predetermined offset values ​​based on the clipping index value.

6. The method according to claim 5, wherein: Determining the clipping value for the at least one filter comprises determining corresponding clipping values ​​for a plurality of samples from the picture, wherein each corresponding clipping value is associated with a particular sample from the plurality of samples, and wherein each corresponding clipping value is determined by left-shifting the first integer by a particular integer associated with the particular sample, the particular integer comprising a bit depth value of the particular sample less a particular offset value from the plurality of predetermined offset values.

7. The method according to claim 6, wherein: The particular offset value is determined from the plurality of predetermined offset values ​​based on a particular clipping index value associated with the particular sample.

8. The method according to claim 1, wherein: The first set of clipping values ​​for the at least one filter includes one or more luma clipping values ​​for the luma component, and the second set of clipping values ​​includes one or more chroma clipping values ​​for the chroma component, wherein the one or more luma clipping values ​​are determined by shifting the first integer left by a third integer, the third integer comprising a second result of subtracting a luma offset value associated with a second clipping index value from a bit depth value of luma samples of the picture, and wherein the one or more chroma clipping values ​​are determined by shifting the first integer left by a fourth integer, the fourth integer comprising a third result of subtracting a chroma offset value associated with a third clipping index value from a bit depth value of chroma samples of the picture.

9. The method according to claim 1, wherein: The at least one filter comprises a 5x5 adaptive loop filter and a 7x7 adaptive loop filter, wherein applying the at least one filter to the block comprises applying the 5x5 adaptive loop filter to the chroma component and applying the 7x7 adaptive loop filter to the luma component.

10. The method according to claim 1, further comprising: An encoded video bitstream including the one or more pictures is generated.

11. The method according to claim 10, wherein: The encoded video bitstream is generated based on the video data and a result of applying the at least one filter to the block.

12. The method according to claim 10, further comprising: The encoded video bitstream is sent to a decoding device, wherein the encoded video bitstream is sent together with signaling information, and the signaling information includes at least one of the offset value, the clipping index value, the filter parameter, and the adaptive loop filter flag.

13. The method according to claim 10, further comprising: The encoded video bitstream is stored.

14. The method according to claim 1, further comprising: Obtaining a coded video bitstream including the one or more pictures; identifying signaling information associated with the encoded video bitstream, the signaling information comprising at least one of the offset value, the clipping index value, a filter parameter, and an adaptive loop filter flag; as well as The blocks of the pictures are decoded from the encoded video bitstream.

15. The method according to claim 14, wherein: Decoding the block of the picture from the encoded video bitstream comprises reconstructing the block of the picture, and wherein applying the at least one filter comprises applying the at least one filter to the reconstructed block.

16. An apparatus comprising: Memory; as well as One or more processors, coupled to the memory, the one or more processors configured to: Obtaining video data including one or more pictures; Obtaining a block of pictures from the one or more pictures; determining clipping values ​​for at least one filter, the clipping values ​​comprising a first set of clipping values ​​corresponding to luma components of the block and a second set of clipping values ​​corresponding to chroma components of the block, wherein clipping values ​​of the clipping values ​​are determined by shifting a first integer left by a second integer, the second integer comprising a bit depth value of samples from the block minus an offset value associated with a clipping index value, and wherein the first set of clipping values ​​corresponding to the luma components and the second set of clipping values ​​corresponding to the chroma components are both determined by shifting the first integer left by the second integer, wherein the offset value comprises a first integer value associated with the luma component and a second integer value associated with the chroma components, the first integer value and the second integer value comprising one of 0, 3, 5, or 7; and The at least one filter is applied to the block.

17. The device according to claim 16, wherein: The at least one filter comprises an adaptive loop filter.

18. The device according to claim 16, wherein: The first integer is 1, and wherein left shifting the first integer by the second integer comprises raising 2 to a power that includes an exponent of the second integer.

19. The device according to claim 16, wherein: The clipping value corresponds to a set of filter clipping values ​​in a clipping index table, wherein different filter clipping values ​​of the set of filter clipping values ​​in the clipping index table correspond to different positions within the picture.

20. The device according to claim 16, wherein: The offset value comprises a predetermined offset value from among a plurality of predetermined offset values, and wherein the offset value is determined from among the plurality of predetermined offset values ​​based on the clipping index value.

21. The device according to claim 20, wherein: Determining the clipping value for the at least one filter comprises determining corresponding clipping values ​​for a plurality of samples from the picture, wherein each corresponding clipping value is associated with a particular sample from the plurality of samples, and wherein each corresponding clipping value is determined by left-shifting the first integer by a particular integer associated with the particular sample, the particular integer comprising a bit depth value of the particular sample less a particular offset value from the plurality of predetermined offset values.

22. The device according to claim 21, wherein The particular offset value is determined from the plurality of predetermined offset values ​​based on a particular clipping index value associated with the particular sample.

23. The device according to claim 16, wherein: The first set of clipping values ​​for the at least one filter includes one or more luma clipping values ​​for the luma component, and the second set of clipping values ​​includes one or more chroma clipping values ​​for the chroma component, wherein the one or more luma clipping values ​​are determined by shifting the first integer left by a third integer, the third integer comprising a second result of subtracting a luma offset value associated with a second clipping index value from a bit depth value of luma samples of the picture, and wherein the one or more chroma clipping values ​​are determined by shifting the first integer left by a fourth integer, the fourth integer comprising a third result of subtracting a chroma offset value associated with a third clipping index value from a bit depth value of chroma samples of the picture.

24. The device according to claim 16, wherein: The at least one filter comprises a 5x5 adaptive loop filter and a 7x7 adaptive loop filter, wherein applying the at least one filter to the block comprises applying the 5x5 adaptive loop filter to the chroma component and applying the 7x7 adaptive loop filter to the luma component.

25. The device according to claim 16, wherein: The one or more processors are configured to: An encoded video bitstream including the one or more pictures is generated.

26. The device according to claim 25, wherein The encoded video bitstream is generated based on the video data and a result of applying the at least one filter to the block.

27. The device according to claim 25, wherein: The one or more processors are configured to: The encoded video bitstream is sent to a decoding device, wherein the encoded video bitstream is sent together with signaling information, and the signaling information includes at least one of the offset value, the clipping index value, the filter parameter, and the adaptive loop filter flag.

28. The device according to claim 25, wherein One or more processors are configured to: The encoded video bitstream is stored.

29. The device according to claim 16, wherein: One or more processors are coupled to the memory, the one or more processors being configured to: Obtaining a coded video bitstream including the one or more pictures; identifying signaling information associated with the encoded video bitstream, the signaling information comprising at least one of the offset value, the clipping index value, a filter parameter, and an adaptive loop filter flag; as well as The blocks are decoded from the encoded video bitstream.

30. The device according to claim 29, wherein: Decoding the block of the picture from the encoded video bitstream comprises reconstructing the block of the picture, and wherein applying the at least one filter comprises applying the at least one filter to the reconstructed block.

31. The device according to claim 16, wherein: The apparatus is a mobile computing device.

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: Obtaining video data including one or more pictures; Obtaining a block of pictures from the one or more pictures; determining clipping values ​​for at least one filter, the clipping values ​​comprising a first set of clipping values ​​corresponding to luma components of the block and a second set of clipping values ​​corresponding to chroma components of the block, wherein clipping values ​​of the clipping values ​​are determined by shifting a first integer left by a second integer, the second integer comprising a bit depth value of samples from the block minus an offset value associated with a clipping index value, and wherein the first set of clipping values ​​corresponding to the luma components and the second set of clipping values ​​corresponding to the chroma components are both determined by shifting the first integer left by the second integer, wherein the offset value comprises a first integer value associated with the luma component and a second integer value associated with the chroma components, the first integer value and the second integer value comprising one of 0, 3, 5, or 7; and The at least one filter is applied to the block.