History-based intra prediction mode

The history-based intra prediction mode (HIPM) in video coding systems optimizes intra-prediction by leveraging neighboring block modes, improving compression efficiency and reducing bandwidth needs.

JP2026501318APending Publication Date: 2026-01-14INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025536934
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-23
Filing Date
2023-12-22
Publication Date
2026-01-14

AI Technical Summary

Technical Problem

Existing video coding systems face inefficiencies in predicting intra-prediction modes for video blocks, leading to suboptimal compression and increased bandwidth requirements.

Method used

Implementing a history-based intra prediction mode (HIPM) that utilizes intra-prediction modes of neighboring blocks to enhance prediction accuracy by updating and reordering a history-based intra-prediction mode (HIPM) table, incorporating multiple HIPM candidates and adjusting their importance based on similarity with neighboring block modes.

Benefits of technology

Improves video coding efficiency by refining intra-prediction modes, reducing bandwidth requirements and enhancing compression performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026501318000001_ABST
    Figure 2026501318000001_ABST
Patent Text Reader

Abstract

Systems, methods, and means for performing video coding using a history-based intra prediction mode (HIPM) are disclosed. A video decoding device can identify, for a current block, intra-predicted neighboring blocks that are spaced at least one block from the current block. The device can determine intra-prediction modes of the intra-predicted neighboring blocks. The device can decode the current block based on the intra-prediction modes of the intra-predicted neighboring blocks.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of European Provisional Patent Application No. 22307022.8, filed December 23, 2022, the contents of which are incorporated herein by reference.

[0002] Video coding systems may be used to compress digital video signals, e.g., to reduce the storage and / or transmission bandwidth required for such signals. Video coding systems may include, for example, block-based, wavelet-based, and / or object-based systems. Summary of the Invention

[0003] Systems, methods, and means for performing video coding using a history-based intra prediction mode (HIPM) are disclosed. A video decoding device may identify, for a current block, intra-predicted neighboring blocks that are spaced at least one block from the current block. The device may determine intra-prediction modes of the intra-predicted neighboring blocks. The device may decode the current block based on the intra-prediction modes of the intra-predicted neighboring blocks.

[0004] The video encoding device may identify, for a current block, intra-predicted neighboring blocks that are spaced at least one block from the current block. The device may determine intra-prediction modes of the intra-predicted neighboring blocks. The device may encode the current block based on the intra-prediction modes of the intra-predicted neighboring blocks.

[0005] A device (e.g., a video decoding device and / or a video encoding device) may add the intra-prediction mode of the intra-predicted neighboring block to a most probable mode (MPM) list associated with the current block. The device may encode and / or decode the current block based on the MPM list.

[0006] The device may add the intra-prediction mode of the intra-predicted neighboring block to a history-based intra-prediction mode (HIPM) table. The HIPM table may include multiple HIPM candidates. The device may obtain an MPM list associated with the current block based on the HIPM table. The device may encode and / or decode the current block based on the MPM list.

[0007] The device may obtain a HIPM table that includes multiple HIPM candidates. The device may determine whether the intra-prediction mode of an intra-predicted neighboring block is the same as a HIPM candidate in the HIPM table. Based on determining that the intra-prediction mode of the intra-predicted neighboring block is the same as a HIPM candidate in the HIPM table, the device may remove the same HIPM candidate from the HIPM table. The device may move each of the HIPM candidates in the HIPM table that were behind the same HIPM candidate before removing the same HIPM candidate. The device may add the intra-prediction mode of the intra-predicted neighboring block to a specified entry in the HIPM table.

[0008] The device may determine that the intra-prediction mode of the intra-predicted neighboring block is distinguishable from the HIPM candidates in the HIPM table. Based on the determination, the device may remove the first HIPM candidate from the HIPM table. The device may move HIPM candidates in the HIPM table that were behind the first HIPM candidate before removing the first HIPM candidate. The device may add the intra-prediction mode of the intra-predicted neighboring block to a designated entry in the HIPM table.

[0009] The device may determine that the intra-prediction mode of an intra-predicted neighboring block is the same as a HIPM candidate in the HIPM table. Based on the determination, the device may increase the importance of the same HIPM candidate. The device may reorder the HIPM table.

[0010] The device may determine that the intra-prediction mode of the intra-predicted neighboring block is distinguishable from the HIPM candidates in the HIPM table. Based on the determination, the device may remove the first HIPM candidate from the HIPM table. The device may add the intra-prediction mode of the intra-predicted neighboring block to the HIPM table. The device may reorder the HIPM table.

[0011] The systems, methods, and means described herein may involve a decoder. In examples, the systems, methods, and means described herein may involve an encoder. In examples, the systems, methods, and means described herein may involve a signal (e.g., from an encoder and / or received by a decoder). A computer-readable medium may include instructions for causing one or more processors to perform the methods described herein. A computer program product may include instructions that, when executed by one or more processors, cause the one or more processors to perform the methods described herein. [Brief explanation of the drawings]

[0012] [Figure 1A] FIG. 1 is a system diagram illustrating an example communication system in which one or more disclosed embodiments may be implemented. [Figure 1B] 1B is a system diagram illustrating an exemplary wireless transmit / receive unit (WTRU) that may be used within the communication system shown in FIG. 1A, according to one embodiment. [Figure 1C]1B is a system diagram illustrating an example radio access network (RAN) and an example core network (CN) that may be used within the communication system shown in FIG. 1A, according to one embodiment. [Figure 1D] 1B is a system diagram illustrating a further exemplary RAN and a further exemplary CN that may be used within the communication system shown in FIG. 1A, according to one embodiment. [Figure 2] FIG. 1 illustrates an exemplary video encoder. [Figure 3] FIG. 1 illustrates an exemplary video decoder. [Figure 4] FIG. 1 illustrates an example of a system in which various aspects and examples may be implemented. [Figure 5] FIG. 10 illustrates an example of generating intra-prediction samples using reference samples obtained from reconstructed samples of neighboring blocks. [Figure 6] FIG. 10 is a diagram illustrating an example of an intra-prediction mode. [Figure 7] FIG. 10 is a diagram illustrating an example of generating an intra-prediction signal. [Figure 8] FIG. 10 illustrates an example of generating an intra-mode predictor for a predictor block. [Figure 9A] FIG. 1 illustrates an example of deriving decoder-side intra mode derivation (DIMD) prediction modes from histogram of gradients (HOG) bins. [Figure 9B] FIG. 10 illustrates an example of deriving decoder-side intra mode derivation (DIMD) prediction modes from histogram of gradients (HOG) bins. [Figure 10] FIG. 1 is a diagram illustrating an example of a template-based intra prediction mode (TIMD). [Figure 11A] FIG. 1 is a diagram illustrating an example of a spatial geometric partition mode (SGPM). [Figure 11B] FIG. 1 illustrates an example of spatial geometric partition mode (SGPM). [Figure 12] FIG. 1 is a diagram illustrating an example of multiple reference line (MRL) intra prediction. [Figure 13A] FIG. 1 is a diagram illustrating an example of an intra sub partition (ISP). [Figure 13B] FIG. 1 is a diagram illustrating an example of an intra-sub-partition (ISP). [Figure 14] 10A illustrates an example of signaling a selected intra-prediction mode for predicting the luma component of a current coding unit (CU). FIG. [Figure 15A] FIG. 10 is a diagram illustrating an example of a multiple prediction mode (MPM) list. [Figure 15B] FIG. 10 is a diagram illustrating an example of a multiple prediction mode (MPM) list. [Figure 16] FIG. 2 illustrates an example of neighboring blocks for a current block. [Figure 17A] FIG. 1 illustrates an example of constructing a merge candidate list using history-based motion vector prediction (HMVP) candidates. [Figure 17B] FIG. 1 illustrates an example of advanced motion vector prediction (AMVP) candidate list construction using history-based motion vector prediction (HMVP) candidates. [Figure 18] FIG. 1 is a diagram illustrating an example of occlusion. [Figure 19] FIG. 1 is a diagram illustrating an example of history-based intra-prediction mode (HIPM) coding. [Figure 20] FIG. 10 is a diagram illustrating an example of HIPM table maintenance. [Figure 21] FIG. 10 is a diagram illustrating an example of the order of entries in a HIPM table. [Figure 22] FIG. 10 illustrates an example of adding HIPM candidates from available spatial neighboring blocks of a current block to a table. [Figure 23] FIG. 10 illustrates an example of a reference region with intra prediction mode(s) that may be added to a HIPM table. [Figure 24] FIG. 1 illustrates an example of application of reference regions of intra block copy (IBC) for HIPM. [Figure 25] FIG. 1 illustrates an example of using a HIPM in an MPM list construction process. [Figure 26] FIG. 1 illustrates an example of using HIPM candidates stored in a HIPM table to populate a secondary MPM (SMPM) list. [Figure 27] FIG. 10 illustrates an example of signaling a selected intra-prediction mode for predicting the luma component of a current CU. DETAILED DESCRIPTION OF THE INVENTION

[0013] A more detailed understanding may be had from the following description, given by way of example in conjunction with the accompanying drawings, in which:

[0014] 1A illustrates an example communication system 100 in which one or more disclosed embodiments may be implemented. The communication system 100 may be a multiple-access system that provides content, such as voice, data, video, messaging, broadcast, etc., to multiple wireless users. The communication system 100 may enable the multiple wireless users to access such content through the sharing of system resources, including wireless bandwidth. For example, the 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-spread OFDM (ZT UW DFT-s OFDM), unique word OFDM (UW-OFDM), resource block filtered OFDM, filter bank multicarrier (FBMC), etc.

[0015] 1A, communications system 100 may include wireless transmit / receive units (WTRUs) 102a, 102b, 102c, 102d, RANs 104 / 113, CNs 106 / 115, public switched telephone network (PSTN) 108, the Internet 110, and other networks 112, although it will be appreciated that the disclosed embodiments contemplate any number of WTRUs, base stations, networks, and / or network elements. Each of WTRUs 102a, 102b, 102c, 102d may be any type of device configured to operate and / or communicate in a wireless environment. For example, the WTRUs 102a, 102b, 102c, 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), a mobile station, a fixed or mobile subscriber unit, a subscription-based unit, a pager, a cellular phone, a personal digital assistant (PDA), a smartphone, a laptop, a netbook, a personal computer, a wireless sensor, a hotspot or Mi-Fi device, an Internet of Things (IoT) device, a watch or other wearable, a head-mounted display (HMD), a vehicle, a drone, a medical device and application (e.g., remote surgery), an industrial device and application (e.g., robots and / or other wireless devices operating in an industrial and / or automated processing chain context), a consumer electronics device, a device operating on a commercial and / or industrial wireless network, etc. Any of the WTRUs 102a, 102b, 102c, and 102d may be referred to interchangeably as a UE.

[0016] The communications system 100 may also include a base station 114a and / or a base station 114b. Each of the base stations 114a, 114b may be any type of device configured to wirelessly interface with at least one of the WTRUs 102a, 102b, 102c, 102d to facilitate access to one or more communications networks, such as the CN 106 / 115, the Internet 110, and / or other networks 112. For example, the base stations 114a, 114b may be a base transceiver station (BTS), a Node B, an eNodeB, a Home Node B, a Home eNodeB, a gNB, an NR Node B, a site controller, an access point (AP), a wireless router, etc. Although the base stations 114a, 114b are each shown as a single element, it will be appreciated that the base stations 114a, 114b may include any number of interconnected base stations and / or network elements.

[0017] The base station 114a may be part of the RAN 104 / 113, which may also include other base stations and / or network elements (not shown), such as a base station controller (BSC), a radio network controller (RNC), relay nodes, etc. The base station 114a and / or base station 114b may be configured to transmit and / or receive wireless signals on one or more carrier frequencies, sometimes referred to as a cell (not shown). These frequencies may be licensed spectrum, unlicensed spectrum, or a combination of licensed and unlicensed spectrum. A cell may provide coverage for wireless services in a particular geographic area, which may be relatively fixed or may change over time. A cell may be further divided into cell sectors. For example, the cell associated with the base station 114a may be divided into three sectors. Thus, in one embodiment, the base station 114a may include three transceivers, i.e., one for each sector of the cell. In one embodiment, the base station 114a may employ multiple-input multiple-output (MIMO) technology and 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.

[0018] The base stations 114a, 114b may communicate with one or more of the WTRUs 102a, 102b, 102c, 102d over the air interface 116, which may be any suitable wireless communication link (e.g., radio frequency (RF), microwave, centimeter wave, micrometer wave, infrared (IR), ultraviolet (UV), visible light, etc.). The air interface 116 may be established using any suitable radio access technology (RAT).

[0019] More particularly, as mentioned 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, the base station 114a and the WTRUs 102a, 102b, 102c in the RAN 104 / 113 may implement a radio technology such as Universal Mobile Telecommunications System (UMTS) Terrestrial Radio Access (UTRA), which may establish the air interface 115 / 116 / 117 using Wideband CDMA (WCDMA). 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 ​​UL Packet Access (HSUPA).

