Method and apparatus for encoding or decoding video - Patents.com

JP2024504689A5Pending Publication Date: 2025-01-28INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2023544091
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-02-01
Filing Date
2022-01-26
Publication Date
2025-01-28

AI Technical Summary

Technical Problem

Existing video encoding and decoding methods face challenges in efficiently utilizing motion information from multiple candidates, leading to ambiguity and inefficiencies in prediction correction tools like Local Illumination Compensation (LIC), which affects compression efficiency.

Method used

A method and apparatus for video encoding and decoding that inherit motion information from at least two motion candidates, determining a prediction for a video block, and using an indicator to enable or disable prediction correction based on the inherited motion information, specifically addressing LIC indicator inheritance across various inter-prediction modes.

Benefits of technology

Enhances compression efficiency by resolving ambiguity in prediction correction tools, improving video encoding and decoding processes, and optimizing the use of motion information from multiple candidates.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method and corresponding apparatus for encoding or decoding a block are provided, in which a prediction for the block is determined, motion information used to determine the prediction is inherited from motion information of at least two motion candidates, and the block is encoded or decoded based on the determined prediction, and determining the prediction for the block includes determining a value of an indicator that enables or disables correction of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present embodiments generally relate to methods and apparatus for motion information derivation in video encoding or decoding. [Background technology]

[0002] To achieve high compression efficiency, image and video coding schemes usually employ prediction and transformation to exploit spatial and temporal redundancy in video content. In general, intra- or inter-prediction is used to exploit intra- or inter-picture correlation, and then the difference between the original block and the predicted block, often called the prediction error or prediction residual, is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by the inverse process corresponding to entropy coding, quantization, transformation, and prediction. Summary of the Invention

[0003] A method for encoding a video block is provided, the method for encoding the video block including determining a prediction for the block, where motion information used to determine the prediction is inherited from motion information of at least two motion candidates, and encoding the block based on the determined prediction, where determining the prediction for the block includes determining a value of an indicator that enables or disables correction of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

[0004] According to another embodiment, an apparatus for encoding a video block is provided, the apparatus comprising one or more processors configured to determine a prediction for the block, where motion information used to determine the prediction is inherited from motion information of at least two motion candidates, and to encode the block based on the determined prediction, where determining the prediction for the block includes determining a value of an indicator that enables or disables correction of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

[0005] According to another embodiment, a method for decoding a video block is provided, the method including determining a prediction for the block, where motion information used to determine the prediction is inherited from motion information of at least two motion candidates, and decoding the block based on the determined prediction, where determining the prediction for the block includes determining a value of an indicator that enables or disables correction of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

[0006] According to another embodiment, an apparatus for decoding a video block is provided, the apparatus comprising one or more processors configured to determine a prediction for the block, where motion information used to determine the prediction is inherited from motion information of at least two motion candidates, and to decode the block based on the determined prediction, where determining the prediction for the block includes determining a value of an indicator that enables or disables correction of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

[0007] One or more embodiments also provide a computer program comprising instructions that, when executed by one or more processors, cause the one or more processors to perform an encoding method or a decoding method according to any of the previously described embodiments. One or more of the embodiments also provide a computer readable storage medium having stored thereon instructions for encoding or decoding video data according to the methods described above. One or more embodiments also provide a computer readable storage medium having stored thereon a bitstream generated according to the methods described above. One or more embodiments also provide methods and apparatus for transmitting or receiving a bitstream generated according to the methods described above. [Brief description of the drawings]

[0008] [Figure 1] 1 shows a block diagram of a system in which aspects of the present embodiments may be implemented; [Diagram 2] 1 shows a block diagram of one embodiment of a video encoder. [Diagram 3] 2 shows a block diagram of one embodiment of a video decoder. [Figure 4] 1 illustrates an example of a method for LIC parameter derivation, according to one embodiment. [Diagram 5] 4 illustrates an example of spatial and temporal neighboring locations used to derive a motion vector predictor for a motion candidate list, according to one embodiment. [Figure 6] 1 illustrates a control point based affine motion model according to one embodiment. [Figure 7] 13 shows an example of control point motion vector inheritance. [Figure 8] 13 illustrates an example of angles in geometric inter prediction mode according to an embodiment of the present invention. [Figure 9] 1 shows an example of a geometric partition description. [Figure 10] An example of a geometric partition with angle 12 and distance 0 to 3 is shown. [Figure 11] 1 illustrates an example of a method for encoding a block in a video according to an embodiment. [Figure 12] 1 illustrates an example of a method for decoding a block in a video according to an embodiment. [Figure 13] 1 shows an example of a geometric partition that has an edge shared with an L-shaped template at the top of the block. [Figure 14] 1 shows two remote devices communicating over a communications network, according to an example of the present principles. [Figure 15] 1 shows the syntax of a signal according to an example of the present principles; DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0009] FIG. 1 illustrates a block diagram of an example of a system in which various aspects and embodiments may be implemented. System 100 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 various electronic devices, such as, but not limited to, personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected appliances, and servers. The elements of system 100, alone or in combination, may be embodied in a single integrated circuit, multiple ICs, and / or separate components. For example, in at least one embodiment, the processing elements and encoder / decoder elements of system 100 are distributed across multiple ICs and / or separate components. In various embodiments, system 100 is communicatively coupled to other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 100 is configured to implement one or more of the aspects described herein.

[0010] The system 100 includes at least one processor 110 configured to execute instructions loaded therein, for example, to implement various aspects described herein. The processor 110 may include embedded memory, input / output interfaces, and various other circuits as known in the art. The system 100 includes at least one memory 120 (e.g., volatile and / or non-volatile memory devices). The system 100 includes a storage device 140, which may include non-volatile and / or volatile memory, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drives, and / or optical disk drives. The storage device 140 may include, by way of non-limiting example, an internal storage device, an attached storage device, and / or a network-accessible storage device.

[0011] System 100 includes, for example, an encoder / decoder module 130 configured to process data to provide encoded or decoded video, which may include its own processor and memory. Encoder / decoder module 130 represents a module that may be included within a device to perform encoding and / or decoding functions. As is known, a device may include one or both of an encoding and decoding module. Additionally, encoder / decoder module 130 may be implemented as a separate element of system 100 or may be incorporated within processor 110 as a combination of hardware and software, as is known to those skilled in the art.

[0012] Program code to be loaded onto the processor 110 or the encoder / decoder 130 to perform various aspects described herein may be stored in the storage device 140 and then loaded onto the memory 120 for execution by the processor 110. According to various embodiments, one or more of the processor 110, the memory 120, the storage device 140, and the encoder / decoder module 130 may store one or more of various items during execution 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 the processing of equations, expressions, operations, and operational logic.

[0013] In some embodiments, memory internal to the processor 110 and / or the encoder / decoder module 130 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be either the processor 110 or the encoder / decoder module 130) is used for one or more of these functions. The external memory may be the memory 120 and / or the storage device 140, e.g., dynamic volatile memory and / or non-volatile flash memory. In some embodiments, the external non-volatile flash memory is used to store the television's operating system. In at least one embodiment, a high-speed external dynamic volatile memory, such as RAM, is used as working memory for video coding and decoding operations, such as MPEG-2, HEVC, or VVC.

