Method, device and program for determining chroma samples in intra-prediction modes of video coding

By determining chroma samples in a current coding block based on target chroma samples from neighboring blocks, the method addresses the inefficiencies in existing video coding technologies, reducing computational and storage requirements.

JP2025517264APending Publication Date: 2025-06-05TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024526868
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-05-02
Filing Date
2023-05-03
Publication Date
2025-06-05

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently determining chroma samples within a coding block, particularly in intra prediction modes, which can lead to increased computing and storage resources requirements.

Method used

The method involves identifying a current coding block and neighboring coding blocks, selecting candidate luma samples from these neighbors, and determining a target luma sample to predict chroma samples based on the target chroma sample from the neighboring blocks, without relying on a linear relationship between luma and chroma samples.

Benefits of technology

This approach reduces the computational complexity and storage needs by determining chroma samples based on neighboring blocks, thereby improving the efficiency of video coding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025517264000001_ABST
    Figure 2025517264000001_ABST
Patent Text Reader

Abstract

Various implementations described herein include methods and systems for coding video (e.g., decoding video data). In one aspect, the method includes identifying a current coding block and one or more neighboring coding blocks in a current frame. The current coding block has a first luma sample. The method further includes identifying a plurality of candidate luma samples in the one or more neighboring coding blocks for the first luma sample. The one or more neighboring coding blocks are coded in a 4:2:0 chroma color format. The method further includes identifying a target luma sample including a 2×2 luma block among the plurality of candidate luma samples, and determining a first chroma sample co-located with the first luma sample based on the target chroma sample co-located with the target luma sample in the one or more neighboring coding blocks.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] [Related Applications] This application claims priority to U.S. Provisional Patent Application No. 63 / 343,024, entitled "Chroma from Luma Intra Prediction Mode Complexity Reduction," filed May 17, 2022, and is a continuation of and claims priority to U.S. Patent Application No. 18 / 142,414, entitled "Systems and Methods for Determining Chroma Samples in an Intra Prediction Mode of Video Coding," filed May 2, 2023. The entire contents of all of these applications are incorporated by reference.

[0002] [Technical field] The disclosed embodiments relate generally to video coding and include, but are not limited to, systems and methods for determining chroma samples within a coding block based on chroma samples of one or more neighboring coding blocks in 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, smart phones, video conferencing 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 in storage devices. Due to the limited bandwidth capacity of communication networks and 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 it 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 uses prediction methods (e.g., inter-prediction, intra-prediction, etc.) that exploit the redundancy inherent in video data. Video coding aims 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). Versatile Video Coding (VVC), also known as H.266, is a video compression standard intended as a 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. On January 8, 2019, the approved version 1.0.0 with Errata 1 of the specification was released. Summary of the Invention

[0006] As mentioned above, encoding (compression) reduces bandwidth and / or storage space requirements. As will be described in more detail below, both lossless and lossy compression can be used. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal via a decoding process. Lossy compression refers to an encoding / decoding process where the original video information is not fully preserved during encoding 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 signals is made small enough to make the reconstructed signal useful for the intended application. The amount of acceptable 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. Higher acceptable distortion generally allows for coding algorithms that result in higher loss and higher compression ratios.

[0007] This disclosure describes determining chroma samples in a current coding block based on chroma samples of one or more neighboring coding blocks in intra prediction modes of video coding. In some embodiments related to chroma from luma (CfL) modes, chroma samples of a current coding block are predicted from co-located luma samples, e.g., based on a linear relationship, but neighboring samples of the co-located luma samples are not used to determine chroma samples of the current coding block. In other words, CfL generally refers to a coding tool that predicts information in a chroma plane based on previously encoded information in the luma plane by implementing a linear model for luma pixels. Furthermore, in some embodiments of the present application, a target luma sample is identified in one or more neighboring coding blocks for a luma sample in the current coding block, and the target chroma sample co-located with the target luma sample in the one or more neighboring coding blocks is applied to determine a chroma sample co-located with the chroma sample in the current coding block. By these means, the chroma samples of a current coding block are determined based on the target chroma samples of adjacent coding blocks without relying on a linear relationship between the luma samples and chroma samples of the current coding block, thereby helping to save computing and storage resources during video coding.

[0008] According to some embodiments, a method of video coding (e.g., video encoding) is provided. The method includes identifying, in a current frame, a current coding block and one or more neighboring coding blocks. The current coding block has a first luma sample. The method further includes identifying a plurality of candidate luma samples in the one or more neighboring coding blocks for the first luma sample. The one or more neighboring coding blocks are coded in a 4:2:0 chroma color format. The method further includes identifying a target luma sample among the plurality of candidate luma samples and determining a first chroma sample co-located with the first luma sample based on the target chroma sample co-located with the target luma sample in the one or more neighboring coding blocks. The target luma sample includes a 2×2 luma block.

[0009] 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 sets of instructions. The one or more sets of instructions 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.

[0010] According to some embodiments, a non-transitory computer-readable storage medium is provided. The non-transitory computer-readable storage medium stores one or more sets of instructions for execution by a computing system. The one or more sets of instructions include instructions for performing any of the methods described herein.

[0011] Thus, disclosed are methods, as well as devices and systems, for coding video, which may complement or replace conventional methods, devices and systems for video coding.

[0012] The features and advantages described herein are not necessarily all-inclusive, and some additional features and advantages will become apparent to those skilled in the art, especially upon consideration of the drawings, specification, and claims provided in this disclosure.Furthermore, it should be noted that the language used herein has been selected primarily for ease of reading and educational purposes, and not necessarily to delineate or limit the subject matter described herein. [Brief description of the drawings]

[0013] So that the present disclosure may be more particularly understood, a more particular description can be had by reference to the features of the various embodiments, some of which are illustrated in the accompanying drawings, which, however, merely illustrate the relevant features of the present disclosure and should not therefore be considered necessarily limiting, as the description may also recognize other useful features as those skilled in the art will recognize upon reading the present disclosure. [Figure 1] 1 is a block diagram illustrating an exemplary communication system in accordance with some embodiments. [Figure 2A] FIG. 2 is a block diagram illustrating exemplary elements of an encoder component according to some embodiments. [Figure 2B] 2 is a block diagram illustrating exemplary elements of a decoder component according to some embodiments. [Diagram 3] FIG. 1 is a block diagram illustrating an exemplary server system according to some embodiments. [Figure 4A] 1 is an example current coding block that includes multiple luma samples related to candidate luma samples located in one or more neighboring coding blocks, in accordance with some embodiments. [Figure 4B] Chroma samples that are co-located with luma samples in current coding block 400, according to some embodiments. [Diagram 5] 4 is an example current coding block corresponding to a distinct pre-defined sample selection policy, according to some embodiments. [Figure 6] 4 is an example current coding block corresponding to a distinct pre-defined sample selection policy, according to some embodiments. [Figure 7] 4 is an example current coding block corresponding to a distinct pre-defined sample selection policy, according to some embodiments. [Figure 8A] 4 is an example current coding block corresponding to position-based candidate luma samples 404 located in one or more neighboring coding blocks, according to some embodiments. [Figure 8B] 8B is a plurality of chroma samples in the current coding block of FIG. 8A according to some embodiments. [Figure 9A] 11 is another example current coding block corresponding to position-based candidate luma samples located in one or more neighboring coding blocks, in accordance with some embodiments. [Figure 9B] 9B is a plurality of chroma samples in the current coding block of FIG. 9A according to some embodiments. [Figure 10] According to some embodiments, an exemplary current coding block is in a block context that is immediately adjacent to adjacent samples of a neighboring coding block. [Figure 11] 4 illustrates a chroma subsampling scheme that is applied to subsample luma samples of a current coding block 400 and one or more neighboring coding blocks of a current frame, according to some embodiments. [Figure 12] 1 is a flow diagram illustrating a method for coding video according to some embodiments.

