Adaptive loop filtering across raster scan slices

By duplicating pixels within the same slice when loop filtering across boundaries is disabled, the techniques enhance video processing efficiency and prevent system failures in raster scan configurations.

CN114097246BActive Publication Date: 2024-12-13QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080049768.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-07-06
Filing Date
2020-07-07
Publication Date
2024-12-13
Estimated Expiration
2040-07-07

AI Technical Summary

Technical Problem

Existing video processing systems encounter errors and performance degradation due to disabled adaptive loop filtering across slice boundaries in raster scan configurations, leading to system failures.

Method used

Implement techniques for adaptive loop filtering by duplicating or copying pixels from available blocks within the same slice when loop filtering across slice boundaries is disabled, using an adaptive loop filter (ALF) to maintain video processing efficiency.

Benefits of technology

Prevents system failures and improves performance by simplifying calculations and reducing encoding and decoding errors in video processing systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114097246B_ABST
    Figure CN114097246B_ABST
Patent Text Reader

Abstract

Systems, methods, and media are provided for performing loop filtering across raster scan slices. One example includes: obtaining data comprising one or more images, including obtaining a first block located in a first slice of one of the images. The example then includes: determining that a second block is located in a second slice of the images, the second block comprising one or more pixels for performing loop filtering on the pixels of the first block; and determining that loop filtering across slice boundaries is disabled. Based on this disabling, the example determines that one or more pixels of the second block are unavailable for performing loop filtering on the pixels of the first block, and copies at least one pixel of the first block or at least one pixel of an additional block of the first slice to perform loop filtering on the pixels of the first block.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001]

[0006] In general, the present disclosure relates to video coding.In some examples, aspects of the present disclosure relate to adaptive loop filter (ALF) operations and ALF filtering across raster scan slices. Background Art

[0002] Many devices and systems allow video data to be processed and output for consumption. Digital video data includes large amounts of data to meet the needs of consumers and video providers. For example, consumers of video data expect the highest quality video, with high fidelity, high resolution, high frame rate, etc. As a result, the large amounts of video data required to meet these needs burden the communication networks and devices that process and store video data.

[0003] Various video decoding techniques can be used to compress video data. Video decoding can be performed according to one or more video decoding standards. For example, video decoding standards include universal video coding (VVC), high efficiency video coding (HEVC), advanced video coding (AVC), moving picture experts group (MPEG) decoding, VP9, ​​open media alliance (AOMedia) video 1 (AV1) and other standards. Video decoding generally utilizes prediction methods (e.g., inter-frame prediction, intra-frame prediction, etc.), which utilize redundancy present in video images or sequences. An important goal of video decoding technology is to compress video data into a form using a lower bit rate while avoiding or minimizing the degradation of video quality. As evolving video services become available, coding techniques with better decoding efficiency are needed. Summary of the invention

[0004] Disclosed are systems, devices, methods, and computer-readable media for performing adaptive loop filter (ALF) operations. For example, the present invention describes techniques for performing improved ALF filtering across raster scan slices (also referred to as L-shaped slices). In an illustrative example, a method for processing video data is provided. The method includes: obtaining video data including one or more pictures; obtaining a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; determining that a second block is located in a second slice of the picture, the second block including one or more pixels for use when performing loop filtering of pixels of the first block; determining that loop filtering across a slice boundary is disabled; determining that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across the slice boundary being disabled; and duplicating at least one pixel of the first block or at least one pixel of an additional block of the first slice based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block for performing loop filtering of the pixels of the first block.

[0005] In another example, a device is provided, the device comprising a memory and one or more processors coupled to the memory (e.g., configured in a circuit). The one or more processors are configured to: obtain video data including one or more pictures; obtain a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; determine that a second block is located in a second slice of the picture, the second block comprising one or more pixels for use when performing loop filtering of pixels of the first block; determine that loop filtering across slice boundaries is disabled; determine that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across slice boundaries being disabled; and based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block, duplicate at least one pixel of the first block or at least one pixel of an additional block of the first slice for performing loop filtering of the pixels of the first block.

[0006] In another example, a non-transitory computer-readable storage medium is provided, the non-transitory computer-readable storage medium including instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to perform the following operations: obtain video data including one or more pictures; obtain a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; determine that a second block is located in a second slice of the picture, the second block including one or more pixels for use when performing loop filtering of pixels of the first block; determine that loop filtering across slice boundaries is disabled; determine that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across slice boundaries being disabled; and copy at least one pixel of the first block or at least one pixel of an additional block of the first slice for performing loop filtering of the pixels of the first block based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block.

[0007] In another example, a device is provided, the device comprising: a unit for obtaining video data including one or more pictures; a unit for obtaining a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; a unit for determining that a second block is located in a second slice of the picture, the second block comprising one or more pixels for use when performing loop filtering of pixels of the first block; a unit for determining that loop filtering across slice boundaries is disabled; a unit for determining that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across slice boundaries being disabled; and a unit for duplicating at least one pixel of the first block or at least one pixel of an additional block of the first slice for performing loop filtering of the pixels of the first block based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block.

[0008] In some aspects, loop filtering for the first block is performed using an adaptive loop filter (ALF).

[0009] In some aspects, the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of a slice that is closest to the second block.

[0010] In some aspects, the first slice is a raster scan slice and the second block is located at the lower right corner of the first block. In some aspects, the first slice is a raster scan slice and the second block is located at the lower left corner of the first block. In other aspects, the second block is located at the upper left corner of the first block. In further aspects, the second block is located at the upper right corner of the first block or the lower left corner of the first block.

[0011] In some aspects where the second block is located at a lower right corner of the first block, at least one pixel of the first block or at least one pixel of the additional block of the first slice includes one or more pixels of a left neighboring block in the first slice of the second block that is closest to the second block.

[0012] In some cases, the at least one pixel of the first block or the at least one pixel of the additional block of the first slice includes one or more pixels of an upper neighboring block of the second block in the first slice that is closest to the second block.

[0013] In some aspects, the at least one pixel of the first block or the at least one pixel of the additional block of the first slice includes one or more pixels of the second block in the first slice of the second block that is closest to the left neighboring block of the second block and one or more pixels of the second block in the first slice of the second block that is closest to the top neighboring block of the second block.

[0014] In some aspects, the first block comprises a first coding tree unit (CTU) and the second block comprises a second CTU.

[0015] In some aspects, the first slice and the second slice are obtained from a raster scan partitioning of the picture.

[0016] In some aspects, the methods, apparatus, and computer-readable media described above include generating an encoded video bitstream including the one or more pictures.

[0017] In some aspects, the coded video bitstream is generated based on the video data and a result of applying at least one filter to the first block.

[0018] In some aspects, the above-mentioned methods, apparatus and computer-readable media include: sending an encoded video bitstream to a decoding device, wherein the encoded video bitstream is sent together with signaling information, and the signaling information includes at least a limiting flag and an adaptive loop filter flag.

[0019] In some aspects, the methods, apparatus, and computer-readable media described above include storing the encoded video bitstream.

[0020] In some aspects, the above-mentioned methods, apparatus and computer-readable media include: obtaining a coded video bitstream including the one or more pictures; identifying signaling information associated with the coded video bitstream, the signaling information including at least an adaptive loop filter flag and an indication that the loop filtering across the slice boundary is disabled; and decoding the first block of the picture from the coded video bitstream.

[0021] In some aspects, decoding the first block of the picture from the coded video bitstream includes reconstructing the first block of the picture. In some aspects, the above methods, apparatus, and computer-readable media include applying at least one filter to the reconstructed first block.

[0022] This summary is neither 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 appropriate portions of the entire specification of this patent, any or all drawings and examples.

[0023] The foregoing as well as other features and embodiments will become more apparent upon reference to the following description, examples and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0024] In order to describe the manner in which the disclosure and other advantages and features of the present disclosure can be obtained, the above principles will be described in more detail with reference to specific embodiments of the above principles shown in the accompanying drawings. Understanding that these drawings depict only example embodiments of the present disclosure and are not to be considered limiting of its scope, the principles of the present invention are described and explained with additional specificity and detail through the use of the accompanying drawings, in which:

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

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

[0027] Figure 2B is a flowchart of an example method for ALF filtering according to some examples of the present disclosure;

[0028] Figure 2C is a flowchart of an example method for ALF filtering according to some examples of the present disclosure;

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

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

[0031] Figure 4A are diagrams illustrating aspects of raster scan configurations according to some examples;

[0032] Figure 4B-4D is a conceptual diagram illustrating examples of filter patterns for ALF filtering at corners of a raster scan slice (also referred to as an L-shaped slice) according to some examples;

[0033] Figure 5 is a conceptual diagram illustrating examples of filter patterns for ALF filtering at corners of a raster scan slice according to some examples;

[0034] Figure 6 is a conceptual diagram illustrating examples of filter patterns for ALF filtering at corners of multi-slice boundaries according to some examples;

[0035] Figure 7 is a conceptual diagram illustrating examples of filter patterns for classification or activity filtering at corners of a raster scan slice according to some examples;

[0036] Figure 8 is a conceptual diagram illustrating examples of filter patterns for classification or activity filtering at corners of a raster scan slice according to some examples;

[0037] Fig. 9 is a conceptual diagram illustrating examples of filter patterns for classification or activity filtering at corners of a raster scan slice according to some examples;

[0038] Fig.10 is a conceptual diagram illustrating an example of a filter pattern for classification or activity filtering at an angular boundary between three slices according to some examples;

[0039] Fig.11 is a flow chart illustrating an example method for processing video data according to some examples of the present disclosure;

[0040] Fig.12 is a block diagram illustrating an example video encoding device according to some examples of the present disclosure; and

[0041] Fig.13 is a block diagram illustrating an example video decoding device according to some examples of the present disclosure. DETAILED DESCRIPTION

[0042] Provided below are some aspects and embodiments of the present disclosure. As will be apparent to those skilled in the art, 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 in order to provide a thorough understanding of the embodiments of the present application. However, it will be apparent that each embodiment may be implemented without these specific details. The accompanying drawings and description are not intended to be restrictive.

[0043] The examples described herein solve the problem of filtering (e.g., adaptive loop filter (ALF)) implementation, which may cause errors in video processing systems and reduce performance. As described herein, loop filters (e.g., ALF filters and other types of loop filters) use filter patterns to apply filter operations to pixels of images. In some systems, pictures in video streams can be constructed as slices in a raster scan configuration. In such a system, ALF can be enabled or disabled, and when ALF is enabled, pixels across slice boundaries can be similarly enabled or disabled for ALF use. Other types of loop filters can be similarly configured about slice boundaries. For data organized by blocks for raster scan, the interface between slices in the raster scan can sometimes include four blocks intersecting at a shared corner, three of the four blocks are part of a slice, and one of the four blocks is part of a separate slice. In this configuration of the raster scan system, when ALF (and / or other loop filtering) is enabled when the use of pixels across slice boundaries is disabled, the ALF operation may encounter such a configuration: wherein the filter pattern is not configured to solve the disallowed pixels across slice boundaries. This configuration may result in a fault error that terminates the video processing operation for the picture, or may otherwise degrade performance. The examples described herein improve the operation of video processing devices (e.g., encoding and decoding hardware) by improving the functionality of raster scan operations, preventing system failures, and improving the performance of video processing systems.

[0044] The subsequent description provides only example embodiments and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the subsequent description of these exemplary embodiments will provide those skilled in the art with a feasible description for implementing the exemplary embodiments. It should be understood that various changes may be made to the functionality and arrangement of the elements without departing from the spirit and scope of the present application as set forth in the attached examples. Although ALF filtering is used herein for illustrative purposes, the techniques described herein may be applied to other types of loop filters, such as sample adaptive offset (SAO) filters, deblocking filters, and / or other types of filters.

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

[0046] 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 coding tree blocks, prediction blocks, transform blocks, and / or other appropriate blocks. Unless otherwise specified, references to "blocks" may generally refer to such video blocks (e.g., coding tree blocks, coding blocks, prediction blocks, transform blocks, or other appropriate blocks or sub-blocks, as will be understood by those of ordinary skill in the art). In addition, these blocks may also be referred to interchangeably herein as "units" (e.g., coding tree units (CTUs), coding units (CUs), prediction units (PUs), transform units (TUs), etc.). In some cases, a unit may indicate a decoding logic unit encoded in a bitstream, and a block may indicate a portion of a video frame buffer for which the process is directed.

[0047] For inter-prediction mode, the video encoder can search for a block similar to the block being encoded at another temporal position in a frame (or picture), referred to as a reference frame or reference picture. The video encoder can limit the search to a specific spatial displacement from the block to be encoded. A two-dimensional (2D) motion vector including a horizontal displacement component and a vertical displacement component can be used to locate the best match. For intra-prediction mode, the video encoder can use spatial prediction techniques to form a prediction block based on data from previously encoded neighboring blocks within the same picture.

[0048] The video encoder can determine the 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 to the prediction error (e.g., a discrete cosine transform (DCT) or other appropriate transform) to generate transform coefficients. After the transform, the video encoder can quantize the transform coefficients. The quantized transform coefficients and motion vectors can be represented using syntax elements and form a decoded representation of the video sequence together with the control information. In some cases, the video encoder can entropy decode the syntax elements to further reduce the number of bits used for its representation.

[0049] 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 prediction block and the compressed prediction error. The video decoder can determine the compressed prediction error by weighting the transform basis function using the quantization coefficients. The difference between the reconstructed frame and the original frame is called the reconstruction error.

[0050] When a raster scan configuration is used and the use of pixel data across slice boundaries is disabled for adaptive loop filtering, the techniques described herein can simplify and improve the efficiency of the adaptive loop filter used in video decoding. In some examples, the techniques herein can reduce the complexity of such calculations, reduce encoding and decoding errors, and minimize the processing burden on the computing resources of the device. In addition, the techniques described herein can be applied to any video codec (e.g., high efficiency video coding (HEVC), advanced video coding (AVC), or other appropriate existing video codecs), and / or can be an efficient decoding tool for any video decoding standard, including current video decoding standards, video standards under development, and / or future video decoding standards, such as universal video coding (VVC), joint exploration model (JEM), and / or other video decoding standards being developed or to be developed.

