Constraining an operation bit depth for adaptive loop filtering that codes video data at different bit depths
By constraining the operational bit depth of ALF to a fixed value, the problem of redesigning ALF modules under high bit depth is solved, and efficient video decoding cost optimization is achieved.
Patent Information
- Application Number
- CN202180064774.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-09-02
- Filing Date
- 2021-09-03
- Publication Date
- 2026-02-13
- Estimated Expiration
- 2041-09-03
AI Technical Summary
When reconstructing samples at high bit depths, existing video decoders require redesigning the classifier and filter modules of the adaptive luminance loop filter (ALF), leading to increased engineering resource consumption and higher costs.
By constraining the operating bit depth of ALF to a fixed bit depth, and utilizing existing classifier and filtering modules, it can adapt to the decoding of high bit depth video data, avoiding redesign.
This enables the effective use of existing ALF modules in high-bit-depth video decoding, reducing implementation costs and resource requirements.
Smart Images

Figure CN116210222B_ABST
Abstract
Description
[0001] This application claims priority to U.S. Application No. 17 / 465,149, filed September 2, 2021, and U.S. Provisional Patent Application No. 63 / 085,957, filed September 30, 2020, the entire contents of each of which are incorporated herein by reference. U.S. Application No. 17 / 465,149, filed September 2, 2021, claims the benefit of U.S. Provisional Patent Application No. 63 / 085,957, filed September 30, 2020. Technical Field
[0002] This disclosure relates to video encoding and video decoding. Background Technology
[0003] Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital live broadcast systems, wireless broadcasting systems, personal digital assistants (PDAs), laptops or desktop computers, tablets, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radio phones (so-called "smartphones"), video conferencing equipment, video streaming devices, and more. Digital video devices implement video decoding technologies (such as those described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 (Part 10, Advanced Video Decoding (AVC)), ITU-T H.265 / High Efficiency Video Decoding (HEVC), and extensions to such standards). By implementing such video decoding technologies, video devices can more efficiently send, receive, encode, decode, and / or store digital video information.
[0004] Video decoding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video decoding, video slices (e.g., video pictures or portions of video pictures) can be segmented into video blocks, which may also be referred to as decoding tree units (CTUs), decoding units (CUs), and / or decoding nodes. Video blocks in a slice of a picture that has been intra-decoded (I) are encoded using spatial prediction relative to reference samples in adjacent blocks within the same picture. Video blocks in a slice of a picture that has been inter-decoded (P or B) can use spatial prediction relative to reference samples in adjacent blocks within the same picture or temporal prediction relative to reference samples in other reference pictures. A picture may be referred to as a frame, and a reference picture may be referred to as a reference frame. Summary of the Invention
[0005] In summary, this disclosure describes techniques for constraining the operational bit depth of the Adaptive Loop Filter (ALF) processing stage in codecs such as Basic Video Decoding (EVC), Universal Video Decoding (VVC), or other video decoding standards. The disclosed techniques allow for the reuse of ALF filter components targeted at lower bit depths (e.g., 10 bits), for example, in high bit depth profile codecs (e.g., high bit depth profile EVC or VVC codecs), rather than redesigning such components to operate at high bit depths.
[0006] In one example, a method includes: adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classifying the reconstructed samples at the fixed bit depth; determining a filter based on the classification; adaptively loop filtering the reconstructed samples at the input bit depth based on the determined filter; and processing the adaptively loop filtered samples.
[0007] In one example, a device includes: a memory configured to store video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors being configured to: adjust the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and process the adaptively loop-filtered samples.
[0008] In one example, a non-transitory computer-readable storage medium stores instructions that, when executed, cause one or more processors to: adjust the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and process the adaptively loop-filtered samples.
[0009] In one example, an apparatus includes: a unit for adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; a unit for classifying the reconstructed samples at the fixed bit depth; a unit for determining a filter based on the classification; a unit for adaptively loop-filtering the reconstructed samples at the input bit depth based on the determined filter; and a unit for processing the adaptively loop-filtered samples.
[0010] In one example, a method includes: constraining the operation of an adaptive loop filter (ALF) to a fixed operation bit depth; using the ALF with operations constrained to the fixed operation bit depth to adaptively loop filter samples of a block of video data; and decoding the block based on the adaptively loop filtered samples.
[0011] In another example, a device includes: a memory configured to store video data; and one or more processors implemented in a circuit and coupled to the memory, the one or more processors being configured to perform any of the techniques of this disclosure.
[0012] In another example, a device includes at least one unit of any of the technologies used to perform the present disclosure.
[0013] In another example, a computer-readable storage medium is encoded with instructions that, when executed, cause a programmable processor to perform any of the techniques described in this disclosure.
[0014] Details of one or more examples are set forth in the accompanying drawings and the following description. Other features, objects, and advantages will be apparent from the specification, drawings, and claims. Attached Figure Description
[0015] Figure 1 This is a block diagram illustrating an example video encoding and decoding system that can perform the techniques described in this disclosure.
[0016] Figure 2A and Figure 2B This is a conceptual diagram showing an example quadtree binary tree (QTBT) structure and its corresponding decoding tree unit (CTU).
[0017] Figure 3 This is a block diagram illustrating an example video encoder that can perform the techniques described in this disclosure.
[0018] Figure 4 This is a block diagram illustrating an example video decoder that can perform the techniques described in this disclosure.
[0019] Figure 5 This is a conceptual diagram illustrating an example architecture of an adaptive loop filter (ALF).
[0020] Figure 6 This is a conceptual diagram showing the shape of an example ALF filter.
[0021] Figure 7A -D is a conceptual diagram illustrating the secondary sampling positions used in Laplace calculations.
[0022] Figure 8 This is a block diagram of an example brightness ALF architecture.
[0023] Figure 9 This is a block diagram illustrating an example luminance ALF architecture based on the technology described in this disclosure.
[0024] Figure 10 This is a flowchart illustrating an example ALF luminance filtering technique according to this disclosure.
[0025] Figure 11 This is a flowchart illustrating an example method for encoding the current block according to the technology of this disclosure.
[0026] Figure 12 This is a flowchart illustrating an example method for decoding the current block according to the technology of this disclosure. Detailed Implementation
[0027] Video decoding standards and decoders may include the use of high bit depths when decoding video data, rather than the lower bit depths (e.g., 10 bits) of past video decoding standards and decoders. Two stages or modules in the stage or module of the Luminosity Adaptive Loop Filter (ALF) of some video decoders operate on reconstructed samples. Such modules may include a classifier module and a filtering module. With the introduction of high bit-depth video data decoding (e.g., 12-bit, 14-bit, 16-bit), ALF implementations will require redesigning these two modules to support the higher bit depths. The classifier module can be relatively complex. Redesigning such modules can require significant engineering resources and increase the cost of implementing an ALF for high bit-depth video data decoding.
[0028] According to the technology of this disclosure, the operation of the ALF classifier module can be constrained to a fixed operating bit depth, which can differ from the bit depth of the reconstructed samples (e.g., high bit depth). In this way, existing classifier and filter module designs can be used in conjunction with the constraints without redesign to support decoding of high bit depth video data.
[0029] Figure 1This is a block diagram illustrating an example video encoding and decoding system 100 capable of performing the techniques of this disclosure. In summary, the techniques of this disclosure relate to decoding (encoding and / or decoding) video data. Typically, video data includes any data used for processing video. Therefore, video data can include raw, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata (e.g., signaling data).
[0030] like Figure 1 As shown, in this example, system 100 includes source device 102, which provides encoded video data to be decoded and displayed by destination device 116. Specifically, source device 102 provides the video data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a wide variety of devices, including desktop computers, laptop computers, mobile devices, tablet computers, set-top boxes, mobile phones (such as smartphones), televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, broadcast receiver devices, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and may therefore be referred to as wireless communication devices.
[0031] exist Figure 1 In the example, source device 102 includes a video source 104, a memory 106, a video encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a video decoder 300, a memory 120, and a display device 118. According to this disclosure, the video encoder 200 of source device 102 and the video decoder 300 of destination device 116 can be configured to apply techniques for constraining the operating bit depth for adaptive loop filtering. Therefore, source device 102 represents an example of a video encoding device, while destination device 116 represents an example of a video decoding device. In other examples, the source and destination devices may include other components or arrangements. For example, source device 102 may receive video data from an external video source such as an external camera. Similarly, destination device 116 may interface with an external display device, rather than including an integrated display device.
[0032] like Figure 1The system 100 shown is merely an example. Typically, any digital video encoding and / or decoding device can perform techniques for constraining the bit depth used for adaptive loop filtering. Source device 102 and destination device 116 are merely examples of such decoding devices, where source device 102 generates decoded video data for transmission to destination device 116. In this disclosure, "decoding device" refers to a device that performs the decoding (e.g., encoding and / or decoding) of data. Thus, video encoder 200 and video decoder 300 represent examples of decoding devices (specifically, video encoder and video decoder). In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes video encoding and decoding components. Therefore, system 100 can support unidirectional or bidirectional video transmission between source device 102 and destination device 116, for example, for video streaming, video playback, video broadcasting, or video telephony.
[0033] Typically, video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides a sequential series of pictures (also referred to as "frames") of the video data to video encoder 200, which encodes the data used for the pictures. Video source 104 of source device 102 may include video capture devices such as cameras, video archive units containing previously captured raw video, and / or video feed interfaces for receiving video from video content providers. Alternatively, video source 104 may generate computer graphics-based data as source video, or a combination of live video, archived video, and computer-generated video. In each case, video encoder 200 encodes the captured, pre-captured, or computer-generated video data. Video encoder 200 may rearrange the pictures from their received order (sometimes referred to as "display order") to a decoding order for decoding. Video encoder 200 may generate a bitstream comprising the encoded video data. Then, the source device 102 can output the encoded video data to the computer-readable medium 110 via the output interface 108 so that it can be received and / or retrieved by, for example, the input interface 122 of the destination device 116.
[0034] The memory 106 of source device 102 and the memory 120 of destination device 116 represent general-purpose memory. In some examples, memories 106 and 120 may store raw video data, such as raw video from video source 104 and raw decoded video data from video decoder 300. Alternatively, memories 106 and 120 may store software instructions executable by, for example, video encoder 200 and video decoder 300. Although memories 106 and 120 are shown separately from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memories 106 and 120 may store, for example, encoded video data output from video encoder 200 and input to video decoder 300. In some examples, portions of memories 106 and 120 may be allocated as one or more video buffers, for example, to store raw decoded and / or encoded video data.
[0035] Computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded video data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium that enables source device 102 to directly transmit encoded video data to destination device 116 in real time, for example, via a radio frequency network or a computer-based network. Output interface 108 can modulate the transmitted signal including the encoded video data according to a communication standard such as a wireless communication protocol, and input interface 122 can demodulate the received transmitted signal according to a communication standard such as a wireless communication protocol. The communication medium can include any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium can include a router, switch, base station, or any other device that may be useful for facilitating communication from source device 102 to destination device 116.
[0036] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as hard disk drives, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.
[0037] In some examples, source device 102 can output encoded video data to file server 114 or another intermediate storage device that can store the encoded video data generated by source device 102. Destination device 116 can access the stored video data from file server 114 via streaming or downloading.
[0038] File server 114 can be any type of server device capable of storing encoded video data and sending such encoded video data to destination device 116. File server 114 can represent a web server (e.g., for a website), a server configured to provide file transfer protocol services (such as File Transfer Protocol (FTP) or One-Way Transfer File Delivery (FLUTE) protocol), a Content Delivery Network (CDN) device, a Hypertext Transfer Protocol (HTTP) server, a Multimedia Broadcast Multicast Service (MBMS) or Enhanced MBMS (eMBMS) server, and / or a Network Attached Storage (NAS) device. File server 114 can additionally or alternatively implement one or more HTTP streaming protocols, such as HTTP-based Dynamic Adaptive Streaming (DASH), HTTP Real-Time Streaming (HLS), Real-Time Streaming Protocol (RTSP), HTTP Dynamic Streaming, etc.
[0039] Destination device 116 can access encoded video data from file server 114 via any standard data connection, including an internet connection. This can include wireless channels (e.g., Wi-Fi connections), wired connections (e.g., digital subscriber line (DSL), cable modems, etc.), or combinations thereof, suitable for accessing encoded video data stored on file server 114. Input interface 122 can be configured to operate according to any one or more of the various protocols discussed above for retrieving or receiving media data from file server 114, or other such protocols for retrieving media data.
[0040] Output interface 108 and input interface 122 can represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 can be configured to transmit data (such as encoded video data) according to cellular communication standards (such as 4G, 4G-LTE (Long Term Evolution), improved LTE, 5G, etc.). In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to operate according to other wireless standards (such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee)). TM Bluetooth TM The source device 102 and / or destination device 116 may include corresponding system-on-chip (SoC) devices. For example, source device 102 may include an SoC device for performing the functions assigned to video encoder 200 and / or output interface 108, and destination device 116 may include an SoC device for performing the functions assigned to video decoder 300 and / or input interface 122.
[0041] The technology disclosed herein 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 (such as HTTP-based Dynamic Adaptive Streaming (DASH)), digital video encoded onto data storage media, decoding digital video stored on data storage media, or other applications.
[0042] The input interface 122 of the destination device 116 receives an encoded video bitstream from a computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, etc.). The encoded video bitstream may include signaling information defined by the video encoder 200, such as syntax elements (also used by the video decoder 300), which have values describing the characteristics and / or processing of video blocks or other decoding units (e.g., slices, pictures, picture groups, sequences, etc.). The display device 118 displays a decoded image of the decoded video data to the user. The display device 118 may represent any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.
[0043] Despite Figure 1Not shown, but in some examples, the video encoder 200 and video decoder 300 may each be integrated with the audio encoder and / or audio decoder, and may include appropriate MUX-DEMUX units or other hardware and / or software to process multiplexed streams that include both audio and video in a common data stream. Where applicable, the MUX-DEMUX unit may conform to the ITU H.223 multiplexer protocol or other protocols (such as User Datagram Protocol (UDP)).
[0044] The video encoder 200 and video decoder 300 can each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is implemented in part in software, the device may store instructions for the software in a suitable non-transitory computer-readable medium and use one or more processors to execute the instructions in hardware to perform the technology of this disclosure. Each of the video encoder 200 and video decoder 300 may be included in one or more encoders or decoders, and either encoder or decoder may be integrated as part of a combined encoder / decoder (CODEC) in the respective device. Devices including the video encoder 200 and / or video decoder 300 may include integrated circuits, microprocessors, and / or wireless communication devices (such as cellular phones).
[0045] The video encoder 200 and video decoder 300 can operate according to video decoding standards such as ITU-T H.265 (also known as the High Efficiency Video Coding (HEVC) standard) or extensions thereof such as MultiView or Scalable Video Coding Extensions. Alternatively, the video encoder 200 and video decoder 300 can operate according to other proprietary or industry standards such as ITU-T H.266 (also known as Universal Video Coding (VVC)). A draft of the VVC standard is described in the following document: Bross et al., “Versatile Video Coding (Draft 10)”, Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 18th meeting by teleconference, 22 June–1 July 2020, JVET-S2001-vH (hereinafter referred to as “VVC Draft 10”). However, the technology of this disclosure is not limited to any particular decoding standard.
[0046] Typically, video encoder 200 and video decoder 300 can perform block-based decoding of images. The term "block" generally refers to a structure that includes data to be processed (e.g., encoded, decoded, or otherwise used during encoding and / or decoding). For example, a block may include a two-dimensional matrix of samples of luminance and / or chrominance data. Typically, video encoder 200 and video decoder 300 can decode video data represented in YUV (e.g., Y, Cb, Cr) format. That is, instead of decoding the red, green, and blue (RGB) data used for images, video encoder 200 and video decoder 300 can decode both luminance and chrominance components, where chrominance components may include both red hue and blue hue chrominance components. In some examples, video encoder 200 converts the received RGB-formatted data to a YUV representation before encoding, and video decoder 300 converts the YUV representation to RGB format. Alternatively, preprocessing and post-processing units (not shown) can perform these conversions.
[0047] In summary, this disclosure may relate to the decoding (e.g., encoding and decoding) of images to include the process of encoding or decoding the data of an image. Similarly, this disclosure may relate to the decoding of blocks of an image to include the process of encoding or decoding the data used for the blocks (e.g., prediction and / or residual decoding). Encoded video bitstreams typically include a series of values for representing decoding decisions (e.g., decoding modes) and syntax elements that segment the image into blocks. Therefore, references to decoding images or blocks should generally be understood as decoding the values of the syntax elements used to form images or blocks.
[0048] HEVC defines various blocks, including decoding units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video decoder (such as a video encoder 200) partitions a decoding tree unit (CTU) into CUs based on a quadtree structure. That is, the video decoder partitions the CTU and CU into four equal, non-overlapping squares, and each node of the quadtree has zero or four child nodes. Nodes without child nodes can be called "leaf nodes," and the CU of such leaf nodes can include one or more PUs and / or one or more TUs. The video decoder can further partition PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents a partition of a TU. In HEVC, PUs represent inter-frame prediction data, while TUs represent residual data. CUs with intra-frame prediction include intra-frame prediction information, such as intra-frame mode indication.
[0049] As another example, video encoder 200 and video decoder 300 can be configured to operate according to VCC. According to VCC, the video decoder (such as video encoder 200) segments the image into multiple decoding tree units (CTUs). Video encoder 200 can segment CTUs according to a tree structure (such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure). The QTBT structure eliminates the concept of multiple segmentation types, such as the separation between CUs, PUs, and TUs in HEVC. The QTBT structure includes two levels: a first level based on quadtree segmentation and a second level based on binary tree segmentation. The root node of the QTBT structure corresponds to a CTU. The leaf nodes of the binary tree correspond to decoding units (CUs).
[0050] In the MTT partitioning structure, blocks can be partitioned using quadtree (QT) partitioning, binary tree (BT) partitioning, and one or more types of ternary tree (TT) partitioning (also known as triplet tree (TT)) partitioning. A ternary tree or triplet tree partitioning is a partition in which a block is split into three sub-blocks. In some examples, a ternary tree or triplet tree partitioning divides a block into three sub-blocks without splitting the original block by a center. The partitioning types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.
[0051] In some examples, the video encoder 200 and the video decoder 300 may use a single QTBT or MTT structure to represent each of the luma and chroma components, while in other examples, the video encoder 200 and the video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luma component and another QTBT / MTT structure for the two chroma components (or two QTBT / MTT structures for the respective chroma components).
[0052] The video encoder 200 and video decoder 300 can be configured to use quadtree segmentation, QTBT segmentation, MTT segmentation, or other segmentation structures based on HEVC. For illustrative purposes, a description of the techniques of this disclosure is given with respect to QTBT segmentation. However, it should be understood that the techniques of this disclosure can also be applied to video decoders configured to use quadtree segmentation or other types of segmentation.
[0053] In some examples, a CTU includes a decoded tree block (CTB) of luminance samples, two corresponding CTBs of chrominance samples of an image with three sample arrays, or a CTB of samples of a monochrome image or an image decoded using three separate color planes, and a syntax structure for decoding the samples. A CTB can be an N×N block of samples (for some value of N) such that dividing a component into a CTB is a partition. A component is an array or a single sample of one of the three arrays (one luminance and two chrominance) constituting an image in a 4:2:0, 4:2:2, or 4:4:4 color format, or an array or a single sample of an array constituting an image in monochrome format. In some examples, a decoded block is an M×N block of samples (for some values of M and N) such that dividing a CTB into a decoded block is a partition.
[0054] Blocks (e.g., CTUs or CUs) can be grouped in various ways within an image. As an example, a brick can refer to a rectangular area of a row of CTUs within a specific tile in an image. A tile can be a rectangular area of a CTU within a specific tile column and a specific tile row in an image. A tile column refers to a rectangular area of a CTU with a height equal to the height of the image and a width specified by a syntax element (e.g., in an image parameter set). A tile row refers to a rectangular area of a CTU with a height specified by a syntax element (e.g., in an image parameter set) and a width equal to the width of the image.
[0055] In some examples, a tile may be divided into multiple bricks, each brick potentially comprising one or more CTU rows within the tile. A tile that is not divided into multiple bricks may also be referred to as a brick. However, a brick that is a true subset of a tile may not be referred to as a tile.
[0056] The bricks in an image can also be arranged as slices. A slice can be an integer number of bricks in the image, which can be uniquely contained within a single Network Abstraction Layer (NAL) unit. In some examples, a slice includes multiple complete tiles or a continuous sequence of complete bricks consisting of only one tile.
[0057] This disclosure uses "NxN" and "N by N" interchangeably to refer to the sample size of a block (such as a CU or other video block) in the vertical and horizontal dimensions, for example, 16x16 samples or 16 by 16 samples. Typically, a 16x16 CU will have 16 samples in the vertical direction (y = 16) and 16 samples in the horizontal direction (x = 16). Similarly, an NxNCU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. Samples in a CU can be arranged in rows and columns. Furthermore, a CU does not necessarily need to have the same number of samples in the horizontal direction as it does in the vertical direction. For example, a CU can include NxM samples, where M is not necessarily equal to N.
[0058] The video encoder 200 encodes video data for use in predicting and / or residual information, as well as other information, for the CU. The prediction information indicates how the CU will be predicted to form a prediction block for the CU. The residual information typically represents the sample-by-sample difference between a sample of the CU before encoding and the prediction block.
[0059] To predict the Cubic Frame (CU), the video encoder 200 typically forms prediction blocks for the CU using either inter-frame prediction or intra-frame prediction. Inter-frame prediction generally refers to predicting the CU based on data from previously decoded images, while intra-frame prediction generally refers to predicting the CU based on data from previously decoded images of the same frame. To perform inter-frame prediction, the video encoder 200 can generate prediction blocks using one or more motion vectors. The video encoder 200 can typically perform a motion search to identify, for example, a reference block that closely matches the CU in terms of the difference between the CU and a reference block. The video encoder 200 can calculate a difference metric using the sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared difference (MSD), or other such difference calculations to determine whether the reference block closely matches the current CU. In some examples, the video encoder 200 can use unidirectional or bidirectional prediction to predict the current CU.
[0060] Some examples of VCC also provide an affine motion compensation mode, which can be considered an inter-frame prediction mode. In affine motion compensation mode, the video encoder 200 can determine two or more motion vectors representing non-translational motion (such as zooming in or out, rotation, perspective motion, or other irregular types of motion).
[0061] To perform intra-frame prediction, the video encoder 200 can select an intra-frame prediction mode to generate prediction blocks. Some examples of VCC provide sixty-seven intra-frame prediction modes, including various directional modes, as well as planar and DC modes. Typically, the video encoder 200 selects an intra-frame prediction mode that describes the samples of the current block (e.g., a block of a CU) to be predicted based on, which are the neighboring samples of the current block. Assuming that the video encoder 200 decodes the CTU and CU in raster scan order (from left to right, from top to bottom), such samples can typically be located above, to the upper left, or to the left of the current block within the same image.
[0062] The video encoder 200 encodes data representing the prediction mode used for the current block. For example, for inter-frame prediction modes, the video encoder 200 may encode data indicating which of the various available inter-frame prediction modes is used, as well as motion information for the corresponding mode. For unidirectional or bidirectional inter-frame prediction, for example, the video encoder 200 may use Advanced Motion Vector Prediction (AMVP) or merging modes to encode motion vectors. The video encoder 200 may use similar modes to encode motion vectors used for affine motion compensation modes.
[0063] Following a prediction, such as intra-frame or inter-frame prediction of a block, the video encoder 200 can compute residual data for that block. The residual data (such as a residual block) represents the sample-by-sample difference between the block and the prediction block used to form the block, which is formed using the corresponding prediction mode. The video encoder 200 can apply one or more transforms to the residual block to produce transformed data in the transform domain rather than the sample domain. For example, the video encoder 200 can apply a Discrete Cosine Transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data. Additionally, the video encoder 200 can apply a secondary transform after the first transform, such as a Mode-dependent Inseparable Quadratic Transform (MDNSST), a Signal-dependent Transform, a Karhunen-Loeve Transform (KLT), etc. The video encoder 200 produces transform coefficients after applying one or more transforms.
[0064] As described above, after any transformation to produce transform coefficients, the video encoder 200 can perform quantization of the transform coefficients. Quantization generally refers to the process in which the transform coefficients are quantized to potentially reduce the amount of data used to represent them, thereby providing further compression. By performing the quantization process, the video encoder 200 can reduce the bit depth associated with some or all of the transform coefficients. For example, the video encoder 200 can round an n-bit value down to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder 200 can perform a bitwise right shift of the values to be quantized.
[0065] After quantization, the video encoder 200 can scan the transform coefficients to generate a one-dimensional vector from a two-dimensional matrix including the quantized transform coefficients. The scan can be designed to place higher-energy (and therefore lower-frequency) transform coefficients before the vector and lower-energy (and therefore higher-frequency) transform coefficients after the vector. In some examples, the video encoder 200 can utilize a predefined scan order to scan the quantized transform coefficients to produce a serialized vector, and then entropy-encode the quantized transform coefficients of the vector. In other examples, the video encoder 200 can perform an adaptive scan. After scanning the quantized transform coefficients to form a one-dimensional vector, the video encoder 200 can entropy-encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic decoding (CABAC). The video encoder 200 can also entropy-encode the values of syntax elements used to describe metadata associated with the encoded video data for use by the video decoder 300 when decoding the video data.
[0066] To perform CABAC, the video encoder 200 can assign context within a context model to the symbols to be transmitted. Context may involve, for example, whether the neighboring values of a symbol are zero. Probability determination can be based on the context assigned to the symbols.
[0067] The video encoder 200 can also generate syntax data (such as block-based syntax data, image-based syntax data, and sequence-based syntax data) or other syntax data (such as sequence parameter sets (SPS), image parameter sets (PPS), or video parameter sets (VPS)) for the video decoder 300, for example, in image headers, block headers, or slice headers. Similarly, the video decoder 300 can decode such syntax data to determine how to decode the corresponding video data.
[0068] In this way, the video encoder 200 can generate a bitstream that includes encoded video data, such as syntax elements describing the segmentation of the image into blocks (e.g., CUs) and prediction and / or residual information for these blocks. Finally, the video decoder 300 can receive the bitstream and decode the encoded video data.
[0069] Typically, the video decoder 300 performs the reverse process of the video encoder 200 to decode the encoded video data of the bitstream. For example, the video decoder 300 can use CABAC to decode the values of syntax elements used for the bitstream in a manner substantially similar to, but reversed, the CABAC encoding process of the video encoder 200. Syntax elements can define segmentation information for segmenting images into CTUs, and for segmenting each CTU according to a corresponding segmentation structure (such as a QTBT structure) to define the CUs of the CTU. Syntax elements can also define prediction and residual information for blocks (e.g., CUs) of the video data.
[0070] The residual information can be represented, for example, by quantized transform coefficients. The video decoder 300 can inversely quantize and inversely transform the quantized transform coefficients of the block to regenerate a residual block for that block. The video decoder 300 uses a prediction mode (intra-frame prediction or inter-frame prediction) and associated prediction information (e.g., motion information for inter-frame prediction) to form a prediction block for that block. The video decoder 300 can then combine the prediction block and the residual block (on a sample-by-sample basis) to regenerate the original block. The video decoder 300 can perform additional processing, such as performing a deblocking process to reduce visual artifacts along the block boundaries.
[0071] According to the techniques disclosed herein, the operating bit depth for the Adaptive Loop Filter (ALF) processing stage is constrained. The disclosed techniques allow for the reuse of ALF filter components targeted at lower bit depths (e.g., 10 bits), for example, in high bit depth profile codecs (e.g., high bit depth profile EVC or VVC codecs), rather than redesigning such components to operate at high bit depths.
[0072] According to the technology of this disclosure, a method includes: adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classifying the reconstructed samples at the fixed bit depth; determining a filter based on the classification; adaptively loop filtering the reconstructed samples at the input bit depth based on the determined filter; and processing the adaptively loop filtered samples.
[0073] According to the technology of this disclosure, the video encoder 200 or the video decoder 300 can perform the following operations: adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classifying the reconstructed samples at the fixed bit depth; determining a filter based on the classification; performing adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and processing the adaptively loop-filtered samples.
[0074] According to the technology of this disclosure, a non-transitory computer-readable storage medium stores instructions that, when executed, cause one or more processors of a video encoder 200 or a video decoder 300 to perform the following operations: adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classifying the reconstructed samples at the fixed bit depth; determining a filter based on the classification; performing adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and processing the adaptively loop-filtered samples.
[0075] According to the technology of this disclosure, a video encoder 200 or a video decoder 300 includes: a unit for adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; a unit for classifying the reconstructed samples at the fixed bit depth; a unit for determining a filter based on the classification; a unit for adaptively loop-filtering the reconstructed samples at the input bit depth based on the determined filter; and a unit for processing the adaptively loop-filtered samples.
[0076] According to the technology of this disclosure, a method includes: constraining the operation of an adaptive loop filter (ALF) to a fixed operation bit depth; using the ALF with operations constrained to the fixed operation bit depth to adaptively loop filter samples of a block of video data; and decoding the block based on the adaptively loop filtered samples.
[0077] According to the technology of this disclosure, a video encoder 200 or a video decoder 300 includes: a memory configured to store video data; and one or more processors implemented in a circuit and coupled to the memory, the one or more processors being configured to perform any of the technologies of this disclosure.
[0078] According to the technology of this disclosure, the video encoder 200 or the video decoder 300 includes at least one unit for performing any of the technologies of this disclosure.
[0079] According to the technology of this disclosure, a computer-readable storage medium is encoded with instructions that, when executed, cause a programmable processor of a video encoder 200 or a video decoder 300 to perform any of the techniques of this disclosure.
[0080] In summary, this disclosure may involve "signaling" certain information (such as syntax elements). The term "signaling" can generally refer to the transmission of values for syntax elements and / or other data for decoding encoded video data. That is, video encoder 200 can signal values for syntax elements in the bitstream. Generally, signaling refers to generating values in the bitstream. As described above, source device 102 can transmit the bitstream to destination device 116 substantially in real time or not in real time (such as when syntax elements are stored in storage device 112 for later retrieval by destination device 116).
[0081] Figure 2A and 2B This is a conceptual diagram illustrating an example Quadtree Binary Tree (QTBT) structure 130 and its corresponding Decoding Tree Unit (CTU) 132. Solid lines represent quadtree splits, while dashed lines indicate binary tree splits. In each split (i.e., non-leaf) node of the binary tree, a flag is signaled to indicate which split type (i.e., horizontal or vertical) is used, where, in this example, 0 indicates a horizontal split and 1 indicates a vertical split. For quadtree splits, since the quadtree node splits the block horizontally and vertically into four sub-blocks of equal size, there is no need to indicate the split type. Therefore, the video encoder 200 can encode the following, and the video decoder 300 can decode the following: syntax elements (such as split information) for the region tree level (i.e., solid lines) of the QTBT structure 130, and syntax elements (such as split information) for the prediction tree level (i.e., dashed lines) of the QTBT structure 130. The video encoder 200 can encode video data (such as prediction and transform data) for a CU represented by the terminal leaf nodes of the QTBT structure 130, while the video decoder 300 can decode the video data.
[0082] generally, Figure 2BThe CTU 132 can be associated with parameters that define the size of the blocks corresponding to the nodes at the first and second levels of the QTBT structure 130. These parameters can include the CTU size (representing the size of the CTU 132 in the sample), the minimum quadtree size (MinQTSize, which represents the minimum allowed quadtree leaf node size), the maximum binary tree size (MaxBTSize, which represents the maximum allowed binary tree root node size), the maximum binary tree depth (MaxBTDepth, which represents the maximum allowed binary tree depth), and the minimum binary tree size (MinBTSize, which represents the minimum allowed binary tree leaf node size).
[0083] The root node corresponding to the CTU in a QTBT structure can have four child nodes at the first level of the QTBT structure, each child node being segmented according to a quadtree partition. That is, the nodes at the first level are leaf nodes (without child nodes) or have four child nodes. An example of QTBT structure 130 represents such a node as including a parent node and child nodes with solid-line branches. If the nodes at the first level are not larger than the maximum allowed binary tree root node size (MaxBTSize), these nodes can be further partitioned by the corresponding binary tree. The binary tree partitioning of a node can be iterated until the nodes resulting from the partitioning reach the minimum allowed binary tree leaf node size (MinBTSize) or the maximum allowed binary tree depth (MaxBTDepth). An example of QTBT structure 130 represents such a node as having dashed-line branches. The binary tree leaf nodes are called decoding units (CUs), which are used for prediction (e.g., intra-image or inter-image prediction) and transformation without further partitioning. As discussed above, CUs can also be referred to as “video chunks” or “blocks”.
[0084] In one example of a QTBT segmentation structure, the CTU size is set to 128x128 (luminance sample and two corresponding 64x64 chrominance samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (for both width and height) is set to 4, and MaxBTDepth is set to 4. First, a quadtree segmentation is applied to the CTU to generate quadtree leaf nodes. Quadtree leaf nodes can have sizes ranging from 16x16 (i.e., MinQTSize) to 128x128 (i.e., the CTU size). If a quadtree leaf node is 128x128, it will not be further split by the binary tree because this size exceeds MaxBTSize (i.e., 64x64 in this example). Otherwise, the quadtree leaf node will be further split by the binary tree. Therefore, the quadtree leaf node is also used as the root node of the binary tree and has a binary tree depth of 0. When the depth of a binary tree reaches MaxBTDepth (4 in this example), further splitting is not allowed. A binary tree node with a width equal to MinBTSize (4 in this example) means that further vertical splitting (i.e., width-based division) is not allowed for that binary tree node. Similarly, a binary tree node with a height equal to MinBTSize means that further horizontal splitting (i.e., height-based division) is not allowed for that binary tree node. As mentioned above, the leaf nodes of the binary tree are called CUs and are further processed according to prediction and transformation without further splitting.
[0085] Figure 3 This is a block diagram illustrating an example video encoder 200 that can perform the techniques described in this disclosure. Figure 3 This disclosure is provided for illustrative purposes and should not be construed as limiting the techniques illustrated and described in this disclosure in a general manner. For illustrative purposes, this disclosure describes a video encoder 200 based on VVC (ITU-T H.266, in deployment) and HEVC (ITU-TH.265) technologies. However, the technologies of this disclosure can be implemented by video encoding devices configured for other video decoding standards.
[0086] exist Figure 3In the example, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any or all of the video data memory 230, mode selection unit 202, residual generation unit 204, transform processing unit 206, quantization unit 208, inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, filter unit 216, DPB 218, and entropy coding unit 220 can be implemented in one or more processors or in processing circuitry. For example, the units of the video encoder 200 can be implemented as one or more circuit or logic elements as part of hardware circuitry, or as part of a processor, ASIC, or FPGA. Furthermore, the video encoder 200 may include additional or alternative processors or processing circuitry to perform these and other functions.
[0087] The video data storage device 230 can store video data to be encoded by the components of the video encoder 200. The video encoder 200 can obtain data from, for example, a video source 104 (…). Figure 1 The video data memory 230 receives video data stored in the video data memory 230. The DPB 218 can act as a reference picture memory, storing reference video data for use when the video encoder 200 predicts subsequent video data. The video data memory 230 and DPB 218 can be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The video data memory 230 and DPB 218 can be provided by the same memory device or separate memory devices. In various examples, the video data memory 230 can be on-chip (as shown) with other components of the video encoder 200, or off-chip relative to those components.
[0088] In this disclosure, references to video data memory 230 should not be construed as limited to memory within video encoder 200 (unless so specifically described) or to memory outside video encoder 200 (unless so specifically described). Rather, references to video data memory 230 should be understood as reference memory storing video data received by video encoder 200 for encoding (e.g., video data for the current block to be encoded). Figure 1 The memory 106 can also provide temporary storage for the outputs from the various units of the video encoder 200.
[0089] Explanation Figure 3 The various units help to understand the operations performed by the video encoder 200. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide a specific function and are pre-configured regarding the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in terms of the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more of these units can be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units can be integrated circuits.
[0090] The video encoder 200 may include an arithmetic logic unit (ALU), an essential function unit (EFU), digital circuitry, analog circuitry, and / or a programmable core, all formed by programmable circuitry. In an example where software executed by programmable circuitry is used to perform the operation of the video encoder 200, memory 106 ( Figure 1 The video encoder 200 may store instructions (e.g., object code) of the software received and executed by the video encoder 200, or another memory (not shown) within the video encoder 200 may store such instructions.
[0091] The video data storage unit 230 is configured to store the received video data. The video encoder 200 can retrieve images of the video data from the video data storage unit 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data storage unit 230 can be the raw video data to be encoded.
[0092] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra-frame prediction unit 226. The mode selection unit 202 may include additional functional units that perform video prediction based on other prediction modes. As an example, the mode selection unit 202 may include a palette unit, an intra-frame block copying unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, etc.
[0093] Mode selection unit 202 typically coordinates multiple coding paths to test combinations of coding parameters and the rate-distortion values obtained for such combinations. Coding parameters may include segmenting the CTU into CUs, the prediction mode for the CUs, the transformation type of the residual data for the CUs, and the quantization parameters for the residual data for the CUs. Mode selection unit 202 can ultimately select a combination of coding parameters that yields a better rate-distortion value than other tested combinations.
[0094] The video encoder 200 can segment images retrieved from the video data storage 230 into a series of CTUs and encapsulate one or more CTUs within a slice. The mode selection unit 202 can segment the CTUs of the image according to a tree structure (such as the QTBT structure or quadtree structure of HEVC described above). As mentioned above, the video encoder 200 can form one or more CUs by segmenting CTUs according to a tree structure. Such CUs can also generally be referred to as "video blocks" or "blocks".
[0095] Typically, mode selection unit 202 also controls its components (e.g., motion estimation unit 222, motion compensation unit 224, and intra-prediction unit 226) to generate prediction blocks for the current block (e.g., the current CU, or the overlapping portion of PU and TU in HEVC). To perform inter-frame prediction for the current block, motion estimation unit 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously decoded pictures stored in DPB 218). Specifically, motion estimation unit 222 may calculate values representing the similarity between a potential reference block and the current block, for example, based on sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared difference (MSD), etc. Motion estimation unit 222 may typically perform these calculations using sample-by-sample differences between the current block and the considered reference blocks. Motion estimation unit 222 may identify the reference block with the lowest value obtained from these calculations, indicating the reference block that most closely matches the current block.
[0096] Motion estimation unit 222 can generate one or more motion vectors (MVs) that define the position of a reference block in a reference image relative to the position of the current block in the current image. Motion estimation unit 222 can then provide the motion vectors to motion compensation unit 224. For example, for unidirectional inter-frame prediction, motion estimation unit 222 can provide a single motion vector, while for bidirectional inter-frame prediction, motion estimation unit 222 can provide two motion vectors. Motion compensation unit 224 can then use the motion vectors to generate prediction blocks. For example, motion compensation unit 224 can use the motion vectors to retrieve data for the reference blocks. As another example, if the motion vectors have fractional-sample precision, motion compensation unit 224 can interpolate the values used for the prediction blocks according to one or more interpolation filters. Furthermore, for bidirectional inter-frame prediction, motion compensation unit 224 can retrieve data for two reference blocks identified by corresponding motion vectors and combine the retrieved data, for example, by per-sample averaging or weighted averaging.
[0097] As another example, for intra-prediction or intra-prediction decoding, intra-prediction unit 226 can generate a prediction block based on samples adjacent to the current block. For example, in directional mode, intra-prediction unit 226 can typically mathematically combine the values of adjacent samples and fill these calculated values across the current block in a defined direction to generate a prediction block. As another example, in DC mode, intra-prediction unit 226 can calculate the average of the adjacent samples of the current block and generate a prediction block to include the obtained average for each sample of the prediction block.
[0098] Mode selection unit 202 provides a prediction block to residual generation unit 204. Residual generation unit 204 receives the original, uncoded version of the current block from video data memory 230 and the prediction block from mode selection unit 202. Residual generation unit 204 calculates the sample-by-sample difference between the current block and the prediction block. The resulting sample-by-sample difference defines the residual block for the current block. In some examples, residual generation unit 204 may also determine the difference between sample values in the residual block to generate the residual block using residual differential pulse decode-modulation (RDPCM). In some examples, one or more subtractor circuits performing binary subtraction may be used to form residual generation unit 204.
[0099] In the example where mode selection unit 202 divides a CU into PUs, each PU can be associated with a luma prediction unit and a corresponding chroma prediction unit. Video encoder 200 and video decoder 300 can support PUs of various sizes. As noted above, the size of a CU can refer to the size of the luma decoding block of the CU, while the size of a PU can refer to the size of the luma prediction unit of the PU. Assuming a particular CU size is 2Nx2N, video encoder 200 can support PU sizes of 2Nx2N or NxN for intra-frame prediction, and 2Nx2N, 2NxN, Nx2N, NxN, or similar symmetrical PU sizes for inter-frame prediction. Video encoder 200 and video decoder 300 can also support asymmetric segmentation for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-frame prediction.
[0100] In an example where the mode selection unit 202 does not further divide the CU into PUs, each CU can be associated with a luminance decoding block and a corresponding chrominance decoding block. As mentioned above, the size of the CU can refer to the size of the luminance decoding block of the CU. The video encoder 200 and the video decoder 300 can support CU sizes of 2Nx2N, 2NxN, or Nx2N.
[0101] For other video decoding techniques (such as intra-block copy mode decoding, affine mode decoding, and linear model (LM) mode decoding), mode selection unit 202 generates a prediction block for the current block being encoded via a corresponding unit associated with the decoding technique. In some examples (such as palette mode decoding), mode selection unit 202 may not generate a prediction block, but instead generate syntax elements indicating how the block should be reconstructed based on the selected palette. In such a mode, mode selection unit 202 can provide these syntax elements to entropy coding unit 220 for encoding.
[0102] As described above, the residual generation unit 204 receives video data for the current block and the corresponding prediction block. Then, the residual generation unit 204 generates a residual block for the current block. To generate the residual block, the residual generation unit 204 calculates the sample-by-sample difference between the prediction block and the current block.
[0103] Transform processing unit 206 applies one or more transformations to the residual block to generate a block of transform coefficients (referred to herein as a "transform coefficient block"). Transform processing unit 206 can apply various transformations to the residual block to form the transform coefficient block. For example, transform processing unit 206 can apply a discrete cosine transform (DCT), direction transform, Karhunen-Loeve transform (KLT), or conceptually similar transformations to the residual block. In some examples, transform processing unit 206 can perform multiple transformations on the residual block, such as primary and secondary transformations (e.g., rotation transformations). In some examples, transform processing unit 206 does not apply any transformations to the residual block.
[0104] Quantization unit 208 can quantize the transform coefficients in the transform coefficient block to produce a quantized transform coefficient block. Quantization unit 208 can quantize the transform coefficients of the transform coefficient block based on the quantization parameter (QP) value associated with the current block. Video encoder 200 (e.g., via mode selection unit 202) can adjust the degree of quantization applied to the transform coefficient block associated with the current block by adjusting the QP value associated with the CU. Quantization may cause information loss, and therefore, the quantized transform coefficients may have lower accuracy compared to the original transform coefficients produced by transform processing unit 206.
[0105] The inverse quantization unit 210 and the inverse transform processing unit 212 can apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block to reconstruct the residual block from the transform coefficient block. The reconstruction unit 214 can generate a reconstructed block corresponding to the current block based on the reconstructed residual block and the prediction block generated by the mode selection unit 202 (although potentially with some degree of distortion). For example, the reconstruction unit 214 can add samples of the reconstructed residual block to corresponding samples of the prediction block generated by the mode selection unit 202 to generate the reconstructed block.
[0106] Filter unit 216 can perform one or more filter operations on the reconstructed block. For example, filter unit 216 can perform deblocking to reduce block artifacts along the edges of the CU. In some examples, the operations of filter unit 216 can be skipped. In some examples, filter unit 216 can perform ALF filtering on samples of the reconstructed block. For example, filter unit 216 can adjust the input bit depth of the reconstructed samples of video data to a fixed bit depth, classify the reconstructed samples at the fixed bit depth, determine a filter based on the classification of the reconstructed samples at the fixed bit depth, and perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter.
[0107] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in an example where the filter unit 216 is not operated, the reconstruction unit 214 may store the reconstructed blocks in the DPB 218. In an example where the filter unit 216 is operated, the filter unit 216 may store the filtered reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 may retrieve a reference picture formed by the reconstructed (and potentially filtered) blocks from the DPB 218 to perform inter-frame prediction of blocks in subsequently encoded pictures. Additionally, the intra-frame prediction unit 226 may use the reconstructed blocks of the current picture in the DPB 218 to perform intra-frame prediction of other blocks in the current picture.
[0108] Typically, entropy coding unit 220 can entropy-encode syntax elements received from other functional components of video encoder 200. For example, entropy coding unit 220 can entropy-encode quantized transform coefficient blocks from quantization unit 208. As another example, entropy coding unit 220 can entropy-encode predictive syntax elements (e.g., motion information for inter-frame prediction or intra-frame mode information for intra-frame prediction) from mode selection unit 202. Entropy coding unit 220 can perform one or more entropy coding operations on syntax elements, another example of video data, to generate entropy-encoded data. For example, entropy coding unit 220 can perform context-adaptive variable-length decoding (CAVLC), CABAC, variable-to-variable (V2V) length decoding, syntax-based context-adaptive binary arithmetic decoding (SBAC), probabilistic interval partitioned entropy (PIPE) decoding, exponential Golomb coding, or another type of entropy coding operation on the data. In some examples, entropy coding unit 220 can operate in a bypass mode where syntax elements are not entropy-encoded.
[0109] The video encoder 200 can output a bitstream that includes entropy-encoded syntax elements required for reconstructing slices or blocks of images. Specifically, the entropy coding unit 220 can output a bitstream.
[0110] The above operations are described in relation to the blocks. Such a description should be understood as referring to the operations used for the luma decoding block and / or the chroma decoding block. As mentioned above, in some examples, the luma decoding block and the chroma decoding block are the luma and chroma components of the CU. In some examples, the luma decoding block and the chroma decoding block are the luma and chroma components of the PU.
[0111] In some examples, it is not necessary to repeat the operations performed for the luma decoding block for the chroma decoding block. As an example, it is not necessary to repeat the operations used to identify the motion vector (MV) and reference image for the luma decoding block to identify the MV and reference image for the chroma block. Specifically, the MV for the luma decoding block can be scaled to determine the MV for the chroma block, and the reference image can be the same. As another example, the intra-frame prediction process can be the same for both the luma and chroma decoding blocks.
[0112] In some examples, filter unit 216 can perform ALF filtering on samples of the reconstructed block. For example, filter unit 216 can adjust the input bit depth of the reconstructed samples of video data to a fixed bit depth, classify the reconstructed samples at the fixed bit depth, determine a filter based on the classification of the reconstructed samples at the fixed bit depth, and perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter.
[0113] Video encoder 200 represents an example of a device configured to encode video data, the device including: a memory configured to store the video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors being configured to: adjust the input bit depth of reconstructed samples of the video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and process the adaptively loop-filtered samples.
[0114] Video encoder 200 represents an example of a device configured to encode video data, the device including: a memory configured to store the video data; and one or more processing units implemented in circuitry and configured to: constrain the operation of an adaptive loop filter (ALF) to a fixed operating bit depth; adaptively loop filter samples of blocks of video data using the ALF with operations constrained to the fixed operating bit depth; and encode the blocks based on the adaptively loop filtered samples.
[0115] Figure 4 This is a block diagram illustrating an example video decoder 300 capable of performing the techniques described herein. Figure 4This disclosure is provided for illustrative purposes and does not limit the techniques illustrated and described in this disclosure in a general manner. For illustrative purposes, this disclosure describes a video decoder 300 based on VVC (ITU-T H.266, in deployment) and HEVC (ITU-T H.265) technologies. However, the technologies of this disclosure can be implemented by video decoding devices configured for other video decoding standards.
[0116] exist Figure 4 In the example, the video decoder 300 includes a decoded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filter unit 312, and a decoded picture buffer (DPB) 134. Any or all of the CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, filter unit 312, and DPB 134 can be implemented in one or more processors or in processing circuitry. For example, units of the video decoder 300 can be implemented as one or more circuit or logic elements as part of hardware circuitry, or as part of a processor, ASIC, or FPGA. Furthermore, the video decoder 300 may include additional or alternative processors or processing circuitry to perform these and other functions.
[0117] The prediction processing unit 304 includes a motion compensation unit 316 and an intra-prediction unit 318. The prediction processing unit 304 may include an addition unit that performs predictions based on other prediction modes. As an example, the prediction processing unit 304 may include a palette unit, an intra-block copying unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, etc. In other examples, the video decoder 300 may include more, fewer, or different functional components.
[0118] CPB memory 320 can store video data to be decoded by components of video decoder 300, such as encoded video bitstreams. For example, it can be stored from computer-readable medium 110 ( Figure 1The video data stored in the CPB memory 320 is obtained. The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from the encoded video bitstream. Additionally, the CPB memory 320 may store video data other than the syntax elements of the decoded picture, such as temporary data representing the output from various units of the video decoder 300. The DPB 314 typically stores decoded pictures that the video decoder 300 may output and / or use as reference video data when decoding subsequent data or pictures of the encoded video bitstream. The CPB memory 320 and DPB 314 may be formed of any of a variety of memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. The CPB memory 320 and DPB 314 may be provided by the same memory device or separate memory devices. In various examples, the CPB memory 320 may be on-chip with other components of the video decoder 300, or off-chip relative to those components.
[0119] Alternatively or concurrently, in some examples, the video decoder 300 can be derived from the memory 120 ( Figure 1 The decoded video data is retrieved. In other words, memory 120 can utilize CPB memory 320 to store data, as discussed above. Similarly, when some or all of the functions of video decoder 300 are implemented using software to be executed by the processing circuitry of video decoder 300, memory 120 can store instructions to be executed by video decoder 300.
[0120] This explains that in Figure 4 The various units shown help to understand the operations performed by the video decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to... Figure 3 Fixed-function circuits refer to circuits that provide a specific function and are pre-configured regarding the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in terms of the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is typically immutable. In some examples, one or more of these units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units may be integrated circuits.
[0121] The video decoder 300 may include an ALU, EFU, digital circuitry, analog circuitry, and / or a programmable core formed by programmable circuitry. In an example where the operation of the video decoder 300 is performed by software executing on the programmable circuitry, on-chip or off-chip memory may store instructions (e.g., object code) of the software received and executed by the video decoder 300.
[0122] Entropy decoding unit 302 can receive encoded video data from the CPB and perform entropy decoding on the video data to regenerate syntax elements. Prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, and filter unit 312 can generate decoded video data based on syntax elements extracted from the bitstream.
[0123] Typically, the video decoder 300 reconstructs the image on a block-by-block basis. The video decoder 300 can perform the reconstruction operation on each block individually (where the block currently being reconstructed (i.e., decoded) can be referred to as the "current block").
[0124] Entropy decoding unit 302 can entropy decode the syntax elements of the quantized transform coefficients that define the quantized transform coefficient block, as well as transform information such as quantization parameters (QPs) and / or transform mode indications. Inverse quantization unit 306 can use the QPs associated with the quantized transform coefficient block to determine the degree of quantization, and similarly, determine the degree of inverse quantization to be applied by inverse quantization unit 306. Inverse quantization unit 306 can, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. Inverse quantization unit 306 can thus form a transform coefficient block including the transform coefficients.
[0125] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 can apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, the inverse transform processing unit 308 can apply the inverse DCT, inverse integer transform, inverse Karhunen-Loeve transform (KLT), inverse rotation transform, inverse direction transform, or another inverse transform to the transform coefficient block.
[0126] Furthermore, the prediction processing unit 304 generates a prediction block based on the prediction information syntax elements entropy-decoded by the entropy decoding unit 302. For example, if the prediction information syntax elements indicate that the current block is inter-frame predicted, the motion compensation unit 316 can generate the prediction block. In this case, the prediction information syntax elements may indicate the reference picture from which the reference block is to be retrieved in the DPB 314, and a motion vector identifying the position of the reference block in the reference picture relative to the position of the current block in the current picture. The motion compensation unit 316 can typically be configured with respect to the motion compensation unit 224 ( Figure 3The method described is basically similar to the way the inter-frame prediction process is performed.
[0127] As another example, if the prediction information syntax element indicates that the current block is intra-predicted, then intra-prediction unit 318 can generate a prediction block according to the intra-prediction mode indicated by the prediction information syntax element. Again, intra-prediction unit 318 can typically be configured with respect to intra-prediction unit 226 ( Figure 3 The intra-prediction process is performed in a manner substantially similar to that described above. The intra-prediction unit 318 can retrieve data from neighboring samples of the current block from the DPB 314.
[0128] Reconstruction unit 310 can reconstruct the current block using the prediction block and the residual block. For example, reconstruction unit 310 can reconstruct the current block by adding the samples of the residual block to the corresponding samples of the prediction block.
[0129] Filter unit 312 can perform one or more filter operations on the reconstructed block. For example, filter unit 312 can perform deblocking to reduce block artifacts along the edges of the reconstructed block. The operations of filter unit 312 are not necessarily performed in all examples. In some examples, filter unit 312 can perform ALF filtering on samples of the reconstructed block. For example, filter unit 312 can adjust the input bit depth of the reconstructed samples of video data to a fixed bit depth, classify the reconstructed samples at the fixed bit depth, determine a filter based on the classification of the reconstructed samples at the fixed bit depth, and perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter.
[0130] The video decoder 300 can store the reconstructed blocks in the DPB 314. For example, in an example where the operation of the filter unit 312 is not performed, the reconstruction unit 310 can store the reconstructed blocks in the DPB 314. In an example where the operation of the filter unit 312 is performed, the filter unit 312 can store the filtered reconstructed blocks in the DPB 314. As discussed above, the DPB 314 can provide reference information (such as samples of the current image for intra-frame prediction and samples of previously decoded images for subsequent motion compensation) to the prediction processing unit 304. Furthermore, the video decoder 300 can output decoded images (e.g., decoded video) from the DPB 314 for use in applications such as... Figure 1 The subsequent presentation on display devices such as display device 118.
[0131] In this manner, video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in circuitry and communicatively coupled to the memory and configured to: adjust the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and process the adaptively loop-filtered samples.
[0132] The video decoder 300 also represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processing units implemented in circuitry and configured to: constrain the operation of an adaptive loop filter (ALF) to a fixed operating bit depth; perform adaptive loop filtering on samples of blocks of video data using the ALF with operations constrained to the fixed operating bit depth; and decode the blocks based on the adaptively loop-filtered samples.
[0133] The following describes the ALF decoding tools used in MPEG5, EVC, and VVC. ALF can be applied to samples of the reconstructed image after a deblocking filter and a Sample Adaptive Offset (SAO) filter (if present).
[0134] Figure 5 This is a conceptual diagram illustrating an example architecture of ALF. Figure 5 An example ALF can represent the ALF architecture utilized in VVC. SAO brightness 400 (e.g., SAO brightness output R...) Y (x, y) can be input into ALF luminance 410. In ALF luminance 410, SAO luminance 400 can be classified by classification module 412 and filtered by filtering module 414 to generate ALF-filtered luminance. SAO chromaticity Cb 402R Cb (x,y) and SAO chromaticity Cr 404R Cr (x,y) can be input into ALF chroma 420.
[0135] An 8-Adaptive Parameter Set (APS) buffer 406 may include 8 APSs and is used as input to filter module 414, Cross Component Adaptive Loop Filter (CCALF) Cb 416, CCALF Cr 418, and ALF Chroma 420. In this way, information in the APSs can be used to influence filter module 414, CCALF Cb 416, CCALF Cr 418, and ALF Chroma 420. Adder 422 can convert the output (Δ) of CCALF Cb 416 into an APS. RCb The (x,y)) and the Cb output of ALF chromaticity 420 are added to generate the ALF-filtered Cb. Adder 424 can add the output (Δ) of CCALF Cr 418. RCr The (x,y) and the Cr output of ALF chroma 420 are added to generate the ALF-filtered Cr. Alternatively, the filtering module 414 can use 64 fixed filter buffers 408. In other words, when ALF filters a given block of video data, one of the 64 filters in the 64 fixed filter buffers 408 can be used in the filtering module 414.
[0136] This disclosure describes the ALF used for the luminance component in more detail. Figure 5 In the example, the ALF brightness 410 may include two modules: a classification module 412 and a filtering module 414.
[0137] For the luminance component, a filter is selected from 25 filters through a classification process used for each 4×4 block, based on local statistical estimates (such as gradient and directionality). To benefit from the symmetry of the filters used, the ALF can employ a filter coefficient transformation process. More details regarding the ALF design are provided below.
[0138] Now let's discuss the shape of the ALF filter. Figure 6 This is a conceptual diagram showing example ALF filter shapes of 7x7 rhombus and 5x5 rhombus.
[0139] Two diamond filter shapes are used. The video encoder 200 or the video decoder 300 can use a 7×7 diamond filter 432 or a 5×5 diamond filter 430 to filter the luminance samples, and use the 5×5 diamond filter 430 for the chrominance samples.
[0140] For the luminance component, each 4x4 block is classified into one of 25 categories. For example, a video encoder 200 or a video decoder 300 can classify each 4x4 block into one of 25 categories, as shown below, based on the block's directionality D and the quantization value of the activity. To derive the classification index C:
[0141]
[0142] To calculate D and First, a one-dimensional Laplacian calculation is used to compute the gradients in the horizontal, vertical, and two diagonal directions:
[0143] V k,l =|2R(k,l)-R(k,l-1)-R(k,l+1)|
[0144] H k,l =|2R(k,l)-R(k-1,l)-R(k+1,l)|
[0145] D1 k,l =|2R(k,l)-R(k-1,l-1)-R(k+1,l+1)|
[0146] D2 k,l =|2R(k,l)-R(k-1,l+1)-R(k+1,l-1)|
[0147] In the above text, indices i and j refer to the coordinates of the upper left sample within the 4×4 block, and R(i,j) indicates the reconstructed sample at coordinates (i,j). v is vertical, h is horizontal, d1 is one diagonal, and d2 is the other diagonal.
[0148] Figure 7A -D is a conceptual diagram illustrating the quadratic sampling positions used in the Laplacian computation. To reduce the complexity of block classification, the video encoder 200 or video decoder 300 can apply a quadratic sampling 1D Laplacian computation. The quadratic sampling position of the vertical gradient is... Figure 7A The location of the second sampling of the horizontal gradient is indicated by the name V in block 440. Figure 7B The second sampling position of the first diagonal gradient is indicated by the name H in block 442. Figure 7C The second sampling position of the second diagonal gradient is shown as D1 in block 444. Figure 7D It is shown as name D2 in block 446. For example... Figure 7A As shown in -D, the same secondary sampling position is used for gradient calculation for each of these directions.
[0149] The maximum and minimum values of the gradient D in the horizontal and vertical directions can be set as follows:
[0150]
[0151] The maximum and minimum values of the gradients in the two diagonal directions can be set as:
[0152]
[0153] To derive the value of the directionality D, these values are compared with each other and with two thresholds as follows:
[0154] Step 1. If and If both are true, then set D to 0.
[0155] Step 2. If If so, continue from step 3; otherwise, continue from step 4.
[0156] Step 3. If If so, set D to 2; otherwise, set D to 1.
[0157] Step 4. If If so, set D to 4; otherwise, set D to 3.
[0158] The video encoder 200 and video decoder can calculate the active value A as:
[0159]
[0160] The video encoder 200 and video decoder can also quantize the value A to the range of 0 to 4 (inclusive), and represent the quantized value as...
[0161] For the chromaticity components in an image, no classification techniques may be applied; for example, a single set of ALF coefficients may be applied to each chromaticity component.
[0162] Now we discuss the geometric transformation of the filter coefficients. Before filtering each 4×4 luma block, the video encoder 200 or video decoder 300 can apply geometric transformations, such as rotation or diagonal and vertical flipping, to the filter coefficients f(k,l) based on the gradient values calculated for that block. This application (e.g., applying geometric transformations) is equivalent to applying these transformations to samples in the filter support region. Geometric transformations can make the blocks more similar by aligning the orientations of the different blocks to which the ALF is applied.
[0163] Three geometric transformations are introduced: diagonal transformation, vertical flip, and rotation.
[0164] • Diagonal: f D (k,l)=f(l,k),
[0165] • Vertical flip: f V (k,l)=f(k,Kl-1),
[0166] Rotation: fR (k,l)=f(Kl-1,k)
[0167] Where K is the size of the filter, and 0 ≤ k, l ≤ K-1 are the coefficient coordinates such that position (0,0) is located at the top left corner of the block, and position (K-1, K-1) is located at the bottom right corner of the block. The video encoder 200 or video decoder 300 can apply a transform to the filter coefficients f(k, l) based on the gradient values calculated for this block. The relationship between the transform and the four gradients in the four directions is summarized in Table 1 below.
[0168] Table 1. Mapping of gradients and transformations computed for a block.
[0169] gradient value Transformation <![CDATA[g d2 <g d1 And g h <g v ]]> No transformation <![CDATA[g d2 <g d1 And g v <g h ]]> diagonal <![CDATA[g d1 <g d2 And g h <g v ]]> Vertical flip <![CDATA[g d1 <g d2 And g v <g h ]]> Rotation
[0170] The filter parameter signaling is now discussed. The video encoder 200 can signal the ALF filter parameters in the Adaptive Parameter Set (APS) NAL unit. Each APS can be identified by a unique `adaptation_parameter_set_id`, which the video encoder 200 or video decoder 300 can use to reference the current APS information from other syntax elements. APSs can be shared across images and can differ across different tile groups within an image. When `tile_group_alf_enabled_flag` equals 1, the APS is referenced by the tile group header, and the ALF parameters carried in the APS are used by the tile group. A key advantage of using APSs to carry ALF parameters is that APSs can be sent out of band; for example, the video encoder 200 can provide the APS to the video decoder 300 via external technologies.
[0171] Filter applicability can be controlled at the CTB level. The video encoder 200 can signal a flag indicating whether the ALF is applied to the luma CTB. The video decoder 300 can parse this flag to determine whether to apply the ALF to the luma CTB. For the chroma CTB, the video encoder 200 can signal a flag indicating whether the ALF is applied to the chroma CTB based on the value of `alf_chroma_ctb_present_flag`. The video decoder 300 can parse this flag and `alf_chroma_ctb_present_flag` to determine whether to apply the ALF to the chroma CTB.
[0172] The filtering process will now be discussed. On the decoder side (e.g., video decoder 300), when ALF is enabled for CTB, video decoder 300 can filter each sample R(i,j) within the CU, resulting in sample values R′(i,j) as shown below, where L represents the filter length, f m,n Let f(k,l) represent the filter coefficients, and let f(k,l) represent the decoded filter coefficients.
[0173]
[0174] Now let's discuss fixed filters. The ALF design can be initialized using a set of fixed filters provided to the video decoder 300 as auxiliary information. For example, the video encoder 200 can send initialization information for the fixed filters to the video decoder 300 as auxiliary information. A total of 64 7x7 filters can exist, and each filter can contain 13 coefficients. For each category of the classification, the video encoder 200 or the video decoder 300 can apply a mapping to define which 16 fixed filters from the 64 filters can be used for the current category. The video encoder 200 can signal the selection index (0-15) of each category to the video decoder 300 as a fixed filter index. When using adaptively derived filters, the video encoder 200 can signal the difference between the fixed filter coefficients and the adaptive filter coefficients to the video decoder 300.
[0175] Figure 8 This is a block diagram of an example luminance ALF architecture. A luminance ALF 450, as described in EVC or VVC, may include three stages: a classifier module 452, a filter derivation module 454, and a sample filtering module 456, as shown below. Figure 8 As shown. Two of these modules operate on the reconstructed samples: classifier module 452 and sample filtering module 456. With the introduction of high bit-depth video data decoding (e.g., 12, 14, 16 bits), the implementation of ALF will require redesigning these two components to support higher bit depths. Such a redesign can be complex and expensive.
[0176] According to the technology of this disclosure, the operation of the ALF classifier module can be constrained to a fixed operating bit depth (e.g., operational BD), which may differ from the bit depth of the reconstructed samples. For example, the fixed operating bit depth may be smaller than the input bit depth of the reconstructed samples.
[0177] Figure 9 This is a block diagram illustrating an example luminance ALF architecture according to the technology described in this disclosure. Figure 9As shown, the luminance ALF 460 of the video encoder 200 or video decoder 300 can use the bit depth adjuster module 468 to adjust the input bit depth to a fixed operating bit depth on samples used as input to the classifier module 462. After classification, the filter derivation module 464 can derive the filter to be used, and the sample filtering module 466 can apply the filter to samples at the input bit depth. For example, if the input bit depth is 12, the bit depth adjuster module 468 can adjust the bit depth of the samples being provided to the classifier module 462 to a different bit depth, such as 10. However, the samples filtered by the sample filtering module 466 can be at an input bit depth of 12.
[0178] In one example, bit depth adjustment can be performed by directly extracting the operational BD most significant bits of the reconstructed luminance sample. For example, bit depth adjuster module 468 can directly extract the operational BD most significant bits of the reconstructed luminance sample, for example, 10 most significant bits.
[0179] In yet another example, bit depth adjustment can be performed via a right shift of sample values, with or without a rounding offset. For example, bit depth adjuster module 468 can:
[0180] x = x >> numShift;
[0181] or
[0182] int offset=1<<(numShift-1);
[0183] y = (x + offset) >> numShift;
[0184] In some examples, the numShift value is derived as a function of the input bit depth or the bit depth of the reconstructed sample, as well as the operational bit depth of the classifier. For example, the bit depth adjuster module 468 can determine numShift = InputBit depth – operationalBD.
[0185] In some examples, the bit depth adjuster module 468 of the video decoder 300 derives the numShift variable based on the value of the syntax element signaled in the bitstream or based on the bit depth of the currently processed color component.
[0186] In some examples, the offset value can be unconditionally set to 0, or set to 0 if numShift is less than 1. For example, the bit depth adjuster module 468 can set the offset value to equal 0, or set the offset value to equal 0 if numShift is less than 1.
[0187] In some examples, bit depth adjustment for a luminance sample to be used in classifier module 462 can be implemented as a derivation process that takes into account sample values of other color components (e.g., chroma samples) of the input signal associated with the currently processed luminance sample. For example, video encoder 200 or video decoder 300 can derive the adjusted bit depth sample based on sample values of other color components associated with the currently processed color component. For example, bit depth adjuster module 468 can determine X1 = function(xluma, xCb, xCr).
[0188] In some examples, the derivation function can be implemented in the form of a color transformation. For example, the bit depth adjuster module 468 can determine X1 = (weightL*xluma + weightCb*xCb + weightCr*xCr) / normalization.
[0189] Figure 10 This is a flowchart illustrating an example ALF luminance filtering technique according to this disclosure. The video encoder 200 or video decoder 300 can adjust the input bit depth of reconstructed samples of video data to a fixed bit depth (330). For example, the luminance samples to be ALF filtered can have high bit depths, such as 12, 14, 16, etc. The video encoder 200 or video decoder 300 can adjust the bit depth of the luminance samples to a fixed bit depth. The fixed bit depth can be the operational fixed bit depth of the classifier module 462. In some examples, the fixed bit depth is less than the input bit depth. For example, the fixed bit depth can be 10 bits.
[0190] The video encoder 200 or video decoder 300 can classify the reconstructed samples at a fixed bit depth, where the fixed bit depth differs from the input bit depth (332). For example, the classifier module 462 of the video encoder 200 or video decoder 300 can perform classification of the reconstructed samples at a lower fixed bit depth. The classifier module 462 can output the classification to the filter derivation module 464. The filter derivation module 464 of the video encoder 200 or video decoder 300 can determine a filter based on the classification (334). For example, the classifier module 462 can receive the classification determined by the classifier module 462 and determine an appropriate filter based on that classification.
[0191] The sample filtering module 466 of the video encoder 200 or video decoder 300 can perform adaptive loop filtering (336) on the reconstructed samples at the input bit depth based on a determined filter. For example, the sample filtering module 466 can perform adaptive loop filtering on the reconstructed samples at the input bit depth instead of the fixed bit depth output by the bit depth adjuster module 468. The video encoder 200 or video decoder 300 can process the adaptively loop-filtered samples (338). For example, the video encoder 200 can process the adaptively loop-filtered samples, for example, by further filtering or storing the adaptively loop-filtered samples in the decoded image buffer 218. Similarly, the video decoder 300 can process the adaptively loop-filtered samples, for example, by further filtering or storing the adaptively loop-filtered samples in the decoded image buffer 314.
[0192] In some examples, the fixed bit depth is less than the input bit depth. In some examples, adjusting the input bit depth involves extracting a number of most significant bits from the reconstructed luminance sample, which is equal to the fixed bit depth.
[0193] In some examples, adjusting the input bit depth includes right-shifting the reconstructed sample value by one bit. In some examples, the video encoder 200 or video decoder 300 may apply a rounding offset to the right-shifted reconstructed sample value. In some examples, the video encoder 200 or video decoder 300 may avoid applying a rounding offset to the right-shifted reconstructed sample value. In some examples, the number of bits is based on the input bit depth and operating bit depth of the classifier. In some examples, the number of bits is based on the value of at least one syntax element signaled in the bitstream. In some examples, the number of bits is based on the bit depth of the currently processed color component. In some examples, adjusting the input bit depth is based on an offset value, and if the number of bits is less than 1, the offset value is pre-set to 0 or set to 0.
[0194] In some examples, adjusting the input bit depth involves deriving an adjusted bit depth sample based on sample values of other color components associated with the currently processed color component. In some examples, the other color components include a chroma component, and the currently processed color component includes a luminance component. In some examples, deriving the adjusted bit depth sample involves applying a color transformation.
[0195] Figure 10 This is a flowchart illustrating an example method for encoding a current block according to the technology of this disclosure. The current block may include the current CU. Although regarding video encoder 200 ( Figure 1 and 3The description is provided, but it should be understood that other devices can be configured to perform the same actions. Figure 10 This is a similar method. In some examples, the video encoder 200 can perform... Figure 10 technology and Figure 11 The technology.
[0196] In this example, the video encoder 200 initially predicts the current block (350). For example, the video encoder 200 may form a prediction block for the current block. Then, the video encoder 200 may compute a residual block for the current block (352). To compute the residual block, the video encoder 200 may compute the difference between the original unencoded block and the prediction block for the current block. The video encoder 200 may then transform the residual block and quantize the transform coefficients of the residual block (354). Next, the video encoder 200 may scan the quantized transform coefficients of the residual block (356). During or after the scan, the video encoder 200 may entropy encode the transform coefficients (358). For example, the video encoder 200 may use CAVLC or CABAC to encode the transform coefficients. The video encoder 200 may then output the entropy-encoded data of the block (360).
[0197] Figure 12 This is a flowchart illustrating an example method for decoding a current block of video data according to the technology of this disclosure. The current block may include the current CU. Although regarding the video decoder 300 ( Figure 1 and 4 The description is provided, but it should be understood that other devices can be configured to perform the same actions. Figure 12 This is a similar method. In some examples, video decoder 300 can perform... Figure 10 technology and Figure 12 The technology.
[0198] The video decoder 300 can receive entropy-coded data for the current block (e.g., entropy-coded prediction information and entropy-coded data for the transform coefficients of the residual block corresponding to the current block) (370). The video decoder 300 can entropy decode the entropy-coded data to determine the prediction information for the current block and regenerate the transform coefficients of the residual block (372). The video decoder 300 can predict the current block, for example, using an intra-frame or inter-frame prediction mode indicated by the prediction information for the current block (374), to compute a prediction block for the current block. The video decoder 300 can then inverse scan the regenerated transform coefficients (376) to create a block of quantized transform coefficients. The video decoder 300 can then inverse quantize the transform coefficients and apply the inverse transform to the transform coefficients to produce a residual block (378). Finally, the video decoder 300 can decode the current block by combining the prediction block and the residual block (380).
[0199] By constraining the operating bit depth for classifier module 462 in the codec, the disclosed technique allows for the reuse of implementations of ALF filter components that target lower bit depths (e.g., 10 bits), such as in high bit depth profile codecs (e.g., high bit depth profile EVC or VVC codecs), rather than redesigning such components to operate at high bit depths (which can be expensive and time-consuming).
[0200] This disclosure includes the following non-restrictive terms.
[0201] Clause 1A, a method for decoding video data, the method comprising: constraining the operation of an adaptive loop filter (ALF) to a fixed operation bit depth; adaptively loop filtering samples of a block of video data using the ALF having operations constrained to the fixed operation bit depth; and decoding the block based on the adaptively loop filtered samples.
[0202] Clause 2A, the method according to Clause 1A, further includes: adjusting the fixed operation bit depth before classifying the sample.
[0203] Clause 3A, the method according to Clause 2A, wherein adjusting the fixed operation bit depth comprises: extracting a number of most significant bits of the reconstructed luminance sample, the number being equal to the fixed operation bit depth.
[0204] Clause 4A, the method according to Clause 2A, wherein adjusting the fixed operation bit depth includes: shifting the sample value to the right by one bit.
[0205] Clause 5A, the method described pursuant to Clause 4A, further includes: applying a rounding offset to the right-shifted sample value.
[0206] Clause 6A, the method described in Clause 4A, further includes: avoiding applying rounding offsets to right-shifted sample values.
[0207] Clause 7A, the method according to Clause 4A, wherein the number of bits is based on the input bit depth and the fixed operation bit depth.
[0208] Clause 8A, the method according to Clause 7A, wherein the input bit depth includes the bit depth of the reconstructed sample.
[0209] Clause 9A, the method according to Clause 4A, wherein the number of bits is based on the value of at least one syntax element signaled in the bit stream.
[0210] Clause 10A, the method according to Clause 4A, wherein the number of bits is based on the bit depth of the currently processed color component.
[0211] Clause 11A, the method according to Clause 2A, wherein the adjustment is based on an offset value, and if the number of bits is less than 1, the offset value is predetermined to be 0 or set to 0.
[0212] Clause 12A, the method according to Clause 2A, wherein adjusting the fixed operation bit depth comprises: applying a derivation process based on sample values of other color components associated with the currently processed color component.
[0213] Clause 13A, the method according to Clause 12A, wherein the other color components include chromaticity components, and the currently processed color components include luminance components.
[0214] Clause 14A, the method described in Clause 13A, wherein the derivation process includes color transformation.
[0215] Clause 15A, the method according to any one of Clauses 1A-14A, wherein decoding includes decoding.
[0216] Clause 16A, the method according to any one of Clauses 1A-15A, wherein decoding includes encoding.
[0217] Clause 17A, an apparatus for decoding video data, the apparatus comprising one or more units for performing the method according to any one of Clauses 1A-16A.
[0218] Clause 18A, the device as described in Clause 17A, wherein the one or more units include one or more processors implemented in a circuit.
[0219] The device according to any one of Clauses 19A, 17A, and 18A further includes: a memory for storing the video data.
[0220] The device according to any one of Clauses 20A and 17A-19A further includes: a display configured to display decoded video data.
[0221] Clause 21A, the device according to any one of Clauses 17A-20A, wherein the device includes one or more of a camera, computer, mobile device, broadcast receiver device or set-top box.
[0222] Clause 22A, the device according to any one of Clauses 17A-21A, wherein the device includes a video decoder.
[0223] Clause 23A, the device according to any one of Clauses 17A-22A, wherein the device includes a video encoder.
[0224] Clause 24A, a computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to perform the method according to any one of Clauses 1A-16A.
[0225] Clause 25A, an apparatus for encoding video data, the apparatus comprising: a unit for constraining the operation of an adaptive loop filter (ALF) to a fixed operating bit depth; a unit for performing adaptive loop filtering on samples of a block of the video data; and a unit for decoding the block based on the adaptively loop-filtered samples.
[0226] Clause 1B, a method for decoding video data, the method comprising: adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classifying the reconstructed samples at the fixed bit depth; determining a filter based on the classification; adaptively loop filtering the reconstructed samples at the input bit depth based on the determined filter; and processing the adaptively loop filtered samples.
[0227] Clause 2B, the method according to Clause 1B, wherein processing the adaptively loop-filtered sample comprises: storing the adaptively loop-filtered sample in a decoded image buffer.
[0228] Clause 3B, the method according to Clause 1B or Clause 2B, wherein the fixed bit depth is less than the input bit depth.
[0229] Clause 4B, the method according to any combination of Clauses 1B-3B, wherein adjusting the input bit depth comprises: extracting a number of most significant bits of the reconstructed luminance sample, the number being equal to the fixed bit depth.
[0230] Clause 5B, the method according to any combination of Clauses 1B-3B, wherein adjusting the input bit depth comprises: right-shifting the reconstructed sample value by one bit.
[0231] Clause 6B, the method described pursuant to Clause 5B, further includes: applying a rounding offset to the right-shifted reconstructed sample value.
[0232] Clause 7B, the method described in Clause 5B, further includes: avoiding applying a rounding offset to the right-shifted reconstructed sample value.
[0233] The method described in Clause 8B, Clause 5B, Clause 6B, or Clause 7B, wherein the number of bits is based on the input bit depth and the operating bit depth of the classifier.
[0234] The method described in Clause 9B, Clause 5B, Clause 6B, or Clause 7B, wherein the number of bits is based on the value of at least one syntax element signaled in the bitstream.
[0235] The method described in Clause 10B, Clause 5B, Clause 6B, or Clause 7B, wherein the number of bits is based on the bit depth of the currently processed color component.
[0236] Clause 11B, the method according to Clause 5B, Clause 6B or Clause 7B, wherein the adjustment of the input bit depth is based on an offset value, and if the number of bits is less than 1, the offset value is predetermined to be 0 or set to 0.
[0237] The method described in Clause 12B, or any combination of Clauses 1B-3B, Clause 4B, or Clause 5B, wherein adjusting the input bit depth comprises: deriving an adjusted bit depth sample based on sample values of other color components associated with the currently processed color component.
[0238] Clause 13B, the method according to Clause 12B, wherein the other color components include chromaticity components, and the currently processed color components include luminance components.
[0239] Clause 14B, the method according to Clause 13B, wherein deriving the adjusted bit depth sample includes: applying a color transformation.
[0240] Clause 15B, an apparatus for decoding video data, the apparatus comprising: a memory configured to store the video data; and one or more processors implemented in a circuit and communicatively coupled to the memory, the one or more processors being configured to: adjust the input bit depth of reconstructed samples of the video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and process the adaptively loop-filtered samples.
[0241] Clause 16B, the device according to Clause 15B, wherein the fixed bit depth is less than the input bit depth.
[0242] Clause 17B, the apparatus according to Clause 15B or Clause 16B, wherein, as part of adjusting the input bit depth, the one or more processors are configured to: extract a number of most significant bits of the reconstructed luminance sample, the number being equal to the fixed bit depth.
[0243] The device described in Clause 18B, Clause 15B, or Clause 16B, wherein, as part of adjusting the input bit depth, the one or more processors are configured to right-shift the reconstructed sample value by one bit.
[0244] Clause 19B, the device as described in Clause 18B, wherein the one or more processors are further configured to apply a rounding offset to the right-shifted reconstructed sample values.
[0245] Clause 20B, the device pursuant to Clause 18B, wherein the one or more processors are further configured to: avoid applying rounding offsets to right-shifted reconstructed sample values.
[0246] The device described in Clause 21B, Clause 18B, Clause 19B, or Clause 20B, wherein the number of bits is based on the input bit depth and the operating bit depth of the classifier.
[0247] The device described in Clause 22B, Clause 18B, Clause 19B, or Clause 20B, wherein the number of bits is based on the value of at least one syntax element signaled in the bit stream.
[0248] The device described in Clause 23B, Clause 18B, Clause 19B, or Clause 20B, wherein the number of bits is based on the bit depth of the currently processed color component.
[0249] The device described in Clause 24B, Clause 18B, Clause 19B, or Clause 20B, wherein the one or more processors adjust the input bit depth based on an offset value, and if the number of bits is less than 1, the offset value is predetermined to be 0 or set to 0.
[0250] Clause 25B, the apparatus of any one of Clauses 15B-18B, wherein, as part of adjusting the input bit depth, the one or more processors are configured to derive an adjusted bit depth sample based on sample values of other color components associated with the currently processed color component.
[0251] Clause 26B, the device described in Clause 25B, wherein the other color components include chroma components, and the currently processed color component includes luminance components.
[0252] Clause 27B, the device described in Clause 26B, wherein, as part of deriving an adjusted bit depth sample, the one or more processors are configured to apply a color transformation.
[0253] The device under Clause 28B or any one of Clauses 15B-27B further includes: a camera configured to capture the video data; or a display device configured to display the video data.
[0254] Clause 29B, a non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to: adjust the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; perform adaptive loop filtering on the reconstructed samples at the input bit depth based on the determined filter; and process the adaptively loop-filtered samples.
[0255] Clause 30B, an apparatus for decoding video data, the apparatus comprising: a unit for adjusting the input bit depth of reconstructed samples of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth; a unit for classifying the reconstructed samples at the fixed bit depth; a unit for determining a filter based on the classification; a unit for adaptively loop-filtering the reconstructed samples at the input bit depth based on the determined filter; and a unit for processing the adaptively loop-filtered samples.
[0256] It should be recognized that, based on the examples, certain actions or events of any technique described herein may be performed in a different order, and may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for implementing the technique). Furthermore, in some examples, actions or events may be performed concurrently rather than sequentially, for example, through multithreaded processing, interrupt handling, or multiple processors.
[0257] In one or more examples, the described functionality can be implemented using hardware, software, firmware, or any combination thereof. If implemented in software, the functionality can be stored or transmitted as one or more instructions or code on or through a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium can include a computer-readable storage medium, which corresponds to a tangible medium such as a data storage medium or a communication medium, including, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this way, a computer-readable medium can generally correspond to (1) a non-transitory tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. A data storage medium can be any available medium that can be accessed by one or more computers or one or more processors to obtain instructions, code, and / or data structures for implementing the techniques described in this disclosure. Computer program products can include computer-readable media.
[0258] For example, rather than limiting, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, flash memory, or any other medium capable of storing desired program code in the form of instructions or data structures and accessible by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technology (e.g., infrared, radio, and microwave), then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technology (e.g., infrared, radio, and microwave) is included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather refer instead to non-transient tangible storage media. As used herein, disks and optical discs include compact optical discs (CDs), laser optical discs, optical discs, digital versatile optical discs (DVDs), floppy disks, and Blu-ray discs, wherein disks typically magnetically copy data, while optical discs utilize lasers to optically copy data. Combinations of the above items should also be included within the scope of computer-readable media.
[0259] Instructions can be executed by one or more processors, such as one or more DSPs, general-purpose microprocessors, ASICs, FPGAs, or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuit" as used herein can refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into combined codecs. Furthermore, the techniques can be implemented entirely within one or more circuit or logic elements.
[0260] The technologies disclosed herein can be implemented in a wide variety of devices or apparatuses, including wireless mobile phones, integrated circuits (ICs), or a set of ICs (e.g., chipsets). Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed technologies, but they do not necessarily need to be implemented through different hardware units. Specifically, as described above, the various units can be combined in a codec hardware unit, or provided by a collection of interoperable hardware units (including one or more processors as described above) combined with appropriate software and / or firmware.
[0261] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method of coding video data, the method comprising: adjusting an input bit depth of reconstructed samples of the video data to a fixed bit depth, wherein the fixed bit depth is different than the input bit depth, and wherein adjusting the input bit depth comprises right shifting a reconstructed sample value by a number of bits to generate a right shifted reconstructed sample value, wherein the number of bits is based on the input bit depth and an operating bit depth of a classifier; classifying the reconstructed samples at the fixed bit depth; determining a filter based on the classification; based on the determined filter, adaptively loop filtering the reconstructed samples at the input bit depth; and processing the adaptively loop filtered samples.
2. The method of claim 1, wherein, Processing the adaptively loop filtered samples comprises storing the adaptively loop filtered samples in a decoded picture buffer.
3. The method of claim 1, wherein, The fixed bit depth is less than the input bit depth.
4. The method of claim 1, wherein, Adjusting the input bit depth comprises extracting a number of most significant bits of a reconstructed luma sample, the number equal to the fixed bit depth.
5. The method of claim 1, further comprising: Applying a rounding offset to the right shifted reconstructed sample value.
6. The method of claim 1, further comprising: Avoiding applying a rounding offset to the right shifted reconstructed sample value.
7. The method of claim 1, wherein, The adjusting the input bit depth is based on an offset value, and the offset value is predetermined to be 0 or set to 0 if the number of bits is less than 1.
8. The method of claim 1, wherein, The adjusting the input bit depth comprises deriving an adjusted bit depth sample based on sample values of other color components associated with a currently processed color component.
9. The method of claim 8, wherein, The other color components comprise chroma components and the currently processed color component comprises a luma component.
10. The method of claim 9, wherein, Deriving the adjusted bit depth sample comprises applying a color transform.
11. A device for coding video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: adjust an input bit depth of reconstructed samples of the video data to a fixed bit depth, wherein the fixed bit depth is different than the input bit depth, and wherein as part of adjusting the input bit depth, the one or more processors are configured to right shift a reconstructed sample value by a number of bits to generate a right shifted reconstructed sample value, wherein the number of bits is based on the input bit depth and an operating bit depth of a classifier; classify the reconstructed samples at the fixed bit depth; determine a filter based on the classification; based on the determined filter, adaptively loop filter the reconstructed samples at the input bit depth; and process the adaptively loop filtered samples.
12. The apparatus of claim 11, wherein, The fixed bit depth is less than the input bit depth.
13. The apparatus of claim 11, wherein, As part of adjusting the input bit depth, the one or more processors are configured to extract a number of most significant bits of a reconstructed luma sample, the number equal to the fixed bit depth.
14. The apparatus of claim 11, wherein, The one or more processors are further configured to apply a rounding offset to the right-shifted reconstructed sample values.
15. The apparatus of claim 11, wherein, The one or more processors are further configured to refrain from applying a rounding offset to the right-shifted reconstructed sample values.
16. The apparatus of claim 11, wherein, The one or more processors adjust the input bit depth based on an offset value, and the offset value is predetermined to be 0 or set to 0 if the bit number is less than 1.
17. The apparatus of claim 11, wherein, As part of adjusting the input bit depth, the one or more processors are configured to derive an adjusted bit depth sample based on sample values of other color components associated with a currently processed color component.
18. The apparatus of claim 17, wherein, The other color components include chroma components, and the currently processed color component includes a luma component.
19. The apparatus of claim 18, wherein, As part of deriving an adjusted bit depth sample, the one or more processors are configured to apply a color transform.
20. The device of claim 11, further comprising at least one of: a camera configured to capture the video data; or a display device configured to display the video data.
21. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to: adjusting an input bit depth of reconstructed samples of the video data to a fixed bit depth, wherein The fixed bit depth is different from the input bit depth, and wherein, as part of adjusting the input bit depth, the one or more processors are configured to right-shift a reconstructed sample value by a bit number to generate a right-shifted reconstructed sample value, wherein the bit number is based on the input bit depth and an operating bit depth of a classifier; classify the reconstructed sample at the fixed bit depth; determine a filter based on the classification; apply an adaptive loop filter to the reconstructed sample at the input bit depth based on the determined filter; and process the adaptively loop filtered sample.
22. A device for coding video data, the device comprising: means for adjusting an input bit depth of a reconstructed sample of video data to a fixed bit depth, wherein the fixed bit depth is different from the input bit depth, and wherein adjusting the input bit depth comprises right-shifting a reconstructed sample value by a bit number to generate a right-shifted reconstructed sample value, wherein the bit number is based on the input bit depth and an operating bit depth of a classifier; means for classifying the reconstructed sample at the fixed bit depth; means for determining a filter based on the classification; means for applying an adaptive loop filter to the reconstructed sample at the input bit depth based on the determined filter; and means for processing the adaptively loop filtered sample.