[0020] In one embodiment, the base station 114a and the WTRUs 102a, 102b, 102c may implement a radio technology such as Evolved UMTS Terrestrial Radio Access (E-UTRA), which may establish the air interface 116 using Long Term Evolution (LTE) and / or LTE Advanced (LTE-A) and / or LTE Advanced Pro (LTE-A Pro).

[0021] In one embodiment, the base station 114a and the WTRUs 102a, 102b, 102c may implement a radio technology, such as New Radio (NR) radio access, which may establish the air interface 116 using NR.

[0022] In one embodiment, the base station 114a and the WTRUs 102a, 102b, 102c may implement multiple radio access technologies. For example, the base station 114a and the WTRUs 102a, 102b, 102c may jointly implement LTE radio access and NR radio access, e.g., using dual connectivity (DC) principles. Thus, the air interface utilized by the WTRUs 102a, 102b, 102c may be characterized by multiple types of radio access technologies and / or transmissions from / to multiple types of base stations (e.g., eNBs and gNBs).

[0023] In other embodiments, the base station 114a and the WTRUs 102a, 102b, 102c may implement a wireless technology such as IEEE 802.11 (i.e., Wireless Fidelity (WiFi)), IEEE 802.16 (i.e., Worldwide Interoperability for Microwave Access (WiMAX)), CDMA2000, CDMA2000 1X, CDMA2000 EV-DO, Interim Standard 2000 (IS-2000), Interim Standard 95 (IS-95), Interim Standard 856 (IS-856), Global System for Mobile Communications (GSM), Enhanced Data Rates for GSM Evolution (EDGE), GSM EDGE (GERAN), or the like.

[0024] 1A may be, for example, a wireless router, a Home NodeB, a Home eNodeB, or an access point and may utilize any suitable RAT for facilitating wireless connectivity in a localized area, such as a business, a home, a vehicle, a campus, an industrial facility, an air corridor (e.g., for use by drones), a road, etc. In one embodiment, the base station 114b and the WTRUs 102c, 102d may implement a radio technology such as IEEE 802.11 to establish a wireless local area network (WLAN). In one embodiment, the base station 114b and the WTRUs 102c, 102d may implement a radio technology such as IEEE 802.15 to establish a wireless personal area network (WPAN). In yet another embodiment, the base station 114b and the WTRUs 102c, 102d may utilize a cellular-based RAT (e.g., WCDMA, CDMA2000, GSM, LTE, LTE-A, LTE-A Pro, NR, etc.) to establish a picocell or femtocell. 1A, the base station 114b may have a direct connection to the Internet 110. Therefore, the base station 114b may not be required to access the Internet 110 via the CN 106 / 115.

[0025] The RAN 104 / 113 may be in communication with the CN 106 / 115, which may be any type of network configured to provide voice, data, application, and / or voice over internet protocol (VoIP) services to one or more of the WTRUs 102a, 102b, 102c, 102d. The data may have various quality of service (QoS) requirements, such as different throughput requirements, latency requirements, error resilience requirements, reliability requirements, data throughput requirements, mobility requirements, etc. The CN 106 / 115 may provide call control, billing services, mobile location-based services, prepaid calling, Internet connectivity, video distribution, etc., and / or perform high-level security functions, such as user authentication. Although not shown in FIG. 1A , it will be appreciated that the RAN 104 / 113 and / or the CN 106 / 115 may be in direct or indirect communication with other RANs employing the same RAT as the RAN 104 / 113 or a different RAT. For example, in addition to being connected to the RAN 104 / 113, which may utilize NR radio technology, the CN 106 / 115 may also be in communication with another RAN (not shown) that employs GSM, UMTS, CDMA2000, WiMAX, E-UTRA, or WiFi radio technology.

[0026] The CN 106 / 115 may also serve as a gateway for the WTRUs 102a, 102b, 102c, 102d to access the PSTN 108, the Internet 110, and / or other networks 112. The PSTN 108 may include a circuit-switched telephone network providing plain old telephone service (POTS). The Internet 110 may include a global system of interconnected computer networks and devices that use common communication protocols, such as TCP, User Datagram Protocol (UDP), and / or IP in the Transmission Control Protocol / Internet Protocol (TCP / IP) Internet protocol suite. The network 112 may include wired and / or wireless communication networks owned and / or operated by other service providers. For example, the network 112 may include another CN connected to one or more RANs, which may employ the same RAT as the RAN 104 / 113 or a different RAT.

[0027] Some or all of the WTRUs 102a, 102b, 102c, 102d in the communications system 100 may include multi-mode capabilities (e.g., the WTRUs 102a, 102b, 102c, 102d may include multiple transceivers for communicating with different wireless networks over different wireless links). For example, the WTRU 102c shown in FIG. 1A may be configured to communicate with a base station 114a that may employ cellular-based wireless technology and may be configured to communicate with a base station 114b that may employ IEEE 802.2 wireless technology.

[0028] 1B is a system diagram illustrating an example WTRU 102. As shown in FIG. 1B, the WTRU 102 may include, among other things, a processor 118, a transceiver 120, a transmit / receive element 122, a speaker / microphone 124, a keypad 126, a display / touchpad 128, non-removable memory 130, removable memory 132, a power source 134, a global positioning system (GPS) chipset 136, and / or other peripherals 138. It will be appreciated that the WTRU 102 may include any sub-combination of the above elements while remaining consistent with an embodiment.

[0029] The processor 118 may 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. The processor 118 may perform signal coding, data processing, power control, input / output processing, and / or any other functionality that enables the WTRU 102 to operate in a wireless environment. The processor 118 may be coupled to the transceiver 120, which may be coupled to the transmit / receive element 122. While FIG. 1B depicts the processor 118 and the transceiver 120 as separate components, it will be appreciated that the processor 118 and the transceiver 120 may be incorporated together in an electronic package or chip.

[0030] The transmit / receive element 122 may be configured to transmit signals to or receive signals from a base station (e.g., base station 114a) over the air interface 116. For example, in one embodiment, the transmit / receive element 122 may be an antenna configured to transmit and / or receive RF signals. In one embodiment, the transmit / receive element 122 may be an emitter / detector configured to transmit and / or receive IR, UV, or visible light signals, for example. In yet another embodiment, the transmit / receive element 122 may be configured to transmit and / or receive both RF and light signals. It will be appreciated that the transmit / receive element 122 may be configured to transmit and / or receive any combination of wireless signals.

[0031] 1B as a single element, the WTRU 102 may include any number of transmit / receive elements 122. More particularly, the WTRU 102 may employ MIMO technology. Thus, in one embodiment, the WTRU 102 may include two or more transmit / receive elements 122 (e.g., multiple antennas) for transmitting and receiving wireless signals over the air interface 116.

[0032] The transceiver 120 may be configured to modulate signals to be transmitted by the transmit / receive element 122 and demodulate signals received by the transmit / receive element 122. As mentioned above, the WTRU 102 may have multi-mode capabilities. Thus, the transceiver 120 may include multiple transceivers to enable the WTRU 102 to communicate via multiple RATs, such as NR and IEEE 802.11.

[0033] The processor 118 of the WTRU 102 may be coupled to and may receive user input data from the speaker / microphone 124, the keypad 126, and / or the display / touchpad 128 (e.g., a liquid crystal display (LCD) display unit or an organic light emitting diode (OLED) display unit). The processor 118 may also output user data to the speaker / microphone 124, the keypad 126, and / or the display / touchpad 128. Furthermore, the processor 118 may access information from and store data in any type of suitable memory, such as non-removable memory 130 and / or removable memory 132. The 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. The removable memory 132 may include a subscriber identity module (SIM) card, a memory stick, a secure digital (SD) memory card, etc. In other embodiments, the processor 118 may access information from and store data in memory that is not physically located on the WTRU 102, such as on a server or home computer (not shown).

[0034] The processor 118 may receive power from the power source 134 and may be configured to distribute and / or control the power to other components in the WTRU 102. The power source 134 may be any suitable device for powering the WTRU 102. For example, the power source 134 may include one or more dry batteries (e.g., nickel cadmium (NiCd), nickel zinc (NiZn), nickel metal hydride (NiMH), lithium ion (Li-ion), etc.), solar cells, fuel cells, etc.

[0035] 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) regarding the current location of the WTRU 102. In addition to, or instead of, information from the GPS chipset 136, the WTRU 102 may receive location information from base stations (e.g., base stations 114a, 114b) over the air interface 116 and / or determine its location based on the timing of signals received from two or more nearby base stations. It will be appreciated that the WTRU 102 may acquire location information by any suitable location determination method while remaining consistent with an embodiment.

[0036] The processor 118 may further be coupled to other peripherals 138, which may include one or more software and / or hardware modules that provide additional features, functionality, and / or wired or wireless connectivity. For example, the peripherals 138 may include an accelerometer, an electronic compass, a satellite transceiver, a digital camera (for photos and / or videos), a universal serial bus (USB) port, a vibration device, a television transceiver, a hands-free headset, a Bluetooth module, a frequency modulated (FM) radio unit, a digital music player, a media player, a video game player module, an internet browser, a virtual reality and / or augmented reality (VR / AR) device, an activity tracker, etc. The peripherals 138 may include one or more sensors, which may be one or more of a gyroscope, an accelerometer, a Hall effect sensor, a magnetometer, a direction sensor, a proximity sensor, a temperature sensor, a time sensor, a geolocation sensor, an altimeter, a light sensor, a touch sensor, a barometer, a gesture sensor, a biometric sensor, and / or a humidity sensor.

[0037] The WTRU 102 may include a full-duplex radio for which transmission and reception of some or all of the signals (e.g., associated with a particular subframe for both the UL (e.g., for transmission) and the downlink (e.g., for reception)) may be parallel and / or simultaneous. The full-duplex radio may include an interference management unit for reducing and / or substantially eliminating self-interference either through hardware (e.g., a choke) or signal processing via a processor (e.g., a separate processor (not shown) or the processor 118). In one embodiment, the WTRU 102 may include a half-duplex radio for transmission and reception of some or all of the signals (e.g., associated with a particular subframe for either the UL (e.g., for transmission) or the downlink (e.g., for reception)).

[0038] 1C is a system diagram illustrating the RAN 104 and the CN 106, according to one embodiment. As mentioned above, the RAN 104 may employ E-UTRA radio technology to communicate with the WTRUs 102a, 102b, 102c over the air interface 116. The RAN 104 may also be in communication with the CN 106.

[0039] The RAN 104 may include eNodeBs 160a, 160b, and 160c, although it will be appreciated that the RAN 104 may include any number of eNodeBs while remaining consistent with an embodiment. The eNodeBs 160a, 160b, and 160c may each include one or more transceivers for communicating with the WTRUs 102a, 102b, and 102c over the air interface 116. In an embodiment, the eNodeBs 160a, 160b, and 160c may implement MIMO technology. Thus, the eNodeB 160a may, for example, use multiple antennas to transmit wireless signals to and / or receive wireless signals from the WTRU 102a.

[0040] Each of the eNodeBs 160a, 160b, 160c may be associated with a particular cell (not shown) and may be configured to handle radio resource management decisions, handover decisions, scheduling of users in the UL and / or DL, etc. As shown in FIG. 1C, the eNodeBs 160a, 160b, 160c may communicate with one another via an X2 interface.

[0041] 1C may include a mobility management entity (MME) 162, a serving gateway (SGW) 164, and a packet data network (PDN) gateway (or PGW) 166. Although each of the above elements is shown as part of the CN 106, it will be appreciated that any of these elements may be owned and / or operated by an entity other than the CN operator.

[0042] The MME 162 may be connected to each of the eNodeBs 160a, 160b, 160c in the RAN 104 via an S1 interface and may act as a control node. For example, the MME 162 may be responsible for authenticating users of the WTRUs 102a, 102b, 102c, bearer activation / deactivation, selecting a particular serving gateway during initial attach of the WTRUs 102a, 102b, 102c, etc. The MME 162 may provide a control plane function for switching between the RAN 104 and other RANs (not shown) that employ other radio technologies, such as GSM and / or WCDMA.

[0043] The SGW 164 may be connected to each of the eNodeBs 160a, 160b, 160c in the RAN 104 via an S1 interface. The SGW 164 may generally route and forward user data packets to / from the WTRUs 102a, 102b, 102c. The SGW 164 may perform other functions such as anchoring the user plane during inter-eNodeB handover, triggering paging when DL data is available for the WTRUs 102a, 102b, 102c, managing and storing the context of the WTRUs 102a, 102b, 102c, etc.

[0044] The SGW 164 may be connected to a PGW 166, which may provide the WTRUs 102a, 102b, 102c with access to packet-switched networks, such as the Internet 110, to facilitate communications between the WTRUs 102a, 102b, 102c and IP-enabled devices.

[0045] The CN 106 may facilitate communication with other networks. For example, the CN 106 may provide the WTRUs 102a, 102b, 102c with access to circuit-switched networks, such as the PSTN 108, to facilitate communication between the WTRUs 102a, 102b, 102c and legacy landline communication devices. For example, the CN 106 may include or communicate with an IP gateway (e.g., an IP Multimedia Subsystem (IMS) server) that acts as an interface between the CN 106 and the PSTN 108. Additionally, the CN 106 may provide the WTRUs 102a, 102b, 102c with access to other networks 112, which may include other wired and / or wireless networks owned and / or operated by other service providers.