[0051] 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 encoding techniques described herein may be applied to video encoding in various multimedia applications, including, for example, streaming video transmission (e.g., via the Internet), television broadcasting or transmission, encoding of digital videos for storage on a data storage medium, decoding of digital videos 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.

[0052] The encoding device 104 (or encoder) may be used to encode video data using a video coding standard or protocol to generate a coded video bitstream. Examples of video coding standards include ITU-T H.261; ISO / IEC MPEG-1 Visual; ITU-T H.262 or ISO / IEC MPEG-2 Visual; ITU-T H.263, ISO / IEC MPEG-4 Visual; ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC) (including its scalable video coding (SVC) and multi-view video coding (MVC) extensions), and high efficiency video coding (HEVC) or ITU-T H.265. There are various extensions to HEVC involving multi-layer video coding, including range and screen content coding extensions, 3D video coding (3D-HEVC) and multi-view extensions (MV-HEVC) and scalable extensions (SHVC). HEVC and its extensions have been developed by the Joint Collaborative Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG) and the Joint Collaborative Team on 3D Video Coding Extension Development (JCT-3V).

[0053] MPEG and ITU-T VCEG have also formed a Joint Exploration Video Team (JVET) to explore and develop new video coding tools for the next generation video coding standard, which is named Versatile Video Coding (VVC). The reference software is called the VVC Test Model (VTM). The goal of VVC is to provide significant improvements in compression performance over the existing HEVC standard, thereby assisting the deployment of higher quality video services and emerging applications (e.g., such as 360° omnidirectional immersive multimedia, high dynamic range (HDR) video, etc.).

[0054] 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 coding standards, such as AVC, MPEG, JPEG (or other coding standards for still images), their extensions, or other appropriate coding 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 coding 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.

[0055] Reference 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 archiving unit 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 such sources, or any other suitable video source.

[0056] 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, which in some cases is part of a video. 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 coding specifications, a video sequence may include a series of pictures. A picture may include three sample arrays, which are represented as SL, SCb, and SCr. SL is a two-dimensional array of luma samples, SCb is a two-dimensional array of Cb chroma samples, and SCr is a two-dimensional array of Cr chroma samples. Chroma samples may also be referred to as "chroma" samples in this article. In other cases, a picture may be monochrome and may include only an array of luma samples.

[0057] The encoder engine 106 (or encoder) of the encoding device 104 encodes the video data to generate a coded video bitstream. In some examples, the coded video bitstream (or "video bitstream" or "bitstream") is a series of one or more decoded video sequences. The decoded video sequence (CVS) includes a series of access units (AUs) starting from an AU having a random access point picture in the base layer and having certain attributes until the next AU having a random access point picture in the base layer and having certain attributes, and excluding the next AU. 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, a random access point picture (where the RASL flag is equal to 0) does not start a CVS.

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

[0059] 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 (described below) of decoded picture data, and the non-VCL NAL unit includes control information related to one or more decoded pictures. In some cases, the NAL unit may be referred to as a packet. The HEVC AU includes: a VCL NAL unit containing decoded picture data, and a non-VCL NAL unit corresponding to the decoded picture data (if any).

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

[0061] 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 for 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).

[0062] 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 prediction or intra-block copy prediction (when available or enabled for use). A luminance PB and one or more chroma PBs together with associated syntax form a prediction unit (PU). For inter prediction, a set of motion parameters (e.g., one or more motion vectors, reference indices, etc.) is signaled in the bitstream for each PU and is used for inter 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, to which the same two-dimensional transform is applied to decode the prediction residual signal. A transform unit (TU) represents a TB of luminance and chroma samples and corresponding syntax elements.

[0063] The size of the CU corresponds to the size of the decoding mode, and in some cases may be a square shape. For example, the size of the CU may include 8x 8 samples, 16x 16 samples, 32x 32 samples, 64x 64 samples, or any other appropriate size up to the size of the corresponding CTU. The phrase "N x N" is used herein to refer to the pixel size of the video block in the vertical and horizontal dimensions (e.g., 8 pixels x 8 pixels). The pixels in the block may be arranged in rows and columns. In some examples, the block may not have the same number of pixels in the horizontal direction as in the vertical direction. The syntax data associated with the CU may describe, for example, the partitioning of the CU into one or more PUs. The partitioning mode may differ between whether the CU is encoded in an intra-frame prediction mode or an inter-frame prediction mode. The PU may be partitioned into a non-square shape. The syntax data associated with the CU may also, for example, describe the partitioning of the CU into one or more TUs according to the CTU. The TU may be square or non-square in shape.

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

[0065] Once the picture of the video data is partitioned into CUs, the encoder engine 106 predicts each PU using a prediction mode. The prediction unit or prediction block is then subtracted from the original video data to obtain a residual (described below). For each CU, the prediction mode can be signaled in the bitstream using syntax data. The prediction mode may include intra-frame prediction (or intra-picture prediction) or inter-frame prediction (or inter-picture prediction). Intra-frame prediction exploits the correlation between spatially adjacent samples within a picture. For example, using intra-frame prediction, each PU is predicted from adjacent image data in the same picture, using, for example, DC prediction to find an average value for the PU, using plane prediction to fit a plane surface to the PU, using directional prediction to infer from adjacent data, or using any other appropriate prediction type. Inter-frame prediction uses temporal correlation between pictures to derive motion compensated prediction for blocks of image samples. For example, using inter-frame prediction, each PU is predicted from image data in one or more reference pictures (before or after the current picture in output order) using motion compensated prediction. For example, a decision can be made at the CU level whether to use inter-picture prediction or intra-picture prediction to decode a picture area.

[0066] The encoder engine 106 and the decoder engine 116 (described in more detail below) may be configured to operate according to VVC. In VVC, a video decoder (such as the encoder engine 106 and / or the decoder engine 116) may partition a picture into a plurality of coding tree units (CTUs). The video decoder may partition the CTU according to a tree structure such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure removes the concept of multiple partition types, such as the distinction between CU, PU, ​​and TU in HEVC. The QTBT structure includes two levels, including: a first level partitioned according to quadtree partitioning, and a second level partitioned according to binary tree partitioning. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of the binary tree correspond to the coding units (CUs).

[0067] In the MTT segmentation structure, blocks can be segmented using quadtree segmentation, binary tree segmentation, and one or more types of ternary tree segmentation. Ternary tree segmentation is a segmentation in which a block is divided into three sub-blocks. In some examples, ternary tree segmentation divides a block into three sub-blocks without dividing the original block by the center. The segmentation types in MTT (e.g., quadtree, binary tree, and ternary tree) can be symmetric or asymmetric.

[0068] In some examples, the video coder may use a single QTBT or MTT structure to represent each of the luma and chroma components, while in other examples, the video coder may use two or more QTBT or MTT structures, such as one QTBT or MTT structure for the luma component and another QTBT or MTT structure for the two chroma components (or two QTBT and / or MTT structures for respective chroma components).

[0069] The video decoder may be configured to use quadtree segmentation, QTBT segmentation, MTT segmentation, or other segmentation structures in accordance with 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 decoders configured to use quadtree segmentation or also use other types of segmentation.

[0070] 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. I slices (intra-frame, independently decodable) are slices of a picture that are decoded only by intra-frame prediction, and are therefore independently decodable because I slices only require data within the frame to predict any prediction unit or prediction block of the slice. P slices (unidirectional predicted frames) are slices of a picture that can be decoded using intra-frame prediction and unidirectional inter-frame prediction. Each prediction unit or prediction block within a P slice is decoded using 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, and therefore the reference sample comes from only one reference area of ​​one frame. B slices (bidirectional predicted frames) are slices of a picture that can be decoded using intra-frame prediction and inter-frame prediction (e.g., bi-prediction or uni-prediction). The prediction unit or prediction block of a B slice may be bidirectionally predicted from two reference pictures, where each picture contributes a reference region, and the sample sets of the two reference regions are weighted (e.g., with equal weights or with different weights) to generate a prediction signal for the bidirectional prediction block. As explained above, the slices of a picture are coded independently. In some cases, a picture may be coded only as one slice.

[0071] As mentioned above, intra-picture prediction exploits the correlation between spatially adjacent samples within the picture. Inter-picture prediction uses the temporal correlation between pictures in order to derive motion compensated predictions for blocks of image samples. Using a translational motion model, the position of a block in a previously decoded picture (reference picture) is represented 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 referred to 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 referred to as fractional pixel precision or non-integer precision) to more accurately capture the motion of the underlying object without being limited to the integer pixel grid of the reference frame.

[0072] The precision of the motion vector can be expressed 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 values ​​below a pixel). When the corresponding motion vector has fractional sample precision, interpolation is applied to the reference picture to derive the 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 a reference index (refIdx) for 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 uni-prediction and bi-prediction.

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

[0074] In the case of inter prediction using uni-prediction, a motion parameter set (Δx0, y0, refIdx0) is used to generate motion compensated prediction from a reference picture. For example, in the case of uni-prediction, each prediction block uses at most one motion compensated prediction signal and generates P prediction units.

[0075] The PU may include data related to the prediction process (e.g., motion parameters or other appropriate data). For example, when the PU is encoded using intra prediction, the PU may include data describing the intra prediction mode for the PU. As another example, when the PU is encoded using inter prediction, the PU may include data defining a motion vector for the PU. The data defining the motion vector for the PU may describe, for example, the horizontal component of the motion vector (Δx), the vertical component of the motion vector (Δy), the resolution for the motion vector (e.g., integer precision, quarter-pixel precision, or eighth-pixel precision), the reference picture to which the motion vector points, a reference index, a reference picture list for the motion vector (e.g., list 0, list 1, or list C), or any combination thereof.