[0014] Input to the elements of system 100 may be provided through various input devices, as indicated at block 105. Such input devices may include, but are not limited to, (i) an RF section that receives, for example, an RF signal transmitted over the air by a broadcast station, (ii) a composite input, (iii) a USB input, and / or (iv) an HDMI input.

[0015] In various embodiments, the input devices of block 105 have associated respective input processing elements as known in the art. For example, the RF section may be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal or band-limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) band-limiting again to a narrower frequency band to select a signal frequency band that may be referred to (for example) as a channel in a particular embodiment, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired stream of data packets. The RF section of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include a tuner that performs these various functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a near baseband frequency) or to baseband. In one embodiment of a set-top box, the RF section and its associated input processing elements perform frequency selection by receiving, filtering, downconverting, and refiltering RF signals transmitted over a wired (e.g., cable) medium to a desired frequency band. Various embodiments 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 may include inserting elements between existing elements, for example, inserting amplifiers and analog-to-digital converters. In various embodiments, the RF section includes an antenna.

[0016] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting the system 100 to other electronic devices across 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 separate input processing ICs or within the processor 110, as desired. Similarly, aspects of the USB or HDMI interface processing may be implemented, for example, in separate interface ICs or within the processor 110, as desired. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including, for example, the processor 110 and an encoder / decoder 130, which operates in combination with memory and storage elements to process the data stream as desired for presentation on an output device.

[0017] The various elements of system 100 may be provided within an integrated housing in which the various elements may be interconnected and transmit data between each other using suitable connection arrangements 115, e.g., internal buses known in the art, including I2C buses, wiring, and printed circuit boards.

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

[0019] Data is streamed to system 100 in various embodiments using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signal in these embodiments is received over communication channel 190 and communication interface 150, which are adapted for Wi-Fi communication. Communication channel 190 in these embodiments 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. In other embodiments, streaming data is provided to system 100 using a set-top box that delivers data via an HDMI connection in input block 105. In yet other embodiments, streaming data is provided to system 100 using an RF connection in input block 105.

[0020] System 100 may provide output signals to various output devices, including display 165, speakers 175, and other peripheral devices 185. Other peripheral devices 185, in various example embodiments, include one or more of a standalone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functionality based on the output of system 100. In various embodiments, control signals are communicated between system 100 and display 165, speakers 175, or other peripheral devices 185 using signaling such as AV.Link, CEC, or other communication protocols that allow inter-device control with or without user intervention. Output devices may be communicatively coupled to system 100 via dedicated connections through respective interfaces 160, 170, and 180. Alternatively, output devices may be connected to system 100 via communication interface 150 using communication channel 190. Display 165 and speakers 175 may be integrated into a single unit with other components of system 100, for example, in an electronic device such as a television. In various embodiments, the display interface 160 includes a display driver, such as a timing controller (TCon) chip.

[0021] Display 165 and speakers 175 may alternatively be separate from one or more of the other components, for example, if the RF portion of input 105 is part of a separate set-top box. In various embodiments in which display 165 and speakers 175 are external components, output signals may be provided via dedicated output connections including, for example, an HDMI port, a USB port, or a COMP output.

[0022] 2 illustrates an example video encoder 200, such as a High Efficiency Video Coding (HEVC) encoder. FIG. 2 may also illustrate an encoder that improves on the HEVC standard or employs technology similar to HEVC, such as the Versatile Video Coding (VVC) encoder under development by the Joint Video Exploration Team (JVET) or any video encoder.

[0023] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "encoded" and "coded" may be used interchangeably, the terms "pixel" or "sample" may be used interchangeably, and the terms "image", "picture", and "frame" may be used interchangeably. Usually, but not necessarily, the term "reconstructed" is used on the encoder side, while the term "decoded" is used on the decoder side.

[0024] Before being encoded, a video sequence may undergo encoding pre-processing (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 that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and attached to the bitstream.

[0025] In the encoder 200, a picture is encoded by the encoder elements as described below. A picture to be encoded is divided (202) into units, e.g., CUs, for processing. According to one embodiment, the units can be divided into sub-units.

[0026] Each unit or sub-unit is coded using, for example, either intra mode or inter mode. When a unit is coded in intra mode, it performs intra prediction (260). Intra prediction uses pixels of already coded neighboring blocks (called reference samples) in the same video picture / slice of the block to predict the current video block. Spatial prediction reduces spatial redundancy inherent in video signals.

[0027] In inter modes, inter prediction is performed using motion estimation (275) and compensation (270). Inter prediction, also called temporal prediction, uses reconstructed pixels from an already coded video picture to predict the current video block. Inter prediction reduces the temporal redundancy inherent in video signals.

[0028] For each inter-predicted CU, motion information is used to generate an inter prediction for the current block. The motion information may comprise one or more motion vectors that indicate the amount and direction of motion between the current block and its reference block, and one or more reference picture indexes that identify the reference picture in the reference picture list from which the reference block originates. The motion information may comprise additional information required for a particular encoding function of the encoder / decoder, such as a LIC indicator that indicates whether the LIC tool is enabled or disabled for the current block.

[0029] Depending on the embodiment, which will be described further below, different inter prediction modes can be used to generate a prediction of the current block. Any of the inter prediction modes can be implemented alone or in combination with any one of the other inter prediction modes. An inter prediction mode is selected from among the available inter prediction modes, for example based on a rate / distortion cost, and the selected inter prediction mode is signaled in the bitstream.

[0030] The encoder determines (205) whether to use intra or inter mode to code the unit, and indicates the intra / inter decision, for example, via a prediction mode flag. The encoder may also mix (263) intra and inter prediction results, or mix results from different intra / inter prediction methods.

[0031] The prediction residual is calculated, for example, by subtracting the predicted block from the original image block (210). The motion refinement module (272) uses already available reference pictures to refine the motion field of the block without referring to the original block. The motion field for a region can be considered as a collection of motion vectors for all pixels that comprise the region. If the motion vectors are subblock-based, the motion field can also be represented as a collection of all subblock motion vectors in the region (all pixels in a subblock have the same motion vector, and the motion vectors can be different for each subblock). If a single motion vector is used for a region, the motion field for the region can also be represented by a single motion vector (the same motion vector for all pixels in the region).

[0032] The prediction residual is then transformed (225) and quantized (230). The quantized transform coefficients, as well as the motion vectors and other syntax elements, 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 directly coded without applying a transform or quantization process.

[0033] The encoder decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the predicted block are combined (255) to reconstruct an image block. An in-loop filter (265) is applied to the reconstructed picture to perform, for example, deblocking / Sample Adaptive Offset (SAO) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (280).

[0034] Figure 3 shows a block diagram of an exemplary video decoder 300. In the decoder 300, the bitstream is decoded by decoder elements, as described below. The video decoder 300 generally performs a decoding pass that is the inverse of the encoding pass, as described in Figure 2. The encoder 200 also generally performs video decoding as part of encoding the video data.

[0035] 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, motion vectors, and other coding information. Picture partition information indicates how the picture is partitioned. The decoder may then partition the picture according to the decoded picture partition information (335). The transform coefficients are inverse quantized (340) and inverse transformed (350) to decode the prediction residual. The decoded prediction residual is combined with the prediction block (355) to reconstruct an image block.

[0036] A prediction block can be obtained (370) from intra prediction (360) or motion compensated prediction (i.e., inter prediction) (375). The decoder may mix (373) intra and inter prediction results, or mix results from multiple intra / inter prediction methods. Before motion compensation, the motion field may be improved (372) by using already available reference pictures. An in-loop filter (365) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (380).

[0037] The decoded picture may further undergo post-decoding processing (385), such as an inverse color conversion (e.g., from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping that 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.

[0038] For ease of reference, the terms "CU" and "block" are used interchangeably throughout this text.

[0039] According to an embodiment, in the encoder and decoder described above, the motion information for the inter-prediction mode can be signaled in an explicit or implicit manner.For example, in a coding mode also called merge mode, the motion information is inherited from the already coded neighboring CUs of the current block, including motion candidates, for example, spatial and temporal candidates as well as additional motion candidates, depending on the encoder / decoder implementation.The merge mode can be applied to any inter-prediction CU.

[0040] A motion candidate is a coded block or CU that can be used to predict a block or CU in inter prediction mode.

[0041] According to one embodiment, in merge mode, a motion candidate list is constructed including one or more motion candidates. The predictions obtained by using the motion information of the motion candidates in the list are evaluated, and the motion candidate that provides the lowest rate / distortion cost for the block is selected. Then, an index that identifies the selected motion candidate is coded in the bitstream of the current block.

[0042] According to one embodiment, the motion candidate list may be populated in sequence with any one of the following types of motion candidates: 1) Spatial motion vector predictor from spatially neighboring CUs; 2) Temporal motion vector predictor from collocated CUs; 3) A history-based motion vector predictor from a first-in-first-out table; 4) Pairwise average motion vector predictor; 5) Zero motion vector.