[0014] According to common practice, the various features illustrated in the drawings are not necessarily drawn to scale and like reference numerals may be used throughout the specification and drawings to refer to like features. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015] This disclosure describes determining chroma samples in a current coding block based on chroma samples of one or more neighboring coding blocks in an intra-prediction mode of video coding. Target luma samples are identified in one or more neighboring coding blocks for luma samples in the current coding block, and the target chroma samples co-located with the target luma samples in the one or more neighboring coding blocks are applied to determine chroma samples co-located with the chroma samples in the current coding block. Thus, the chroma samples of the current coding block are determined based on the target chroma samples of the neighboring coding blocks without implementing a linear relationship between the luma samples and chroma samples of the current coding block, which helps save computing and storage resources during video coding.

[0016] 1 is a block diagram illustrating a communication system 100 according to some embodiments. Communication system 100 includes a source device 102 and a number 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, videoconferencing applications, digital TV applications, and media storage and / or distribution applications.

[0017] The source device 102 includes a video source 104 (e.g., a camera component or media storage) and an encoder component 106. In some embodiments, the video source 104 is a digital camera (e.g., configured to create an uncompressed video sample stream). The encoder component 106 generates one or more encoded video bitstreams from the video stream. The video stream from the video source 104 may be of a high data volume compared to the encoded video bitstream 108 generated by the encoder component 106. Because the encoded video bitstream 108 is of a lower data volume (less data) compared to the video stream from the video source, the encoded video bitstream 108 requires less bandwidth to transmit and less storage space to store compared to the video stream from the video source 104. In some embodiments, the source device 102 does not include the encoder component 106 (e.g., configured to transmit uncompressed video data to the network 110).

[0018] The one or more networks 110 represent any number of networks that carry information between the source device 102, the server system 112, and / or the electronic device 120, including, for example, 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.

[0019] 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.

[0020] 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 accommodate potentially different bitstreams for one or more of electronic devices 120. In some embodiments, a MANE is provided separate from server system 112.

[0021] 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 output 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 do not include a display component (e.g., are communicatively coupled to an external display device and / or include 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.

[0022] The source device and / or the electronic devices 120 are sometimes referred to as “terminal devices” or “user devices.” In some embodiments, the source device 120 and / or one or more of the electronic devices 102 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.

[0023] In an exemplary operation of the communication system 100, the source device 102 transmits the encoded video bitstream 108 to the server system 112. For example, the source device 102 may code a stream of pictures captured by the source device. The server system 112 may receive the encoded video bitstream 108 and decode and / or encode the encoded video bitstream 108 using a coder component 114. For example, the server system 112 may apply a more optimal encoding to the video data for network transmission and / or storage. The server system 112 may transmit the encoded video data 116 (e.g., one or more coded video bitstreams) to one or more of the electronic devices 120. Each electronic device 120 may decode the encoded video data 116 to recover and optionally display the video pictures.

[0024] In some embodiments, the transmission described above is a unidirectional data transmission. The unidirectional data transmission may be utilized in media serving applications, etc. In some embodiments, the transmission described above is a bidirectional data transmission. The bidirectional data transmission may be utilized in video conferencing applications, etc. In some embodiments, the encoded video bitstream 108 and / or the encoded video data 116 are encoded and / or decoded according to any of the video coding / compression standards described herein, such as HEVC, VVC, and / or AV1.

[0025] 2A is a block diagram illustrating exemplary elements of the encoder component 106 according to some embodiments. The encoder component 106 receives a source video sequence from a video source 104. In some embodiments, the encoder component includes a receiver (e.g., a transceiver) component configured to receive the source video sequence. In some embodiments, the encoder component 106 receives a video sequence from a remote video source (e.g., a video source that is a component of a device different from the encoder component 106). The video source 104 may 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., B.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, the video source 104 is a storage device that stores previously captured / prepared video. In some embodiments, the video source 104 is a camera that captures local image information as a video sequence. Video data may be provided as a number of individual pictures which, when viewed sequentially, give the appearance of motion. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following discussion will focus on samples.

[0026] 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 an 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 can 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.

[0027] 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 a reference picture) and a (local) decoder 210. The decoder 210 reconstructs the symbols to create sample data in a similar manner to a (remote) decoder (when the compression between the symbols and the coding video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory 208. Since the decoding of the symbol stream results in a bit-accurate result that does not depend on 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 part 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 synchronization (and the resulting drift if synchronization cannot be maintained due to, for example, channel errors) is known to those skilled in the art.

[0028] The operation of the decoder 210 may be the same as that of a remote decoder, such as the decoder component 122, which is described in more detail below in connection with Figure 2B. However, with brief reference to Figure 2B, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder 214 and the parser 254 may be lossless, the entropy decoding portion of the decoder component 122, including the buffer memory 252 and the parser 254, may not be fully implemented in the local decoder 210.

[0029] An observation that can be made at this point is that any decoder technique, except for analysis / entropy decoding, present in the decoder must necessarily be present in the corresponding encoder in substantially the same functional form. For this reason, the subject matter of the disclosure focuses on the decoder operation. A description of the encoder technique can be omitted, since it is the inverse of the decoder technique, which is described generically. Only in certain areas is a more detailed description required, which is provided below.

[0030] 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 the video sequence designated as reference frames. In this manner, the coding engine 212 codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references 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.

[0031] The decoder 210 decodes the coding video data of frames that may be designated as reference frames based on symbols created by the source coder 202. The operation of the coding engine 212 may advantageously be a lossy process. When the coding 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 frames and store the reconstructed reference frames in the reference picture memory 208. In this way, the encoder component 106 locally stores copies of reconstructed reference frames that have common content with the reconstructed reference frames (without transmission errors) obtained by the remote video decoder.

[0032] The predictor 206 may perform a prediction 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 prediction references for the new picture. The predictor 206 may operate on a sample block-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor 206, the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory 208.

[0033] The output of all the above functional units may be entropy coded 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).

[0034] 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 sequences created by the entropy coder 214 and prepare them for transmission over a communication channel 218, which may be a hardware / software link to a storage device that stores the encoded 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 auxiliary data streams (sources not shown). In some embodiments, the transmitter may 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 include other forms of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, Supplementary Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

[0035] The controller 204 may manage the operation of the encoder component 106. During coding, the controller 204 may assign to each coding picture a particular coding picture type, which may affect the coding technique applied to the respective picture. For example, a picture may be assigned as an intra picture (I picture), a predictive picture (P picture), or a bidirectionally predictive picture (B picture). An intra picture may be encoded and decoded without using other frames 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 predictive picture may be encoded and decoded using intra prediction or inter prediction, which uses at most one motion vector and reference index to predict sample values ​​of each block. A bidirectionally predictive picture may be encoded and decoded using intra prediction or inter prediction, which uses at most two motion vectors and reference indexes to predict sample values ​​of each block. Similarly, a multi-predicted picture can use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0036] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8 or 16x16 samples, respectively) and 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 respective picture of the block. For example, blocks of an I-picture may be non-predictively coded or may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be non-predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be non-predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0037] A video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation in a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being coded / decoded, called a current picture, is partitioned into blocks. When a block in the current picture resembles a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture can be coded by a vector called a motion vector. A motion vector points to a reference block in a reference picture, and may have a third dimension that identifies the reference picture if multiple reference pictures are used.

[0038] Encoder component 106 may perform coding operations in accordance with a given video coding technique or standard, such as any of those 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 coding video data may conform to a syntax specified by the video coding technique or standard being used.

[0039] 2B is a block diagram illustrating example 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).

[0040] In some embodiments, the decoder component 122 includes a receiver coupled to the channel 218 and configured to receive data from the 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 the 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 the 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, which may be forwarded to a respective usage 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. The additional data may be used by the decoder component 122 to decode the data and / or to more accurately reconstruct the original video data. The further data may be in the form of, for example, temporal, spatial or SNR enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0041] 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.