[0076] 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 the current pixel block (PU) being decoded and a prediction block (e.g., a predicted version of the current block) used to predict the current block. For example, after generating a prediction block (e.g., using inter-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 quantizes the difference between the pixel values ​​of the current block and the pixel values ​​of the prediction block. In some examples, the residual block may be represented by a two-dimensional block format (e.g., a two-dimensional matrix or array of pixel values). In such an example, the residual block is a two-dimensional representation of pixel values.

[0077] Any residual data that may remain after performing the prediction is transformed using a block transform, which may be based on a discrete cosine transform, a discrete sine transform, an integer transform, a wavelet transform, other appropriate transform functions, or any combination thereof. In some cases, one or more block transforms (e.g., sizes 32x32, 16x16, 8x8, 4x4, or other appropriate sizes) may be applied to the residual data in each CU. In some examples, TUs may be used for the transform and quantization process implemented by the encoder engine 106. A given CU with one or more PUs may also include one or more TUs. As described in further detail below, the residual values ​​may be transformed into transform coefficients using a block transform, and may be quantized and scanned using a TU to produce serialized transform coefficients for entropy coding.

[0078] In some examples, after intra prediction or inter prediction decoding using the PU of the CU, the encoder engine 106 can calculate residual data for the TU of the CU. The PU may include pixel data in the spatial domain (or pixel domain). The TU may include coefficients in the transform domain after applying the block transform. As previously described, the residual data may correspond to a pixel difference between a pixel of an unencoded picture and a predicted value corresponding to the PU. The encoder engine 106 may form a TU including the residual data for the CU, and may then transform the TU to generate transform coefficients for the CU.

[0079] The encoder engine 106 may perform quantization of the transform coefficients. Quantization provides further compression by quantizing the transform coefficients to reduce the amount of data used to represent the coefficients. For example, quantization may reduce the bit depth associated with some or all of the coefficients. In one example, a coefficient having an n-bit value may be rounded down to an m-bit value during quantization, where n is greater than m.

[0080] Once quantization is performed, the decoded video bitstream includes quantized transform coefficients, prediction information (e.g., prediction mode, motion vectors, block vectors, etc.), segmentation information, and any other appropriate data (such as other syntax data). The different elements of the decoded video bitstream can then 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 generate 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 another appropriate entropy coding technique.

[0081] The output 110 of the encoding device 104 may send the NAL units constituting the encoded video bitstream data to the decoding device 112 of the receiving device over the communication link 120. The input 114 of the decoding device 112 may receive the NAL units. The communication link 120 may include a channel provided by a wireless network, a wired network, or a combination of a wired network and a wireless network. The wireless network may include any wireless interface or combination of wireless interfaces and may include any suitable wireless network (e.g., the Internet or other wide area network, a packet-based network, a WiFi network, or a wireless network). TM , Radio Frequency (RF), UWB, WiFi Direct, Cellular, Long Term Evolution (LTE), WiMax TMThe wired network may include any wired interface (e.g., optical fiber, Ethernet, power line Ethernet, coaxial cable Ethernet, digital signal line (DSL), etc.). Various devices 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.

[0082] In some examples, encoding device 104 may store the encoded video bitstream data in storage unit 108. Output 110 may obtain the encoded video bitstream data from encoder engine 106 or from storage unit 108. Storage unit 108 may include any of a variety of distributed or locally accessed data storage media. For example, storage unit 108 may include a hard drive, a storage disk, a flash memory, a 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.

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

[0084] 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 distinct from the receiving device.

[0085] In some examples, the video encoding device 104 and / or the video decoding device 112 may be integrated with the audio encoding device and the audio decoding device, respectively. The video encoding device 104 and / or the video decoding device 112 may also include other hardware or software for implementing the 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 thereof. In some cases, the video encoding device 104 and the video decoding device 112 may be integrated as part of a combined encoder / decoder (codec) in the respective devices. hereinafter referred to as Fig.12 An example of specific details of the encoding device 104 is described below. Fig.13 An example of specific details of the decoding device 112 is described.

[0086] Extensions to the HEVC standard include a multi-view video coding extension called MV-HEVC and a scalable video coding extension called SHVC. The MV-HEVC and SHVC extensions share the concept of layered coding, in which different layers are included in the coded video bitstream. Each layer in the decoded video sequence is addressed by a unique layer identifier (ID). A layer ID may be present in the header of a NAL unit to identify the layer to which the NAL unit is associated. In MV-HEVC, different layers may represent different views of the same scene in a video bitstream. In SHVC, different scalable layers are provided to represent video bitstreams at different spatial resolutions (or picture resolutions) or different reconstruction fidelity. Scalable layers may include a base layer (where layer ID = 0) and one or more enhancement layers (where layer ID = 1, 2, ... n). The base layer may conform to the profile of the first version of HEVC and represent the lowest available layer in the bitstream. Compared to the base layer, the enhancement layer has increased spatial resolution, temporal resolution or frame rate and / or reconstruction fidelity (or quality). Enhancement layers are organized hierarchically and may or may not be dependent on lower layers. In some examples, different layers may be coded using a single standard codec (e.g., all layers are coded using HEVC, SHVC, or other coding standards). In some examples, different layers may be coded using a multi-standard codec. For example, the base layer may be coded using AVC, while one or more enhancement layers may be coded using SHVC and / or the MV-HEVC extension of the HEVC standard.

[0087] Typically, a layer includes a set of VCL NAL units and a corresponding set of non-VCL NAL units. A specific layer ID value is assigned to the NAL unit. Layers can be hierarchical in the sense that a layer can depend on a lower layer. A layer set refers to a self-contained set of layers represented in a bitstream, which means that the layers in the layer set can depend on other layers in the layer set during the decoding process, but do not depend on any other layer for decoding. Therefore, each layer in the layer set can form an independent bitstream that can represent the video content. The set of layers in the layer set can be obtained from another bitstream through the operation of the sub-bitstream extraction process. When the decoder wishes to operate according to certain parameters, the layer set can correspond to the group of layers to be decoded.

[0088] As mentioned above, the HEVC bitstream includes a set of NAL units, which include VCL NAL units and non-VCL NAL units. The VCL NAL unit includes decoded picture data that forms a decoded video bitstream. For example, there is a bit sequence that forms a decoded video bitstream in the VCL NAL unit. In addition to other information, the non-VCL NAL unit may also contain a parameter set with high-level information related to the encoded video bitstream. For example, the 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 the parameter set include bit rate efficiency, error resilience, and providing a system layer interface. Each slice references a single valid PPS, SPS, and VPS to access information that the decoding device 112 can use to decode the slice. An identifier (ID) can be 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. Using these IDs, a valid parameter set for a given slice can be identified.

[0089] 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 may also refer to the same PPS. The SPS includes information applicable to all pictures in the same decoded video sequence (CVS) or bitstream. As previously described, a decoded video sequence is a series of access units (AUs) starting with a random access point picture (e.g., an instant decoding reference (IDR) picture or a broken link access (BLA) picture or other appropriate random access point picture) in the base layer and having certain properties (as described above) until the next AU (or the end of the bitstream) with a random access point picture in the base layer and having certain properties and not including the next AU. The information in the SPS may not change between pictures in a decoded video sequence. Pictures in a decoded video sequence may use the same SPS. The VPS includes information applicable to all layers in a decoded video sequence or bitstream. The VPS includes a syntax structure having syntax elements applicable to the entire decoded video sequence. In some examples, the VPS, SPS, or PPS may be sent in-band with the coded bitstream. In some examples, the VPS, SPS, or PPS may be sent out-of-band in a different transport than the NAL units containing the coded video data.

[0090] The video bitstream may also include a supplemental enhancement information (SEI) message. For example, a SEI NAL unit may be part of a video bitstream. In some cases, the SEI message may contain information that is not needed for the decoding process. For example, the information in the SEI message may not be necessary for the decoder to decode the video picture of the bitstream, but the decoder may use the information to improve the display or processing of the picture (e.g., the decoded output). The information in the SEI message may be embedded metadata. In an illustrative example, the decoder side entity may use the information in the SEI message to improve the visibility of the content. In some cases, certain application standards may force the presence of such SEI messages in the bitstream, so that quality improvements can be brought to all devices that comply with the application standard (e.g., carrying frame encapsulation SEI messages for frame-compatible planar stereoscopic 3DTV video formats, wherein SEI messages are carried for each frame of the video, processing recovery point SEI messages, and using pan scanning in DVB to scan rectangular SEI messages).

[0091] Figure 2A2 is a simplified diagram illustrating an example system 200 for applying an ALF 206 to an input block 202 in a frame. The block 202 may include color components 204 for 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 blue difference and red difference chroma signals associated with the block 202, respectively.

[0092] The ALF 206 having ALF filter coefficient 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 ​​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 individually, and when processing a block in a frame (e.g., 202), the video encoder or decoder may apply the ALF filter coefficients from the ALF 206 to the block. The video encoder or decoder may similarly apply the ALF filter coefficient values ​​to other blocks when processing them. In some examples, ALF 206 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 respect 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 previously explained, in some examples, ALF 206 may be applied at a block level. For example, in some cases, ALF 206 may be applied at a CTU or CU level. In other examples, ALF 206 may be applied at a frame level and / or to other portions of a 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 luma values ​​for an output block 212, and 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 frame that includes 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 may be used along with other similarly processed output blocks to generate a reconstructed frame with ALF filtering.

[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. Then, the encoded bit stream can be used to signal the ALF flag 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, 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 for the block in the reconstructed image and / or the reconstructed image.

[0096] Figure 2B 2 is a flow chart of an example method 220 for ALF filtering with modifications for filtering near a raster scan slice boundary when filtering with pixels from across a raster scan slice boundary is disabled. In various examples, the operations of method 220 may be performed by an encoding or decoding device (e.g., a video processing device). In this example, at block 222, the video processing device may receive an input frame. As previously explained, the input frame may include color components, such as luminance and chrominance components. In some examples, the input frame may include blocks in a frame encoded by 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 block 224, the encoding device 104 may classify the luma components in the frame. In some examples, the encoding device 104 may also classify the chroma components in the frame. Classification may be applied to the luma components at a block level (e.g., at a 4x4 block level) or a sample level (for each sample of the frame). In some cases, the classification may 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 4x4 blocks in the entire frame may be classified based on 1D Laplacian directions (e.g., up to 5 directions) and 2D Laplacian activities (e.g., up to 5 activity values), where N represents a number greater than 0. In some cases, the encoding device 104 may calculate the direction Dir b and unquantified activity b In some cases, Act b Further quantized to the range of 0 to 4 (inclusive).

[0098] As described herein, examples may include restrictions on the use of data across slice boundaries. Such disabling of loop filtering across slice boundaries may include restrictions on the data to be used in classification operations. As described in detail below, when performing classification operations on raster scan data with the use of cross-slice data disabled, examples may replace data from pixels across slice boundaries from the center pixel group with duplicate pixels from the slice in which the center pixel group is located. Additional details of such duplication operations are described below.

[0099] In some cases, in addition to the horizontal and vertical gradients used in the existing ALF, the 1D Laplacian operator can also be used to calculate the values ​​of the two diagonal gradients. From the following equations (1) to (4), it can be seen that the sum of the gradients of all pixels within the 8x8 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., the 4x4 block from the frame). Each pixel is associated with four gradient values, where the vertical gradient is represented by g v The horizontal gradient is represented by g h Indicates that the 135-degree diagonal gradient is represented by g d1 denoted by g, and the 45-degree diagonal gradient is represented by g d2 express.

[0100]

[0101] V k,l =|2R(k,l)-R(k,l-1)-R(k,l+1)|, when k and j are both even numbers or neither k nor j is even; otherwise it is 0.

[0102]

[0103] H k,l =|2R(k,l)-R(k-1,l)-R(k+1,l)|, when k and j are both even numbers or neither k nor j is an even number; otherwise it is 0.

[0104]

[0105] D1 k,l =|2R(k,l)-R(k-1,l-1)-R(k+1,l+1)|, when k and j are both even numbers or neither k nor j is an even number; otherwise it is 0.

[0106]

[0107] D2 k,l =|2R(k,l)-R(k-1,l+1)-R(k+1,l-1)|, when k and j are both even numbers or neither k nor j is an even number; otherwise it is 0.

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

[0109]

[0110] in

[0111] in

[0112] By comparing the ratio of the detected horizontal and vertical gradients to the diagonal gradient, five directional modes (e.g., Dir in the range [0,4] (inclusive)) are defined in the following equation (7). b ). The following table 1 describes Dir b The value and its physical meaning.

[0113]

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

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

[0116]

[0117] In some cases, the Act value may be further quantized to a range of 0 to 4 (inclusive), and the quantized value is represented as The following describes the process from the activity value Act to the activity index quantification process.

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

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

[0120]