[0043] The motion candidates are included in the list in order until the maximum allowed size of the list is reached. The motion candidate list described above is an example, and any other motion candidates derived according to the specific features of the encoder / decoder may be included in any location in the list. The list may also be constructed without considering one or more of the motion candidates described above. Furthermore, the order given above for considering the motion candidates is an example, and any other order may be used. It should therefore be understood that the motion candidate list may be populated using any derivation process for the motion candidates, as long as the same list construction process is used in the encoder and decoder.

[0044] Figure 5 shows an example of spatial and temporal neighborhood locations used to derive a motion vector predictor for a motion candidate list. If less than four spatial motion candidates are added to the list, the spatial neighborhood may include the top CU (B1), the left CU (A1), the top right CU (B0), the bottom left CU (A0), and the top left CU (B2). To ensure that candidates with the same motion information are removed from the list, a redundancy check may be applied before adding a new motion vector predictor.

[0045] The temporal neighborhood may include the bottom-right CU (C0) in the co-located picture, or the center CU C1 if C0 is not available. History-based motion candidates are obtained from a table that stores motion information of previously coded blocks, which is maintained during the encoding / decoding process. The table stores a fixed number of motion information and is managed using a first-in-first-out process.

[0046] According to one embodiment, the pairwise average candidate is generated by averaging a pair of predefined candidates. For example, the pair of predefined candidates may be motion candidates included in the merge candidate list. According to another variant, the predefined pair of candidates may be any other motion candidate. Therefore, the derivation of the predefined pair of candidates must be performed in the same way in the encoder and the decoder.

[0047] According to an example, the predefined pairs of candidates can be defined as {(0,1), (0,2), (1,2), (0,3), (1,3), (2,3)}, where the numbers indicate the merge index into the merge candidate list. The averaged motion vector is calculated separately for each reference list. If both motion vectors are available in one list, these two motion vectors are averaged even if they point to different reference pictures. If only one motion vector is available, this motion vector is added to the list.

[0048] According to one embodiment, when the merge candidate list is not full after the pairwise average merge candidates are added, zero MVPs (motion vector predictors) are inserted at the end until the maximum number of merge candidates is reached.

[0049] According to an embodiment, the motion candidate list can be used for any other inter prediction mode where motion information must be derived from motion candidates. Examples of such modes are merge mode with motion vector differential (MVD) where MVD is coded in the bitstream for the CU, combined inter and intra prediction (known as CIIP in the VVC standard), geometric partition mode, or affine mode that uses an affine motion model, and spatio-temporal motion vector predictor (STMVP) that averages two spatial motion candidates and one temporal candidate.

[0050] An alternative inter-prediction mode to the merge mode for inter-predicting the current CU may be a coding mode in which motion information is explicitly transmitted / coded in the bitstream for the CU.

[0051] According to one embodiment, the inter prediction may include an affine coding mode in which a block-based affine transformation motion compensation prediction is applied. As shown in Figure 6, the affine motion field of a block may be described by motion information of two control point motion vectors (CPMV) (four parameters) or three control point motion vectors (six parameters).

[0052] For a four-parameter affine motion model, the motion vector at a sample location (x,y) in a block may be derived as follows:

[0053]

number

[0054]

number

[0055] According to one embodiment, the CPMV of the current CU can be generated based on the motion information of spatial neighboring CUs. A fixed number of CPMVP candidates is derived and an index is signaled to indicate the one to be used for the current CU. In one example, up to five motion candidates can be used. According to a variant, the following three types of CPVMP candidates can be used to form the affine merge candidate list: -Spatial inheritance affine candidates, -Constructed affine candidate CPMVP, -Zero CPMV.

[0056] The spatially inherited affine candidates can be derived from the affine motion models of the neighboring blocks, for example, one from the left neighboring CU and one from the top neighboring CU. An example is shown in Figure 5. For the left predictor, the scan order for selecting the left predictor can be A1, A0, and for the top predictor, the scan order can be B1, B0, B2. Only the first inherited candidate from each side is selected.

[0057] When a neighboring affine CU is identified, its control point motion vectors are used to derive CPMVP candidates in the affine merge list of the current CU. As shown in Figure 7, when the neighboring bottom-left block A is coded using an affine model, motion vectors v2, v3, and v4 of the upper left corner, upper right corner, and lower left corner of the CU containing block A are achieved. When block A is coded with a four-parameter affine model, two CPMVs of the current CU (Cur in Figure 7) are calculated according to v2 and v3. When block A is coded with a six-parameter affine model, three CPMVs of the current CU are calculated according to v2, v3, and v4.

[0058] The constructed affine candidates are constructed by combining the neighborhood translational motion information of each control point of the CU. The motion information for a control point can be derived from the specified spatial and temporal neighborhoods, as shown in FIG. 5. CPMV k (k=1,2,3,4) represents the kth control point. For CPMV1, the B2->B3->A2 block is checked and the MV of the first available block is used. For CPMV2, the B1->B0 block is checked, and for CPMV3, the A1->A0 block is checked. For CPMV4, the temporal motion vector predictor (TMVP) C0 is used if available.