[0042] The buffer memory 252 is coupled between the channel 218 and the parser 254 (e.g., to deal with network jitter). In some embodiments, the buffer memory 252 is separate from the decoder component 122. In some embodiments, a separate buffer memory is provided between the output of the channel 218 and the decoder component 122. In some embodiments, in addition to the buffer memory 252 in the decoder component 122 (e.g., configured to handle playback timing), a separate buffer memory is provided external to the decoder component 122 (e.g., to deal with network jitter). When receiving data from a storage / forwarding device with sufficient bandwidth and controllability or from an isochronous network, the buffer memory 252 may not be needed or may be small. For use over a best-effort packet network such as the Internet, the buffer memory 252 may be needed and may be relatively large, advantageously adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) external to the decoder component 122.

[0043] 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 may be in the form of, for example, a Supplementary 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 a Group of Pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. Parser 254 may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0044] The reconstruction of symbols 270 may involve a number of different units, depending on the type of coded video picture or part thereof (inter-picture and intra-picture, inter-block and intra-block, etc.), and 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.

[0045] Beyond the functional blocks described above, the decoder component 122 can be conceptually subdivided into a number of 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 is maintained.

[0046] The scalar / inverse transform unit 258 receives the quantized transform coefficients and control information (such as which transform to use, block size, quantization coefficients and / or quantization scaling matrix) from the parser 254 as symbols 270. The scalar / inverse transform unit 258 may output blocks containing sample values ​​that may be input to an aggregator 268.

[0047] 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 part of the current picture. Such prediction information can 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 retrieved 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.

[0048] 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 may access the reference picture memory 266 to retrieve samples used for prediction. After motion compensating the retrieved 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 residual signals) to generate output sample information. The addresses in the reference picture memory 266 from which the motion compensated prediction unit 260 retrieves the prediction samples may be controlled by a motion vector. The motion vector may be made 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 ​​retrieved from the reference picture memory 266 when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0049] The output samples of aggregator 268 may be subjected to various loop filtering techniques in loop filter unit 256. The video compression techniques may include in-loop filter techniques controlled by parameters contained 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 previous portions (in decoding order) of the coded picture or coded video sequence, or may be responsive to previously reconstructed loop filtered sample values.

[0050] 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 stored in a reference picture memory 266 for use in future inter-picture prediction.

[0051] Once a particular coding picture is fully reconstructed, it can be used as a reference picture for future prediction. Once a coding picture is fully reconstructed and the coding picture is identified as a reference picture (e.g., by parser 254), the current reference picture can become part of reference picture memory 266, and a new current picture memory can be reallocated before beginning reconstruction of a subsequent coding picture.

[0052] The decoder component 122 may perform decoding operations according to a given video compression technique, which may be documented in a standard, such as any of the standards described herein. The coding video sequence may conform to a syntax specified by the video compression technique or standard being used, in the sense of conforming to the syntax of the video compression technique or standard, as specified in a video compression technique document or standard, particularly a profile document therein. Also, to conform to some video compression techniques or standards, the complexity of the coding video sequence may be within a range as defined by a level of the video compression technique or standard. In some cases, the level limits a maximum picture size, a maximum frame rate, a maximum reconstruction sample rate (e.g., measured in megasamples per second), a maximum reference picture size, etc. In some cases, the limits set by the level can be further limited through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled within the coding video sequence.

[0053] 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).

[0054] The network interface 304 may be configured to interface with one or more communication networks (e.g., wireless, wired 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, WLAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV and terrestrial broadcast TV, vehicular and industrial including CANBus, etc. Such communications may be unidirectional, receive only (e.g., broadcast TV), unidirectional 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.

[0055] The user interface 306 includes one or more output devices 308 and / or one or more input devices 310. The input devices 310 may include one or more of a keyboard, a mouse, a trackpad, a touch screen, a data glove, a joystick, a microphone, a scanner, a camera, etc. The output devices 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.

[0056] 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, a non-volatile solid state memory device 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 that handles various basic system services and contains instructions for performing hardware-dependent tasks A network communications module 318 that is 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, one or more of the following: a decoding module 322 for performing various functions in relation to decoding the encoded data, such as those previously described in relation to the decoder component 122; and An encoding module 340 for performing various functions related to encoding data, such as those previously described with respect to the encoder component 106. ● 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.

[0057] 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).

[0058] In some embodiments, the encoding module 340 includes a code module 342 (e.g., configured to perform various functions previously described with respect to the source coder 202 and / or the coding engine 212) and a prediction module 344 (e.g., configured to perform various functions previously described with respect to the predictor 206). In some embodiments, the decoding module 322 and / or the encoding module 340 include a subset of the modules shown in FIG. 3. For example, a shared prediction module is used by both the decoding module 322 and the encoding module 340.

[0059] Each of the above identified modules stored in memory 314 corresponds to a set of instructions for performing functions described herein. The above identified modules (e.g., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise rearranged 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.

[0060] In some embodiments, the server system 112 includes a web or Hypertext Transfer Protocol (HTTP) server, a File Transfer Protocol (FTP) server, as well as 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), and the like.

[0061] 3 illustrates a server system 112 according to some embodiments, however, FIG. 3 is not intended as a structural schematic diagram of the embodiments described herein, but rather as a functional description of various features that may be present in one or more server systems. 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 a single item may be implemented by one or more servers. The actual number of servers used to implement the server system 112, and how functionality is allocated among them, will vary from implementation to implementation, and will optionally depend in part on the amount of data traffic the server system processes during peak and average usage periods.

[0062] FIG. 4A is an example current coding block 400 including multiple luma samples 402 associated with candidate luma samples 404 located in one or more neighboring coding blocks 406, according to some embodiments, and FIG. 4B is a multiple chroma samples 412 co-located with multiple luma samples 402 in the current coding block 400, according to some embodiments. A GOP includes a sequence of image frames. The multiple image frames include a current image frame further including a current coding block 400. The current video frame including the current coding block 400 is encoded in an intra-prediction mode. According to the intra-prediction mode, pixels of the current coding block 400 are predicted from pixels belonging to one or more neighboring coding blocks 406 that are around the current coding block 400. The current coding block 400 is directly adjacent to and shares a respective boundary with each of the one or more neighboring coding blocks 406. In some embodiments, the one or more neighboring coding blocks 406 include an upper coding block 406T that is immediately above the current coding block 400 and shares an upper boundary with the current coding block 400. In some embodiments, the one or more neighboring coding blocks 406 include a left coding block 406 L that is immediately to the left of the current coding block 400 and shares a left boundary with the current coding block 400 .

[0063] Referring to FIG. 4A , the current coding block 400 includes a plurality of luma samples, further including a first luma sample 402 located at sample position (i,j), e.g., (0,0). Based on a predetermined sample selection policy, a plurality of candidate luma samples 404 are identified within one or more neighboring coding blocks 406 for the first luma sample 402. For example, the plurality of candidate luma samples 404 include all luma samples in a bottom-most row of luma samples 405T of the top-neighboring coding block 406T, a right-most column of luma samples 405L of the top-neighboring coding block 406T, or both. Each of the plurality of candidate luma samples 404 is directly adjacent to a respective top or left boundary of the current coding block 400. A target luma sample 408 is identified from among the plurality of candidate luma samples 404. In some embodiments, the one or more neighboring coding blocks 406 are coded in a 4:2:0 chroma color format, and the target luma sample 408 includes a 2×2 luma block. In some embodiments, the target luma sample 408 is identified according to a determination that the target luma sample 408 is closer in magnitude to the first luma sample 402 than any remaining luma sample in the plurality of candidate luma samples 404. For example, the first luma sample 402 has a luma value of 111, and the target luma sample 408 has a luma value of 112, which is closest to 111 among the plurality of candidate luma samples 404 in FIG.

[0064] Referring to FIG. 4B, the current coding block 400 further includes a plurality of chroma samples, each of which is co-located with a respective one of the plurality of luma samples. The plurality of chroma samples includes a first chroma sample 412 co-located with the first luma sample 402. The one or more neighboring coding blocks 406 also include a target chroma sample 418 co-located with the target luma sample 408 identified from the plurality of candidate luma samples 404 in FIG. 4A. The first chroma sample 412 is determined based on the target chroma sample 418 co-located with the target luma sample 408 in the one or more neighboring coding blocks 406. In other words, after the target luma sample 408 is identified, the corresponding target chroma sample 418 is copied to the first chroma sample 412 co-located with the first luma sample 402.