[0121] When NUM_ENTRY is set to 16 (or other suitable value), ScaleFactor is set to 64 (or other suitable value), shift is set to (4 + internal decoding 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.

[0122] In general, each 4x4 luma block can be classified into one of 25 (5x5) categories, and the Dir b and Act b The group index can be denoted as C and can be set to in Act b Quantified value of .

[0123] At block 226, the processing device may determine ALF coefficient 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 5x5, 7x7, and 9x9 diamonds. Figure 3A and 3B Example ALF filters are shown that can be applied for chroma and luma filtering.

[0124] Reference Figure 3A, shows an example filter 300 for chroma filtering. The filter 300 in this example is a 5x5 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 coefficient values ​​(e.g., C0 to C6) to be applied to the corresponding chroma samples. Each cell (302 to 326) may include filter coefficient values ​​applied to the chroma samples associated with the cell.

[0125] Reference Figure 3B , shows an example filter 330 for luma filtering. The filter 330 in this example is a 7x7 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 coefficient values ​​(e.g., C0 to C12) to be applied to the corresponding luma samples. Each cell (332 to 380) may include filter coefficient values ​​applied to the luma samples associated with the cell.

[0126] In some examples, a 5x5 filter (such as Figure 3A The filter 300 shown in FIG. 300 may be applied to the chrominance components, and a 7x7 filter such as Figure 3B The filter 330 shown may be applied to the luminance component.

[0127] For example, refer to Figure 3A , each cell (302 to 326) in filter 300 can have a filter coefficient f(k, l), and each of these values ​​in the cell can be applied to a corresponding pixel. In some cases, the center of filter 300 (e.g., cell 314) can be placed on or applied to a pixel, and the remaining cells of filter 300 (e.g., cells 302-312 and 316-326) can be placed on or applied to surrounding or adjacent pixels.

[0128] In addition, refer to Figure 3B, each cell (332 to 380) in filter 330 can have a filter coefficient f(k, l), and each of these values ​​in the cell can be applied to a corresponding pixel. In some cases, the center of filter 330 (e.g., cell 356) can be placed on or applied to a pixel, and the remaining cells of filter 330 (e.g., cells 332-354 and 358-380) can be placed on or applied to surrounding or adjacent pixels. In both cases, an example implementation can have a configuration for preventing filter values ​​from being applied to pixels across slice boundaries. In such an implementation, it is necessary to prevent errors in the operation of the filter by limiting the values ​​of the blocked filter positions across slices. For example, if cells 338, 346, and 348 are configured to be applied to pixels in a different slice than the pixels of the rest of the filter (e.g., the filter operates at a corner between slices as part of a raster scan operation, as described below for Figure 4A ), then those unit positions in the filter require replacement values ​​because the filter is blocked from accessing the corresponding pixels (e.g., due to restrictions on applying the ALF across slice boundaries). The examples described herein provide such replacement values ​​by copying values ​​from pixels in the same slice and using the values ​​in the filter positions in place of data from the unavailable cross-slice pixels.

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

[0130] In some examples, the pixel values ​​generated for the samples by the ALF filtering method 220 may be compared to the pixel values ​​of the original samples 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 processing device may enable chroma filtering for the frame.

[0131] In some cases, the processing device may signal an ALF flag using the encoded bitstream. The signaled ALF flag may indicate to the processing device whether ALF filtering is enabled or disabled for a particular frame. Such signaling may also be used to indicate whether ALF filtering is allowed (e.g., when enabled) to access pixel data from across slice boundaries.

[0132] return Figure 2B, when an output frame is generated by an encoding device (e.g., device 104), the image data may be sent in an encoded bitstream to a decoding device 112. As previously explained, the encoded bitstream may include signaling information. The decoding device 112 may receive the encoded bitstream, decode the bitstream, and, when ALF filtering is enabled, use the signaling information to apply such filtering to frames in the bitstream.

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

[0134] 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. The ALF flag may indicate whether luma filtering is enabled (or disabled), whether both luma filtering and chroma filtering are enabled (or disabled), or whether luma and / or chroma components are enabled (or disabled). If luma filtering is enabled, the ALF filtering performed by the decoding device 112 as described herein may include luma filtering. If both luma and chroma filtering are enabled, the ALF filtering performed by the decoding device 112 as described herein may include luma and chroma filtering. If chroma filtering is enabled, the ALF filtering performed by the decoding device 112 as described herein may include chroma filtering. If the ALF flag is on (indicating that ALF filtering is enabled for any aspect of the video stream), at block 245, the decoding device 112 may check the flag to determine whether the enabled ALF filtering is allowed to use data from another slice across a slice boundary. If the use of such data is enabled, then in operation 260, processing may proceed in a standard manner, wherein a filter unit (e.g., Figure 3A and 3B If the restriction that prevents the use of such cross-slice pixel data during ALF filtering is enabled (e.g., turned on), the decoding device 112 proceeds in block 245 with operations that are modified to prevent errors in raster scan ALF filtering when cross-slice pixel use is disabled, where the decoding device 112 is configured to classify pixels in the frame. These operations may use replacement (e.g., repeated) pixels, as further described below.

[0135] At block 248, the decoding device 112 may determine an ALF coefficient for each pixel in the frame, and at block 250, the decoding device 112 may apply an ALF filter having the ALF coefficient to the frame. The decoding device 112 may be as previously described with respect to Figure 2B The ALF coefficients are determined and applied as explained in blocks 226 and 228 shown in FIG. 1 , including the use of repeated pixel data when necessary to prevent errors in situations where data from across slice boundaries is disabled.

[0136] 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 explained, the output frame may include pixel values ​​for luminance and chrominance components calculated based on filter coefficients. When pixel data for ALF filtering from across slice boundaries is disabled, the calculation may also be based on repeated pixel data from the slice containing the pixel being processed (e.g., from repetition of pixels within the slice).

[0137] As described in more detail below, when loop filtering across slice boundaries is disabled, certain pixels used for loop filtering are unavailable for loop filtering operations. These loop filtering operations include classification operations (e.g., in blocks 224 and 246) and filters applied in blocks 228 and 250. Thus, the examples described herein for copying pixels to replace unavailable pixels may be performed both for classification filtering operations and for determining loop filter values ​​to be applied as part of filtering (e.g., ALF) of image data.

[0138] Figure 4A 400 is a diagram showing a picture 400 with a raster scan configuration, wherein slices 402, 402, and 403 of picture 400 may include tiles in different rows. As shown, picture 400 includes tiles 411, 412, 412, 414, 414, 415, 416, 417, 418, 419, 420, 421, and 422. Each of the 12 tiles includes a CTU and is divided between the slices shown. Slice 401 includes tiles 411-415, slice 402 includes tiles 416-420, and slice 403 includes tiles 421 and 422. For tiles and CTUs that border tiles and CTUs in other slices, the edge is considered to be a boundary with the other slices. For example, tiles 412 , 413 , and 415 share slice boundaries with tile 416 at the corners with CTU 431 , CTU 432 , CTU 433 , and CTU 434 .

[0139] Figure 4B401 and 402, wherein CTU 431, 432 and 433 are in slice 401, and CTU 434 is in slice 402. In each CTU are pixels with image data (e.g., luminance and chrominance) organized in a grid based on the specific CTU, tile and slice structure of picture 400. When applying an ALF filter (e.g., a 7x7 filter as shown in the figure, where the center of the filter is applied at pixel 440), a loop is performed to apply the filter at each pixel. The filter applied at each pixel uses not only pixels, but also surrounding pixels to process image data and improve image quality. In some examples, in order to achieve more efficient operation, the ALF filter can be prevented from using pixel data from other slices. When all pixels in the filter pattern are in the same slice, this does not cause problems.

[0140] However, as shown, at the corners of slices 401 and 402, pixels 442, 443, and 444 are in slice 402, and the remaining pixels 440 and 441 are in slice 401. When a filter having a 7x7 value as shown is set to be applied to the pixel at the bottom right corner of CTU 431 at the center of the filter pattern (e.g., Figure 4B When ALF is disabled across slice boundaries, the filter cannot use the image data for pixels 442-444. Figure 4C 4, where pixels from CTU 434 in slice 402 are not available for use with other pixels 440 and 441 for ALF filtering. In the absence of data for this cross-border slice portion of filter data, an error will occur because without all units (e.g., Figure 3A and 3B In the case of data in the unit shown), the filter cannot operate correctly.

[0141] Various techniques can be used to solve such problems. In one example, unavailable pixels from across slice boundaries can be replaced in the filter with repeated pixels from the nearest pixel in the upper CTU. The upper CTU can be referred to as the upper neighboring CTU across the slice boundary. In this case, the upper neighboring CTU of CTU 434 would be CTU 432.

[0142] In a second example, the unavailable pixel from CTU 434 may duplicate the unavailable pixel in the nearest pixel in the left CTU to the left of the CTU that includes the unavailable pixel. The left CTU may also be referred to as the left neighboring CTU across the slice boundary. Figure 4C, the CTU having unavailable pixels is CTU 434, and the left neighboring CTU for CTU 434 is CTU 433. Figure 4D This example is specifically shown. Figure 4D As shown, the missing pixels of CTU 433 for the filter mode shown are replaced with a copy of the nearest pixel from the left neighboring CTU. In this case, the nearest pixel in the left neighboring CTU 443 for missing pixels 442 and 443 is pixel 445, and the nearest pixel in the left neighboring CTU 443 for missing pixel 444 is pixel 446. In order to provide data to the filter to allow the filter to operate, pixel 445 is used to generate repeated pixel 447 and repeated pixel 448, and pixel 446 is used to generate repeated pixel 449. From the left neighboring pixels (or right neighboring pixels, such as Figure 6 Copying the nearest pixel (as shown in FIG. 1 , and possibly in other raster scan or L-shaped slice boundaries) simplifies the computations used to generate missing data for the ALF filter, while also allowing the filter to operate with minimal impact on the quality of the image generated by the filter operation. Such an operation can be implemented simply by replacing the pixel data at the (x, y) coordinate with the pixel data at the (nearest x, y) coordinate in the slice when the condition that makes the pixel unavailable for filtering applies. For example, in Figure 4D In , if the pixel at (x, y) coordinates is not available (pixel in CTU 434), then (nearest x, y in slice) is equal to (x, y of pixel 440).

[0143] In addition to the above example (e.g., using the nearest pixel from the neighboring CTU), other implementations are possible. In another example, the unavailable pixel in CTU 434 can be set equal to a linear combination of one pixel from the upper neighbor CTU (e.g., CTU 432) and one pixel from the left neighbor CTU (e.g., CTU 433), as p = (wL*pL+wA*pA) / (wL+wA), where wL and wA are two weights that may depend on the distance to the neighboring CTU (e.g., pixel 449 will have different distances to CTU 432 and CTU 433), and where pL and pA are pixels from the left CTU and the upper CTU, respectively.

[0144] In another example, a mixture of the above examples can be used. For example, the nearest pixel from any neighbor can be used. In such an example, pixel 449 can use data from slice 433, and pixel 448 can use data from slice 432. In such an example, pixel 447 can use data from a default CTU position (e.g., left, top, right, bottom, etc.), or a linear combination of the nearest pixels can be used. In yet another example, pixels that are not in the current CTU row (or other block row) can be filled symmetrically or asymmetrically, pixels that are not in the current CTU column (or other block column) can be filled symmetrically or asymmetrically, or unavailable pixels in the CTU can be derived by applying intra-frame prediction.

[0145] Figure 5 is a diagram showing an example of a nearest side neighbor (eg, a left neighbor or a right neighbor) being applied to an additional slice configuration. Figure 5 4 , the center pixel of the filter is pixel 543, and CTU 531 is in slice 501 separate from CTU 532, CTU 533, and CTU 534, all of which are in slice 502. In this case, when conditions apply that make pixels in slice 501 unavailable for performing ALF using pixels in slice 502, the missing pixels in slice 501 are replaced using pixels of the nearest right neighbor of each missing pixel (e.g., using pixels copied from available pixels). In this case, duplicate pixel 544 is generated from pixel 541, and duplicate pixel 545 is generated by copying pixel 542. Wherein, in the aspect of FIG. 4 , the first slice may be a raster scan slice, in which the second block is located at the lower right corner of the first block, and the second block is located at the lower right corner of the first block. Figure 5 In the example, the first slice may be a raster scan slice, wherein the second block is located at the upper left corner of the first block. Additional examples not specifically shown may be implemented using the first slice as a raster scan slice, wherein the second block is located at the lower left corner of the first block or the upper right corner of the first block.

[0146] Figure 6 is a diagram showing another situation that may occur in a raster scan configuration, where a corner point has a point where there are three different slices at the boundary. Figure 6In the example of , CTU 631 is in the first slice 601, CTUs 632 and 633 are in the second slice 602, and CTU 634 is in the third slice 603. In this example, the missing pixels from the ALF filter of CTU 631 are replaced with the nearest right neighbor CTU 632 pixels, and the missing pixels from the ALF filter of CTU 634 are replaced with the nearest left neighbor CTU 633 pixels. The copying results in repeated pixel 661 copied from pixel 641, repeated pixel 662 copied from pixel 642, repeated pixel 663 copied from pixel 643, repeated pixel 664 copied from pixel 644, and repeated pixel 665 copied from pixel 645. In this case, the lowest pixel in the filter pattern is copied from the nearest left neighbor CTU 633 pixel in the filter pattern. In other examples, the nearest neighbor pixels outside the filter pattern (which are in Figure 6 In some such examples, pixels that are not in the current row or column with the nearest CTU pixel may be filled symmetrically or asymmetrically or may be calculated using intra prediction. Such pixels outside the column or row with the nearest pixel from a neighboring CTU with available pixels are treated differently, allowing efficient calculations for close pixels in a shared row or column, but more complex calculations for pixels that are farther away, or have a more complex positional relationship to the pixel to be copied, thereby preventing excessive image quality degradation due to the use of duplicate pixels.

[0147] In addition to the effects on ALF filter calculations described in FIGS. 4-6 , configurations that prevent the use of pixel data from different slices may also affect other active calculations, such as those used for classification as described above. Thus, these calculations used to classify pixels or subgroups of pixels within a block may involve duplication of pixels within a slice to replace pixels that are unavailable due to the disabled use of pixels from other slices. Classification may be used to select a loop filter, and the loop filter may then also use pixel duplication, as described above.

[0148] Figure 7 is a diagram showing an example of a filter pattern for classification or activity filtering at the corners of a raster scan slice. Figure 7 , a gradient is calculated for a pixel 710 in a sub-block at a slice boundary between a slice 701 and a slice 702, wherein CTUs 731, 732, and 733 are in slice 701, and CTU 734 is in slice 702. The gradient calculation for pixel 710 may use surrounding pixels 720. However, in this case, the use of pixels across the slice boundary is prohibited so that pixel 730 is unavailable.

[0149] Figure 7A 7x7 filter pattern for pixel 710 is shown. Various techniques can be used to address the unavailability of pixel 730, corresponding to the example techniques described above for replacing missing values ​​in the ALF filter. In a first example, the unavailable pixel 730 is replaced with a copy of the nearest pixel in the upper adjacent CTU (CTU 732). In a second example, the unavailable pixel is replaced with a copy from the left adjacent CTU (CTU 733). In a third example, as described above, according to p=(wL*pL+wA*pA) / (wL+wA), the unavailable pixel can be set equal to a linear combination of a pixel from the upper CTU and a pixel from the adjacent left CTU, where wL and wA are two weights that can depend on the distance to the adjacent CTU and the upper CTU pixels, and where pL and pA are pixels from the adjacent CTU and the upper CTU, respectively.

[0150] In another example, the unavailable pixels may be set equal to the nearest pixels in the adjacent left CTU and the upper CTU, or the pixels not in the current CTU row (or other block row) may be filled symmetrically or asymmetrically. In another example, the pixels not in the current CTU column (or other block column) are filled symmetrically or asymmetrically. In another example (the seventh example), the unavailable pixels are derived by applying intra prediction.

[0151] In some examples, the Laplacian value (activity) of the missing pixels for classification is not calculated, but the activity value is rescaled. In one such example according to JVET-N1001 (hereby incorporated by reference for all purposes), the activity value is rescaled to avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*68)>>(3+BitDepthY))] to handle the unavailable pixels.

[0152] and Figure 7 similar, Figure 8 is a diagram showing an example of a filter pattern for classification or activity filtering at the corners of a raster scan slice. Figure 8 , a gradient is calculated for a pixel 810 in a sub-block, where CTU 831 is in slice 801 and CTUs 832, 833, and 834 are in slice 802. The gradient calculation for pixel 810 may use surrounding pixels 820. However, in this case, the use of pixels from across slice boundaries is prohibited so that pixel 830 from slice 801 is unavailable.

[0153] Fig. 9 is another diagram showing an example of a filter pattern for classification or activity filtering at the corners of a raster scan slice. Fig. 9, a gradient is calculated for a pixel 910 in a sub-block at a slice boundary between a slice 901 and a slice 902, where CTUs 931, 932, and 933 are in slice 901, and CTU 934 is in slice 902. The gradient calculation for pixel 910 may use surrounding pixels 920. In this case, as with other examples described herein, the use of pixels across the slice boundary is prohibited so that pixel 930 is unavailable.

[0154] exist Figure 4B -D and Figure 7 In the figure, the upper left and lower left CTUs are from the first slice, while the lower right CTU is from the second slice. Figure 4B -C shows a 7x7 filtering pattern for center pixels at the corners of a raster scanned slice (e.g., the 1 / 4 case is shown, i.e., three of the four CTUs are from the same slice, and the fourth CTU is from a different slice), referred to as Case 1. When the pixel to be filtered is in the first slice and a pixel in the second slice is needed for filtering, the pixel in the second slice is not available when the ALF is disabled across the slice boundary. Various techniques can be used to address such issues. In a first example, the unavailable pixel in the second slice can be copied to the CTU above the CTU that includes the unavailable pixel (e.g., Figure 4B -D in the CTU432). The upper CTU may also be referred to as the upper neighboring CTU. In the second example, the unavailable pixels in the second slice may be the nearest pixel in the left CTU (e.g., Figure 4B -D) to include the nearest pixel in CTU 433 to the unavailable pixel (e.g. Figure 4B -D in the CTU 434). The left CTU may also be referred to as a left neighboring CTU.

[0155] In a third example, the unavailable pixel in the second slice can be equal to a linear combination of one pixel from the upper CTU and one pixel from the left CTU, as p = (wL*pL+wA*pA) / (wL+wA), where wL and wA are two weights that may depend on the distance to the left CTU and the upper CTU, where pL and pA are pixels from the left CTU and the upper CTU, respectively.

[0156] In a fourth example, the unavailable pixels in the second slice may be equal to the nearest pixels in the left CTU and the upper CTU. In a fifth example, the pixels not in the current CTU row (or other block row) may be filled symmetrically or asymmetrically. In a sixth example, the pixels not in the current CTU column (or other block column) may be filled symmetrically or asymmetrically. In a seventh example, the unavailable pixels in the second slice may be derived by applying intra prediction.

[0157] In some cases, activity calculations may be performed on sub-blocks at the corners of a raster scan slice (e.g., the 1 / 4 case is shown, i.e., three of the four CTUs are from the same slice, and the fourth CTU is from a different slice). Figure 7 Pixel usage is shown, and wherein the gradient of the current sub-block (e.g., pixel 710) is calculated. To address the unavailability of the pixel, one or any combination of the following may be performed: one or any combination of the above pixel filling techniques may be applied to the pixels in the second slice (e.g., the first three pixels in the second slice or all six pixels in the second slice); the gradient values ​​in the second slice may be filled by applying one or any combination of the above filling techniques to the available gradient values; the gradient values ​​in the second slice may not be calculated, and the activity value in JVET-N1001 may be rescaled to:

[0158] avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*68)>>(3+BitDepth Y ))](8-1243).

