Inter-component intra prediction using multiple parameters
By employing inter-component intra prediction with multiple parameters, the method improves video coding efficiency and compression ratios while maintaining video quality, addressing challenges in existing video coding technologies.
Patent Information
- Application Number
- JP2025523079
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-10-30
- Filing Date
- 2023-10-31
- Publication Date
- 2025-11-12
AI Technical Summary
Existing video coding technologies face challenges in efficiently compressing video data while maintaining quality, particularly in lossy compression scenarios where the reconstructed signal may not be identical to the original, requiring improved methods for inter-component intra prediction.
Implementing inter-component intra prediction using multiple parameters, such as cross-component linear model and convolutional cross-component modes, which determine chroma samples based on luma samples with specific filters and weighting factors, allowing for more accurate prediction and compression.
Enhances video coding efficiency by improving compression ratios and maintaining video quality through precise prediction of chroma samples from luma samples, reducing bandwidth and storage requirements.
Smart Images

Figure 2025536970000001_ABST
Abstract
Description
[Technical Field]
[0001] Related Applications This application claims priority to U.S. Provisional Patent Application No. 63 / 443,668, entitled "CfL Mode with Multiple Parameters," filed February 6, 2023, and is a continuation of and claims priority to U.S. Provisional Patent Application No. 18 / 497,902, entitled "Cross Component Intra Prediction with Multiple Parameters," filed October 30, 2023.
[0002] The disclosed embodiments relate generally to video coding, including, but not limited to, systems and methods for applying multiple parameters in inter-component intra prediction of video data. [Background technology]
[0003] Digital video is supported by a variety of electronic devices, such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smartphones, video teleconferencing devices, video streaming devices, etc. The electronic devices transmit and receive or otherwise communicate digital video data over communication networks and / or store the digital video data on storage devices. Due to the limited bandwidth capacity of communication networks and the limited memory resources of storage devices, video coding may be used to compress the video data according to one or more video coding standards before the video data is communicated or stored.
[0004] Several video codec standards have been developed. For example, video coding standards include AOMedia Video 1 (AV1), Versatile Video Coding (VVC), Joint Exploration test Model (JEM), High-Efficiency Video Coding (HEVC / H.265), Advanced Video Coding (AVC / H.264), and Moving Picture Expert Group (MPEG) coding. Video coding generally utilizes prediction methods (e.g., inter-prediction, intra-prediction, etc.) that exploit the redundancy inherent in video data. The goal of video coding is to compress video data into a format that uses a lower bitrate while avoiding or minimizing degradation of video quality.
[0005] HEVC, also known as H.265, is a video compression standard designed as part of the MPEG-H project. ITU-T and ISO / IEC published the HEVC / H.265 standard in 2013 (Version 1), 2014 (Version 2), 2015 (Version 3), and 2016 (Version 4). Generic Video Coding (VVC), also known as H.266, is a video compression standard intended as the successor to HEVC. ITU-T and ISO / IEC published the VVC / H.266 standard in 2020 (Version 1) and 2022 (Version 2). AV1 is an open video coding format designed as a replacement for HEVC. Validated version 1.0.0 with Errata 1 of the specification was released on January 8, 2019. Summary of the Invention [Problem to be solved by the invention]
[0006] As mentioned above, encoding (compression) reduces bandwidth and / or storage space requirements. As will be described in more detail later, both lossless and lossy compression can be used. Lossless compression refers to techniques in which an exact copy of the original signal can be reconstructed from the compressed original signal through a decoding process. Lossy compression refers to a coding / decoding process in which the original video information is not fully preserved during coding and is not fully recoverable during decoding. When using lossy compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal is small enough to make the reconstructed signal useful for its intended application. The amount of tolerable distortion depends on the application. For example, users of a particular consumer video streaming application may tolerate higher distortion than users of a movie or television broadcast application. The compression ratio achievable by a particular coding algorithm can be selected or adjusted to reflect different distortion tolerances, with higher tolerable distortion generally allowing for coding algorithms that result in higher loss and higher compression ratios.
[0007] This disclosure describes applying multiple parameters to implement inter-component intra prediction of video data in a cross-component intra prediction (CCIP) mode in which each of multiple chroma samples of a current coding block is determined based on one or more luma samples. For example, CCIP modes include a cross-component linear model mode (CCLM) and a convolutional cross-component mode (CCCM). In CCLM mode, a chroma sample is transformed from a reconstructed luma sample co-located with the chroma sample based on a linear model. In CCCM mode, a chroma sample is predicted from multiple reconstructed luma samples positioned based on the filter shape of a filter having multiple weighting factors. In both CCLM and CCCM modes, the reconstructed luma sample is downsampled to match a lower-resolution chroma grid when chroma subsampling is used, with the option to use a single-model or multi-model variant. In some embodiments, the multi-model variant uses two models, one derived based on luma samples above the average luma reference value and the other derived based on the remaining luma samples. Furthermore, in some embodiments, such a multi-model CCCM mode is selected for prediction units that have at least 128 reference samples available.
[0008] In some embodiments, the CCCM mode is associated with a filter (e.g., a 7-tap filter, a 5-tap filter) having multiple weighting factors. The multiple weighting factors are applied together with two additional weighting factors to combine the luma sample, the nonlinear term, and the bias term. For example, a cross-shaped 5-tap filter has five inputs: a center (C) luma sample co-located with the center chroma sample to be predicted, and four neighboring luma samples, including a top / north (N), bottom / south (S), left / west (W), and right / east (E) neighbor. The nonlinear term P represents the square of the center luma sample C scaled to the sample value range. The bias term B represents a scalar offset between the input and the output, and is set, for example, to the midpoint chroma value (512 for 10-bit content). In some embodiments, the output of the filter is calculated based on the weighting factor c i (filter coefficient c i The weighting factors are determined as a convolution between the input luma samples (also referred to as neighboring luma samples) and the input luma samples, and are clipped to the range of valid chroma samples. Various embodiments of the present application are directed to determining weighting factors in inter-component intra prediction of video data (e.g., in CCCM mode), for example, by extracting at least one weighting factor corresponding to at least one neighboring luma sample from the video bitstream, and optionally deriving at least another weighting factor not received in the video bitstream. [Means for solving the problem]
[0009] According to some embodiments, a method of video decoding is provided. The method includes receiving a video bitstream including a current coding block of a current image frame. The video bitstream includes a syntax element for a component-to-component intra prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples. The method further includes identifying a first luma sample of the current coding block and a first chroma sample co-located with the first luma sample in the current coding block. The method further includes identifying multiple neighboring luma samples of the first luma sample based on a filter shape of a filter. The first chroma sample is configured to be determined by combining at least the first luma sample and the multiple neighboring luma samples of the first luma sample using multiple weighting factors. The method further includes extracting at least one weighting factor of the filter from the video bitstream, deriving at least another weighting factor, and combining the first luma sample with multiple neighboring luma samples based on the at least one weighting factor signaled in the video bitstream and at least another weighting factor not signaled in the video bitstream to generate a first chroma sample. The method further includes reconstructing a current coding block including the first chroma sample.
[0010] According to some embodiments, a method of video encoding is provided. The method includes identifying a first luma sample of a current coding block of a current image frame and a first chroma sample co-located with the first luma sample; identifying multiple neighboring luma samples of the first luma sample based on a filter shape of a filter; determining that the first chroma sample is generated by combining the first luma sample and the multiple neighboring luma samples using multiple weighting factors; and selecting at least one weighting factor from the multiple weighting factors. The method further includes generating a video bitstream including the at least one weighting factor from the multiple weighting factors for the current coding block of the current image frame. The video bitstream includes a syntax element for a component-to-component intra prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples.
[0011] According to some embodiments, a computing system, such as a streaming system, a server system, a personal computer system, or other electronic device, is provided. The computing system includes control circuitry and a memory that stores one or more instruction sets. The one or more instruction sets include instructions for performing any of the methods described herein. In some embodiments, the computing system includes an encoder component and / or a decoder component.
[0012] According to some embodiments, a non-transitory computer-readable storage medium is provided that stores one or more sets of instructions for execution by a computing system, the one or more sets of instructions including instructions for performing any of the methods described herein.
[0013] Accordingly, disclosed are devices and systems having methods for coding video, which may complement or replace conventional methods, devices, and systems for video coding.
[0014] The features and advantages described herein are not necessarily all-inclusive, and in particular, some additional features and advantages will be apparent to those skilled in the art in view of the drawings, specification, and claims provided in this disclosure. Furthermore, it should be noted that the language used herein has been chosen primarily for ease of reading and instructional purposes, and not necessarily to delineate or limit the subject matter described herein.
[0015] In order that the present disclosure may be more fully understood, a more particular description may be made by reference to features of various embodiments, some of which are shown in the accompanying drawings. However, the accompanying drawings merely illustrate relevant features of the present disclosure and therefore should not be considered as necessarily limiting, since the description may recognize other useful features, as those skilled in the art will understand upon reading the present disclosure. [Brief explanation of the drawings]
[0016] [Figure 1] 1 is a block diagram illustrating an exemplary communication system, according to some embodiments. [Figure 2A] FIG. 2 is a block diagram illustrating exemplary elements of an encoder component according to some embodiments. [Figure 2B] FIG. 2 is a block diagram illustrating exemplary elements of a decoder component according to some embodiments. [Figure 3] FIG. 1 is a block diagram illustrating an exemplary server system according to some embodiments. [Figure 4] 1 illustrates an example scheme for generating chroma samples from multiple luma samples in CCCM mode, according to some embodiments. [Figure 5]1 is a diagram of an exemplary reference area including multiple reference regions for a current coding block in a current image frame, according to some embodiments. [Figure 6A] 10A-10C are structural diagrams of six exemplary filter shapes of a filter applied to combine luma samples in CCCM mode, according to some embodiments. [Figure 6B] 10A-10C are structural diagrams of six exemplary filter shapes of a filter applied to combine luma samples in CCCM mode, according to some embodiments. [Figure 6C] 10A-10C are structural diagrams of six exemplary filter shapes of a filter applied to combine luma samples in CCCM mode, according to some embodiments. [Figure 6D] 10A-10C are structural diagrams of six exemplary filter shapes of a filter applied to combine luma samples in CCCM mode, according to some embodiments. [Figure 6E] 10A-10C are structural diagrams of six exemplary filter shapes of a filter applied to combine luma samples in CCCM mode, according to some embodiments. [Figure 6F] 10A-10C are structural diagrams of six exemplary filter shapes of a filter applied to combine luma samples in CCCM mode, according to some embodiments. [Figure 7] 1 is a flow diagram illustrating a method for coding video according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0017] According to common practice, the various features illustrated in the drawings are not necessarily drawn to scale and like reference numerals may be used to denote like features throughout the specification and drawings.
[0018] This disclosure describes applying multiple parameters to implement inter-component intra prediction of video data in a cross-component intra prediction (CCIP) mode, in which each of multiple chroma samples of a current coding block is determined based on one or more associated luma samples. For example, CCIP modes include a cross-component linear model mode (CCLM) and a convolutional cross-component mode (CCCM). In CCLM mode, a chroma sample is transformed from a reconstructed luma sample co-located with the chroma sample based on a linear model. In CCCM mode, a chroma sample is predicted from multiple reconstructed luma samples positioned based on the filter shape of a filter having multiple weighting factors. In both CCLM and CCCM modes, the reconstructed luma sample is downsampled to match a lower-resolution chroma grid when chroma subsampling is used, with the option to use a single-model or multi-model variant. In some embodiments, the multi-model variant uses two models, one derived based on luma samples above the average luma reference value and the other derived based on the remaining luma samples. Furthermore, in some embodiments, such a multi-model CCCM mode may be used that can be selected for prediction units that have at least 128 reference samples available.
[0019] In some embodiments, the CCCM mode is associated with a filter (e.g., a cross-shaped 7-tap filter, a cross-shaped 5-tap filter) having multiple weighting factors. The multiple weighting factors are applied together with two additional weighting factors to combine the luma sample, the nonlinear term, and the bias term. For example, a cross-shaped 5-tap filter has five inputs: a center (C) luma sample co-located with the chroma sample to be predicted, and four neighboring luma samples, including a top / north (N), bottom / south (S), left / west (W), and right / east (E) neighbor. The nonlinear term P represents the square of the center luma sample C scaled to the sample value range. The bias term B represents a scalar offset between the input and the output, and is set, for example, to the midpoint chroma value (512 for 10-bit content). In some embodiments, the output of the filter is calculated based on the weighting factor c i (filter coefficient c i The weighting factors are determined as a convolution between the input luma samples (also referred to as neighboring luma samples) and the input luma samples, and are clipped to the range of valid chroma samples. Various embodiments of the present application are directed to determining weighting factors in inter-component intra prediction of video data (e.g., in CCCM mode), for example, by extracting at least one weighting factor corresponding to at least one neighboring luma sample from the video bitstream, and optionally deriving at least another weighting factor that is not signaled in the video bitstream.
[0020] 1 is a block diagram illustrating a communication system 100 according to some embodiments. Communication system 100 includes a source device 102 and a plurality of electronic devices 120 (e.g., electronic devices 120-1 through 120-m) communicatively coupled to each other via one or more networks. In some embodiments, communication system 100 is a streaming system for use with video-enabled applications, such as, for example, video conferencing applications, digital TV applications, and media storage and / or distribution applications.
[0021] Source device 102 includes a video source 104 (e.g., a camera component or media storage) and an encoder component 106. In some embodiments, video source 104 is a digital camera (e.g., configured to create an uncompressed video sample stream). Encoder component 106 generates one or more encoded video bitstreams from the video stream. The video stream from video source 104 may be of a higher data volume compared to encoded video bitstream 108 generated by encoder component 106. Because encoded video bitstream 108 has a lower data volume (less data) compared to the video stream from the video source, encoded video bitstream 108 requires less bandwidth to transmit and less storage space to store compared to the video stream from video source 104. In some embodiments, source device 102 does not include encoder component 106 (e.g., configured to transmit uncompressed video data to network(s) 110).
[0022] The one or more networks 110 represent any number of networks that convey information between the source device 102, the server system 112, and / or the electronic device 120, including, for example, wireline (wired) and / or wireless communication networks. The one or more networks 110 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet.
[0023] The one or more networks 110 include a server system 112 (e.g., a distributed / cloud computing system). In some embodiments, the server system 112 is or includes a streaming server (e.g., configured to store and / or distribute video content, such as an encoded video stream from the source device 102). The server system 112 includes a coder component 114 (e.g., configured to encode and / or decode video data). In some embodiments, the coder component 114 includes an encoder component and / or a decoder component. In various embodiments, the coder component 114 is instantiated as hardware, software, or a combination thereof. In some embodiments, the coder component 114 is configured to decode the encoded video bitstream 108 and re-encode the video data using a different encoding standard and / or methodology to generate encoded video data 116. In some embodiments, the server system 112 is configured to generate multiple video formats and / or encodings from the encoded video bitstream 108.
[0024] In some embodiments, server system 112 functions as a media-aware network element (MANE). For example, server system 112 may be configured to prune encoded video bitstream 108 to tailor potentially different bitstreams to one or more of electronic devices 120. In some embodiments, a MANE is provided separately from server system 112.
[0025] Electronic device 120-1 includes a decoder component 122 and a display 124. In some embodiments, decoder component 122 is configured to decode encoded video data 116 to generate an outgoing video stream that can be rendered on a display or other type of rendering device. In some embodiments, one or more of electronic devices 120 does not include a display component (e.g., is communicatively coupled to an external display device and / or includes media storage). In some embodiments, electronic device 120 is a streaming client. In some embodiments, electronic device 120 is configured to access server system 112 to obtain encoded video data 116.
[0026] The source device and / or the plurality of electronic devices 120 may be referred to as “terminal devices” or “user devices.” In some embodiments, one or more of the source device 102 and / or the electronic devices 120 are instances of a server system, a personal computer, a portable device (e.g., a smartphone, tablet, or laptop), a wearable device, a videoconferencing device, and / or other types of electronic devices.
[0027] In an exemplary operation of communication system 100, source device 102 transmits encoded video bitstream 108 to server system 112. For example, source device 102 may code a stream of pictures captured by the source device. Server system 112 may receive encoded video bitstream 108 and decode and / or encode encoded video bitstream 108 using coder component 114. For example, server system 112 may apply coding to the video data that is more optimal for network transmission and / or storage. Server system 112 may transmit encoded video data 116 (e.g., one or more coded video bitstreams) to one or more of electronic devices 120. Each electronic device 120 may decode encoded video data 116 to recover and optionally display video pictures.
[0028] In some embodiments, the above-mentioned transmission is a one-way data transmission. One-way data transmission may be utilized in media serving applications, etc. In some embodiments, the above-mentioned transmission is a two-way data transmission. Two-way data transmission may be utilized in video conferencing applications, etc. In some embodiments, the coded video bitstream 108 and / or the coded video data 116 are coded and / or decoded according to any of the video coding / compression standards described herein, such as HEVC, VVC, and / or AV1.
[0029] 2A is a block diagram illustrating exemplary elements of encoder component 106, according to some embodiments. Encoder component 106 receives a source video sequence from video source 104. In some embodiments, the encoder component includes a receiver (e.g., transceiver) component configured to receive the source video sequence. In some embodiments, encoder component 106 receives a video sequence from a remote video source (e.g., a video source that is a component of a different device than encoder component 106). Video source 104 can provide the source video sequence in the form of a digital video sample stream that can be of any suitable bit depth (e.g., 8-bit, 10-bit, or 12-bit), any color space (e.g., BT.601 Y CrCb, or RGB), and any suitable sampling structure (e.g., Y CrCb 4:2:0 or Y CrCb 4:4:4). In some embodiments, video source 104 is a storage device that stores previously captured / prepared video. In some embodiments, video source 104 is a camera that captures local image information as a video sequence. Video data may be provided as multiple individual pictures that, when viewed in sequence, impart motion. The pictures themselves may be organized as a spatial array of pixels, where each pixel may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can readily understand the relationship between pixels and samples. The following discussion focuses on samples.
[0030] The encoder component 106 is configured to code and / or compress pictures of a source video sequence into a coded video sequence 216 in real time or under other time constraints required by the application. Enforcing an appropriate coding rate is one function of the controller 204. In some embodiments, the controller 204 controls and is operatively coupled to other functional units, as described below. Parameters set by the controller 204 may include rate control-related parameters (e.g., picture skip, quantizer, and / or lambda values for rate-distortion optimization techniques), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily identify other functions of the controller 204 as they may be relevant to the encoder component 106 being optimized for a particular system design.
[0031] In some embodiments, the encoder component 106 is configured to operate in a coding loop. In a simplified example, the coding loop includes a source coder 202 (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and reference picture(s)) and a (local) decoder 210. The decoder 210 reconstructs the symbols to create sample data in a manner similar to a (remote) decoder (when the compression between the symbols and the coded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory 208. Because decoding of the symbol stream yields bit-accurate results regardless of the location of the decoder (local or remote), the contents in the reference picture memory 208 are also bit-accurate between the local and remote encoders. In this way, the prediction portion of the encoder interprets the same sample values as reference picture samples that the decoder interprets when using prediction during decoding. This principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained due to channel errors, for example) is known to those skilled in the art.
[0032] The operation of decoder 210 may be the same as the operation of a remote decoder, such as decoder component 122, which is described in detail below in connection with Figure 2B. However, with brief reference to Figure 2B, because symbols are available and the encoding / decoding of symbols into a coded video sequence by entropy coder 214 and parser 254 may be lossless, the entropy decoding portion of decoder component 122, including buffer memory 252 and parser 254, may not be fully implemented in local decoder 210.
[0033] An observation that can be made at this point is that any decoder technology, with the exception of parsing / entropy decoding, that is present in a decoder must necessarily be present in substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on decoder operation. A description of the encoder technology can be omitted, as it is the reverse of the decoder technology that has been comprehensively described. Only in certain areas is a more detailed description required, which is provided below.
[0034] As part of its operation, the source coder 202 may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from a video sequence designated as reference image frames. In this manner, the coding engine 212 codes differences between pixel blocks of the input frame and pixel blocks of reference image(s) frames that may be selected as prediction reference(s) for the input frame. The controller 204 may manage the coding operations of the source coder 202, including, for example, setting parameters and subgroup parameters used to encode the video data.
[0035] The decoder 210 decodes the coded video data of frames that may be designated as reference image frames based on symbols generated by the source coder 202. The operation of the coding engine 212 may advantageously be a lossy process. When the coded video data is decoded in a video decoder (not shown in FIG. 2A ), the reconstructed video sequence may be a replica of the source video sequence with some errors. The decoder 210 may replicate the decoding process that may be performed by a remote video decoder on the reference image frames and store the reconstructed reference image frames in the reference picture memory 208. In this way, the encoder component 106 locally stores copies of reconstructed reference image frames that have content in common with the reconstructed reference image frames (without transmission errors) obtained by the remote video decoder.
[0036] The predictor 206 may perform a predictive search for the coding engine 212. That is, for a new frame to be coded, the predictor 206 may search the reference picture memory 208 for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., that may serve as suitable predictive references for the new picture. The predictor 206 may operate on a sample block-by-sample block basis to find suitable predictive references. In some cases, as determined by the search results obtained by the predictor 206, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory 208.
[0037] The output of all the above functional units may undergo entropy coding in entropy coder 214. Entropy coder 214 converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art (e.g., Huffman coding, variable length coding, and / or arithmetic coding).
[0038] In some embodiments, the output of the entropy coder 214 is coupled to a transmitter. The transmitter may be configured to buffer the coded video sequence(s) created by the entropy coder 214 to prepare the coded video sequence(s) for transmission over a communication channel 218, which may be a hardware / software link to a storage device that will store the coded video data. The transmitter may be configured to merge the coded video data from the source coder 202 with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (source not shown). In some embodiments, the transmitter can transmit additional data along with the coded video. The source coder 202 may include such data as part of the coded video sequence. The additional data may comprise other forms of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, supplemental enhancement information (SEI) messages, visual usability information (VUI) parameter set fragments, etc.
[0039] The controller 204 can manage the operation of the encoder component 106. During coding, the controller 204 can assign each coded picture a specific coded picture type, which can affect the coding technique applied to the respective picture. For example, a picture can be assigned as an intra picture (I picture), a predicted picture (P picture), or a bidirectionally predicted picture (B picture). An intra picture can be coded and decoded without using any other frame in the sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh (IDR) pictures. Those skilled in the art will recognize these variations of I pictures and their respective uses and characteristics, and therefore will not be repeated here. A predicted picture can be coded and decoded using intra prediction or inter prediction, which uses at most one motion vector and reference index to predict sample values for each block. A bidirectionally predicted picture can be coded and decoded using intra prediction or inter prediction, which uses at most two motion vectors and reference indexes to predict sample values for each block. Similarly, multiple predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0040] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks of a P-picture may be non-predictively coded via spatial prediction with reference to one previously coded reference picture, or via temporal prediction. Blocks of a B-picture may be non-predictively coded via spatial prediction with reference to one or two previously coded reference pictures, or via temporal prediction.
[0041] Video may be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or otherwise) between pictures. In one example, a particular picture being encoded / decoded, referred to as the current picture, is divided into blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector referred to as a motion vector. A motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0042] Encoder component 106 may perform coding operations according to a given video coding technique or standard, such as any described herein. In doing so, encoder component 106 may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0043] 2B is a block diagram illustrating exemplary elements of a decoder component 122, according to some embodiments. The decoder component 122 of FIG. 2B is coupled to a channel 218 and a display 124. In some embodiments, the decoder component 122 includes a transmitter coupled to a loop filter 256 and configured to transmit data to the display 124 (e.g., via a wired or wireless connection).
[0044] In some embodiments, decoder component 122 includes a receiver coupled to channel 218 and configured to receive data from channel 218 (e.g., via a wired or wireless connection). The receiver may be configured to receive one or more coded video sequences to be decoded by decoder component 122. In some embodiments, the decoding of each coded video sequence is independent of the other coded video sequences. Each coded video sequence may be received from channel 218, which may be a hardware / software link to a storage device that stores the coded video data. The receiver may receive the coded video data along with other data, e.g., coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). The receiver may separate the coded video sequence from the other data. In some embodiments, the receiver receives additional (redundant) data along with the coded video. The additional data may be included as part of the coded video sequence(s). The additional data may be used by decoder component 122 to decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or SNR enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0045] According to some embodiments, the decoder component 122 includes a buffer memory 252, a parser 254 (sometimes referred to as an entropy decoder), a scaler / inverse transform unit 258, an intra-picture prediction unit 262, a motion compensated prediction unit 260, an aggregator 268, a loop filter unit 256, a reference picture memory 266, and a current picture memory 264. In some embodiments, the decoder component 122 is implemented as an integrated circuit, a series of integrated circuits, and / or other electronic circuitry. In some embodiments, the decoder component 122 is implemented at least partially in software.
[0046] Buffer memory 252 is coupled between channel 218 and parser 254 (e.g., to combat network jitter). In some embodiments, buffer memory 252 is separate from decoder component 122. In some embodiments, a separate buffer memory is provided between the output of channel 218 and decoder component 122. In some embodiments, in addition to buffer memory 252 within decoder component 122 (e.g., configured to handle playout timing), a separate buffer memory is provided external to decoder component 122 (e.g., to combat network jitter). When receiving data from a storage / forwarding device with sufficient bandwidth and controllability or from an isosynchronous network, buffer memory 252 may not be required or may be small. For use over a best-effort packet network such as the Internet, buffer memory 252 may be required and may be relatively large, advantageously adaptively sized, and implemented at least in part within an operating system or similar element (not shown) external to decoder component 122.
[0047] Parser 254 is configured to reconstruct symbols 270 from the coded video sequence. The symbols may include, for example, information used to manage the operation of decoder component 122 and / or information for controlling a rendering device such as display 124. The control information for the rendering device(s) may be in the form of, for example, a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). Parser 254 parses (entropy decodes) the coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. Parser 254 may extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. Parser 254 may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0048] The reconstruction of symbols 270 may involve several different units, depending on the type of video picture or portion thereof that has been coded (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how they are involved may be controlled by subgroup control information parsed from the coded video sequence by parser 254. The flow of such subgroup control information between parser 254 and the following units is not shown for clarity.
[0049] In addition to the functional blocks already mentioned, the decoder component 122 may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the conceptual subdivision into the following functional units will be maintained:
[0050] The scaler / inverse transform unit 258 receives the quantized transform factors as well as control information (such as which transform to use, block size, quantization factor, and / or quantization scaling matrix) from the parser 254 as symbol(s) 270. The scaler / inverse transform unit 258 may output blocks containing sample values that may be input to the aggregator 268.
[0051] In some cases, the output samples of the scaler / inverse transform unit 258 relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit 262. The intra-picture prediction unit 262 may generate blocks of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current (partially reconstructed) picture from the current picture memory 264. The aggregator 268 may add, on a sample-by-sample basis, the prediction information generated by the intra-picture prediction unit 262 to the output sample information provided by the scaler / inverse transform unit 258.
[0052] In other cases, the output samples of the scaler / inverse transform unit 258 relate to an inter-coded, potentially motion-compensated, block. In such cases, the motion-compensated prediction unit 260 can access the reference picture memory 266 to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols 270 associated with the block, these samples may be added by the aggregator 268 to the output of the scaler / inverse transform unit 258 (in this case referred to as residual samples or a residual signal) to generate output sample information. The addresses in the reference picture memory 266 from which the motion-compensated prediction unit 260 fetches the prediction samples may be controlled by a motion vector. The motion vector may be available to the motion-compensated prediction unit 260 in the form of a symbol 270, which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory 266 when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.
[0053] The output samples of aggregator 268 may be subjected to various loop filtering techniques in loop filter unit 256. Video compression techniques may include in-loop filter techniques controlled by parameters included in the coded video bitstream and made available to loop filter unit 256 as symbols 270 from parser 254, but may also be responsive to meta-information obtained during decoding of a coded picture or previous portion (in decoding order) of a coded video sequence, or may be responsive to previously reconstructed, loop-filtered sample values.
[0054] The output of the loop filter unit 256 may be a sample stream that may be output to a rendering device such as the display 124 and may also be stored in a reference picture memory 266 for use in future inter-picture prediction.
[0055] Once a particular coded picture is fully reconstructed, it may be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by parser 254), the current reference picture may become part of reference picture memory 266, and a new current picture memory may be reallocated before beginning reconstruction of a subsequent coded picture.
[0056] Decoder component 122 may perform decoding operations according to a predetermined video compression technology, which may be documented in a standard, such as any of the standards described herein. A coded video sequence may conform to a syntax specified by the video compression technology or standard being used, in the sense of conforming to the syntax of the video compression technology or standard as specified in the video compression technology document or standard, and particularly in a profile document therein. Also, to comply with some video compression technologies or standards, the complexity of the coded video sequence may be within a range defined by a level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further limited through a hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0057] 3 is a block diagram illustrating a server system 112 according to some embodiments. The server system 112 includes a control circuit 302, one or more network interfaces 304, a memory 314, a user interface 306, and one or more communication buses 312 for interconnecting these components. In some embodiments, the control circuit 302 includes one or more processors (e.g., a CPU, a GPU, and / or a DPU). In some embodiments, the control circuit includes one or more field programmable gate arrays (FPGAs), hardware accelerators, and / or one or more integrated circuits (e.g., application specific integrated circuits).
[0058] The network interface(s) 304 may be configured to interface with one or more communication networks (e.g., wireless networks, wireline networks, and / or optical networks). The communication networks may be local, wide area, metropolitan, vehicular and industrial, real-time, delay-tolerant, etc. Examples of communication networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wireline or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial networks including CANBus, etc. Such communications may be one-way, receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a specific CANbus device), or bidirectional (e.g., to other computer systems using local or wide area digital networks). Such communications may include communications to one or more cloud computing networks.
[0059] The user interface 306 includes one or more output devices 308 and / or one or more input devices 310. The input device(s) 310 may include one or more of a keyboard, a mouse, a trackpad, a touchscreen, a data glove, a joystick, a microphone, a scanner, a camera, etc. The output device(s) 308 may include one or more of an audio output device (e.g., a speaker), a visual output device (e.g., a display or monitor), etc.
[0060] Memory 314 may include high-speed random-access memory (such as DRAM, SRAM, DDR RAM, and / or other random-access solid-state memory devices) and / or non-volatile memory (such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, and / or other non-volatile solid-state storage devices). Memory 314 optionally includes one or more storage devices located remotely from control circuitry 302. Memory 314, or alternatively, the non-volatile solid-state memory device(s) within memory 314, comprises a non-transitory computer-readable storage medium. In some embodiments, memory 314 or the non-transitory computer-readable storage medium of memory 314 stores the following programs, modules, instructions, and data structures, or a subset or superset thereof: • an operating system 316, which includes procedures for handling various basic system services and performing hardware-dependent tasks; • a network communications module 318 used to connect the server system 112 to other computing devices via one or more network interfaces 304 (e.g., via wired and / or wireless connections); A coding module 320 for performing various functions related to encoding and / or decoding data, such as video data. In some embodiments, the coding module 320 is an instance of the coder component 114. The coding module 320 may include, but is not limited to: o a decoding module 322 for performing various functions related to decoding the encoded data, such as those previously described with respect to the decoder component 122; an encoding module 340 for performing various functions related to encoding data, such as those previously described with respect to the encoder component 106; and A picture memory 352 for storing pictures and picture data, e.g., for use with coding module 320. In some embodiments, the picture memory 352 includes one or more of the reference picture memory 208, the buffer memory 252, the current picture memory 264, and the reference picture memory 266.
[0061] In some embodiments, the decoding module 322 includes a parsing module 324 (e.g., configured to perform various functions previously described with respect to the parser 254), a transform module 326 (e.g., configured to perform various functions previously described with respect to the scalar / inverse transform unit 258), a prediction module 328 (e.g., configured to perform various functions previously described with respect to the motion compensation prediction unit 260 and / or the intra-picture prediction unit 262), and a filter module 330 (e.g., configured to perform various functions previously described with respect to the loop filter 256).
[0062] In some embodiments, encoding module 340 includes a code module 342 (e.g., configured to perform various functions previously described with respect to source coder 202 and / or coding engine 212) and a prediction module 344 (e.g., configured to perform various functions previously described with respect to predictor 206). In some embodiments, decoding module 322 and / or encoding module 340 include a subset of the modules shown in Figure 3. For example, a shared prediction module is used by both decoding module 322 and encoding module 340.
[0063] Each of the above-identified modules stored in memory 314 corresponds to a set of instructions for performing the functions described herein. The above-identified modules (e.g., sets of instructions) need not be implemented as separate software programs, procedures, or modules; thus, various subsets of these modules may be combined or otherwise reconfigured in various embodiments. For example, coding module 320 optionally does not include separate decoding and encoding modules, but rather uses the same set of modules to perform both sets of functions. In some embodiments, memory 314 stores a subset of the above-identified modules and data structures. In some embodiments, memory 314 stores additional modules and data structures not described above, such as an audio processing module.
[0064] In some embodiments, server system 112 includes a web or Hypertext Transfer Protocol (HTTP) server, a File Transfer Protocol (FTP) server, and web pages and applications implemented using Common Gateway Interface (CGI) scripts, PHP Hyper-text Preprocessor (PHP), Active Server Pages (ASP), HyperText Markup Language (HTML), Extensible Markup Language (XML), Java, JavaScript, Asynchronous JavaScript and XML (AJAX), XHP, Javelin, Wireless Universal Resource File (WURFL), etc.
[0065] While FIG. 3 illustrates a server system 112 according to some embodiments, FIG. 3 is intended as a functional description of various features that may be present in one or more server systems, rather than a structural overview of the embodiments described herein. In practice, items shown separately may be combined and some items may be separated, as will be recognized by those skilled in the art. For example, some items shown separately in FIG. 3 may be implemented on a single server, and single items may be implemented by one or more servers. The actual number of servers used to implement server system 112 and how features are allocated among them will vary from implementation to implementation and, optionally, depend in part, on the amount of data traffic the server system handles during peak usage periods as well as during average usage periods.
[0066] 4 illustrates an exemplary scheme 400 for generating chroma samples 402 from multiple luma samples 404 in CCCM mode, according to some embodiments. In some embodiments, a current coding block 406 of a current image frame 408 is coded in component-to-component intra prediction (CCIP) mode. In CCIP mode, the decoder 122 (FIG. 2B) determines each chroma sample 402 of the current coding block 406 based on one or more reconstructed luma samples 404. CCIP mode is a scheme in which a first chroma sample 402C is weighted based on multiple weighting factors (c i) are generated by combining multiple reconstructed luma samples 404 (e.g., samples 404C, 404N, 404S, 404W, and 404E) using the chrominance filter 406. The multiple reconstructed luma samples include a first luma sample 404C of the current coding block 406 that is co-located with the first chroma sample 402C and multiple neighboring luma samples 404x that are located adjacent to the first luma sample 404C based on the filter shape of the filter. In some embodiments, at least one weighting factor 410S of the multiple weighting factors 410 of the filter corresponds to at least one neighboring luma sample 404x. The decoder 122 extracts at least one weighting factor 410S from the video bitstream 116 (FIG. 1) received from the encoder 106. In some situations, at least another weighting factor 410D is not signaled in the video bitstream 116. The decoder 122 derives at least another weighting factor 410D based on, for example, a reference area 412 of the current coding block 406 in the current image frame 408. The first luma sample 402C and the plurality of neighboring luma samples 404x are combined based on at least one weighting factor 410S signaled in the video bitstream 116 and at least another weighting factor 410D not signaled in the video bitstream 116 to generate the first chroma sample 402C. The decoder 122 reconstructs the current coding block 406 including the first chroma sample 402C.
[0067] The filter shape of the filter determines the number of neighboring luma samples 404x and their location relative to the first luma sample 404C. For example, a cross-shaped 5-tap filter has five inputs: a first luma sample 404C co-located with the chroma sample to be predicted 402C, and four neighboring luma samples 404x, including a north / top neighboring sample 404N, a south / bottom neighboring sample 404S, a west / left neighboring sample 404W, and an east / right neighboring sample 404E. Each of the first luma sample 404C and the neighboring luma samples 404x corresponds to a respective weighting factor (e.g., c0, c1, c2, c3, or c4), also referred to as a filter coefficient. The plurality of weighting factors includes weighting factors (e.g., c0-c4) that are applied as filter coefficients in a filter, and two additional weighting factors (e.g., c5, c6) that determine a weighted combination of the linear components of the luma samples 404C and 404x, the nonlinear term P, and the bias term B. In some embodiments, the weighting factor c0 corresponding to the first luma sample 404C is greater than the remaining weighting factors (e.g., c1-c6) of the plurality of weighting factors. The nonlinear term P represents the square of the first luma sample 404C scaled to a sample value range as follows: P=(C*C+midVal)>>bitDepth (1) where C represents the value of the first luma sample 404C, midVal represents the integer to which the average of the two boundaries of the luma value range is rounded, and bitDepth is the bit depth of the luma value. For example, if the bit depth of the luma value is 10, the nonlinear term P can be expressed as: P=(C*C+512)>>10 (2) The bias term B represents a scalar offset between the input and the output, and is set to, for example, the midpoint chroma value (512 for 10-bit content). In some embodiments, the output of the filter is determined as the convolution between the filter coefficients and the input (e.g., the first luma sample 404C and the neighboring luma sample 404x) and clipped to the range of valid chroma samples 404.
[0068] In some embodiments, the at least one weighting factor 410S is signaled with the video bitstream 116 and includes all of the multiple weighting factors applied to generate the first luma sample 402C. For example, the filter shape of the filter is cross-shaped and has five taps. According to the filter shape, the multiple neighboring luma samples 404x include four neighboring luma samples 404N, 404S, 404W, and 404E arranged in a cross shape centered on the first luma sample 404C. Furthermore, in some embodiments, the multiple weighting factors of the filter include seven weighting factors corresponding to the first luma sample 404C, the four neighboring luma samples 404x, the output of the nonlinear function of the first luma sample 404C (e.g., P), and the bias component (e.g., B), respectively. In some situations, all of the seven weighting factors applied to generate the first chroma sample 402C based on equation 414 are signaled with the video bitstream 116. None of the seven weighting factors are derived locally by the decoder 122. In other words, in some embodiments, the CCIP mode includes a multi-chroma from luma (multi-CfL) mode. The decoder 122 determines that the current coding block 406 is coded in multi-CfL mode. In accordance with the determination that the current coding block 406 is coded in multi-CfL mode, a filter and multiple neighboring luma samples 404x of the first luma sample 404 of the current coding block 406 are identified. The first chroma sample 404C of the current coding block 406 is a weighted sum of the first luma sample 404C, the multiple neighboring luma samples 404x, the output of a nonlinear function of the first luma sample 404C, and a bias component B. In some embodiments, the bias component B is equal to the average of the luma samples in the reference area 412.
[0069] Conversely, in some embodiments, the plurality of weighting factors 410 includes a first number (M) of weighting factors in total, and at least one weighting factor 410S is signaled in the video bitstream and includes a second number (N) of weighting factors. The first number (M) is greater than the second number (N). Stated another way, at least one of the plurality of weighting factors applied to generate the first chroma sample 402C is derived locally by the decoder 122.
[0070] In some embodiments, the at least one weighting factor 410S signaled with the video bitstream 116 includes an intermediate weighting factor (e.g., filter coefficient c0) corresponding to the first luma sample 404C. The intermediate weighting factor needs to be provided via the video bitstream 116 regardless of whether the at least one weighting factor 410 signaled with the video bitstream 116 includes any other weighting factors among the multiple weighting factors.
[0071] In some embodiments, the at least one weighting factor 410S includes a first weighting factor and a second weighting factor, where the second weighting factor is signaled using a difference from the first weighting factor. For example, a weighting factor corresponding to the East / Right luma sample 404E is represented by a first difference and a weighting factor corresponding to the West / Left luma sample 404W signaled using the bitstream 116, or vice versa. In another example, a weighting factor corresponding to the North / Top luma sample 404N is represented by a second difference and a weighting factor corresponding to the South / Bottom luma sample 404S signaled using the bitstream 116, or vice versa. In some embodiments, the two weighting factors correspond to two neighboring luma samples symmetrically located with respect to each first luma sample (e.g., samples 406W and 404E, samples 404N and 404S) and are equal to each other. Two weighting factors are signaled once in at least one weighting factor 410S, for example, the East / Right luma sample 404E and the West / Left luma sample 404W are signaled only once, as are the North / Top luma sample 404N and the South / Bottom luma sample 404S.
[0072] In some embodiments, for the first chroma sample 402C, at least one weighting factor 410S is complementary to at least another weighting factor 410D in the plurality of weighting factors. The sum of the first number of weighting factors in the subset of weighting factors 410S and the second number of weighting factors in the at least another weighting factor 410D equals the total number of weighting factors in the plurality of weighting factors. During encoding, the encoder 106 selects at least one weighting factor 410S according to a determination that each weighting factor of the at least one weighting factor 410S has an absolute value that is greater than or equal to the absolute value of at least any of the other weighting factors. In other words, the subset of the largest weighting factors is encoded and streamed into the video bitstream 116.
[0073] In some embodiments, the reconstructed luma samples 404 are downsampled to match a lower-resolution chroma grid when chroma subsampling is used. In some embodiments, the CCCM mode is implemented using a single-model or multi-model variant. The single model uses a single equation 414 containing a single set of weighting factors for determining the chroma samples 402 of the current coding block 406. Each of the single set of weighting factors is received with the video bitstream or is derived from reconstructed samples of the reference area 412. Conversely, in some embodiments, the multi-model variant uses two models corresponding to two sets of weighting factors. One model is derived based on samples of the reference area 412 that are above the average luma reference value, and the other model is derived based on the remaining luma samples of the reference area 412. Furthermore, in some embodiments, such a multi-model CCCM mode is used to reconstruct a prediction unit (e.g., the current coding block 406) that has at least 128 reference samples available.
[0074] In some embodiments, at least another weighting factor 410D is derived based on chroma and luma samples in a reference area 412 of the current coding block 406, where the reference area 412 includes one or more coding blocks (e.g., the eight coding blocks of FIG. 4) that are decoded before the current coding block 406. In some embodiments, a subset of the one or more coding blocks is directly adjacent to the current coding block 406. In some embodiments, the subset of the one or more coding blocks is separated from the current coding block 406 by one or more coding blocks. In some embodiments, the reference area 412 includes at least a portion of multiple rows above the current coding block 406 and / or a portion of multiple columns to the left of the current coding block 406. For example, referring to FIG. 4, the reference area 412 includes seven rows of chroma samples above the current coding block 406 and nine columns of chroma samples to the left of the current coding block 406. In some embodiments, the reference area 412 extends one coding block width to the right of the right boundary of the current coding block 406 and one coding block height below the bottom boundary of the current coding block 406. In some embodiments, the reference area 412 is adjusted to include only available samples. An extension 412E to the reference area 412 is needed to support the side samples of the cross spatial filter and is padded in the unavailable area.
[0075] In some embodiments, the weighting factors (e.g., c0 through c6 in equation 414) are determined by minimizing the mean square error (MSE) between the predicted chroma samples in the reference area 412 and the reconstructed chroma samples 402. The MSE minimization is performed by calculating an autocorrelation matrix for the luma samples 404 and a cross-correlation vector between the luma samples 404 and the chroma samples 402 in the reference area 412. The autocorrelation matrix is processed using LDL decomposition, and the weighting factors are calculated using backward substitution. The process roughly follows the calculation of filter coefficients of an adaptive loop filter (ALF) in enhanced compression model (ECM) video coding. The LDL decomposition does not use square root operations and uses only integer arithmetic.
[0076] In some embodiments, at least one weighting factor 410S is two or more weighting factors with a single precision level 416 (PL), e.g.,
number
[0077] In some embodiments, during encoding, the encoder 106 compares the number of weighting factors in the at least one weighting factor 410S with a threshold number. In response to a determination that the number of weighting factors (e.g., the first number (N1)) is less than or equal to the threshold number, the encoder 106 encodes the at least one weighting factor 410S at a first precision level PL1. Conversely, in response to a determination that the number of weighting factors (e.g., the second number (N2)) is greater than the threshold number, the encoder 106 encodes the at least one weighting factor 410S at a second precision level PL2. The second number (N2) is greater than the first number (N1), and the second precision level PL2 is lower than the first precision level PL-1.
[0078] Alternatively, in some embodiments, the at least one weighting factor 410S includes two or more weighting factors having different accuracy levels 416.
[0079] In some embodiments, the use of CCCM mode is signaled in the video bitstream 116 using a context-adaptive binary arithmetic coding (CABAC) coded flag at the prediction unit level. To support CCCM mode, a new CABAC context is included. In some situations, CCCM is considered a submode of CCLM. If the intra-prediction mode is LM_CHROMA_IDX (to enable single-mode CCCM) or MMLM_CHROMA_IDX (to enable multi-model CCCM), the CCCM flag is signaled in the video bitstream 116.
[0080] 5 is a diagram of an exemplary reference area 412 including multiple reference regions (e.g., 412T and 412L) for a current coding block 406 in a current image frame 408, according to some embodiments. In some embodiments, the current coding block 406 of the current image frame 408 includes a first chroma sample 402C that is generated by combining multiple reconstructed luma samples 404 (e.g., samples 404C, 404N, 404S, 404W, and 404E) using multiple weighting factors (e.g., c0-c6 of equation 414 of FIG. 4). In some embodiments, at least one weighting factor 410S of the filter is extracted from the video bitstream 116 (FIG. 1) received from the encoder 106 (FIG. 1). In some situations, at least another weighting factor 410D is not signaled in the video bitstream 116. The decoder 122 derives at least another weighting factor 410D, for example, based on a reference area 412 of the current coding block 406 in the current image frame 408. The first luma sample 402C and the plurality of neighboring luma samples 404x are combined based on the subset of weighting factors 410S and the at least another weighting factor 410D to generate the first chroma sample 402C. The decoder 122 reconstructs the current coding block 406 including the first chroma sample 402C.
[0081] In some embodiments, at least another weighting factor 410D is derived based on chroma and luma samples within a reference area 412 of the current coding block 406, the reference area 412 including one or more coding blocks that are decoded before the current coding block 406. In some embodiments (FIG. 5), the one or more coding blocks are directly adjacent to the current coding block 406. In some embodiments not shown, the one or more coding blocks are separated from the current coding block 406 by one or more coding blocks.
[0082] Furthermore, in some embodiments, the reference area 412 of the current coding block 406 includes one or more of an upper-left reference region 412TL, an upper reference region 412T, an upper-right reference region 412TR, a lower-left reference region 412BL, and a left reference region 412L. Referring to FIG. 5 , in this example, the reference area 412 includes a top reference region 412T and a left reference region 412L. Each of the reference regions includes one or more coding blocks. In other words, in some embodiments, the reference area 412 includes at least a portion of multiple rows above the current coding block 406 and / or a portion of multiple columns to the left of the current coding block 406. For example, referring to FIG. 5 , the reference area 412 includes a first portion of seven rows of chroma samples above the current coding block 406 and a second portion of nine columns of chroma samples to the left of the current coding block 406. The first portion is determined by the length of the current coding block 406, and the second portion is determined by the width of the current coding block 406. In some embodiments, the reference area 412 extends one coding block width to the right of the right boundary of the current coding block 406 and one coding block height below the bottom boundary of the current coding block 406. In some embodiments, the reference area 412 is adjusted to include only available samples. An extension 412E to the reference area 412 is needed to support the side samples of the cross spatial filter and is padded in the unavailable area.
[0083] 6A-6F are structural diagrams of six exemplary filter shapes 600A-600F of a filter 600 applied to combine luma samples 404 in CCCM mode, according to some embodiments. Each filter shape 600A-600F is optionally applied to the current image frame 408, a slice of the current image frame 408, a superblock including the current coding block 406, or a sequence of image frames including the current coding block 406. With reference to FIG. 6A, filter shape 600A corresponds to an odd number of horizontal luma samples (e.g., three horizontal luma samples 404W, 404C, and 404E) centered about the first luma sample 404C (P0). With reference to FIG. 6B, filter shape 600B corresponds to an odd number of vertical luma samples (e.g., three vertical luma samples 404N, 404C, and 404S) centered about the first luma sample 404C (P0). Referring to Figure 6C, filter shape 600C corresponds to an array of 3x3 luma samples (P0-P8) centered on the first luma sample 404C (P0). Referring to Figures 6D and 6E, filter shape 600C corresponds to a subset of the array of 3x3 luma samples (P0-P6) centered on the first luma sample 404C and missing two corner luma samples (e.g., the top-left and bottom-right luma samples in Figure 6D, and the bottom-left and top-right luma samples in Figure 6D). Referring to Figure 6F, the filter shape is a cross, corresponding to an odd number of horizontal luma samples (e.g., five horizontal luma samples) centered on the first luma sample 404C and an odd number of vertical luma samples (e.g., five vertical luma samples) centered on the same first luma sample 404C.
[0084] In some embodiments, the current coding block 406 has a block size, and the filter shape applied to combine the first luma sample 404C and the plurality of neighboring luma samples 404x is determined based on the block size. For example, the block size of the current coding block 406 is smaller than a predetermined block threshold, and the filter 600 includes a first filter having weighting factors by a first factor. In some embodiments, the block size is larger than the predetermined block threshold, and the filter includes a second filter having weighting factors by a second factor. The second filter has a different filter shape from the first filter. The second factor is smaller than the first factor.
[0085] In some embodiments, the current coding block has a first block size greater than a predetermined block threshold, and the second coding block has a second block size less than or equal to the predetermined block threshold. A first filter applied to the first coding block has weighting factors of a first factor number. A second filter applied to the second coding block includes weighting factors of a second factor number. The second factor number is greater than the first factor number, and the second filter has a different shape than the first filter. In some embodiments, the first filter has a higher precision level than the second filter. In some embodiments, during encoding, the encoder 106 selects a filter shape based on the block size of the current coding block 406. For example, the encoder 106 compares the block size of the current coding block 406 to determine whether the first filter or the second filter is used to generate the chroma samples 402 from the luma samples 404 of the current coding block 406.
[0086] In some embodiments, the filter applied to generate the first chroma sample 402C is selected from a first filter (e.g., 600D in FIG. 6D) and a second filter (e.g., 600F in FIG. 6F), where the first filter corresponds to a smaller number of weighting factors and has a higher precision level than the second filter. In some embodiments, during encoding, the encoder 106 selects the precision level 416 (FIG. 4) based on the filter shape of the current coding block 406C. The more weighting factors a filter has, the lower the precision level for each weighting factor.
[0087] 7 is a flow diagram illustrating a method 700 for coding video, according to some embodiments. Method 700 may be performed in a computing system (e.g., server system 112, source device 102, or electronic device 120) having control circuitry and memory storing instructions for execution by the control circuitry. In some embodiments, method 700 is applied in conjunction with one or more video codecs, including, but not limited to, AV1, AV2, HEVC, VVC, and ECM. In some embodiments, method 700 is performed by executing instructions stored in memory of the computing system (e.g., coding module 320 of memory 314). In some embodiments, current image frame 408 includes current coding block 406. In some embodiments, method 700 is applied to predict one color component using another color component, and downsampling is required for one or more color components. Furthermore, in some embodiments, method 700 is applied to predict a green component or a blue component using a red component.
[0088] In some embodiments, the decoder 122 receives a video bitstream 116 including a current coding block of a current image frame (702). For example, in multi-CfL mode, a CCIP method is proposed that uses multiple luma samples 404 (e.g., 404C and 404x in FIG. 4) as inputs to predict a first chroma sample 402C (704). In some situations, the luma sample 404 is downsampled based on the resolution of the first chroma sample 402C. Alternatively, in some situations, the luma sample 404 is not downsampled. The predicted first chroma sample 402C is derived by a weighted sum of the multiple luma samples 404 and the output of a nonlinear function of the luma sample 404 (710). At least one of the weighting factors is signaled in the video bitstreams 108 and 116 communicated from the encoder 106 to the decoder 122 (712). In some embodiments, all of the weighting factors are signaled in the syntax and context. In some embodiments, a filter is applied (708 and 716) to combine the first luma sample 404C co-located with the first chroma sample 402C with its associated neighboring luma sample 404x. The filter has a cross shape. For example, the weighting factors include seven weighting factors comprising five filter coefficients of a five-tap cross filter in equation 414 (FIG. 4), a weighting factor for the nonlinear term P, and a weighting factor for the bias component B.
[0089] In some embodiments, at least another weighting factor 410S is signaled. The plurality of weighting factors includes M weighting factors, and the at least one weighting factor 410S signaled in the video bitstream 116 includes N weighting factors. The at least another weighting factor 410D is derived (714) locally in the decoder 122 and includes MN weighting factors, where N is a number less than M and both M and N are positive integers. The signaled at least one weighting factor 410S can be any subset of the plurality of weighting factors. For example, only the center filter coefficient c0 corresponding to the first luma sample 404C is signaled, and the other weighting factors are derived based on reconstructed samples in the reference area 412 neighboring the current coding block 406.
[0090] In some embodiments, during encoding, the reference area 412 is applied to determine at least one weighting factor 410S to be signaled and at least another weighting factor 410D to be locally derived. For example, all weighting factors are derived using reconstructed samples in the reference area 412, and weighting factors 410S associated with a predetermined number of the largest absolute values are selected to be signaled via the video bitstream 116. The remaining weighting factors 410D are locally derived using the reference area 412 based on the signaled weighting factors. In some embodiments, filter coefficients associated with a predetermined number of the largest absolute values are selected to be signaled via the video bitstream 116. The remaining filter coefficients, weighting factors associated with the nonlinear term P, and the bias component B are locally derived using the reference area 412 based on the signaled filter coefficients.
[0091] In some embodiments, weighting factors associated with the cross filter (e.g., filter coefficients c0-c4) are signaled, and the remaining weighting factors (e.g., c5 and c6) are derived from neighboring samples within the reference area 412.
[0092] In some embodiments, when signaling weighting factors for multi-CfL, the same precision level 416 (PL) as for CfL mode is used, e.g., for each of the weighting factors:
number
number
number
[0093] In some embodiments, the weighting factors of the cross filter are symmetric. For a five-tap cross filter, only three of the five filter coefficients are signaled. For example, only the weighting factors for the first luma sample 404C, the north / top luma sample 404N, and the west / left luma sample 404W are signaled in the bitstream.
[0094] In some embodiments, the weighting factor for the north / top luma sample 404N is used to predict the weighting factor for the south / bottom luma sample 404S, and the difference between the weighting factors for luma samples 404N and 404S is signaled, for example, using the weighting factor for the north / top luma sample 404N. In some embodiments, the weighting factor for the west / left luma sample 404W is used to predict the weighting factor for the east / right luma sample 404E, and the difference between the weighting factors for luma samples 404S and 404E is signaled, for example, using the weighting factor for the west / left luma sample 404W.
[0095] In some embodiments, the filter is selected from a plurality of predetermined filter shapes. In some embodiments, the filter taps are not five taps, and the filter shape is not a cross. For example, the filter includes three taps arranged horizontally (e.g., in FIG. 6A). In some embodiments, the filter includes three taps arranged vertically (e.g., in FIG. 6B). In some embodiments, the filter selected to generate the first chroma sample 402C is signaled at one of a plurality of levels: an image sequence level, an image frame level, an image slice level, a superblock level, or a coding block level.
[0096] In some embodiments, the filter shape depends on the block size / shape. In some embodiments, if the block size is smaller than a predetermined block threshold (e.g., K×S), a shorter tap filter is applied. Conversely, in some embodiments, if the block size is smaller than a predetermined block threshold (e.g., K×S), a longer tap filter is applied. The corresponding filter type is not signaled in the video bitstream 116 but is automatically determined by the decoder 122.
[0097] In some embodiments, the precision level 416 (PL) of the weighting factors is determined based on the shape of the filter: if there are more weighting factors in the filter shape, the precision level 416 (PL) is a lower value, e.g.
number
number
[0098] In some embodiments (FIG. 5), the reference area 412 (the area of samples that can be used to derive weighting factors) includes the top reference region 414T and the left reference region 414L, and excludes the top left reference region 414TL, the top right reference region 414TR, and the bottom left reference region 414BL. Alternatively, in some embodiments, the reference area 412 includes the top left reference region 414TL, the top reference region 414T, and the left reference region 414L.
[0099] 7 depicts some logical stages in a particular order, stages that are not order-dependent may be reordered, and other stages may be combined or separated. Some reordering or other groupings not specifically mentioned will be apparent to those skilled in the art, and therefore the reordering and groupings presented herein are not exhaustive. Furthermore, it should be recognized that the stages may be implemented in hardware, firmware, software, or any combination thereof.
[0100] Reference will now be made to some exemplary embodiments.
[0101] (A1) In some implementations, a method 700 is implemented for decoding video data. The method 700 includes receiving a video bitstream including a current coding block of a current image frame (702), the video bitstream including a syntax element for a component-to-component intra prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples (704); identifying a first luma sample of the current coding block and a first chroma sample co-located with the first luma sample in the current coding block (706); and identifying multiple neighboring luma samples of the first luma sample based on a filter shape of a filter (708), the first chroma sample being weighted using multiple weighting factors. the first luma sample and the plurality of neighboring luma samples based on at least one weighting factor signaled in the video bitstream and at least another weighting factor not signaled in the video bitstream to generate a first chroma sample; and reconstructing a current coding block including the first chroma sample (718).
[0102] (A2) In some implementations of A1, the at least one weighting factor is signaled with the video bitstream and includes all of the multiple weighting factors applied to generate the first chroma sample.
[0103] (A3) In some implementations of A1 or A2, the filter shape of the filter is a cross shape, and according to the filter shape, the plurality of neighboring luma samples includes four neighboring luma samples arranged in a cross shape centered on the first luma sample, and the plurality of weighting factors includes seven weighting factors corresponding to the first luma sample, the four neighboring luma samples, the output of the nonlinear function of the first luma sample, and the bias component.
[0104] (A4) In some implementations of A3, the at least one weighting factor is signaled with the video bitstream and includes all seven weighting factors applied to generate the first chroma sample.
[0105] (A5) In some implementations of A3, at least one weighting factor signaled with the video bitstream includes five weighting factors associated with the filter, and at least another weighting factor includes two weighting factors associated with the output of the nonlinear function and a bias component.
[0106] (A6) In some implementations of any of A1-A5, the multiple weighting factors include a first number (M) of weighting factors in total, and at least one weighting factor is signaled with the video bitstream and includes a second number (N) of weighting factors, and the first number (M) is greater than the second number (N).
[0107] (A7) In some implementations of any of A1-A6, the at least one weighting factor is signaled with the video bitstream and includes an intermediate weighting factor corresponding to the first luma sample.
[0108] (A8) In some implementations of any of A1-A7, for the first chroma sample, at least one weighting factor is complementary to at least another weighting factor in the plurality of weighting factors, and each weighting factor of the at least one weighting factor has an absolute value that is greater than or equal to the absolute value of any of the at least another weighting factor.
[0109] (A9) In some implementations of any of A1 to A8, at least another weighting factor is derived based on chroma samples and luma samples within a reference area of the current coding block, the reference area including one or more coding blocks decoded before the current coding block.
[0110] (A10) In some implementations of A9, the reference area of the current coding block includes one or more of a top-left reference region, a top reference region, a top-right reference region, a bottom-left reference region, and a left reference region.
[0111] (A11) In some implementations of any of A1-A10, the at least one weighting factor includes two or more weighting factors having accuracy levels.
[0112] (A12) In some implementations of A11, the precision level is selected based on the number of weighting factors included in the at least one weighting factor.
[0113] (A13) In some implementations of any of A1-A12, the at least one weighting factor includes a first number (N1) of weighting factors and has a first precision level. The at least one weighting factor includes a second number (N2) of weighting factors and has a second precision level that is lower than the first precision level, the second number being greater than the first number.
[0114] (A14) In some implementations of any of A1-A13, the at least one weighting factor signaled in the video bitstream includes two or more weighting factors having different precision levels.
[0115] (A15) In some implementations of any of A1 to A14, the at least one weighting factor signaled in the video bitstream includes a first weighting factor and a second weighting factor, and the second weighting factor is signaled using a difference from the first weighting factor.
[0116] (A16) In some implementations of any of A1 to A15, the two weighting factors correspond to two neighboring luma samples symmetrically located with respect to each first luma sample and are equal to each other. The two weighting factors are signaled once in at least one weighting factor.
[0117] (A17) In some implementations of any of A1-A16, the filter shape corresponds to an odd number of horizontal luma samples centered at the first luma sample or an odd number of vertical luma samples centered at the first luma sample.
[0118] (A18) In some implementations of any of A1 to A17, the filter shape is applied to a sequence of image frames including the current image frame, the current image frame, a slice of the current image frame, a superblock including the current coding block, or the current coding block.
[0119] (A19) In some implementations of any of A1-A18, the current coding block has a block size, and the filter shape is determined based on the block size.
[0120] (A20) In some implementations of A19, the block size is less than a predetermined block threshold and the filter includes a first filter having a weighting factor of a first factor number.
[0121] (A21) In some implementations of A19, the block size is greater than a predetermined block threshold and the filter includes a second filter having a weighting factor of a second factor number.
[0122] (A22) In some implementations of any of A1 to A21, the current coding block has a first block size greater than a predetermined block threshold, and the second coding block has a second block size less than or equal to the predetermined block threshold. A first filter applied to the first coding block has weighting factors of a first factor number. A second filter applied to the second coding block includes weighting factors of a second factor number. The second factor number is greater than the first factor number, and the second filter has a different shape than the first filter.
[0123] (A23) In some implementations of A1-A22, the filter is selected from a first filter and a second filter, the first filter corresponding to a smaller number of weighting factors than the second filter and having a higher accuracy level than the second filter.
[0124] (A24) In some implementations of any of A1-A23, the CCIP mode includes a multi-chroma from luma (multi-CfL) mode. Method 700 further includes determining that the current coding block is coded in multi-CfL mode. According to the determination that the current coding block is coded in multi-CfL mode, a filter and multiple neighboring luma samples of a first luma sample of the current coding block are identified. The first chroma sample of the current coding block is a weighted sum of the first luma sample, the multiple neighboring luma samples, an output of a nonlinear function of the first luma sample, and a bias component.
[0125] (A25) In some implementations of A1-A242, each weighting factor includes an integer portion and a fractional portion.
[0126] (A26) In some implementations, a method for encoding video data is implemented. The method includes identifying a first luma sample of a current coding block of a current image frame and a first chroma sample co-located with the first luma sample, identifying multiple neighboring luma samples of the first luma sample based on a filter shape of a filter, determining that the first chroma sample is generated by combining the first luma sample and the multiple neighboring luma samples using multiple weighting factors, selecting at least one weighting factor, and generating a video bitstream including the at least one weighting factor for a current coding block of the current image frame, wherein the video bitstream includes a syntax element for a component-to-component intra prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples.
[0127] In another aspect, some embodiments include a computing system (e.g., server system 112) including control circuitry (e.g., control circuitry 302) and a memory (e.g., memory 314) coupled to the control circuitry, the memory storing one or more instruction sets configured to be executed by the control circuitry, the one or more instruction sets including instructions for performing any of the methods described herein (e.g., A1-A26 above).
[0128] In yet another aspect, some embodiments include a non-transitory computer-readable storage medium storing one or more sets of instructions for execution by control circuitry of a computing system, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1-A26 above).
[0129] The proposed methods may be used separately or combined in any order. Furthermore, each of the methods (or embodiments), the encoder, and the decoder may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). For example, the one or more processors execute a program stored in a non-transitory computer-readable medium. Hereinafter, the term block may be interpreted as a prediction block, a coding block, or a coding unit, i.e., a CU.
[0130] Terms such as "first," "second," and the like may be used herein to describe various elements, but it will be understood that these elements are not to be limited by these terms. These terms are used only to distinguish one element from another.
[0131] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the scope of the claims. As used in the description of the embodiments and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. It will also be understood that the term "and / or," as used herein, refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms "comprises" and / or "comprising," when used herein, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0132] As used herein, the term "if" may be interpreted to mean "when" or "upon" or "responsive to determining" or "pursuant to determining" or "responsive to detecting" a stated condition precedent is true, depending on the context. Similarly, the phrases "if it is determined that [the stated condition precedent is true]" or "if [the stated condition precedent is true]" or "when [the stated condition precedent is true]" may be interpreted to mean "upon determining" or "responsive to determining" or "pursuant to determining" or "detecting" or "responsive to detecting" that a stated condition precedent is true, depending on the context.
[0133] The foregoing description has been described with reference to specific embodiments for purposes of explanation. However, the exemplary description above is not intended to be exhaustive or to limit the scope of the claims to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments were chosen and described to best explain the principles of operation and practical application, thereby enabling others skilled in the art. [Explanation of symbols]
[0134] 100 communication system, 102 source device, 104 video source, 106 encoder component, 108 video bitstream, 110 network, 112 server system, 114 coder component, 116 video bitstream, encoded video data, 120 electronic device, 120-1 electronic device, 120-m electronic device, 122 decoder component, 124 display, 202 source coder, 204 controller, 206 predictor, 208 reference picture memory, 210 local decoder, 212 coding engine, 214 entropy coder, 216 video sequence, 218 communication channel, 252 buffer memory, 254 parser, 256 loop filter unit, 258 scaler / inverse transform unit, 260 motion compensated prediction unit, 262 intra-picture prediction unit, 264 current picture memory, 266 reference picture memory, 268 aggregator, 270; symbols, 302; control circuitry, 304; network interface, 306; user interface, 308; output device, 310; input device, 312; communication bus, 314; memory, 316; operating system, 318; network communication module, 320; coding module, 322; decoding module, 324; analysis module, 326; transform module, 328; prediction module, 330; filter module, 340; encoding module, 342; code module, 344; prediction module, 352; picture memory, 400; scheme, 402; chroma sample, 402C; chroma sample, luma sample, 404; chroma sample, luma sample, 404C; chroma sample, horizontal luma sample, vertical luma sample, 404E; east / right luma sample, east / right neighboring sample, 404N Vertical luma sample, North / top luma sample, North / top neighbor sample, neighbor luma sample, 404S South / bottom luma sample, South / bottom neighbor sample, neighbor luma sample, 404W West / left luma sample, West / left neighbor sample, horizontal luma sample, neighbor luma sample, 404x neighbor luma sample, 406, 406C current coding block, 406W sample, 408 current image frame, 410, 410D weighting factor, 410SSubset of weighting factors, 412 reference area, 412BL lower left reference area, 412L left reference area, 412T upper reference area, 412TL upper left reference area, 412TR upper right reference area, 414T upper reference area, 414L left reference area, 414TL upper left reference area, 414TR upper right reference area, 414BL lower left reference area, 416 precision level, 600 filter, 600A~600F filter shape
Claims
1. 1. A method for decoding video data, comprising: receiving a video bitstream including a current coding block of a current image frame, the video bitstream including a syntax element for a component cross-prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples; identifying a first luma sample of the current coding block and a first chroma sample co-located with the first luma sample in the current coding block; identifying a plurality of neighboring luma samples of the first luma sample based on a filter shape of a filter, wherein the first luma sample is configured to be determined by combining at least the first luma sample with a plurality of neighboring luma samples of the first luma sample using a plurality of weighting factors; extracting at least one weighting factor from the video bitstream; and deriving at least another weighting factor of the plurality of weighting factors that is not signaled in the video bitstream; combining the first luma sample and the plurality of neighboring luma samples based on the at least one weighting factor signaled in the video bitstream and the at least another weighting factor not signaled in the video bitstream to generate the first chroma sample; reconstructing the current coding block including the first chroma sample.
2. 2. The method of claim 1 , wherein the at least one weighting factor of the plurality of weighting factors is signaled with the video bitstream and includes all of the plurality of weighting factors applied to generate the first chroma sample.
3. the filter shape of the filter is a cross shape, and according to the filter shape, the plurality of neighboring luma samples include four neighboring luma samples arranged in the cross shape centered on the first luma sample; the plurality of weighting factors include seven weighting factors corresponding to the first luma sample, the four neighboring luma samples, an output of a nonlinear function of the first luma sample, and a bias component; The method of claim 1.
4. 4. The method of claim 3, wherein the at least one weighting factor of the plurality of weighting factors signaled with the video bitstream includes five weighting factors associated with the filter, and the at least another weighting factor includes two weighting factors associated with the output of the nonlinear function and the bias component.
5. 2. The method of claim 1, wherein the plurality of weighting factors comprises a first number (M) of weighting factors in total, and the at least one weighting factor of the plurality of weighting factors is signaled with the video bitstream and comprises a second number (N) of weighting factors, the first number (M) being greater than the second number (N).
6. The method of claim 1 , wherein the at least one weighting factor of the plurality of weighting factors is signaled with the video bitstream and comprises an intermediate weighting factor corresponding to the first luma sample.
7. 2. The method of claim 1, wherein, for the first chroma sample, the at least one weighting factor of the plurality of weighting factors is complementary to the at least another weighting factor in the plurality of weighting factors, and each weighting factor of the at least one weighting factor of the plurality of weighting factors has an absolute value that is greater than or equal to an absolute value of any of the at least another weighting factor.
8. 2. The method of claim 1, wherein the at least another weighting factor is derived based on chroma and luma samples in a reference area of the current coding block, the reference area including another or multiple coding blocks decoded before the current coding block.
9. 2. The method of claim 1, wherein the at least one weighting factor of the plurality of weighting factors includes two or more weighting factors having a precision level, the precision level being selected based on a number of weighting factors included in the at least one weighting factor of the plurality of weighting factors.
10. The at least one weighting factor of the plurality of weighting factors is a first number (N 1 ) and having a first accuracy level; The at least one weighting factor of the plurality of weighting factors is a second number (N 2 2. The method of claim 1, wherein the second number includes a weighting factor of 0.01, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 39 , 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 69, 70, 71
11. 1. A computing system comprising: a control circuit; a memory storing one or more programs configured to be executed by the control circuitry, the one or more programs comprising: receiving a video bitstream including a current coding block of a current image frame, the video bitstream including a syntax element for a component cross-prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples; identifying a first luma sample of the current coding block and a first chroma sample co-located with the first luma sample in the current coding block; identifying a plurality of neighboring luma samples of the first luma sample based on a filter shape of a filter, wherein the first luma sample is configured to be determined by combining at least the first luma sample with a plurality of neighboring luma samples of the first luma sample using a plurality of weighting factors; extracting at least one weighting factor from the video bitstream; and deriving at least another weighting factor of the plurality of weighting factors that is not signaled in the video bitstream; combining the first luma sample and the plurality of neighboring luma samples based on the at least one weighting factor signaled in the video bitstream and the at least another weighting factor not signaled in the video bitstream to generate the first chroma sample; reconstructing the current coding block including the first chroma sample.
12. The computing system of claim 11 , wherein the at least one weighting factor of the plurality of weighting factors comprises two or more weighting factors having different levels of precision.
13. 12. The computing system of claim 11, wherein the at least one weighting factor of the plurality of weighting factors comprises a first weighting factor and a second weighting factor, the second weighting factor being signaled using a difference from the first weighting factor.
14. two weighting factors corresponding to two neighboring luma samples symmetrically located with respect to each of the first luma samples, being equal to each other; the two weighting factors are signaled once in the at least one weighting factor of the plurality of weighting factors; The computing system of claim 11.
15. 12. The computing system of claim 11, wherein the filter shape corresponds to an odd number of horizontal luma samples centered about the first luma sample or an odd number of vertical luma samples centered about the first luma sample.
16. 1. A non-transitory computer-readable storage medium storing one or more programs for execution by control circuitry of a computing system, the one or more programs comprising: receiving a video bitstream including a current coding block of a current image frame, the video bitstream including a syntax element for a component cross-prediction (CCIP) mode indicating whether each chroma sample of the current coding block is determined based on one or more luma samples; identifying a first luma sample of the current coding block and a first chroma sample co-located with the first luma sample in the current coding block; identifying a plurality of neighboring luma samples of the first luma sample based on a filter shape of a filter, wherein the first luma sample is configured to be determined by combining at least the first luma sample with a plurality of neighboring luma samples of the first luma sample using a plurality of weighting factors; extracting at least one weighting factor from the video bitstream; and deriving at least another weighting factor of the plurality of weighting factors that is not signaled in the video bitstream; combining the first luma sample and the plurality of neighboring luma samples based on the at least one weighting factor signaled in the video bitstream and the at least another weighting factor not signaled in the video bitstream to generate the first chroma sample; and reconstructing the current coding block including the first chroma sample.
17. 17. The non-transitory computer-readable storage medium of claim 16, wherein the filter shape is applied to a sequence of image frames including the current image frame, the current image frame, a slice of the current image frame, a superblock including the current coding block, or the current coding block.
18. the current coding block has a first block size greater than a predetermined block threshold, and the second coding block has a second block size less than or equal to the predetermined block threshold; a first filter applied to the first coding block having weighting factors of a first factor; a second filter applied to the second coding block includes a second factor number of weighting factors; the second factor is greater than the first factor, and the second filter has a different shape than the first filter.
17. The non-transitory computer-readable storage medium of claim 16.
19. 17. The non-transitory computer-readable storage medium of claim 16, wherein the filter is selected from a first filter and a second filter, the first filter corresponding to a smaller number of weighting factors and having a higher level of precision than the second filter.
20. The CCIP mode includes a multi-chroma from luma (multi-CfL) mode, and the one or more programs include: and further comprising instructions for performing the step of determining that the current coding block is to be coded in the multi-CfL mode. According to the determination that the current coding block is to be coded in the multi-CfL mode, the filter and the plurality of neighboring luma samples of the first luma sample of the current coding block are identified; 17. The non-transitory computer-readable storage medium of claim 16, wherein the first chroma sample of the current coding block is a weighted sum of the first luma sample, the plurality of neighboring luma samples, an output of a non-linear function of the first luma sample, and a bias component.
Citation Information
Patent Citations
An apparatus, a method and a computer program for video coding and decoding
WO2023187250A1
Method and device for encoding / decoding image on basis of convolutional cross-component model (CCCM) prediction, and recording medium for storing bitstream
WO2023204624A1
Improved signaling method for scaling parameter in chroma from LUMA intra prediction mode
WO2023239398A1
Signaling corrections for a convolutional cross-component model
WO2024002807A1
Region-based cross-component prediction
WO2024081010A1