[0059] Then, the constructed affine motion candidates are calculated based on the four upper control points CPMV kIt is constructed based on the movement of the MVs (k=1,2,3,4). It can be constructed using the following combinations of control points MVs in a specific order: {CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4}, {CPMV2, CPMV3, CPMV4}, {CPMV1, CPMV2}, {CPMV1, CPMV3}.

[0060] A combination of three CPMVs constructs a six-parameter affine merge candidate, and a combination of two CPMVs constructs a four-parameter affine merge candidate. To avoid the motion scaling process, we can discard the associated combination of control point MVs if the reference indexes of the control points are different.

[0061] After the inherited and constructed affine merge candidates have been checked, if the motion candidate list is not already full, a zero CPMV may be inserted at the end of the list.

[0062] According to one embodiment, the motion information in the affine coding mode may be implicitly signaled, for example using a process similar to that of the merge mode, or may be explicitly signaled. When the motion information is implicitly signaled in the affine coding mode, also called the affine merge mode, the motion information of each of the CPMVs is inherited from the motion candidates determined as described above. An index is coded for the CU to indicate the motion candidate used for the CU.

[0063] According to one embodiment, the inter prediction can include a geometric partition inter prediction mode, in which the CU is divided into two partitions by a partition edge defined by an angle and a distance. The geometric partition allows for better alignment of the inter prediction boundary with the object. According to one embodiment, the geometric inter prediction mode can have 32 angles and 5 distances. When the geometric inter prediction mode is used, the CU is divided into two non-rectangular partitions. Each partition within the CU is inter predicted using its own motion parameters. According to a variant, only unidirectional prediction is allowed.

[0064] The motion information for each partition of the geometric mode is derived from a motion candidate list. For example, the motion candidate list described above can be used. Each partition has one motion vector and one reference index. After predicting each of the partitions, the sample values ​​along the split edge can be adjusted using a blending process with adaptive weights.

[0065] The dividing boundary is at an angle φ i and distance offset ρ i The angle φ can be described as i may be quantized from 0 degrees to 360 degrees in steps equal to 11.25 degrees. Figure 8 shows an example of 32 angles that may be used in geometric inter prediction modes.

[0066] Angle φ i and distance ρ i The description of the geometric division is shown in Figure 9. i is the maximum possible distance ρ with a fixed step indicating the distance from the center of the block. max According to a variant, the distance ρ i For =0, only the first half of the angles are available since the partition is symmetric in this case. The result of the geometric partition using angle 12 and distances 0 to 3 is shown in Figure 10.

[0067] According to one embodiment, the motion information in the geometric inter prediction mode may be implicitly signaled, for example using a process similar to that of the merge mode, or may be explicitly signaled. When the motion information is implicitly signaled (also called the geometric merge mode), the motion information of each partition is inherited from the motion candidate of the motion candidate list. An index is coded for each partition of a CU to indicate the motion candidate used for the partition.

[0068] In the temporal prediction process, Local Illumination Compensation (LIC) is a coding tool used to address the problem of local illumination changes that may exist between temporally neighboring pictures. The LIC tool is based on a linear model, where at least one of a scaling factor α and an offset β is applied to a reference sample to obtain a predicted sample of the current block. In this way, the LIC parameters make it possible to correct the prediction obtained for the current block. Specifically, the LIC tool can be mathematically modeled by the following equation: P(x,y)=α P r (x+v x ,y+v y )+β

[0069] P(x,y) is the prediction signal of the current block at coordinate (x,y), and P r (x+v x ,y+v y ) is the motion vector (v x ,v y ), and α and β are the corresponding scaling factors and offsets applied to the reference block.

[0070] Figure 4 illustrates a method for determining LIC parameters according to one embodiment. In Figure 4, when LIC is applied to a block, a minimum mean square error (LMSE) method is used to derive the values ​​of the LIC parameters (i.e., α and β) by minimizing the difference between the neighboring samples of the current block (i.e., template T in Figure 4) and their corresponding reference samples (T0 or T1) in the temporal reference pictures L0 and L1, as shown in Figure 4:

[0071]

number

[0072]

number

[0073]

number

[0074] Furthermore, when LIC is applied to a bidirectional block (i.e., predicted by two temporal prediction blocks), LIC parameters are derived and applied separately for each prediction direction, i.e., L0 and L1. As shown in Figure 4, two reference templates T0 and T1 can be obtained based on two motion vectors MV0 and MV1. By minimizing the distortion between T0 and T and between T1 and T separately, the corresponding pairs of LIC parameters in the two directions can be derived according to the formula given above.

[0075] Then, the final bi-prediction signal of the current block is generated by combining the two LIC uni-prediction blocks, as shown below:

[0076]

number

[0077]

number

[0078] The LIC tools described above may be used in encoding / decoding video schemes such as those described above with respect to FIGS.

[0079] When motion information for predicting a CU is inherited from a motion candidate, in addition to a motion vector and a reference index, a LIC indicator is included in the motion information inherited from the motion candidate.

[0080] However, when the motion information is determined for a CU based on the combined motion information, the LIC indicator cannot be directly inherited by the CU. The combined motion information occurs when a CU inherits motion information from at least two motion candidates. For example, in a merge mode, pair-wise motion candidates use at least two motion candidates to derive motion information. In another example, in a geometric merge mode, each partition has its own motion candidate. In yet another example, in an affine merge mode, each constructed CPMV has its own motion candidate. These examples are not limiting, and other inter prediction modes may result in the use of more than one motion candidate to inherit motion information for a CU.

[0081] The LIC indicator, which indicates whether the LIC tool is used for a CU, is coded at the CU level. That is, when multiple motion candidates are used for motion information inheritance, multiple indicators are inherited by the CU. When the inherited indicators have different values, this leads to ambiguity regarding whether the tool is enabled or disabled for the CU. Therefore, it is necessary to improve this situation.

[0082] Although the principles are described here for the case of LIC features, the principles may be applied to any features that may be inherited from motion candidates once signaled to a CU.

[0083] In the following, they are referred to as indicators associated with the motion candidates. As explained above, the indicators may be LIC indicators or any indicators inherited from the motion candidates. Such indicators may be flags that can take on Boolean values. The indicators may also be non-Boolean, e.g., indicators indicating the status of the tool, such as enabled or disabled, or any intermediate state (e.g. enabled with certain parameters / weights).

[0084] 11 illustrates an example of a method 1100 for encoding a block in a video according to an embodiment. According to one embodiment, the method 1100 may be implemented in the encoder described in FIG.

[0085] At 110, a prediction is determined for the block. To determine the best coding mode for the block in a rate / distortion sense, several coding modes can be evaluated, at least one of which uses motion information inherited from motion information of at least two motion candidates.