[0159] In another example, Fig. 9 Pixel usage is shown, and the gradient of the current sub-block (e.g., including the top right 4x4 pixels in CTU 932 of slice 901, but excluding the unavailable pixels of CTU 934 in slice 902) is calculated. To address the unavailability of pixels, one or any combination of the following may be performed: One or any combination of the above pixel filling techniques may be applied to pixels in the second slice (e.g., Fig. 9 934 shown); the gradient values ​​in slice 902 may be filled by applying one or any combination of the above-mentioned filling methods to the available gradient values; the gradient values ​​in CTU 934 of slice 802 may not be calculated, and the activity value in JVET-N1001 may be rescaled to:

[0160] avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*79)>>(3+BitDepthY))](8-1243)

[0161] Fig. 9 Also shown are examples of filter patterns for classification or activity filtering at the corners of a raster scan slice. Fig. 9, a gradient is calculated for a pixel 910 in a sub-block at a slice boundary between a slice 901 and a slice 902, where CTUs 931, 932, and 933 are in slice 901, and CTU 934 is in slice 902. The gradient calculation for pixel 910 may use surrounding pixels 920. In this case, as with other examples described herein, the use of pixels from across the slice boundary is prohibited so that pixel 930 is unavailable.

[0162] Fig.10 1001, 1002, and 1003 are diagrams showing examples of filter patterns for classification or activity filtering at the corners where three slices 1001, 1002, and 1003 intersect. Fig.10 , gradients are calculated for pixels 1010 in sub-blocks at slice boundaries around slice 1003, slice 1001, and slice 1002, where CTU 1031 is in slice 1001; CTU 1032 and CTU 1033 are in slice 1002; and CTU 1034 is in slice 1003. The gradient calculation for pixel 1010 in slice 1002 can use surrounding pixels 1020, but cannot use unavailable pixels 1030 from slices 1001 and 1003 because the use of pixels from across slice boundaries is prohibited, making pixel 1030 unavailable.

[0163] exist Figure 5 , Figure 8 and Fig. 9 , the CTU from the first slice is in a different slice than the pixel being analyzed from the second slice. Figure 5 A 7x7 filter pattern is shown for pixels at the corners of a raster scanned slice (e.g., the 1 / 4 case is shown, i.e., the first CTU is from the first slice and the other three CTUs are from the second slice). When the pixel to be filtered is in the second slice and the pixel in the first slice is needed for filtering, the pixel in the first slice is unavailable when the ALF across the slice boundary is disabled. Various techniques can be used to solve such problems. In a first example, the unavailable pixel in the first slice can be copied to the nearest pixel in the right CTU to the right of the CTU including the unavailable pixel. The right CTU can also be referred to as the right adjacent CTU. In a second example, the unavailable pixel can be copied to the nearest pixel in the lower CTU below the CTU including the unavailable pixel. The lower CTU can also be referred to as the lower adjacent CTU.

[0164] In a third example, the unavailable pixel in the first slice can be equal to a linear combination of one pixel from the right CTU and one pixel from the lower CTU, as p = (wR*pR+wD*pD) / (wR+wD), where wR and wD are two weights that may depend on the distance to the right CTU and the lower CTU, respectively.

[0165] In a fourth example, the unavailable pixels in the first slice may be equal to the nearest pixels in the right CTU and the lower CTU, or the unavailable pixels in the first slice may be equal to the nearest pixels in the left CTU and the upper CTU. In a fifth example, pixels not in the current CTU row (or other block row) may be filled symmetrically or asymmetrically. In a sixth example, pixels not in the current CTU column (or other block column) may be filled symmetrically or asymmetrically. In a seventh example, the unavailable pixels in the first slice may be derived by applying intra prediction.

[0166] Fig. 9 It can also be used to show groups of CTUs where activity can be computed for sub-blocks at the corners of a raster scan slice (e.g., showing the 1 / 4 case, where three of the four CTUs are from the same slice and the fourth CTU is from a different slice). Fig. 9 Pixel usage is also shown, and where the gradient is calculated for the current sub-block (shown in red, including the top left 4x4 pixels in the second slice). To address pixel unavailability, one or any combination of the following may be performed: one or any combination of the above pixel filling techniques may be applied to pixels in the first slice; the gradient values ​​in the first slice may be filled by applying one or any combination of the above pixel filling techniques to available gradient values; the gradient values ​​in the first slice may not be calculated, and the activity value in JVET-N1001 may be rescaled to:

[0167] avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*68)>>(3+BitDepth Y ))](8-1243)

[0168] Back to Figure 8 , activity calculations may be performed for sub-blocks at the corners of a raster scan slice (eg, the 1 / 4 case is shown, i.e., the first CTU is from the first slice, and the other three CTUs are from the second slice). Figure 8 Pixel usage is shown, and wherein the gradient is calculated for the current sub-block. To address pixel unavailability, one or any combination of the following may be performed: One or any combination of the above pixel filling techniques may be applied to pixels in the first slice (e.g., Figure 8 831 shown); the gradient values ​​in the first slice may be filled by applying one or any combination of the above pixel filling techniques to the available gradient values; the gradient values ​​in the first slice may not be calculated, and the activity value in JVET-N1001 may be rescaled to:

[0169] avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*79)>>(3+BitDepth Y ))](8-1243).

[0170] exist Figure 6 and Fig.10 In the example, two diagonal CTUs are from a shared slice, while other CTUs are in different slices. If the pixel to be filtered is in one of the two CTUs in the shared slice, and pixels from the other CTU are needed for filtering, some pixels are unavailable when the ALF across the slice boundary is disabled. Various techniques can be used to solve such problems. In a first example, the unavailable pixels can copy the nearest pixels in the right CTU to the right of the CTU including the unavailable pixels. The right CTU can also be referred to as the right adjacent CTU. In a second example, the unavailable pixels can copy the nearest pixels in the lower CTU below the CTU including the unavailable pixels. The lower CTU can also be referred to as the lower adjacent CTU.

[0171] In a third example, the unavailable pixel can be equal to a linear combination of one pixel from the right CTU and one pixel from the lower CTU, as p = (wR*pR+wD*pD) / (wR+wD), where wR and wD are two weights that may depend on the distance to the right CTU and the lower CTU, respectively.

[0172] In a fourth example, the unavailable pixels may be equal to the nearest pixels in the right CTU and the lower CTU. In a fifth example, pixels not in the current CTU row (or other block row) may be filled symmetrically or asymmetrically. In a sixth example, pixels not in the current CTU column (or other block column) may be filled symmetrically or asymmetrically. In a seventh example, the unavailable pixels may be derived by applying intra prediction.

[0173] In the eighth example, the unavailable pixel can be copied to the nearest pixel in the upper CTU. In the ninth example, the unavailable pixel can be copied to the nearest pixel in the left CTU.

[0174] In the tenth example, the unavailable pixel can be equal to a linear combination of one pixel from the upper CTU and one pixel from the left CTU, as p = (wL*pL+wU*pU) / (wL+wU), where wL and wU are two weights, which may depend on the distance to the left CTU and the upper CTU, respectively.

[0175] In the eleventh example, the unavailable pixel may be equal to the nearest pixel in the left CTU and the upper CTU. In the twelfth example, the pixels not in the current CTU row (or other block row) may be filled symmetrically or asymmetrically. In the thirteenth example, the pixels not in the current CTU column (or other block column) may be filled symmetrically or asymmetrically. In the fourteenth example, the unavailable pixel may be derived by applying intra prediction.

[0176] Fig.10 It can also be used as an example to illustrate CTU groups, where activity calculations can be done for sub-blocks at the corners of a slice. Fig.10 Pixel usage is shown, and wherein the gradient is calculated for the current sub-block. To address pixel unavailability, one or any combination of the following may be performed: one or any combination of the above pixel filling techniques may be applied to unavailable pixels; unavailable gradient values ​​may be filled by applying one or any combination of the above pixel filling techniques to available gradient values; gradient values ​​may not be calculated, and the activity value in JVET-N1001 may be rescaled to:

[0177] avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*92)>>(3+BitDepth Y ))](8-1243).

[0178] Having disclosed example systems, components, and concepts, the present disclosure now turns to an example method 1100 for processing video data, such as Fig.11 As shown. In some examples, processing of video data by method 1100 may include different or varying combinations of operations for replacing (e.g., using replicated available pixels) unavailable pixels for ALF filtering or classification when some pixels are unavailable due to restrictions on cross-slice pixel data (e.g., in a raster scan configuration). In various implementations, method 1100 may be performed by an encoding or decoding device that is part of a video processing system. In some examples, method 1100 may be implemented as instructions in a non-temporary storage medium that, when executed by processing circuitry, causes the device to perform method 1100. 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.

[0179] At block 1102, method 1100 may include obtaining video data including one or more pictures. In some examples, an encoding device (e.g., encoding device 94) may receive one or more pictures from a video source (e.g., video source 92) such as a camera. In some examples, a decoding device (e.g., decoding device 102) may receive an encoded video bitstream including one or more pictures from an encoding device (e.g., encoding device 94). In some examples, the encoded video bitstream may include signaling information. The signaling information may include, for example, but not limited to, a flag indicating that ALF is enabled. The signaling information may also include a flag or other information indicating that data from different cross-slice boundaries is not available (e.g., for ALF or classification in a raster scan slice). Such a flag or other information indicating that loop filtering is disabled across slice boundaries may include a clipping flag associated with a CTU position and a slice. Such a clipping flag may be set based on various different configurations in the system, which may create a configuration in which data from different slices is not available for loop filtering operations in the current slice.

[0180] At box 1104, method 1100 may include: obtaining a first block of a picture from one or more pictures, where the first block is in a first slice of the picture. In some examples, an encoding device (e.g., encoding device 94) may partition the video data into one or more slices containing blocks. In some examples, the blocks may be encoded blocks in an encoded video bitstream, and a decoding device (e.g., decoding device 112) may decode the blocks of the picture using signaling information in the bitstream by applying a decoding algorithm and / or standard that matches a decoding algorithm and / or standard used to encode the blocks, slices, pictures, and / or bitstream. In some examples, the decoding device may reconstruct the blocks of the picture, such as with respect to Figure 1 The system 90 and Fig.13 The decoding device 112 is shown as described.

[0181] At box 1106, method 1100 may include: determining that a second block is located in a second slice of the picture, the second block including one or more pixels for use in performing loop filtering of the pixels of the first block. In some examples, the second block and the first block are each CTUs, wherein the first block is a first CTU and the second block is a second CTU. As described above, in some examples, an encoding device (e.g., encoding device 94) may partition the video data together with the blocks including pixels into one or more slices including a first slice and a second slice. In some examples, the second slice may include an encoded block in an encoded video bitstream, and a decoding device (e.g., decoding device 112) may decode the blocks and slices of the picture using signaling information in the bitstream by applying a decoding algorithm and / or standard that matches the decoding algorithm and / or standard used to encode the blocks, slices, pictures and / or bitstream. In some examples, the encoding and decoding involves raster scan partitioning of the image. In some examples, the decoding device may partition and reconstruct blocks and slices of the picture in a raster scan configuration, such as described above in Figure 4A -D is used Figure 1 The system 90 and Fig.13 The decoding device 112 is shown as described.

[0182] At block 1108, method 1100 may include determining that loop filtering across a slice boundary is disabled. As described above, this may be performed as part of an encoding operation, by processing the encoded data to determine that loop filtering across a slice boundary is disabled, or by decoding an encoded bitstream using a decoding device to identify a flag or other information that identifies that data from pixels across a slice boundary is not available for processing pixels in the current slice.

[0183] At block 1110, method 1100 may include determining that one or more pixels of the second block are unavailable for performing loop filtering of pixels of the first block based on the second block being in the second slice and the pixel being processed being in the first slice. In some examples, the loop filter used for loop filtering is an adaptive loop filter. In some examples, the loop filter is a linear or nonlinear filter with gradient-based sample classification.

[0184] At block 1112, method 1100 may include duplicating at least one pixel of the first block or at least one pixel of the additional block of the first slice for performing loop filtering of the pixels of the first block. The duplication is based on one or more pixels of the second block being unavailable due to disabling loop filtering across slice boundaries. In some cases, at least one pixel of the first block or at least one pixel of the additional block of the first slice includes one or more pixels of the slice closest to the second block.

[0185] In some examples, the relative positions of the slices and blocks can determine how the copying occurs at box 1112. In one example, the first slice is a raster scan slice and the second block is located at the lower right corner of the first block. In another example, the second block is located at the upper left corner of the first block. In another example, the second block is located at the upper right corner of the first block or the lower left corner of the first block. In one example, the first slice is a raster scan slice and the second block (in a different slice from the first block) is located at the lower right corner of the first block. In such an example, at least one pixel of the first block or at least one pixel of the additional block of the first slice includes one or more pixels of the left neighboring block of the second block (in the same slice of the first block) that are closest to the second block. In another such example, at least one pixel of the first block or at least one pixel of the additional block of the first slice includes one or more pixels of the upper neighboring block of the second block (in the same slice of the first block) that are closest to the second block. In another such example, at least one pixel of the first block or at least one pixel of the additional block of the first slice includes one or more pixels closest to the second block in a left neighboring block of the second block (in the same slice of the first block) and one or more pixels closest to the second block in an upper neighboring block of the second block (in the same slice of the first block).