[0046] Although the WTRU is described in Figures 1A-1D as a wireless terminal, it is contemplated that in certain representative embodiments, such a terminal may use a wired communication interface with the communication network (e.g., temporarily or permanently).

[0047] In a representative embodiment, the other network 112 may be a WLAN.

[0048] A WLAN in infrastructure basic service 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 to or interface with a distribution system (DS) or another type of wired / wireless network that carries traffic during and / or from the BSS. Traffic to a STA originating from outside the BSS may arrive through the AP and be delivered to the STA. Traffic originating from a STA to a destination outside the BSS may be sent to the AP for delivery to the respective destination. Traffic between STAs within a BSS may be sent through the AP, e.g., where a source STA may send traffic to the AP, and the AP may deliver the traffic to the destination STA. Traffic between STAs within a BSS may be considered and / or referred to as peer-to-peer traffic. Peer-to-peer traffic may be sent between (e.g., directly between) a source STA and a destination STA via direct link setup (DLS). In some representative embodiments, the DLS may use 802.11e DLS or 802.11z tunneled DLS (TDLS). A WLAN using an Independent BSS (IBSS) mode may not have an AP, and STAs within or using the IBSS (e.g., all of the STAs) may communicate directly with each other. The IBSS communication mode is sometimes referred to herein as an "ad hoc" communication mode.

[0049] When using the 802.11ac infrastructure mode of operation or a similar mode of operation, an AP may transmit beacons on a fixed channel, such as a primary channel. The primary channel may be a fixed width (e.g., a 20 MHz wide bandwidth) or a width dynamically set via signaling. The primary channel may be the operating channel of the BSS and may be used by STAs to establish a connection with the AP. In some representative embodiments, Carrier Sense Multiple Access with Collision Avoidance (CSMA / CA) may be implemented, for example, in an 802.11 system. In CSMA / CA, STAs (e.g., all STAs), including the AP, may sense the primary channel. If the primary channel is sensed / detected and / or determined to be busy by a particular STA, the particular STA may back off. One STA (e.g., only one station) may transmit at any given time in a given BSS.

[0050] High-throughput (HT) STAs may use 40 MHz wide channels for communication, for example, via a combination of a primary 20 MHz channel with adjacent or non-adjacent 20 MHz channels to form a 40 MHz wide channel.

[0051] A very high throughput (VHT) STA may support 20 MHz, 40 MHz, 80 MHz, and / or 160 MHz wide channels. A 40 MHz channel and / or an 80 MHz channel may be formed by combining contiguous 20 MHz channels. A 160 MHz channel may be formed by combining eight contiguous 20 MHz channels or by combining two non-contiguous 80 MHz channels, sometimes referred to as an 80+80 configuration. For the 80+80 configuration, after channel coding, the data may be passed through a segment parser that may split the data into two streams. Inverse fast Fourier transform (IFFT) processing and time-domain processing may be performed separately for each stream. The streams may be mapped onto two 80 MHz channels, and the data may be transmitted by the transmitting STA. At the receiver of the receiving STA, the operations described above for the 80+80 configuration may be reversed, and the combined data may be sent to the medium access control (MAC).

[0052] Sub-1 GHz operating modes are supported by 802.11af and 802.11ah. Channel operating bandwidths and carriers are reduced in 802.11af and 802.11ah relative to those used in 802.11n and 802.11ac. 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 embodiments, 802.11ah may support meter-type control / machine-type communications, such as MTC devices in macro coverage areas. MTC devices may have limited capabilities, including, for example, support for some and / or limited bandwidths (e.g., only support for them). MTC devices may include batteries with above-threshold battery life (e.g., to maintain very long battery life).

[0053] WLAN systems that may support multiple channels and channel bandwidths, such as 802.11n, 802.11ac, 802.11af, and 802.11ah, include a channel that may be designated as a primary channel. The primary channel may have a bandwidth equal to the largest common operating bandwidth supported by all STAs in the BSS. The bandwidth of the primary channel may be set and / or limited by a STA, among all STAs operating in the BSS, that supports the smallest bandwidth operating mode. In an 802.11ah example, the primary channel may be 1 MHz wide for a STA (e.g., an MTC-type device) that supports (e.g., only supports) the 1 MHz mode, even if the AP and other STAs in the BSS support 2 MHz, 4 MHz, 8 MHz, 16 MHz, and / or other channel bandwidth operating modes. Carrier sensing and / or network allocation vector (NAV) setting may depend on the status of the primary channel. For example, if a STA (that only supports 1 MHz operating mode) transmits to an AP such that the primary channel is busy, the entire available frequency band may be considered busy, even though most of the frequency band may remain idle and available for use.

[0054] In the United States, the available frequency bands that can be used by 802.11ah are 902 MHz to 928 MHz. In South Korea, the available frequency bands are 917.5 MHz to 923.5 MHz. In Japan, the available frequency bands are 916.5 MHz to 927.5 MHz. The total available bandwidth for 802.11ah is 6 MHz to 26 MHz, depending on the country code.

[0055] 1D is a system diagram illustrating the RAN 113 and the CN 115, according to one embodiment. As mentioned above, the RAN 113 may employ NR radio technology to communicate with the WTRUs 102a, 102b, 102c over the air interface 116. The RAN 113 may also be in communication with the CN 115.

[0056] The RAN 113 may include gNBs 180a, 180b, and 180c, although it will be appreciated that the RAN 113 may include any number of gNBs while remaining consistent with an embodiment. The gNBs 180a, 180b, and 180c may each include one or more transceivers for communicating with the WTRUs 102a, 102b, and 102c over the air interface 116. In an embodiment, the gNBs 180a, 180b, and 180c may implement MIMO technology. For example, the gNBs 180a and 180b may utilize beamforming to transmit signals to and / or receive signals from the WTRUs 102a, 102b, and 102c. Thus, the gNB 180a may transmit wireless signals to and / or receive wireless signals from the WTRU 102a using, for example, multiple antennas. In one embodiment, the gNBs 180a, 180b, 180c may implement carrier aggregation technology. For example, the gNB 180a may transmit multiple component carriers to the WTRU 102a (not shown). A subset of these component carriers may be on the unlicensed spectrum, while the remaining component carriers may be on the licensed spectrum. In one embodiment, the gNBs 180a, 180b, 180c may implement coordinated multi-point (CoMP) technology. For example, the WTRU 102a may receive coordinated transmissions from the gNBs 180a and 180b (and / or 180c).

[0057] The WTRUs 102a, 102b, 102c may communicate with the gNBs 180a, 180b, 180c using transmissions associated with scalable numerologies. For example, the OFDM symbol spacing and / or OFDM subcarrier spacing may be different for different transmissions, different cells, and / or different portions of the wireless transmission spectrum. The WTRUs 102a, 102b, 102c may communicate with the gNBs 180a, 180b, 180c using subframes or transmission time intervals (TTIs) of varying or scalable lengths (e.g., including varying numbers of OFDM symbols and / or varying lengths of absolute time duration).

[0058] The gNBs 180a, 180b, 180c may be configured to communicate with the WTRUs 102a, 102b, 102c in a standalone configuration and / or a non-standalone configuration. In a standalone configuration, the WTRUs 102a, 102b, 102c may communicate with the gNBs 180a, 180b, 180c without accessing another RAN (e.g., eNodeBs 160a, 160b, 160c). In a standalone configuration, the WTRUs 102a, 102b, 102c may utilize one or more of the gNBs 180a, 180b, 180c as mobility anchor points. In a standalone configuration, the WTRUs 102a, 102b, 102c may communicate with the gNBs 180a, 180b, 180c using signals in unlicensed bands. In a non-standalone configuration, the WTRUs 102a, 102b, 102c may communicate / connect with a gNB 180a, 180b, 180c while also communicating / connecting with another RAN, such as an eNodeB 160a, 160b, 160c. For example, the WTRUs 102a, 102b, 102c may implement the DC principle to communicate with one or more gNBs 180a, 180b, 180c and one or more eNodeBs 160a, 160b, 160c substantially simultaneously. In a non-standalone configuration, the eNodeBs 160a, 160b, 160c may act as mobility anchors for the WTRUs 102a, 102b, 102c, and the gNBs 180a, 180b, 180c may provide additional coverage and / or throughput for serving the WTRUs 102a, 102b, 102c.

[0059] Each of the gNBs 180a, 180b, 180c may be associated with a particular cell (not shown) and may be configured to handle radio resource management decisions, handover decisions, scheduling of users in the UL and / or DL, support for network slicing, dual connectivity, interworking between NR and E-UTRA, routing of user plane data to user plane functions (UPFs) 184a, 184b, routing of control plane information to access and mobility management functions (AMFs) 182a, 182b, etc. As shown in FIG. 1D, the gNBs 180a, 180b, 180c may communicate with one another via an Xn interface.

[0060] 1D 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. While each of the above elements is shown as part of the CN 115, it will be appreciated that any of these elements may be owned and / or operated by an entity other than the CN operator.

[0061] The AMF 182a, 182b may be connected to one or more of the gNBs 180a, 180b, 180c in the RAN 113 via an N2 interface and may act as a control node. For example, the AMF 182a, 182b may be responsible for authenticating users of the WTRUs 102a, 102b, 102c, supporting network slicing (e.g., handling different PDU sessions with different requirements), selecting a particular SMF 183a, 183b, managing registration areas, terminating NAS signaling, mobility management, etc. Network slicing may be used by the AMF 182a, 182b to customize the CN support of the WTRUs 102a, 102b, 102c based on the type of service being utilized by the WTRUs 102a, 102b, 102c. For example, different network slices may be established for different use cases, such as services relying on Ultra-Reliable Low Latency (URLLC) access, services relying on enhanced Massive Mobile Broadband (eMBB) access, services for Machine Type Communications (MTC) access, etc. The AMF 162 may provide a control plane function for switching between the 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.

[0062] The SMFs 183a, 183b may be connected to the AMFs 182a, 182b in the CN 115 via an N11 interface. The SMFs 183a, 183b may also be connected to the UPFs 184a, 184b in the CN 115 via an N4 interface. The SMFs 183a, 183b may select and control the UPFs 184a, 184b and configure the routing of traffic through the UPFs 184a, 184b. The SMFs 183a, 183b may perform other functions, such as managing and allocating UE IP addresses, managing PDU sessions, controlling policy enforcement and QoS, providing downlink data notification, etc. The PDU session type may be IP-based, non-IP-based, Ethernet-based, etc.

[0063] The UPFs 184a, 184b may be connected to one or more of the gNBs 180a, 180b, 180c in the RAN 113 via an N3 interface, which may provide the WTRUs 102a, 102b, 102c with access to packet-switched networks, such as the Internet 110, to facilitate communications between the WTRUs 102a, 102b, 102c and IP-enabled devices. The UPFs 184, 184b may perform other functions, such as routing and forwarding packets, enforcing user plane policies, supporting multi-homed PDU sessions, handling user plane QoS, buffering downlink packets, providing mobility anchoring, etc.

[0064] The CN 115 may facilitate communication with other networks. For example, the CN 115 may include or communicate with an IP gateway (e.g., an IP Multimedia Subsystem (IMS) server) that acts as an interface between the CN 115 and the PSTN 108. Additionally, the CN 115 may provide the WTRUs 102a, 102b, 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, the WTRUs 102a, 102b, 102c may be connected to the local data networks (DNs) 185a, 185b through the UPFs 184a, 184b via an N3 interface to the UPFs 184a, 184b and an N6 interface between the UPFs 184a, 184b and the DNs 185a, 185b.

[0065] 1A-1D and the corresponding description thereof, one or more, or all, of the functions described herein with respect to one or more of the WTRUs 102a-d, base stations 114a-b, eNodeBs 160a-c, MME 162, SGW 164, PGW 166, gNBs 180a-c, AMFs 182a-b, UPFs 184a-b, SMFs 183a-b, DNs 185a-b, and / or any other device(s) described herein may be performed by one or more emulation devices (not shown). The emulation devices may be one or more devices configured to emulate one or more, or all, of the functions described herein. For example, the emulation devices may be used to test other devices and / or to simulate network and / or WTRU functionality.

[0066] The emulation device may be designed to implement one or more tests of other devices in a laboratory environment and / or in a carrier network environment. For example, one or more emulation devices may perform one or more, or all, functions while fully or partially implemented and / or deployed as part of a wired and / or wireless communication network to test other devices in the communication network. One or more emulation devices may perform one or more, or all, functions while temporarily implemented / deployed as part of a wired and / or wireless communication network. The emulation device may be directly coupled to another device for testing purposes and / or may perform testing using over-the-air wireless communication.

[0067] One or more emulation devices may perform one or more functions, inclusive, while not being implemented / deployed as part of a wired and / or wireless communication network. For example, the emulation devices may be utilized in test labs and / or test scenarios in non-deployed (e.g., test) wired and / or wireless communication networks to implement testing of one or more components. One or more emulation devices may be test equipment. Direct RF coupling and / or wireless communication via RF circuitry (which may include, for example, one or more antennas) may be used by the emulation devices to transmit and / or receive data.