[0086] For such coding modes, motion information including a motion vector and a reference frame index is determined for a block from two or more motion candidates at 111. A prediction, i.e., a prediction block, is then calculated from the derived motion vector and the reference frame index using motion compensation of the reference picture.

[0087] At 112, a value of an indicator for enabling or disabling prediction correction is determined based on the values ​​of the corresponding indicators of the at least two motion candidates. The indicator may be, for example, an indicator of the LIC tool as described above.

[0088] At 113 it is determined whether prediction correction is enabled or disabled based on the indicator set at 112 for the block. If prediction correction is enabled, correction parameters are determined based on a rate / distortion cost determined for a template in the neighborhood of the block to be coded, for example as described in relation to figure 4. The prediction is then corrected using the determined parameters.

[0089] At 114, the block is coded based on the determined prediction. Depending on the rate / distortion cost, the block may be coded using the inter prediction mode for which the prediction was determined at 110, or using another coding mode that results in a lower rate / distortion cost.

[0090] 12 illustrates an example of a method 1200 for decoding a block in a video, according to one embodiment. According to one embodiment, the method 1200 may be implemented in the decoder described with reference to FIG.

[0091] At 120, a prediction is determined for the block. To determine the prediction for the block, at least one coding parameter representative of a coding mode is decoded from the bitstream of the block. According to one embodiment, the coding mode used to code the block uses motion information of at least one motion candidate that inherits motion information of at least two motion candidates.

[0092] At 121, motion information including a motion vector and a reference frame index is determined for a block from two or more motion candidates. A prediction, i.e., a prediction block, is then calculated from the derived motion vector and the reference frame index using motion compensation of the reference picture.

[0093] At 122, a value of an indicator for enabling or disabling prediction correction is determined based on the values ​​of the corresponding indicators of the at least two motion candidates. The indicators may be, for example, indicators of the LIC tool as described above.

[0094] At 123 it is determined whether prediction correction is enabled or disabled based on the indicator set at 122 for the block. If prediction correction is enabled, correction parameters are determined based on a rate / distortion cost determined for templates neighboring the block to be decoded, for example as described in relation to Fig. 4. The prediction is then corrected using the determined parameters.

[0095] At 124, the block is decoded and reconstructed based on the determined prediction.

[0096] Different variations may be used to determine the value of the indicator for the block at 112 or 122.

[0097] According to one variant, for determining the value of the indicator, the value of the indicator is based on the importance of at least one of the at least two motion candidates.

[0098] According to another variant, when the indicator may be expressed as a Boolean value, to determine the value of the indicator, the value of the indicator is obtained from an OR or AND operation performed on the values ​​of the indicators of at least two motion candidates.

[0099] According to another variant, if the values ​​of the indicator for all at least two motion candidates indicate that the prediction correction is valid, the value of the indicator is set to a value indicating that the prediction correction is valid.

[0100] According to another variant, if the value of the indicator for at least one of the at least two motion candidates indicates that the prediction correction is valid, the value of the indicator is set to a value indicating that the prediction correction is valid.

[0101] LIC indicator inheritance for pairwise movement candidates According to one embodiment, the coding mode using motion information of at least two motion candidates is the merge mode as described above. According to this embodiment, the motion candidate list includes pair-wise motion candidates. A pair-wise candidate is constructed as the average of two motion candidates already present in the motion candidate list. For example, in the VVC standard, the two motion candidates used are the first two motion candidates. For each reference frame list: ○ If both motion candidates have motion vectors associated with the reference frame ■ Pairwise motion candidates obtain an average motion vector using the reference frame of the first motion candidate; ○ If not, ■ When only one motion candidate has a motion vector associated with the reference frame Pairwise motion candidate obtains the motion vector and reference frame of this motion candidate; ■Other ● Pairwise motion candidates are undefined for this reference frame list.

[0102] According to a variant, a pairwise motion candidate can inherit the LIC indicator of an input motion candidate if both of these motion candidates hold the same value of the LIC indicator, which means that the pairwise motion candidate inherits this common LIC indicator, otherwise the LIC indicator is set to false. This variant is implemented by using the LIC indicator as an "and" operation between the LIC indicators of the input motion candidates. pairwise =LIC cand0 and LIC cand1 It can be run as LIC pairwise , LIC cand0 , LIC cand1 denote the LIC indicators of the pairwise motion candidate, the first motion candidate, and the second motion candidate, respectively.

[0103] According to another variant, if one of the input motion candidates has a LIC value equal to true, the pairwise motion candidate can inherit from this LIC value. pairwise =LIC cand0 or LIC cand1 As such, it may be implemented as an "or" operation between the LIC indicator values ​​of the input motion candidates.

[0104] In another variant, looking at the pairwise configuration, we see that there is a bias towards the reference frame of the first input motion candidate, as shown below in Table 1. LIC aims to compensate for local illumination changes between the current frame and the reference frame, and therefore it is possible to adjust the LIC indicator inheritance for pairwise motion candidates by taking this bias into account.

[0105] [Table 1]

[0106] Table 1 shows an example of reference frame inheritance of pairwise motion candidates from input motion candidates (input cand0, input cand1). A cross in a cell indicates that the corresponding input motion candidate uses a reference picture from the corresponding reference picture list (L0, L1).

[0107] As can be seen in Table 1, when the first input motion candidate is bidirectional or when both input motion candidates are unidirectional over the same reference frame list (cases highlighted in grey in Table 1), the pair-wise motion candidate uses only the reference frames of this first motion candidate. In that case, the value of the LIC indicator for the pair-wise motion candidate is set to the value of the LIC indicator of this first input motion candidate.

[0108] In all other cases, the value of the LIC indicator may be determined using one of the two variants described above.

[0109] This embodiment can be resumed by: If the first input motion candidate is bidirectional or both input motion candidates are unidirectional over the same reference frame list, then LIC pairwise =LIC cand0 It is. If not, LIC pairwise =LIC cand0 and / or LIC cand1 It is.

[0110] The same principle can be applied to combined candidates such as HEVC, which selects the List 0 portion of one merge candidate combined with the List 1 portion of another merge candidate. Similarly, the same principle can be applied to STMVP (spatio-temporal motion vector predictor), which averages two spatial candidates and one temporal candidate.

[0111] LIC indicator for zero movement candidates When building a motion candidate list, e.g. a merge list, if there are less than the maximum allowed number of motion candidates in the list, the list is filled with zero motions whose LIC indicator is set to a value indicating that correction is invalid. Zero motions are added to the motion candidate list as follows: - Zero motions associated with each reference frame in each reference frame list until the minimum number of possible reference frames in each list is reached. For example, if list 0 (L0) contains 4 reference frames and list 1 (L1) contains only 3, then the zero motions are as follows: -(0,0) using reference picture 0 of L0 +(0,0) using reference picture 0 of L1, and a LIC indicator to disable correction. -(0,0) using reference picture 1 of L0 +(0,0) using reference picture 1 of L1, and a LIC indicator to disable correction. -(0,0) using reference picture 2 in L0 +(0,0) using reference picture 2 in L1, and a LIC indicator to disable correction. Then, the zero motions associated with the first reference frame of each list are added until the motion candidate lists are filled as follows: -(0,0) using reference picture 0 of L0 +(0,0) using reference picture 0 of L1, and a LIC indicator to disable correction. -(0,0) using reference picture 0 of L0 +(0,0) using reference picture 0 of L1, and a LIC indicator to disable correction. -...