[0186] In some such examples, the copying can be efficiently implemented by copying the nearest pixel in a shared row or column to the pixel being replaced due to unavailability. In such an implementation, if the nearest pixel in a shared row is being copied, the pixel at coordinates (nearest x position, y) can be copied to replace the unavailable pixel at coordinates (x, y). Similarly, if the nearest pixel in a shared column is copied, the pixel at coordinates (x, nearest y position) can replace the unavailable pixel at coordinates (x, y).

[0187] In other examples, other copy operations may be used, or a combination of copy operations may be used.

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

[0189] In some examples, a decoding device (e.g., decoding device 112) may obtain an encoded video bitstream including one or more pictures, and decode blocks of pictures from 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 blocks with associated restrictions on ALF filtering and restrictions on the use of cross-slice data, determine one or more coefficients for at least one filter, determine the filter size and / or shape, determine whether to enable filtering, and / or apply at least one filter to the reconstructed blocks. In some examples, the signaling information may include signals for the use of pixels across slice boundaries, filter parameters (e.g., filter coefficients, filter size parameters, filter shape parameters, etc.), and / or adaptive loop filter flags (e.g., ALF flags indicating whether luminance and / or chrominance ALF filtering is enabled).

[0190] In some examples, method 1100 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., decoding device 112). In some cases, the encoded video bitstream may be sent with signaling information. The signaling information may include, for example, offset 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).

[0191] In some examples, method 1100 may include storing the coded video bitstream. In some examples, method 1100 may include presenting a reconstructed video from the coded video bitstream after reconstructing the blocks of the pictures in the coded video bitstream, and applying one or more ALF filters with replicated pixels (as described in various examples) to one or more of the blocks of the pictures in the coded video.

[0192] In some implementations, the processes (or methods) described herein may be performed by a computing device or apparatus (e.g., Figure 1 For example, these processes may be performed by the system 100 shown in Figure 1 and Fig.12 The encoding device 104 shown in FIG. 1 , another video source side device or a video transmission device, Figure 1 and Fig.13, and / or another client-side device (e.g., a player device, a display, or any other client-side device) is performed. In some cases, a computing device or apparatus may include a processor, a microprocessor, a microcomputer, and / or other components of a device configured to perform the steps of the process described herein. In some examples, a computing device or apparatus may include a camera configured to capture video data (e.g., a video sequence) including video frames. In some examples, a camera or other capture device that captures video data is separate from a computing device, in which 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 an Internet Protocol (IP) or other types of data. In some examples, a computing device or apparatus may include a display for displaying output video content (e.g., a sample of a picture of a video bitstream).

[0193] The components of a computing device or apparatus may be implemented in circuitry. For example, the components may include and / or be implemented using electronic circuitry or other electronic hardware, which may include one or more programmable circuits (e.g., a microprocessor, a graphics processing unit (GPU), a digital signal processor (DSP), a central processing unit (CPU), and / or other suitable circuits), and / or may include and / or be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein.

[0194] The processes may be described with respect to a logical flow diagram, the operations of which represent a series of operations that may be implemented using 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. Typically, 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.

[0195] In addition, these processes can be performed under the control of one or more computer systems configured with executable instructions, and can be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that is executed together on one or more processors, implemented by hardware, or a combination thereof. As mentioned 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 storage medium or machine-readable storage medium can be non-transitory.

[0196] The decoding techniques discussed herein can be implemented in an example video encoding and decoding system (e.g., system 100). In some examples, the system includes a source device that provides encoded video data to be decoded later by a destination device. Specifically, the source device provides the video data to the destination device via a computer-readable medium. The source device and the destination device may include any of a variety of devices, including a desktop computer, a notebook computer (i.e., a laptop computer), a tablet computer, a set-top box, a telephone handset (e.g., a so-called "smart" phone), a so-called "smart" board, a television, a camera, a display device, a digital media player, a video game console, a video streaming device, a mobile device, an Internet of Things (IoT) device, an HMD, etc. In some cases, the source device and the destination device may be equipped for wireless communication.

[0197] The destination device may receive the encoded video data to be decoded via a computer-readable medium. The computer-readable medium may be any type of medium or device capable of moving the encoded video data from the source device to the destination device. In one example, the computer-readable medium may be a communication medium for enabling the source device to directly send the encoded video data to the destination device in real time. The encoded video data may be modulated according to a communication standard such as a wireless communication protocol and sent to the destination device. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, for example, a local area network, a wide area network, or a global network such as the Internet. The communication medium may include a router, a switch, a base station, or any other device that may be used to facilitate communication from the source device to the destination device.

[0198] In some examples, the encoded data can be output from the output interface to the storage device. Similarly, the encoded data can be accessed from the storage device through the input interface. The storage device may include any 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, which may store the encoded video generated by the source device. The destination device may access the stored video data from the storage device via streaming or downloading. The file server may be any type of server capable of storing encoded video data and sending the encoded video data to the destination device. Example file servers include web servers (e.g., for websites), FTP servers, network attached storage (NAS) devices, or local disk drives. The destination device may access the encoded video data through any standard data connection (including an Internet connection). This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of both suitable for accessing the encoded video data stored on the file server. The transmission of the encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.

[0199] The technology of the present disclosure is not necessarily limited to wireless applications or settings. The technology can be applied to video 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 (e.g., dynamic adaptive streaming over HTTP (DASH)), digital video encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications. In some examples, the system can be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.

[0200] In one example, the source device includes a video source, a video encoder, and an output interface. The destination 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 destination 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 destination device may be docked with an external display device rather than including an integrated display device.

[0201] The example system above is only an example. The technology for processing video data in parallel can be performed by any digital video encoding and / or decoding device. Although in general, the technology of the present disclosure is performed by a video encoding device, the technology can also be performed by a video encoder / decoder commonly referred to as a "CODEC". In addition, the technology of the present disclosure can also be performed by a video preprocessor. The source device and the destination device are only examples of such decoding devices: wherein the source device generates encoded video data for transmission to the destination device. In some examples, the source device and the destination device can operate in a substantially symmetrical manner so that each of these devices includes a video encoding and decoding component. Therefore, the example system can support one-way or two-way video transmission between video devices, for example, for video streaming, video playback, video broadcasting, or video telephony.

[0202] The video source can include a video capture device, such as a video camera, a video archiving unit comprising previously captured video, and / or a video feed interface for receiving video from a video content provider. As an alternative, the video source can generate computer graphics-based data as the source video, or generate a combination of real-time video, archived video, and computer-generated video. In some cases, if the video source is a video camera, the source device and the destination device can form a so-called camera phone or video phone. However, as mentioned above, the technology described in this disclosure can be generally applicable to video decoding, and can be applied to wireless and / or wired applications. In each case, the captured, pre-captured or computer-generated video can be encoded by a video encoder. Then, the encoded video information can be output to a computer-readable medium by an output interface.

[0203] As mentioned, computer-readable media may include temporary media such as wireless broadcasts or wired network transmissions, or storage media such as hard disks, flash drives, compact discs, digital versatile discs, Blu-ray discs (i.e., non-temporary storage media), or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from a source device, for example, via a network transmission, and provide the encoded video data to a destination device. Similarly, a computing device of a media production facility such as a disc stamping facility may receive encoded video data from a source device and manufacture 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.

[0204] The input interface of the destination device receives information from the computer-readable medium. The information of the computer-readable medium may include syntax information defined by the video encoder (which is also used by the video decoder), the syntax information including syntax elements describing the characteristics and / or processing of blocks and other decoded units (e.g., groups of pictures (GOPs)). The display device displays the decoded video data to a user and may include any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device. Various embodiments of the present application have been described.

[0205] exist Fig.12 and Fig.13 Specific details of the encoding device 104 and the decoding device 112 are shown respectively. Fig.12 1 is 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 VPS, SPS, PPS or other syntax elements). The encoding device 104 can perform intra-frame prediction and inter-frame prediction decoding of video blocks within a video slice. As previously described, intra-frame coding relies at least in part on spatial prediction to reduce or remove spatial redundancy within a given video frame or picture. Inter-frame coding relies at least in part on temporal prediction to reduce or remove temporal redundancy within adjacent or surrounding frames of a video sequence. Intra-frame mode (I mode) can refer to any of several spatial-based compression modes. Modes such as unidirectional prediction (P mode) or bidirectional prediction (B mode) can refer to any of several temporal-based compression modes.

[0206] The encoding device 104 includes a segmentation unit 35, a prediction processing unit 41, a filter unit 63, a picture memory 64, a summer 50, a transform processing unit 52, a quantization unit 54, and an entropy coding unit 56. The prediction processing unit 41 includes a motion estimation unit 42, a motion compensation unit 44, and an intra-frame prediction processing unit 46. For video block reconstruction, the encoding device 104 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and a summer 62. The filter unit 63 is intended to represent one or more loop filters, such as a deblocking filter, an adaptive loop filter (ALF), and a sample adaptive offset (SAO) filter. Although in Fig.12Filter unit 63 is shown as an in-loop filter in FIG. 1 , but in other configurations, filter unit 63 may be implemented as a post-loop filter. Post-processing device 57 may perform additional processing on the encoded video data generated by encoding device 104. In some cases, the techniques of the present disclosure may be implemented by encoding device 104. However, in other cases, one or more of the techniques of the present disclosure may be implemented by post-processing device 57.

[0207] like Fig.12 As shown, the encoding device 104 receives video data, and the segmentation unit 35 segments the data into video blocks. This segmentation may also include, for example, segmentation into slices, slice segments, tiles or other larger units according to the quadtree structure of LCUs and CUs, as well as video block segmentation. The encoding device 104 generally shows components for encoding video blocks within a video slice to be encoded. A slice may be divided into multiple video blocks (and may be divided into sets of video blocks called tiles). The prediction processing unit 41 may select one of a plurality of possible decoding modes for the current video block based on error results (e.g., decoding rate and distortion level, etc.), for example, one of a plurality of intra-frame prediction decoding modes or one of a plurality of inter-frame prediction decoding modes. The prediction processing unit 41 may provide the resulting intra-frame or inter-frame coded block to the summer 50 to generate residual block data, and to the summer 62 to reconstruct the coded block for use as a reference picture.

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

[0209] Motion estimation unit 42 may be configured to determine an inter-prediction mode for a video slice according to a predetermined pattern for a video sequence. The predetermined pattern may designate a video slice in a sequence as a P slice, a B slice, or a GPB slice. Motion estimation unit 42 and motion compensation unit 44 may be highly integrated, but are shown separately for conceptual purposes. Motion estimation performed by motion estimation unit 42 is the process of generating a motion vector that estimates motion for a video block. A motion vector may, for example, 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.

[0210] A prediction block is a block that is found to closely match a PU of a video block to be encoded in terms of pixel difference, which may be determined by sum of absolute difference (SAD), sum of squared difference (SSD), or other difference metrics. In some examples, encoding device 104 may calculate values ​​for sub-integer pixel positions of a reference picture stored in picture memory 64. For example, encoding device 104 may interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of a reference picture. Thus, motion estimation unit 42 may perform motion searches relative to full pixel positions and fractional pixel positions and output motion vectors with fractional pixel precision.

[0211] Motion estimation unit 42 calculates a motion vector for a PU by comparing the position of the PU of the video block in the inter-coded slice with the position of the prediction block of the reference picture. The reference picture may be selected from a first reference picture list (list 0) or a second reference picture list (list 1), each of which identifies one or more reference pictures stored in picture memory 64. Motion estimation unit 42 sends the calculated motion vector to entropy encoding unit 56 and motion compensation unit 44.

[0212] 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 a motion vector for a PU of a current video block, motion compensation unit 44 may locate the prediction block pointed to by the motion vector in a reference picture list. Encoding device 104 forms a residual video block by subtracting pixel values ​​of the prediction block from pixel values ​​of the current video block being encoded to form pixel difference values. The pixel difference values ​​form residual data for the block and may include both a luminance difference component and a chrominance difference component. Summer 50 represents one or more components that perform such subtraction operations. Motion compensation unit 44 may also generate syntax elements associated with video blocks and video slices for use by decoding device 112 when decoding video blocks of video slices.

[0213] As described above, the intra-prediction processing unit 46 may perform intra-prediction on the current block 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 the intra-prediction mode to be used to encode the current block. In some examples, the intra-prediction processing unit 46 may encode the current block using various intra-prediction modes, for example, during a separate encoding process, and the intra-prediction processing unit 46 may select a suitable intra-prediction mode from the tested modes to use. For example, the intra-prediction processing unit 46 may calculate a rate-distortion value using a rate-distortion analysis for various tested intra-prediction modes, and may select an intra-prediction mode with the best rate-distortion characteristic in 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 is coded to generate the coded block, and the bit rate (i.e., the number of bits) used to generate the coded block. Intra-prediction processing unit 46 may calculate ratios from the distortions and rates for the various encoding blocks to determine which intra-prediction mode exhibits the best rate-distortion value for the block.

[0214] In any case, after selecting an intra-prediction mode for a block, the intra-prediction processing unit 46 may provide information indicating the intra-prediction mode selected for the block to the entropy encoding unit 56. The entropy encoding unit 56 may encode the information indicating the selected intra-prediction mode. The encoding device 104 may include in the transmitted bitstream configuration data the definition of the coding contexts for the various blocks and the most probable intra-prediction mode to be used for each of these contexts, the intra-prediction mode index table, and the indication of the modified intra-prediction mode index table. The bitstream configuration data may include multiple intra-prediction mode index tables and multiple modified intra-prediction mode index tables (also referred to as codeword mapping tables).