[0068] This application describes various aspects, including tools, features, examples, models, techniques, and the like. Many of these aspects are described with specificity and, at least to illustrate their individual characteristics, are described in a manner that may often be considered limiting. However, this is for clarity of description and does not limit the applicability or scope of the aspects. In fact, all of the different aspects may be combined and interchanged to provide further aspects. Furthermore, aspects may also be combined and interchanged with aspects described in previous applications.

[0069] Aspects described and contemplated in this application may be implemented in many different forms. While Figures 5-27 described herein may provide some examples, other examples are contemplated. The descriptions of Figures 5-27 are not intended to limit the breadth of implementations. At least one of the aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a generated or encoded bitstream. These and other aspects may be implemented as a method, an apparatus, a computer-readable storage medium having stored thereon instructions for encoding or decoding video data according to any of the described methods, and / or a computer-readable storage medium having stored thereon a bitstream generated according to any of the described methods.

[0070] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image," "picture," and "frame" may be used interchangeably.

[0071] Various methods are described herein, each of which includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined. Furthermore, terms such as “first,” “second,” etc. may be used in various examples to modify elements, components, steps, operations, etc., e.g., “first decoding” and “second decoding.” The use of such terms does not imply an ordering to the modified operations unless specifically required. Thus, in this example, the first decoding need not be performed before the second decoding, but may occur, for example, before, during, or in a time period overlapping with the second decoding.

[0072] Various methods and other aspects described in this application may be used to modify modules, e.g., decoding modules, of video encoder 200 and decoder 300 such as those shown in Figures 2 and 3. Furthermore, the subject matter disclosed herein may apply to any type, format, or version of video coding, whether described in a standard or recommendation, existing, or developed in the future, as well as any extensions to such standards and recommendations. Unless otherwise specified or technically precluded, aspects described in this application may be used individually or in combination.

[0073] In the examples described in this application, various numerical values ​​are used, such as the number of intra modes, video codec attributes (e.g., video codec version), intra-prediction direction angle, number of HOG bins, table size, number of candidates, block size, etc. These and other specific values ​​are for illustrative purposes, and the described aspects are not limited to these specific values.

[0074] 2 illustrates an exemplary video encoder. While variations of the exemplary encoder 200 are contemplated, the encoder 200 is described below for clarity without describing all possible variations.

[0075] Before being encoded, a video sequence may undergo encoding preprocessing (201), such as applying a color transformation to the input color picture (e.g., converting from RGB 4:4:4 to YCbCr 4:2:0) or performing a remapping of the input picture components to obtain a signal distribution more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the preprocessing and attached to the bitstream.

[0076] In encoder 200, pictures are coded by encoder elements as described below. The picture to be coded is partitioned (202) and processed in units, e.g., coding units (CUs). Each unit is coded, e.g., using either intra mode or inter mode. When a unit is coded in intra mode, it performs intra prediction (260). In inter mode, motion estimation (275) and motion compensation (270) are performed. The encoder determines (205) whether intra mode or inter mode should be used to code the unit, and indicates the intra / inter decision, e.g., by a prediction mode flag (e.g., indication). A prediction residual is calculated, e.g., by subtracting (210) the predicted block from the original image block.

[0077] The prediction residual is then transformed (225) and quantized (230). The quantized transform coefficients, as well as motion vectors and other syntax elements, such as picture partition information, are entropy coded (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., the residual is coded directly without applying the transform or quantization processes.

[0078] 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. Combining the decoded prediction residual with the predicted block (255) reconstructs an image block. An in-loop filter (265) is applied to the reconstructed picture to reduce coding artifacts, for example, by performing deblocking / sample adaptive offset (SAO) or adaptive loop filtering (ALF). The filtered image is stored in a reference picture buffer (280).

[0079] Figure 3 illustrates an example of a video decoder. In the exemplary decoder 300, a bitstream is decoded by decoder elements as described below. The video decoder 300 generally performs a decoding path that is the reverse of the encoding path shown in Figure 2. The encoder 200 also generally performs video decoding as part of encoding the video data.

[0080] In particular, the decoder's input includes a video bitstream, which may be generated by the video encoder 200. The bitstream is first entropy decoded (330) to obtain transform coefficients, prediction modes, motion vectors, and other coded information. Picture partition information indicates how the picture is partitioned. Thus, the decoder may divide the picture according to the decoded picture partition information (335). The transform coefficients are dequantized (340) and inverse transformed (350) to decode the prediction residual. Combining the decoded prediction residual with the predicted block (355) reconstructs an image block. The predicted block may be obtained from intra prediction (360) or motion-compensated prediction (i.e., inter prediction) (375) (370). An in-loop filter (365) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (380). In an example, the contents of the reference picture buffer 380 on the decoder 300 side (eg, for a given picture) may be identical to the contents of the reference picture buffer 280 on the encoder 200 side (eg, for the same picture).

[0081] The decoded picture may further undergo post-decoding processing (385), such as an inverse color conversion (e.g., YCbCr 4:2:0 to RGB 4:4:4 conversion) or inverse remapping, which performs the inverse of the remapping process performed in the pre-encoding processing (201). The post-decoding processing may use metadata derived in the pre-encoding processing and signaled in the bitstream. In one example, the decoded image (e.g., after application of an in-loop filter (365) and / or post-decoding processing (385), if post-decoding processing is used) may be sent to a display device for rendering to a user.

[0082] FIG. 4 illustrates an example of a system in which various aspects and examples described herein may be implemented. System 400 may be embodied as a device including various components described below and configured to perform one or more of the aspects described herein. 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, singly or in combination, may be embodied in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one example, processing elements and / or encoder / decoder elements of system 400 are distributed across multiple ICs and / or discrete components. In various examples, system 400 is communicatively coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various examples, the system 400 is configured to implement one or more of the aspects described herein.

[0083] The system 400 includes at least one processor 410 configured to execute instructions loaded therein, for example, to implement various aspects described herein. The processor 410 may include embedded memory, input / output interfaces, and various other circuits known in the art. The system 400 includes at least one memory 420 (e.g., a volatile memory device and / or a non-volatile memory device). The system 400 includes a storage device 440, which 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, magnetic disk drives, and / or optical disk drives. The storage device 440 may include, but is not limited to, for example, an internal storage device, an attached storage device (including removable and non-removable storage devices), and / or a network-accessible storage device.

[0084] System 400 includes, for example, an encoder / decoder module 430 configured to process data to provide encoded or decoded video, which may include its own processor and memory. Encoder / decoder module 430 represents a module(s) that may be included in a device for performing encoding and / or decoding functions. As is known, a device may include one or both of an encoding module and a decoding module. Furthermore, 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, as is known to those skilled in the art.

[0085] Program code to be loaded onto the processor 410 or the encoder / decoder 430 to implement various aspects described herein may be stored in the storage device 440 and then loaded onto the memory 420 for execution by the processor 410. According to various examples, one or more of the processor 410, the memory 420, the storage device 440, and the encoder / decoder module 430 may store one or more of various items during performance of the processes described herein. Such stored items may include, but are not limited to, input video, decoded video or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results from processing equations, expressions, operations, and operational logic.

[0086] In some examples, memory internal to the processor 410 and / or the encoder / decoder module 430 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other examples, memory external to the processing device (e.g., the processing device may be either the processor 410 or the encoder / decoder module 430) is used for one or more of these functions. The external memory may be the memory 420 and / or the storage device 440, e.g., dynamic volatile memory and / or non-volatile flash memory. In some examples, external non-volatile flash memory is used to store an operating system, e.g., of a television. In at least one example, high-speed external dynamic volatile memory, such as RAM, is used as working memory for video encoding and decoding operations.

[0087] Input to the elements of system 400 may be provided through various input devices, as shown in block 445. Such input devices include, but are not limited to, (i) a radio frequency (RF) portion that receives an RF signal, e.g., transmitted over the air by a broadcaster, (ii) a component (COMP) input terminal (or set of COMP input terminals), (iii) a universal serial bus (USB) input terminal, and / or (iv) a high-definition multimedia interface (HDMI) input terminal. Other examples not shown in FIG. 4 include composite video.

[0088] In various examples, the input devices of block 445 have associated respective input processing elements known in the art. For example, the RF section may be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal or band-limiting a signal to a band of frequencies), (ii) downconverting the selected signal, (iii) further band-limiting to a narrower band of frequencies to select a signal frequency band, which may be referred to as a channel in certain examples (for example), (iv) demodulating the downconverted, band-limited signal, (v) performing error correction, and / or (vi) demultiplexing to select a desired stream of data packets. The RF section in various examples includes one or more elements for performing these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner for performing various of these functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or near-baseband frequency) or to baseband. In one set-top box example, the RF section and its associated input processing elements perform frequency selection by receiving, filtering, downconverting, and filtering again to a desired frequency band an RF signal transmitted over a wired (e.g., cable) medium. Various examples rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions. Adding elements can include inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various examples, the RF section includes an antenna.

[0089] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting system 400 to other electronic devices over USB and / or HDMI connections. It should be understood that various aspects of the input processing, e.g., Reed-Solomon error correction, may be implemented, for example, in a separate input processing IC or within processor 410, as desired. Similarly, aspects of the USB or HDMI interface processing may be implemented, for example, in a separate interface IC or within processor 410, as desired. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including processor 410 and encoder / decoder 430, operating in combination with memory and storage elements, to process the data stream as desired, for example, for presentation on an output device.

[0090] The various elements of system 400 may be provided within an integrated housing in which the various elements may be interconnected and transmit data between them using a suitable connection arrangement 425, for example, an internal bus as known in the art, including an inter-IC (I2C) bus, wiring, and printed circuit boards.

[0091] System 400 includes a communication interface 450 that enables communication with other devices over a communication channel 460. Communication interface 450 may include, but is not limited to, a transceiver configured to transmit and receive data over communication channel 460. Communication interface 450 may include, but is not limited to, a modem or a network card, and communication channel 460 may be implemented within a wired and / or wireless medium, for example.

[0092] In various examples, data is streamed or otherwise provided to system 400 using a wireless network, such as a Wi-Fi network, e.g., IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these examples is received via communication channel 460 and communication interface 450 adapted for Wi-Fi communication. Communication channel 460 in these examples is typically connected to an access point or router that provides access to external networks, including the Internet, to enable streaming applications and other over-the-top communications. Another example provides streamed data to system 400 using a set-top box that delivers data via an HDMI connection in input block 445. Yet another example provides streamed data to system 400 using an RF connection in input block 445. As noted above, various examples provide data in a non-streaming manner. Additionally, various examples use wireless networks other than Wi-Fi, such as a cellular network or a Bluetooth® network.

[0093] The system 400 can provide output signals to various output devices, including a display 475, speakers 485, and other peripheral devices 495. Various example displays 475 include, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 475 may be for a television, a tablet, a laptop, a cell phone, or other device. The display 475 may also be integrated with other components (e.g., as in the case of a smartphone) or may be separate (e.g., an external monitor for a laptop). The other peripheral devices 495, in various examples, include one or more of a standalone digital video disc (or digital versatile disc) (DVD for both terms), a disc player, a stereo system, and / or a lighting system. Various examples use one or more peripheral devices 495 to provide functionality based on the output of the system 400. For example, a disc player performs the function of playing the output of the system 400.

[0094] In various examples, control signals are communicated between system 400 and display 475, speakers 485, or other peripheral devices 495 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable inter-device control with or without user intervention. Output devices may be communicatively coupled to system 400 via dedicated connections through respective interfaces 470, 480, and 490. Alternatively, output devices may be connected to system 400 using communication channel 460 via communication interface 450. Display 475 and speakers 485 may be integrated into a single unit with other components of system 400 in an electronic device, such as, for example, a television. In various examples, display interface 470 includes a display driver, such as, for example, a timing controller (T Con) chip.

[0095] Display 475 and speakers 485 may alternatively be separate from one or more of the other components, for example, if the RF portion of input 445 is part of a separate set-top box. In various examples where display 475 and speakers 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.

[0096] The examples may be performed by computer software implemented by the processor 410, by hardware, or by a combination of hardware and software. As a non-limiting example, the examples may be implemented by one or more integrated circuits. The memory 420 may be of any type suitable for the technical environment and may be implemented using any suitable data storage technology, such as, by way of non-limiting examples, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 410 may be of any type suitable for the technical environment and may include, by way of non-limiting examples, one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.

[0097] Various implementations involve decoding. As used herein, "decoding" can encompass all or part of the processes performed on a received encoded sequence to produce, for example, a final output suitable for display. In various examples, such processes include processes typically performed by a decoder, such as one or more of entropy decoding, inverse quantization, inverse transform, and differential decoding. In various examples, such processes also or alternatively include processes performed by decoders of various implementations described herein, such as identifying, for a current block, intra-predicted neighboring blocks spaced at least one block from the current block, determining intra-prediction modes of the intra-predicted neighboring blocks, and decoding the current block based on the intra-prediction modes of the intra-predicted neighboring blocks.

[0098] As a further example, in one example, "decoding" refers only to entropy decoding, in another example, "decoding" refers only to differential decoding, and in another example, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or to the broader decoding process as a whole will be clear based on the context of the detailed description and will be well understood by one of ordinary skill in the art.