[0065] In some embodiments, a subset of candidate luma samples 410 (e.g., 410A and 410B) is identified from the plurality of candidate luma samples according to a determination that the subset of candidate luma samples 404 is uniformly different in magnitude from the first luma sample and is closer in magnitude to the first luma sample 402 than any remaining luma samples in the plurality of candidate luma samples 404. A target luma sample 408 is selected from the subset of candidate luma samples based on a distance of the target luma sample 408 from the first luma sample 402. Specifically, in some embodiments, for each of the subset of candidate luma samples 410, a respective distance between the first luma sample 402 and the respective candidate luma sample 410 is determined. One of the subset of candidate luma samples (e.g., 410B) is selected as the target luma sample 408 according to a determination that the distance 410 of one of the subset of candidate luma samples is smallest among the respective distances of the subset of candidate luma samples. 4A , in one example, luma samples 410A and 410B both have the same luma value of 112. In another example, luma samples 410A and 410B have luma values ​​of 110 and 112, respectively. Luma samples 410A and 410B differ evenly in magnitude from a first luma sample 402 (e.g., having a luma value of 111) and are closest in magnitude to the first luma sample 402 among a plurality of candidate luma samples 404. Candidate luma sample 410B is selected as the target luma sample 408 according to a determination that candidate luma sample 410B is closer in distance to the first luma sample 402 than candidate luma sample 410A.

[0066] During encoding, the encoder 106 identifies a coding block mode of the current coding block 400. According to the determination that the coding block mode is the chroma copy mode, the encoder 106 (specifically, the coding engine 212 in FIG. 2A) determines a first chroma sample 412 based on a target chroma sample 418 that is co-located with the target luma sample 408 in one or more neighboring coding blocks 406 of the current coding block 400. During decoding, the decoder 122 receives a data stream of video data and identifies a coding block mode of the current coding block 400. According to the determination that the coding block mode is the chroma copy mode, the decoder 122 (specifically, the intra prediction unit 262 in FIG. 2B) determines a first chroma sample 412 based on a target chroma sample 418 that is co-located with the target luma sample 408 in one or more neighboring coding blocks 406 of the current coding block 400. By these means, the first chroma sample 412 is copied from an existing target chroma sample 418 of one or more adjacent coding blocks 406 after some comparison operations, and no addition or multiplication arithmetic operations are involved, thereby saving computing and storage resources during video coding.

[0067] 5-7 are three exemplary current coding blocks 400A, 400B, and 400C, each corresponding to a distinct predefined sample selection policy, according to some embodiments. For each current coding block 400A, 400B, or 400C, a distinct predefined sample selection policy is applied to identify multiple candidate luma samples 404 in one or more neighboring coding blocks 406 of the current coding block 400A, 400B, or 400C. With reference to FIG. 5, in some embodiments, one of every two candidate luma samples in the bottom-most row of luma samples 405T of the top-neighboring coding block 406T and the right-most column of luma samples 405L of the left-neighboring coding block 406L is used as the candidate luma sample 404 for determining the target luma sample 408 for each luma sample of the current coding block 400A. In some situations, the first luma sample 402 is located in an even-numbered column or an even-numbered row of the current coding block 400. The even-numbered luma samples in the bottom-most row of the above-neighboring coding block 406T and the even-numbered luma samples in the right-most column of the left-neighboring coding block 406L are used as candidate luma samples 404 from which a target luma sample 408 is selected for the first luma sample 402 in the current coding block 400A. Conversely, in some situations, the first luma sample 402 is located at the intersection of an odd-numbered column and an odd-numbered row of the current coding block 400. The odd-numbered neighboring luma samples in the bottom-most row of the above-neighboring coding block 406T and the odd-numbered neighboring luma samples in the right-most column of the left-neighboring coding block 406L are used as candidate luma samples 404 from which a target luma sample 408 is selected for the first luma sample 402 in the current coding block 400A.

[0068] In some embodiments, the plurality of candidate luma samples 404 includes an Mth luma sample of every N luma samples in a bottom-most row of luma samples 405T of the top-neighboring coding block 406T or a right-most column of luma samples 405L of the left-neighboring coding block 406L, where N is an integer greater than 1 and M is a positive integer less than or equal to N. For example, in FIG. 5, M and N are equal to 1 and 2, respectively. The candidate luma samples 404 include the first sample of every two luma samples in the bottom-most row of luma samples 405T and the right-most column of luma samples 405L. In some embodiments, N is equal to an integer power of 2 (e.g., 2, 4, 8, 16, etc.) and is less than the total number of luma samples in the bottom-most row of luma samples 405T of the top-neighboring coding block 406T. For example, the third luma sample out of every four luma samples in the bottom-most row of luma samples 405T and the right-most column of luma samples 405L is selected as the candidate luma sample 404 .

[0069] 6, in some embodiments, regardless of the position (i,j) of the first luma sample 402, the multiple candidate luma samples 404 include a set of K luma samples at the center of the bottom-most row of the luma samples 405T of the above-neighboring coding block 406T or a set of L luma samples at the center of the right-most column of the luma samples 405L of the left-neighboring coding block 406T, where K and L are positive integers. For example, both K and L are equal to 4. For the first luma sample 402, the corresponding target luma sample 408 is selected from the set of K luma samples of the above-neighboring coding block 406T and the set of L luma samples of the left-neighboring coding block 406L, e.g., a total of eight candidate luma samples 404 in FIG. 6.

[0070] 7, in some embodiments, regardless of the position (i, j) of the first luma sample 402, the multiple candidate luma samples 404 include two sets of P luma samples 702A and 702B at the two ends of the bottom row of the luma sample 702T of the top neighboring coding block 406T, or two sets of Q luma samples 704A and 704B at the two ends of the rightmost column of the luma sample 704L of the left neighboring coding block 406L, where P and Q are positive integers. Optionally, P and Q are equal to or different from each other. For example, in FIG. 7, both P and Q are equal to 1. For the first luma sample 402, a corresponding target luma sample 408 is selected from the four candidate luma samples 702A, 702B, 704A, and 704B.

[0071] FIG. 8A is an example current coding block 400 corresponding to a position-based candidate luma sample 404 located in one or more neighboring coding blocks 406 according to some embodiments, and FIG. 8B is a plurality of chroma samples 412 in the current coding block 400 in FIG. 8A according to some embodiments. FIG. 9A is another example current coding block 400 corresponding to a position-based candidate luma sample 404 located in one or more neighboring coding blocks 406 according to some embodiments, and FIG. 9B is a plurality of chroma samples 412 in the current coding block 400 in FIG. 9B according to some embodiments. In some embodiments, a predefined sample selection policy applied to identify the plurality of candidate luma samples 404 is based on a position of a first luma sample 402 in the current coding block 400, and the plurality of candidate luma samples 404 are identified based at least in part on a position of the first luma sample 402. In some embodiments, according to the predefined sample selection policy, the one or more neighboring coding blocks 406 include a top neighboring coding block 406T or a left neighboring coding block 406L. The plurality of candidate luma samples 404 includes an odd number X of luma samples (e.g., three luma samples 405) including a first central luma sample 804 in a bottom-most row of luma samples 802T of the top-neighboring coding block 406T. The plurality of candidate luma samples 404 further includes an odd number Y of luma samples (e.g., three luma samples 405) including a second central luma sample 808 in a right-most column of luma samples 405L of the left-neighboring coding block 406L. The first central luma sample 804 is aligned with the first luma sample 402 along the column direction, and the second central luma sample 808 is aligned with the first luma sample 402 along the row direction.