[0215] 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 included in one or more TUs and applied to the transform processing unit 52. The transform processing unit 52 transforms the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform. The transform processing unit 52 may convert the residual video data from a pixel domain to a transform domain such as a frequency domain.

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

[0217] After quantization, entropy encoding unit 56 performs entropy encoding on the quantized transform coefficients. For example, entropy encoding unit 56 may perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy encoding technique. After entropy encoding by entropy encoding unit 56, the encoded bitstream may be sent to decoding device 112 or archived for later transmission or retrieval by decoding device 112. Entropy encoding unit 56 may also entropy encode motion vectors and other syntax elements for the current video slice being decoded.

[0218] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual block in the pixel domain for later use as a reference block of a reference picture. Motion compensation unit 44 may calculate a reference block by adding the residual block to a 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 motion estimation. Summer 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reference block for storage in picture memory 64. The reference block may be used by motion estimation unit 42 and motion compensation unit 44 as a reference block to perform inter-frame prediction on a block in a subsequent video frame or picture.

[0219] In some examples, Fig.12 The encoding device 104 of can represent an example of a video encoder that is configured to calculate an ALF filter with pixel replication, perform ALF filtering with clipping, derive various decoding parameters, etc. As described above, the encoding device 104 can, for example, calculate ALF filters and clipping values ​​and / or perform ALF filtering with pixel replication. For example, the encoding device 104 can perform any of the techniques described herein, including the techniques described above with respect to Figures 2A to 6 In some cases, some of the techniques of the present disclosure may also be implemented by post-processing device 57 .

[0220] Fig.131 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, a summer 90, a filter unit 91, and a picture memory 92. The prediction processing unit 81 includes a motion compensation unit 82 and an intra-frame prediction processing unit 84. In some examples, the decoding device 112 may perform operations generally associated with the processing of the image from Fig.12 The decoding stage is the opposite of the encoding stage described by the encoding device 104.

[0221] During the decoding process, the decoding device 112 receives a coded video bitstream sent by the encoding device 104, which represents the video blocks and associated syntax elements of the coded video slice. In some embodiments, the decoding device 112 may receive the coded video bitstream from the encoding device 104. In some embodiments, the decoding device 112 may receive the coded video bitstream from the encoding device 104. In some embodiments, the decoding device 112 may receive the coded video bitstream from the network entity 79 (e.g., a server, a media-aware network element (MANE), a video editor / splicer, or other such device configured to implement one or more of the above-mentioned techniques). The network entity 79 may or may not include the encoding device 104. Before the network entity 79 sends the coded video bitstream to the decoding device 112, the network entity 79 may implement some of the techniques described in the present disclosure. In some video decoding systems, the network entity 79 and the decoding device 112 may be parts of separate devices, while in other cases, the functions described with respect to the network entity 79 may be performed by the same device including the decoding device 112.

[0222] 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 more parameter sets such as VPS, SPS, and PPS.