[0099] Various implementations involve encoding. Similar to the above description of "decoding," "encoding" as used herein can encompass all or part of the processes performed on an input video sequence to, for example, produce an encoded bitstream. In various examples, such processes include one or more of processes typically performed by an encoder, such as partitioning, differential encoding, transforming, quantizing, and entropy encoding. In various examples, such processes also or alternatively include processes performed by encoders of various implementations described herein, such as identifying, for a current block, intra-predicted neighboring blocks spaced at least one block from the current block, determining intra-prediction modes of the intra-predicted neighboring blocks, and encoding the current block based on the intra-prediction modes of the intra-predicted neighboring blocks.

[0100] As a further example, in one example, "encoding" refers only to entropy encoding, in another example, "encoding" refers only to differential encoding, and in another example, "encoding" refers to a combination of differential and entropy encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or to the broader encoding process as a whole will be clear based on the context of the detailed description and will be well understood by one of ordinary skill in the art.

[0101] It should be noted that syntax elements used herein, such as indications and / or flags (e.g., mip_flag, dimd_flag, timd_flag, sgpm_flag, isp_flag, hipm_flag), indexes (e.g., mip_mode, sgpm_cand_idx, mrl_index, hipm_idx), etc., are descriptive terms. As described herein, the terms flag and indication may be used interchangeably. Thus, they do not preclude the use of other syntax element names.

[0102] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of the corresponding method / process.

[0103] Implementations and aspects described herein may be implemented in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even if discussed only in the context of a single form of implementation (e.g., discussed only as a method), the implementation of the discussed features may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. A method may be implemented in, for example, a processor, which generally refers to a processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.

[0104] References to "one example" or "one example" or "one implementation" or "an implementation," as well as other variations thereof, mean that a particular feature, structure, characteristic, etc. described in connection with an example is included in at least one example. Thus, appearances of the phrases "in one example" or "in one example" or "in one implementation" or "in one implementation," as well as any other variations thereof, appearing in various places throughout this application are not necessarily all referring to the same example.

[0105] Additionally, the application may refer to "determining" various information. Determining information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from memory. Obtaining may include receiving, retrieving, constructing, generating, and / or determining.

[0106] Additionally, the application may refer to "accessing" various information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0107] Additionally, the application may refer to "receiving" various information. Receiving, like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from memory). Furthermore, "receiving" generally involves in some manner, for example, during an operation such as storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.

[0108] For example, it should be appreciated that the use of any of " / ", "and / or", and "at least one of" in the cases of "A / B", "A and / or B", and "at least one of A and B" is intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (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 language is intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be expanded as many times as the items listed, as would be apparent to one skilled in the art.

[0109] Also, the word "signal" as used herein particularly refers to indicating something to a corresponding decoder. Encoder signals may include, for example, flags (e.g., mip_flag, dimd_flag, timd_flag, sgpm_flag, isp_flag, hipm_flag), indices (e.g., mip_mode, sgpm_cand_idx, mrl_index, hipm_idx), etc. In this way, in one example, the same parameters are used on both the encoder and decoder sides. Thus, for example, the encoder can transmit specific parameters to the decoder so that the decoder can use the same specific parameters (explicit signaling). Conversely, if the decoder already has specific parameters as well as others, signaling can be used without transmission to simply enable the decoder to know and select the specific parameters (implicit signaling). By avoiding the transmission of any actual functions, bit savings are realized in various examples. It should be appreciated that signaling may be accomplished in a variety of ways. For example, in various examples, one or more syntax elements, flags, etc. are used to signal information to a corresponding decoder. While the above relates to the verb form of the word "signal," the word "signal" may also be used as a noun herein.

[0110] As will be apparent to those skilled in the art, implementations may produce a variety of signals formatted to carry information, which may be stored or transmitted, for example. The information may include, for example, instructions for performing a method or data produced by one of the described implementations. For example, a signal may be formatted to carry a bit stream of the described examples. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. The signal may be transmitted over a variety of different wired or wireless links, as is known. The signal may be stored in, accessed from, or received from a processor-readable medium.

[0111] Many examples are described herein. Example features may be provided alone or in any combination across various claim categories and types. Furthermore, examples may include one or more of the features, devices, or aspects described herein, alone or in any combination across various claim categories and types. For example, features described herein may be implemented in a bitstream or signal including information generated as described herein. The information may enable a decoder to decode the bitstream, encoder, bitstream, and / or decoder according to any of the described embodiments. For example, features described herein may be implemented by creating and / or transmitting and / or receiving and / or decoding a bitstream or signal. For example, features described herein may be implemented as a method, process, apparatus, medium storing instructions, medium storing data, or signal. For example, features described herein may be implemented by a TV, set-top box, cell phone, tablet, or other electronic device that performs decoding. A TV, set-top box, cell phone, tablet, or other electronic device may display (e.g., using a monitor, screen, or other type of display) the resulting image (e.g., an image from the residual reconstruction of the video bitstream). A TV, set-top box, cell phone, tablet, or other electronic device may receive a signal containing the encoded image and perform decoding.

[0112] Video compression may be implemented using an intra-prediction mode, such as a history-based intra-prediction mode (HIPM). An HIPM table may be constructed as described herein. The HIPM may be used to determine luma / chroma components. The HIPM may modify compression efficiency, for example, by reducing bitrate while maintaining quality and / or improving compressed video quality while maintaining bitrate.

[0113] Video codecs may use intra prediction to remove correlation within local regions of a picture. Intra prediction may be implemented based on the assumption that the texture of a picture region is similar to the texture in the local neighborhood, allowing prediction. Direct neighboring samples may be employed for prediction. The direct neighboring samples may include, for example, samples from the sample line above the current block and samples from the last column of the reconstructed block to the left of the current block.

[0114] Intra-prediction samples may be generated using reference samples obtained from reconstructed samples of neighboring blocks.

[0115] 5 shows an example of generating intra-prediction samples using reference samples obtained from reconstructed samples of neighboring blocks. As shown in FIG. 5, for a block of width W and height H, the reference samples may consist of 2×H reconstructed samples to the left of the block, a reconstructed sample to the top left, and 2×W reference samples above the block. Unavailable reference samples may be generated by padding (e.g., a padding mechanism).

[0116] Intra-mode coding may be implemented, for example, with 67 intra-prediction modes. Figure 6 shows an example of intra-prediction modes. Any edge direction presented in natural video may be captured, for example, using several intra-prediction modes. For example, 33 directional intra-modes may be used. For example, the number of directional intra-modes may be 65, as shown in Figure 6. The same number of PLANAR and DC modes may be used (e.g., across video codecs). Dense directional intra-prediction modes may be applied for (e.g., all) block sizes and / or for both luma and chrominance intra-prediction.

[0117] In an example, for instance, in the case of a square CU, as shown in FIG. 6 for example, angular intra prediction modes 2 to 66 can be used. The prediction modes 2 to 66 can correspond to angular intra prediction directions defined from 45 degrees to -135 degrees in the clockwise direction.

[0118] In an example, one or more (e.g., several) angular intra prediction modes can be adaptively replaced with a wide angular intra prediction mode (e.g., for intra prediction for non-square blocks). As shown by the dashed arrows in FIG. 6, wide angle modes beyond the lower left direction mode can be indexed from -14 to -1. Wide angle modes beyond the upper right direction can be indexed from 67 to 80. The wide angle modes can replace several (e.g., an equal number of) angle modes in the opposite direction for intra prediction for one or more (e.g., several) flat blocks (W > H) and / or tall blocks (W < H) for example.

[0119] Matrix weighted Intra Prediction (MIP) can be performed. MIP can predict samples of a rectangular block of width W and height H by taking an input from, for example, one line of the H reconstructed neighboring boundary samples to the left of the block and one line of the W reconstructed neighboring boundary samples above the block. Unavailable reconstructed samples can be generated by intra prediction.

[0120] 7 shows an example of generating an intra prediction signal using MIP. As shown in FIG. 7, the generation of the prediction signal may be based on one or more of the following steps: averaging, matrix-vector multiplication, or linear interpolation. The intra prediction signal may indicate whether the MIP mode is applicable. For example, an indication (e.g., mip_flag) may be signaled (e.g., for an intra-coded block) to indicate whether the MIP mode should be applied.

[0121] 8 illustrates an example of generating an intra-mode predictor for a predictor block with decoder-side intra-mode derivation (DIMD). As shown in FIG. 8, DIMD can be used to derive an intra-mode used to code a CU. DIMD can be used to derive an intra-mode (e.g., IPM) that is likely to be the best (e.g., two) intra-prediction modes for predicting the current CU, e.g., from a Histogram of Oriented Gradients (HOG) calculated from neighboring pixels of the current block. dimd_1st and IPM dimd_2nd ) The DIMD predictor may be combined with a planar mode predictor, e.g., with weights derived from HOG, in a template, as shown in FIG.

[0122] 9A and 9B show an example of deriving DIMD prediction modes from HOG bins. As shown in FIG. 9A and 9B, DIMD intra-prediction modes may be derived from gradients in a template for the current CU. An HOG with 65 bins (e.g., corresponding to 65 directional intra-prediction modes) may be initialized to 0. The procedure may be implemented for the decoded reference samples in the center row or column of a template of three rows of decoded reference samples above the current CU and three columns of decoded reference samples to its left.

[0123] As shown by the example in Figures 9A and 9B, this procedure can be implemented using a 3x3 horizontal Sobel filter and a 3x3 vertical Sobel filter. The filters can be centered on the decoded reference sample. The filters are based on the horizontal gradient G HOR and vertical gradient G VER G HOR and G VER The sign of can indicate in which of the four ranges of directions the "target" direction is found. The target direction is determined by the horizontal component G HOR and the vertical component G VER The anchor direction can be perpendicular to the gradient G of |G VER |>|G HOR The anchor direction may correspond to the horizontal direction if |G HOR |≧|G VER If |, it may correspond to the vertical direction. The target direction may, for example, form an angle θ with respect to the anchor direction. The index i of the intra prediction mode (e.g., the direction may be closest to the target direction) may be found, for example, by discretizing a scaled version of tan(θ). The HOG bin for index i is |G HOR |+|G VER The index of the (e.g., two) largest HOG bins may be incremented by |. ... derived intra prediction modes (e.g., IPM dimd_1st and IPM dimd_2nd ) For example, an indication (e.g., dimd_flag) may be signaled (e.g., for an intra-coded block) to indicate whether DIMD mode should be applied or not.

[0124] The intra mode used to code a CU may be derived using, for example, fusion for template-based intra mode derivation (TIMD). FIG. 10 shows an example of TIMD. As shown in FIG. 10, the sum of absolute transformed differences (SATD) between the predicted sample and the reconstructed sample of the template may be calculated for the intra prediction mode in the most probable mode (MPM) list. The current CU size may be W×H. The template (e.g., indicated by the diagonal line pattern in FIG. 10) may include an already reconstructed sample of size L1×H on the left and an already reconstructed sample of size W×L2 above. The prediction of the template may be obtained (e.g., for the intra prediction mode) from a reference sample (e.g., the gray shaded area shown in FIG. 10) located at the reference of the template. The first two intra prediction modes with the smallest SATD may be selected. The two intra prediction modes may be retained from the first pass of the test involving the MPM list supplemented with the default mode. For example, if the intra-prediction mode is neither planar nor DC, the TIMD may test the two closest extended directional intra-prediction modes (e.g., with respect to the predicted SATD) for the two (e.g., either of the two) retained modes. The set of directional intra-prediction modes for the TIMD may be, for example, 129 (instead of, for example, 65), which may be visualized by inserting directions between the solid black arrows in FIG. 6. The set of possible intra-prediction modes derived via the TIMD may, for example, collect 131 modes. The selected intra-prediction mode (e.g., TIMD 1st and TIMD 2nd ) are the final two predictors used, e.g., SATD IPM_timd_2nd <2*SATD IPM_timd_1st The weights can be fused with the weights under the condition that timd_1st and IPM timd_2nd ) SATD. The first intra prediction mode (e.g., only the first intra prediction mode) (e.g., IPMtimd_1st ) is not the case (e.g., SATD IPM_timd_2nd <2*SATD IPM_timd_1st is false).

[0125] For example, an indication (eg, timd_flag) may be signaled (eg, for an intra-coded block) to indicate whether TIMD mode should be applied or not.

[0126] A spatial geometric partitioning mode (SGPM) may be used for intra-coding. The SGPM may partition a coding block into multiple (e.g., two) parts. The SGPM may generate multiple (e.g., two) corresponding intra-prediction modes.

[0127] 11A and 11B show an example of an SGPM. FIG. 11A shows an example of an SGPM block partitioned (e.g., according to partition modes) into multiple (e.g., two) parts, where the parts may be associated with intra-prediction modes. In an example, 26 predefined partition modes may be used. An intra-prediction mode (IPM) list may be derived for the parts (e.g., for the partition modes). The IPM list size may be, for example, 3. Possible combinations of one partition mode and two intra-prediction modes in the IPM list may be considered as SGPM candidates. Candidate indices effectively used for coding may be signaled in the bitstream.