[0112] Such a method of filling the motion candidate list always invalidates the prediction correction, which affects the coding efficiency, the use of the correction tool and its inheritance mechanism.

[0113] According to one embodiment, when constructing a list of motion candidates from at least one spatially neighboring block of a block, if the number of motion candidates in the list is less than a maximum allowed number and the list does not include a motion candidate having a zero motion vector and a first value of the indicator, a motion candidate having a zero motion vector and a first value of the indicator is added to the list.

[0114] According to a variant, if the number of motion candidates in the list is less than the maximum allowed number and the list includes a motion candidate having a zero motion vector and a first value of the indicator, a motion candidate having a zero motion vector and a second value of the indicator is added to the list, where the second value of the indicator is different from the first value of the indicator.

[0115] In any of these variations, zero motion vectors can be added to the list until the maximum allowed number is reached, with each zero motion vector added having a different value of the indicator, or, if the indicator can take on several values, alternating values ​​of the indicator associated with the zero motion vectors.

[0116] According to one embodiment, zero motion across all reference frames is not modified, but it is desirable to increase the diversity of motion candidates in the list since zero motion with the first reference frame is already added to the motion candidate list. According to one embodiment, a motion candidate is added to the motion candidate list with a value of the LIC indicator that is different from the value of the LIC indicator associated with a motion candidate with a motion vector and a reference picture of the reference frame list that is already present in the list.

[0117] In the example described above, a zero motion with the first reference frame and a disabled LIC indicator value has already been added to the motion candidate list, then a zero motion with the first reference frame is added to the list, but with the LIC indicator value enabled. According to a variant, if several zero motions are added, the LIC indicator value is switched when adding in order to maintain diversity in the list.

[0118] Adding zero motion candidates in the above example would look like this: -Zero motion associated with each reference frame in each reference frame list: -(0,0) using reference picture 0 of L0 +(0,0) using reference picture 0 of L1, and a LIC indicator to disable correction. -(0,0) using reference picture 1 of L0 +(0,0) using reference picture 1 of L1, and a LIC indicator to disable correction. -(0,0) using reference picture 2 in L0 +(0,0) using reference picture 2 in L1, and a LIC indicator to disable correction. - the zero motion associated with the first reference frame of each list: -(0,0) using reference picture 0 of L0 + (0,0) using reference picture 0 of L1, and a LIC indicator to enable the correction. -(0,0) using reference picture 0 of L0 +(0,0) using reference picture 0 of L1, and a LIC indicator to disable correction. -(0,0) using reference picture 0 of L0 + (0,0) using reference picture 0 of L1, and a LIC indicator to enable the correction. -(0,0) using reference picture 0 of L0 +(0,0) using reference picture 0 of L1, and a LIC indicator to disable correction. -...

[0119] In a variant, one can check for zero motion across all reference frames if one is already present in the motion candidate list. If a zero motion candidate already exists, it is added to the motion candidate list with the opposite LIC indicator value.

[0120] For instance, in the above example, zero motion candidates for reference picture 0 in both lists L0 and L1 are added to the lists as follows: -(0,0) with reference picture 0 of L0 +(0,0) with reference picture 0 of L1 and LIC indicator invalid correction if the same motion candidate with LIC indicator invalid correction is already present in the list; or -(0,0) with reference picture 0 of L0 +(0,0) with reference picture 0 of L1, and LIC indicator value disable correction if the same motion candidate with LIC indicator enable correction is already present in the list.

[0121] According to a variant, the LIC indicator value switching process may also be applied when adding zero motion to the first reference frame of each list.

[0122] LIC indicator inheritance for geometric motion candidates As presented above, the geometric mode combines two non-rectangular partitions. According to one variant, each partition may have unidirectional motion information chosen from a motion candidate list.

[0123] Regarding pair-wise motion candidates, according to one embodiment, in the geometric merge mode, the LIC indicator values ​​inherited from the motion candidates determined for a partition are merged by applying "and" or "or" to the input motion candidate LIC indicator values. GEO =LIC part0 and LIC part1, or LIC GEO =LIC part0 or LIC part1, where LIC GEO , LIC part0 , LIC part1 represent the LIC indicator values ​​of the current block, the first partition, and the second partition, respectively.

[0124] In one variant, the geometric mode allows having a partition that is larger than another partition, so the LIC indicator value of the current block is set to the LIC indicator value of the larger partition. For example, the size of a partition can be evaluated as the number of pixels in the partition.

[0125] Figure 13 shows examples of geometric partitions with edges shared with an L-shaped template on top of the block that can be used for LIC parameter determination. In Figure 13(a) partition P0 shares more edges with the template than partition P1, and in Figure 13(b) partition P1 shares more edges with the template than partition P0. According to one variant, the LIC indicator value of the current block is set to the LIC indicator value of the partition that shares more edges with the template than the other partitions. According to this variant, the LIC indicator value is inherited from the partition that shares the largest neighborhood with the template.

[0126] According to a variant that can be combined with any one of the variants above, if the edges of the partitions shared with the template are comparable or the sizes of the partitions are comparable, the LIC indicator value can be defined according to a variant that sets the LIC indicator to a value that enables correction when both partitions inherit from a motion candidate having a LIC indicator value that enables correction, or according to a variant that sets the LIC indicator to a value that enables correction when at least one of the partitions inherits from a motion candidate having a LIC indicator value that enables correction.

[0127] According to another variant, the amount of the neighborhood shared with the template can be compared to a threshold value: for example, if a partition shares more than 90% of its neighborhood with the L-shaped boundary, the LIC indicator value of the block is set to the LIC indicator value of this partition, otherwise one of the variants described above is used.

[0128] LIC indicator inheritance for constructed affine motion candidates According to one embodiment, the coding mode using motion information of at least two motion candidates is based on an affine model including at least two motion candidates determined from spatial or temporal neighbouring blocks of the block as described above.

[0129] The constructed affine model presented above is based on motion vectors coming from spatial and temporal neighboring blocks. If the constructed model is a six-parameter model, it uses three CPMVs coming from three different spatial or temporal neighbors, and if it is a four-parameter model, it uses only two CPMVs. As shown in Fig. 5, the considered neighbors are the top left (TL) coming from B2, B3 or A2 position, the top right (TR) coming from B1 or B0 position, the bottom left (BL) coming from A1 or A0 position, and the bottom right (BR) coming from temporal C0 position.

[0130] For each possible model, three CPMVs (in the case of six parameters) or two CPMVs (in the case of four parameters) corresponding to TL, TR, and if necessary BL are derived from the input motion candidates. For example, from a third model (TL, BL, BR), it is possible to derive 3 CPMVs for the constructed model (TL, TR, BL), where TR is defined as TL+BR-BL.

