Joint component video frame filtering
By applying CCALF and VFF to filter components in video frames in a video coding system, the problem of low coding efficiency in existing technologies is solved, and more efficient video signal compression and transmission are achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2020-09-23
- Publication Date
- 2026-03-10
AI Technical Summary
Existing video coding systems struggle to effectively utilize the correlation between components for optimization when compressing and transmitting digital video signals, resulting in low coding efficiency.
Cross-component adaptive loop filter (CCALF) and video frame filter (VFF) are used to filter the components in the video frame. The output of the filter is used to refine the signal and modify the values of other components to improve coding efficiency.
By refining signal processing, the efficiency and quality of video encoding are improved, while the requirements for storage and transmission bandwidth are reduced.
Smart Images

Figure CN114586352B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application claims the benefits of U.S. Provisional Application No. 62 / 904,335, filed September 23, 2019; U.S. Provisional Application No. 62 / 910,184, filed October 3, 2019; U.S. Provisional Application No. 62 / 926,005, filed October 25, 2019; and U.S. Provisional Application No. 62 / 942,952, filed December 3, 2019, the full text of which is incorporated herein by reference. Background Technology
[0003] Video coding systems can be used to compress digital video signals, for example, to reduce the storage and / or transmission bandwidth associated with such signals. Video coding systems can include, for example, block-based, wavelet-based, and / or object-based systems. Summary of the Invention
[0004] Systems, methods, and means are provided for applying filters (such as video frame filters (VFF), adaptive loop filters (ALF), or cross-component adaptive loop filters (CCALF)) to subsets of components in video encoding and decoding. Filters can be applied to subsets (e.g., one or more) of components associated with samples in a coded block. Based on the output of the filter application, a refined signal can be derived for one or more other components. The output of the filter applied to one or more components can be used to modify (e.g., refine) the values of one or more other components.
[0005] For example, a filter (such as a set of filter coefficients) can be applied to a selected (e.g., dominant) component. By applying the filter to the selected component, a refined signal (e.g., derived) can be obtained. For example, a refined signal can be obtained by subtracting the filter input signal of the selected component from the filtered output signal. The filtered output signal can be the output of the filter applied to the selected component. A weighted version of the refined signal can be applied to other components.
[0006] For example, two sets of filter coefficients can be applied to two selected (e.g., dominant) components. For example, a refined signal can be derived from one of the two selected components by subtracting the filter input signal of the selected component from the filtered output signal. A weighted version of the refined signal can be applied to other components (e.g., non-selected or non-dominant components).
[0007] The joint chromaticity CCALF can be applied. The joint chromaticity CCALF can be applied to the chromaticity components (Cb, Cr).
[0008] A CCALF filter can be applied to one of the two chromaticity components. A refined signal for the other chromaticity components can be derived as an appropriately weighted version of the same refined signal. In the example, the refined signal from the joint chromaticity CCALF output can be applied to the Cb component, weighted, and then applied to the other Cr component. The refined signal from the joint chromaticity CCALF output can be applied to the Cr component, then weighted and applied to the Cb component. The joint chromaticity CCALF (JC-CCALF) filter can be derived iteratively.
[0009] In the example, the method may include generating a residual coefficient block, dequantizing the residual coefficient block, and performing an inverse transform on the dequantized residual coefficient block to generate a coded block. The method may include, for example, applying a filter (e.g., CCALF) to the coded block using a linear ALF or a nonlinear ALF to generate a refined block, and determining a modified (e.g., refined) reconstruction based on the refined block.
[0010] In the example, a method may be implemented to perform video frame filtering on components associated with samples in a coded block used for video encoding and decoding. The method may be implemented, for example, by means such as a video processing apparatus including one or more processors configured to execute computer-executable instructions, which may be stored on a computer-readable medium or a computer program product, and which, when executed by the one or more processors, execute the method. Therefore, the apparatus may include one or more processors configured to execute the method. The computer-readable medium or computer program product may include instructions that cause the one or more processors to execute the method by executing the instructions. The computer-readable medium may contain data content generated according to the method. According to the method, the signal may include a message. Devices, such as televisions, mobile phones, tablets, or set-top boxes, may include: means such as a video processing apparatus, and at least one of: (i) an antenna configured to receive a signal including data representing an image; (ii) a bandwidth limiter configured to limit the received signal to a bandwidth including data representing an image; or (iii) a display configured to display an image. The device may include, for example, a video encoder or a video decoder.
[0011] Methods for video processing may include, for example, obtaining a filter associated with a coded block; applying the filter to a first component associated with a sample in the coded block; using the output of the filter applied to the first component to modify the value of a second component associated with a sample in the coded block; and using the output of the filter applied to the first component to modify the value of a third component associated with a sample in the coded block.
[0012] The method may also include, for example, obtaining a weighting factor associated with the third component; and applying the weighting factor to the filter output to generate a weighted filter output. The weighted filter output can be used, for example, to modify the value of the third component associated with a sample in the coded block.
[0013] The method may also include, for example, reconstructing the value of the first component; and obtaining refined signals of the second and third components based on the difference between the output of the filter and the value of the first component before filtering the value of the first component using a filter.
[0014] The method may further include, for example, reconstructing the values of a first component, a second component, and a third component for samples in a coded block; obtaining refined signals for the second and third components based on the difference between the output of the filter and the value of the first component before filtering the value of the first component using a filter; obtaining a first weighting factor associated with the second component; determining a first weighted refined signal based on the first weighting factor and the refined signal; obtaining a second weighting factor associated with the third component; and determining a second weighted refined signal based on the second weighting factor and the refined signal, wherein the value of the second component is modified using the first weighted refined signal, and the value of the third component is modified using the second weighted refined signal.
[0015] The filter can be a CCALF. The first component can be a luminance component. The second and third components can be chrominance components. The method may also include, for example, obtaining a chrominance ALF associated with the second and third components; applying the chrominance ALF to the second and third components to generate values for the second and third components; obtaining a weighting factor associated with the third component; and applying the weighting factor to the output of the filter to generate a weighted filter output, wherein the weighted filter output is used to modify (e.g., refine) the value of the third component associated with samples in the coded block.
[0016] In some examples, the filter can be a CCALF message. The first component can be the luma component. The second and third components can be the chroma components. The values of the second and third components may not have been filtered by the chroma ALF. A weighting factor associated with the third component can be obtained and applied to the filter output to generate a weighted filter output. The weighted filter output can be used to modify (e.g., refine) the value of the third component associated with samples in the coded block.
[0017] In some examples, the output of a filter can be used to modify (e.g., refine) the value of a second component associated with a sample in a coded block, and the output of a filter can be used to modify the value of a third component associated with a sample in a coded block.
[0018] In some examples, the filter may include a video frame filter (VFF).
[0019] The method may include, for example, accessing data containing a residual generated based on at least one of a modified value of a second component or a modified (e.g., a refined) value of a third component; and transmitting the data including the residual.
[0020] An apparatus (e.g., one or more processors having computer-executable instructions configured to implement any of the methods described herein) may include an encoder or decoder. A non-transitory computer-readable medium may include data content generated according to the method. A computer-readable medium may include instructions for causing one or more processors to perform the method. A computer program product may include instructions for performing the method when executed by one or more processors. An apparatus may include: means, and at least one of: (i) an antenna configured to receive a signal including data representing an image; (ii) a band limiter configured to limit the received signal to a band including data representing an image; or (iii) a display configured to display an image. An apparatus may include one or more of, for example, a television (TV), a cellular phone, a tablet computer, or a set-top box (STB). A signal may include a residual generated according to the method based on at least one of a modified value of a second component or a modified (e.g., a thinned) value of a third component. The apparatus may include an access unit configured to access data comprising a residual generated based on at least one of a modification value of a second component or a modification value of a third component; and a transmitter configured to transmit the data comprising the residual.
[0021] An apparatus for video processing may include one or more processors configured to: reconstruct values of a first component associated with samples in a coded block and values of a second component associated with samples in a coded block; obtain a video frame filter (VFF) associated with the coded block; apply the VFF to the first component associated with samples in the coded block to filter the value of the first component; obtain a refined signal of the second component associated with samples in the coded block based on the difference between the value of the first component and the filter output of the VFF before filtering the value of the first component using the VFF; obtain a weighting factor associated with the second component; apply the weighting factor to the refined signal to generate a weighted refined signal; and use the weighted refined signal to refine the value of the second component associated with samples in the coded block. Attached Figure Description
[0022] Figure 1A This is a system diagram illustrating an exemplary communication system that can be implemented in one or more of the disclosed embodiments.
[0023] Figure 1B It is shown in an implementation plan. Figure 1A A system diagram of an exemplary wireless transmit / receive unit (WTRU) used within the communication system shown.
[0024] Figure 1C It is shown in an implementation plan. Figure 1A The diagram shows an exemplary radio access network (RAN) and an exemplary core network (CN) used within the communication system.
[0025] Figure 1D It is shown in an implementation plan. Figure 1A The system diagram shown illustrates another exemplary RAN and another exemplary CN used within the communication system.
[0026] Figure 2 This is a schematic diagram illustrating an exemplary video encoder.
[0027] Figure 3 This is a schematic diagram illustrating an example of a video decoder.
[0028] Figure 4 This is a schematic diagram illustrating an example of a system in which the various aspects and implementation schemes described herein can be implemented.
[0029] Figure 5A An exemplary placement of cross-component adaptive loop filtering (CCALF) with respect to other loop filters is shown.
[0030] Figure 5B An exemplary diamond filter is shown.
[0031] Figure 6 An exemplary low-frequency inseparable transform (LFNST) process is shown.
[0032] Figure 7 An example of a matrix-weighted intra-frame prediction process is shown.
[0033] Figure 8 An example of a palette pattern encoding with a palette size of four (4) is shown.
[0034] Figure 9 An exemplary workflow for Union Chroma CCALF is shown.
[0035] Figure 10A and Figure 10B An example of the shape of an adaptive loop filter (ALF) is shown (e.g., chroma: 5×5 rhombus, luminance: 7×7 rhombus).
[0036] Figures 11A to 11DAn example of Laplacian computation based on quadratic sampling is shown, including Figure 11A The secondary sampling position of the vertical gradient in the middle Figure 11B The secondary sampling position of the horizontal gradient in the middle Figure 11C The second sampling position of the diagonal gradient in the first direction, and Figure 11D The second sampling position of the diagonal gradient in the second direction.
[0037] Figure 12 This is a schematic diagram illustrating block classification (e.g., modified block classification) at virtual boundaries.
[0038] Figure 13 This is a schematic diagram illustrating the ALF filtering (e.g., modified ALF filtering) of the luminance component at a virtual boundary.
[0039] Figure 14 Four example gradient patterns used in Sample Adaptive Offset (SAO) are shown.
[0040] Figure 15 An exemplary workflow for video frame filtering (VFF) is shown.
[0041] Figure 16A An exemplary workflow for a VFF with (e.g., one) primary component is shown.
[0042] Figure 16B An exemplary workflow for a VFF with two main components is shown.
[0043] Figure 17A An exemplary workflow for the joint chromaticity VFF on Cb is shown.
[0044] Figure 17B An exemplary workflow for the joint chromaticity VFF on Cr is shown.
[0045] Figure 18 An exemplary workflow for joint chroma CCALF is shown (e.g., skipping chroma ALF).
[0046] Figure 19 This is a schematic diagram showing the placement of CCALFs for other loop filters.
[0047] Figure 20A and Figure 20B This is a schematic diagram illustrating different types of diamond filters.
[0048] Figure 21A This is a schematic diagram illustrating an exemplary workflow for JC-CCALF operations using chroma ALF and JC-CCALF.
[0049] Figure 21BThis is a schematic diagram illustrating an example of luminance interpolation of the chroma sample positions of a 4:2:0 video signal using 2-tap luminance interpolation.
[0050] Figure 21C This is a schematic diagram illustrating an example of luminance interpolation of the chroma sample positions of a 4:2:0 video signal using 6-tap luminance interpolation.
[0051] Figure 22 An example of a method for applying a filter to one or more components and modifying the values of one or more other components is shown.
[0052] Figure 23 An exemplary method for switching on / off a multi-channel iterative RD optimization (RDO) filter is shown. Detailed Implementation
[0053] A detailed description of exemplary embodiments will now be described with reference to the various accompanying drawings. Although this specification provides detailed examples of possible specific implementations, it should be noted that the details are intended to be exemplary and in no way limit the scope of this application.
[0054] Figure 1A This is a schematic diagram illustrating an exemplary communication system 100 that can be implemented in one or more of the disclosed embodiments. Communication system 100 can be a multiple access system providing content such as voice, data, video, messaging, and broadcasting to multiple wireless users. Communication system 100 enables multiple wireless users to access such content through the sharing of system resources (including wireless bandwidth). For example, communication system 100 may employ one or more channel access methods, such as Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal FDMA (OFDMA), Single Carrier FDMA (SC-FDMA), Zero-Tail Unique Word DFT Extended OFDM (ZT UW DTS-s OFDM), Unique Word OFDM (UW-OFDM), Resource Block Filtered OFDM, Filter Bank Multicarrier (FBMC), etc.
[0055] like Figure 1AAs shown, the communication system 100 may include wireless transmit / receive units (WTRUs) 102a, 102b, 102c, 102d, RAN 104 / 113, CN 106 / 115, Public Switched Telephone Network (PSTN) 108, Internet 110, and other networks 112. However, it should be understood that the disclosed embodiments contemplate any number of WTRUs, base stations, networks, and / or network elements. Each of the WTRUs 102a, 102b, 102c, and 102d may be any type of device configured to operate and / or communicate in a wireless environment. As an example, WTRUs 102a, 102b, 102c, and 102d (any of which may be referred to as a “station” and / or “STA”) may be configured to transmit and / or receive wireless signals and may include user equipment (UE), mobile stations, fixed or mobile subscriber units, subscription-based units, pagers, cellular phones, personal digital assistants (PDAs), smartphones, laptops, netbooks, personal computers, wireless sensors, hotspots or Mi-Fi devices, Internet of Things (IoT) devices, watches or other wearable devices, head-mounted displays (HMDs), vehicles, drones, medical devices and applications (e.g., remote surgery), industrial devices and applications (e.g., robots and / or other wireless devices operating in industrial and / or automated processing chain environments), consumer electronics devices, devices operating on commercial and / or industrial wireless networks, etc. Any of WTRUs 102a, 102b, 102c, and 102d may be interchangeably referred to as a UE.
[0056] The communication system 100 may also include base station 114a and / or base station 114b. Each of base stations 114a and 114b may be any type of device configured to wirelessly interface with at least one of WTRUs 102a, 102b, 102c, and 102d to facilitate access to one or more communication networks, such as CN 106 / 115, Internet 110, and / or other networks 112. As an example, base stations 114a and 114b may be base transceiver stations (BTS), Node Bs, evolved Node Bs, home Node Bs, home evolved Node Bs, gNBs, NR Node Bs, site controllers, access points (APs), wireless routers, etc. Although base stations 114a and 114b are each depicted as a single element, it should be understood that base stations 114a and 114b may include any number of interconnected base stations and / or network elements.
[0057] Base station 114a may be part of RAN 104 / 113, which may also include other base stations and / or network elements (not shown), such as base station controllers (BSCs), radio network controllers (RNCs), relay nodes, etc. Base station 114a and / or base station 114b may be configured to transmit and / or receive radio signals on one or more carrier frequencies (which may be referred to as cells (not shown)). These frequencies may be in licensed spectrum, unlicensed spectrum, or a combination of licensed and unlicensed spectrum. A cell may provide coverage of radio services to a specific geographic area, which may be relatively fixed or changeable over time. A cell may be further divided into cell sectors. For example, the cell associated with base station 114a may be divided into three sectors. Thus, in one embodiment, base station 114a may include three transceivers, i.e., one transceiver for each sector of the cell. In one embodiment, base station 114a may employ multiple-input multiple-output (MIMO) technology and may utilize multiple transceivers for each sector of the cell. For example, beamforming may be used to transmit and / or receive signals in desired spatial directions.
[0058] Base stations 114a and 114b can communicate with one or more of WTRUs 102a, 102b, 102c, and 102d via air interface 116, which can be any suitable wireless communication link (e.g., radio frequency (RF), microwave, centimeter wave, micrometer wave, infrared (IR), ultraviolet (UV), visible light, etc.). Any suitable radio access technology (RAT) can be used to establish air interface 116.
[0059] More specifically, as noted above, the communication system 100 may be a multiple access system and may employ one or more channel access schemes, such as CDMA, TDMA, FDMA, OFDMA, SC-FDMA, etc. For example, base stations 114a and WTRUs 102a, 102b, and 102c in RAN 104 / 113 may implement radio technologies such as Universal Mobile Telecommunications System (UMTS) Terrestrial Radio Access (UTRA), which may use Wideband CDMA (WCDMA) to establish air interfaces 115 / 116 / 117. WCDMA may include communication protocols such as High-Speed Packet Access (HSPA) and / or evolved HSPA (HSPA+). HSPA may include High-Speed Downlink (DL) Packet Access (HSDPA) and / or High-Speed Uplink (UL) Packet Access (HSUPA).
[0060] In one implementation, base station 114a and WTRUs 102a, 102b, 102c can implement radio technologies such as evolved UMTS terrestrial radio access (E-UTRA), which can use Long Term Evolution (LTE) and / or Advanced LTE (LTE-A) and / or Advanced LTE Pro (LTE-A Pro) to establish air interface 116.
[0061] In one implementation, base station 114a and WTRUs 102a, 102b, 102c can implement radio technologies such as NR radio access, which can use New Radio (NR) to establish air interface 116.
[0062] In one implementation, base station 114a and WTRUs 102a, 102b, and 102c can implement multiple radio access technologies. For example, base station 114a and WTRUs 102a, 102b, and 102c can, for instance, use a dual connectivity (DC) principle to implement both LTE and NR radio access together. Therefore, the air interface utilized by WTRUs 102a, 102b, and 102c can be characterized by multiple types of radio access technologies and / or transmissions sent to / from multiple types of base stations (e.g., eNBs and gNBs).
[0063] In other implementations, base station 114a and WTRUs 102a, 102b, and 102c can implement radio technologies such as IEEE 802.11 (i.e., WiFi), IEEE 802.16 (i.e., WiMAX), CDMA2000, CDMA2000 1X, CDMA2000 EV-DO, Provisional Standard 2000 (IS-2000), Provisional Standard 95 (IS-95), Provisional Standard 856 (IS-856), Global System for Mobile Communications (GSM), GSM Enhanced Data Rate Evolution (EDGE), and GSM EDGE (GERAN).
[0064] Figure 1ABase station 114b can be, for example, a wireless router, a home node B, a home evolution node B, or an access point, and can utilize any suitable RAT to facilitate wireless connectivity in local areas such as commercial locations, homes, vehicles, campuses, industrial facilities, air corridors (e.g., for use by drones), roads, etc. In one embodiment, base station 114b and WTRUs 102c, 102d can implement radio technologies such as IEEE 802.11 to establish a wireless local area network (WLAN). In one embodiment, base station 114b and WTRUs 102c, 102d can implement radio technologies such as IEEE 802.15 to establish a wireless personal area network (WPAN). In yet another embodiment, base station 114b and WTRUs 102c, 102d can utilize cellular-based RATs (e.g., WCDMA, CDMA2000, GSM, LTE, LTE-A, LTE-A Pro, NR, etc.) to establish picocells or femtocells. Figure 1A As shown, base station 114b may have a direct connection to Internet 110. Therefore, base station 114b may not need to access Internet 110 via CN106 / 115.
[0065] RAN 104 / 113 can communicate with CN 106 / 115, which can be any type of network configured to provide voice, data, application, and / or Voice over Internet Protocol (VoIP) services to one or more of WTRU 102a, 102b, 102c, and 102d. Data can have different Quality of Service (QoS) requirements, such as different throughput requirements, latency requirements, error tolerance requirements, reliability requirements, data throughput requirements, mobility requirements, etc. CN 106 / 115 can provide call control, billing services, location-based services, prepaid calling, internet connectivity, video distribution, etc., and / or perform advanced security functions such as user authentication. Although not explicitly stated... Figure 1A As shown, but it should be understood that RAN 104 / 113 and / or CN 106 / 115 can communicate directly or indirectly with other RANs that use the same RAT as RAN 104 / 113 or a different RAT. For example, in addition to being connected to RAN 104 / 113 which can utilize NR radio technology, CN 106 / 115 can also communicate with another RAN (not shown) that uses GSM, UMTS, CDMA2000, WiMAX, E-UTRA, or WiFi radio technology.
[0066] CN 106 / 115 may also act as a gateway for WTRU 102a, 102b, 102c, 102d to access PSTN 108, Internet 110, and / or other networks 112. PSTN 108 may include a circuit-switched telephone network providing Common Old-Style Telephone Service (POTS). Internet 110 may include a global system of interconnected computer networks and devices using common communication protocols such as Transmission Control Protocol (TCP), User Datagram Protocol (UDP), and / or Internet Protocol (IP) from the TCP / IP Internet Protocol suite. Network 112 may include wired and / or wireless communication networks owned and / or operated by other service providers. For example, network 112 may include another CN connected to one or more RANs, which may use the same RAT as RAN 104 / 113 or a different RAT.
[0067] Some or all of the WTRUs 102a, 102b, 102c, and 102d in the communication system 100 may include multi-mode capabilities (e.g., WTRUs 102a, 102b, 102c, and 102d may include multiple transceivers for communicating with different wireless networks via different wireless links). For example, Figure 1A The WTRU 102c shown can be configured to communicate with a base station 114a that can employ cellular-based radio technology and with a base station 114b that can employ IEEE 802 radio technology.
[0068] Figure 1B This is a system diagram illustrating an exemplary WTRU 102. (See diagram below.) Figure 1B As shown, WTRU 102 may include a processor 118, a transceiver 120, a transmitting / receiving element 122, a speaker / microphone 124, a keypad 126, a display / touchpad 128, non-removable memory 130, removable memory 132, a power supply 134, a Global Positioning System (GPS) chipset 136, and / or other peripheral devices 138, etc. It should be understood that WTRU 102 may include any sub-combination of the foregoing elements while remaining consistent with the implementation.
[0069] Processor 118 can be a general-purpose processor, a special-purpose processor, a conventional processor, a digital signal processor (DSP), multiple microprocessors, one or more microprocessors associated with a DSP core, a controller, a microcontroller, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) circuit, any other type of integrated circuit (IC), a state machine, etc. Processor 118 can perform signal encoding, data processing, power control, input / output processing, and / or any other functions that enable WTRU 102 to operate in a wireless environment. Processor 118 can be coupled to transceiver 120, which can be coupled to transmitting / receiving element 122. Although Figure 1B The processor 118 and transceiver 120 are depicted as separate components, but it should be understood that the processor 118 and transceiver 120 may be integrated together in an electronic package or chip.
[0070] Transmitting / receiving element 122 may be configured to transmit signals to or receive signals from a base station (e.g., base station 114a) via air interface 116. For example, in one embodiment, transmitting / receiving element 122 may be an antenna configured to transmit and / or receive RF signals. In one embodiment, transmitting / receiving element 122 may be a transmitter / detector configured to transmit and / or receive, for example, IR, UV, or visible light signals. In yet another embodiment, transmitting / receiving element 122 may be configured to transmit and / or receive RF and optical signals. It should be understood that transmitting / receiving element 122 may be configured to transmit and / or receive any combination of wireless signals.
[0071] Although the transmitting / receiving element 122 is in Figure 1B While depicted as a single element, WTRU 102 may include any number of transmitting / receiving elements 122. More specifically, WTRU 102 may employ MIMO technology. Therefore, in one embodiment, WTRU 102 may include two or more transmitting / receiving elements 122 (e.g., multiple antennas) for transmitting and receiving wireless signals via air interface 116.
[0072] Transceiver 120 can be configured to modulate signals transmitted by transmitting / receiving element 122 and demodulate signals received by transmitting / receiving element 122. As noted above, WTRU 102 may have multi-mode capability. Therefore, transceiver 120 may include multiple transceivers to enable WTRU 102 to communicate via various RATs (such as NR and IEEE 802.11).
[0073] The processor 118 of WTRU 102 may be coupled to a speaker / microphone 124, a keypad 126, and / or a display / touchpad 128 (e.g., a liquid crystal display (LCD) unit or an organic light-emitting diode (OLED) display unit) and may receive user input data therefrom. The processor 118 may also output user data to the speaker / microphone 124, keypad 126, and / or display / touchpad 128. Furthermore, the processor 118 may access information from any type of suitable memory (such as non-removable memory 130 and / or removable memory 132) and store data in any type of suitable memory. Non-removable memory 130 may include random access memory (RAM), read-only memory (ROM), a hard disk, or any other type of memory storage device. Removable memory 132 may include a user identity module (SIM) card, memory stick, secure digital storage (SD) card, etc. In other embodiments, the processor 118 may access information from memory that is not physically located on WTRU 102 (such as on a server or home computer (not shown)) and store data in that memory.
[0074] The processor 118 may receive power from the power supply 134 and may be configured to distribute and / or control power to other components in the WTRU 102. The power supply 134 may be any suitable device for powering the WTRU 102. For example, the power supply 134 may include one or more dry cell battery packs (e.g., nickel-cadmium (NiCd), nickel-zinc (NiZn), nickel metal hydride (NiMH), lithium-ion (Li-ion), etc.), solar cells, fuel cells, etc.
[0075] The processor 118 may also be coupled to a GPS chipset 136, which may be configured to provide location information (e.g., longitude and latitude) about the current location of the WTRU 102. In addition to or instead of the information from the GPS chipset 136, the WTRU 102 may receive location information from base stations (e.g., base stations 114a, 114b) via air interface 116 and / or determine its location based on the timing of signals received from two or more nearby base stations. It should be understood that, while remaining consistent with the implementation, the WTRU 102 may acquire location information using any suitable location determination method.
[0076] The processor 118 may also be coupled to other peripheral devices 138, which may include one or more software and / or hardware modules providing additional features, functions, and / or wired or wireless connectivity. For example, peripheral device 138 may include an accelerometer, electronic compass, satellite transceiver, digital camera (for photos and / or video), Universal Serial Bus (USB) port, vibration device, television transceiver, hands-free headset, etc. Modules, FM radio units, digital music players, media players, video game player modules, internet browsers, virtual reality and / or augmented reality (VR / AR) devices, activity trackers, etc. Peripheral devices 138 may include one or more sensors, which may be one or more of the following: gyroscopes, accelerometers, Hall effect sensors, magnetometers, orientation sensors, proximity sensors, temperature sensors, time sensors; geolocation sensors; altimeters, light sensors, touch sensors, magnetometers, barometers, gesture sensors, biometric sensors, and / or humidity sensors.
[0077] WTRU 102 may include a full-duplex radio for which the transmission and reception of some or all signals (e.g., associated with specific subframes for UL (e.g., for transmission) and downlink (e.g., for reception)) may be concurrent and / or simultaneous. The full-duplex radio may include an interference management unit for reducing and / or substantially eliminating self-interference through signal processing via hardware (e.g., a choke) or via a processor (e.g., a separate processor (not shown) or via processor 118). In one embodiment, WTRU 102 may include a full-duplex radio for which the transmission and reception of some or all signals (e.g., associated with specific subframes for UL (e.g., for transmission) and downlink (e.g., for reception)) may be concurrent and / or simultaneous.
[0078] Figure 1C This is a system diagram illustrating RAN 104 and CN 106 according to one embodiment. As described above, RAN 104 can communicate with WTRUs 102a, 102b, and 102c via air interface 116 using E-UTRA radio technology. RAN 104 can also communicate with CN 106.
[0079] RAN 104 may include evolved Nodes B 160a, 160b, and 160c; however, it should be understood that RAN 104 may include any number of evolved Nodes B while remaining consistent with the implementation scheme. Evolved Nodes B 160a, 160b, and 160c may each include one or more transceivers for communicating with WTRUs 102a, 102b, and 102c via air interface 116. In one implementation, evolved Nodes B 160a, 160b, and 160c may implement MIMO technology. Therefore, evolved Node B 160a may, for example, use multiple antennas to transmit radio signals to and / or receive radio signals from WTRU 102a.
[0080] Each of the evolved nodes B 160a, 160b, and 160c can be associated with a specific cell (not shown) and can be configured to handle radio resource management decisions, handover decisions, and user scheduling in the UL and / or DL, etc. Figure 1C As shown, evolution nodes B 160a, 160b, and 160c can communicate with each other via the X2 interface.
[0081] Figure 1C The CN 106 shown may include a Mobility Management Entity (MME) 162, a Serving Gateway (SGW) 164, and a Packet Data Network (PDN) Gateway (or PGW) 166. While each of the foregoing elements is depicted as part of the CN 106, it should be understood that any of these elements may be owned and / or operated by an entity other than the CN operator.
[0082] The MME 162 can connect to each of the evolved nodes B 162a, 162b, and 162c in RAN 104 via the S1 interface and can be used as a control node. For example, the MME 162 can be responsible for authenticating users of WTRUs 102a, 102b, and 102c, bearer activation / deactivation, selecting a specific serving gateway during the initial attachment of WTRUs 102a, 102b, and 102c, etc. The MME 162 can provide control plane functions for handover between RAN 104 and other RANs (not shown) employing other radio technologies such as GSM and / or WCDMA.
[0083] The SGW 164 can connect to each of the evolved Nodes B 160a, 160b, and 160c in RAN 104 via the S1 interface. The SGW 164 typically routes and forwards user data packets to and from WTRUs 102a, 102b, and 102c. The SGW 164 can perform other functions such as anchoring the user plane during inter-evolved Node B handovers, triggering paging when DL data is available for WTRUs 102a, 102b, and 102c, and managing and storing the context of WTRUs 102a, 102b, and 102c.
[0084] SGW 164 can be connected to PGW 166, which provides WTRU 102a, 102b, 102c with access to packet-switched networks (such as Internet 110) to facilitate communication between WTRU 102a, 102b, 102c and IP-enabled devices.
[0085] CN 106 can facilitate communication with other networks. For example, CN 106 can provide WTRUs 102a, 102b, and 102c with access to a circuit-switched network (such as PSTN 108) to facilitate communication between WTRUs 102a, 102b, and 102c and conventional landline communication equipment. For example, CN 106 may include an IP gateway (e.g., an IP Multimedia Subsystem (IMS) server) or be able to communicate with such an IP gateway, which serves as an interface between CN 106 and PSTN 108. Additionally, CN 106 can provide WTRUs 102a, 102b, and 102c with access to other networks 112, which may include other wired and / or wireless networks owned and / or operated by other service providers.
[0086] Despite WTRU in Figures 1A to 1D While described as a wireless terminal, it is conceivable that in some representative implementations, such a terminal may (e.g., temporarily or permanently) use a wired communication interface with a communication network.
[0087] In a representative implementation, the other network 112 may be a WLAN.
[0088] A WLAN in Basic Services Set (BSS) mode may have an access point (AP) for the BSS and one or more stations (STAs) associated with the AP. The AP may have access or an interface to a distribution system (DS) or another type of wired / wireless network that carries traffic to and / or carries traffic out of the BSS. Traffic originating outside the BSS and destined for a STA can reach and be delivered to the STA via the AP. Traffic originating from a STA and destined for a destination outside the BSS can be sent to the AP for delivery to the appropriate destination. Traffic between STAs within the BSS can be sent via the AP, for example, where a source STA can send traffic to the AP, and the AP can deliver the traffic to the destination STA. Traffic between STAs within the BSS can be considered and / or referred to as point-to-point traffic. Point-to-point traffic can be sent between source and destination STAs (e.g., directly between them) using Direct Link Establishment (DLS). In some representative implementations, the DLS may use 802.11e DLS or 802.11z Tunneled DLS (TDLS). WLANs using the Standalone BSS (IBSS) mode may not have an access point (AP), and STAs within the IBSS or using the IBSS (e.g., all STAs) can communicate directly with each other. The IBSS communication mode may sometimes be referred to as the "ad-hoc" communication mode in this document.
[0089] When operating in 802.11ac infrastructure mode or a similar mode, the AP can transmit beacons on a fixed channel, such as the primary channel. The primary channel can be of fixed width (e.g., a 20 MHz bandwidth) or dynamically set via signaling. The primary channel can be the operating channel of the BSS and can be used by the STA to establish a connection with the AP. In some representative implementations, Carrier Sense Multiple Access / Collision Avoidance (CSMA / CA) can be implemented, for example, in an 802.11 system. For CSMA / CA, each STA (including the AP) can listen to the primary channel. If the primary channel is listened to / detected and / or determined to be busy by a particular STA, that STA can back off. A single STA (e.g., only one station) can transmit in a given BSS at any given time.
[0090] High-throughput (HT) STAs can communicate using a 40MHz wide channel, for example, by combining a primary 20MHz channel with adjacent or non-adjacent 20MHz channels to form a 40MHz wide channel.
[0091] The Very High Throughput (VHT) STA supports channels with widths of 20MHz, 40MHz, 80MHz, and / or 160MHz. 40MHz and / or 80MHz channels can be formed by combining consecutive 20MHz channels. A 160MHz channel can be formed by combining eight consecutive 20MHz channels, or by combining two non-consecutive 80MHz channels (this can be referred to as an 80+80 configuration). For the 80+80 configuration, after channel coding, data can be split into two streams by a segment parser. Each stream can be processed individually using Inverse Fast Fourier Transform (IFFT) and time-domain processing. These streams can be mapped to two 80MHz channels, and data can be transmitted via the transmitting STA. At the receiver of the receiving STA, the operations described above for the 80+80 configuration can be reversed, and the combined data can be sent to Media Access Control (MAC).
[0092] 802.11af and 802.11ah support operating modes below 1 GHz. Compared to those used in 802.11n and 802.11ac, 802.11af and 802.11ah reduce channel operating bandwidth and carrier. 802.11af supports 5 MHz, 10 MHz, and 20 MHz bandwidths in the TV white space (TVWS) spectrum, while 802.11ah supports 1 MHz, 2 MHz, 4 MHz, 8 MHz, and 16 MHz bandwidths using non-TVWS spectrum. According to representative implementations, 802.11ah may support instrument-type control / machine-type communications, such as MTC devices in macro coverage areas. MTC devices may have certain capabilities, such as limited capabilities, including support (e.g., only support) certain bandwidths and / or limited bandwidths. MTC devices may include batteries with battery life above a threshold (e.g., to maintain a very long battery life).
[0093] WLAN systems supporting multiple channels, as well as channel bandwidths such as 802.11n, 802.11ac, 802.11af, and 802.11ah, include channels that can be designated as primary channels. A primary channel can have a bandwidth equal to the maximum common operating bandwidth supported by all STAs in the BSS. The bandwidth of the primary channel can be set and / or limited by STAs operating in the BSS (each supporting a minimum bandwidth operating mode). In the 802.11ah example, for STAs supporting (e.g., only supporting) a 1MHz mode (e.g., MTC type devices), the primary channel can be 1MHz wide, even if the AP and other STAs in the BSS support 2MHz, 4MHz, 8MHz, 16MHz, and / or other channel bandwidth operating modes. Carrier Sense and / or Network Allocation Vector (NAV) settings can depend on the status of the primary channel. If the primary channel is busy, for example, because an STA (supporting only the 1MHz operating mode) is transmitting to the AP, the entire available band can be considered busy even if most of the band remains idle and potentially available.
[0094] In the United States, the available frequency bands for 802.11ah are 902MHz to 928MHz. In South Korea, the available frequency bands are 917.5MHz to 923.5MHz. In Japan, the available frequency bands are 916.5MHz to 927.5MHz. The total available bandwidth for 802.11ah ranges from 6MHz to 26MHz, depending on the country code.
[0095] Figure 1D This is a system diagram illustrating RAN 113 and CN 115 according to one implementation scheme. As noted above, RAN 113 can communicate with WTRUs 102a, 102b, and 102c via air interface 116 using NR radio technology. RAN 113 can also communicate with CN 115.
[0096] RAN 113 may include gNBs 180a, 180b, and 180c; however, it should be understood that RAN 113 may include any number of gNBs while remaining consistent with the implementation. Each of gNBs 180a, 180b, and 180c may include one or more transceivers for communication with WTRUs 102a, 102b, and 102c via air interface 116. In one implementation, gNBs 180a, 180b, and 180c may implement MIMO technology. For example, gNBs 180a and 180b may utilize beamforming to transmit signals to and / or receive signals from gNBs 180a, 180b, and 180c. Therefore, gNB 180a may, for example, use multiple antennas to transmit radio signals to and / or receive radio signals from WTRU 102a. In one implementation, gNBs 180a, 180b, and 180c may implement carrier aggregation technology. For example, gNB 180a may transmit multiple component carriers to WTRU 102a (not shown). A subset of these component carriers may be on unlicensed spectrum, while the remaining component carriers may be on licensed spectrum. In one implementation, gNBs 180a, 180b, and 180c may implement Cooperative Multipoint (CoMP) technology. For example, WTRU 102a may receive cooperative transmissions from gNBs 180a and 180b (and / or gNB 180c).
[0097] WTRUs 102a, 102b, and 102c can communicate with gNBs 180a, 180b, and 180c using transmissions associated with scalable parameter sets. For example, OFDM symbol spacing and / or OFDM subcarrier spacing can vary depending on different transmissions, different cells, and / or different portions of the radio transmission spectrum. WTRUs 102a, 102b, and 102c can communicate with gNBs 180a, 180b, and 180c using subframes or transmission time intervals (TTIs) of various or scalable lengths (e.g., containing different numbers of OFDM symbols and / or continuously varying absolute time lengths).
[0098] gNBs 180a, 180b, and 180c can be configured to communicate with WTRUs 102a, 102b, and 102c in standalone and / or non-standalone configurations. In standalone configuration, WTRUs 102a, 102b, and 102c can communicate with gNBs 180a, 180b, and 180c without accessing other RANs (e.g., evolved Node Bs 160a, 160b, and 160c). In standalone configuration, WTRUs 102a, 102b, and 102c can use one or more of gNBs 180a, 180b, and 180c as mobility anchors. In standalone configuration, WTRUs 102a, 102b, and 102c can communicate with gNBs 180a, 180b, and 180c using signals in unlicensed frequency bands. In a non-standalone configuration, WTRUs 102a, 102b, and 102c can communicate or connect to gNBs 180a, 180b, and 180c, and also communicate or connect to other RANs (such as evolved Node Bs 160a, 160b, and 160c). For example, WTRUs 102a, 102b, and 102c can implement DC principles to communicate substantially simultaneously with one or more gNBs 180a, 180b, and 180c and one or more evolved Node Bs 160a, 160b, and 160c. In a non-standalone configuration, evolved Node Bs 160a, 160b, and 160c can be used as mobility anchors for WTRUs 102a, 102b, and 102c, and gNBs 180a, 180b, and 180c can provide additional coverage and / or throughput for serving WTRUs 102a, 102b, and 102c.
[0099] Each of gNBs 180a, 180b, and 180c can be associated with a specific cell (not shown) and can be configured to handle radio resource management decisions, handover decisions, user scheduling in UL and / or DL, network slicing support, dual connectivity, interoperability between NR and E-UTRA, routing of user plane data to User Plane Functions (UPF) 184a and 184b, routing of control plane information to Access and Mobility Management Functions (AMF) 182a and 182b, etc. Figure 1D As shown, gNB 180a, 180b, and 180c can communicate with each other via the Xn interface.
[0100] Figure 1DThe CN 115 shown may include at least one AMF 182a, 182b, at least one UPF 184a, 184b, at least one Session Management Function (SMF) 183a, 183b, and possibly a Data Network (DN) 185a, 185b. Although each of the foregoing elements is depicted as part of the CN 115, it should be understood that any of these elements may be owned and / or operated by an entity other than the CN operator.
[0101] AMF 182a and 182b can connect to one or more of gNBs 180a, 180b, and 180c via the N2 interface in RAN 113 and can be used as control nodes. For example, AMF 182a and 182b can be responsible for authenticating users of WTRU 102a, 102b, and 102c, supporting network slicing (e.g., handling different PDU sessions with different requirements), selecting specific SMF 183a and 183b, managing registration areas, terminating NAS signaling, mobility management, etc. AMF 182a and 182b can use network slicing to customize CN support for WTRU 102a, 102b, and 102c based on the type of service used by WTRU 102a, 102b, and 102c. For example, different network slices can be established for different use cases, such as services that rely on Ultra-Reliable Low Latency (URLLC) access, services that rely on Enhanced Mobile Broadband (eMBB) access, and services for Machine Type Communication (MTC) access. The AMF162 can provide control plane functions for handover between RAN 113 and other RANs (not shown) that employ other radio technologies, such as LTE, LTE-A, LTE-A Pro, and / or non-3GPP access technologies, such as WiFi.
[0102] SMFs 183a and 183b can connect to AMFs 182a and 182b in CN 115 via the N11 interface. SMFs 183a and 183b can also connect to UPFs 184a and 184b in CN 115 via the N4 interface. SMFs 183a and 183b can select and control UPFs 184a and 184b, and configure traffic routing through UPFs 184a and 184b. SMFs 183a and 183b can perform other functions, such as managing and allocating UE IP addresses, managing PDU sessions, controlling policy enforcement and QoS, and providing downlink data notifications. PDU session types can be IP-based, non-IP-based, Ethernet-based, etc.
[0103] UPF 184a and 184b can connect via the N3 interface to one or more of the gNBs 180a, 180b, and 180c in RAN 113. These gNBs can provide WTRU 102a, 102b, and 102c with access to packet-switched networks (such as Internet 110) to facilitate communication between WTRU 102a, 102b, 102c and IP-enabled devices. UPF 184 and 184b can perform other functions such as routing and forwarding packets, enforcing user plane policies, supporting multihomed PDU sessions, handling user plane QoS, buffering downlink packets, and providing mobility anchoring.
[0104] CN 115 may facilitate communication with other networks. For example, CN 115 may include an IP gateway (e.g., an IP Multimedia Subsystem (IMS) server) that serves as an interface between CN 115 and PSTN 108, or may communicate with such an IP gateway. Additionally, CN 115 may provide WTRUs 102a, 102b, and 102c with access to other networks 112, which may include other wired and / or wireless networks owned and / or operated by other service providers. In one embodiment, WTRUs 102a, 102b, and 102c may be connected to DNs 185a and 185b via UPFs 184a and 184b through their N3 interfaces and their N6 interfaces with local data networks (DNs) 185a and 185b.
[0105] Given Figures 1A to 1D as well as Figures 1A to 1D The corresponding descriptions herein refer to one or more of the functions described below, which may be performed by one or more emulation devices (not shown): WTRU102a-d, base station 114a-b, evolved Node B 160a-c, MME 162, SGW 164, PGW 166, gNB 180a-c, AMF182a-b, UPF 184a-b, SMF 183a-b, DN 185a-b, and / or any other device described herein. An emulation device may be one or more devices configured to mimic one or more of the functions described herein. For example, an emulation device may be used to test other devices and / or simulate network and / or WTRU functions.
[0106] Simulation devices can be designed to perform one or more tests on other devices in laboratory and / or carrier network environments. For example, the one or more simulation devices may perform one or more or all functions while being fully or partially implemented and / or deployed as part of a wired and / or wireless communication network to test other devices within the communication network. The one or more simulation devices may perform one or more or all functions while being temporarily implemented / deployed as part of a wired and / or wireless communication network. Simulation devices may be directly coupled to another device for testing purposes and / or may use over-the-air wireless communication to perform tests.
[0107] The one or more emulation devices may perform one or more (including all) functions without being implemented / deployed as part of a wired and / or wireless communication network. For example, the emulation devices may be used in test scenarios within a test laboratory and / or non-deployed (e.g., testing) wired and / or wireless communication networks to perform testing of one or more components. The one or more emulation devices may be test equipment. Direct RF coupling and / or wireless communication via RF circuitry (e.g., which may include one or more antennas) may be used by the emulation devices to transmit and / or receive data.
[0108] This application describes multiple aspects, including tools, features, examples or implementations, models, methods, etc. Many of these aspects are described in a particular manner and, at least to illustrate individual characteristics, are generally described in a way that may sound restrictive. However, this is for clarity and does not limit the application or scope of these aspects. In fact, all the different aspects can be combined and interchanged to provide further aspects. Furthermore, these aspects can also be combined and interchanged with aspects described in earlier filings.
[0109] The aspects described and envisioned in this application can be implemented in many different forms. Figures 5 to 6 described herein... Figure 22 Several implementation schemes are available, but other schemes are also envisioned. (Figure 5 to...) Figure 22 The discussion does not limit the breadth of specific implementations. At least one of these aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a bitstream generated or encoded. These and other aspects can be implemented as methods, apparatus, computer-readable storage media having instructions stored thereon for encoding or decoding video data according to any of the methods, and / or computer-readable storage media having a bitstream generated according to any of the methods stored thereon.
[0110] In this application, the terms “reconstruction” and “decoding” are used interchangeably, the terms “pixel” and “sample” are used interchangeably, and the terms “image”, “picture” and “frame” are used interchangeably.
[0111] The terms High Dynamic Range (HDR) and Standard Dynamic Range (SDR) may be used in this disclosure. Those terms generally convey to those skilled in the art a specific value for dynamic range. However, it is also intended to employ additional embodiments in which references to HDR are understood to mean “higher dynamic range” and references to SDR are understood to mean “lower dynamic range”. Such additional embodiments are not bound by any specific value of dynamic range that may generally be associated with the terms “high dynamic range” and “standard dynamic range”.
[0112] This document describes various methods, and each method includes one or more steps or actions for implementing the method. Unless the correct operation of the method requires a specific order of steps or actions, the order and / or use of specific steps and / or actions may be modified or combined. Furthermore, terms such as "first," "second," etc., are used in various embodiments to modify elements, components, steps, operations, etc., such as "first decoding" and "second decoding." Unless specifically required, the use of such terms does not imply a sequence of modified operations. Therefore, in this example, the first decoding does not need to be performed before the second decoding and may occur, for example, before, during, or in overlapping time periods of the second decoding.
[0113] like Figure 2 and Figure 3 As shown, the various methods and other aspects described in this application can be used to modify modules (e.g., decoding modules) of the video encoder 200 and decoder 300. Furthermore, the subject matter disclosed herein presents aspects not limited to VVC or HEVC and is applicable to, for example, any type, format, or version of video encoding (whether described in standards or recommendations, whether pre-existing or future-developed), and any extensions to such standards and recommendations (e.g., including VVC and HEVC). Unless otherwise indicated or technically excluded, the aspects described in this application may be used alone or in combination.
[0114] The examples described in this application use various numerical values, such as 65-degree intra-frame prediction direction, 16×16, 32×32, 64×64, 128×128, 4×4 Low Frequency Inseparable Transform (LFNST), 8×8 LFNST, 16×16 transform matrix, 16×1 coefficient vector, 25 block classifications, 5×5 diamond filter, 7×7 diamond filter, 25 sets of brightness filter coefficients and clipping value indexes, α equal to 2.35, N equal to four, 45° and 135° diagonal gradient modes, weighting factor values of -1 or 1 / 2, cross-component filter values, γ min It can be 0.75 or 0.5, etc., QP th1 It can be 33 or 35, etc., and QP th2It could be 40 or 42, etc. These and other specific values are for the purpose of describing examples, and the aspects described are not limited to these specific values.
[0115] Figure 2 This is a schematic diagram illustrating an exemplary video encoder. Variations of the exemplary encoder 200 are contemplated, but encoder 200 is described below for clarity, without describing all anticipated variations.
[0116] Before encoding, the video sequence may undergo pre-coding (201), for example, by applying color transformations to the input color image (e.g., a conversion from RGB 4:4:4 to YCbCr 4:2:0), or by performing remapping of the input image components to obtain a more resilient signal distribution to compression (e.g., histogram equalization using one of the color components). Metadata may be associated with pre-processing and appended to the bitstream.
[0117] In encoder 200, the image is encoded by encoder elements as described below. The image to be encoded is partitioned (202) and processed in units such as coding units (CUs). For example, each unit is encoded using either an intra-frame mode or an inter-frame mode. When a unit is encoded in intra-frame mode, it performs intra-frame prediction (260). In inter-frame mode, motion estimation (275) and compensation (270) are performed. The encoder determines (205) which of the intra-frame mode or inter-frame mode is used to encode the unit and indicates the intra-frame / inter-frame decision by, for example, a prediction mode label. For example, the prediction residual is calculated by subtracting (210) the prediction block from the original image block.
[0118] The predicted residual is then transformed (225) and quantized (230). The quantized transform coefficients, motion vectors, and other syntax elements are entropy encoded (245) to output a bitstream. The encoder can skip the transform and apply quantization directly to the untransformed residual signal. The encoder can bypass both the transform and quantization, i.e., encode the residual directly without applying the transform or quantization process.
[0119] The encoder decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (255) to reconstruct the image block. A loop filter (265) is applied to the reconstructed image to perform, for example, deblocking / SAO (sample adaptive offset) filtering, thereby reducing coded artifacts. The filtered image is stored in a reference image buffer (280).
[0120] Figure 3This is a schematic diagram illustrating an example of a video decoder. In the exemplary decoder 300, the bitstream is decoded by decoder elements, as described below. The video decoder 300 generally performs operations similar to... Figure 2 The encoding process is the reverse of the decoding process. Encoder 200 may also perform video decoding as part of the encoding of video data. For example, encoder 200 may perform one or more video decoding steps as presented herein. The encoder may, for example, reconstruct the decoded image to maintain synchronization with the decoder relative to one or more of the following: a reference picture, entropy coding context, and other decoder-related state variables.
[0121] Specifically, the decoder's input includes a video bitstream, which can be generated by the video encoder 200. First, entropy decoding (330) is performed on the bitstream to obtain transform coefficients, motion vectors, and other encoded information. Image partitioning information indicates how the image should be partitioned. Therefore, the decoder can partition (335) the image based on the decoded image partitioning information. The transform coefficients are dequantized (340) and inverse transformed (350) to decode the prediction residuals. The decoded prediction residuals and prediction blocks are combined (355) to reconstruct the image blocks. Prediction blocks (370) can be obtained from intra-frame prediction (360) or motion-compensated prediction (i.e., inter-frame prediction) (375). A loop filter (365) is applied to the reconstructed image. The filtered image is stored in a reference image buffer (380).
[0122] The decoded image may also undergo post-decoding processing (385), such as inverse color transformation (e.g., a transformation from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping of the remapping process performed in the pre-encoding process (201). Post-decoding processing may utilize metadata derived in the pre-encoding process and signaled in the bitstream.
[0123] Figure 4This is a schematic diagram illustrating an example of a system in which the various aspects and embodiments described herein may be implemented. System 400 may be embodied as a device that includes the various components described below and is configured to perform one or more aspects described in this document. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. Elements of system 400 may be embodied individually or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one example, the processing and encoder / decoder elements of system 400 are distributed across multiple ICs and / or discrete components. In various embodiments, system 400 is communicatively coupled to one or more other systems or other electronic devices via, for example, a communication bus or through dedicated input and / or output ports. In various embodiments, system 400 is configured to implement one or more aspects described in this document.
[0124] System 400 includes at least one processor 410 configured to execute instructions loaded thereon for implementing various aspects, such as those described in this document. Processor 410 may include embedded memory, input / output interfaces, and various other circuitry known in the art. System 400 includes at least one memory 420 (e.g., a volatile memory device and / or a non-volatile memory device). System 400 includes a storage device 440 that may include non-volatile memory and / or volatile memory, including but not limited to electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, disk drives, and / or optical disk drives. As a non-limiting example, storage device 440 may include internal storage devices, attached storage devices (including removable and non-removable storage devices), and / or network-accessible storage devices.
[0125] System 400 includes an encoder / decoder module 430 configured to, for example, process data to provide encoded or decoded video, and the encoder / decoder module 430 may include its own processor and memory. The encoder / decoder module 430 represents a module that can be included in a device to perform encoding and / or decoding functions. It is well known that a device may include one or both of an encoding module and a decoding module. Alternatively, the encoder / decoder module 430 may be implemented as a separate element of system 400 or may be incorporated within processor 410 as a combination of hardware and software known to those skilled in the art.
[0126] Program code to be loaded onto processor 410 or encoder / decoder 430 to execute the various aspects described in this document may be stored in storage device 440 and subsequently loaded onto memory 420 for execution by processor 410. According to various embodiments, one or more of processor 410, memory 420, storage device 440, and encoder / decoder module 430 may store one or more items from various projects during the execution of the processes described in this document. Such stored items may include, but are not limited to, input video, decoded or partially decoded video, bitstreams, matrices, variables, and intermediate or final results of processing equations, formulas, operations, and operational logic.
[0127] In some embodiments, the memory within processor 410 and / or encoder / decoder module 430 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., processor 410 or encoder / decoder module 430) is used for one or more of these functions. External memory may be memory 420 and / or storage device 440, such as volatile memory and / or non-volatile flash memory. In several embodiments, external non-volatile flash memory is used to store, for example, the operating system of a television. In at least one implementation, a fast external dynamic volatile memory such as RAM is used as working memory for video encoding and decoding operations, such as MPEG-2 (MPEG stands for Moving Picture Experts Group, MPEG-2 is also known as ISO / IEC 13818, and 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC stands for High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2) or VVC (Various Video Coding, a new standard developed by the Joint Video Experts Group JVET).
[0128] As shown in block 445, inputs to the components of system 400 can be provided through various input devices. Such input devices include, but are not limited to: (i) a radio frequency (RF) section that receives, for example, RF signals transmitted over the air by a broadcaster; (ii) component (COMP) input terminals (or a set of COMP input terminals); (iii) universal serial bus (USB) input terminals; and / or (iv) high-definition multimedia interface (HDMI) input terminals. Figure 4 Other examples not shown include composite video.
[0129] In various embodiments, the input device of block 445 has associated corresponding input processing elements as known in the art. For example, the RF section may be associated with elements suitable for: (i) selecting a desired frequency (also known as selecting a signal, or limiting a signal band to a band), (ii) down-converting the selected signal, (iii) re-band-limiting the signal to a narrower band to select (e.g.,) a signal band that may be referred to as a channel in some embodiments), (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired data packet stream. The RF section of various embodiments includes one or more elements for performing these functions, such as frequency selectors, signal selectors, band limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF section may include tuners that perform various functions among these functions, including, for example, down-converting received signals to a lower frequency (e.g., intermediate frequency or near-baseband frequency) or to baseband. In one set-top box implementation, the RF section and its associated input processing elements receive RF signals transmitted via a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and re-filtering to the desired frequency band. Various implementations rearrange the order of the aforementioned (and other) components, remove some of these components, and / or add other components that perform similar or different functions. Adding components may include inserting components between existing components, such as inserting amplifiers and analog-to-digital converters. In various implementations, the RF section includes an antenna.
[0130] Furthermore, USB and / or HDMI terminals may include corresponding interface processors for connecting system 400 to other electronic devices across USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented as needed, for example, within a separate input processing IC or within processor 410. Similarly, various aspects of USB or HDMI interface processing may be implemented as needed, within a separate interface IC or within processor 410. Demodulated streams, error-corrected streams, and demultiplexed streams are provided to various processing elements, including, for example, processor 410 and encoder / decoder 430, which operate in conjunction with memory and storage elements to process the data streams as needed for presentation on the output device.
[0131] Various components of system 400 can be housed within an integrated housing. Within the integrated housing, the various components can be interconnected and data can be transferred between these components using a suitable connection arrangement 425 (e.g., internal buses known in the art, including inter-chip (I2C) buses, wiring, and printed circuit boards).
[0132] System 400 includes a communication interface 450 capable of communicating with other devices via a communication channel 460. The communication interface 450 may include, but is not limited to, a transceiver configured to transmit and receive data via the communication channel 460. The communication interface 450 may include, but is not limited to, a modem or network interface card (NIC), and the communication channel 460 may be implemented, for example, within a wired and / or wireless medium.
[0133] In various implementations, data is streamed or otherwise provided to system 400 using wireless networks such as Wi-Fi networks, such as IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). In these examples, the Wi-Fi signal is received via a communication channel 460 and a communication interface 450 suitable for Wi-Fi communication. The communication channel 460 in these implementations is typically connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other cloud-based communications. Other implementations use a set-top box to provide streaming data to system 400, delivering data via an HDMI connection to input block 445. Still other implementations use an RF connection to input block 445 to provide streaming data to system 400. As mentioned above, various implementations provide data in a non-streaming manner. Furthermore, various implementations use wireless networks other than Wi-Fi, such as cellular networks or Bluetooth networks.
[0134] System 400 can provide output signals to various output devices, including a display 475, speakers 485, and other peripheral devices 495. The display 475 in various embodiments includes one or more of, for example, a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 475 can be used in televisions, tablets, laptops, mobile phones, or other devices. The display 475 can also be integrated with other components (e.g., as in a smartphone) or standalone (e.g., an external monitor for a laptop computer). In various examples of embodiments, other peripheral devices 495 include one or more of a standalone digital video disc (or digital versatile disc, both terms being DVR), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 495 that provide functionality based on the output of system 400. For example, a disc player performs the function of playing the output of system 400.
[0135] In various embodiments, control signals are transmitted between system 400 and display 475, speaker 485, or other peripheral devices 495 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable device-to-device control with or without user intervention. Output devices can be communicatively coupled to system 400 via dedicated connections through corresponding interfaces 470, 480, and 490. Alternatively, output devices can be connected to system 400 via communication interface 450 using communication channel 460. Display 475 and speaker 485 can be integrated into a single unit with other components of system 400 in electronic devices such as televisions. In various embodiments, display interface 470 includes a display driver, such as, for example, a timing controller (TCon) chip.
[0136] Alternatively, if the RF portion of input 445 is part of a separate set-top box, the display 475 and speaker 485 may be separate from one or more other components. In various embodiments where the display 475 and speaker 485 are external components, the output signal may be provided via a dedicated output connection, including, for example, an HDMI port, a USB port, or a COMP output.
[0137] These implementations can be executed by computer software implemented by processor 410, by hardware, or by a combination of hardware and software. As a non-limiting example, these implementations can be implemented by one or more integrated circuits. Memory 420 can be of any type suitable for the technical environment, and as a non-limiting example, it can be implemented using any suitable data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. Processor 410 can be of any type suitable for the technical environment, and as a non-limiting example, it can encompass one or more of microprocessors, general-purpose computers, special-purpose computers, and processors based on multi-core architectures.
[0138] Various specific implementations participate in decoding. As used in this application, "decoding" may encompass all or part of a process performed, for example, on a received coded sequence, to produce a final output suitable for display. In various implementations, such processes include one or more processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various implementations, such processes also include, or alternatively include, processes performed by a decoder of the various specific implementations described in this application, such as reconstructing chroma blocks; reconstructing samples of coded units; receiving filter on / off flags; performing operations described in formulas and / or equations; receiving filters; receiving video signals comprising luminance and chrominance components; obtaining filters associated with coded blocks; filtering samples within coded units; applying filters to a first component associated with samples in the coded block; modifying the value of a second component associated with samples in the coded block using the output of the filter applied to the first component; modifying the value of a third component associated with samples in the coded block using the output of the filter applied to the first component; obtaining (e.g., calculating) a weighting factor associated with the third component; applying the weighting factor to the output of the filter to generate a weighted filter output; modifying the value of a third component associated with samples in the coded block using the weighted filter output. The process involves: 1. Associating a third component with a sample in the coded block; 2. Reconstructing the value of the first component; 3. Obtaining refined signals for the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter; 4. Reconstructing the values of the first, second, and third components for a sample in the coded block; 5. Obtaining refined signals for the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter; 6. Obtaining a first weighting factor associated with the second component; 7. Determining a first weighted refined signal based on the first weighting factor and the refined signal; 8. Obtaining a second weighting factor associated with the third component; 9. Determining a second weighted refined signal based on the second weighting factor and the refined signal; 10. Modifying the second component using the first weighted refined signal; 11. Modifying the value of the third component using the second weighted refined signal; and so on.
[0139] As a further implementation, in one example, "decoding" refers only to entropy decoding; in another implementation, "decoding" refers only to differential decoding; and in yet another implementation, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" specifically refers to a subset of operations or broadly refers to a wider decoding process will be clear based on the specific context of the description and is believed to be well understood by those skilled in the art.
[0140] Various specific implementations involve encoding. In a manner similar to the discussion above regarding “decoding,” the term “encoding,” as used herein, can encompass all or part of the process performed on an input video sequence to produce an encoded bitstream. In various implementations, such processes include one or more processes typically performed by an encoder, such as partitioning, differential coding, transform, quantization, and entropy coding. In various embodiments, such processes also include, or alternatively include, processes performed by the encoder of the various specific embodiments described herein, such as: selecting a filter coefficient training function; training a set of optimal filter coefficients; determining whether to terminate training early; selecting a filter from a plurality of filters; unifying the optimization criteria for block classification with the optimization criteria derived from the filter coefficients; determining whether to apply a previously derived filter; selecting one or more (e.g., primary) components to apply the filter (e.g., filter coefficients); determining whether to turn the filter on / off; performing a rate distortion (RD) cost bias operation; performing the operations described in the formulas and / or equations; determining concurrent signal notifications of residuals, offset signals, weighting factors, tags, variables, parameters, filters, coefficients, LUTs, etc.; receiving a video signal including luminance and chrominance components; obtaining (e.g., selecting) a filter associated with a coding block; filtering samples within a coding unit; applying the filter to a first component associated with a sample in the coding block; using the output of the filter applied to the first component to modify the value of a second component associated with a sample in the coding block; using the output of the filter applied to the first component to modify the value of a second component associated with a sample in the coding block. Modify the value of a third component associated with a sample in the coded block; obtain (e.g., calculate) a weighting factor associated with the third component; apply the weighting factor to the output of a filter to generate a weighted filter output; use the weighted filter output to modify the third component associated with a sample in the coded block; reconstruct the value of a first component; obtain refined signals for the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter; reconstruct the values of the first, second, and third components for a sample in the coded block; obtain refined signals for the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter; obtain a first weighting factor associated with the second component; determine a first weighted refined signal based on the first weighting factor and the refined signal; obtain a second weighting factor associated with the third component; determine a second weighted refined signal based on the second weighting factor and the refined signal; modify the second component using the first weighted refined signal; modify the value of the third component using the second weighted refined signal; etc.
[0141] As a further example, in one implementation, "encoding" refers only to entropy encoding; in another implementation, "encoding" refers only to differential encoding; and in yet another implementation, "encoding" refers to a combination of differential and entropy encoding. Whether the phrase "encoding process" specifically refers to a subset of operations or broadly refers to a wider encoding process will be clear based on the specific context of the description and is believed to be well understood by those skilled in the art.
[0142] Note that for the syntax elements used in this article, refer to Table 2 and related descriptions (e.g., LfnstDcOnly, LfnstZeroOutSigCoeffFlag, transform_tree(x0, y0, cbwidth, cbheight, treetype)); Table 3 (e.g., pred_mode_plt_flag); Table 6 (e.g., alf_cTB_flag, alf_cTB_joint_chroma_cross_component_cb_flag); Table 7 (e.g., alf_cTB_filter_alt_idx, alf_cTB_joint_chroma_cross_component_filter_idc); and for the variables, parameters, and functions (e.g., tgt_vff_ds, tgt_vff, parameters w_C, w_Cr, resY_ds, variable curr) shown and described in the formulas and equations. Cb and curr Cr The following are descriptive terms: ,ccalf_off,ccalf_on); other syntax elements (such as sao-type-idx, sao-eo-class, weight_index, slice_joint_chroma_cross_component_alf_weight_sign_flag, JcCcWeight, JcCcAlfWeight, JcCcAlfCoeff, JcCcAlfWeightFactor, JcCcAlfWLut); etc. Therefore, they do not preclude the use of other syntax element names.
[0143] When the accompanying drawings are presented as flowcharts, it should be understood that block diagrams of the corresponding devices are also provided. Similarly, when the accompanying drawings are presented as block diagrams, it should be understood that flowcharts of the corresponding methods / processes are also provided.
[0144] Various implementation schemes refer to rate distortion optimization. Specifically, during the encoding process, a balance or trade-off between rate and distortion is typically considered, often taking into account computational complexity constraints. Rate distortion optimization is generally formulated as minimizing a rate distortion function, which is a weighted sum of rate and distortion. Different approaches exist to solve the rate distortion optimization problem. For example, these methods may be based on extensive testing of all encoding options (including all considered modes or encoding parameter values) and a complete evaluation of their encoding costs and the associated distortion of the reconstructed signal after encoding and decoding. Faster methods can also be used to reduce encoding complexity, particularly for the computation of approximate distortion based on prediction or prediction of the residual signal rather than the reconstructed residual signal. A hybrid of these two approaches can also be used, such as by using approximate distortion for only some of the possible encoding options and full distortion for others. Other methods evaluate only a subset of the possible encoding options. More generally, many methods employ any of a variety of techniques to perform optimization, but optimization is not necessarily a complete evaluation of both encoding costs and associated distortion.
[0145] The specific embodiments and aspects described herein may be implemented, for example, in methods or processes, apparatus, software programs, data streams, or signals. Even if discussed only in the context of a single form of specific embodiment (e.g., discussed only as a method), specific embodiments of the discussed features may also be implemented in other forms (e.g., apparatus or program). Apparatus may be implemented, for example, in suitable hardware, software, and firmware. These methods may be implemented, for example, in a processor, which generally refers to a processing device, including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communication devices, such as, for example, computers, mobile phones, portable / personal digital assistants (“PDAs”), and other devices that facilitate information communication between end users.
[0146] The references to “an implementation,” “implementation,” “example,” or “a specific implementation,” or “specific implementation,” and their variations, mean that the specific features, structures, characteristics, etc., described in connection with the implementation are included in at least one implementation. Therefore, the appearance of the phrases “in an implementation,” “in an implementation,” “in an example,” or “in an implementation,” and any other variations appearing throughout this application, do not necessarily refer to the same implementation or example.
[0147] Additionally, this application may involve "determining" various types of information. Determining information may include, for example, one or more of estimated information, calculated information, predicted information, or information retrieved from memory. Obtaining may include receiving, retrieving, constructing, generating, and / or determining.
[0148] Furthermore, this application may relate to "accessing" various types of information. Accessing information may include, for example, receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information, or more of these.
[0149] Furthermore, this application may relate to "receiving" various types of information. Like "access," "receiving" is intended to be a broad term. Receiving information may include, for example, accessing information or retrieving information (e.g., from memory) or more. Moreover, "receiving" typically involves one or more of the following during operations such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0150] It should be understood that, for example, in the cases of “A / B,” “A and / or B,” and “at least one of A and B,” the use of any of the following “ / ,” “and / or,” and “at least one” is intended to cover selecting only the first listed option (A), or only the second listed option (B), or selecting both options (A and B). As a further example, in the cases of “A, B, and / or C” and “at least one of A, B, and C,” such phrases are intended to cover selecting only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or selecting all three options (A, B, and C). As will be apparent to those skilled in the art and related fields, this can be extended to as many items as possible listed.
[0151] Moreover, as used herein, the term “signaling” refers (among other things) to instruct the corresponding decoder to do something. For example, in some implementations, encoder signals (e.g., to the decoder) include luma and chroma components, prediction signals, coding unit size, residuals (e.g., joint residual blocks for Cb and Cr blocks), selected principal components (e.g., variable vff_direct_applied_component), offset signals, weighting factors (e.g., fixed or variable values), refinement signals (e.g., the output of a filter applied to the selected / principal components (e.g., filtered output)), and markers (e.g., MPM markers, block-level CCALF on / off markers, indicators indicating whether ALF is applied to the luma Cb block). The parameters include TB tags, mappings (e.g., on / off block mappings), variables (e.g., variables vff_direct_applied_component or vff_not_direct_applied_component), parameters (e.g., ALF or CCALF filter parameters, SAO parameters), filters (e.g., filter sets, ALF and / or CCALF filters), coefficients (e.g., luminance and chrominance filter coefficients, center position coefficients), LUTs, and indices (e.g., weight value indices, filter set indices, LFNST indices, clipping value indices), etc. In this way, the same parameters are used on both the encoder and decoder sides in the implementation. Therefore, for example, the encoder can transmit specific parameters (explicit signaling) to the decoder so that the decoder can use the same specific parameters. Conversely, if the decoder already has specific parameters as well as other parameters, signaling can be used without transmission (implicit signaling) to simply allow the decoder to know and select specific parameters. Bit savings are achieved in various implementations by avoiding the transmission of any actual functionality. It should be understood that signaling can be implemented in many ways. For example, in various implementations, one or more syntax elements, tags, etc., are used to signal information to the corresponding decoder. Although the verb form of the word "signal" was mentioned above, the word "signal" can also be used as a noun in this article.
[0152] It will be apparent to those skilled in the art that embodiments may produce various signals formatted to carry, for example, storable or transmissible information. The information may include, for example, instructions for performing a method or data generated by one of the embodiments. For example, signals may be formatted to carry a bitstream of the embodiments. Such signals may be formatted as, for example, electromagnetic waves (e.g., using the radio frequency portion of the spectrum) or baseband signals. Formatting may include, for example, encoding the data stream and using a modulated carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, signals can be transmitted via a variety of different wired or wireless links. Signals may be stored on a processor-readable medium.
[0153] Video coding can use a variety of coding structures. Partitioning can include, for example, flexible multi-type tree block partitioning (e.g., quadtree, binary tree, and / or ternary tree partitioning). Prediction can include intra-frame prediction and inter-frame prediction. Intra-frame prediction can use, for example, one or more (e.g., 65) angular intra-frame prediction directions, including wide-angle prediction, chroma component linear model (CCLM), and / or matrix-based intra-frame prediction (MIP). Inter-frame prediction can use such as affine motion models, sub-block temporal motion vector prediction (SbTMVP), adaptive motion vector precision, decoder-side motion vector correction (DMVR), triangular partitioning, combined intra-frame and inter-frame prediction (CIIP), merge mode with motion vector difference (MMVD), bidirectional optical flow (BDOF), pixel-refined optical flow (PROF), and / or bidirectional prediction with CU weights (BiCW). Transform, quantization, and coefficient encoding can include, for example, multiple master transform selections with DCT2, DST7, and DCT8; quadratic transform encoding with Low Frequency Inseparable Transform (LFNST); correlation quantization (DQ) with a maximum QP increasing from 51 to 63; and / or modified transform coefficient encoding. Video coding can use loop filters (e.g., Universal Adaptive Loop Filter (GALF)). Video coding can use screen content encoding (e.g., Intra-Block Copy (IBC) and / or Palette Mode (PLT) for 4:4:4 content). 360-degree video coding (e.g., horizontal wraparound motion compensation) can be performed (e.g., disabling loop filtering at virtual boundaries).
[0154] Cross-component adaptive loop filtering (CCALF) can be applied to refine the chromaticity component based on luminance sample values.
[0155] Figure 5A An exemplary placement of the CCALF with respect to other loop filters is shown. The CCALF can modify (e.g., enhance) one or more chromaticity components by applying, for example, a linear diamond filter to the luminance channel. Figure 5BAn exemplary diamond-shaped filter is shown. A CCALF filter can be applied to a diamond-shaped region centered on the juxtaposition of the luminance components in the chrominance component samples. The filter output can be added to the chrominance sample values. In the example, the filter coefficients can be passed in the Adaptive Parameter Set (APS), by a factor (e.g., 2). 10 The filter is scaled and rounded for fixed-point representations. The application of the filter can be controlled on a variable block size and can be indicated, for example, by signaling a context-encoded flag received for each block of samples (e.g., per block). The block size (e.g., along with a CCALF enable flag) can be received at the slice level for one or more chroma components (e.g., each of which). Supported block sizes (e.g., in chroma samples) can include, for example, 16×16, 32×32, 64×64, and 128×128. The filter coefficient training function used in ALF can be used in a video processing device (e.g., an encoder) within CCALF.
[0156] Chromatic residuals can be jointly encoded (e.g., exemplary encoding devices may support a mode of joint chroma residual encoding). If joint encoding of the chroma residual mode is enabled, the joint residual block can be signaled for both the Cb and Cr blocks in the same transform unit. The Cb residual can be set to be equal to the signaled residual. The Cr residual can be set by eliminating the sign of the signaled residual. The decoder can reconstruct the chroma block, for example, by adding the signaled joint residual to the Cb prediction block and subtracting the joint residual signal from the Cr prediction block. The joint residual can be encoded using a conventional chroma residual encoding procedure. If the Cb and Cr coded block flags (CBF) are set to specific values (e.g., set to 1, which is a value greater than 0), a flag indicating whether the joint residual mode is used can be signaled using a flag in the bitstream.
[0157] The chroma QP offset value can be signaled separately from other chroma QP offset values used for other chroma residual coding modes, both in the Picture Parameter Set (PPS) and in the slice header for the joint chroma residual coding mode. The chroma QP offset value can be used to derive the chroma QP value of a block encoded using the joint chroma residual coding mode. In the example, the chroma QP offset can be set to -1 for the joint chroma residual coding mode and to +1 for the other chroma residual coding mode.
[0158] A video processing device (e.g., an encoder) can subtract the average value of the Cr residual (e.g., resCr) from the Cb residual (e.g., denoted as resCb), and the Cb residual can be used as input to the transformation and quantization processes, for example, according to equation (1):
[0159] resJoint=(resCb–resCr) / 2 (1)
[0160] For example, if chroma scaling of a luminance map with chroma scaling (LMCS) mode is valid, chroma scaling can be applied to the joint residual (e.g., similar to chroma scaling in another chroma residual coding mode). The resulting (e.g., encoded) joint residual signal can be scaled.
[0161] For example, such as Figure 6 As shown, low-frequency inseparable transform (LFNST) (e.g., simplified inseparable transform) can be applied between the forward master transform and quantization (e.g., at the encoder) and between dequantization and inverse master transform (e.g., at the decoder).
[0162] Figure 6 An exemplary low-frequency inseparable transform (LFNST) process is illustrated. In one example (e.g., an example of LFNST), a 4×4 inseparable transform and / or an 8×8 inseparable transform can be applied depending on the block size. For example, a 4×4 LFNST can be applied to a small block (e.g., min(width, height) < 8), and an 8×8 LFNST can be applied to a larger block (e.g., min(width, height) > 4).
[0163] For example, based on equation (2) using the exemplary input, an indivisible transformation can be used in LFNST.
[0164]
[0165] For example, according to equation (3), the 4×4 input block X can be represented as a vector. 4×4LFNST can be applied.
[0166]
[0167] According to Calculate the inseparable transformation, where This can indicate the transformation coefficient vector, and T can be, for example, a 16×16 transformation matrix. (16×1 coefficient vector) They can be (e.g., subsequently) reorganized into 4×4 blocks according to the scan order of the blocks (e.g., horizontal, vertical, or diagonal). Coefficients with smaller indices can be placed together in a 4×4 coefficient block with smaller scan indices.
[0168] A simplified non-separable transform can be used. The LFNST can apply the non-separable transform based on a direct matrix multiplication method. The LFNST can be implemented in a single pass (e.g., without multiple iterations). The dimension of the non-separable transform matrix can be reduced, e.g., to minimize the computational complexity and the storage space for storing the transform coefficients. A simplified non-separable transform (e.g., or RST) can be used in the LFNST. The simplified non-separable transform can include, for example, mapping an N-dimensional vector (e.g., for an 8×8 NSST, N can be equal to 64) to an R-dimensional vector in a different space, where N / R (R < N) can be a reduction factor. For example, according to Equation (4), the RST matrix can be an R×N matrix.
[0169]
[0170] The R rows of the transform can be R bases of the N-dimensional space. The inverse transform matrix of the RT can be the transpose of its forward transform. For example, a reduction factor of 4 can be applied to an 8×8 LFNST. A 64×64 direct matrix (e.g., 8×8 non-separable transform matrix size) can be reduced to a 16×48 direct matrix. A 48×16 inverse RST matrix can be used on the decoder side to generate the core (e.g., main) transform coefficients in the 8×8 upper-left region. For example, if a 16×48 matrix is applied, 48 input data are extracted from three 4×4 blocks in the upper-left 8×8 block (excluding the lower-right 4×4 block). For example, based on the reduced dimension, the memory usage for storing the LFNST matrix can be reduced from 10 KB to 8 KB. In the example, the top 8×48 and 8×16 matrices can be applied to an 8×8 TU and a 4×4 TU, respectively. For a block larger than, for example, an 8×8 TU, an 8×8 LFNST (e.g., a 16×48 matrix) can be applied to the upper-left 8×8 region. For an 8×4 TU or a 4×8 TU, for example, a 4×4 LFNST (e.g., a 16×16 matrix) can be applied to (e.g., only applied to) the upper-left 4×4 region. For a 4×N or N×4 TU (N≥16), for example, a 4×4 LFNST can be applied to two adjacent upper-left 4×4 blocks (e.g., each of them). The number of multiplications in the worst case can be, for example, 8 per sample.
[0171] LFNST transform sets can be selected. In the example, each transform set used in LFNST can have 4 transform sets and 2 inseparable transform matrices (e.g., kernels). For example, as shown in Table 1, the mapping from intra-prediction modes to transform sets can be predefined. The selected inseparable quadratic transform candidates for the transform set can be specified by the LFNST index. In the example, the LFNST index can be (e.g., explicitly) signaled. The LFNST index can be signaled in the bitstream, for example, once per intra-CU after the transform coefficients. An indication (e.g., IntraPredMode) can indicate the intra-prediction mode of the coded block.
[0172] Table 1 - Exemplary Transformation Selection Table
[0173] IntraPredMode Tr. Set Index IntraPredMode<0 1 0<=IntraPredMode<=1 0 2<=IntraPredMode<=12 1 13<=IntraPredMode<=23 2 24<=IntraPredMode<=44 3 45<=IntraPredMode<=55 2 56<=IntraPredMode 1
[0174] For example, a positive 8×8 LFNST can use a 16×48 matrix such that the transform can produce non-zero coefficients in the top-left 4×4 region within a given 8×8 region (e.g., only non-zero coefficients). If LFNST is applied, the 8×8 region (e.g., except for the top-left 4×4 region) may produce zero coefficients (e.g., only zero coefficients are generated if LFNST is applied). For example, if a non-zero element is detected in an 8×8 block region other than the top-left 4×4 (e.g., because it may mean that LFNST is not applied), signaling the LFNST index can be skipped. The LFNST index can be inferred to be zero. For example, if the LFNST index is equal to zero (0), LFNST can be disabled. Otherwise (e.g., if the LFNST index is not equal to zero (0)), LFNST can be applied. The LFNST index can be obtained (e.g., context-encoded) and / or can be independent of the intra-prediction mode. In the example (e.g., limited to) the first binary (bin) can be context-encoded.
[0175] For example, if the block size is greater than or equal to a given threshold (W>=4 and H>=4) and if the transform skip pattern flag is zero, an inverse LFNST can be conditionally applied. For instance, if the width (W) and height (H) of the transform coefficient block are greater than 4, an 8×8 LFNST can be applied to the top-left 8×8 region of the transform coefficient block. Otherwise (e.g., if the width (W) or height (H) of the transform coefficient block is not greater than 4), a 4×4 LFNST can be applied to the top-left min(8,W)×min(8,W) region of the transform coefficient block.
[0176] In the example, LFNST can be applied to intra-CUs in both intra-slices and inter-slices, as well as to both luma and chroma. For example, if dual-tree is enabled, the LFNST indexes for luma and chroma can be signaled separately. A single LFNST index can be signaled and used for luma and chroma, for example, for inter-slices (e.g., when dual-tree is disabled).
[0177] For example, if Intra-Frame Sub-Partition (ISP) mode is selected, LFNST can be disabled and the signaling notification RST index can be skipped. RST can be disabled for ISP prediction residuals. For example, if matrix-based intra-frame prediction (MIP) mode is selected and min(W,H)<16, LFNST can be disabled and the signaling notification index can be skipped.
[0178] Samples of a rectangular block with width W and height H can be predicted by performing a MIP (Multi-Input Prediction). The MIP takes as input H reconstructed neighbor boundary samples from the left row of the block and W reconstructed neighbor boundary samples from the top row of the block. For example, if reconstructed samples are unavailable, intra-frame prediction can be performed. The predicted signal can be generated based on one or more of the following: averaging, matrix-vector multiplication, and linear interpolation (e.g., ...). Figure 7 (As shown in the example).
[0179] Figure 7 An example of a matrix-weighted intra-frame prediction process is shown. Neighboring samples can be averaged. In the example where W = H = 4, eight (8) boundary samples can be extracted by averaging. In other examples, eight boundary samples can be extracted by averaging. For example, the input boundary can be calculated by averaging neighboring boundary samples based on the block size. top and bdry left Reduce to a smaller boundary and Two simplified boundaries and It can be connected into a simplified boundary vector bdry red For example, for a 4×4 block, the size of the reduced boundary vector can be 4, while for blocks of other shapes, the size can be 8. For example, if the pattern refers to the MIP pattern, the concatenation can be defined according to equation (5):
[0180]
[0181] Using the averaged samples as input, matrix-vector multiplication can be performed (e.g., followed by an offset). The result can include a reduced prediction signal on a set of subsampled samples from the original block. The reduced prediction signal is pred. red (For example, width W) redFor and height H red The signal on the downsampled block can be used to generate bdry from the reduced input vector. red Based on equations (6) and (7), for example, the parameter W can be defined. red and H red .
[0182]
[0183]
[0184] For example, by calculating the matrix-vector product, adding the offset, and for example, according to equation (8), the reduced prediction signal pred can be calculated. red :
[0185] pred red =A·bdry red +b (8)
[0186] Matrix A may have W red ·H red Row sums (e.g., W = H = 4) may have 4 columns and (in other cases) 8 columns. Vector b can be a vector W with respect to its size. red ·H red Vector A and offset vector b can be obtained from one of the groups S0, S1, S2. For example, according to equation (9), the index idx = idx(W,H) can be determined:
[0187]
[0188] Interpolation can be performed to generate a predicted signal at the remaining positions. For example, the predicted signal at the remaining positions can be generated by linear interpolation (e.g., single-step linear interpolation in each direction) based on the predicted signal from a quadratized set. The matrix and offset vector used to generate the predicted signal can be obtained from three sets of matrices S0, S1, and S2. In the example, the S0 set may include 18 matrices. (For example, each matrix can have 16 rows and 4 columns) and 18 offset vectors. (For example, each vector could be 16 in size). The set S0 matrix and offset vectors can be used for blocks of size 4×4. The set S1 can include 10 matrices. (For example, each matrix can have 16 rows and 8 columns) and 10 offset vectors. (For example, each vector could be 16 in size). The matrices and offset vectors of set S1 can be used for blocks of sizes 4×8, 8×4, and 8×8. Set S2 can include 6 matrices. (For example, each matrix can have 64 rows and 8 columns) and 6 offset vectors. (For example, a vector of size 64). The matrix and offset vector of set S2, or a portion of the matrix and offset vector, can be used for other block shapes.
[0189] Indications for MIP modes and prediction modes can be signaled. In an example (e.g., for a coding unit (CU) in an intra-frame mode), an indication (e.g., a flag indicating whether the MIP mode will be applied to the corresponding prediction unit (PU)) can be signaled. For example, if MIP is to be applied, a most probable mode (MPM) indication (e.g., an MPM flag) can be signaled. The MPM indication can indicate whether the prediction mode is one of the MPM modes. For MPM, three (3) modes can be considered (e.g., in MIP). MPM modes can be obtained, for example, by context coding with truncated binaryization. Non-MPM modes can be obtained as fixed-length codes (FLCs) (e.g., encoded). For example, MPM can be derived by performing a mode mapping between intra-frame prediction modes and MIP intra-frame prediction modes based on a predefined mapping table and block size (e.g., idx(W, H) ∈ {0, 1, 2}). For example, forward (e.g., regular intra-prediction mode to MIP mode) and inverse (e.g., MIP mode to regular intra-prediction mode) can be mapped according to equations (10) and (11).
[0190] predmode ALWIP =map_angular_to_alwip idx [predmode Angular (10)
[0191] predmode Angular =map_alwiop_to_angular idx(PU) [predmode ALWIP (11)
[0192] The number of supported MIP modes may depend on the block size. For example, 35 modes can be used for a block where max(W,H) <= 8 && W*H < 32. For example, 19 modes and 11 modes can be used for max(W,H) = 8 and max(W,H) > 8, respectively. In the example, for example, according to equation (12), the two modes can be associated with the same matrix and offset vector:
[0193]
[0194] Palette mode can be used for encoding screen content, where, for example, the encoded blocks can contain a small number of different colors. Palette mode can be used for 4:4:4 video content. Signals can be sent to an index (e.g., in palette mode) to indicate the color value of a sample.
[0195] A palette table may contain a table of representative color values of a CU obtained (e.g., encoded) using a palette pattern. For example, for one or more samples in the CU, an index in the table (e.g., the current table) can be signaled in the bitstream. A video processing apparatus (e.g., a decoder) can use the palette table and the index to reconstruct samples of the CU. Entries in the palette table may include three components (e.g., RGB or YCbCr). An escape index may indicate that a sample with a color is not represented in the palette table. The bitstream may include (e.g., encoded) the quantized values of the components of the escaped samples.
[0196] The size of the palette table can be referred to as the palette size. Indices from zero to the palette size minus one can be used for entries from the palette, and, for example, if the palette size is non-zero, the escape index can be set to be equal to the palette size. An example palette is encoded in... Figure 8 As shown in the image.
[0197] Figure 8 An example of palette pattern encoding with a palette size of four (4) is shown. For example, a palette table export can be performed on the encoder side. A palette table can be obtained (e.g., encoded). Palette indices of samples in the CU can be obtained (e.g., encoded).
[0198] In the example, CCALF can produce approximately 1% BD rate luma coding gain under the random access (RA) test conditions most relevant to the example, while resulting in approximately 50% increased computational complexity relative to ALF, for example, when applying both CCALF and ALF to (e.g., all) samples. In the example, ALF can produce approximately 5% RA coding gain. In the example, for larger coding blocks (e.g., min(width, height) ≥ 16), LFNST can be used with MIP. In the example (e.g., for 4:4:4 video content), palette patterns can be used for CUs of possible CU sizes.
[0199] Joint chroma CCALF can be performed to, for example, reduce the complexity of CCALF. For instance, a set (e.g., only one set) of filter coefficients can be used to generate a CCALF-filtered output as a refined signal for one (e.g., only one) of the two color components, while a (e.g., appropriately) weighted version of the same chroma refined signal can be applied to the other color component. The CCALF-filtered output signal can be, for example, the output of a CCALF filter applied to the component based on a set of filter coefficients. Exemplary LFNST limits of the MIP can be modified (e.g., refined). For example, based on the CU size, it can be determined whether a palette mode is used.
[0200] The inherent correlation present in the Cb and Cr components can be used in joint chroma residual coding. An inherent correlation may exist between the CCALF output refinement signals of the two chroma components. Assuming the correlation between the CCALF output refinement signals of the two chroma components, this correlation can be utilized to (e.g., significantly) reduce the complexity of the CCALF and (e.g., thereby) achieve a better trade-off between complexity and coding efficiency.
[0201] Figure 9 An exemplary workflow for Joint Chromaticity CCALF is shown. In some examples, the CCALF filter can be applied to one of the two chromaticity components, such as... Figure 9 The example CCALF filtering process is shown in the example. The refined signal of another chroma component can be derived as a (e.g., appropriate) weighted version of the same refined signal (as a refined signal of one of the two chroma components).
[0202] In some examples, other processes, such as on / off control and signaling mechanisms for CCALF filtering per (e.g., per) coded block (e.g., specifying block size), can be identical to those in CCALF. For example, a set of block-level CCALF on / off indicators can be signaled per (e.g., per) chroma component. The video processing apparatus (e.g., a decoder) can receive two sets of block-level CCALF on / off markers, e.g., one set for the Cb component and one set for the Cr component. For example, a set of block-level CCALF on / off control indicators can be signaled (e.g., encoded or received in the bitstream), e.g., to indicate CCALF control information for the two chroma components. For example, a set of ALF filter coefficients can be obtained (e.g., encoded, decoded), such as... Figure 22 The 2202 is shown.
[0203] Video processing devices (e.g., encoders) can be trained for a set of optimal filter coefficients, such as CCALF. The desired target refined signal can be the residual of each chroma component. For example, the optimization problem for the Cb components can be represented by equation (13).
[0204] Find tgt_ccalfCb,stmin(orgCb-(tgt) ccalfCb +alfCb)) 2 (13)
[0205] The parameters tgt_ccalfCb, orgCb, and alfCb can represent the (e.g., ideal) target CCALF output signal, the original input video signal, and the ALF output signal of the Cb component, respectively. The optimal (e.g., target) CCALF of the Cb component can be determined, for example, based on the derivative of the mean square error of equation (13), as shown in equation (14).
[0206] tgt_ccalfCb=resCb=orgCb-alfCb (14)
[0207] For example, the optimal (e.g., target) CCALF of the Cr component can be determined based on (15).
[0208] tgt_ccalfCr=resCr=orgCr-alfCr (15)
[0209] For example, an optimization problem (e.g., when using joint chromaticity CCALF) can be represented, for example, according to equation (16).
[0210] Find tgt_ccalf,st
[0211] min[(orgCb-(tgt_ccalf+alfCb)) 2 +(orgCr-(tgt_ccalf*w+alfCr)) 2 (16)
[0212] The parameter tgt_ccalf can represent the ideal target CCALF output signal. The parameter w can represent the weighting factor. The formula shown in equation (16) can be solved, for example, by making its derivative equal to zero, as shown in equation (17).
[0213] -2[orgCb-(tgt ccalf +alfCb)]-2w*[orgCr-(tgt_ccalf*w+alfCr)]=0 (17)
[0214] The target CCALF output signal can be determined, for example, by solving equation (17) and interpolating resCb and resCr from equations (14) and (15):
[0215] tgt_ccalf=(resCb+w*resCr) / (1+w2 (18)
[0216] A joint chroma CCALF (JC-CCALF) filter can be derived iteratively. A JC-CCALF filter can be derived, for example, using chroma samples with equation (18). A video processing device (e.g., an encoder) can determine whether a previously derived JC-CCALF filter should be applied to (e.g., each) chroma-coded block (e.g., 16×16). For example, if the filtered chroma-coded block becomes better (e.g., the distortion between the filtered chroma-coded block and the original signal becomes smaller), it can be determined that JC-CCALF should be applied to the current chroma-coded block. The JC-CCALF filter can be derived again using (e.g., only) the chroma samples to which the JC-CCALF filter is applied, for example, after the chroma-coded block to be JC-CCALF filtered has been identified, using equation (18).
[0217] In one example, the joint chromaticity CCALF output refinement signal can be (e.g., directly) applied to the Cb component, weighted, and then applied to the Cr component (e.g., as shown in the image). Figure 9 As shown, or in one or more examples in this paper). In the examples, the joint chromaticity CCALF output refinement signal can be (e.g., directly) applied to the Cr component, weighted and applied to the Cb component. The components Cb and Cr in equation (18) can be interchanged.
[0218] In the example, the weighting factor (e.g., weight) can be a fixed, predetermined value (e.g., -1, 1 / 2, etc.) for multiple (e.g., all) images in the sequence. For example, implicit and fixed weight values can be determined based on the color format of the input video signal (e.g., 4:2:0, 4:2:2, 4:4:4, etc.). In the example, implicit weight values can be determined based on quantization parameters (QP). For example, relationships can be defined, for instance, through analytic functions and / or lookup tables (LUTs).
[0219] In the example, weighting factors can be incorporated (e.g., explicitly encoded) into the bitstream. Weighting factors can be obtained for images or slices, for example, by deriving and / or encoding weighting factors for each image or slice. For example, weighting factors can be signaled in the PPS or slice header. Weighting factors can be derived and applied to a set of images (e.g., images from the same scene). For example, weighting factors can be signaled in the Sequence Parameter Set (SPS). Weighting factors can be included (e.g., encoded) in the Adaptive Parameter Set (APS) along with other ALF parameters.
[0220] For example, if weighting factors are applied to filters of a specified size (e.g., each), the weighting factors can be adjusted based on the QP used for the code block. The fitness function can be defined, for example, through one or more analytic functions and / or one or more LUTs.
[0221] The value of a weighting factor can be greater than 1, equal to 1, or less than 1. The value of a weighting factor can be positive or negative. The value of a weighting factor can be determined based on one or more indicators in the bitstream. In the example, a weighting factor can be associated with a tag (e.g., encoded with a tag) of its sign (e.g., “weight_sign”) to indicate the sign of the weighting factor (e.g., a value of 0 for positive and 1 for negative). For example, the indicator “weight_isGreaterThanOne” can indicate whether the weighting factor is greater than 1. A fixed-length encoded weight value index indicator (such as “weight_index,”) can indicate a fixed-length encoded weight value index in M bits (e.g., 0 to (2^M-1)). The resulting maximum weight (e.g., denoted as “weight_max”) can be 2^M. For example, if weight_index is not equal to 0, the weight value can be equal to weight_index / weight_max. For example, if weight_index is equal to 0, the weight value can be determined to be equal to 1. The weight value derived from `weight_index` can represent the reciprocal of the actual weight value, and the actual weight value can be calculated based on `weight_max / weight_index`, for example, if the indicator (e.g., `weight_isGreaterThanOne`) indicates that the weighting factor is greater than 1. For example, if the indicator (e.g., `weight_sign`) indicates that the weighting factor is negative, the actual weight can be calculated as a negative value, using the previously derived weight value as the magnitude. Otherwise, for example, the weighting factor can be calculated as a positive value with an earlier derived value as the magnitude.
[0222] In the examples, the weight values used for filtering at each coded block can be different. Weight values can be determined at the block level. In some examples, a set of weight values can be included (e.g., encoded) at the slice level (e.g., included in the slice header syntax). At the block level, for example, if a filter is to be applied to a block, the index of the slice's weight value set can be signaled for one or more coded blocks (e.g., each coded block). For example, if a filter will not be applied to a coded block, signaling the weight index can be skipped for that block.
[0223] Whether LFNST can be combined with MIP can be determined, for example, based on (e.g., at least in part) the type of the current slice. For example, LFNST can be combined with MIP if the encoded block is considered large (e.g., min(width, height) ≥ 16) and the current slice is an I slice. Table 2 shows examples of the corresponding syntax.
[0224] Table 2 - Exemplary fragments of coding unit syntax
[0225]
[0226] In the example, MIP can have different modes. LFNST can (e.g., only) be combined with certain MIP modes. For example, for one or more MIP models (e.g., MIP modes that are close to the horizontal or vertical intra-frame prediction direction), LFNST can be disabled and the signaling of lfnst_idx[x0][y0] can be skipped.
[0227] For example, based on the block size, it can be determined whether to use palette mode. For instance, palette mode can be disabled for small block sizes in inter-frame slices. For example, if the block size in a sample is smaller than a certain value (e.g., a certain threshold), the block can be considered small.
[0228] In the examples, implicit and fixed CU size thresholds (e.g., 32, 64, etc.) can be used. Palette mode cannot be used to encode blocks, for example, if the block is in an inter-frame slice and the block size is less than or equal to the limit. Table 3 shows exemplary fragments of the coding unit syntax where the palette mode CU size threshold is 32 samples.
[0229] Table 3 - Exemplary fragments of coding unit syntax
[0230]
[0231] In the example, a CU size threshold (e.g., explicitly encoded) can be incorporated into the bitstream. For instance, the palette mode CU size threshold can be signaled in the slice header, PPS, SPS, etc.
[0232] For example, a cross-component adaptive loop filter (CCALF) can be applied (e.g., once) to one chroma component, and a thinned signal can be derived for another chroma component as a weighted version of the thinned signal to reduce complexity.
[0233] In the example, a video processing apparatus (e.g., a decoder) may be configured to receive a cross-component filter and a video signal including a luminance component, a first chrominance component, and a second chrominance component. The video processing apparatus may be configured to apply the cross-component filter to the luminance component of the video signal to determine a first chrominance offset associated with the first chrominance component. The video processing apparatus may be configured to calculate a second chrominance offset associated with the second chrominance component based on the first chrominance offset and a weighting factor. The video processing apparatus may be configured to refine the first chrominance component using the first chrominance offset and the second chrominance offset.
[0234] In video coding, reconstructed video images or frames can be filtered to reduce or remove coding artifacts such as blockiness and ringing. Video frame filtering (VFF) can be in-loop filtering, where the filtered signal can be reused as a prediction reference image for subsequent images. VFF can also be post-processing filtering, where the filtered signal can be used for final playback but may not be used as a prediction reference image for subsequent images.
[0235] In-loop filtering can improve the subjective quality of reconstructed video frames and improve the coding efficiency of subsequent frames. Post-processing filtering can also improve the subjective quality of reconstructed frames.
[0236] Video frame filters can include, for example, deblocking filters, sample adaptive offset (SAO), adaptive loop filter (ALF), cross-component ALF (CCALF), etc. Two-sided filters and / or Hadamard filters can be used, for example, for in-loop or post-processing filtering.
[0237] Loop filters, such as deblocking filters, SAO, and ALF, can be applied. An exemplary sequence of filtering steps could be deblocking filter, SAO, and ALF.
[0238] In the examples, for video frame filtering, SAO and deblocking filtering can be implemented. Luminosity mapping with chroma scaling (e.g., also known as an adaptive in-loop shaper) can be performed (e.g., for video frame filtering). In some examples, luminosity mapping with chroma scaling can be performed before deblocking.
[0239] Spatial prediction can reduce the spatial redundancy inherent in video signals. Temporal prediction (also known as "inter-frame prediction" or "motion-compensated prediction") uses pixels from acquired (e.g., encoded) video frames to predict video blocks. A video block can be the current video block. Temporal prediction can reduce the temporal redundancy inherent in video signals. The temporal prediction signal for a given video block can be signaled via one or more motion vectors (MVs) that indicate the amount and / or direction of motion between the block (e.g., the current block) and its reference block.
[0240] An ALF with block-based filter adaptation can be applied. In the example (e.g., for the luminance component), for example, based on the direction and activity of the local gradient, one of multiple filters (e.g., 25 filters) can be selected for each 4×4 block.
[0241] Figure 10A and Figure 10B An example of the shape of an adaptive loop filter (ALF) is shown. Figure 10A and Figure 10B Two rhombus filter shapes are shown (e.g., chroma: 5×5 rhombus, luminance: 7×7 rhombus). In the example, a 7×7 rhombus can be applied to the luminance component, and a 5×5 rhombus can be applied to the chroma component.
[0242] Block classification can be performed on the luminance components of (e.g., each) 4×4 block, for example, to classify the block into a category (e.g., one of 25 categories). For example, the classification index C can be derived, for example, based on the quantized values of its orientation D and activity A, according to equation (19).
[0243]
[0244] The parameters D in Equation 1 can be calculated, for example, based on the gradients in the horizontal, vertical and two diagonal directions, and can be calculated, for example, using the one-dimensional (1-D) Laplacian method according to Equations (20)-(23).
[0245]
[0246]
[0247]
[0248]
[0249] The gradients in the horizontal, vertical, and two diagonal directions can be called directional gradients. Indices i and j can refer to the coordinates of the top-left sample of a 4×4 block (e.g., a 2×2 reconstructed block), and R(i,j) can indicate the reconstructed sample at coordinates (i,j).
[0250] 1-D Laplacian computation with quadratic sampling can be applied, for example, to reduce the complexity of block classification.
[0251] Figures 11A to 11D An example of Laplacian calculation for secondary sampling is shown. Figure 11A This is a schematic diagram showing the sampling locations for the vertical gradient. Figure 11B This is a schematic diagram illustrating the secondary sampling location for a horizontal gradient. Figure 11C This is a schematic diagram showing the secondary sampling position for the diagonal gradient in the first direction. Figure 11D This is a schematic diagram illustrating the secondary sampling position for the diagonal gradient in the second direction. (Reference) Figures 11A to 11D The same secondary sampling location can be used for gradient calculation in multiple (e.g., all) directions.
[0252] The maximum and minimum values of the gradients in the horizontal and vertical directions can be set, for example, according to equation (24).
[0253]
[0254] For example, the maximum and minimum values of the gradients in the two diagonal directions can be set according to equation (25).
[0255]
[0256] For example, the directional value D can be derived in one or more of the following operations 1-4 by comparing the above values (e.g., for equations (24) and (25)) with two thresholds t1 and t2:
[0257] Operation 1: If and If both are true, then D can be set to 0.
[0258] Operation 2: If Continue; otherwise, continue from operation 4.
[0259] Operation 3: If Set it to 2; otherwise, D can be set to 1.
[0260] Operation 4: If Set it to 4; otherwise, D can be set to 3.
[0261] For example, the activity value A can be calculated according to equation (26).
[0262]
[0263] The activity value A can be quantized, for example, to a range of 0 to 4 (e.g., including the end values). The quantized value can be represented as... Classification operations may not be applied to the chromaticity components in an image. For example, a single set of ALF coefficients may be applied to (e.g., for each) chromaticity component.
[0264] For example, before filtering a (e.g., 4×4) luma block, one or more geometric transformations (e.g., rotation or diagonal and vertical flipping) can be applied to the filter coefficients f(k,l) and / or the corresponding filter clipping value c(k,l). The application of the geometric transformation can depend on the gradient values calculated for the luma block. The geometric transformation can be equivalent to applying the transformation to samples in the filter's support region, for example, making different blocks to which ALF is applied more similar by unifying their orientation. The orientation of blocks to which ALF is applied can be unified.
[0265] For example, geometric transformations (e.g., including diagonal, vertical flip and / or rotation) can be used according to equations (27)-(29).
[0266] Diagonal: f D (k,l)=f(l,k),c D (k,l)=c(l,k), (27)
[0267] Vertical flip: f V (k,l)=f(k,Kl-1),c V (k,l)=c(k,Kl-1) (28)
[0268] Rotation: f R (k,l)=f(Kl-1,k),c R (k,l)=c(Kl-1,k) (29)
[0269] For example, the parameter K can be the size of the filter, and 0 ≤ k, l ≤ K-1 can be, for example, coefficient coordinates, such that position (0, 0) can be located in the upper left corner and position (K-1, K-1) can be located in the lower right corner. For example, based on the gradient values computed for the block, the transform can be applied to the filter coefficients f(k, l) and / or the clipping value c(k, l). For example, the example relationships between the transform and the four gradients in the four directions can be summarized according to Table 4:
[0270] Table 4 - Example mapping of gradients computed for a block and transformation
[0271]
[0272]
[0273] ALF parameters can be signaled in the Adaptive Parameter Set (APS). In an example of an APS, one or more sets (e.g., up to 25 sets) of luminance filter coefficients and clipping value indices, and / or one or more sets (e.g., up to one set) of chrominance filter coefficients and clipping value indices can be signaled. Filter coefficients from different categories can be combined, for example, to reduce bit overhead. For example, in a slice header, the index of the APS used for the current slice can be signaled.
[0274] The clipping value can be determined using the luminance (L) table and chrominance (C) table of the clipping value obtained from the APS (e.g., decoded). The clipping value can depend on the internal bit depth. For example, the luminance table and chrominance table of the clipping value can be obtained, for example, according to equations (30)-(32).
[0275]
[0276] AlfClip = {round(2 B-α*n (32) for n∈[0..N-1]}
[0277] AlfClip can be a clipping value, parameter B can indicate the internal bit depth or the bit depth of the input sample of ALF, α can be a predefined constant value (e.g., equal to 2.35), and parameter N can be a predefined constant value (e.g., equal to 4), which can represent the number of allowed clipping values.
[0278] The filtering process can be controlled at the Coding Tree Block (CTB) level. A signal flag can be sent to indicate whether an ALF can be applied to the Luminance CTB. The Luminance CTB can select a filter set from a filter set (e.g., a fixed set of 16 filters) and a filter set signaled in the APS. For the Luminance CTB, a filter set index can be sent to indicate which filter set can be applied. The fixed filter set (e.g., a fixed set of 16 filters) can be predefined and hard-coded in the encoder and / or decoder.
[0279] Filter coefficients can be quantized using parameters equal to a predetermined value (e.g., 128). For example, bitstream consistency can be applied so that coefficient values at non-center positions are within a certain range. 7 -2 7Within the range of -1 (e.g., including boundary values), for example, to reduce multiplication complexity. In the bitstream, it may be impossible to signal the center position coefficient (e.g., signaling can be skipped), and the center position coefficient can be considered equal to the norm (e.g., 128).
[0280] For example, on the decoder side, samples R(i,j) within the CU can be filtered. Each sample R(i,j) within the CU can be filtered (e.g., if ALF is enabled for CTB), which can result in sample values R′(i,j) according to equation (33).
[0281] R′(i,j)=R(i,j)+((∑ k≠0 ∑ l≠0 f(k,l)×K(R(i+k,j+l)-R(i,j),c(k,l))+64)>>7) (33)
[0282] For example, f(k,l) can indicate the obtained (e.g., decoded) filter coefficients, K(x,y) can indicate the clipping function, and c(k,l) can indicate the obtained (e.g., decoded) clipping parameters. Variables k and l can be... and The values vary between L and L, where L can represent the filter length. The clipping function K(x,y) = min(y,max(-y,x)) can correspond to the function Clip3(-y,y,x).
[0283] Figure 12 This is a schematic diagram illustrating block classification (e.g., modified block classification) at virtual boundaries. For example, modified block classification and filtering can be performed on samples near the horizontal CTU boundary to reduce the row buffer requirement of the ALF. For example, virtual boundaries can be identified by shifting the horizontal CTU boundary by "N" samples (e.g., as shown in the diagram). Figure 12 (As shown in the example). For the luminance component, N can be equal to 4, and for the chrominance component, N can be equal to 2.
[0284] Modified block classifications can be applied to the luminance components (e.g., such as...). Figure 12 (As shown in the example). The 1D Laplacian gradient computation of the 4×4 block above the virtual boundary can use (e.g., only) samples above the virtual boundary. The 1D Laplacian gradient computation of the 4×4 block below the virtual boundary can use (e.g., only) samples below the virtual boundary. For example, by taking into account the reduced number of samples used in the 1D Laplacian gradient computation, the quantization of the activity value A can be scaled.
[0285] Figure 13This is a schematic diagram illustrating ALF filtering (e.g., modified ALF filtering) at a virtual boundary. Symmetry padding can be performed at the virtual boundary for the luminance and / or chrominance components. For example, if the sample being filtered is located below the virtual boundary (e.g., as shown in the image),... Figure 13 As shown in the example, adjacent samples located above the virtual boundary can be filled, and corresponding samples on the other side can be filled (e.g., symmetrically).
[0286] Deblocking filters can be applied to samples adjacent to the boundaries of prediction units (PUs) or transform units (TUs), unless the boundary is also a picture boundary, or when deblocking is disabled across slice or tile boundaries (an option that can be signaled by the video processing device, such as an encoder). For example, if the PU boundary is not always aligned with the TU boundary for inter-picture predictive coding blocks (CBs), then both PU and TU boundaries can be considered. Syntax elements in the Sequence Parameter Set (SPS) and slice header can indicate whether deblocking filters can be applied across slice and block boundaries.
[0287] For example, a deblocking filter can be applied to a 4×4 sample grid. For example, for luminance and chrominance samples, a deblocking filter can be applied (e.g., only) to edges that can be aligned on an 8×8 sample grid, which can reduce worst-case computational complexity without a significant degrade in visual quality. For example, parallel processing operations can be improved by preventing cascading interactions between nearby filtering operations.
[0288] The strength of the deblocking filter can be controlled by the values of one or more syntax elements. In some examples, three strengths can be used. For example, given that P and Q can be two adjacent blocks with a common 8×8 grid boundary, a specific filter strength can be assigned if one of the blocks is an intra-image predicted block (e.g., filter strength of 2(2)). Otherwise (e.g., if the block is not intra-image predicted), a specific filter strength can be assigned (e.g., filter strength of 1) if any of the following conditions are met: P or Q has at least one non-zero transform coefficient; the reference indices of P and Q are not equal; the motion vectors of P and Q are not equal; and / or the difference between the motion vector components of P and Q is greater than or equal to (e.g., one) integer sample. For example, if none of these conditions are met, a specific filter strength can be assigned (e.g., filter strength of 0) (e.g., indicating that the deblocking process can be skipped).
[0289] Multiple (e.g., two) thresholds (e.g., tC and β) can be determined based on a predefined table, for example, based on the filter strengths of P and Q and the average quantization parameter. Based on the threshold (e.g., β), it can be determined whether to apply no filtering, strong filtering, or weak filtering to the luminance samples. For example, the determination can be applied across four luminance rows or columns, for example, using the first or last row or column. Based on one or more thresholds, it can be determined whether to apply no filtering or normal filtering to the chrominance samples. For example, if the filter strength is greater than 1, normal filtering can be applied. For example, the filtering process can be performed using control variables tC and β.
[0290] The processing sequence of a deblocking filter can include, for example, first performing horizontal filtering on the vertical edges of the image (e.g., the entire image), and then performing vertical filtering on the horizontal edges. This processing sequence allows multiple horizontal or vertical filtering processes to be applied in parallel threads. It also enables multiple horizontal or vertical filtering processes to be implemented on a CTB-CTB basis, for example, with minimal processing latency.
[0291] For example, SAO can modify the obtained (e.g., decoded) samples by conditionally adding offset values to one or more samples after applying a deblocking filter based on values in a lookup table (LUT). The LUT can be sent by a video processing device (e.g., an encoder). For example, SAO filtering can be performed on a region-based basis based on the filter type selected for each CTB by the syntax element (e.g., sao-type-idx). In some examples, a zero (0) value for the syntax element (e.g., sao-type-idx) can indicate skipping the SAO filter for the CTB, and values 1 and 2 can indicate the use of band offset and edge offset filter types, respectively.
[0292] The band offset mode can be indicated or specified by the value (e.g., 1) of a syntax element (e.g., sao-type-idx). For example, the selected offset value can be determined based on the sample size value. The band offset mode can have a full range of sample size values, which can be (e.g., uniformly) divided into 32 segments (e.g., bands). For example, by adding a transmit value represented as a band offset, sample values belonging to multiple bands (e.g., four consecutive bands out of 32 bands) can be modified. The band offset can be positive or negative. For example, consecutive bands (e.g., four consecutive bands) can be used when the sample size values in the CTB tend to concentrate in several bands in smooth regions where band artifacts may occur. The number of offsets (e.g., four offsets) can be determined, for example, in accordance with the edge offset operation mode. The number of offset values used in the edge offset operation mode can be four.
[0293] Edge offset patterns can be indicated or specified by syntax element (e.g., sao-type-idx) values (e.g., 2). Syntax elements (e.g., sao-eo-class) can have values (e.g., from 0 to 3) indicating whether one of the horizontal, vertical, or two diagonal gradient directions is available for edge offset classification in CTB.
[0294] Figure 14 Four example gradient patterns used in Sample Adaptive Offset (SAO) are shown. Figure 14 Four gradient modes for the corresponding sao-eo-class in the edge offset mode are shown. For example... Figure 14 As shown in the example, a sample labeled "p" can indicate the central sample to be considered. Two samples labeled "n0" and "n1" can specify two adjacent samples, for example, along gradient patterns of (a) horizontal (sao-eo-class=0), (b) vertical (sao-eo-class=1), (c) 135° diagonal (sao-eo-class=2), and (d) 45° (sao-eo-class=3).
[0295] For example, by comparing a sample value p at a certain location with the values n0 and n1 of two samples at adjacent locations, a sample in the CTB can be classified into one of the EdgeIdx categories (e.g., as shown in Table 5). Table 5 shows examples of EdgeIdx categories in the SAO edge categories. Classification can be performed based on the obtained (e.g., decoded) sample values. For example, depending on the EdgeIdx category at the sample location, such as for EdgeIdx categories from 1 to 4, an offset value from the sent lookup table can be added to the sample value. For categories 1 and 2, the offset value can be positive, while for categories 3 and 4, the offset value can be negative. This filter may have a smoothing effect in edge offset mode.
[0296] Table 5 - Examples of edgeIdx categories in SAO edge categories
[0297] EdgeIdx condition meaning 0 The following are not listed Monotonic area 1 p < n0 and p < n1 Local Minimum 2 p < n0 and p = n1 or p < n1 and p = n0 edge 3 p>n0 and p=n1 or p>n1 and p=n0 edge 4 p>n0 and p>n1 Local maximum
[0298] Multiple (e.g., four in total) amplitude offset values can be transmitted to a video processing device, for example, for SAO types 1 and 2 (e.g., each) of the CTB. The video processing device may include, for example, a decoder. Symbols can be obtained (e.g., encoded) for type 1. The offset values and associated syntax elements (e.g., sao-type-idx and sao-eo-class) can be determined by the video processing device (e.g., an encoder). For example, the offset values and associated syntax elements can be determined using criteria for optimizing rate distortion performance. SAO parameters can be indicated to be inherited from the left or top of the CTB, for example, using merge markers to make signaling efficient. The SAO can be a non-linear filtered sample, which can allow for additional refinement of the reconstructed signal. The SAO can enhance the signal representation around smooth regions and edges.
[0299] For example, joint chromaticity CCALF can be applied, such as Figure 9 As shown. Filter coefficients (e.g., a set) can be obtained for the coded block and / or used (e.g., applied to a first component associated with samples in the coded block) to generate a filtered output, for example, as a refinement signal for a color component (e.g., a second component), to modify the color component (value). The filter may include a CCALF filter, and the filtered output may include a CCALF-filtered output. Figure 9 As shown, the first component can be the luminance component. For example... Figure 9 As shown, the second component can be the chroma component. The luminance and chroma components can be associated with samples in the coded block. For example... Figure 9 As shown, the filtered output signal can be, for example, the output of a filter based on a set of filter coefficients applied to the first component. Figure 9 As shown, (e.g., appropriately) weighted versions of the filtered output (e.g., the same refined signal used for the second component) can be applied to other color components (e.g., the third component) to modify the other color component (values). The third component can be a chroma component associated with a sample in the coded block. A CCALF filter can be applied to one of the two chroma components, e.g., the second component. The refined signal of the other chroma component (e.g., the third component) can be derived as (e.g., appropriately) weighted versions of the filtered output (e.g., the same refined signal), e.g., as... Figure 9 As shown in the example. In this example, the output of the joint chromaticity CCALF (e.g., the output refinement signal) can be applied to the Cb component (value) to modify the Cb component (value), weighted by an obtained weighting factor, and applied to the Cr component (value) to modify the Cr component (value). In this example, the output of the joint chromaticity CCALF (e.g., the output refinement signal) can be applied to the Cr component (value) to modify the Cr component (value), then weighted and applied to the Cb component (value) to modify the Cb component (value).
[0300] In the example, a chroma ALF filter can be applied to both the second and third components (values). A filter (e.g., a CCALF filter) can be applied to both the second and third components (values) of the chroma ALF filter, for example, to modify them. Figure 9 As shown, a joint chromaticity CCALF can be used (e.g., applied) after the chromaticity ALF on Cb (e.g., the second component) and Cr (e.g., the third component).
[0301] In the example, a first chroma ALF can be applied to a second component (value), and a second chroma ALF can be applied to a third component (value). A filter (e.g., a CCALF filter) can be applied to the second component (value) filtered by the first chroma ALF and the third component (value) filtered by the second chroma ALF, for example, to modify the second and third components (values) of the chroma ALF filtering. Figure 21A As shown, after applying the first chromaticity ALF to Cb (e.g., the second component) and the second chromaticity ALF to Cr (e.g., the third component), the joint chromaticity CCALF can be used (e.g., applied).
[0302] In the example, the chroma ALF can be omitted from the application to the second and third components (values). A filter (e.g., a CCALF filter) can be applied to the second and third components (values), for example, to modify them. Figure 18 As shown, Cb (e.g., the second component) and Cr (e.g., the third component) may not be filtered by chroma ALF before, for example, by joint chroma CCALF filtering.
[0303] Whether the Low Frequency Inseparable Transform (LFNST) can be combined with matrix-based intra-frame prediction (MIP) can be determined based on (e.g., at least in part) the type of the current slice. For example, LFNST can be used in conjunction with MIP based on one or more conditions, such as the coded block being considered large and the current slice being an I slice.
[0304] Whether to use palette mode can be determined based on block size. For example, palette mode can be disabled for small block sizes in inter-frame slices. For instance, if the block size in a sample is less than a certain threshold, the block can be considered small.
[0305] A video processing device (e.g., an encoder) can subtract the average value of the Cr residuals (represented as resCr) from the Cb residuals (represented as resCb). For example, according to equation (1), the difference between resCb and resCr can be used as input to the transformation and quantization processes.
[0306] VFF can perform filtering (e.g., individually) on (e.g., three) components. Components can be, for example, (Y, Cb, Cr), (R, G, B), or any other color transformation format. There may be inherent correlations between the refined signals of the three components. A video component is one example of a component.
[0307] In some examples, CCALF can be applied after ALF is used for the chromaticity components (Cb,Cr). In some examples, ALF and CCALF can involve training the ALF filter coefficients with respect to the chromaticity components.
[0308] Joint component VFF can be performed. Filter coefficients can be obtained and / or applied over subsets of multiple (e.g., three) components. For example, the dominant component (e.g., the first component) can be selected. Figure 16A An exemplary workflow for a VFF with (e.g., one) primary component is shown. Figure 16A As shown, component A (CompA) can be the selected principal component. For example, a set (e.g., one) of filter coefficients can be applied to the principal component to generate a result such as... Figure 16A The filtered output signal is shown. The filtered output signal can be the output of a filter that has a set of filter coefficients applied to the main components. For example... Figure 16A As shown, for example, a refined signal (e.g., a joint refined signal) can be obtained (e.g., derived) from the principal component by subtracting the filter input signal of the principal component from the filtered output signal. The filter input signal can include the value of the principal component before the value of the principal component is filtered using the filter. (e.g., appropriately) a weighted version of the refined signal can be applied to a second component of the multiple components, for example, to modify the second component (value). (e.g., appropriately) a weighted version of the refined signal can be applied to a third component of the multiple components, for example, to modify the third component (value). The second and third components can be two additional components of the three components. Figure 16A As shown, the second component can be component B, and the third component can be component C. The joint refined signal weighted and applied to the second component can be the same as the joint refined signal weighted and applied to the third component. The second and / or third components can be non-major components.
[0309] For example, the principal components (e.g., the first component and the second component) can be selected from multiple components. Figure 16BAn exemplary workflow for a VFF with two primary components is shown. Multiple filter coefficient sets (e.g., the same or different filter coefficient sets) can be applied to the primary components (e.g., such as...). Figure 16B Components A and B are shown. For example, the first set of filter coefficients (e.g., Figure 16B The VFF component A shown is applied to the first component (e.g., Figure 16B The component A shown can be used, and the second set of filter coefficients (e.g., Figure 16B The VFF component B shown is applied to the second component (e.g., Figure 16B Component B is shown. One of the main components (e.g., the first component) can be selected to obtain a refined signal. For example, as... Figure 16B As shown, component B can be selected from components A and B. Subtracting the filter input signal of the selected principal component from the filtered output signal allows the extraction of a refined signal (e.g., a joint refined signal) from a selected component (e.g., the first component) among the principal components, for example, as... Figure 16B As shown. The filtered output signal can be the output of a filter with a set of filter coefficients applied to the selected principal component. A weighted version of the refined signal (e.g., using weighting factors) can be applied to other components (e.g., a third component among multiple components) to modify the values of those other components. For example, as... Figure 16B As shown, component C can be the third component. The other components can be non-major components. The refined signal before weighting and applying it to the other components can be the same as the derived refined signal.
[0310] This can reduce the complexity of video frame filtering across the three components. A better trade-off between complexity and coding efficiency can be achieved. The joint luma-chroma VFF can, for example, be applied to the luma component and then downsampled (e.g., appropriately) the luma-refined signal, weighted, and applied to the two chroma components.
[0311] As used herein, VFFs can include, but are not limited to: deblocking filters, SAO, ALF, CCALF and / or other filters, such as two-sided filters, Hadalard filters, etc. VFFs can be used as in-loop filters or post-processing filters.
[0312] In some examples, chroma ALF can be disabled. Joint chroma CCALF can be applied to both chroma components (Cb, Cr). This can reduce complexity (e.g., video frame filtering of the chroma components) while simultaneously improving performance through joint chroma CCALF.
[0313] Joint Component Video (VFF) can be applied to video coding or processing, image coding and / or processing. It can improve coding efficiency. It can improve the quality of the input video signal (e.g., subjective quality). Examples are described in the context of video coding or processing without loss of generality regarding their applicability in other contexts.
[0314] The inherent correlation between chroma components can be utilized in joint chroma residual coding. Correlation may exist between the equivalent VFF output refinement signals of the three components. VFF filtering can be applied to a subset of the three components. In some examples, for instance, VFF filtering can be applied to one of the three components (e.g., the dominant component). Refinement signals for the other two components can be derived by deriving (e.g., appropriately) a weighted version of the same refinement signal from the dominant component to which VFF is applied. In some examples, VFF filtering can be applied to two of the three components (e.g., the dominant component). Refinement signals for the other two components can be derived by deriving (e.g., appropriately) a weighted version of the same refinement signal from the dominant component to which VFF is applied. One or more dominant components can be adaptively selected, for example, to apply VFF directly at the block level, slice level, or PPS level.
[0315] Figure 15 An exemplary VFF workflow is shown in [the document / reference]. An example of a joint component VFF workflow is [details omitted]. Figure 16A and Figure 16B As shown in the image. Figure 16A and Figure 16B The components CompA, CompB, and CompC shown can be any combination of the three components. Figure 16A An exemplary workflow for a VFF with a primary component is shown. For example, CompA, CompB, and CompC can be Y, Cb, and Cr, respectively. In the example (e.g., where CompA is Y), appropriate undersampling can be performed to transform the Y-refined signal to match the chroma block size.
[0316] Figure 16B An exemplary workflow for a VFF with two main components is shown. For example, CompA, CompB, and CompC can be Y, Cb, and Cr, respectively. In the example (e.g., where CompB is Y), appropriate undersampling can be performed to transform the Y-refined signal to match the chroma block size.
[0317] In the example, the primary component applied to the VFF could be the luminance component Y in a (Y,Cb,Cr) format video. Downsampling (e.g., corresponding to different color formats like 4:2:0, 4:2:2, 4:4:4, etc.) can be performed to refine the Y signal, converting it to a value matching, for example, the corresponding chroma block size, and then weighting it for application to the chroma component.
[0318] In the example, one (or two) of the three components can be selected to apply VFF (e.g., direct application). A primary component can be selected for direct application of the VFF procedure to one or more coded blocks (e.g., per coded block). For example, for each coded block in the relevant coded block header, the selected primary component can be signaled (e.g., explicitly encoded) as the variable `vff_direct_applied_component` (or `vff_not_direct_applied_component`). In the example, the primary component can be the same for coded blocks throughout the entire slice or picture (e.g., all coded blocks). For each slice or picture in the relevant slice header or PPS, an indication (e.g., explicitly encoded) can be signaled (e.g., explicitly encoded) as `vff_direct_applied_component` or `vff_not_direct_applied_component`.
[0319] In the example, based on neighboring block information (e.g., encoding information), either `vff_direct_applied_component` or `vff_not_direct_applied_component` can be obtained (e.g., derived on the decoder side). Signaling `vff_direct_applied_component` or `vff_not_direct_applied_component` can be skipped during the bitstream. The decoder can derive the value of `vff_direct_applied_component` or `vff_not_direct_applied_component` for (e.g., per) encoded block. The decoder can derive the value of `vff_direct_applied_component` or `vff_not_direct_applied_component` for (e.g., per) slice or image.
[0320] In the example, block-level VFF on / off control (e.g., for three components) can be applied (e.g., for a specified block size). The block mapping can be obtained (e.g., encoded) and / or signaled to the decoder. These three components can be VFF filtered using three different sets of block-level on / off indicators (e.g., on / off control flags). The bitstream can include (e.g., encoded) three sets of block-level VFF on / off flags.
[0321] The block-level on / off control mechanism used for different components can be the same. A set of block-level on / off control signaling can be obtained (e.g., encoded) and signaled to the three components. The bitstream may include (e.g., encoded) a set of VFF filter coefficients.
[0322] In the example, the on / off control block sizes for the three components can be the same. The on / off control block sizes can be signaled and applied to the three components. In the example, the on / off control block sizes for the three components can also be different. The on / off control block sizes can be incorporated (e.g., encoded) into the bitstream separately.
[0323] In the example, different VFF filters can be applied to different coding blocks within a slice. For example, an ALF on / off coding block can be a coding tree unit (CTU). Joint component VFF filter training can be performed at the coding block level. In the example, the coding blocks within a slice can use the same VFF filter. VFF filter training can be performed at the slice level.
[0324] For example, such as Figure 17A and Figure 17B As shown, joint chroma VFF can be executed. Figure 17A An exemplary workflow for the joint chromaticity VFF on Cb is shown. Figure 17B An exemplary workflow for the joint chromaticity VFF on Cr is shown. The VFF is applied directly to... Figure 17A The Cb or shown Figure 17B The switching on Cr shown can be at the code block level, slice level, or picture level. Two primary components can be selected for VFF application. In the (Y,Cb,Cr) video format, the two primary components can be, for example, luma and chroma components. Joint Component VFF can include applying VFF to one luma and one chroma component (e.g., Cb or Cr), and (e.g., appropriately) weighting and applying the chroma primary component-refined signal to the other chroma components (e.g., Cr or Cb).
[0325] A video processing device (e.g., an encoder) can train a set of optimal filter coefficients. The ideal target refined signal can be the residuals of the components (e.g., each component). The optimization problem of the Cb components can be represented, for example, according to equation (34).
[0326] Find tgt_vffCb,stmin(orgCb-(tgt_vffCb+recCb)) 2 (34)
[0327] The parameters tgt_vffcb, orgCb, and recCb can represent the ideal target VFF output signal, the original input video signal, and the reconstructed signal (e.g., the input to the VFF) of the Cb component, respectively.
[0328] The optimal target VFF output signal of Cb can be calculated, for example, by taking the derivative of the mean square error of formula (34) according to formula (35).
[0329] tgt_vffCb=resCb=orgCb-recCb (35)
[0330] The optimal target VFF output signal of the Cr component can be calculated, for example, according to equation (36).
[0331] tgt_vffCr=resCr=orgCr-recCr (36)
[0332] The optimization problem can be represented, for example, by formula (37) for the joint chromaticity VFF.
[0333] Search for tgt_vff,st
[0334] min[(orgCb-(tgt_vff+recCb)) 2 +(orgCr-(tgt_vff*w+recCr)) 2 (37)
[0335] The parameter tgt_vff can represent the ideal target VFF output signal. The parameter w can represent the weighting factor. For example, according to equation (38), equation (37) can be solved by differentiating equation (37) and setting the derivative to zero.
[0336] -2[orgCb-(tgt_vff+recCb)]-2w*[orgCr-(tgt_vff*w+recCr)]=0 (38)
[0337] Equation (38) can be solved, and resCb and resCr from equations (35) and (36) can be substituted to derive the ideal target VFF signal, for example, according to equation (39).
[0338] tgt_vff=(resCb+w*resCr) / (1+w 2 (39)
[0339] The joint chroma VFF (JC-VFF) can be derived iteratively. Using chroma samples from the coded blocks of the two chroma components, the JC-VFF filter can be derived using equation (39). A video processing device (e.g., an encoder) can determine, for example, each chroma coded block, such as a 16×16 or CTU, whether to apply the previously derived JC-VFF filter. For example, if the filtered chroma coded block is better (e.g., the distortion between the filtered chroma coded block and the original signal becomes smaller), it can be determined that the JC-VFF should be applied to the current chroma coded block. For example, after identifying the chroma coded blocks to which the JC-VFF filter will be applied, the JC-VFF filter can be derived again using equation (39) with the chroma coded blocks to which the JC-VFF filter is to be applied.
[0340] In the example, a joint chromaticity VFF filter can be applied to (e.g., directly to) the reconstructed Cb component, and the filter output can be used to derive a chromaticity refinement signal, which can then be applied to the Cr component (as described above). Figure 17A and Figure 17B (as shown in the image).
[0341] In the example, the joint chromaticity VFF output refinement signal can be applied (e.g., directly to) the reconstructed Cr component, and the filtered output can be used to derive a chromaticity refinement signal, which can be weighted and applied to the Cb component. For example, if the joint chromaticity VFF output refinement signal is applied (e.g., directly to) the reconstructed Cr component, the components Cb and Cr in equation (39) can be interchanged.
[0342] In the example, the weighting factor can be the same for the entire slice or image. In the example, the weighting factor can be different for different encoded blocks.
[0343] In the example, the weighting factor (or weight) can be a fixed, predetermined value for multiple (e.g., all) images in the sequence, such as 1 or 1 / 2. In the example, implicit and fixed weight values can be determined, for example, based on the color format of the input video signal (e.g., 4:2:0, 4:2:2, 4:4:4, etc.). In the example, (e.g., implicit) weight values can depend on the quantization parameter (QP). For example, the relationship can be defined using an analytic function or a lookup table (LUT).
[0344] In the example, weighting factors can be incorporated (e.g., explicitly encoded) into the bitstream. Weighting factors can be obtained for each picture, slice, or coded block, and, for example, for each picture, slice, or coded block, weighting factors can be derived and / or encoded. For example, weighting factors can be signaled in the PPS, slice header, or coded block-related header. Weighting factors can be derived and applied to a set of pictures, such as pictures from the same scene. For example, weighting factors can be signaled in the SPS. For example, weighting factors can be included (e.g., encoded) in the APS along with other VFF parameters. Video processing apparatus (e.g., decoder) can obtain weighting factors, for example, based on the APS.
[0345] In the example, when weight factors are applied to filters of a specified size (e.g., each), the weight factors can be adjusted based on the QP used for the code block. The fitness function can be defined, for example, through one or more analytic functions or one or more LUTs.
[0346] The value of a weighting factor can be greater than 1, equal to 1, or less than 1. The value of a weighting factor can be positive or negative. For example, the value of a weighting factor can be determined based on one or more indicators in the bitstream. In the example, the weighting factor can be associated with (e.g., encoded with) a tag (e.g., “weight_sign”) to indicate the sign of the weighting factor. For example, a tag value of 0 can indicate a positive sign, and a tag value of 1 can indicate a negative sign. A fixed-length encoded weight value index indicator (such as “weight_index”) can indicate a fixed-length encoded weight value index from 0 to (2^M-1)M bits, which can indicate the weight value. The weight value can be determined based on the weight value and its sign.
[0347] In the example, the weight values used for filtering at each coded block can be different. Weight values can be determined at the block level. For example, a set of weight values can be included (e.g., encoded) at the slice level, such as in the slice header syntax. For example, if a filter is to be applied to a block, the index of the slice weight value set can be signaled for one or more (e.g., each) coded blocks. For example, if a filter will not be applied to a coded block, the signaling of the weight index can be skipped for that block.
[0348] For example, such as Figure 16A As shown, joint luma and chroma VFF can be performed. In some examples, there may be a primary component. In the (Y,Cb,Cr) video format, the primary component can be, for example, the luma component. Joint component VFF may include applying VFF to the luma component and sampling, weighting, and applying it to the chroma components (Cb and Cr) using a luma-refined signal. In some examples, Figure 16AThe components shown (CompA, CompB, CompC) can correspond to Y, Cb, and Cr, respectively.
[0349] For example, a target signal for the joint luminance and chrominance VFF can be derived, similar to, for example, the (ideal) target signal derivation for the joint chrominance VFF as described herein. Weighting factors can be encoded, for example, similar to weighting factor encoding for the joint chrominance VFF, as described herein. Two weighting factors can be obtained and / or used separately for the two chrominance components (Cb, Cr).
[0350] (For example, the ideal) target problem can be represented by formula (40).
[0351] Search for tgt_vff,stmin[∑ Y (orgY-(tgt_vff+recY)) 2 +∑ Cb (orgCb-(tgt_vff_ds*w_Cb+recCb)) 2 +∑ Cr (orgCr-(tgt_vff_ds*w_Cr+recCr)) 2 (40)
[0352] The parameter `tgt_vff` can represent (e.g., ideally) the target VFF output signal, for example, in terms of the luma block size. The parameter `tgt_vff_ds` can represent the block size of the downsampled `tgt_vff` to match the chroma. For example, for a 4:2:0 color format, the chroma block width and height can be half the luma block width and height. The example is described in 4:2:0 format without loss of general applicability to other formats. Related downsampling (e.g., for a 4:2:2 color format) or no downsampling (e.g., for a 4:4:4 color format) can be similarly applied to the examples discussed herein.
[0353] The parameters w_C and w_Cr can represent the weighting factors for Cb and Cr, respectively. Luminance downsampling can be performed to match the chromaticity block size, and the corresponding residual signal representation can be inserted into equation (40). For example, the objective optimization problem can be represented according to equation (41).
[0354] Search for tgt_vff,st
[0355] min[4*(tgt_vff_ds-resY_ds) 2 +(w_Cb*tgt_vff_ds-resCb) 2 +(w_Cr*tgt_vff_ds-resCr) 2 (41)
[0356] The parameter resY_ds can represent the downsampled residual signal of Y. For example, a 4:2:0 format video can have a downsampling factor of 4, as shown in equation (42).
[0357] For example, as shown in equation (42), equation (41) can be solved by taking the derivative of equation (41) and making the derivative equal to zero.
[0358] tgt_vff_ds=(4*resY_ds+w_Cb*resCb+w_Cr*resCr) / (4+w_Cb 2 +w_Cr 2 (42)
[0359] The target signal tgt_vff can be derived, for example, from the upsampled signal tgt_vff_ds.
[0360] Chromaticity ALF can be skipped or removed. For example, when applying the joint chromaticity CCALF of (Cb,Cr) components, chromaticity ALF can be disabled or bypassed.
[0361] Figure 18 An exemplary workflow for joint chroma CCALF is shown (e.g., skipping chroma ALF). For example... Figure 18 As shown, the chroma ALF can be bypassed during the joint chroma CCALF process. Signaling notifications and procedures related to the chroma ALF can be skipped. For example, signaling notifications of chroma ALF filter flags and parameters, as well as block-level on / off control flag mappings for Cb and Cr components, can be skipped.
[0362] A CCALF-filtered output, such as a refined signal for the chroma components, can be obtained and / or generated using a set of filter coefficients. A weighted version of the chroma (e.g., appropriately) refined signal can be applied to other chroma components. The joint chroma VFF and joint luma chroma VFF can be implemented, for example, using signaling of one or more of the following: filter coefficients, joint component VFF on / off flags, the primary component to which the filter is applied, and / or weighting factors (e.g., block-level, slice-level, etc.). VFF filtering can be applied to a subset of color components (e.g., a first color component), and a refined signal can be obtained (e.g., derived) as a weighted version of the refined signal for other color components (e.g., a second color component). The complexity of the VFF can be reduced.
[0363] Video processing apparatus (e.g., video decoder) can be configured to acquire video frame filters and a video signal comprising multiple color components. Video processing apparatus (e.g., video encoder) can be configured to identify the dominant color component among multiple color components, for example, based on an indication in the bitstream of the current block or based on the dominant color component of neighboring blocks. In one or more examples, "nearby" can be used interchangeably with "adjacent" to include "adjacent" to different types of neighbors, such as adjacent blocks, adjacent sub-blocks, adjacent pixels, and / or pixels adjacent to a boundary. Spatial neighbors can be adjacent within the same frame, while temporal neighbors can be located at the same position in adjacent frames.
[0364] A video processing apparatus (e.g., a video encoder) can be configured to apply video frame filters to the dominant color component of a video signal to determine a thinning offset associated with the dominant component. The video processing apparatus can be configured to calculate a thinning offset for a non-dominant component based on the thinning offset associated with the dominant component and a weighting factor. The video processing apparatus can be configured to refine the non-dominant component using the thinning offset of the non-dominant component. For example, a video processing apparatus (e.g., a video decoder) can be configured to calculate a second thinning offset for a second non-dominant component and use the second thinning offset to refine the second non-dominant component.
[0365] The Cross-Component Adaptive Loop Filter (CCALF) uses luminance sample values to refine (e.g., each) chrominance component.
[0366] Figure 19 This is a schematic diagram showing the placement of CCALFs for other loop filters. Figure 20A and Figure 20B This is a schematic diagram illustrating different types of diamond filters. (Reference) Figure 19 , Figure 20A and Figure 20B CCALF can operate, for example, by applying a linear diamond filter to the luminance channel, to enhance (e.g., each) the chrominance component. A CCALF filter can be applied to a diamond region centered on the juxtaposition of the luminance components, and the filter output can be added to (e.g., the chrominance sample values of each) chrominance component sample. Filter coefficients can be sent in an adaptive parameter set (APS), in 2... N (e.g. 2) 10The filter can be scaled by a factor and can be rounded for fixed-point representations. The application of the filter can be controlled on a variable block size and signaled via context-encoded tags received for each block of samples (e.g., per block). CCALF information (e.g., block size) and / or CCALF enable tags can be received at the slice level for each chroma component (e.g., per chroma component). The block size (e.g., supported block size) in a sample (e.g., chroma sample) can be, for example, 16×16, 32×32, 64×64, and 128×128. In some examples, the same or similar filter coefficient training function used by a video processing device (e.g., an encoder) for ALF can be used by a video processing device (e.g., an encoder) for CCALF.
[0367] Figure 20A and Figure 20B This is a schematic diagram illustrating different types of diamond filters. For example, an ALF filter can be a multi-tap ALF filter (e.g., an 18-tap ALF filter) with filter coefficients (e.g., 14 unique filter coefficients), such as... Figure 20A As shown in the example. An ALF filter can be, for example, four 3×4 diamond 8-tap ALF filters, such as... Figure 20B As shown in the example, an ALF filter can be obtained (e.g., selected) at the CTU level. The ALF filter can be linear or nonlinear.
[0368] Joint colorimetric CCALF (JC-CCALF) can be implemented, such as... Figure 21A The example is shown in the image. Figure 21A This is a schematic diagram illustrating an exemplary workflow for JC-CCALF operation using chroma ALF and JC-CCALF. For example, JC-CCALF can be implemented to reduce the complexity of CCALF. For example, JC-CCALF can be implemented where a set of filter coefficients (e.g., only one) can be obtained and / or used (e.g., applied) to generate (e.g., one) CCALF-filtered output. For one of multiple (e.g., two) color components, the CCALF-filtered output (e.g., as a thinning signal) can be used. A weighted version of the CCALF-filtered output (e.g., a chroma thinning signal) can be applied to the other color components of the multiple color components (e.g., appropriately weighted versions).
[0369] For example, due to the inherent correlation between the Cb and Cr thinning signals, JC-CCALF can avoid coding performance loss and can reduce the complexity of some CCALFs (e.g., about 50%). JC-CCALF achieves a better trade-off between complexity and coding efficiency.
[0370] Figure 21AThis is a schematic diagram illustrating an exemplary workflow for operating both Chromatic ALF and JC-CALF. For example... Figure 21A As shown in the example, JC-CCALF can be used after applying chromatic ALF to Cb and Cr, where both chromatic ALF and JC-CCALF can be applied.
[0371] The encoder side can train a set of optimal filter coefficients (e.g., similar to training for CCALF). The ideal target refinement signal can be, for example, the residuals of each chroma component (represented as resCb and resCr, respectively). The optimization of the joint chroma CCALF for the Cb components can be expressed, for example, according to Equation (43):
[0372] Find tgt_ccalf,st
[0373] min[(orgCb-(tgt_ccalf+alfCb)) 2 +(orgCr-(tgt_ccalf*w+alfCr)) 2 ], (43)
[0374] Where tgt_ccalf, orgCb / Cr, and alfCb / Cr can represent (e.g., ideally) the target output refined signal, the original input video signal, and the ALF output signal, respectively. The parameter w represents the weighting factor. For example, according to equation (44), the chroma residual signal can be represented as resCb / Cr.
[0375] resCb=orgCb-alfCb, resCr=orgCr-alfCr (44)
[0376] For example, by taking the derivative of formula (43) and making the derivative equal to zero (e.g., setting the derivative to be equal to zero), formula (43) can be solved, for example, according to formula (45).
[0377] -2[orgCb-(tgt_ccalf+alfCb)]-2w*[orgCr-(tgt_ccalf*w+alfCr)]=0 (45)
[0378] For example, by inserting equation (44), equation (45) can be solved, for example, as shown in equation (46).
[0379] tgt_ccalf=(resCb+w*resCr) / (1+w 2 (46)
[0380] Iterative training algorithms (e.g., similar to those used for CCALF) can be used for training JC-CCALF.
[0381] For example, as described below, an 8-tap ALF filter can be applied. Slice header semantics may include, for example, `slice_joint_chroma_cross_component_alf_weight_sign_flag`. A specific flag value (e.g., equal to 0) can indicate that the joint chroma cross-component weight JcCcAlfWeight is greater than 0, while a specific flag value (e.g., equal to 1) can indicate that the joint chroma cross-component weight JcCcAlfWeight is less than 0. A specific flag value (e.g., equal to 1) can indicate that the joint chroma cross-component weight JcCcAlfWeight is greater than 0, while a specific flag value (e.g., equal to 0) can indicate that the joint chroma cross-component weight JcCcAlfWeight is less than 0. Slice header semantics may include, for example, `slice_joint_chroma_cross_component_alf_weight_index`, which can specify the magnitude of the joint chroma cross-component weight JcCcWeight (e.g., other than zero). For example, as described below, the magnitude of JcCcWeight can be determined. For example, if slice_joint_chroma_cross_component_alf_weight_index is less than or equal to 4, then the value of JcCcWeight can be equal to slice_joint_chroma_cross_component_alf_weight_index >> 2. In other cases, for example, the value of JcCcWeight can be equal to 4 / (slice_joint_chroma_cross_component_alf_weight_index – 4). For example, the value of JcCcWeight can be determined by combining the weight value with the sign of JcCcWeight (e.g., derived from slice_joint_chroma_cross_component_alf_weight_sign).
[0382] In some examples, slice header semantics may include, for example, `slice_joint_chroma_cross_component_alf_weight_sign_flag`, where a flag value of 0 indicates that the joint chroma cross-component weight `JcCcAlfWeight` is greater than 0, and a flag value of 1 indicates that the joint chroma cross-component weight `JcCcAlfWeight` is less than 0. In some examples, slice header semantics may include, for example, `slice_joint_chroma_cross_component_alf_weight_index`, where an index value (e.g., other than zero) indicates the magnitude of the joint chroma cross-component weight `JcCcWeight`. For example, the magnitude of `JcCcWeight` can be determined as described below. For example, if `slice_joint_chroma_cross_component_alf_weight_index` is less than or equal to a threshold (e.g., a value of 4), then `JcCcWeight` can be equal to `slice_joint_chroma_cross_component_alf_weight_index >> 2`. For example, in other cases, JcCcWeight can be equal to another threshold (e.g., 4 / (slice_joint_chroma_cross_component_alf_weight_index – 4)). For example, the value of JcCcWeight can be determined by combining the weight value with the sign of JcCcWeight (e.g., derived from slice_joint_chroma_cross_component_alf_weight_sign).
[0383] JC-CCALF can be implemented for one or more filters. In some examples, a single CCALF filter (e.g., an 18-tap filter or an 8-tap filter) can be implemented. In some examples, multiple (e.g., optional) CCALF filters (such as four or more filters) can be implemented. This can improve coding performance.
[0384] For example, on the encoder side, for a CCALF and / or JC-CCALF with multiple CCALF filters, one or more filter selection procedures can be implemented. For instance, filter selection for a coding block can be performed based on a rate distortion (RD) cost comparison and the encoded bits of a relevant filter indicator, which identifies whether a filter is used and / or which of multiple filters is used. Filter selection can include encoder-side filter selection. Filter selection can be based on a predetermined, default, and / or fixed allocation and / or mapping of filter indices to filter indicators. Filter selection (e.g., RD filter selection) can be performed for blocks (e.g., each block) and / or other subunits of the image. The total count of filter occurrences can be counted separately (e.g., for each). For example, filter indices can be sorted in descending order according to the corresponding occurrence count in the current slice. The corresponding occurrence count can be used to define the final mapping (e.g., last encoding) of filter indices to filter indicators to be encoded, such that filter indices with higher occurrence frequencies (e.g., counts) can be assigned to lower filter indicator values (e.g., values represented using fewer bits). For example, the filter index associated with the highest usage may be encoded with a small (e.g., minimal) number of bits. In some examples, the RD-optimized (RDO) filter selection per coded block may be (e.g., only) a single pass, where the filter index whose identifier map is used (e.g., actually used) may not be used to more accurately estimate the encoded bits of the filter index when making the filter selection decision. In some examples, multi-pass iterative RDO filter selection and / or schemes may be implemented, for example, to improve coding performance.
[0385] The filter training process (e.g., on the encoder side) can use block classification. The iterative filter training process (e.g., encoder-side filter training) can be implemented within the ALF CCALF and / or JC-CCALF processes. For example, based on previous iterative decisions for (e.g., each) a corresponding coding block (e.g., selecting a specific filter or no filter from multiple candidate filters for that coding block), it can be determined (e.g., each) that a coding block is included in a derived set of optimized filter coefficients (e.g., for the filter selected in the current iteration). The derived filter coefficients can be used to make filter selection decisions according to coding blocks. The filter training process can proceed to the next iteration for further filter training.
[0386] In an example of an iterative filter training process, the coded blocks in the current slice can be determined and / or classified into certain filtering options (e.g., whether to use a filter and / or which of a plurality of filters to use). Classifying a block as a preferred coded block (e.g., a coded block only) for use with a particular filter can be included during the training process of the corresponding filter, for example, to calculate statistics and derive the corresponding filter coefficients.
[0387] In some examples, the block classification decision process can be uniformly applied to the criteria for selecting the optimal set of filter coefficients that minimizes encoding distortion. The block classification decision process can minimize / reduce encoding distortion and RD costs, for example, by reducing or minimizing encoding distortion and / or encoding bits, which would otherwise impair the performance of certain filter training processes, such as ALF, CCALF, and / or JC-CCALF.
[0388] For example, early termination of filter training can be provided through encoder-side procedures. In some examples, the iterative filter training process of CCALF and JC-CCALF can be terminated early, for example, based on one or more triggers. For example, early termination (ET) of the process can be triggered based on changes in RD cost (e.g., if the RD cost of the current iteration and / or multiple iterations satisfies an ET condition, such as the RD cost being higher than the RD cost of one or more previous iterations). The ET condition can be, for example, an aggressive condition, a relaxed condition, and / or an adaptive condition. In some examples, a more relaxed ET condition or an adaptive condition can yield higher coding efficiency than a coding time trade-off.
[0389] In some examples, the JC-CCALF procedure can support the use of multiple CCALF filters.
[0390] In some examples, the filter selection process (e.g., the encoder filter selection process) can be implemented to include, for example, a multi-pass iterative RDO algorithm, such that the mapping from the actual filter indexes to the filter indicator identifiers of previous iterations can be used to accurately estimate the indicator identifier coding ratio in the current iteration. Although the filter selection process described herein (e.g., the encoder filter selection process) can be applied to JC-CCALF (e.g., in some examples only to JC-CCALF), the process can (e.g., equally) be applied to CCALF.
[0391] In some examples, the filter selection process (e.g., encoder filter selection process) can be implemented using block classification decisions, for example, to minimize coding distortion of the coded block, where the optimization criteria can be unified with (e.g., the same as) the filter coefficient optimization criteria. Although this paper describes filter selection processes (e.g., encoder filter selection processes) with respect to JC-CCALF, these processes (e.g., equivalently) apply to ALF and / or CCALF.
[0392] In some examples of filter selection processes (e.g., encoder filter selection processes), ET conditions may be relaxed (e.g., statically or dynamically by adaptive conditions). ET conditions may be relaxed to allow more than one iteration or pass (e.g., in cases where RD performance changes / degrades). Although this paper describes filter selection processes (e.g., encoder filter selection processes) with respect to JC-CCALF, these processes (e.g., equivalently) apply to CCALF.
[0393] JC-CCALF can be extended to use multiple ALF filters. In some examples, JC-CCALF can be extended to use multiple (e.g., four) CCALF filters. A device including one or more processors can be configured to obtain multiple CCALF filters and perform JC-CCALF based on the obtained multiple CCALF filters.
[0394] In some examples, the block-level filter indicator map may include variable block sizes across slices. Different block sizes (e.g., for different slices) can be used to encode the filter indicator map.
[0395] In some examples, the allowed block size can range from the maximum allowed chroma CTU size (e.g., N×N, where N can be an integer value, such as 64×64 for 4:2:0 video) to the minimum allowed chroma CTU size (e.g., M×M, where M is an integer value less than N, such as 16×16 for 4:2:0 video).
[0396] In some examples, block-level filter indicator maps may include (e.g., a single) fixed block size across slices. For example, a fixed filter indicator map block size could be the maximum allowed chroma CTU size.
[0397] Although for the sake of brevity, this paper presents a block-level filter specification diagram with a fixed block size and a maximum chromaticity CTU size, other fixed or variable block sizes can be implemented.
[0398] In some examples, components (e.g., the color components of Cb and Cr) can use separate block-level on / off mappings. For example, Cb and Cr can have separate / different decisions (e.g., in block-level on / off mappings) indicating whether JC-CCALF filtering can be applied to (e.g., each) coded block location. In some examples, for example, if a filter is applied to both Cb and Cr for a coded block location, the same filter (e.g., ALF, CCALF, or other filter) can be used for both Cb and Cr components. In some examples, filter determination for (e.g., each) coded block location can include one or more of the following: Cb may not use a filter, while Cr may use a candidate filter; Cb may use a candidate filter, while Cr does not use a filter; and / or Cr and Cr may use the same filter in the candidate filters. Table 6 shows examples of CTU syntax:
[0399] Table 6 - CTU Syntax Examples
[0400]
[0401]
[0402] CTU semantics can provide one or more of the following: `alf_ctb_joint_chroma_cross_component_cb_flag[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` equal to 0 indicates that the joint chroma cross-component filter output refinement signal was not applied to the Cb color component sample block at the luma location (xCtb, yCtb); `alf_joint_hroma_cross_component_cb_flag[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` not equal to 0 indicates that the joint chroma cross-component filter output refinement signal was applied to the Cb color component sample block at the luma location (xcTB, ycTB). Color component sample blocks; `alf_ctb_joint_chroma_cross_component_cr_flag[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` equal to 0 indicates that the refined signal output by the joint chroma cross-component filter was not applied to the Cr color component sample blocks at the luminance positions (xcTB, ycTB); `alf_joint_chroma_cross_component_cr_flag[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` not equal to 0 indicates that the refined signal output by the joint chroma cross-component filter was applied to the Cr color component sample blocks at the luminance positions (xcTB, ycTB); and / or
[0403] The `alf_ctb_joint_chroma_cross_component_filter_index[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` option specifies the index of the joint chroma cross-component filter applied to the color component samples of the luminance CTB corresponding to the luminance position (xCtb, yCtb).
[0404] In some examples, the two color components, Cb and Cr, can share (e.g., the same) block-level on / off mapping. For the coded block location, Cb and Cr can (e.g., always) have the same decision on which filters (e.g., JC-CCALF filtering) can be applied. In some examples, for instance, if a filter is applied, the same ALF filter from multiple ALF candidate filters can be used for both Cb and Cr. Table 7 shows examples of CTU syntax:
[0405] Table 7 - CTU Syntax Examples
[0406]
[0407] CTU semantics can provide one or more of the following:
[0408] alf_ctb_joint_chroma_cross_component_filter_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] being equal to 0 indicates that the refined signal output by the joint chroma cross-component filter was not applied to the Cb and Cr color component sample blocks at the luminance position (xcTB, ycTB); and / or alf_joint_chroma_cross_component_filter_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] being not equal to 0 indicates that the alf_joint_chroma_cross_component_filter_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]th joint chroma cross-component filter was applied to the color component samples of the luminance CTB corresponding to the luminance position (xCtb, yCtb).
[0409] For example, an iterative RDO block-level filter selection process can be implemented on the encoder side. For example, a multi-pass iterative RDO can be implemented to provide / determine filter on / off and selection decisions for (e.g., each) coded blocks in a slice. The RDO block-level filter selection results can be used to count the frequency of use of (e.g., each) filters in the current slice (e.g., in an iteration). For example, a mapping (e.g., a mapping from filter index to filter indicator) can be derived based on the descending order of filter indices in terms of their respective frequency of use. For example, the mapping can be used in the coded bit estimate associated with the next iteration encoded with (e.g., each) a corresponding filter index. For example, a more accurate coded bit estimate can be used to achieve more efficient or better RD performance.
[0410] In some examples, such as if the total number of iterations exceeds a predefined limit (e.g., 5 or 10), the iterative RDO process can be terminated. For example, if the number of consecutive iterations that do not achieve an improvement in RD performance reaches a predefined limit (e.g., one iteration or multiple consecutive iterations, such as two consecutive iterations), the iterative RDO process can be terminated early.
[0411] For example, in encoder-side filter training, the process (e.g., on the encoder side) can unify the optimization criteria for block classification with the optimization criteria for filter coefficient derivation. The process can, for example, apply the same optimization criteria used to minimize coding distortion to the optimal set of block classification and filter coefficient derivation operations during iterative filter training. For example, the optimal classification decision for a slice (e.g., each) of the coded blocks can determine or indicate whether a filter should be applied, and if so, which of several candidate filters should be applied to produce the minimum coding distortion among the decision options.
[0412] The process can be applied to filter training processes associated with ALF, CCALF, and JC-CCALF, such as encoder-side iterative filter training processes.
[0413] The process (e.g., on the encoder side) can provide relaxed early termination conditions during filter training. For example, if multiple filters used in CCALF or JC-CCALF (e.g., CCALF filters) are trained iteratively, the process can use relaxed ET conditions. For instance, if no consecutive iterations resulting in improved RD performance reach a threshold (e.g., a predefined limit greater than one, such as two or three, and other thresholds), the iterative filter training process can terminate early.
[0414] A joint chromaticity cross-component filtering process can be performed on Cb and Cr chromaticity sample blocks. The input to the joint chromaticity cross-component filtering process can include one or more of the following: a reconstructed luminance image sample array recPicture prior to the luminance adaptive loop filtering process. L ; Filtered reconstructed Cb and / or Cr image sample array alfPicture Cb and alfPicture Cr ; Chromaticity position (xC, yC), which specifies the top-left sample of the current block of Cb and Cr chroma samples relative to the top-left sample of the current image; Width of the chroma sample block jcCcAlfWidth; Height of the chroma sample block jcCcAlfHeight; Joint chroma cross-component filter coefficients JcCcAlfCoeff[j], e.g., j = 0..7; alf_joint_chroma_cross_component_cb_flag and / or alf_joint_chroma_cross_component_cr_flag (e.g., the output of the joint chroma cross-component filtering process) may include, for example, a modified filtered reconstructed Cb and Cr image sample array jcCcAlfPicture Cb and jcCcAlfPicture CrFor example, vertical sample position offsets yM1, yP1, and yP2 can be specified based on the vertical brightness sample positions yL, clipTopPos, and clipBottomPos, as shown in Table 8; horizontal sample position offsets xM1 and xP1 can be specified based on the horizontal brightness sample positions xL, clipLeftPos, and clipLeftPos, as shown in Table 9; variable curr Cb and curr Cr The array of joint chroma cross-component filter coefficients f[j] for j = 0..7 can be derived / determined, for example, according to equations (47) and (48); the variable sum can be derived, for example, according to equations (50) and (51); for example, if alf_joint_chroma_cross_component_cb_flag equals 1, the modified, filtered, reconstructed Cb image sample array jcCcAlfPicture can be derived / determined as described in equation (52). Cb [xC+x][yC+y]; and / or, for example, if alf_joint_chroma_cross_component_cr_flag equals 1, then the modified, filtered, reconstructed Cr image sample array jcCcAlfPicture can be derived / determined as described in equation (53). Cr [xC+x][yC+y].
[0415] Table 8 – Example Specifications for yM1, yP1, and yP2
[0416] condition yM1 yP1 yP2 yL==clipTopPos 0 1 2 yL==clipBottomPos-1 -1 0 0 yL==clipBottomPos-2 -1 1 1 otherwise -1 1 2
[0417] Table 9 – Example Specifications for xM1 and xP1
[0418] condition xM1 xP1 xL==clipLeftPos 0 1 xL==clipRightPos-1 –1 0 otherwise –1 1
[0419] curr Cb =alfPicture Cb [xC+x,yC+y] (47)
[0420] curr Cr =alfPicture Cr [xC+x,yC+y] (48)
[0421] f[j]=JcCcAlfCoeff[j] (49)
[0422]
[0423] sum=(sum+64)>>7 (51)
[0424] jcCcAlfPicture Cb [xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,curr Cb +sum) (52)
[0425] jcCcAlfPicture Cr [xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,curr Cr +JcCcAlfWeight*sum) (53)
[0426] CCALF testing results show that for high QP values (e.g., values of approximately 37 or higher), there are more coding artifacts. For example, the overall subjective quality may be reduced without applying CCALF. One or more examples in this paper can reduce artifacts from CCALF at high QP values, including in various implementations, methods, apparatuses, systems, and / or processes.
[0427] JC-CCALF may include, for example, division on the decoder side. The application of weighting factors in JC-CCALF may include division operations (e.g., on the decoder side), for example, if the weighting factor value is greater than 1 and includes odd numbers greater than 1 in the denominator (e.g., 4 / 3 for a maximum weight of 4, 4 / 3, 8 / 3, 8 / 5, 8 / 6, 8 / 7 for a maximum weight of 8). Decoder-side division operations (e.g., division operations that occur) can be removed. This removal can facilitate more efficient hardware implementations, including various embodiments, methods, apparatuses, systems, and / or processes.
[0428] For example, a weighted factor search for JC-CCALF can be performed on the encoder side. For example, a search (e.g., a fast search) process can be implemented to search for the weighted factors of JC-CCALF. For example, a search can be performed to reduce search complexity (e.g., while maintaining encoding performance).
[0429] For example, rounding offsets can be achieved by applying weighting factors in JC-CCALF. Applying rounding factors can reduce the complexity of JC-CCALF.
[0430] For example, filter coefficient training associated with JC-CCALF can be performed on the encoder side. As shown in Equation (18), the encoder-side filter coefficient training of JC-CCALF can attempt to approximate the target signal of a weighted combination of the Cb and Cr residual signals. The weights of the Cb and Cr residual signals may not sum to 1. For example, if |w| < 1, then (1+w) / (1+w)2 The total weight can be greater than 1. For example, if the combined target residual signal is outside a reasonable range of residual pixel values, clipping can be used to reduce inaccuracies.
[0431] For example, if the weighting factor is a rational number when used for weighted combination, a rounding offset can be used, as in equation (18). A rounding offset can improve accuracy.
[0432] Nonlinear ALF filters can be implemented using clipping. This can improve the coding efficiency and / or quality (e.g., subjective quality) of CCALF.
[0433] Rate distortion (RD) cost bias operation can be used to support enabling and / or disabling CCALF for higher QPs, for example, to make block-level on / off decisions on the encoder side.
[0434] Nonlinear ALF filters can be incorporated into CCALF (e.g., and Cb, Cr chromatic ALF can be removed), which can reduce complexity with little or no performance loss if CCALF is used (e.g., due to the similar implementations of CCALF and chromatic ALF).
[0435] Unless otherwise stated, the examples disclosed herein are applicable to CCALF and / or JC-CCALF.
[0436] In various examples (e.g., for JC-CCALF), weighting factors greater than 1 can be replaced with values that are close to rational quantities, where the denominator is a number raised to the power of 2. Integer division operations associated with weighting factors can be reduced or eliminated (e.g., on the decoder side), which can support hardware design.
[0437] For example, a fast search for weighted factors can be implemented for JC-CCALF on the encoder side.
[0438] Rounding offsets can be used / added in applications using the weighting factor JC-CCALF. Rounding offsets can include the use of a weighted lookup table (LUT), for example, they can be defined based on the rounding offset.
[0439] Those skilled in the art understand that the implementation schemes related to the first three implementation schemes above are applicable at least to CCALF and JC-CCALF, while the implementation schemes related to the remaining four weighting factors may not be applicable to CCALF (e.g., applicable to JC-CCALF but not to CCALF).
[0440] Typical process of CCALF using nonlinear filtering and clipping
[0441] In some examples, linear ALF filters (e.g., 18-tap or 8-tap filters) used for CCALF and / or JC-CCALF can be replaced by nonlinear ALF filters with clipping, for example, similar to ALF filters. Equation (33) can define a nonlinear ALF filter, and equation (32) can define a table of four clipping values for luminance and chrominance.
[0442] In one example, a nonlinear ALF filter corresponding to a 3×4 rhombic 8-tap ALF filter can be specified as follows. Aspects related to nonlinear filters may include one or more of the following:
[0443] The chromaticity filter coefficient array f[i] and the chromaticity clipping value array c[j] can be derived / determined using I = 0..7, j = 0..6, as described in equations (54) and (55).
[0444] f[i]=JcCcAlfCoeff[i] (54)
[0445] c[j]=JcCcAlfClip[j] (55)
[0446] The variable sum can be derived / determined, for example, as described in equations (56) and (57):
[0447]
[0448] Where i = 0..7.
[0449] sum=(sum+64)>>7 (57)
[0450] Where curr can represent the center luminance sample corresponding to the relevant current chromaticity sample position. In some examples, curr can be derived, for example, as described in equation (58).
[0451] curr = recPicture[h x ,v y (58)
[0452] Figure 21B This is a schematic diagram illustrating an example of luminance interpolation of the chroma sample positions of a 4:2:0 video signal using 2-tap luminance interpolation. Figure 21C This is a schematic diagram illustrating an example of luminance interpolation of the chroma sample positions of a 4:2:0 video signal using 6-tap luminance interpolation.
[0453] refer to Figure 21B and Figure 21C Two examples are shown, which use 2-tap and 6-tap interpolation filters respectively to interpolate based on two adjacent brightness samples (by...). Figure 21B(indicated by the bold circle in the image) or six adjacent brightness samples (by...) Figure 21C The bold X in the diagram indicates the luminance sample at the correlated center chroma sample location (indicated by a bold circle). In some examples (e.g., for a 4:2:0 video signal), the chroma and luminance locations may be misaligned (e.g., perfectly aligned). The center luminance sample location corresponding to the correlated chroma sample location can be derived via interpolation (e.g., the derived curr). For example, in this and / or other examples, other (e.g., any other) interpolation filters can be used to derive the curr of the 4:2:0 video.
[0454] In some examples, the CCALF clipping table can be the same as that defined for ALF (e.g., via equation (32)). In some examples, the CCALF clipping table can be defined and used (e.g., different from the clipping table used by ALF). For example, the clipping table can be defined using values from the ALF clipping table, for example, with a scaling factor such as 1 / 2 (e.g., represented by a right-shift operation, such as right-shift 1). A smaller clipping range can suppress the effects of encoded noise. In various examples, multiple nonlinear ALF filters with the same shape and the same number of taps can be used together via block-level switching and / or selection for CCALF.
[0455] For example, an RD cost biasing process can be implemented for the encoder. In some examples, the RD cost biasing process can be implemented when making decisions about whether block-level CCALF is on or off (e.g., enabling or disabling on a per-block basis). This can reduce the increased and more noticeable coding artifacts from higher QPs in CCALF.
[0456] Lagrangian RD costs can be defined (e.g., for encoder pattern decisions), for example, as described in equation (59).
[0457] J(mode)=R(mode)+λ(QP)*D(mode) (59)
[0458] Where J can be the total RD cost, mode can be the associated coding mode, λ can be the Lagrangian multiplier, QP can be the quantization parameter, and D can be the coding distortion of the coding block with that coding mode. For the associated coding block, the mode can be on or off. For example, the encoder can select the mode with the lower RD cost J to encode a specific block. In some examples, when CCALF is off (e.g., ccalf_off), the RD cost can be calculated using equation (59). In some examples, when CCALF is on (e.g., ccalf_on), the RD cost can be calculated using equation (59) (e.g., in the first operation), which can be multiplied by a bias factor γ. For example, for a smaller QP, the bias factor γ can be equal to 1, while for a larger QP, the bias factor γ can be greater than 1 to support turning off / disabling CCALF at higher QPs, which can reduce or avoid an increase in synthetic coding artifacts from CCALF. An example of an implementation with a bias factor is shown in equation (60).
[0459] J′(ccalf_on)=γ(QP)*J(ccalf_on) (60)
[0460] In some examples, γ(QP) can be a piecewise linear function, for example, as described in equation (61):
[0461]
[0462] In various examples, γ max It can be 1.5 or 2, etc. QP th1 It can be 33 or 35, etc., and QP th2 It can be 40 or 42, etc. In some examples, these parameters can be determined empirically, for example, based on actual test results.
[0463] In some examples, γ(QP) can be defined by a lookup table (LUT), which can represent a piecewise nonlinear function.
[0464] In some examples, multiple ALF filter options are selectable / available for ccalf_on. Various ccalf_on RD costs can be calculated using different ALF filters. For example, the RD cost can be calculated based on equation (59) and / or equation (62). The ccalf_off RD cost can be calculated (e.g., firstly) via equation (59) and then multiplied by a bias factor γ, which can be equal to 1 for smaller QPs and less than 1 for larger QPs. This can support, for example, turning off ccalf at higher QPs to reduce or avoid increased synthetic coding artifacts from CCALF. An example of an implementation with a bias factor is shown in equation (62).
[0465] J′(ccalf_off)=γ(QP)*J(ccalf_off) (62)
[0466] In some examples, γ(QP) can be a piecewise linear function, for example, as described in equation (63):
[0467]
[0468] In various examples, γ min It can be 0.75 or 0.5, etc. QP th1 It can be 33 or 35, etc., and QP th2 It can be 40 or 42, etc. In some examples, these parameters can be determined empirically, for example, based on actual test results.
[0469] For example, if CCALF or JC-CCALF is applied in conjunction with a nonlinear ALF filter, the chromatic ALF can be disabled. In some examples, such as when CCALF or JC-CCALF is applied using a nonlinear ALF filter for the chromatic (Cb,Cr) components, a process for removing / disabling the chromatic ALF can be implemented. Figure 19 and Figure 21A The “ALF Cb” and “ALF Cr” modules can be removed, while other details or modules can be retained (e.g., unchanged). In some examples, signaling notifications and procedures related to chroma ALF can be removed, such as chroma ALF filter flags and parameters, block-level on / off control flag mappings for Cb and Cr components, etc.
[0470] In some examples, due to the JC-CCALF weighting factor, division can be removed (e.g., division on the decoder side). For example, for the maximum weight value of 4 or 8, JC-CCALF can use weight values of (1 / 4, 1 / 2, 3 / 4, 1, 4, 2, 4 / 3) or (1 / 8, 1 / 4, 3 / 8, 1 / 2, 5 / 8, 3 / 4, 7 / 8, 1, 8, 4, 8 / 3, 2, 8 / 5, 4 / 3, 8 / 7), respectively. In some examples, for instance, if the weighting factor is applied to the chroma refinement signal on the decoder side, division by 3, 5, and 7 can be performed on the weight values of 4 / 3, 8 / 5, and 8 / 7. Division may be undesirable for hardware implementations.
[0471] In some examples, the following procedure can be implemented to replace the weighted values with odd numbers greater than one in the denominator with approximate rational values with numbers in the denominator of 2^N, where N can be a positive integer. For example, 4 / 3, 8 / 5, and 8 / 7 can be replaced with 5 / 4, 7 / 4, and 9 / 8 respectively, which can be replaced by right shifting by 2, 2, and 3 instead of dividing by 3, 5, and 7, respectively. This is easier to implement in hardware.
[0472] In various examples, the rational weight value greater than 1 can be P / Q, where P and Q can be positive integers, P can be the value of the maximum weight value, Q can be a value greater than 1 that is less than P, and Q can not be a power of 2. P / Q can be replaced by (P+Δ) / (Q+Δ), where Δ can be an integer (e.g., positive or negative), and |Δ| can be the minimum or lowest adjustment such that Log2(Q+Δ) can be an integer.
[0473] For example, a fast search algorithm / process for JC-CCALF weighting factors can be implemented on the encoder side. Potential weight values (e.g., all potential weight values) can be prioritized, and the weight values prioritized from first to last are searched. In various examples, the order or priority of the weighting factors can be determined, for example, by the frequency of use when searching for weighting factors on the encoder side based on a test set sequence. For example, if a certain number of consecutively searched weight values (e.g., two consecutively searched weight values) do not produce a reduction in RD cost, the search can be terminated (e.g., premature termination). In some examples, weight values selected (and thus encoded) by the video processing device (e.g., encoder) of a previously obtained (e.g., encoded) slice of the same slice type as the current slice can be placed in the first position of the weight search list (e.g., set to the highest priority). In some examples, weight values selected (and thus encoded) by the video processing device of multiple (e.g., all) previously obtained slices of multiple slice types can be placed at the beginning of the weight search list (e.g., set to the highest priority), placing the selected weight values of previously encoded slices of the same slice type as the current slice in the first position (e.g., set to the highest priority). The video processing device may include an encoder.
[0474] For example, when applying weighting factors in JC-CCALF, rounding offsets can be used. In some examples, rounding offsets can be added to the application of weighting factors in JC-CCALF. In some examples (e.g., for a maximum weight of 4), for example, using rounding operations (e.g., as disclosed herein), the initial weighting factor 4 / 3 can be replaced with and / or adjusted to 3 / 2. In some examples, the weighting factor 4 / 3 can be replaced with 5 / 4 and / or adjusted to 5 / 4. For example, the specification may include {JcCcAlfWLut[k], k = 1..7} = {1, 2, 3, 4, 16, 8, 5}.
[0475] Slice header semantics may include, for example, `slice_joint_chroma_cross_component_alf_weight_sign_flag`, where a flag value equal to 1 specifies that the joint chroma cross-component weight factor `JcCcAlfWeightFactor` is greater than 0, and a flag value equal to 0 specifies that `JcCcAlfWeightFactor` is less than 0. `slice_joint_chroma_cross_component_alf_weight_index` can specify the size of `JcCcAlfWeightFactor`, where the index value may not be equal to 0. In one example, for instance, if `slice_joint_chroma_cross_component_alf_weight_sign_flag` is equal to 0, then `JcCcAlfWeightFactor` can be set to `JcCcAlfWLut[slice_joint_chroma_cross_component_alf_weight_index]`, where `{JcCcAlfWLut[k], k = 1..7} = {1, 2, 3, 4, 16, 8, 6}`. For example, otherwise, JcCcAlfWeightFactor can be set to JcCcAlfWLut[slice_joint_chroma_cross_component_alf_weight_index].
[0476] For example, the variable sum can be derived from equations (64) and (65) for the joint chromaticity cross-component filtering process of Cb and Cr chromaticity sample blocks.
[0477]
[0478] sum=(sum+64)>>7 (65)
[0479] For example, according to equation (66), if alf_joint_chroma_cross_component_cb_flag equals 1, the modified filtered reconstructed Cb image sample array jcCcAlfPictureCb[xC+x][yC+y] can be derived.
[0480] jcCcAlfPicture Cb [xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,curr Cb +sum) (66)
[0481] For example, according to equation (67), if alf_joint_chroma_cross_component_cr_flag equals 1, the modified filtered reconstructed Cr image sample array jcCcAlfPictureCr[xC+x][yC+y] can be derived.
[0482] jcCcAlfPicture Cr [xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,curr Cr +((sum*JcCcAlfWeightFactor+2)>>2)) (67)
[0483] For example, filter coefficient training can be performed for JC-CCALF on the encoder side. In some examples, such as if the target residual signal is calculated using weighting factors in the encoder-side filter coefficient training operation, rounding offsets and clipping can be added.
[0484] For example, when calculating the target refinement signal via equation (46), the calculation can be changed / modified as described in equations (68) and (69) (e.g., by adding a rounding offset).
[0485] tgt_ccalf=(wDenom*(resCb*wDenom+wSign*wNumer*resCr)+(Ω>>1)) / Ω (68)
[0486] Ω=wDenom 2 +wNumer 2 (69)
[0487] Where wSign, wDenom, and wNumer represent the sign, denominator, and numerator of the weighting factor, respectively.
[0488] In some examples, the maximum weight can be 4, wDenom can be 4, and wNumer can be from the same {JcCcAlfWLut[k], k = 1..7}, for example, as disclosed herein.
[0489] For example, according to equation (70), if wNumer < wDenom, the target refinement signal can be clipped or further clipped.
[0490] tgt_ccalf = Clip3(-(1 << BitDepth C ) + 1, (1 << BitDepth C ) - 1, tgt_ccalf) (70)
[0491] where BitDepth C can represent the bit depth of the chrominance component.
[0492] The system and method for processing data according to representative embodiments can be executed by one or more processors that execute a sequence of instructions contained in a memory device. Such instructions can be read into the memory device from other computer-readable media such as secondary data storage devices. Execution of the sequence of instructions contained in the memory device causes the processor to operate as described above, for example. In an alternative embodiment, hardwired circuitry can be used in place of or in combination with software instructions to implement one or more examples herein. Such software can run remotely on a processor housed within a robot-assisted / device (RAA) and / or another mobile device. In the latter case, data can be transmitted wired or wirelessly between the RAA or other mobile device containing sensors and a remote device containing a processor running the software that performs the ratio estimation and compensation as described above. According to other representative embodiments, some of the above-described processing related to positioning can be performed in a device containing sensors / cameras, while the remaining portion of the processing can be performed in a second device after receiving the partially processed data from the device containing sensors / cameras.
[0493] Cross-component ALF can be implemented in a method, apparatus, and / or system. The method can be implemented (e.g., in whole or in part) by one or more devices, apparatuses, and / or systems that can include one or more processors configured to execute the method as computer-executable instructions storable on a computer-readable medium or computer program product, which, when executed by the one or more processors, perform the method. The computer-readable medium or computer program product can include instructions that cause the one or more processors to perform the method by executing the instructions.
[0494] In the example, one method (e.g., encoding and / or decoding video) may include generating a residual coefficient block, dequantizing the residual coefficient block, and performing an inverse transform on the dequantized residual coefficient block to generate a coded block. The method may include, for example, performing a cross-component ALF on the coded block using, for example, a linear adaptive loop filter or a nonlinear adaptive loop filter to generate a refined block, and determining a modified (e.g., refined) reconstruction based on the refined block.
[0495] Cross-component adaptive loop filtering can be, for example, cross-component ALF (CCALF) or joint chromaticity CCALF (JC-CCALF).
[0496] Methods may include, for example, disabling chroma ALF when a nonlinear adaptive loop filter is used for cross-component ALF, and enabling chroma ALF when a linear adaptive loop filter is used for cross-component ALF.
[0497] Performing CCALF on a coded block can generate a thinned block using, for example, a nonlinear adaptive loop filter. Methods may include, for example, determining the center luminance sample position corresponding to multiple adjacent chrominance sample positions via interpolation, and using the determined center luminance sample position to generate a thinned block.
[0498] The execution of cross-component adaptive loop filtering may include, for example, clipping the luminance and chrominance components using values derived from some (e.g., existing) ALF clipping tables.
[0499] Performing cross-component ALF on a coded block can generate a refined block using, for example, any one of one or more linear adaptive loop filters and / or one or more nonlinear adaptive loop filters.
[0500] The method may include, for example, selecting an adaptive loop filter from a set of candidate adaptive loop filters for (e.g., each) coding block, or not selecting an adaptive loop filter as the selection result, and determining an index value associated with the selection result.
[0501] The method may include, for example, indexing or reindexing values associated with candidate adaptive loop filters based on the frequency of the candidate adaptive loop filters used for the coding block, determining an RD cost value associated with a coding block based on the indexed or reindexed values associated with the candidate adaptive loop filters, and selectively performing cross-component ALF on the coding block using the selected candidate adaptive loop filters based on the determined RD cost value associated with the coding unit.
[0502] The method may include, for example, iteratively changing the filter weights of candidate adaptive loop filters to optimize one or more candidate adaptive loop filters, as a filter optimization operation, and performing indexing or reindexing operations.
[0503] One approach (e.g., encoding) may include, for example, generating a block of residual coefficients, dequantizing the block of residual coefficients, and performing an inverse transform on the dequantized block of residual coefficients to generate a coded block. The approach may include, for example, determining an RD cost value associated with the coded block, and selectively performing a cross-component ALF on the coded block based on the RD cost value associated with the coded block. This can be implemented, for example, by calculating a nonlinear bias factor based on a determined QP value, and determining whether to perform a cross-component ALF on the coded block based on the RD cost biased by the nonlinear bias factor.
[0504] Selectively performing cross-component ALF on a coded block can, for example, perform cross-component ALF on the coded block if a first bias RD cost value is determined, and not perform cross-component ALF on the coded block if a second bias RD cost value is determined. The second bias RD cost value may be greater than the first bias RD cost value.
[0505] A method (e.g., for decoding video) may include, for example, generating a residual coefficient block, dequantizing the residual coefficient block, and performing an inverse transform on the dequantized residual coefficient block to generate a coded block. The method may include, for example, performing Joint Chroma Trans-Component Adaptive Loop Filtering (JC-CCALF) on the coded block to generate a thinned block, which may be implemented, for example, by the following steps: determining the values of weights associated with the coded block, adjusting the values of one or more weights associated with the coded block to the closest possible values to eliminate one or more division operations of the JC-CCALF, and determining a thinned reconstruction using the adjusted values of one or more weights via a right-shift operation.
[0506] Performing JC-CALF on a coded block may include, for example, replacing the weight value with an odd number greater than one as the denominator with a close rational value with a number of 2^N as the denominator, and modifying the numerator with the same adjustment as the denominator, where N is a positive integer.
[0507] Adjusting the value of one or more weight values may include adding a rounding offset and using a lookup table of the weighting factor molecular weight value.
[0508] A method (e.g., for encoding video) may include, for example, generating a residual coefficient block, dequantizing the residual coefficient block, and performing an inverse transform on the dequantized residual coefficient block to generate a coded block. The method may include, for example, performing Joint Chroma Trans-Component Adaptive Loop Filtering (JC-CCA) on the coded block to generate a refined block, which may be implemented, for example, by the following steps: determining or obtaining candidate weight values associated with the coded block; adjusting one or more candidate weight values associated with the coded block to the closest values to eliminate one or more division operations of the JC-CCA; prioritizing the adjusted candidate weight values; selecting a weight value from the adjusted candidate weight values in a certain order based on the priority of the adjusted candidate weight values according to one or more selection rules; and using the selected adjusted weight value to determine a refined reconstruction.
[0509] The method may include, for example, using a weighting factor during filter coefficient training operations to compute a target residual signal. The computed target residual signal may originate from, be based on, or include rounding offsets and clipping associated with the weighting factor.
[0510] A method (e.g., for encoding video) may include, for example, generating a residual coefficient block, dequantizing the residual coefficient block, and performing an inverse transform on the dequantized residual coefficient block to generate a coding block, thereby determining an RD cost value associated with the coding block. The method may include, for example, selectively performing cross-component adaptive loop filtering on the coding block based on the RD cost value associated with the coding block, which may be implemented, for example, by the steps of: determining whether to perform cross-component adaptive loop filtering on the coding block based on the RD cost values associated with a plurality of candidate cross-component adaptive loop filters, and selecting a cross-component adaptive loop filter from the candidate cross-component adaptive loop filters if cross-component adaptive loop filtering is to be performed on the coding block.
[0511] The method may include, for example, indexing or reindexing values associated with candidate cross-component adaptive loop filters based on the selection frequency of cross-component adaptive loop filters for the coded block, determining (e.g., at each iteration) the RD cost value associated with the coded block based on the indexed or reindexed value associated with the selected cross-component adaptive loop filter, and terminating the indexing or reindexing of values if an early termination condition associated with more than one increase in the RD cost value is met.
[0512] For example, such as Figure 23As shown, a method may include or implement a multi-channel iterative RDO that can turn the CCALF filter on / off. For example, the iterative RDO process may terminate if the total number of iterations exceeds a (e.g., a predefined) limit (e.g., 5 or 10 iterations). Termination (e.g., premature termination) may occur if the number of consecutive iterations without a threshold level of RD performance improvement exceeds a certain (e.g., a predefined) limit (e.g., one or two iterations without improvement). Figure 23 An exemplary method for switching on / off a multi-channel iterative RD optimization (RDO) filter is illustrated. One method (e.g., for encoding) may include one or more of the following: using an iterative RD cost process to determine an RD cost value associated with a block; terminating the iterative RD cost process based on an early termination condition, for which there are multiple consecutive iterations where the RD performance improvement is below a predefined limit; after the termination of the iterative RD cost process, determining whether to perform filtering on the block based on the determined RD cost value associated with the block; if filtering is to be performed, determining a selected filter from a plurality of candidate filters for CCALF; and / or performing CCALF on the block using the selected filter.
[0513] Figure 22 An example of a method for applying a filter to one or more components and modifying (e.g., refining) the values of one or more other components is shown. The examples and other examples disclosed herein can be adapted to... Figure 22 The example method 2200 is illustrated. Method 2200 includes 2202-2208. In 2202, a filter associated with the coding block can be obtained, for example, based on filter coefficients received in the APS described herein. In 2204, the filter can be applied to a first component associated with a sample in the coding block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in Figure 2206, the output of the filter applied to the first component can be used to modify the value of the second component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in Figure 2208, the output of the filter applied to the first component can be used to modify the value of the third component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the image.
[0514] This document describes numerous embodiments. Features of the embodiments may be provided individually or in any combination across various claim classes and types. Furthermore, embodiments may include one or more of the features, devices, or aspects described individually or in any combination across various claim classes and types (such as, for example, any of the following):
[0515] The decoder obtains the filters associated with the coded block. The decoder can obtain the filters, coefficients, weighting factors, etc., for use in decoding the coded block. The decoder can determine which component(s)(s) to filter and which component(s)(s) values to derive for decoding the coded block. The decoder, for example, based on... Figure 22 The example decoder 300, operating according to the example method shown, can determine which filter, coefficients, weighting factors, etc., to use, which component(s)(s) to filter, and which component(s)(s) values to derive for decoding the coded block. For example, based on... Figure 22 The example decoder 300, operating as shown in the example method, can decode a coded block using filters, coefficients, weighting factors, selected or principal components to be filtered, and component values to be derived. The decoder can apply filters to the first component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The decoder can use the output of the filter applied to the first component to modify the value of the second component associated with a sample in the coded block, and use the output of the filter applied to the first component to modify the value of the third component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The decoder can obtain the weighting factor associated with the third component, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The decoder can apply weighting factors to the filter output to produce a weighted filter output, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The decoder can use the weighted filter output to modify the value of the third component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. Before filtering the value of the first component using a filter, the decoder can reconstruct the value of the first component based on the difference between the filter output and the value of the first component, and obtain refined signals for the second and third components, for example, as... Figure 16AAs shown in the diagram. The decoder can reconstruct the values of the first component, the second component, and the third component from samples in the coded block, and obtain refined signals of the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter, for example, as... Figure 16A As shown in the diagram. The decoder can obtain the first weighting factor associated with the second component, for example, as... Figure 16A As shown in the diagram. The decoder can determine the first weighted thinning signal based on the first weighting factor and the thinning signal, for example, as... Figure 16A As shown in the diagram. The decoder can obtain a second weighting factor associated with the third component, for example, as... Figure 16A As shown in the diagram. The decoder can determine the second weighted thinning signal based on the second weighting factor and the thinning signal, for example, as... Figure 16A As shown in the diagram, the decoder can use a first weighted thinning signal to modify the value of the second component, and use a second weighted thinning signal to modify the value of the third component, for example, as... Figure 16A The decoder can obtain the CCALF filters associated with the coded block, for example, such as... Figure 9 and Figure 18 As shown in the diagram. The decoder can obtain samples from the coded block, which include a first (luminance) component, a second (chrominance) component, and a third (chrominance) component, for example, as... Figure 9 and Figure 18 As shown in the diagram. The decoder can obtain the chroma ALF associated with the second and third components, for example, as... Figure 9 As shown in the diagram. The decoder can apply the chroma ALF to the second and third components to generate values for the second and third components, for example, as... Figure 9 As shown in the diagram. The decoder can obtain the weighting factor associated with the third component, for example, as... Figure 9 As shown in the diagram. The decoder can apply weighting factors to the filter output to generate a weighted filter output, for example, as... Figure 9 As shown in the diagram. The decoder can use the weighted filter output to modify the value of the third component, for example, as... Figure 9 As shown in the diagram. The decoder can apply CCALF to the first component associated with a sample in the coded block, and does not filter the values of the second or third components associated with samples having chroma ALF, for example, as... Figure 18 As shown in the diagram, the decoder can filter one or more components (e.g., a first component) of a plurality or set of components associated with a sample in the coded block, and use the output generated by filtering one or more components of the plurality or set of components to obtain (e.g., modify) the component values of one or more components (e.g., a second component and a third component), for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the image.
[0516] Decoding tools and techniques, including one or more of entropy decoding, inverse quantization, inverse transform, and differential decoding, are used to implement features such as... Figure 22 The methods described herein. These decoding tools and techniques can be used to achieve one or more of the following: based on... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain filters associated with the coded block, based on the... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein apply a filter to a first component associated with a sample in the coded block; according to the... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein use the output of a filter applied to the first component to modify the value of a second component associated with a sample in the coded block; according to... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein use the output of a filter applied to the first component to modify the value of a third component associated with a sample in the coded block; according to... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures, and / or other methods as described herein, generate and transmit information that may indicate filters, coefficients, selected or principal components, applied filter outputs, weighting factors, etc.; based on the... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain the weighting factor associated with the third component; according to the methods described in Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18The methods described in one or more figures and / or as otherwise described herein apply weighting factors to the filter output to generate a weighted filter output; according to the methods described in the figures. Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein use weighted filter outputs to modify the values of the third component associated with samples in the coded block; according to... Figure 22 The method described in [the document], in Figure 16A The method described herein and / or other methods described herein, before filtering the value of the first component using a filter, reconstructs the value of the first component based on the difference between the output of the filter and the value of the first component, and obtains refined signals of the second and third components; according to the method described herein and / or other methods described herein, the value of the first component is reconstructed based on the difference between the output of the filter and the value of the first component, and refined signals of the second and third components are obtained; according to the method described herein and / or other methods described herein. Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein are used to reconstruct the values of the first component, the second component, and the third component for samples in a coded block; based on the methods described in Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein obtain refined signals of the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter; according to the method described herein. Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein are used to obtain a first weighting factor associated with the second component; according to the methods described in Figure 22 The method described in [the document], in Figure 16A The method described herein and / or other methods described herein determine the first weighted thinning signal based on the first weighting factor and the thinning signal; according to the method described herein. Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein are used to obtain a second weighting factor associated with the third component; according to the methods described in Figure 22 The method described in [the document], in Figure 16A The method described herein and / or other methods as otherwise described herein determine the second weighted refinement signal based on the second weighting factor and the refinement signal; according to the method described herein. Figure 22 The method described in [the document], in Figure 16A The methods described in [the document] and / or otherwise described herein modify the value of the second component using a first weighted thinning signal, and modify the value of the third component using a second weighted thinning signal; according to [the document]... Figure 22 The method described in [the document], in Figure 9The methods described herein and / or other methods as otherwise described herein are used to obtain the CCALF filter associated with the coded block; according to the methods described in Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or other methods as otherwise described herein are used to obtain samples in a coded block, the samples comprising a first (luminance) component, a second (chrominance) component, and a third (chrominance) component; according to the methods described herein... Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or other methods as otherwise described herein are used to obtain the chromaticity ALF associated with the second and third components according to the methods described in [the original text]. Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or otherwise described herein apply the chromaticity ALF to the second and third components to generate values for the second and third components; according to the methods described herein. Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or other methods as otherwise described herein are used to obtain the weighting factor associated with the third component; according to the methods described herein. Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or otherwise described herein apply weighting factors to the filter output to generate a weighted filter output; according to the methods described herein. Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or otherwise described herein modify the value of the third component using the weighted filter output; according to Figure 22 , Figure 18 And / or as otherwise described herein, CCALF is applied to the first component associated with a sample in the coded block, and the values of the second or third component associated with a sample having chroma ALF are not filtered; and / or according to the method described herein. Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures, and / or other methods as described herein, filter one or more components (e.g., a first component) of a plurality or set of components associated with a sample in a coded block, and use the output generated by filtering one or more components of a plurality or set of components to obtain (e.g., modify) the component values of one or more components (e.g., a second component and a third component); and other decoder behaviors related to any of the above.
[0517] The encoder can determine the filters used for the coded block. The encoder can obtain the filters. The encoder can determine which components(s) are selected and / or not selected, or which are dominant, and / or which filters, filter coefficients, and weighting factors are effective for filtering and / or deriving the component values. Based on... Figure 22 The exemplary method of the n-encoder (e.g., exemplary encoder 200) shown can determine to filter one or more selected or principal components, and derive values for one or more other components based on the filter application according to this determination. The encoder can encode a block of code using filters, coefficients, weighting factors, the selected or principal components to be filtered, and the component values to be derived, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The encoder can apply filters to the first component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The encoder can use the output of the filter applied to the first component to modify the value of the second component associated with a sample in the coded block, and use the output of the filter applied to the first component to modify the value of the third component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The encoder can obtain the weighting factor associated with the third component, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The encoder can apply weighting factors to the filter output to produce a weighted filter output, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. The encoder can use the weighted filter output to modify the value of the third component associated with a sample in the coded block, for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the diagram. Before filtering the value of the first component using a filter, the encoder can reconstruct the value of the first component based on the difference between the filter output and the value of the first component, and obtain refined signals for the second and third components, for example, as... Figure 16A As shown in the diagram. The encoder can reconstruct the values of the first component, the second component, and the third component from samples in the encoded block, for example, as... Figure 16A As shown in the diagram. Before filtering the value of the first component using a filter, the encoder can obtain the refined signals of the second and third components based on the difference between the filter output and the value of the first component, for example, as... Figure 16A As shown in the diagram. The encoder can obtain a first weighting factor associated with the second component, for example, as... Figure 16A As shown in the diagram. The encoder can determine the first weighted thinning signal based on the first weighting factor and the thinning signal, for example, as... Figure 16A As shown in the diagram. The encoder can obtain a second weighting factor associated with the third component, for example, as... Figure 16A As shown in the diagram. The encoder can determine the second weighted thinning signal based on the second weighting factor and the thinning signal, for example, as... Figure 16A As shown, the encoder can use a first weighted thinning signal to modify the value of the second component, and use a second weighted thinning signal to modify the value of the third component, for example, as... Figure 16A As shown in the diagram. The encoder can obtain CCALF filters associated with the coded block, for example, such as... Figure 9 and Figure 18 As shown in the diagram, the encoder can obtain samples from the encoded block, which include a first (luminance) component, a second (chrominance) component, and a third (chrominance) component, for example, as... Figure 9 As shown in the diagram. The encoder can obtain the chroma ALF associated with the second and third components, for example, as... Figure 9 As shown in the diagram. The encoder can apply the chroma ALF to the second and third components to generate values for the second and third components, for example, as... Figure 9 As shown in the diagram. The encoder shown can obtain the weighting factor associated with the third component, for example, as... Figure 9 As shown in the diagram. The encoder can apply weighting factors to the filter output to generate a weighted filter output, for example, as... Figure 9 As shown in the diagram. The encoder can use the weighted filter output to modify the value of the third component, for example, as... Figure 9 As shown in the diagram. The encoder can apply CCALF to the first component associated with a sample in the coded block, and does not filter the values of the second or third component associated with a sample having chroma ALF, for example, as... Figure 18 As shown in the diagram, the encoder can filter one or more components (e.g., a first component) of a plurality of components or a set of components associated with a sample in the coded block, and use the output generated from one or more components of the plurality of components or a set of components to obtain (e.g., modify) the component values of one or more components of the plurality of components or a set of components (e.g., a second component and a third component), for example, as... Figure 9 , Figure 16A and Figure 18 As shown in the image.
[0518] Encoding tools and techniques, including one or more of quantization, entropy coding, inverse quantization, inverse transform, differential coding, and filtering, can be used to implement, in encoders, such as... Figure 22 The methods described herein. These coding tools and techniques can be used to implement one or more of the following: according to the methods described herein. Figure 22The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain filters associated with the coded block, based on the... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein apply a filter to a first component associated with a sample in the coded block; according to the... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein use the output of a filter applied to the first component to modify the value of a second component associated with a sample in the coded block; according to... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein use the output of a filter applied to the first component to modify the value of a third component associated with a sample in the coded block; according to... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures, and / or other methods as described herein, generate and transmit parameter sets, such as SPS and CCPS, which may indicate filters, coefficients, selected or principal components, applied filter outputs, weighting factors, etc.; based on the... Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain the weighting factor associated with the third component; according to the methods described in Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein apply weighting factors to the filter output to generate a weighted filter output; according to the methods described in the figures. Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein use weighted filter outputs to modify the values of the third component associated with samples in the coded block; according to... Figure 22The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or other methods described herein, before filtering the value of the first component using a filter, reconstruct the value of the first component based on the difference between the output of the filter and the value of the first component, and obtain refined signals of the second and third components; according to the... Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein are used to reconstruct the values of the first component, the second component, and the third component for samples in a coded block; based on the methods described in Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein obtain refined signals of the second and third components based on the difference between the filter output and the value of the first component before filtering the value of the first component using a filter; according to the method described herein. Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein are used to obtain a first weighting factor associated with the second component; according to the methods described in Figure 22 The method described in [the document], in Figure 16A The method described herein and / or other methods described herein determine the first weighted thinning signal based on the first weighting factor and the thinning signal; according to the method described herein. Figure 22 The method described in [the document], in Figure 16A The methods described herein and / or other methods described herein are used to obtain a second weighting factor associated with the third component; according to the methods described in Figure 22 The method described in [the document], in Figure 16A The method described herein and / or other methods described herein determine the second weighted refinement signal based on the second weighting factor and the refinement signal; according to the method described herein. Figure 22 The method described in [the document], in Figure 16A The method described herein and / or other methods as otherwise described herein modify the value of the second component using a first weighted thinning signal, and modify the value of the third component using a second weighted thinning signal; according to the method described herein. Figure 22 The method described in [the document], in Figure 9 , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain the CCALF filter associated with the coded block; according to the methods described in Figure 22 The method described in [the document], in Figure 9 , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain samples in a coded block comprising a first (luminance) component, a second (chrominance) component, and a third (chrominance) component; based on the methods described in one or more figures and / or as otherwise described herein. Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or other methods as otherwise described herein are used to obtain the chromaticity ALF associated with the second and third components according to the methods described in [the original text]. Figure 22 The method described in [the document], in Figure 9 The methods described herein and / or otherwise described herein apply the chromaticity ALF to the second and third components to generate values for the second and third components; according to the methods described herein. Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein are used to obtain the weighting factor associated with the third component; according to the methods described in Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein apply weighting factors to the filter output to generate a weighted filter output; according to the methods described in the figures. Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures, and / or as otherwise described herein, modify the value of the third component using a weighted filter output; according to Figure 22 , Figure 18 And / or as otherwise described herein, CCALF is applied to the first component associated with a sample in the coded block, and the values of the second or third component associated with a sample having chroma ALF are not filtered; and / or according to the method described herein. Figure 22 The method described in [the document], in Figure 9 , Figure 16A , Figure 18 The methods described in one or more figures and / or as otherwise described herein, filtering one or more components (e.g., a first component) of a plurality or set of components associated with a sample in a coding block, and using the output generated by filtering one or more components of a plurality or set of components to obtain (e.g., modify) the component values of one or more components (e.g., a second component and a third component); and other encoder behaviors related to any of the above.
[0519] Syntax elements, such as those shown in Tables 2, 3, and 7, can be inserted into the signaling to enable the decoder to recognize indications of filters, coefficients, selected or principal components, applied filter outputs, weighting factors, etc., to perform actions such as... Figure 22The decoding method described above. For example, syntax elements may include one or more indications of a video signal containing luma and chroma components, a prediction signal, coding unit size, a residual (e.g., a joint residual block for Cb and Cr blocks), a selected principal component (e.g., a variable vff_direct_applied_component), an offset signal, a weighting factor (e.g., a fixed or variable value), a refinement signal (e.g., the filtered output of a filter applied to the selected / principal component), markers (e.g., MPM markers, block-level CCALF on / off markers, markers indicating whether ALF is applied to the luma CTB), and mappings (e.g., on / off). (e.g., variable vff_direct_applied_component or vff_not_direct_applied_component), parameters (e.g., ALF or CCALF filter parameters, SAO parameters), filters (e.g., filter sets, ALF and / or CCALF filters), coefficients (e.g., luminance and chrominance filter coefficients, center position coefficients), LUTs, and indices (e.g., weight value indices, filter sets) to indicate to the decoder which(s) component(s) is dominant and which(s) of filters(s) are used in decoding. As an example, and / or the indication of parameters used by the decoder to perform one or more of the examples in this document.
[0520] For example, the syntax elements to be applied at the decoder can be selected and / or applied. Figure 22 The method described herein. For example, the decoder may receive an indication (e.g., in a message or parameter set) that indicates the filter, coefficients, selected or principal component, applied filter output, weighting factors, etc. Based on this indication, the decoder may partially filter (e.g., the selected or principal) component and partially derive the values of other components, such as... Figure 22 As described in [the document], it is used to decode components associated with samples in a coded block.
[0521] A bitstream or signal may include one or more syntax elements or variations thereof. For example, a bitstream or signal may include syntax elements indicating filters, coefficients, selected or principal components, applied filter outputs, weighting factors, etc., to perform actions such as... Figure 22 The aforementioned decoding method.
[0522] Bitstreams or signals may include syntax that conveys information generated based on one or more examples in this document. For example, it may be possible to execute something like... Figure 22 The example shown generates information or data, including... Figure 22 The examples shown are any examples within the scope of this article. The generated information or data may be conveyed in the syntax included in the bitstream or signal.
[0523] Syntax elements can be inserted into the signal that enable the decoder to select filters and apply them to the selected or primary filtered components, and to derive (e.g., modify) the values of unselected / non-primary components using the output of the applied filters in a manner corresponding to that used by the encoder. For example, one or more examples herein can be used to generate one or more messages and / or sets of parameters indicating the filters used for decoding, coefficients, selected or primary components, applied filter output weighting factors, etc.
[0524] A method, process, apparatus, medium for storing instructions, medium for storing data, or signal for creating and / or transmitting and / or receiving and / or decoding a bit stream or signal comprising one or more of the said syntax elements or variations thereof.
[0525] A method, process, apparatus, medium for storing instructions, medium for storing data, or signal for creating and / or transmitting and / or receiving and / or decoding according to any of the examples described herein.
[0526] A method, process, apparatus, medium for storing instructions, medium for storing data, or signal, or a signal based on one or more of the following: selecting a filter coefficient training function; training a set of optimal filter coefficients; determining whether to terminate training early; selecting a filter from a plurality of filters; unifying the optimization criteria for block classification with the optimization criteria derived from the filter coefficients; determining whether to apply a previously derived filter; selecting one or more (e.g., primary) components to apply the filter (e.g., filter coefficients); determining whether to turn the filter on / off; performing rate distortion (RD) cost biasing operations; performing operations described in formulas and / or equations; determining concurrent signal notifications of residuals, offset signals, weighting factors, tags, variables, parameters, etc. The process involves: receiving a video signal including luma and chroma components; obtaining (e.g., selecting) filters associated with a coding block; reconstructing a chroma block; reconstructing samples of a coding unit; receiving filter on / off flags; receiving a video signal including luma and chroma components; receiving filters associated with a coding block; filtering samples within a coding unit; applying obtained (e.g., determined or indicated, such as received) filters (e.g., CCALF, VFF) to a first component associated with samples in the coding block; modifying the value of a second component associated with samples in the coding block using the output of the filter applied to the first component; and modifying the value of a second component associated with samples in the coding block using the output of the filter applied to the first component. The values of the third component are obtained; a weighting factor associated with the third component is obtained (e.g., calculated); the weighting factor is applied to the output of the filter to generate a weighted filter output; the weighted filter output is used to modify the third component associated with samples in the coded block; the value of the first component is reconstructed; before filtering the value of the first component using the filter, a refined signal of the second and third components is obtained based on the difference between the output of the filter and the value of the first component; the values of the first, second, and third components are reconstructed for samples in the coded block; the refined signal of the second and third components is obtained based on the difference between the output of the filter and the value of the first component before filtering the value of the first component using the filter; the values of the first, second, and third components are reconstructed for samples in the coded block; the refined signal of the second and third components is obtained based on the difference between the output of the filter and the value of the first component before filtering the value of the first component using the filter; the values of the first, second, and third components are obtained. A first weighting factor is associated with the second component; a first weighted thinning signal is determined based on the first weighting factor and the thinning signal; a second weighting factor is obtained associated with the third component; a second weighted thinning signal is determined based on the second weighting factor and the thinning signal; the second component is modified using the first weighted thinning signal; the value of the third component is modified using the second weighted thinning signal; a CCALF filter is obtained associated with the coded block; samples in the coded block are obtained, including a first (luminance) component, a second (chrominance) component, and a third (chrominance) component; a chrominance ALF is obtained associated with the second and third components; the chrominance ALF is applied to the second and third components to generate values for the second and third components;Obtain the weighting factor associated with the third component; apply the weighting factor to the filter output to generate a weighted filter output; and modify the value of the third component using the weighted filter output; apply CCALF to the first component associated with a sample in the coding block, and do not filter the values of the second or third component associated with a sample having chroma ALF; and / or partially filter multiple or a group of components (e.g., the first component) associated with a sample in the coding block, and use the output generated by partially filtering the component to partially derive (e.g., modify) the component values of multiple or the component (e.g., the second and third components).
[0527] Televisions, set-top boxes, mobile phones, tablets, or other electronic devices that perform partial filtering on multiple components (e.g., video components) associated with samples in a coded block according to any of the examples described herein, and use the output of the filter applied to the first component to modify the value of at least one other component among the multiple components.
[0528] Televisions, set-top boxes, mobile phones, tablets, or other electronic devices perform filtering on a subset of multiple components associated with samples in an coded block to generate a filtered output, and use the filtered output to derive the value of at least one other component of the multiple components according to any example described herein, and display (e.g., using a monitor, screen, or other type of display) the resulting visual representation.
[0529] According to any example described herein, a TV, set-top box, mobile phone, tablet computer, or other electronic device selects (e.g., using a tuner) a channel that receives a signal including a filter associated with a coded block, applies the filter to at least a first component associated with a sample in the coded block, and uses the output of the filter applied to the first component to modify the value of at least a second component associated with a sample in the coded block.
[0530] According to any example described herein, a television, set-top box, mobile phone, tablet computer, or other electronic device receives signals over the air (e.g., using an antenna), which includes a filter associated with a coded block, applies the filter to at least a first component associated with a sample in the coded block, and uses the output of the filter applied to the first component to modify the value of at least a second component associated with a sample in the coded block.
[0531] An encoder (e.g., including a processor, memory, and transmit / receive units) can be configured to perform any of the methods described herein (e.g., partial, full, individual, or cumulative). A decoder (e.g., including a processor, memory, and transmit / receive units) can be configured to perform any of the methods described herein (e.g., partial, full, individual, or cumulative). A WTRU (e.g., including a processor, memory, and transmit / receive units) can be configured to perform any of the methods described herein (e.g., partial, full, individual, or cumulative).
[0532] The content of each of the following references is incorporated herein by reference: (1) ITU-T Rec. H.264 and ISO / IEC / MPEG-4 part 10, “Advanced video coding for generic audiovisual services,” November 2007; (2) SMPTE 421M, “VC-1 compressed video bitstream format and decoding process,” April 2006; (3) B. Bross, W.-J. Han, G. J. Sullivan, J.-R. Ohm and T. Wiegand, “High efficiency video coding (HEVC) text specification draft 10,” ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11 Doc. JCTVC-L1003, February 2012; (4) A. Segall, V. Baroncini, J. Boyce, J. Chen, T. Suzuki, “Joint call for proposals on video compression with capability beyond HEVC”, JVET-H1002, Oct. 2017, Macau, China, (5) B. Bross, J. Chen, S. Liu, “Versatile Video Coding (Draft 6)”, JVET-O2001, July 2019, Gothenburg, Sweden; (6) Y. Du, X. Zhao, X. Li, S. Liu (Tencent), “Non-CE5: On non-linear ALF clipping values”, JVET-P0505, Oct 2019, Geneva, CH; (7) K. Misra, F. Bossen, A. Segall, “Cross-Component Adaptive Loop Filter for chroma”, JVET-O0636, July 2019, Gothenburg, Sweden; (8) K. Misra, F. Bossen, A. Segall (Sharp Labs of America), N. Hu, J. Dong, V. Seregin, M. Karczewicz (Qualcomm), P. Onno, C.Gisquet,G.Laroche(Canon),J.Li,CSLim,C.-W.Kuo(Panasonic),J.Nam,J.Choi,J.Lim,S.Kim(LGE), O.Chubach,C.-Y.Lai,C.-Y.Chen,T.-D.Chuang,Y.-W.Huang,S.-M.Lei(MediaTek),“CE5-related:On the design of CC-ALF",JVET-P1008,Oct 2019,Geneva,CH; (9)H.Yang,Y.He,H.Li(InterDigital),"CE5-related:Joint chroma cross-componentadaptive loop filtering",JVET-P0372,Oct 2019, Geneva, CH; and (10) F. Bossen, J. Boyce, X. Li, V. Seregin, K. Sühring, "JVET common test conditions and software reference configurations for SDR video", JVET-O2010, Gothenburg, Sweden, July 2019. .
[0533] Systems and methods for processing data according to representative embodiments can be executed by one or more processors that execute sequences of instructions contained in a memory device. Such instructions can be read into the memory device from other computer-readable media, such as auxiliary data storage devices. Execution of the sequence of instructions contained in the memory device causes the processor to operate, for example, as described above. In alternative embodiments, hard-wired circuitry can be used to replace or combine with software instructions to implement one or more examples herein. Such software can run remotely on a processor housed within a robot-assisted / device (RAA) and / or another mobile device. In the latter case, data can be transferred, wired or wirelessly, between the RAA containing sensors or other mobile device and a remote device containing a processor running software that performs the scaling and compensation as described above. According to other representative embodiments, some of the above-described localization processes can be executed in a device containing sensors / cameras, while the remainder of the processing can be executed in a second device after partially processed data is received from the device containing sensors / cameras.
[0534] Although features and elements have been described above in specific combinations, those skilled in the art will understand that each feature or element may be used alone or in any combination with other features and elements. Furthermore, the methods described herein may be implemented in a computer program, software, or firmware incorporated in a computer-readable medium for execution by a computer or processor. Examples of computer-readable media include electronic signals (transmitted over wired or wireless connections) and computer-readable storage media. Examples of computer-readable storage media include, but are not limited to, read-only memory (ROM), random access memory (RAM), registers, cache memory, semiconductor memory devices, magnetic media (such as internal hard disks and removable disks), magneto-optical media, and optical media (such as CD-ROM disks and digital versatile optical discs (DVDs)). A processor associated with the software may be used to implement a radio frequency transceiver for a WTRU, UE, terminal, base station, RNC, or any host computer.
[0535] Furthermore, the above embodiments specify processing platforms, computing systems, controllers, and other devices including processors. These devices may include at least one central processing unit (“CPU”) and memory. According to the practice of those skilled in the art of computer programming, references to symbolic representations of actions and operations or instructions can be executed by various CPUs and memories. Such actions and operations or instructions can be considered as being “executed,” “computer-executed,” or “CPU-executed.”
[0536] Those skilled in the art will recognize that the actions and symbols representing operations or instructions include the CPU's manipulation of electrical signals. The electrical system represents data bits, which can lead to the final transformation or reduction of electrical signals and the retention of data bits at memory locations in the memory system, thereby reconfiguring or otherwise altering the CPU's operation and performing other signal processing. The memory location holding the data bits is a physical location having specific electrical, magnetic, optical, or organic properties corresponding to or representing the data bits. It should be understood that representative embodiments are not limited to the platforms or CPUs described above, and other platforms and CPUs may also support the provided methods.
[0537] Data bits may also be stored on a computer-readable medium, including disks, optical disks, and any other CPU-readable volatile (e.g., random access memory (“RAM”)) or non-volatile (e.g., read-only memory (“ROM”)) mass storage system. The computer-readable medium may include cooperative or interconnected computer-readable media that are uniquely present on the processing system or distributed across multiple interconnected processing systems, which may be local or remote relative to the processing system. It should be understood that representative embodiments are not limited to the memory described above, and other platforms and memories may also support the methods described. It should be understood that representative embodiments are not limited to the platform or CPU described above, and other platforms and CPUs may also support the provided methods.
[0538] In exemplary embodiments, any of the operations, processes, etc., described herein may be implemented as computer-readable instructions stored on a computer-readable medium. These computer-readable instructions may be executed by a processor of a mobile unit, network element, and / or any other computing device.
[0539] There is little difference between the hardware and software implementations of various aspects of the system. The use of hardware or software typically (but not always, as the choice between hardware and software can become important in certain contexts) represents a design choice that weighs cost against efficiency. Various media (e.g., hardware, software, and / or firmware) may exist to implement the processes and / or systems and / or other technologies described herein, and the preferred media may vary depending on the context of deployment. For example, if the implementer determines that speed and accuracy are most important, the implementer may choose a media that is primarily hardware and / or firmware. If flexibility is most important, the implementer may choose a primarily software implementation. Alternatively, the implementer may choose some combination of hardware, software, and / or firmware.
[0540] The above detailed description has illustrated various embodiments of the apparatus and / or process using block diagrams, flowcharts, and / or examples. Where such block diagrams, flowcharts, and / or examples contain one or more functions and / or operations, those skilled in the art will understand that each function and / or operation within such block diagrams, flowcharts, or examples can be implemented individually and / or collectively by a wide range of hardware, software, firmware, or virtually any combination thereof. Suitable processors include (by way of example) general-purpose processors, special-purpose processors, conventional processors, digital signal processors (DSPs), multiple microprocessors, one or more microprocessors associated with a DSP core, controllers, microcontrollers, application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), field-programmable gate array (FPGA) circuits, any other type of integrated circuit (IC) and / or state machine.
[0541] Although features and elements have been provided for the foregoing in specific combinations, those skilled in the art will understand that each feature or element may be used alone or in any combination with other features and elements. This disclosure is not limited to the specific embodiments described in this patent application, which are intended as examples of various aspects. Many modifications and variations may be made without departing from the spirit and scope of the invention, as will be apparent to those skilled in the art based on the foregoing description. Unless expressly provided, no element, action, or instruction used in the description of this application should be construed as critical or necessary for some examples. Functionally equivalent methods and apparatus within the scope of this disclosure will be apparent to those skilled in the art, in addition to those listed herein, based on the foregoing description. Such modifications and variations are intended to fall within the scope of the appended claims. This disclosure is limited only to the terms of the appended claims and the full scope of equivalents of such claimed claims. It should be understood that this disclosure is not limited to any particular method or system.
[0542] It should also be understood that the terminology used herein is for the purpose of describing specific implementations only and is not intended to be limiting. As used herein, when referred to herein, the term “station” and its abbreviation “STA”, “user equipment” and its abbreviation “UE” may mean: (i) a wireless transmitting and / or receiving unit (WTRU), as described below; (ii) any of several implementations of a WTRU, as described below; (iii) equipment having wireless and / or wired (e.g., tetherable) capabilities configured with some or all of the structure and functions of a WTRU, as described below; (iii) equipment having wireless and / or wired capabilities configured with fewer than all the structure and functions of a WTRU, as described below; or (iv) etc. The following is relative to Figures 1A to 1DDetails of an exemplary WTRU that can represent any UE described herein are provided.
[0543] In some representative embodiments, portions of the subject matter described herein may be implemented via application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), and / or other integration formats. However, those skilled in the art will recognize that some aspects of the embodiments disclosed herein are, wholly or partially, equivalently implemented in an integrated circuit as one or more computer programs running on one or more computers (e.g., one or more programs running on one or more computer systems), one or more programs running on one or more processors (e.g., one or more programs running on one or more microprocessors), firmware, or virtually any combination thereof, and that designing circuitry and / or writing software and / or firmware code according to this disclosure will be entirely within the skill of those skilled in the art. Furthermore, those skilled in the art will understand that the mechanisms of the subject matter described herein can be distributed as program products in various forms, and the exemplary embodiments of the subject matter described herein apply regardless of the specific type of signal-bearing medium used to actually implement that distribution. Examples of signal-bearing media include, but are not limited to, the following: recordable media (such as floppy disks, hard disks, CDs, DVDs, digital magnetic tapes, computer memory, etc.); and transmission media (such as digital and / or analog communication media (e.g., fiber optic cables, waveguides, wired communication links, wireless communication links, etc.)).
[0544] The topics described herein sometimes illustrate different components contained within or connected to different other components. It should be understood that such depicted architectures are merely examples, and many other architectures can in fact achieve the same functionality. Conceptually, any arrangement of components achieving the same function is effectively “associated” to enable the desired functionality. Therefore, any two components combined herein to achieve a particular function can be considered “associated” with each other to enable the desired functionality, regardless of the architecture or intermediate components. Similarly, any two such associated components can also be considered “operably connected” or “operably coupled” to each other to achieve the desired functionality, and any two components that can be suchly associated can also be considered “operably coupled” to each other to achieve the desired functionality. Specific examples of operably coupled components include, but are not limited to, components that can physically cooperate and / or physically interact and / or components that can wirelessly interact and / or logically interact and / or logically interact.
[0545] Regarding virtually any plural and / or singular terms used herein, those skilled in the art can appropriately convert them from plural to singular and / or from singular to plural depending on the context and / or application. For clarity, various singular / plural permutations may be explicitly listed herein.
[0546] Those skilled in the art will understand that, in general, the terminology used herein, particularly in the appended claims (e.g., the body of the appended claims), is typically intended as “open-ended” terms (e.g., the term “comprising” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “including” should be interpreted as “including but not limited to,” etc.). Those skilled in the art will also understand that if it is intended to specify a particular number of introduced claim objects, such intention will be explicitly stated in the claims, and if no such claim objects are present, such intention will not exist. For example, the term “single” or similar language may be used where only one item is anticipated. To aid understanding, the appended claims and / or the description herein may contain the use of the introductory phrases “at least one” and “one or more” to introduce claim objects. However, the use of such phrases should not be construed as implying that any particular claim containing such introduced claim objects is limited to an embodiment containing only one such claim object by using the indefinite articles “a” or “an.” This is true even when the same claim includes the introductory phrase "one or more" or "at least one" and indefinite articles such as "a" or "an" (e.g., "a" and / or "an" should be interpreted as meaning "at least one" or "one or more"). The same applies to the use of definite articles used to introduce the subject matter of a claim. Furthermore, even when a specific number of the introduced subject matter of a claim is explicitly stated, those skilled in the art will recognize that such a statement should be interpreted as meaning at least the stated number (e.g., a bare statement of "two subject matters" without other modifiers means at least two subject matters, or two or more subject matters). Additionally, in instances where conventions such as "at least one of A, B, and C" are used, generally speaking, such constructions mean that those skilled in the art will understand that convention (e.g., "a system having at least one of A, B, and C" will include, but is not limited to, systems having A alone, having B alone, having C alone, having both A and B, having both A and C, having both B and C, and / or having both A, B, and C, etc.). In instances where conventions such as "at least one of A, B, or C" are used, generally speaking, such a construction implies that a person skilled in the art will understand that the convention (e.g., "a system having at least one of A, B, or C" includes, but is not limited to, systems having A alone, having B alone, having C alone, having both A and B, having both A and C, having both B and C, and / or having both A, B, and C, etc.). A person skilled in the art should also understand that, in fact, any separate words and / or phrases presenting two or more alternative terms, whether in the specification, claims, or drawings, should be understood to contemplate the possibility of including one term, any one of the terms, or both terms.For example, the phrase “A or B” will be understood to include the possibility of “A” or “B” or “A and B”. Additionally, as used herein, the term “any one of…” followed by a list of multiple items and / or multiple item categories is intended to include items alone or in combination with other items and / or other item categories, “any one of,” “any combination,” “any multiple,” and / or “any combination of multiples of.” Furthermore, as used herein, the term “group” or “cluster” is intended to include any number of items, including zero. Additionally, as used herein, the term “quantity” is intended to include any quantity, including zero.
[0547] Furthermore, where features or aspects of this disclosure are described in accordance with the Markush Group, those skilled in the art will recognize that this disclosure is also described in accordance with any individual member of the Markush Group or a subgroup of its members.
[0548] As those skilled in the art will understand, for any and all purposes (such as for providing a written description), all scopes disclosed herein also encompass any and all possible subscopes and combinations thereof. Any listed scope can be readily identified as sufficiently descriptive and such that the same scope can be divided into at least two equal halves, thirds, quarters, fifths, tenths, etc. As a non-limiting example, each scope discussed herein can be readily divided into a lower third, a middle third, and an upper third, etc. As those skilled in the art will also understand, all language such as “at most,” “at least,” “greater than,” “less than,” etc., includes the referenced number and refers to a scope that can subsequently be divided into subscopes as described above. Finally, as those skilled in the art will understand, a scope includes each individual number. Thus, for example, a group having 1 to 3 units means a group having 1, 2, or 3 units. Similarly, a group having 1 to 5 units means a group having 1, 2, 3, 4, or 5 units, etc.
[0549] Furthermore, unless otherwise stated, the claims should not be construed as being limited to the order or elements provided. Additionally, the use of the term "means for..." in any claim is intended to invoke 35 USC §112. 6. The claim format is either device plus function, and any claim without the term "device for..." is not intended to be so.
[0550] The software-associated processor can be used to implement the radio frequency transceiver in a Transmitter-Receiver Unit (WTRU), User Equipment (UE), terminal, base station, Mobility Management Entity (MME), or Evolved Packet Core (EPC), or any host. The WTRU can be used in conjunction with modules and can be implemented in hardware and / or software including: Software-defined Radio (SDR) and other components such as cameras, video camera modules, videophones, speakerphones, vibration devices, speakers, microphones, television transceivers, hands-free headsets, keypads, etc. Modules, FM radio units, Near Field Communication (NFC) modules, Liquid Crystal Display (LCD) units, Organic Light Emitting Diode (OLED) units, Digital Music Players, Media Players, Video Game Players, Internet Browsers, and / or any Wireless Local Area Network (WLAN) or Ultra-Wideband (UWB) modules.
[0551] Throughout the disclosed content, those skilled in the art should understand that certain representative implementations may be used in alternative forms or in combination with other representative implementations.
[0552] Furthermore, the methods described herein can be implemented in a computer program, software, or firmware incorporated in a computer-readable medium for execution by a computer or processor. Examples of non-transitory computer-readable storage media include, but are not limited to, read-only memory (ROM), random access memory (RAM), registers, cache memory, semiconductor memory devices, magnetic media (such as internal hard disks and removable disks), magneto-optical media, and optical media (such as CD-ROM disks and digital versatile optical discs (DVDs)). The processor associated with the software can be used to implement a radio frequency transceiver for a WTRU, UE, terminal, base station, RNC, or any host computer.
Claims
1. An apparatus for video decoding, comprising one or more processors, wherein the one or more processors are configured to: obtain a filter associated with a coding block, the coding block comprising a first component, a second component, and a third component, wherein the filter is associated with the second component and the third component; apply the filter to a value of the first component associated with a sample in the coding block to obtain an output of the filter; modify a value of the second component associated with the sample in the coding block using the output of the filter to obtain a modified value of the second component; obtain a weighting factor associated with the third component; apply the weighting factor to the output of the filter to generate a weighted filter output; and modify a value of the third component associated with the sample in the coding block using the weighted filter output to obtain a modified weighted value of the third component.
2. The video decoding apparatus of claim 1, wherein the filter is derived based on the second component and the third component.
3. The video decoding apparatus of claim 1, wherein the one or more processors are further configured to: reconstruct the value of the first component, wherein the value of the first component is reconstructed prior to applying the filter to the value of the first component to generate the output of the filter; and obtain a refinement signal of the second component and the third component based on a difference between the output of the filter and the value of the first component.
4. The video decoding apparatus of claim 1, wherein the one or more processors are further configured to: reconstruct the value of the first component, the value of the second component, and the value of the third component associated with the sample in the coding block, wherein the value of the first component is reconstructed prior to applying the filter to the value of the first component to generate the output of the filter; obtain a refinement signal of the second component and the third component based on a difference between the output of the filter and the value of the first component; obtain a first weighting factor associated with the second component; determine a first weighted refinement signal based on the first weighting factor and the refinement signal of the second component and the third component; obtain a second weighting factor associated with the third component; and determine a second weighted refinement signal based on the second weighting factor and the refinement signal of the second component and the third component, wherein the value of the second component associated with the sample in the coding block is modified using the first weighted refinement signal and the value of the third component associated with the sample in the coding block is modified using the second weighted refinement signal. 5. The video decoding apparatus of claim 1, wherein the filter is a cross-component adaptive loop filter (CCALF), the first component is a luma component, the second and third components are chroma components, and the one or more processors are further configured to: obtain a chroma adaptive loop filter (ALF) associated with the second and third components; and apply the chroma ALF to the second and third components to generate the value of the second component and the value of the third component.
6. The video decoding apparatus of claim 1, wherein the filter is a cross- component adaptive loop filter (CCALF), and the value of the second component and the value of the third component are not filtered by a chroma ALF.
7. The video decoding apparatus of claim 1, wherein the output of the filter is used to refine the value of the second component associated with the samples in the coding block, and the output of the filter is used to refine the value of the third component associated with the samples in the coding block.
8. The video decoding apparatus of claim 1, wherein the filter comprises a set of coefficients, wherein the set of coefficients is obtained based on the second and third components.
9. A method for video decoding, comprising: obtaining a filter associated with a coding block, the coding block comprising a first component, a second component, and a third component, wherein the filter is associated with the second and third components; applying the filter to a value of a first component associated with a sample in the coding block to obtain an output of the filter; using the output of the filter to modify a value of the second component associated with the sample in the coding block to obtain a modified value of the second component; obtaining a weighting factor associated with the third component; applying the weighting factor to the output of the filter to generate a weighted filter output; and using the weighted filter output to modify a value of the third component associated with the sample in the coding block to obtain a modified weighted value of the third component.
10. The video decoding method of claim 9, wherein the filter is derived based on the second and third components.
11. The video decoding method of claim 9, further comprising: reconstructing the value of the first component, wherein the value of the first component is reconstructed prior to applying the filter to the value of the first component to generate the output of the filter; and obtaining a refinement signal for the second and third components based on a difference between the output of the filter and the value of the first component.
12. The video decoding method of claim 9, further comprising: reconstructing the value of the first component, the value of the second component, and the value of the third component associated with the samples in the coding block, wherein the value of the first component is reconstructed prior to applying the filter to the value of the first component to generate the output of the filter; obtaining refinement signals for the second component and the third component based on a difference between the output of the filter and the value of the first component; obtaining a first weighting factor associated with the second component; determining a first weighted refinement signal based on the first weighting factor and the refinement signals for the second component and the third component; obtaining a second weighting factor associated with the third component; and determining a second weighted refinement signal based on the second weighting factor and the refinement signals for the second component and the third component, wherein the value of the second component associated with the samples in the coding block is modified using the first weighted refinement signal and the value of the third component associated with the samples in the coding block is modified using the second weighted refinement signal.
13. The video decoding method of claim 9, wherein the filter is a cross-component adaptive loop filter (CCALF), the first component is a luma component, the second component and the third component are chroma components, and the method further comprises: obtaining a chroma adaptive loop filter (ALF) associated with the second component and the third component; and applying the chroma ALF to the second component and the third component to generate the value of the second component and the value of the third component.
14. The video decoding method of claim 9, wherein the filter is a cross-component adaptive loop filter (CCALF), and the value of the second component and the value of the third component are not filtered by a chroma ALF.
15. The video decoding method of claim 9, wherein the output of the filter is used to refine the value of the second component associated with the samples in the coding block, and the output of the filter is used to refine the value of the third component associated with the samples in the coding block.
16. The video decoding method of claim 9, wherein the filter comprises a set of coefficients, and wherein the set of coefficients is obtained based on the second component and the third component.
17. A computer-readable medium comprising instructions for causing one or more processors to perform the method of any of claims 9-16.
Citation Information
Patent Citations
Enhanced chroma coding using cross plane filtering
US20180220138A1