[0128] As shown in FIG. 11B, a template may be used to generate a candidate list. The shape of the template may be the same as the TIMD, and the template may include a left already-reconstructed sample of size L1×H and an upper already-reconstructed sample of size W×L2. Predictions may be generated for the template, for example, for possible combinations of one partition mode and two intra-prediction modes, using partition weights extended to the template. The combinations may be ranked in ascending order of their SATD between the prediction and reconstruction of the template. The length of the candidate list may be set equal to 16. The candidates may be considered as the most probable SGPM combinations of the current block. The encoder and decoder may build the same candidate list based on the template.

[0129] For an intra-coded block, an indication (e.g., sgpm_flag) may be signaled to indicate whether SGPM should be applied. For example, an SGPM candidate (e.g., sgpm_cand_idx) may be signaled, for example, on the condition that sgpm_flag is true, to specify which combination of one partition mode and two intra-prediction modes is used, e.g., which SGPM candidate in a candidate list is used for coding.

[0130] Multiple reference line (MRL) intra prediction may use more reference lines for intra prediction. MRL prediction mode may be useful for texture patterns with sharp and strongly oriented edges. Non-adjacent reference lines may be beneficial for texture patterns with (e.g., primarily) sharp and strongly oriented edges. MRL prediction mode may be less useful when the texture pattern is smooth.

[0131] Figure 12 shows an example of MRL intra prediction. In Figure 12, an example of four reference lines is provided, where samples of segments A and F are not fetched from reconstructed neighboring samples, but instead are padded with the nearest samples from segments B and E, respectively. In an example (e.g., HEVC), intra picture prediction may use the nearest reference line (e.g., reference line 0). In an example (e.g., VVC), MRL intra prediction may use two additional lines (e.g., reference line 1 and reference line 2). The index (e.g., mrl_idx) of the selected reference line(s) may be signaled and used, for example, to generate an intra predictor.

[0132] An intra sub-partition (ISP) may be used to divide a luma intra-predicted block vertically or horizontally into two sub-partitions (e.g., FIG. 13A) or four sub-partitions (e.g., FIG. 13B). The division may be performed based on the block size.

[0133] 13A and 13B show an example of ISP. Figures 13A and 13B show examples of various (e.g., two) subdivision possibilities. The reconstructed sample values ​​of a subpartition may be used to generate a prediction for the next subpartition. The subpartitions may then be processed. A subpartition (e.g., all subpartitions) may meet a condition (e.g., having at least 16 samples). A subpartition (e.g., all subpartitions) may share the same intra-mode. In one example of ISP mode, all (e.g., 67) intra-modes may be enabled.

[0134] For example, an indication (e.g., isp_flag) may be signaled for an intra-coded block to indicate whether ISP should be applied. For example, provided that isp_flag is true, an ISP mode indication (e.g., isp_mode) may be signaled to specify, for example, vertical or horizontal separation.

[0135] An intra-prediction mode may be signaled. Figure 14 shows an example of signaling an intra-prediction mode selected to predict the luma component of a current CU. Figure 14 shows example syntax elements associated with DIMD, MIP, TIMD, SGPM, MRL, ISP, and other intra-prediction modes (e.g., PLANAR, DC, and angular intra-prediction modes). Figure 14 illustrates signaling of an intra-prediction mode selected to predict a current CU at the encoder side. The same signaling shown in Figure 14 may be applied at the decoder side. The example in Figure 14 does not show, for example, BDPCM, template-based intra-prediction (TMP), intra-block copy (IBC), and palette, because they are activated for a particular video sequence, e.g., screen content.

[0136] As shown in FIG. 14, an indication (e.g., dimd_flag) indicating whether DIMD mode is applied may be signaled (e.g., first). For example, if DIMD is signaled as not applied, an indication (e.g., mip_flag) indicating whether MIP mode may be applied may be signaled (e.g., next). For MIP coding, the mode may signal multiple (e.g., two) separate syntax elements (e.g., indications). An indication (e.g., mip_transpose_flag) determining whether transposed MIP mode should be used may be signaled. An index (e.g., mip_mode) may be signaled to specify which MIP mode should be applied. The index (e.g., mip_mode) may be signaled, for example, using a truncated binary code. For example, if MIP is not applied, an indication (e.g., timd_flag) indicating whether TIMD mode is applied may be (e.g., subsequently) signaled. For example, if TIMD is not applied, an indication (e.g., sgpm_flag) indicating whether SGPM mode is applied may be signaled. An index (e.g., sgpm_cand_idx) may be signaled to specify which combination of one partition mode and two intra prediction modes is used. For example, if MIP and SGPM are signaled as not applied, an index (e.g., mrl_index) may be signaled to indicate which reference line should be used. For example, if neighboring reference lines are applied (e.g., if mrl_index is 0), an indication (e.g., isp_flag) may be signaled to indicate whether ISP is applied. For example, if / when isp_flag is signaled as true, a syntax element (eg, isp_mode) may be signaled to indicate whether horizontal or vertical separation applies for ISP mode.

[0137] Intra prediction modes enabled for chroma components may include, for example, planar, horizontal and vertical modes (e.g., HOR_IDX, VER_IDX), DC, three cross component linear model (CCLM) modes (e.g., CCLM_LT, CCLM_L, and CCLM_T), three multi-model linear model (MMLM) modes (e.g., MMLM_LT, MMLM_L, and MMLM_T), DIMD, and direct mode (DM) from collocated luma blocks.

[0138] A most probable mode (MPM) list may be implemented. For example, if the intra-prediction mode selected to predict the current CU is not DIMD, MIP mode, TIMD, or SGPM (e.g., if the intra-prediction mode is an intra-prediction mode), an MPM list-based signaling scheme may be used to efficiently code a mode (e.g., an optimal mode) with less signaling overhead.

[0139] 15A and 15B show an example of an MPM list. The MPM list may include (e.g., be decomposed into) a list of (e.g., six) primary MPMs (PMPMs) and a list of (e.g., six) secondary MPMs (SMPMs). The MPM list may be built up, for example, by adding candidate intra-prediction mode indexes (e.g., sequentially) from the most likely to be the selected intra-prediction mode for predicting the current CU to the least likely, as shown in FIG. 15A and 15B.

[0140] The first entry may be a planar mode, as shown in Figures 15A and 15B. The planar mode may be added (e.g., inserted into) the list of MPMs. In an example, the planar mode may not be added. The MRL may not provide coding gain if / when the intra-prediction mode is a planar mode, for example, because the planar mode may be used for smooth areas. For example, if mrl_index is not 0, the planar mode may be excluded as the (e.g., first) MPM entry, and / or the filled entry in the SMPM may not be used.

[0141] As shown in Figures 15A and 15B, the remaining entries may be obtained, for example, from the intra modes of the top (A), left (L), bottom-left (BL), top-right (AR), and top-left (AL) neighboring blocks, for example, in consecutive order. Figure 16 shows an example of neighboring blocks relative to a current block. The neighboring blocks may be adjacent to the current block. The locations of the neighboring blocks may be shown by the example in Figure 16. The order for inserting the intra modes of the neighboring blocks into the MPM list may start from the top neighboring intra mode. The order for inserting the top and left neighboring intra modes may be swapped, for example, when the rectangular block is horizontally oriented, for example, when the width is greater than the height.

[0142] One or more (e.g., two) directional modes (e.g., IPM) generated by the DIMD dimd_1st and / or IPM dimd_2nd) may be inserted into the MPM list, for example, if there are one or more (e.g., several) empty entries after adding spatially neighboring intra-prediction mode candidates. The first two available directional modes of a neighboring block (e.g., referred to as "derived modes" for simplicity) and / or directional modes with added offsets (e.g., ±1, ±2, ±3, ±4) from one or more predefined default modes may (e.g., also) be included in the MPM list. The default mode list may be defined as {DC_IDX, VER_IDX, HOR_IDX, VER_IDX-4, VER_IDX+4, 14, 22, 42, 58, 10, 26, 38, 62, 6, 30, 34, 66, 2, 48, 52, 16}. In an example, DC_IDX=1, VER_IDX=50, and / or HOR_IDX=18.

[0143] A redundancy check may be performed on the list of MPMs (e.g., to prevent the list of MPMs from containing two identical intra-prediction mode indices). For example, slots with indexes 0 to i-1 in the MPM list may already be filled. A candidate intra-prediction mode may be skipped, for example, if the current candidate intra-prediction mode index is already present in the current generic list of the MPM. The next candidate intra-prediction mode may be inserted, for example, at slot with index i if the next candidate intra-prediction mode is not present in the generic list of the MPM. The current intra-prediction mode index may be inserted (e.g., if not) at slot with index i, and the next candidate intra-prediction mode may be inserted, for example, at slot with index i+1 if it is not present in the generic list of the MPM.

[0144] History-based motion vector prediction (HMVP) may be implemented. HMVP merge candidates may be added to a merge list, for example, after spatial MVP and TMVP. Motion information of previously coded blocks may be stored in a table and used as the MVP for the current CU. A table with multiple HMVP candidates may be maintained during the encoding / decoding process. The table may be reset (e.g., emptied), for example, if / when a new CTU row is encountered. The associated motion information may be added to the last entry of the table as a new HMVP candidate, for example, if / when there is a non-subblock inter-coded CU.

[0145] The HMVP table size S may be set (e.g., to 6) to indicate how many (e.g., up to 6) HMVP candidates can be added to the table. A constrained first-in-first-out (FIFO) rule may be utilized, for example, when inserting a new motion candidate into the table. A redundancy check may be applied (e.g., first) to determine whether there is an identical HMVP in the table. The identical HMVP (e.g., if found) may be removed from the table, a (e.g., subsequent) HMVP candidate may be moved forward, and the identical HMVP may be inserted as the last entry in the table.

[0146] HMVP candidates may be used in the merge candidate list construction process. The most recent (e.g., several) HMVP candidates in the table may be examined in order and inserted into the candidate list after the TMVP candidate, as shown by example in Figure 17A. Redundancy checks may be applied to HMVP candidates for spatial or temporal merge candidates.

[0147] Figure 17A shows an example of merge candidate list construction using HMVP candidates. The number of redundancy check operations can be reduced, for example, by performing redundancy checks on the last two entries in the table for the top (A) and left (L) spatial candidates, respectively (e.g., as shown in Figure 16).

[0148] The number of redundancy checking operations can be reduced, for example, by terminating the merge candidate list construction process from HMVP if / when the total number of available merge candidates reaches the maximum allowed merge candidates - 1.

[0149] HMVP candidates can be used in the AMVP candidate list construction process. The first several HMVP candidates in the table can be examined in order and inserted into the candidate list after the TMVP candidates, for example, as shown in Figure 17B. Figure 17B shows an example of AMVP candidate list construction using HMVP candidates.

[0150] Intra prediction can be used as a basic coding tool in hybrid video coding. Spatial redundancy elimination can support the success of intra coding. An increased number of intra prediction modes can improve compression efficiency. Intra prediction modes can be deployed based on the assumption that correlation may exist between the current block and its adjacent / nearest neighboring blocks. There may be correlation between non-adjacent similar blocks and the current block.

[0151] The current block and its adjacent neighboring blocks may belong to the same object, e.g., have similar texture, but a (e.g., one) block may be more correlated with non-adjacent blocks, e.g., due to object occlusion.

[0152] An example of object occlusion is shown in Figure 18. As shown by the example in Figure 18, the horse's body, indicated at 101 and 103, is occluded by the rider's legs 102.

[0153] Correlation with non-adjacent blocks can be exploited, for example, by fetching intra-prediction information from the non-adjacent blocks. Fetching non-adjacent blocks can incur complexity overhead in terms of memory access and line buffer size, for example, for hardware implementation. Fetching non-adjacent blocks can be addressed, for example, by creating / using a (e.g., limited) buffer for storing previously coded intra-prediction information (e.g., including non-adjacent block information).

[0154] HMVP may be applied to inter-coded blocks, which may add non-local motion information of previously coded blocks into the limited table used for the current block. However, HMVP may also be applied for intra-coded blocks.

[0155] A history-based intra-prediction mode (HIPM) may be implemented. The intra-prediction modes of a previous intra-coded (e.g., intra-predicted) neighboring block, which may be spaced a block from the current block (e.g., not adjacent to the current block, not directly adjacent to the current block, etc.), may be treated as HIPM candidates. One or more (e.g., multiple) HIPM candidates may be stored in an HIPM table (e.g., the HIPM table may include multiple HIPM candidates). The HIPM table may be maintained during the encoding / decoding process (e.g., on the fly). The HIPM candidate(s) (e.g., intra-prediction modes of intra-predicted neighboring blocks) may be utilized in the MPM list construction process and / or may be utilized as luma / chrominance intra-modes for coding the block. For example, an MPM list associated with the current block may be obtained based on the HIPM table. The current block may be processed (e.g., encoded and / or decoded) based on the MPM list. A blend of the HIPM candidates may be utilized as the luma / chrominance intra-modes for coding the block.

[0156] Correlation between a current block and its non-adjacent similar blocks can be utilized to improve intra prediction. HIPM is described herein, including the principles of how HIPM works, the process of how HIPM candidates should be constructed in the HIPM table, and how HIPM should be utilized in the intra prediction candidate construction process (e.g., including as MPM candidates and / or as luma / chrominance intra modes), and fusion of HIPM candidates can be performed.

[0157] The current block and its adjacent neighboring blocks may be correlated. Blocks may be more correlated with non-adjacent blocks, for example, in the case of object occlusion.

[0158] HIPM may search for correlations between the current block and its non-adjacent similar blocks. Intra-prediction modes of intra-coded blocks that may be separated from the current block by at least one block (e.g., not adjacent to the current block, distant from the current block, far away from the current block, etc.) may be treated as HIPM candidates. For the current block, intra-predicted neighboring blocks that are separated by blocks from the current block may be identified (e.g., by a video encoder and / or decoder). Intra-prediction modes of the intra-predicted neighboring blocks may be determined. The current block may be processed (encoded and / or decoded) based on the intra-prediction modes of the intra-predicted neighboring blocks. Multiple HIPM candidates may be stored (e.g., in a limited number) in a table sometimes referred to as a HIPM table. The table may be maintained (e.g., on the fly) during the encoding / decoding process.

[0159] The HIPM table may be reset (e.g., emptied) when, for example, starting to code / decode a new CTU. For example, when there is an intra-coded block (e.g., not MIP / CCLM / MMLM), the associated intra-prediction mode(s) may be added to a designated entry (e.g., the last entry) of the table as a new HIPM candidate. An example of an overall coding flow is shown in Figure 19.

[0160] 19 shows an example of HIPM coding. The HIPM table size may be set to a (e.g., predefined) value S, which may indicate that up to S HIPM candidates may be added to the table. There may be more than S HIPM candidates from previously coded blocks. A FIFO rule may be applied so that the table contains the most recent S previously coded intra-prediction mode candidates.

[0161] The HIPM table may include multiple HIPM candidates. For example, when adding an HIPM to the HIPM table, a redundancy check may be performed (e.g., first) to determine (e.g., find) whether there is an identical HIPM in the table (e.g., whether the intra-prediction mode of an intra-predicted neighboring block is the same as the HIPM candidate in the HIPM table). Based on a determination that the intra-prediction mode of an intra-predicted neighboring block is the same as the HIPM candidate in the HIPM table, the identical HIPM candidate may be removed from the table. HIPM candidates following the removed identical HIPM may be moved forward using an index reduced by one (e.g., the HIPM candidate in the HIPM table that was behind the identical HIPM candidate before the removal of the identical HIPM candidate may be moved). The identical HIPM may be inserted into the last entry of the table. For example, if no redundancy is found (e.g., if the intra-prediction mode of the intra-predicted neighboring block is determined to be not identical / distinguishable from the HIPM candidate in the HIPM table) and the HIPM table size is S, the first HIPM candidate in the HIPM table may be removed and the HIPM candidate in the HIPM table may be moved forward. The HIPM candidate (e.g., the intra-prediction mode of the intra-predicted neighboring block) may be added to a designated entry in the table (e.g., to the end of the table).

[0162] Figure 20 shows an example of HIPM table maintenance. Figure 20 shows an example application of the FIFO rule for removing HIPM candidates and adding new HIPM candidates to the table. For example, i There may be L HIPM candidates in the table denoted by i, where i may indicate the HIPM candidate index, and i may be in the range of [0, L-1], for example, as shown in FIG. 20. L A new HIPM candidate, denoted by C, may be compared (e.g., initially) with existing HIPM candidates in the HIPM table. HIPM candidates with an index greater than 2 are compared (e.g., C LIf C is the same as HIPM2, it can be moved forward towards the top of the table. L can be placed at the end of the HIPM table.

[0163] In an example, the HIPM table may be constructed based on the appearance of existing HIPMs in the table. A redundancy check may be performed (e.g., first when adding a new HIPM to the table) to determine whether there is an identical HIPM in the table. Based on a determination that the intra-prediction mode of an intra-predicted neighboring block is identical to an existing HIPM candidate in the HIPM table, the count of the identical HIPM candidate (e.g., if found) may be increased (e.g., accumulated) (e.g., the importance of the identical HIPM candidate may be increased). The current HIPM table may be reordered based on the appearance count of the candidate(s). For example, a HIPM candidate (e.g., a HIPM candidate with a higher appearance count than the last entry in the current HIPM table) may be placed / moved to the last entry in the table, which may indicate that the HIPM candidate in the last entry in the table is considered the most popular (e.g., most important). For example, if no redundancy is found (e.g., based on determining that the intra-prediction modes of intra-predicted neighboring blocks are distinguishable from the HIPM candidates in the HIPM table) and the HIPM table size is S, the HIPM table may be reordered (e.g., the first HIPM candidate may be removed and HIPM candidates in the HIPM table with the same occurrence count as the new HIPM candidate may be moved forward). The new HIPM candidate may be added before other candidates with higher occurrences in the table (e.g., the HIPM table may be reordered).

[0164] In an example, two or more intra-prediction modes may be available from (e.g., one) previously intra-coded block. The multiple available intra-modes may be inserted into the HIPM table. The (e.g., one) previously intra-coded block may use SGPM, which may indicate that multiple (e.g., two) intra-prediction modes from the SGPM block may be available. The multiple (e.g., two) intra-prediction modes may be added as new HIPM candidates. Multiple (e.g., the first two) HIPM candidates (e.g., instead of one) may be removed, e.g., if no redundancy is found and the HIPM table size is S, (e.g., all) HIPM candidates in the HIPM table may be moved forward, e.g., with indexes reduced accordingly (e.g., by 2).

[0165] In an example, the HIPM table may be reset (e.g., emptied) when, for example, starting to code / decode a new tile / slice / subpicture / frame / or (e.g., one) predefined region (e.g., 512x512, 1024x1024).

[0166] In an example, the HIPM table size value S may be (pre-)defined (e.g., fixed for (all) sequences) or may be signaled, for example, in a View Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Adaptation Parameter Set (APS), Picture Header (PH), etc.

[0167] As described herein, the intra-prediction modes of available spatial neighboring blocks of a current block may be treated as HIPM candidates. For example, the intra-prediction modes of neighboring blocks located at A, L, and AL of the above (A), left (L), and above-left (AL) neighboring blocks of the current block may be added (e.g., in consecutive order) to the HIPM table, as shown by example in Figure 21.

[0168] FIG. 21 shows an example of the order of entries in the HIPM table. The HIPM table may be reset (e.g., emptied) when, for example, coding / decoding a new CU (e.g., starting it). For example, when an available spatial neighboring block is an intra-coded block, the associated intra-prediction mode may be added as an entry in the table as a new HIPM candidate. The construction order of the HIPM table may be, for example, as indicated by numbers 1 to 9 shown in FIG. 21: 1. the neighboring block located above and to the left of the A neighboring block of the current block, 2. the neighboring block located to the left of the A neighboring block of the current block, 3. the neighboring block located above the A neighboring block of the current block, 4. the neighboring block located above and to the left of the L neighboring block of the current block, 5. the neighboring block located to the left of the L neighboring block of the current block, 6. the neighboring block located above the L neighboring block of the current block, 7. the neighboring block located above and to the left of the A neighboring block of the current block, 8. the neighboring block located to the left of the A neighboring block of the current block, and 9. the neighboring block located above the A neighboring block of the current block.

[0169] The order for inserting the intra modes of neighboring blocks into the HIPM table can be built up, for example, starting from other spatially neighboring blocks, such as neighboring intra modes above. The building order can be adapted based on the shape of the blocks, for example, a different order for horizontally oriented rectangular blocks (e.g., width greater than height) and vertically oriented rectangular blocks (e.g., width less than height).

[0170] The HIPM table size may be set to a predefined value S. There may be more than S HIPM candidates from available spatial intra-coded blocks. A FIFO rule may be applied so that the table (e.g., always) contains the most recent S previously coded intra-prediction mode candidates. For example, when adding a HIPM to the table, a redundancy check may be performed (e.g., first) to find whether there are identical HIPMs in the table. The identical HIPM candidate (e.g., if found) may be inserted into a designated entry (e.g., the last entry) of the table, and the HIPM candidates following / behind the identical HIPM candidate may be moved forward. For example, if no redundancy is found and the HIPM table size is S, the first HIPM candidate may be removed and the HIPM candidates in the HIPM table may be moved forward. A new HIPM candidate may be added to the end of the table.

[0171] Figure 22 shows an example of adding HIPM candidates from available spatial neighboring blocks of the current block to the table. For example, C i There may be nine available spatial neighboring blocks, denoted by i, where i may indicate a candidate index and i may be in the range [0, 8]. The HIPM table size may be set to be 5, and there may be five HIPM candidates already in the table. A new HIPM candidate, denoted as C8, may be added, for example, by comparing C8 (e.g., initially) with the existing HIPM candidates. If no redundancy is found, the first HIPM candidate may be removed, subsequent HIPM candidates may be moved (e.g., moved forward toward the top of the table), and the new candidate C8 may be placed in a designated entry (e.g., at the end) of the HIPM table.

[0172] In an example, the intra-prediction modes of more, fewer, and / or other spatial neighboring blocks of the current block may be treated as HIPM candidates, for example, the lower-left (BL) and upper-right (AR) spatial neighboring blocks of the current block may be treated as HIPM candidates.

[0173] In an example, the intra prediction modes of available spatial neighboring blocks in the reference region of the current block may be considered as HIPM candidates. For example, the intra prediction modes of neighboring blocks in the reference region (e.g., as shown by the example in Figure 23) may be added to the HIPM table.

[0174] Figure 23 shows an example of a reference region with intra-prediction mode(s) that may be added to the HIPM table. As shown in Figure 23, the reference region may include 64 lines of samples above and to the left of the block. The reference region may extend, for example, one block width to the right and / or one block height below the block boundary.

[0175] In an example, the same reference region of the IBC can be applied for the HIPM, as shown by example in FIG.

[0176] FIG. 24 shows an example of the application of reference regions in IBC for HIPM. As shown in FIG. 24, a block may represent 64×64 samples. The reference region may vary, for example, depending on the location of the current coding block location within the current CTU. In one example, the reference region may include blocks in the lower-right, lower-left, and upper-right 64×64 blocks of the left CTU (e.g., in addition to the already reconstructed blocks in the current CTU), for example, if the current block falls in the upper-left (e.g., 64×64) block of the current CTU. In one example, the reference region may include blocks in the lower-right and lower-left 64×64 blocks of the left CTU (e.g., in addition to the already reconstructed blocks in the current CTU), for example, if the current block falls in the upper-right 64×64 block of the current CTU. In one example, the reference region may include blocks in the lower-right 64×64 block of the left CTU (e.g., in addition to the already reconstructed blocks in the current CTU), for example, if the current block falls in the lower-left 64×64 block of the current CTU. In one example, the current block may reference an already reconstructed block in the current CTU, for example, if the current block falls in the bottom right 64x64 block of the current CTU.

[0177] In an example, the value S of the HIPM table size may be based on the block size, e.g., the width and / or height of the current block. The size S of the HIPM table may be (pre-)defined and / or fixed for a sequence (e.g., all sequences) and / or may be signaled (e.g., in the VPS, SPS, PPS, APS, PH).

[0178] The HIPM may be used in the intra-prediction candidate construction process. For example, the HIPM may be utilized in the MPM list construction process. FIG. 25 shows an example of using the HIPM in the MPM list construction process. As shown in gray at S103 in FIG. 25, the MPM candidate list construction process may be modified using HIPM candidate insertion. The HIPM candidates stored in the HIPM table may be utilized to fill the PMPM list, for example, if there are one or more (e.g., several) empty entries after adding planar mode and / or spatially neighboring intra-prediction mode candidates. A (e.g., one) block may have a higher correlation with its nearest neighboring block, for example, with respect to the intra-prediction mode. The HIPM candidates in the table may be inserted in descending order of index. The last entry in the table may be added first to the list. The first entry may be added last. Redundancy elimination may be applied to the HIPM candidates. The PMPM list construction process may be terminated, for example, when the total number of available PMPM candidates reaches the maximum allowed number (e.g., a maximum of 6). The multiple (eg, two) directional modes generated by the DIMD may be inserted into the PMPM list, for example, if the PMPM list is not already full.

[0179] HIPM candidates stored in the HIPM table may be utilized to populate the SMPM list. FIG. 26 illustrates an example of using HIPM candidates stored in the HIPM table to populate the SMPM list. As shown in gray at S205 in FIG. 26, the MPM candidate list construction process may be modified using HIPM candidate insertion. For example, after adding derived mode candidates but before inserting a default mode from a predefined list, there may be one or more (e.g., several) empty entries. HIPM candidates may be inserted into the SMPM list, for example, until the SMPM list is filled and / or until (e.g., all) candidates in the HIPM table are no longer utilized. A default mode (e.g., from a predefined list) may be inserted into the SMPM list, for example, if the SMPM list is not yet full.

[0180] In an example, the last entry (e.g., only) of the HIPM table may be used in building the MPM list. In an example, the last M entries (e.g., only) of the HIPM table may be used in building the MPM list.

[0181] In an example, M entries (e.g., only those) of the HIPM table may be utilized in constructing the MPM list. A template may be used to sort the HIPM candidates in the HIPM table. As shown in FIG. 10, the shape of the template may be the same as that of the TIMD / SGPM, and the template may include an already reconstructed sample of size L1×H on the left and an already reconstructed sample of size W×L2 on the top, respectively. A prediction of the template may be obtained for the HIPM candidate from a reference sample (e.g., the gray portion shown in FIG. 10) located at the reference of the template. The first M HIPM candidates with the smallest SATD may be selected.

[0182] In an example, the value M of allowed HIPM entries for an MPM list may be based on the block size, e.g., the width and / or height of the current block. The allowed HIPM entries M may (alternatively) be (pre-)defined and / or fixed for the sequence, or may be signaled (e.g., in the VPS, SPS, PPS, APS, PH).

[0183] In an example, the location for inserting the HIPM candidate(s) may be after the multiple (e.g., two) directional modes generated by the DIMD, e.g., before the derived mode.

[0184] HIPM may be utilized as an intra-mode construction process for coding a block. The intra-prediction mode in the last entry of the HIPM table may be used to code the block, for example, if / when HIPM is applied. An indication (e.g., a flag such as hipm_flag) may be signaled (e.g., for an intra-coded block) to indicate whether the HIPM mode should be applied. An encoder may perform (e.g., additional) RDO checks in the intra-prediction process.

[0185] In an example, HIPM candidates stored in a HIPM table may be utilized to code a block. The block may have a higher correlation with its nearest neighboring block, e.g., with respect to intra-prediction mode. HIPM candidates in the table may be inserted in descending order of index. The last entry in the table may be added first to the list for coding the block. The first entry may be added last. An indication of the HIPM candidate may be provided (e.g., for an intra-coded block, e.g., provided that hipm_flag is true). For example, a syntax element (e.g., hipm_idx) may be signaled (e.g., by a truncated unary code) to specify which HIPM candidate is selected to predict the current block.

[0186] Figure 27 shows an example of signaling an intra-prediction mode selected to predict the luma component of a current CU. As shown by the dashed circle in Figure 27, a HIPM indication may indicate whether the HIPM mode is applied. For example, an indication (e.g., hipm_flag) may be signaled to indicate whether the HIPM mode is applied. As shown in the example in Figure 27, the applicability of HIPM may be determined if / when the intra-prediction mode selected to predict the current CU is not DIMD, MIP, TIMD, or SGPM. A HIPM index (e.g., hipm_idx) may be signaled to specify which HIPM candidate is applicable (e.g., if / when hipm_flag is signaled as true).

[0187] In an example, the last M entries of the HIPM table may be used to code the block.

[0188] In an example, M entries of the HIPM table may be utilized to code the block. A template may be used to sort the HIPM candidates in the HIPM table.

[0189] In an example, the location for testing / checking the HIPM mode may be another location, such as after the DIMD mode.

[0190] In an example, the HIPM may be utilized as a chroma intra mode, e.g., the HIPM may be tested / inspected after DM for the chroma components.

[0191] Fusion for HIPM may be utilized as an intra-mode construction process for coding a block. The SATD between predicted and reconstructed samples of a template may be calculated (e.g., for a HIPM candidate stored in a HIPM table) when fusion for HIPM is applied. The shape of the template may be the same as that of TIMD / SGPM, and the template may include a left already-reconstructed sample of size L1×H and an upper already-reconstructed sample of size W×L2, respectively. A template prediction may be obtained for a HIPM candidate from a reference sample (e.g., the gray part shown in FIG. 10) located at the template reference. The first M HIPM candidates with the smallest SATD may be selected. The predefined value M may be set to 2, for example, as shown in the following example. Selected HIPM Candidate HIPM 1st and HIPM 2nd The final two predictors used are, for example, SATD HIPM_2nd <2*SATD HIPM_1st is true, the weights may be merged with the weights. The weights may depend on the SATDs of the (e.g., two) HIPM candidates. The first selected HIPM candidate HIPM 1st (e.g., the first selected HIPM candidate HIPM 1st only) is, for example, not (e.g., SATD HIPM_2nd >2*SATD HIPM_1st is true).

[0192] In an example, the fusion for the HIPM may use the last M entries of the HIPM table, whose predictors may be averaged to obtain the final predictor.

[0193] In an example, the original HIPM mode may be reserved, and the HIPM fusion mode may be signaled, for example, by signaling an indication in the bitstream, e.g., as a mode.

[0194] In an example, the fused HIPM may be utilized as a chroma intra mode.

[0195] HIPM may be implemented in MIP mode (e.g., extended to MIP mode). The examples described herein may be applied to MIP. MIP may have (e.g., may not have) a concept of directionality, which may affect building history tables for different PU sizes. Multiple history tables may be built and used with the same PU size.

[0196] HIPM may affect video coding (eg, in encoders and decoders), distribution, and / or consumption.

[0197] Although features and elements have been described above in particular combinations, those skilled in the art will appreciate that each feature or element may be used alone or in any combination with the other features and elements. Furthermore, the methods described herein may be implemented in a computer program, software, or firmware embodied in a computer-readable medium for execution by a computer or processor. Examples of computer-readable media include electronic signals (transmitted via 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 disks (DVDs). A processor associated with software may be used to implement a radio frequency transceiver for use in a WTRU, UE, terminal, base station, RNC, or any host computer.

Claims

1. 1. A video decoding device, comprising: Identifying, for a current block, intra-predicted neighboring blocks spaced at least one block apart from the current block; determining an intra-prediction mode for the intra-predicted neighboring block; decoding the current block based on the intra-prediction modes of the intra-predicted neighboring blocks; A device having a processor configured to execute

2. The processor: adding the intra-prediction mode of the intra-predicted neighboring block to a most probable mode (MPM) list associated with the current block; decoding the current block based on the MPM list; The device of claim 1 , further configured to perform:

3. The processor: adding the intra-prediction mode of the intra-predicted neighboring block to a history-based intra-prediction mode (HIPM) table, the HIPM table including a plurality of HIPM candidates; obtaining a most probable mode (MPM) list associated with the current block based on the HIPM table; decoding the current block based on the MPM list; The device of claim 1 or claim 2, further configured to:

4. The processor: Obtaining a history-based intra-prediction mode (HIPM) table including a plurality of HIPM candidates; determining whether the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; based on determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; removing at least one identical HIPM candidate from the HIPM table; moving each of a plurality of HIPM candidates in the HIPM table that was behind the at least one identical HIPM candidate before removing the at least one identical HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; The device of claim 1 , further configured to:

5. The processor: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; moving each of the plurality of HIPM candidates in the HIPM table that was behind the first HIPM candidate before removing the first HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; The device of claim 1 , further configured to:

6. The processor: determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one of a plurality of HIPM candidates in a HIPM table; Based on the above decision, Increasing the importance of at least one identical HIPM candidate; Sorting the HIPM table; The device of claim 1 , further configured to:

7. The processor: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; adding the intra-prediction modes of the intra-predicted neighboring blocks to a HIPM table; Sorting the HIPM table; The device of claim 1 , further configured to:

8. 1. A video encoding device, comprising: Identifying, for a current block, intra-predicted neighboring blocks spaced at least one block apart from the current block; determining an intra-prediction mode for the intra-predicted neighboring block; encoding the current block based on the intra-prediction modes of the intra-predicted neighboring blocks; A device having a processor configured to execute

9. The processor: adding the intra-prediction mode of the intra-predicted neighboring block to a most probable mode (MPM) list associated with the current block; encoding the current block based on the MPM list; The device of claim 8 , further configured to:

10. The processor: adding the intra-prediction mode of the intra-predicted neighboring block to a history-based intra-prediction mode (HIPM) table, the HIPM table including a plurality of HIPM candidates; obtaining a most probable mode (MPM) list associated with the current block based on the HIPM table; encoding the current block based on the MPM list; 10. The device of claim 8 or claim 9, further configured to:

11. The processor: Obtaining a history-based intra-prediction mode (HIPM) table including a plurality of HIPM candidates; determining whether the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; based on determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; removing at least one identical HIPM candidate from the HIPM table; moving each of a plurality of HIPM candidates in the HIPM table that was behind the at least one identical HIPM candidate before removing the at least one identical HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; 11. The device of claim 8, further configured to:

12. The processor: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; moving each of the plurality of HIPM candidates in the HIPM table that was behind the first HIPM candidate before removing the first HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; 11. The device of claim 8, further configured to:

13. The processor: determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one of a plurality of HIPM candidates in a HIPM table; Based on the above decision, Increasing the importance of at least one identical HIPM candidate; Sorting the HIPM table; 11. The device of claim 8, further configured to:

14. The processor: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; adding the intra-prediction modes of the intra-predicted neighboring blocks to a HIPM table; Sorting the HIPM table; 11. The device of claim 8, further configured to:

15. 15. The device of claim 1, further comprising a memory operatively connected to the processor.

16. 1. A method for a video decoder, comprising: Identifying, for a current block, intra-predicted neighboring blocks spaced at least one block apart from the current block; determining an intra-prediction mode for the intra-predicted neighboring block; decoding the current block based on the intra-prediction modes of the intra-predicted neighboring blocks; A method comprising:

17. The method comprises: adding the intra-prediction mode of the intra-predicted neighboring block to a most probable mode (MPM) list associated with the current block; decoding the current block based on the MPM list; 17. The method of claim 16, further comprising:

18. The method comprises: adding the intra-prediction mode of the intra-predicted neighboring block to a history-based intra-prediction mode (HIPM) table, the HIPM table including a plurality of HIPM candidates; obtaining a most probable mode (MPM) list associated with the current block based on the HIPM table; decoding the current block based on the MPM list; 18. The method of claim 16 or claim 17, further comprising:

19. The method comprises: Obtaining a history-based intra-prediction mode (HIPM) table including a plurality of HIPM candidates; determining whether the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; based on determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; removing at least one identical HIPM candidate from the HIPM table; moving each of a plurality of HIPM candidates in the HIPM table that was behind the at least one identical HIPM candidate before removing the at least one identical HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; 19. The method of any one of claims 16 to 18, further comprising:

20. The method comprises: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; moving each of the plurality of HIPM candidates in the HIPM table that was behind the first HIPM candidate before removing the first HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; 19. The method of any one of claims 16 to 18, further comprising:

21. The method comprises: determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one of a plurality of HIPM candidates in a HIPM table; Based on the above decision, Increasing the importance of at least one identical HIPM candidate; Sorting the HIPM table; 19. The method of any one of claims 16 to 18, further comprising:

22. The method comprises: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; adding the intra-prediction modes of the intra-predicted neighboring blocks to a HIPM table; Sorting the HIPM table; 19. The method of any one of claims 16 to 18, further comprising:

23. 1. A method for a video encoder, comprising: Identifying, for a current block, intra-predicted neighboring blocks spaced at least one block apart from the current block; determining an intra-prediction mode for the intra-predicted neighboring block; encoding the current block based on the intra-prediction modes of the intra-predicted neighboring blocks; A method comprising:

24. The method comprises: adding the intra-prediction mode of the intra-predicted neighboring block to a most probable mode (MPM) list associated with the current block; encoding the current block based on the MPM list; 24. The method of claim 23, further comprising:

25. The method comprises: adding the intra-prediction mode of the intra-predicted neighboring block to a history-based intra-prediction mode (HIPM) table, the HIPM table including a plurality of HIPM candidates; obtaining a most probable mode (MPM) list associated with the current block based on the HIPM table; encoding the current block based on the MPM list; 25. The method of claim 23 or claim 24, further comprising:

26. The method comprises: Obtaining a history-based intra-prediction mode (HIPM) table including a plurality of HIPM candidates; determining whether the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; based on determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one HIPM candidate in the HIPM table; removing at least one identical HIPM candidate from the HIPM table; moving each of a plurality of HIPM candidates in the HIPM table that was behind the at least one identical HIPM candidate before removing the at least one identical HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; 26. The method of any one of claims 23 to 25, further comprising:

27. The method comprises: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; moving each of the plurality of HIPM candidates in the HIPM table that was behind the first HIPM candidate before removing the first HIPM candidate; adding the intra-prediction mode of the intra-predicted neighboring block to a designated entry in a HIPM table; 26. The method of any one of claims 23 to 25, further comprising:

28. The method comprises: determining that the intra-prediction mode of the intra-predicted neighboring block is the same as at least one of a plurality of HIPM candidates in a HIPM table; Based on the above decision, Increasing the importance of at least one identical HIPM candidate; Sorting the HIPM table; 26. The method of any one of claims 23 to 25, further comprising:

29. The method comprises: determining that the intra-prediction modes of the intra-predicted neighboring blocks are distinguishable from a plurality of HIPM candidates in a HIPM table; Based on the above decision, removing a first HIPM candidate from the HIPM table; adding the intra-prediction modes of the intra-predicted neighboring blocks to a HIPM table; Sorting the HIPM table; 26. The method of any one of claims 23 to 25, further comprising:

30. A computer program product stored on a non-transitory computer readable medium and comprising program code instructions for performing the method of any one of claims 16 to 29 when executed by a processor.

31. A computer program comprising program code instructions for performing the method of any one of claims 16 to 29 when the computer program is executed by a processor.

32. Video data containing information representative of a current block, encoded according to a method according to any one of claims 23 to 29.