[0223] When the video slice is encoded as an intra-frame coded (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 in the previously decoded block from the current frame or picture. When the video frame is encoded as an inter-frame coded (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 entropy 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 the reference frame lists, i.e., List 0 and List 1, using a default construction technique based on the reference pictures stored in the picture memory 92.

[0224] Motion compensation unit 82 determines prediction information for video blocks of the current video slice by parsing motion vectors and other syntax elements, and uses the prediction information to generate a prediction block for the current video block being decoded. For example, motion compensation unit 82 may use one or more syntax elements in a parameter set to determine a prediction mode (e.g., intra or inter prediction) for encoding video blocks of a video slice, an inter-prediction slice type (e.g., a B slice, a P slice, or a GPB slice), construction information for one or more reference picture lists for the slice, motion vectors for each inter-coded video block of the slice, inter-prediction status for each inter-coded video block of the slice, and other information for decoding video blocks in the current video slice.

[0225] The motion compensation unit 82 may also perform interpolation based on an interpolation filter. The motion compensation unit 82 may calculate interpolated values ​​for pixels below the integer of the reference block using the interpolation filter 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.

[0226] 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 determining the degree of quantization using the quantization parameters calculated by the encoding device 104 for each video block in the video slice, and likewise determining 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 to produce residual blocks in the pixel domain.

[0227] 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. Summer 90 represents one or more components that perform such a summing operation. If desired, a loop filter (in the decoding loop or after the decoding loop) may also be used to smooth pixel transitions or otherwise improve video quality. Filter unit 91 is intended to represent one or more loop filters, such as a deblocking filter, an adaptive loop filter (ALF), and / or a sample adaptive offset (SAO) filter. Although in Fig.13 Filter unit 91 is shown as an in-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, which stores reference pictures for subsequent motion compensation. Picture memory 92 also stores the decoded video for later viewing on a display device such as a Figure 1 122).

[0228] In some examples, Fig.13 The decoding device 112 of can represent an example of a video decoder that is configured to calculate ALF filters and pixel replication values, perform ALF filtering with pixel replication, derive various decoding parameters, etc. As described above, the decoding device 104 can, for example, calculate ALF filters and clipping values ​​and perform ALF filtering with pixel replication. For example, the decoding device 112 can perform any of the techniques described herein, including the above with respect to Figures 2A to 8 Describe the process and techniques.

[0229] 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 capable of storing, containing or carrying instructions and / or data. Computer-readable media may include non-transitory media in which data may be stored and does not include the following: carrier waves and / or temporary electronic signals propagated wirelessly or on a wired connection. Examples of non-transitory 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 memory devices. Computer-readable media may have codes and / or machine-executable instructions stored thereon, which may represent any combination of procedures, 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 passing and / or receiving information, data, independent variables, parameters, or memory contents. Information, independent variables, parameters, data, etc. may be passed, forwarded, or sent via any appropriate means including memory sharing, message passing, token passing, network transmission, etc.

[0230] 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 explicitly excludes media such as energy, carrier signals, electromagnetic waves, and signals themselves.

[0231] Specific details are provided in the above description to provide a thorough understanding of the embodiments and examples provided herein. However, it will be appreciated by those of ordinary skill in the art that these embodiments can be implemented without these specific details. For clarity of explanation, in some cases, the technology herein can be presented as a separate functional block including the following functional blocks, which include equipment, device components, steps or routines in the method embodied in software, or a combination of hardware and software. In addition to the components shown in the figures and / or described herein, additional components can also be used. For example, circuits, systems, networks, processes, and other components can be shown as components in block diagram form, so as not to obscure these embodiments in unnecessary details. In other cases, known circuits, processes, algorithms, structures, and techniques may be shown as not having unnecessary details, so as to avoid obscuring these embodiments.

[0232] Each embodiment may be described as a process or method above, and the process or method is depicted as a flow chart, a schematic flow diagram, a data flow diagram, a structure diagram or a block diagram. Although the flow chart can describe the operation as a sequential process, many operations in these operations can be performed in parallel or simultaneously. In addition, the order of the operation can be rearranged. The process is terminated after its operation is completed, but may have an extra step that is not included in the figure. A process (process) may correspond to a method, a function, a procedure (procedure), a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to the function returning to a calling function or a main function.

[0233] The process and method according to the above examples can be implemented using computer executable instructions, which are stored in a computer readable medium or can be obtained from a computer readable medium in other ways. Such instructions may include, for example, instructions or data, which cause a general-purpose computer, a special-purpose computer or a processing device to execute or otherwise be configured to perform a specific function or a specific set of functions. Parts of the computer resources used can be accessed through a network. Computer executable instructions can be, for example, binary files, intermediate format instructions such as assembly language, firmware, source code, etc. Examples of computer readable media that can be used to store instructions, information used, and / or information created during the method according to the described examples include disks or optical disks, flash memory, USB devices provided with non-volatile memory, network storage devices, etc.

[0234] The equipment implementing the process and method according to these disclosures 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 with software, firmware, middleware or microcode, the program code or code segment (e.g., computer program product) for performing the necessary tasks may be stored in a computer-readable or machine-readable medium. The processor may perform the necessary tasks. Typical examples of form factors include personal computers, personal digital assistants, rack-mounted devices, stand-alone devices, etc., of laptop computers, smart phones, mobile phones, tablet devices or other small form factors. The functions described herein may also be embodied in peripheral devices or plug-in cards. By way of additional example, this function may also be implemented on circuit boards between different chips or different processes executed in a single device.

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

[0236] In the foregoing description, various aspects of the present application are described with reference to the specific embodiments of the present application, but those skilled in the art will recognize that the present application is not limited thereto. Therefore, although the illustrative embodiments of the present application have been described in detail herein, it should be understood that the inventive concept can be embodied and adopted differently in other ways, and the attached examples are intended to be interpreted as including such variations, except for variations limited by the prior art. The various features and aspects of the above-mentioned applications can be used individually or collectively. In addition, without departing from the broader spirit and scope of this specification, the embodiments can be used in any number of environments and applications other than the environments and applications 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 an alternative embodiment, the method can be performed in an order different from the described order.

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

[0238] When a component is described as being “configured to” perform certain operations, such configuration may be achieved, for example, by designing circuits or other hardware to perform the operation, by programming programmable circuits (e.g., a microprocessor or other appropriate circuitry) to perform the operation, or any combination thereof.

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

[0240] Claim language or other language reciting "at least one of" a set and / or "one or more of" a set indicates that one member of the set or multiple members of the set (in any combination) satisfies the example. For example, example language reciting "at least one of A and B" means A, B, or A and B. In another example, example language reciting "at least one of A, B, and C" means A, B, C, or A and B, or A and C, or B and C, or A and B and C. The language "at least one of" a set and / or "one or more of" a set does not limit the set to the items listed in the set. For example, example language reciting "at least one of A and B" may mean A, B, or A and B, and may additionally include items not listed in the set of A and B.

[0241] 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, frames, modules, circuits and steps have been generally described above around 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 a departure from the scope of the application.

[0242] The technology described herein can also be implemented with electronic hardware, computer software, firmware, or any combination thereof. Such technology can be implemented in any of a variety of devices, such as a general-purpose computer, a wireless communication device mobile phone, or an integrated circuit device with multiple uses (including applications in wireless communication devices and other devices). Any features described as modules or components can be implemented together in an integrated logic device, or as separate but interoperable logic devices. If implemented with software, the technology can be implemented at least in part by a computer-readable data storage medium, which includes a program code, and the program code includes instructions for executing one or more methods in the above methods, algorithms, and / or operations when executed. The computer-readable data storage medium can form a part of a computer program product, and the computer program product can include packaging materials. The computer-readable medium can include a memory or a data storage medium, such as a random access memory (RAM) (such as a synchronous dynamic random access memory (SDRAM)), a read-only memory (ROM), a non-volatile random access memory (NVRAM), an electrically erasable programmable read-only memory (EEPROM), a flash memory, a magnetic or optical data storage medium, etc. Additionally or alternatively, the techniques may be implemented at least in part by a computer-readable communication medium (such as a propagated signal or wave) that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and / or executed by a computer.

[0243] The program code can 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 can be configured to perform any technology described in this disclosure. A general-purpose processor can be a microprocessor, but in an alternative, the processor can be any conventional processor, controller, microcontroller, or state machine. The processor can also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, a plurality of microprocessors, a combination of one or more microprocessors and a DSP core, or any other such configuration. Therefore, the term "processor" as used herein may refer to any of the aforementioned structures, any combination of the aforementioned structures, or any other structure or device suitable for implementing the technology described herein.

[0244] Illustrative examples of the present disclosure include:

[0245] Example 1. A method for processing video data, the method comprising: obtaining at least one pixel to be filtered using a loop filter, the at least one pixel being located in a first sub-portion of a picture; determining that one or more pixels located in a second sub-portion of the picture are required to filter the at least one pixel using the loop filter; and copying one or more nearest pixels in at least one of an upper adjacent sub-portion, a left adjacent sub-portion, a right adjacent sub-portion, and a lower adjacent sub-portion to fill the one or more pixels located in the second sub-portion.

[0246] Example 2. The method of example 1, wherein the loop filter is an adaptive loop filter (ALF).

[0247] Example 3. The method of any one of Examples 1 to 2, wherein the first sub-portion is a first slice of the picture and the second sub-portion is a second slice of the picture.

[0248] Example 4. The method of any one of Examples 1 to 3, wherein the first sub-portion of the picture is L-shaped (also known as a raster scan slice).

[0249] Example 5. The method according to any one of Examples 1 to 4, wherein copying the one or more nearest pixels comprises: determining a linear combination of at least one pixel from a first one of the upper adjacent subportion, the left adjacent subportion, the right adjacent subportion, and the lower adjacent subportion and at least one pixel from a second one of the upper adjacent subportion, the left adjacent subportion, the right adjacent subportion, and the lower adjacent subportion.

[0250] Example 6. The method according to any one of Examples 1 to 4, wherein the one or more pixels located in the second sub-portion are determined to be equal to the nearest pixel in the first of the upper adjacent sub-portion, the left adjacent sub-portion, the right adjacent sub-portion and the lower adjacent sub-portion and the second of the upper adjacent sub-portion, the left adjacent sub-portion, the right adjacent sub-portion and the lower adjacent sub-portion.

[0251] Example 7. The method according to any one of Examples 1 to 4, wherein at least one pixel of the one or more pixels in the second sub-portion that is not in the current block row is filled symmetrically or asymmetrically.

[0252] Example 8. The method according to any one of Examples 1 to 4, wherein at least one pixel of the one or more pixels in the second sub-portion that is not in the current block column is filled symmetrically or asymmetrically.

[0253] Example 9. The method of any one of Examples 1 to 4, wherein the one or more pixels located in the second sub-portion are derived by applying intra prediction.

[0254] Example 10. An apparatus comprising: a memory configured to store video data; and a processor configured to process the video data according to any one of Examples 1 to 9.

[0255] Example 11. The apparatus of Example 10, wherein the apparatus comprises an encoder.

[0256] Example 12. The apparatus of Example 10, wherein the apparatus comprises a decoder.

[0257] Example 13. The apparatus of any one of Examples 10 to 12, wherein the apparatus is a mobile device.

[0258] Example 14. The apparatus of any one of Examples 10 to 13, further comprising: a display configured to display the video data.

[0259] Example 15. The apparatus of any one of Examples 10 to 14, further comprising: a camera configured to capture one or more pictures.

[0260] Example 16. A computer readable medium having instructions stored thereon, the instructions, when executed by a processor, performing the method according to any one of Examples 1 to 9.

[0261] Example 17. A method for processing video data, the method comprising: obtaining video data including one or more pictures; obtaining a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; determining that a second block is located in a second slice of the picture, the second block comprising one or more pixels for use in performing loop filtering of pixels of the first block; determining that loop filtering across slice boundaries is disabled; determining that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across slice boundaries being disabled; and replicating at least one pixel of the first block or at least one pixel of an additional block of the first slice for performing loop filtering of the pixels of the first block based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block.

[0262] Example 18. The method of Example 17, wherein the loop filter is an adaptive loop filter (ALF).

[0263] Example 19. The method of Example 17, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of a slice closest to the second block.

[0264] Example 20. The method of Example 17, wherein the first slice is L-shaped and the second block is located at a lower right corner of the first block.

[0265] Example 21. The method of Example 20, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of a left neighboring block of the second block (in the first slice) that is closest to the second block.

[0266] Example 22. The method of Example 20, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of an upper neighboring block of the second block (in the first slice) that is closest to the second block.

[0267] Example 23. The method according to Example 20, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice includes one or more pixels of the left neighboring block of the second block (in the first slice) that are closest to the second block and one or more pixels of the upper neighboring block of the second block (in the first slice) that are closest to the second block.

[0268] Example 24. The method of Example 20, wherein the first block comprises a first coding tree unit (CTU) and the second block comprises a second CTU.

[0269] Example 25. The method of example 20, wherein the first slice and the second slice are obtained from a raster scan partitioning of the picture.

[0270] Example 26. The method of Example 20, further comprising generating an encoded video bitstream including the one or more pictures.

[0271] Example 27. The method of Example 26, wherein the coded video bitstream is generated based on the video data and a result of applying the at least one filter to the block.

[0272] Example 28. The method according to Example 26 further includes: sending the encoded video bitstream to a decoding device, wherein the encoded video bitstream is sent together with signaling information, and the signaling information includes at least a limiting flag (for example, associated with disabling the use of data from other slices for loop filtering) and an adaptive loop filter flag.

[0273] Example 29. The method of Example 26, further comprising storing the encoded video bitstream.

[0274] Example 30. The method according to Example 20 further includes: obtaining a coded video bitstream including the one or more pictures; identifying signaling information associated with the coded video bitstream, the signaling information including at least an adaptive loop filter flag and an indication that the loop filtering across the slice boundary is disabled; and decoding the block of the picture from the coded video bitstream.

[0275] Example 31. The method of Example 30, wherein decoding the block of the picture from the coded video bitstream comprises reconstructing the block of the picture, and the method further comprises applying at least one filter to the reconstructed block.

[0276] Example 32. An apparatus comprising: a memory; and one or more processors coupled to the memory, the one or more processors configured to: obtain video data including one or more pictures; obtain a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; determine that a second block is located in a second slice of the picture, the second block comprising one or more pixels for use in performing loop filtering of pixels of the first block; determine that loop filtering across slice boundaries is disabled; determine that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across slice boundaries being disabled; and based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block, duplicate at least one pixel of the first block or at least one pixel of an additional block of the first slice for performing loop filtering of the pixels of the first block.

[0277] Example 33. The apparatus of Example 32, wherein the loop filter is an adaptive loop filter (ALF).

[0278] Example 34. The apparatus of Example 32, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of a slice closest to the second block.

[0279] Example 35. The apparatus of Example 32, wherein the first slice is L-shaped and the second block is located at a lower right corner of the first block.

[0280] Example 36. The apparatus of Example 35, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of a left neighboring block of the second block (in the first slice) that is closest to the second block.

[0281] Example 37. The apparatus of Example 35, wherein the at least one pixel of the first block or the at least one pixel of the additional block of the first slice comprises one or more pixels of an upper neighboring block of the second block (in the first slice) that is closest to the second block.

[0282] Example 38. The apparatus of Example 35, wherein at least one pixel of the first block or at least one pixel of the additional block of the first slice comprises one or more pixels of a left neighboring block of the second block (in the first slice) that is closest to the second block and one or more pixels of an upper neighboring block of the second block (in the first slice) that is closest to the second block.

[0283] Example 39. The apparatus of Example 32, wherein the first block comprises a first coding tree unit (CTU) and the second block comprises a second CTU.

[0284] Example 40. The apparatus of example 32, wherein the first slice and the second slice are obtained from a raster scan segmentation of the picture.

[0285] Example 41. According to the apparatus of Example 32, the one or more processors are configured to generate an encoded video bitstream including the one or more pictures.

[0286] Example 42. The apparatus of Example 41, wherein the coded video bitstream is generated based on the video data and a result of applying the at least one filter to the block.

[0287] Example 43. According to the apparatus of Example 41, the one or more processors are configured to store the encoded video bitstream.

[0288] Example 44. The apparatus of any one of Examples 32 to 43, wherein the apparatus is a mobile computing device.

[0289] Example 45. A non-transitory computer-readable storage medium, comprising: instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to perform the following operations: obtain a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture; determine that a second block is located in a second slice of the picture, the second block including one or more pixels for use in performing loop filtering of pixels of the first block; determine that loop filtering across slice boundaries is disabled; determine that the one or more pixels of the second block are not available for performing loop filtering of the pixels of the first block based on the second block being located in the second slice and the loop filtering across slice boundaries being disabled; and based on the one or more pixels of the second block being not available for performing loop filtering of the pixels of the first block, copy at least one pixel of the first block or at least one pixel of an additional block of the first slice for performing loop filtering of the pixels of the first block.

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

[0291] Example 47: The apparatus of Example 45, wherein the apparatus comprises a decoder.

[0292] Example 48: An apparatus according to Example 45, wherein the apparatus comprises an encoder.

[0293] Example 49: An apparatus according to any of the above examples, wherein the apparatus is a mobile device.

[0294] Example 50: The apparatus according to any of the above examples further includes: a display configured to display the video data.

[0295] Example 51: The apparatus according to any of the above examples further includes: a camera configured to capture one or more pictures.

[0296] Example 52: A computer readable medium having instructions stored thereon, the instructions, when executed by a processor, performing the method according to any of the above examples.

Claims

1. A method for processing video data, the method comprising: Obtaining video data including one or more pictures; Obtaining a first block of a picture from the one or more pictures, the first block being located in a first slice of the picture, wherein the first slice is a raster scan slice; Determining that one or more pixels of a second block are located in a second slice of the picture, the one or more pixels being used when performing loop filtering of pixels of the first block, wherein the second block is located adjacent to a lower right corner of the first block; Determine that loop filtering across slice boundaries is disabled; Determining, based on the one or more pixels of the second block being located in the second slice and the cross-slice boundary loop filtering being disabled, that the one or more pixels of the second block are unavailable for use in performing loop filtering of the pixels of the first block; and For each pixel of the one or more pixels of the second block that is determined to be unavailable for use in performing loop filtering of the pixels of the first block, a corresponding pixel of a left neighboring block closest to the second block is copied for use in performing loop filtering of the pixels of the first block, the left neighboring block being located in the first slice.

2. The method according to claim 1, wherein: Loop filtering for the first block is performed using an adaptive loop filter (ALF).

3. The method according to claim 1, further comprising: For one or more pixels of the second block that are determined to be unavailable for performing loop filtering of additional pixels of the first block, one or more pixels of an upper neighboring block of the second block that is closest to the second block are copied, the upper neighboring block being located in the first slice.

4. The method according to claim 1, further comprising: For one or more pixels of the additional pixels of the first block, copy one or more pixels of a left neighboring block of the second block that is closest to the second block and one or more pixels of an upper neighboring block of the second block that is closest to the second block, wherein the left neighboring block is located in the first slice and the upper neighboring block is located in the first slice.

5. The method according to claim 1, wherein: The first block includes a first coding tree unit (CTU), and the second block includes a second CTU.

6. The method according to claim 1, wherein: The first slice and the second slice are obtained from a raster scan partitioning of the picture.

7. The method according to claim 1, further comprising: A coded video bitstream is generated including the one or more pictures.

8. The method according to claim 7, wherein: The coded video bitstream is generated based on the video data and a result of applying at least one filter to the first block.

9. The method according to claim 7, further comprising: The encoded video bit stream is sent to a decoding device, wherein the encoded video bit stream is sent together with signaling information, wherein the signaling information at least includes a clipping flag and an adaptive loop filter flag.

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

11. The method according to claim 1, further comprising: obtaining a coded video bitstream comprising the one or more pictures; Identifying signaling information associated with the coded video bitstream, the signaling information comprising at least an adaptive loop filter flag and an indication that loop filtering across a slice boundary is disabled; as well as The first block of the picture is decoded from the coded video bitstream.

12. The method according to claim 11, wherein: Decoding the first block of the picture from the coded video bitstream includes reconstructing the first block of the picture, and the method further includes applying at least one filter to the reconstructed first block.

13. 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 first block of a picture from the one or more pictures, the first block being located in a first slice of the picture, wherein the first slice is a raster scan slice; Determining that one or more pixels of a second block are located in a second slice of the picture, the one or more pixels being used when performing loop filtering of pixels of the first block, wherein the second block is located adjacent to a lower right corner of the first block; Determine that loop filtering across slice boundaries is disabled; Determining, based on the one or more pixels of the second block being located in the second slice and the cross-slice boundary loop filtering being disabled, that the one or more pixels of the second block are unavailable for use in performing loop filtering of the pixels of the first block; and For each pixel of the one or more pixels of the second block that is determined to be unavailable for use in performing loop filtering of the pixels of the first block, a corresponding pixel of a left neighboring block closest to the second block is copied for use in performing loop filtering of the pixels of the first block, the left neighboring block being located in the first slice.

14. The device according to claim 13, wherein: Loop filtering for the first block is performed using an adaptive loop filter (ALF).

15. The device according to claim 13, wherein: The one or more processors are configured to: For one or more pixels of the second block that are determined to be unavailable for performing loop filtering of additional pixels of the first block, one or more pixels of an upper neighboring block of the second block that is closest to the second block are copied, the upper neighboring block being located in the first slice.

16. The device according to claim 13, wherein: The one or more processors are configured to: For one or more pixels of the additional pixels of the first block, copy one or more pixels of a left neighboring block of the second block that is closest to the second block and one or more pixels of an upper neighboring block of the second block that is closest to the second block, wherein the left neighboring block is located in the first slice and the upper neighboring block is located in the first slice.

17. The device according to claim 13, wherein: The first block includes a first coding tree unit (CTU), and the second block includes a second CTU.

18. The device according to claim 13, wherein: The first slice and the second slice are obtained from a raster scan partitioning of the picture.

19. The apparatus of claim 13, wherein the one or more processors are configured to: A coded video bitstream is generated including the one or more pictures.

20. The device according to claim 19, wherein The coded video bitstream is generated based on the video data and a result of applying at least one filter to the first block.

21. The apparatus of claim 19, wherein the one or more processors are configured to: The encoded video bitstream is stored.

22. The device according to claim 19, wherein The apparatus is a mobile computing device.

23. 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 first block of a picture from the one or more pictures, the first block being located in a first slice of the picture, wherein: The first slice is a raster scan slice; Determining that one or more pixels of a second block are located in a second slice of the picture, the one or more pixels being used when performing loop filtering of pixels of the first block, wherein the second block is located adjacent to a lower right corner of the first block; Determine that loop filtering across slice boundaries is disabled; Determining, based on the one or more pixels of the second block being located in the second slice and the cross-slice boundary loop filtering being disabled, that the one or more pixels of the second block are unavailable for use in performing loop filtering of the pixels of the first block; and For each pixel of the one or more pixels of the second block that is determined to be unavailable for use in performing loop filtering of the pixels of the first block, a corresponding pixel of a left neighboring block closest to the second block is copied for use in performing loop filtering of the pixels of the first block, the left neighboring block being located in the first slice.

24. The non-transitory computer-readable storage medium of claim 23, further comprising instructions that, when executed by the one or more processors, cause the one or more processors to: For one or more pixels of the second block that are determined to be unavailable for performing loop filtering of additional pixels of the first block, one or more pixels of an upper neighboring block of the second block that is closest to the second block are copied, the upper neighboring block being located in the first slice.

25. The non-transitory computer-readable storage medium of claim 23, further comprising instructions that, when executed by the one or more processors, cause the one or more processors to: For one or more pixels of the additional pixels of the first block, one or more pixels in the left neighboring block of the second block closest to the second block and one or more pixels in the upper neighboring block of the second block closest to the second block are copied, wherein, The left neighboring block is located in the first slice, and the upper neighboring block is located in the first slice.

26. The non-transitory computer-readable storage medium of claim 23, wherein: The first block includes a first coding tree unit (CTU), and the second block includes a second CTU.

27. The non-transitory computer-readable storage medium of claim 23, wherein: The first slice and the second slice are obtained from a raster scan partitioning of the picture.

28. The non-transitory computer-readable storage medium of claim 23, further comprising instructions that, when executed by the one or more processors, cause the one or more processors to: A coded video bitstream is generated including the one or more pictures.

29. The non-transitory computer-readable storage medium of claim 23, further comprising instructions that, when executed by the one or more processors, cause the one or more processors to: obtaining a coded video bitstream comprising the one or more pictures; Identifying signaling information associated with the coded video bitstream, the signaling information comprising at least an adaptive loop filter flag and an indication that loop filtering across a slice boundary is disabled; as well as The first block of the picture is decoded from the coded video bitstream.