[0131] According to a variant, as with the pairwise motion candidates and geometric modes, a LIC indicator value is determined for each model based on the LIC indicator value held by each involved input motion candidate by applying "and": LIC model =LIC cand0and LIC cand1 and LIC cand2、 In the formula, LIC model , LIC cand0 , LIC cand1 , and LIC cand2 represent the LIC indicator values ​​of the current block, the first motion candidate, the second motion candidate, and the third motion candidate, respectively.

[0132] According to another variant, when the affine model includes at least three motion candidates, in response to a determination that the value of the indicator for at least two of the at least three motion candidates indicates that a correction of the prediction is valid, the value of the indicator determined for the prediction indicates that a correction of the prediction is valid. For example, in the case of a six-parameter model including three input motion candidates, the LIC indicator is model =(LIC cand0 and LIC cand1 ) or (LIC cand0 and LIC cand2 ) or (LIC cand1 and LIC cand2 ) can be determined as

[0133] According to another variant, the time BR candidate may not have a LIC indicator value stored in the memory, and the time BR candidate may be removed from the test, which may include: - LIC if the constructed model is derived from a second, third or fourth model model =LIC cand0 and LIC cand1、 - Otherwise, LIC model =LIC cand0 and LIC cand1 and LIC cand2 .

[0134] In another variant, since the top-left CPMV is the most important CPMV since it describes the translation part of the motion, and the other CPMVs describe the rotational and zoom parts of the affine motion, the LIC indicator value of the current block may be set to the value of the LIC indicator of the top-left CPMV motion candidate. If the top-left CPMV motion candidate is not present in the input motion candidates (fourth model), the value of the LIC indicator may be inherited from the top-right motion candidate instead: -TL is the input candidate LIC model If = LIC TL, - Otherwise, LIC model =LIC TR .

[0135] In another variant, if at least two input motion candidates, including the first motion candidate, have LIC indicator values ​​that allow for correction, the constructed model is model =(LIC cand0 and LIC cand1 ) or (LIC cand0 and LIC cand2 The variations presented above can be combined to inherit from the LIC indicator value, allowing for correction, as

[0136] LIC indicator inheritance for zero-affine motion candidates Regarding motion candidate list construction in merge mode, if the affine merge list does not contain the maximum number of allowed candidates at the end, the list is filled with zero models associated with the first reference frame.

[0137] According to one embodiment, for the merge mode presented above, zero affine motion candidates are added using a switch between zero models with LIC indicator values ​​that enable and disable correction. The zero models associated with the first reference frame of each list are added as follows: {(0,0)(0,0)(0,0)} using reference picture 0 in L0 + {(0,0)(0,0)(0,0)} using reference picture 0 in L1, and a LIC indicator value that disables the correction, {(0,0)(0,0)(0,0)} using reference picture 0 in L0 + {(0,0)(0,0)(0,0)} using reference picture 0 in L1, and a LIC indicator value that enables the correction, {(0,0)(0,0)(0,0)} using reference picture 0 in L0 + {(0,0)(0,0)(0,0)} using reference picture 0 in L1, and a LIC indicator value that disables the correction, ○...

[0138] In a variant, a check is made to see if a zero model is already present in the list in order to initiate a LIC indicator value switch to the opposite value to that already present.

[0139] According to an example of the present principles shown in FIG. 14, in a transmission context between two remote devices A and B over a communications network NET, device A comprises a processor associated with memory RAM and ROM configured to implement a method for encoding video as shown in FIGS. 1 to 13, and device B comprises a processor associated with memory RAM and ROM configured to implement a method for decoding video as described in relation to FIGS. 1 to 13.

[0140] According to one example, the network is a broadcast network adapted to broadcast / transmit encoded data representing video from device A to decoding devices, including device B.

[0141] The signal intended to be transmitted by device A carries at least one bitstream containing encoded data representing video. The bitstream may be generated from any embodiment of the present principles.

[0142] 15 shows an example of the syntax of such a signal transmitted via a packet-based transmission protocol. Each transmitted packet P comprises a header H and a payload PAYLOAD. According to an embodiment, the payload PAYLOAD may contain encoded video data encoded according to any one of the embodiments described above.

[0143] 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. In addition, terms such as "first", "second", etc. may be used in various embodiments to modify elements, components, steps, operations, etc., e.g., "first decoding" and "second decoding". The use of such terms does not imply any ordering on 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 during an overlapping time with the second decoding.

[0144] Various methods and other aspects described herein can be used to modify modules of the video encoder 200 and the video decoder 300 as shown in Figures 2 and 3, such as the motion compensation, motion estimation, and motion refinement modules (270, 272, 275, 375, 372). Furthermore, the aspects are not limited to VVC or HEVC, but can be applied, for example, to other standards and recommendations, and extensions of any such standards and recommendations. Unless otherwise specified or technically excluded, the aspects described herein can be used individually or in combination.

[0145] In this application, various numerical values ​​are used. The specific values ​​are for illustrative purposes and the described aspects are not limited to these specific values.

[0146] Various implementations include decoding. As used herein, "decoding" may encompass all or a portion of the processes performed on a received encoded sequence to generate a final output suitable for, for example, a display. In various embodiments, such processes include one or more of the processes typically performed by a decoder, such as, for example, entropy decoding, inverse quantization, inverse transform, and differential decoding. 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 specific description and will be well understood by one of ordinary skill in the art.

[0147] Various implementations involve encoding. Similar to the discussion above regarding "decoding," "encoding" as used in this application may encompass all or a portion of the processes performed on an input video sequence to generate, for example, an encoded bitstream.

[0148] The 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 only discussed in the context of a single type 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. The method may be implemented in an apparatus such as 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, for example, communication devices such as computers, mobile phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.

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

[0150] 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 a memory.

[0151] 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 a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0152] In addition, 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 a memory). Furthermore, "receiving" typically involves some form of activity, such as storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.

[0153] For example, in the case of "A / B," "A and / or B," and "at least one of A and B," it should be understood that use of any of the following " / ," "and / or," and "at least one of" is intended to encompass selection of only the first listed alternative (A), or selection of only the second listed alternative (B), or selection of both alternatives (A and B). As a further example, in the case 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 and B and C). This may be expanded as many times as the number of items listed, as would be apparent to one of ordinary skill in the art and related arts.

[0154] Also, as used herein, the term "signaling" means to indicate something, especially to a corresponding decoder. For example, in a particular embodiment, the encoder signals a quantization matrix for dequantization. Thus, in an embodiment, the same parameters are used at both the encoder and decoder sides. Thus, for example, the encoder can transmit a particular parameter to the decoder so that the decoder can use the same particular parameter (explicit signaling). In contrast, if the decoder already has the particular parameter as well as other parameters, it can use signaling without transmission (implicit signaling) to simply allow the decoder to know and select the particular parameter. By avoiding the transmission of any actual function, bit savings are realized in various embodiments. It will be understood that signaling can be achieved in various ways. For example, one or more syntax elements, flags, etc. are used in various embodiments to signal information to a corresponding decoder. The above relates to the verb form of the word "signal", which may also be used as a noun in this specification.