[0072] In some embodiments not shown, the odd numbers X and Y are different from each other, e.g., equal to 3 and 5, respectively. Alternatively, referring to FIG. 8A, in some embodiments, the odd numbers X and Y are equal to each other, e.g., equal to 3. The target luma sample 408 is determined from among the six candidate luma samples 404 and 806, e.g., according to a determination that the target luma sample 408 (e.g., having a luma value of 113) is closer in magnitude to the first luma sample 402 (e.g., having a luma value of 111) than any remaining luma sample (e.g., having luma values ​​of 10, 55, 23, 105, and 25) in the plurality of candidate luma samples 802. The target chroma sample 418 is co-located with the target luma sample 408 in the left neighboring coding block 406L. Referring to FIG. 8, the first chroma sample 412 is co-located with the first luma sample 402 and is determined based on the target chroma sample 418.

[0073] In one example, referring to FIG. 9A, odd numbers X and Y are both equal to 1, and the plurality of candidate luma samples 404 includes a first central luma sample 804 and a second central luma sample 808. The target luma sample 408 is determined among the two candidate luma samples 404 and 808 according to, for example, a determination that the target luma sample 408 (e.g., having a luma value of 105) is closer in magnitude to the first luma sample 402 (e.g., having a luma value of 111) than the second central luma sample 808 (e.g., having a luma value of 10) in the plurality of candidate luma samples 804. The target chroma sample 418 is co-located with the target luma sample 408 in the upper neighboring coding block 406T. Referring to FIG. 9B, the first chroma sample 412 is co-located with the first luma sample 402 and is determined based on the target chroma sample 418.

[0074] 10 is a block environment 1000 in which an exemplary current coding block 400 is directly adjacent to neighboring samples 1002 (e.g., 1002TL, 1002T, 1002TR, 1002L, and 1002LB) of a neighboring coding block 406, according to some embodiments. The target chroma sample 418 (FIG. 4B) is co-located with the target luma sample 408 (FIG. 4A) in the neighboring coding block 406 and is determined based thereon as follows: C T = α × L T,AC +C DC (1) Here, C T is the target chroma sample 418, and L T are the target luma samples, α are the linear model parameters, and L T,AC is the AC component of the target luma sample 408, and C DC is the DC component of the target chroma sample 408. In some embodiments, a subset of the neighboring samples 1002 may be selected, for example, from the AC components (L T,AC ) and / or the DC component of the target chroma sample 418 (C DC), to determine a target chroma sample 418 in a neighboring coding block 406 from the target luma sample 408. The neighboring samples 1002 correspond to one or more of neighboring samples 1002L, 1002T, 1002R, 1002B, 1002LT, 1002LB, 1002RT, and 1002RB located in the left, top, right, bottom, top-left, bottom-left, top-right, and bottom-right neighboring coding blocks 406L, 406T, 406R, 406B, 406LT, 406LB, 406RT, and 406RB, respectively. The neighboring samples 1002 are applied to determine a target chroma sample 418 in the CfL prediction based on equation (1), and the target chroma sample 418 is optionally identified within a subset of the left, top, right, bottom, top-left, bottom-left, top-right and bottom-right neighboring coding blocks 406L, 406T, 406R, 406B, 406LT, 406LB, 406RT and 406RB. The first chroma sample 402 is further determined from the target chroma sample 418. In one example, only the neighboring samples 1002L, 1002T and 1002LT located in the coding blocks 402L, 402T and 402LT are applied to determine the target chroma sample 418 and the first chroma sample 402.

[0075] In some embodiments, the selection of the neighboring sample 1002 used in the CfL prediction is explicitly signaled or is implicitly derived based on coding information such as intra prediction mode, block shape, block size and / or block aspect ratio that defines the co-located luma block. In some embodiments, when only the top neighboring sample 1002T is available, the top neighboring sample 1002T is used in the CfL prediction to determine the target chroma sample 418 and the first chroma sample 402. In some embodiments, the left, top-left and top neighboring samples 1002L, 1002LT and 1002T are not yet available but need to be used in the CfL prediction. The left, top-left and top neighboring samples 1002L, 1002LT and 1002T are padded with neighboring samples in the coding block 406, for example, in intra-angle prediction mode. In some embodiments, only the left neighboring sample 1002L is available and is used in the CfL prediction to determine the target chroma sample 418 and the first chroma sample 402. In some embodiments, the current coding block 400 is located at a superblock boundary. For samples in the upper neighboring coding block 406T, only the samples in the closest upper reference line are downsampled and used in the CFL prediction to determine the target chroma sample 418 and the first chroma sample 402. The closest upper reference line is included in the upper neighboring coding block 406T if the upper neighboring coding block 406T is at a superblock boundary. In some embodiments, the neighboring samples 1002 in the closest neighboring reference line are used in the CFL prediction to determine the target chroma sample 418 and the first chroma sample 402. In some embodiments, only the closest neighboring line of the neighboring samples of the co-located luma block is used in the CFL prediction to determine the target chroma sample 418 and the first chroma sample 402. When the reference sample is downsampled, two lines are used. The closest neighboring reference line indicates the line that is closer to the current coding block 400.

[0076] In some embodiments, the luma samples in the current coding block 400 are downsampled according to a chroma color format (e.g., 4:2:0, 4:2:2, 4:4:4). In some embodiments, the luma samples in the neighboring coding blocks 400 are downsampled according to a chroma color format (e.g., 4:2:0, 4:2:2, 4:4:4). In some embodiments, the luma samples in one or more neighboring coding blocks 406 are used to perform CfL prediction to determine the target chroma sample 418 and the first chroma sample 402.

[0077] In some embodiments, the luma samples of the current coding block 400 or the neighboring coding block 406 are not downsampled and are not applied to determine the target chroma sample 418 and the first chroma sample 412. The first luma sample 402 and the target luma sample 408 are not downsampled. The target luma sample 408 is identified from the plurality of candidate luma samples 404 that are not downsampled. Each chroma sample is co-located with a set of luma samples (e.g., 2×2 samples). Alternatively, in some embodiments, the luma samples of the current coding block 400 or the neighboring coding block 406 are downsampled and applied to determine the target chroma sample 418 and the first chroma sample 412. For the downsampled first luma sample 402, a downsampled target luma sample 408 is identified from the plurality of downsampled candidate luma samples 404. The first chroma sample or the target chroma sample is co-located with the respective downsampled luma sample (e.g., corresponding to the 2×2 sample that is not downsampled). The first chroma sample 412 is determined from the target chroma sample 418 .

[0078] 11 illustrates a chroma subsampling scheme 1100 that is applied to subsample luma samples of a current coding block 406 and one or more neighboring coding blocks 400 (e.g., 406T and 406L) of a current frame in accordance with some embodiments. In some embodiments, the current coding block 400 includes multiple luma samples, further including a top boundary row of luma samples immediately adjacent to the top boundary and a left boundary column of luma samples immediately adjacent to the left boundary. In some embodiments, the top boundary row and left boundary column of luma samples of the current coding block 400 are used to determine target luma samples 408 and co-located target chroma samples 418 in the one or more neighboring coding blocks 406.

[0079] In some embodiments, the chroma color format is 4:2:0, and the luma samples of each coding block 400 or 406 are grouped into a plurality of luma pixel groups (also called luma blocks). Each luma pixel group 1102 (i.e., each luma block 1102) includes an array of 2×2 luma samples 402-1, 402-2, 402-3, and 402-4. For each of the plurality of luma pixel groups 1102, a single luma sample is selected from or determined based on the array of 2×2 luma samples to represent the respective luma pixel group 1102. Specifically, each coding block 400 or 406 has a plurality of chroma samples having the same resolution as the plurality of luma pixel groups 1102. Each chroma sample is determined based on a target chroma sample 418 that is co-located with a respective luma pixel group 1102 and is co-located with a target luma sample 408 (e.g., corresponding to a target luma pixel group) in one or more neighboring coding blocks 406. In one example, the luma samples of one or more neighboring coding blocks 406 are downsampled to one luma sample per 2×2 luma sample. Optionally, the resulting luma sample corresponds to the luma samples 402-1, 402-2, 402-3, or 402-4 of the neighboring coding blocks 406. Optionally, the resulting luma sample is a combination (e.g., average, weighted average) of the luma samples 402-1, 402-2, 402-3, or 402-4 of the neighboring coding blocks 406. In another example, the luma samples of the current coding block 400 are also downsampled to one luma sample per 2×2 luma sample. Optionally, the resulting luma sample corresponds to luma sample 402-1, 402-2, 402-3, or 402-4 of the current coding block 400. Optionally, the resulting luma sample is a combination (e.g., average, weighted average) of luma samples 402-1, 402-2, 402-3, or 402-4 of the current coding block 400.In some embodiments, the resulting downsampled luma samples of coding blocks 400 and 406 are used as luma samples 402, 405, and 408 to determine target chroma sample 418 and first chroma sample 412. In some embodiments, this downsampling scheme is optionally applied to predict chroma samples or is applied broadly in a CfL mode with cross-component prediction including CfL.