[0155] As will be apparent to one of ordinary skill in the art, implementations may generate a variety of signals formatted to carry information that may be, for example, stored or transmitted. Information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, a signal may be formatted to carry a bit stream of the described embodiments. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using a radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The signal that the signal carries may be, for example, analog or digital information. The signal may be transmitted by a variety of different wired or wireless links, as is known. The signal may be stored in a processor-readable medium.

Claims

1. 16. A method comprising: encoding at least one block of a video, the encoding comprising: - determining a prediction for said block using motion information, the motion information being inherited from motion information of at least two motion candidates, said prediction comprising at least two partitions, each partition inheriting motion information from one of said at least two motion candidates; - encoding said block based on said determined prediction, A method, wherein determining the prediction for the block includes determining a value of an indicator that enables or disables local illumination compensation of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

2. 16. An apparatus comprising: one or more processors configured to encode at least one block of a video, wherein encoding the block comprises: - determining a prediction for said block using motion information, the motion information being inherited from motion information of at least two motion candidates, said prediction comprising at least two partitions, each partition inheriting motion information from one of said at least two motion candidates; - encoding said block based on said determined prediction, The apparatus, wherein determining the prediction for the block includes determining a value of an indicator that enables or disables local illumination compensation of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

3. 16. A method comprising: decoding at least one block of a video, the decoding comprising: - determining a prediction for said block using motion information, the motion information being inherited from motion information of at least two motion candidates, said prediction comprising at least two partitions, each partition inheriting motion information from one of said at least two motion candidates; - decoding said block based on said determined prediction, A method, wherein determining the prediction for the block includes determining a value of an indicator that enables or disables local illumination compensation of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

4. 16. An apparatus comprising: one or more processors configured to decode at least one block of a video, wherein decoding the block comprises: - determining a prediction for said block using motion information, the motion information being inherited from motion information of at least two motion candidates, said prediction comprising at least two partitions, each partition inheriting motion information from one of said at least two motion candidates; - decoding said block based on said determined prediction, The apparatus, wherein determining the prediction for the block includes determining a value of an indicator that enables or disables local illumination compensation of the prediction based on values ​​of corresponding indicators of the at least two motion candidates.

5. 4. The method of claim 1 or 3, wherein in response to a determination that the value determined for the indicator indicates the use of local lighting compensation for the block, determining a prediction for the block comprises determining at least one local lighting compensation parameter and applying local lighting compensation to the prediction.

6. The method according to claim 1 or 3, wherein the value of the indicator is obtained from an OR or AND operation performed on the values ​​of the indicators of the at least two motion candidates.

7. The method of claim 1 or 3, wherein in response to a determination that the values ​​of the indicator for all of the at least two motion candidates indicate that local lighting compensation of the prediction is effective, the value of the indicator determined for the prediction indicates that local lighting compensation of the prediction is effective.

8. The method of claim 1 or 3, wherein in response to a determination that the value of the indicator of at least one of the at least two motion candidates indicates that local lighting compensation of the prediction is effective, the value of the indicator determined for the prediction indicates that local lighting compensation of the prediction is effective.

9. The method according to claim 1 or 3, wherein the value of the indicator is set based on a size of the at least two partitions or based on a size of a neighborhood of the at least two partitions in a template used to determine at least one local illumination compensation parameter.

10. The method of claim 9 , wherein the value of the indicator is set based on an amount of the neighborhood that shares the template.

11. The method of claim 9 , wherein the value of the indicator is set to the value of the indicator of the motion candidate of the at least two motion candidates from which the largest partition of the prediction inherits motion information.

12. The method of claim 9 , wherein the value of the indicator is set to the value of the indicator of the motion candidate within the at least two motion candidates that shares a greatest neighborhood with a template used to determine at least one local illumination compensation parameter.

13. determining the prediction for the block includes building a list of motion candidates from at least one spatial neighboring block of the block, and in response to determining that a number of the motion candidates in the list is less than a certain number and that the list does not include a motion candidate having a zero motion vector and a first value of the indicator, adding a motion candidate having a zero motion vector and the first value of the indicator to the list; Alternatively, in response to a determination that the number of the motion candidates in the list is less than the number and a determination that the list includes a motion candidate having a zero motion vector and the first value of the indicator, a motion candidate having a zero motion vector and a second value of the indicator is added to the list, the second value of the indicator being different from the first value of the indicator.

14. A computer readable storage medium having stored thereon instructions that cause one or more processors to perform the method of any one of claims 1, 3, or 5-13.

15. 14. A computer program product comprising instructions which, when executed by one or more processors, cause said one or more processors to perform a method according to any one of claims 1, 3 or 5 to 13.

16. 5. The apparatus of claim 2 or 4, wherein in response to a determination that the value determined for the indicator indicates the use of local lighting compensation for the block, determining a prediction for the block comprises determining at least one local lighting compensation parameter and applying local lighting compensation to the prediction.

17. The device according to claim 2 or 4, wherein the value of the indicator is obtained from an OR or AND operation performed on the values ​​of the indicators of the at least two motion candidates.

18. 5. The apparatus of claim 2 or 4, wherein in response to a determination that the values ​​of the indicator for all of the at least two motion candidates indicate that local lighting compensation of the prediction is effective, the value of the indicator determined for the prediction indicates that local lighting compensation of the prediction is effective.

19. 5. The apparatus of claim 2 or 4, wherein in response to a determination that the value of the indicator of at least one of the at least two motion candidates indicates that local lighting compensation of the prediction is effective, the value of the indicator determined for the prediction indicates that local lighting compensation of the prediction is effective.

20. 5. The apparatus of claim 2 or 4, wherein the value of the indicator is set based on a size of the at least two partitions or based on a size of a neighborhood of the at least two partitions in a template used to determine at least one local illumination compensation parameter.

21. The apparatus of claim 20 , wherein the value of the indicator is set based on an amount of the neighborhood that shares the template.

22. The apparatus of claim 20 , wherein the value of the indicator is set to the value of the indicator of the motion candidate of the at least two motion candidates from which a largest partition of the prediction inherits motion information.

23. 21. The apparatus of claim 20, wherein the value of the indicator is set to the value of the indicator of the motion candidate within the at least two motion candidates that shares a greatest neighborhood with a template used to determine at least one local illumination compensation parameter.

24. determining the prediction for the block includes building a list of motion candidates from at least one spatial neighboring block of the block, and in response to determining that a number of the motion candidates in the list is less than a certain number and that the list does not include a motion candidate having a zero motion vector and a first value of the indicator, adding a motion candidate having a zero motion vector and the first value of the indicator to the list; Alternatively, in response to a determination that the number of the motion candidates in the list is less than the number and a determination that the list includes a motion candidate having a zero motion vector and the first value of the indicator, the apparatus of claim 2 or 4 further comprises adding a motion candidate having a zero motion vector and a second value of the indicator to the list, the second value of the indicator being different from the first value of the indicator.