[0080] FIG. 12 is a flow diagram illustrating a method 1200 of coding video, according to some embodiments. The method 1200 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, the method 1200 is performed by executing instructions stored in a memory (e.g., coding module 320 of memory 314) of the computing system. In some embodiments, the computing system determines a chroma prediction block from luma samples in the co-located luma coding block 400 and neighboring samples 404 of the co-located luma coding block 406. For example, the luma reconstruction sample 402 (PL ij ) (also referred to as a first luma sample) is located at sample position (i,j) of the current coding block 400 with one or more neighboring coding blocks 406 directly adjacent to the current coding block 400 (1202). The multiple candidate luma samples 404 are included in the one or more neighboring coding blocks 406 (1204), which may further include a left neighboring coding block 406L, a top neighboring coding block 406T, or both (1214). The computing system selects a target luma sample 408 (PL k ) is identified (1206). Among the candidate luma samples 404, the target luma sample 408 (PL k) is the size of the luma reconstruction sample 402 (PL ij ) (1212). In some circumstances, more than one candidate luma sample 404 may have a minimum difference from the luma reconstructed sample 402 (PL ij ) and sample 402 (PL ij ) with the smallest sample distance from the target luma sample 408 (PL k ) is selected. Target luma sample 408 (PL k ) and target chroma sample 418 (PC k ) is the luma reconstruction sample 402 (PL ij ) and the same-positioned chroma reconstruction sample 412 (PC ij ) is used to predict 1208. In one example, the luma reconstructed samples 402 (PL ij ) has a luma value of 111, and the value of the target luma sample 408 at position k is 113, which is smaller than the other candidate luma samples 404 in the left neighboring coding block 406L and the top neighboring coding block 406T. ij ) has the smallest difference with the target luma sample 408 (PL k ) and target chroma sample 418 (PC k ) is the luma reconstruction sample 402 (PL ij ) and the same-positioned chroma reconstruction sample 412 (PC ij ) is used to define the chroma reconstruction samples 412 (PC ij ) is the same-positioned luma reconstruction sample 402 (PL ij Optionally, the signal α is determined from the chroma reconstructed samples 412 (PC ij ) is not signaled to determine the target chroma sample 418 (PC k) is set as the final predicted value of the chroma sample at position (i,j). In some embodiments, one or more of the neighboring coding blocks 406 are coded in 4:2:0 chroma color format and the target luma sample 408 includes a 2×2 luma block.

[0081] In some embodiments, the luma reconstructed sample 402 (PL ij ) and each of the plurality of candidate luma samples 404 is determined based on a sum of absolute difference (SAD) or a sum of squared error (SSE). Alternatively, in some embodiments, the difference between the luma reconstructed sample 402 (PL ij ) and each candidate luma sample 404 is calculated by the luma reconstructed sample 402 (P Lij ) and the candidate luma sample, and the first SAD or SSE between the luma reconstructed sample 402 (PL ij ) and at least one second SAD or SSE between adjacent luma samples of the candidate luma sample 404.

[0082] In some embodiments, the neighboring samples 1002 (FIG. 10) are applied to calculate the DC or AC components of the CfL prediction, which can be further simplified. Furthermore, in some embodiments, a subset (but not all) of the neighboring samples 1002 that are directly adjacent to the current coding block 400 are applied to determine the target luma sample 408 and the target chroma sample 418.

[0083] In some embodiments, one of every two neighboring luma samples in the bottom-most row of the top neighboring coding block 406T and the right-most column of the left neighboring coding block 406L are used as candidate luma samples to determine a target luma sample 408 for each luma sample of the current coding block 400. Specifically, in some embodiments (FIG. 5), the first luma sample 402 is located in an even-numbered column or an even-numbered row of the current coding block 400. The even-numbered neighboring luma sample in the bottom-most row of the top neighboring coding block 406T and the even-numbered neighboring luma sample in the right-most column of the left neighboring coding block 406L are used as candidate luma samples 404, from which the target luma sample 408 is selected for the first luma sample 402 in the current coding block 400. Conversely, in some embodiments, the first luma sample 402 is located at the intersection of an odd-numbered column and an odd-numbered row of the current coding block 400. The odd-numbered neighboring luma samples in the bottom-most row of the above-neighboring coding block 406T and the odd-numbered neighboring luma samples in the right-most column of the left-neighboring coding block 406L are used as candidate luma samples 404, from which a target luma sample 408 is selected for the first luma sample 402 in the current coding block 400. Furthermore, a first chroma sample 412 co-located with the first luma sample 402 is determined based on a target chroma sample 418 co-located with the target luma sample 408 in one or more neighboring coding blocks 406 (e.g., above-neighboring coding block 406T, left-neighboring coding block 406L).

[0084] In some embodiments, the Mth luma sample of every N luma samples in the bottom-most row and the right-most column of the left-neighboring coding block of the above-neighboring coding block 406T are used (1216) as candidate luma samples from which a target luma sample is selected and used to determine the first chroma sample co-located with the first luma sample 402 in the current coding block 400. In one example, M is an integer equal to 2, 3, 4, ., or N, where N is less than or equal to the total number of luma samples in each row or column of the current coding block 400. In another example, N is equal to an integer power of 2 and is less than the total number of luma samples in the bottom-most row of the above-neighboring coding block 406T or the right-most column of the left-neighboring coding block.

[0085] In some embodiments (FIG. 6), a subset of neighboring samples is located at the center of the bottom-most row of the top-neighboring coding block 406T and the center of the right-most column of the left-neighboring coding block 406L and is used as candidate luma samples from which a target luma sample is selected. The candidate luma samples include K central luma samples at the center of the bottom-most row of the top-neighboring coding block 406T and L central luma samples at the right-most column of the left-neighboring coding block 406L, where K is an integer greater than 1. In some embodiments, K is hard-coded in the encoder 106 and the decoder 122. Alternatively, in some embodiments, K is signaled in a bitstream communicated between the encoder 106 and the decoder 122.

[0086] In some embodiments (FIG. 7), the candidate luma samples from which the target luma samples are selected include two sets of P luma samples located at the two ends of the bottom-most row of the top-neighboring coding block 406T and two sets of Q luma samples located at the two ends of the right-most column of the left-neighboring coding block 406L. In one example, both P and Q are equal to 1. The candidate luma samples include four luma samples, each located at a separate end of the bottom-most row of the top-neighboring coding block 406T and the right-most column of the left-neighboring coding block 406L.

[0087] In some embodiments, the candidate luma sample from which the target luma sample is selected varies with respect to the first luma sample 402 based on the position of the first luma sample 402 in the current coding block 400 (1218). With reference to FIG. 9A, in some embodiments, the first luma sample 402 has only two sets of candidate luma samples neighboring the current coding block 400. The first candidate luma sample is located in the bottom-most row of the top-neighboring coding block 406T and is aligned with the first luma sample 402 in the same column. The second candidate luma sample is located in the right-most column of the left-neighboring coding block 406L and is aligned with the first luma sample 402 in the same row. With reference to FIG. 8A, in some embodiments, the first luma sample 402 has only two sets of candidate luma samples neighboring the current coding block 400. A first set of X candidate luma samples is located in the bottom-most row of the top-neighboring coding block 406T and has a first central luma sample aligned with the first luma sample 402 in the same column. A second set of Y candidate luma samples is located in the right-most column of the left-neighboring coding block 406L and has a second central luma sample aligned with the first luma sample 402 in the same row. X and Y are positive odd numbers greater than 1.

[0088] In some embodiments, the target chroma sample 418 is co-located with the target luma sample 408 and is determined (1220) based on the target luma sample 408 using equation (1) in CfL mode. The target chroma sample 418 has a DC component that is determined based on one or more neighboring chroma samples of the target chroma sample 408. The one or more neighboring chroma samples of the target chroma sample are processed by at least an average operation and a shift operation without using a division operation. In some embodiments, the average operation is applied to the left neighboring sample of the target luma sample as follows: Average L =(sum+(height>>1))>>height_log2 (2) where sum is the sum of the left adjacent samples and height_log2 is the log2 value of the block height. Furthermore, in some embodiments, the rounding value height>>1 is ignored. Equation (2) is simplified as follows: Average L =(sum)>>height_log2 (3) In some embodiments, the upper sample average T In the process of determining {overscore (x)}, the computing system applies a shift operation rather than a division operation, as follows: Average T =(sum+(width>>1))>>width_log2 (4) where width_log2 is the log2 value of the block width. Furthermore, in some embodiments, the rounding value width>>1 is ignored. Equation (4) simplifies to: Average T =(sum)>>width_log2 (4) Additionally, in some embodiments, the top and left sample averages Average L and Average T are averaged by sum and shifted by 1 as follows: Average = (Average L+Average T +((width+height)>>1))>>1 (5) Furthermore, in some embodiments, the rounding value (width+height)>>1 is ignored, so that the average Average is expressed as: Average = (Average L +Average T )>>1 (5) Further, in some embodiments, the Average L and Average L The sum of and is increased by a rounding offset, which may optionally be 1, 2, . . . N. R and N R is a positive integer.

[0089] In some embodiments, the block width is greater than the block height of the current coding block 400. The upper neighboring samples are the upper sample average Average, which approximately represents the average Average that determines the DC content of the target chroma samples 418 in the CfL mode. T Conversely, in some embodiments, the block height is greater than the block width of the current coding block 400. The left neighboring samples are used to determine the left sample average Average , which approximately represents the average Average that determines the DC content of the target chroma samples 418 in CfL mode. L is used to determine

[0090] 12 depicts some logical steps in a particular order, but steps that are not order dependent may be reordered and other steps may be combined or separated. Some reordering or other groupings not specifically mentioned will be apparent to one of ordinary skill in the art, and so the order and groupings presented herein are not exhaustive. Furthermore, it should be recognized that these steps may be implemented in hardware, firmware, software, or any combination thereof.

[0091] Next, some exemplary embodiments will be described.

[0092] (A1) In one aspect, some embodiments include a method (e.g., method 1200) of video coding (e.g., video decoding). The method includes identifying (1202) a current coding block and one or more neighboring coding blocks in a current frame, the current coding block having a first luma sample. The method further includes identifying (1204) a plurality of candidate luma samples in the one or more neighboring coding blocks for the first luma sample. The one or more neighboring coding blocks are coded in a 4:2:0 chroma color format. The method further includes identifying (1206) a target luma sample among the plurality of candidate luma samples and determining (1208) a first chroma sample co-located with the first luma sample based on the target chroma sample co-located with the target luma sample in the one or more neighboring coding blocks. The target luma sample includes a 2×2 luma block.

[0093] (A2) In some embodiments of A1, each candidate luma sample is located (1210) adjacent (eg, directly adjacent) to a respective boundary separating the current coding block and a respective neighboring coding block.

[0094] (A3) In some embodiments of A1 or A2, identifying the target luma sample further includes identifying (1212) the target luma sample according to a determination that the target luma sample is closer in magnitude to the first luma sample than any remaining luma sample in the plurality of candidate luma samples.

[0095] (A4) In some embodiments of any of A1-A3, the one or more neighboring coding blocks include at least one of an above-neighboring coding block and a left-neighboring coding block according to a predetermined sample selection policy (1214).

[0096] (A5) In some embodiments of A4, the multiple candidate luma samples include all luma samples in a bottom-most row of luma samples of the top-neighboring coding block or a right-most column of luma samples of the left-neighboring coding block.

[0097] (A6) In some embodiments of A4 or A5, the multiple candidate luma samples include an M-th luma sample out of every N luma samples in a bottom-most row of luma samples of an upper-neighboring coding block or a right-most column of luma samples of a left-neighboring coding block (1216), where N is an integer greater than 1 and M is a positive integer less than or equal to N. (A7) In some embodiments of A6, N is equal to an integer power of two and is less than the total number of luma samples in the bottom-most row of luma samples of the upper-neighboring coding block.

[0098] (A8) In some embodiments of any of A4 to A7, the multiple candidate luma samples include a set of K luma samples centered in a bottom-most row of luma samples of an upper-neighboring coding block, or a set of L luma samples centered in a right-most column of luma samples of a left-neighboring coding block, where K and L are positive integers.

[0099] (A9) In some embodiments of any of A4 to A8, the multiple candidate luma samples include two sets of P luma samples at the two ends of a bottom-most row of luma samples of an upper-neighboring coding block, or two sets of Q luma samples at the two ends of a right-most column of luma samples of a left-neighboring coding block, where P and Q are positive integers.

[0100] (A10) In some embodiments of any of A1-A9, the predetermined sample selection policy is based on a position of the first luma sample within the current coding block (1218). In accordance with the predetermined sample selection policy, a plurality of candidate luma samples are identified based at least in part on the position of the first luma sample. (A11) In some embodiments of A10, the one or more neighboring coding blocks include an above-neighboring coding block or a left-neighboring coding block according to a predetermined sample selection policy. The step of identifying a plurality of candidate luma samples further includes performing at least one of the steps of identifying an odd number X of luma samples including a first central luma sample in a bottom-most row of luma samples of the above-neighboring coding block and identifying an odd number Y of luma samples including a second central luma sample in a right-most column of luma samples of the left-neighboring coding block. The first central luma sample is aligned with the first luma sample along a column direction and the second central luma sample is aligned with the first luma sample along a row direction.

[0101] (A12) In some embodiments of any of A1-A11, the method 1200 further includes determining (1220) a target chroma sample based on a target luma sample in one or more neighboring coding blocks of the current coding block, as follows: C T = α × L T,AC +C DC (1) Here, C T is the target chroma sample, and L T are the target luma samples, α are the linear model parameters, and L T,AC are the AC components of the target luma samples, and C DC is the DC component of the target chroma sample.

[0102] (A13) In some embodiments of any of A1-A12, the method 1200 further includes subsampling a plurality of luma samples of the current coding block and one or more neighboring coding blocks of the current frame based on a 4:2:0 chroma color format. (A14) In some embodiments of A13, the step of subsampling the plurality of luma samples further includes a step of grouping the plurality of luma samples into a plurality of luma pixel groups, each luma pixel group including an array of 2×2 luma samples, and a step of selecting, for each of the plurality of luma pixel groups, a single luma sample from the array of 2×2 luma samples to represent the respective luma pixel group.

[0103] (A15) In some embodiments of any of A1-A14, the method 1200 further includes identifying a coding block mode of the current coding block. In accordance with determining that the coding block mode is a chroma copy mode, the first chroma sample is determined based on a target chroma sample that is co-located with the target luma sample in one or more neighboring coding blocks of the current coding block.

[0104] (A16) In some embodiments of any of A1-A15, identifying the target luma sample further includes identifying a subset of candidate luma samples from the plurality of candidate luma samples according to a determination that the subset of candidate luma samples is uniformly different in magnitude from the first luma sample and closer in magnitude to the first luma sample than any remaining luma samples in the plurality of candidate luma samples. Identifying the target luma sample further includes selecting the target luma sample from the subset of candidate luma samples based on a distance of the target luma sample from the first luma sample. (A17) In some embodiments of A16, the step of selecting the target luma sample further includes a step of determining, for each of the subset of candidate luma samples, a respective distance between the first luma sample and each candidate luma sample, and a step of selecting one of the subset of candidate luma samples as the target luma sample according to a determination that the distance of one of the subset of candidate luma samples is smallest among the respective distances of the subset of candidate luma samples.

[0105] (A18) In some embodiments of any of A1 to A17, the step of determining a first chroma sample co-located with the first luma sample further includes a step of copying a target chroma sample co-located with the target luma sample to the first chroma sample co-located with the first luma sample.

[0106] In another aspect, some embodiments include a computing system (e.g., server system 112) including a control circuit (e.g., control circuit 302) and a memory (e.g., memory 314) coupled to the control circuit, where the memory stores one or more sets of instructions configured to be executed by the control circuit, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1-A18 above).

[0107] 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-A18 above).

[0108] In this specification, terms such as "first," "second," etc. may be used to describe various elements, but it is understood that these elements should not be limited by these terms. These terms are used only to distinguish one element from another.

[0109] The terms used herein are merely for the purpose of describing particular embodiments and are not intended to limit the scope of the claims. When 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 unless the context clearly indicates otherwise. It is also understood that the term "and / or" as used herein indicates and includes any and all possible combinations of one or more of the associated listed items. It is further understood that the terms "comprises" and / or "comprising" as used herein specify the presence of the referenced 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.

[0110] As used herein, the term "if" can be interpreted to mean "when" or "upon" or "upon determining" or "according to determining" or "upon detecting" the prior mentioned condition is true, depending on the context. Similarly, the phrases "if [the prior mentioned condition is determined to be true]" or "if [the prior mentioned condition is true]" or "when [the prior mentioned condition is true]" can be interpreted to mean "upon determining" or "upon determining" or "according to determining" or "upon detecting" or "upon detecting" the prior mentioned condition is true, depending on the context.

[0111] The above description has been described with reference to specific embodiments for purposes of explanation. However, the exemplary discussion 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.

Claims

1. 1. A method for decoding video data, comprising the steps of: identifying a current coding block and one or more neighboring coding blocks within a current frame, the current coding block having a first luma sample; identifying a plurality of candidate luma samples in the one or more neighboring coding blocks for the first luma sample, the one or more neighboring coding blocks being coded in a 4:2:0 chroma color format; identifying a target luma sample among the plurality of candidate luma samples, the target luma sample comprising a 2×2 luma block; determining a first chroma sample co-located with the first luma sample based on a target chroma sample co-located with the target luma sample in the one or more neighboring coding blocks; The method includes:

2. The method of claim 1 , wherein each candidate luma sample is located adjacent to a respective boundary separating the current coding block and a respective neighboring coding block.

3. The step of identifying the target luma sample comprises:

2. The method of claim 1, further comprising identifying the target luma sample according to a determination that the target luma sample is closer in magnitude to the first luma sample than any remaining luma samples in the plurality of candidate luma samples.

4. The method of claim 1 , wherein, according to a predetermined sample selection policy, the one or more neighboring coding blocks include at least one of an above-neighboring coding block and a left-neighboring coding block.

5. The method of claim 4 , wherein the plurality of candidate luma samples includes all luma samples in a bottom-most row of luma samples of the top-neighboring coding block or a right-most column of luma samples of the left-neighboring coding block.

6. 5. The method of claim 4, wherein the plurality of candidate luma samples comprises an M luma sample out of every N luma samples in a bottom-most row of luma samples of the top-neighboring coding block or a right-most column of luma samples of the left-neighboring coding block, where N is an integer greater than 1 and M is a positive integer less than or equal to N.

7. The method of claim 6 , wherein N is equal to an integer power of 2 and is less than a total number of luma samples in the bottom-most row of luma samples of the upper-neighboring coding block.

8. 5. The method of claim 4, wherein the plurality of candidate luma samples comprises a set of K luma samples centered in a bottom-most row of luma samples of the top-neighboring coding block or a set of L luma samples centered in a right-most column of luma samples of the left-neighboring coding block, where K and L are positive integers.

9. 5. The method of claim 4, wherein the plurality of candidate luma samples includes two sets of P luma samples at two ends of a bottom-most row of luma samples of the top-neighboring coding block or two sets of Q luma samples at two ends of a right-most column of luma samples of the left-neighboring coding block, where P and Q are positive integers.

10. 2. The method of claim 1 , wherein a predetermined sample selection policy is based on a position of the first luma sample within the current coding block, and wherein according to the predetermined sample selection policy, the plurality of candidate luma samples are identified based at least in part on the position of the first luma sample.

11. According to the predetermined sample selection policy, the one or more neighboring coding blocks include an upper neighboring coding block or a left neighboring coding block; The step of identifying a plurality of candidate luma samples comprises: identifying an odd number X of luma samples including a first central luma sample in a bottom row of luma samples of the upper neighboring coding block; identifying an odd number Y of luma samples including a second central luma sample in a rightmost column of luma samples of the left neighboring coding block; and performing at least one of: The method of claim 10 , wherein the first central luma sample is aligned with the first luma sample along a column direction and the second central luma sample is aligned with the first luma sample along a row direction.

12. determining the target chroma sample based on the target luma sample in the one or more neighboring coding blocks of the current coding block as follows: C T =α×L T,AC +C DC Here, C T is the target chroma sample, and L T are the target luma samples, α are linear model parameters, and L T,AC is the AC component of the target luma sample, and C DC The method of claim 1 , wherein: x is a DC component of the target chroma sample.

13. The method of claim 1 , further comprising subsampling a plurality of luma samples of the current coding block and the one or more neighboring coding blocks of the current frame based on a 4:2:0 chroma color format.

14. The step of subsampling the plurality of luma samples comprises: grouping the plurality of luma samples into a plurality of luma pixel groups, each group comprising an array of 2×2 luma samples; for each of the plurality of luma pixel groups, selecting a single luma sample from the array of 2×2 luma samples to represent the respective luma pixel group; The method of claim 13 further comprising:

15. further comprising identifying a coding block mode of the current coding block; 2. The method of claim 1, wherein, following a determination that the coding block mode is a chroma copy mode, the first chroma sample is determined based on a target chroma sample that is co-located with the target luma sample in the one or more neighboring coding blocks of the current coding block.

16. The step of identifying the target luma sample comprises: identifying a subset of candidate luma samples from the plurality of candidate luma samples according to a determination that the subset of candidate luma samples is uniformly different in magnitude from the first luma sample and closer in magnitude to the first luma sample than any remaining luma samples in the plurality of candidate luma samples; selecting the target luma sample from the subset of candidate luma samples based on a distance of the target luma sample from the first luma sample; The method of claim 1 further comprising:

17. The step of selecting a target luma sample comprises: determining, for each of the subset of candidate luma samples, a respective distance between the first luma sample and a respective candidate luma sample; selecting the one of the subset of candidate luma samples as the target luma sample according to a determination that the distance of the one of the subset of candidate luma samples is smallest among the respective distances of the subset of candidate luma samples; The method of claim 16 further comprising:

18. The step of determining the first chroma sample co-located with the first luma sample comprises: The method of claim 1 , further comprising copying the target chroma sample at the same location as the target luma sample to the first chroma sample at the same location as the first luma sample.

19. 1. An apparatus comprising: a control circuit; and a memory storing one or more programs configured to be executed by the control circuit, 19. Apparatus, wherein the one or more programs cause the control circuitry to carry out a method according to any one of claims 1 to 18.

20. A program causing a computer to carry out the method according to any one of claims 1 to 18.

21. 1. A method for encoding video data, comprising the steps of: identifying a current coding block and one or more neighboring coding blocks within a current frame, the current coding block having a first luma sample; identifying a plurality of candidate luma samples in the one or more neighboring coding blocks for the first luma sample, the one or more neighboring coding blocks being coded in a 4:2:0 chroma color format; identifying a target luma sample among the plurality of candidate luma samples, the target luma sample comprising a 2×2 luma block; determining a first chroma sample co-located with the first luma sample based on a target chroma sample co-located with the target luma sample in the one or more neighboring coding blocks; performing intra prediction based on the first chroma sample; The method includes: