Patent ID: 12192488

In the various figures, identical reference numbers will be used for identical or functionally equivalent features.

DETAILED DESCRIPTION

It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.

FIG.1Ais a block diagram of a video data coding system in which embodiments of the present disclosure may be implemented. As shown inFIG.1A, the coding system10includes a source device12that provides encoded video data, and a destination device14that decodes the encoded video data provided by the encoding device12. In particular, the source device12may provide the video data to destination device14via a transport medium16. Source device12and destination device14may be any of a wide range of electronic devices, such as desktop computers, notebook computers (i.e. laptop computers), tablet computers, set-top boxes, cellular telephone handsets (i.e. “smart” phones), televisions, cameras, display devices, digital media players, video gaming consoles, video streaming device, or the like. In some cases, source device12and destination device14may be equipped for wireless communication.

Destination device14may receive the encoded video data via a transport medium16. The transport medium16may be any type of medium or device capable of transporting the encoded video data from source device12to destination device14. In one example, the transport medium16may be a communication medium enabling the source device12to transmit encoded video data directly to the destination device14in real-time. The encoded video data may be modulated according to a communication standard, such as a wireless communication protocol, and the modulated encoded video data is transmitted to the destination device14. The communication medium may be any wireless or wired communication medium, such as a radio frequency (RF) spectrum wave or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from the source device12to the destination device14.

In the source device12, encoded data may be output from an output interface22to a storage device (not shown inFIG.1A). Similarly, encoded data may be accessed from the storage device by an input interface28of the destination device14. The storage device may include any of a variety of distributed or locally accessed data storage media such as hard drives, Blu-Ray™ discs, digital video disks (DVDs), Compact Disc Read-Only Memories (CD-ROMs), flash memories, volatile or non-volatile memories, or any other suitable digital storage media for storing encoded video data.

In a further example, the storage device may correspond to a file server or another intermediate storage device that may store the encoded video generated by the source device12. The destination device14may access stored video data from the storage device via streaming or downloading. The file server may be any type of server capable of storing encoded video data and transmitting that encoded video data to the destination device14. Example file servers include a web server (e.g., for a website), a file transfer protocol (FTP) server, network attached storage (NAS) devices, or a local disk drive. The destination device14may access the encoded video data through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on a file server. The transmission of encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.

The techniques of this disclosure are not necessarily limited to wireless applications or settings. The techniques may be applied to video coding in support of any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television transmissions, satellite television transmissions, Internet streaming video transmissions, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications. In some examples, the coding system10may be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and/or video telephony.

In the example ofFIG.1A, the source device12includes a video source18, a video encoder20, and an output interface22. The destination device14includes an input interface28, a video decoder30, and a display device32. In accordance with this disclosure, the video encoder20of the source device12and/or the video decoder30of the destination device14may be configured to apply the techniques for bidirectional prediction. In other examples, the source device12and the destination device14may include other components or arrangements. For example, the source device12may receive video data from an external video source, such as an external camera. Likewise, the destination device14may interface with an external display device, rather than including an integrated display device.

The illustrated coding system10ofFIG.1Ais merely an example. Methods for bidirectional prediction may be performed by any digital video encoding or decoding device. Although the techniques of this disclosure generally are used by a video coding device, the techniques may also be used by a video encoder/decoder, which is typically referred to as a “codec.” Moreover, the techniques of this disclosure may also be used by a video preprocessor. The video encoder and/or the video decoder may be a graphics processing unit (GPU) or a similar device.

The source device12and the destination device14are merely examples of encoding/decoding devices in a video data coding system in which the source device12generates encoded video data for transmission to the destination device14. In some examples, the source device12and the destination device14may operate in a substantially symmetrical manner such that each of the source device12and the destination devices14includes video encoding and decoding components. Hence, the coding system10may support one-way or two-way video transmission between video devices12and14, e.g., for video streaming, video playback, video broadcasting, or video telephony.

The video source18of the source device12may include a video capture device, such as a video camera, a video archive containing previously captured videos, and/or a video feed interface to receive a video from a video content provider. As a further alternative, the video source18may generate computer graphics-based data as the source video, or a combination of live video, archived video, and computer-generated video.

In some cases, when the video source18is a video camera, the source device12and the destination device14may form so-called camera phones or video phones. As mentioned above, however, the techniques described in this disclosure may be applicable to video coding in general, and may be applied to wireless and/or wired applications. In each case, the captured, pre-captured, or computer-generated video may be encoded by the video encoder20. The encoded video information may then be output by the output interface22onto the transport medium16.

The transport medium16may include transient media, such as a wireless broadcast or wired network transmission, or storage media (that is, non-transitory storage media), such as a hard disk, flash drive, compact disc, digital video disc, Blu-Ray™ disc, or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from the source device12and provide the encoded video data to the destination device14, e.g., via network transmission. Similarly, a computing device of a medium production facility, such as a disc stamping facility, may receive encoded video data from the source device12and produce a disc containing the encoded video data. Therefore, the transport medium16may be understood to include one or more computer-readable media of various forms, in various examples.

The input interface28of the destination device14receives information from the transport medium16. The information of the transport medium16may include syntax information defined by the video encoder20, which is also used by the video decoder30, that includes syntax elements that describe characteristics and/or processing of blocks and other coded units, e.g., group of pictures (GOPs). The display device32displays the decoded video data to a user, and may include any of a variety of display devices such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or other types of display devices.

The video encoder20and the video decoder30may operate according to a video coding standard, such as the High Efficiency Video Coding (HEVC) standard presently under development, and may conform to a HEVC Test Model (HM). Alternatively, the video encoder20and the video decoder30may operate according to other proprietary or industry standards, such as the International Telecommunications Union Telecommunication Standardization Sector (ITU-T) H.264 standard, alternatively referred to as Motion Picture Expert Group (MPEG)-4, Part 10, Advanced Video Coding (AVC), H.265/HEVC, or extensions of such standards. The techniques provided by this disclosure, however, are not limited to any particular coding standard. Other examples of video coding standards include MPEG-2 and ITU-T H.263. Although not shown inFIG.1A, in some aspects, the video encoder20and the video decoder30may each be integrated with an audio encoder and decoder, and may include appropriate multiplexer-demultiplexer (MUX-DEMUX) units, or other hardware and software, to handle encoding of both audio and video in a common data stream or separate data streams. If applicable, the MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols such as the user datagram protocol (UDP).

The video encoder20and the video decoder30each may be implemented as any of a variety of suitable encoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, a device may store instructions for the software in a suitable, non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the video encoder20and the video decoder30may be included in one or more encoders or decoders, either of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device. A device including the video encoder20and/or the video decoder30may be an integrated circuit, a microprocessor, and/or a wireless communication device, such as a cellular telephone.

FIG.1Bis a block diagram of an example video coding system40b, which includes the video encoder20and/or the decoder30. As shown inFIG.1B, the video coding system40bmay include one or more imaging device(s)41b, the video encoder20, the video decoder30, an antenna42b, one or more processor(s)43b, one or more memory store(s)44b, and may further include a display device45b.

As illustrated, the imaging device(s)41b, the antenna42b, the processing circuitry46b, the video encoder20, the video decoder30, the processor(s)43b, the memory store(s)44b, and the display device45bmay communicate with one another. Although illustrated with both the video encoder20and the video decoder30, the video coding system40bmay include only the video encoder20or only the video decoder30in various examples.

In some examples, the antenna42bof the video coding system40bmay be configured to transmit or receive an encoded bitstream of video data. Furthermore, in some examples, the display device45bof the video coding system40bmay be configured to present video data. In some examples, the processing circuitry46bof the video coding system40bmay be implemented via processing unit(s). The processing unit(s) may include application-specific integrated circuit (ASIC) logic, graphics processor(s), general purpose processor(s), or the like. The video coding system40may also include optional processor(s)43b, which may similarly include application-specific integrated circuit (ASIC) logic, graphics processor(s), general purpose processor(s), or the like. In some examples, the processing circuitry46bmay be implemented via hardware, video coding dedicated hardware, or the like. In addition, the memory store(s)44bmay be any type of memory such as volatile memory (e.g., Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), etc.) or non-volatile memory (e.g., flash memory, etc.), and so forth. In one example, memory store(s)44bmay be implemented by cache memory. In some examples, the processing circuitry46bmay access memory store(s)44b(for implementation of an image buffer for example). In other examples, the processing circuitry46bmay include memory stores (e.g., cache or the like) for the implementation of an image buffer or the like.

In some examples, the video encoder20implemented via processing circuitry may embody the various modules as discussed with respect toFIG.2and/or any other encoder system or subsystem described herein. The processing circuitry may be configured to perform the various operations as discussed herein.

Video decoder30may be implemented in a similar manner as implemented via the processing circuitry46to embody the various modules as discussed with respect to decoder30ofFIG.3and/or any other decoder system or subsystem described herein.

In some examples, the antenna42bof the video coding system40bmay be configured to receive an encoded bitstream of video data. The encoded bitstream may include data, indicators or the like associated with encoding a video frame. The video coding system40bmay also include video decoder30coupled to antenna42band configured to decode the encoded bitstream. Display device45bis configured to present video frames.

FIG.2is a block diagram illustrating an example of video encoder20that may implement the techniques of the present application. Video encoder20may perform intra- and inter-coding of video blocks within video slices. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy in video within a given video frame or picture. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy in video within adjacent frames or pictures of a video sequence. Intra-mode (I mode) may refer to any of several spatial based coding modes. Inter-modes, such as uni-directional prediction (P mode) or bi-prediction (B mode), may refer to any of several temporal-based coding modes.

As shown inFIG.2, video encoder20receives a current video block within a video frame to be encoded. In the example ofFIG.2, video encoder20includes mode select unit40, reference frame memory64, adder50, transform processing unit52, quantization unit54, and entropy coding unit56. Mode select unit40, in turn, includes motion compensation unit44, motion estimation unit42, intra-prediction unit46, and partition unit48. For video block reconstruction, video encoder20also includes inverse quantization unit58, inverse transform unit60, and adder62. A deblocking filter (not shown inFIG.2) may also be included to filter block boundaries to remove blockiness artifacts from reconstructed video. If desired, the deblocking filter would typically filter the output of adder62. Additional filters (in loop or post loop) may also be used in addition to the deblocking filter. Such filters are not shown for brevity, but if desired, may filter the output of adder50(as an in-loop filter).

During the encoding process, video encoder20receives a video frame or slice to be coded. The frame or slice may be divided into multiple video blocks. Motion estimation unit42and motion compensation unit44perform inter-predictive coding of the received video block relative to one or more blocks in one or more reference frames to provide temporal prediction. Intra-prediction unit46may alternatively perform intra-predictive coding of the received video block relative to one or more neighboring blocks in the same frame or slice as the block to be coded to provide spatial prediction. Video encoder20may perform multiple coding passes, e.g., to select an appropriate coding mode for each block of video data.

Moreover, partition unit48may partition blocks of video data into sub-blocks, based on evaluation of previous partitioning schemes in previous coding passes. For example, partition unit48may initially partition a frame or slice into largest coding units (LCUs), and partition each of the LCUs into sub-coding units (sub-CUs) based on rate-distortion analysis (e.g., rate-distortion optimization). Mode select unit40may further produce a quadtree data structure indicative of partitioning of a LCU into sub-CUs. Leaf-node CUs of the quadtree may include one or more prediction units (PUs) and one or more transform units (TUs).

In the present disclosure, the term “block” is used to refer to any of a coding unit (CU), a prediction unit (PU), or a transform unit (TU), in the context of HEVC, or similar data structures in the context of other standards (e.g., macroblocks and sub-blocks thereof in H.264/AVC). A CU includes a coding node, PUs, and TUs associated with the coding node. A size of the CU corresponds to a size of the coding node and is rectangular in shape. The size of the CU may range from 8×8 pixels up to the size of the treeblock with a maximum of 64×64 pixels or greater. Each CU may contain one or more PUs and one or more TUs. Syntax data associated with a CU may describe, for example, partitioning of the CU into one or more PUs. Partitioning modes may differ depending on whether the CU is skip or direct mode encoded, intra-prediction mode encoded, or inter-prediction mode encoded. PUs may be partitioned to be non-square in shape. Syntax data associated with a CU may also describe, for example, partitioning of the CU into one or more TUs according to a quadtree. In an embodiment, a CU, PU, or TU can be square or non-square (e.g., rectangular) in shape.

Mode select unit40may select one of the coding modes, intra or inter, e.g., based on error results, and provides the resulting intra- or inter-coded block to an adder50to generate residual block data and to an adder62to reconstruct the encoded block for use as a reference frame. Mode select unit40also provides syntax elements, such as motion vectors, intra-mode indicators, partition information, and other such syntax information, to entropy coding unit56.

Motion estimation unit42and motion compensation unit44may be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation, performed by motion estimation unit42, is the process of generating motion vectors, which estimate motion for video blocks. A motion vector, for example, may indicate the displacement of a PU of a video block within a current video frame (or a picture) relative to a predictive block within a reference frame (or other coded unit), or may indicate the displacement of a PU of a video block within a current video frame (or a picture) relative to a coded block within the current frame (or other coded unit). A predictive block is a block that is found to closely match the block to be coded, in terms of pixel difference, which may be determined by sum of absolute difference (SAD), sum of square difference (SSD), or other difference metrics. In some examples, video encoder20may calculate values for sub-integer pixel positions of reference pictures stored in reference frame memory64. For example, video encoder20may interpolate values of one-quarter pixel positions, one-eighth pixel positions, or other fractional pixel positions of the reference picture. Therefore, motion estimation unit42may perform a motion search relative to the full pixel positions and fractional pixel positions and output a motion vector with fractional pixel precision.

Motion estimation unit42calculates a motion vector for a PU of a video block in an inter-coded slice by comparing the position of the PU to the position of a predictive block of a reference picture. The reference picture may be selected from a first reference picture list (e.g. List 0) or a second reference picture list (e.g. List 1), each of which identify one or more reference pictures stored in reference frame memory64. Motion estimation unit42sends the calculated motion vector to entropy encoding unit56and motion compensation unit44.

Motion compensation, performed by motion compensation unit44, may involve fetching or generating the predictive block based on the motion vector determined by motion estimation unit42. Again, motion estimation unit42and motion compensation unit44may be functionally integrated, in some examples. Upon receiving the motion vector for the PU of the current video block, motion compensation unit44may locate the predictive block to which the motion vector points in one of the reference picture lists. Adder50forms a residual video block by subtracting pixel values of the predictive block from the pixel values of the current video block being coded, forming pixel difference values, as discussed below. In general, motion estimation unit42performs motion estimation relative to luma components, and motion compensation unit44uses motion vectors calculated based on the luma components for both chroma components and luma components. Mode select unit40may also generate syntax elements associated with the video blocks and the video slice for use by video decoder30in decoding the video blocks of the video slice.

Intra-prediction unit46may intra-predict a current block, as an alternative to the inter-prediction performed by motion estimation unit42and motion compensation unit44, as described above. In particular, intra-prediction unit46may determine an intra-prediction mode to use to encode a current block. In some examples, intra-prediction unit46may encode a current block using various intra-prediction modes, e.g., during separate encoding passes, and intra-prediction unit46(or mode select unit40, in some examples) may select an appropriate intra-prediction mode to use from the tested modes.

For example, intra-prediction unit46may calculate rate-distortion values using a rate-distortion analysis for the various tested intra-prediction modes, and select the intra-prediction mode having the best rate-distortion characteristics among the tested modes. Rate-distortion analysis generally determines an amount of distortion (or error) between an encoded block and an original, unencoded block that was encoded to produce the encoded block, as well as a bitrate (that is, a number of bits) used to produce the encoded block. Intra-prediction unit46may calculate ratios from the distortions and rates for the various encoded blocks to determine which intra-prediction mode exhibits the best rate-distortion value for the block.

In addition, intra-prediction unit46may be configured to code depth blocks of a depth map using a depth modeling mode (DMM). Mode select unit40may determine whether an available DMM mode produces better coding results than an intra-prediction mode and the other DMM modes, e.g., using rate-distortion optimization (RDO). Data for a texture image corresponding to a depth map may be stored in reference frame memory64. Motion estimation unit42and motion compensation unit44may also be configured to inter-predict depth blocks of a depth map.

After selecting an intra-prediction mode for a block (e.g., a conventional intra-prediction mode or one of the DMM modes), intra-prediction unit46may provide information indicative of the selected intra-prediction mode for the block to entropy coding unit56. Entropy coding unit56may encode the information indicating the selected intra-prediction mode. Video encoder20may include in the transmitted bitstream configuration data, which may include a plurality of intra-prediction mode index tables and a plurality of modified intra-prediction mode index tables (also referred to as codeword mapping tables), definitions of encoding contexts for various blocks, and indications of a most probable intra-prediction mode, an intra-prediction mode index table, and a modified intra-prediction mode index table to use for each of the contexts.

Video encoder20forms a residual video block by subtracting the prediction data from mode select unit40from the original video block being coded. Adder50represents the component or components that perform this subtraction operation.

Transform processing unit52applies a transform, such as a discrete cosine transform (DCT) or a conceptually similar transform, to the residual block, producing a video block comprising residual transform coefficient values. Transform processing unit52may perform other transforms which are conceptually similar to DCT. Wavelet transforms, integer transforms, sub-band transforms or other types of transforms could also be used.

Transform processing unit52applies the transform to the residual block, producing a block of residual transform coefficients. The transform may convert the residual information from a pixel value domain to a transform domain, such as a frequency domain. Transform processing unit52may send the resulting transform coefficients to quantization unit54. Quantization unit54quantizes the transform coefficients to further reduce bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, quantization unit54may then perform a scan of the matrix including the quantized transform coefficients. Alternatively, entropy encoding unit56may perform the scan.

Following quantization, entropy coding unit56entropy codes the quantized transform coefficients. For example, entropy coding unit56may perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding or another entropy coding technique. In the case of context-based entropy coding, context may be based on neighboring blocks. Following the entropy coding by entropy coding unit56, the encoded bitstream may be transmitted to another device (e.g., video decoder30) or archived for later transmission or retrieval.

Inverse quantization unit58and inverse transform unit60apply inverse quantization and inverse transformation, respectively, to reconstruct the residual block in the pixel domain, e.g., for later use as a reference block. Motion compensation unit44may calculate a reference block by adding the residual block to a predictive block of one of the frames of reference frame memory64. Motion compensation unit44may also apply one or more interpolation filters to the reconstructed residual block to calculate sub-integer pixel values for use in motion estimation. Adder62adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit44to produce a reconstructed video block for storage in reference frame memory64. The reconstructed video block may be used by motion estimation unit42and motion compensation unit44as a reference block to inter-code a block in a subsequent video frame.

Other structural variations of the video encoder20can be used to encode the video stream. For example, a non-transform based encoder20can quantize the residual signal directly without the transform processing unit52for certain blocks or frames. In another implementation, an encoder20can have the quantization unit54and the inverse quantization unit58combined into a single unit.

FIG.3is a block diagram illustrating an example of video decoder30that may implement the techniques of this present application. In the example ofFIG.3, video decoder30includes an entropy decoding unit70, motion compensation unit72, intra-prediction unit74, inverse quantization unit76, inverse transformation unit78, reference frame memory82, and adder80. Video decoder30may, in some examples, perform a decoding pass generally reciprocal to the encoding pass described with respect to video encoder20(as shown inFIG.2). Motion compensation unit72may generate prediction data based on motion vectors received from entropy decoding unit70, while intra-prediction unit74may generate prediction data based on intra-prediction mode indicators received from entropy decoding unit70.

During the decoding process, video decoder30receives an encoded video bitstream that represents video blocks of an encoded video slice and associated syntax elements from video encoder20. Entropy decoding unit70of video decoder30entropy decodes the bitstream to generate quantized coefficients, motion vectors or intra-prediction mode indicators, and other syntax elements. Entropy decoding unit70forwards the motion vectors and other syntax elements to motion compensation unit72. Video decoder30may receive the syntax elements at the video slice level and/or the video block level.

When the video slice is coded as an intra-coded (I) slice, intra prediction unit74may generate prediction data for a video block of the current video slice based on a signaled intra prediction mode and data from previously decoded blocks of the current frame or picture. When the video frame is coded as an inter-coded (i.e., B, P, or GPB) slice, motion compensation unit72produces predictive blocks for a video block of the current video slice based on the motion vectors and other syntax elements received from entropy decoding unit70. The predictive blocks may be produced from one of the reference pictures within one of the reference picture lists. Video decoder30may construct the reference frame lists, e.g. List 0 and List 1, using default construction techniques based on reference pictures stored in reference frame memory82.

Motion compensation unit72determines prediction information for a video block of the current video slice by parsing the motion vectors and other syntax elements, and uses the prediction information to produce the predictive blocks for the current video block being decoded. For example, motion compensation unit72uses some of the received syntax elements to determine a prediction mode (e.g., intra- or inter-prediction) used to code the video blocks of the video slice, an inter-prediction slice type (e.g., B slice, P slice, or GPB slice), construction information for one or more of the reference picture lists for the slice, motion vectors for each inter-encoded video block of the slice, inter-prediction status for each inter-coded video block of the slice, and other information to decode the video blocks in the current video slice.

Motion compensation unit72may also perform interpolation based on interpolation filters. Motion compensation unit72may use interpolation filters as used by video encoder20during encoding of the video blocks to calculate interpolated values for sub-integer pixels of reference blocks. In this case, motion compensation unit72may determine the interpolation filters used by video encoder20from the received syntax elements and use the interpolation filters to produce predictive blocks.

Data for a texture image corresponding to a depth map may be stored in reference frame memory82. Motion compensation unit72may also be configured to inter-predict depth blocks of a depth map.

As will be appreciated by those skilled in the art, the coding system10ofFIG.1Ais suitable for implementing various video coding or compression techniques. Some video compression techniques, such as inter prediction, intra prediction, and/or loop filters, will be discussed later. Therefore, the video compression techniques have been adopted into various video coding standards, such as H.264/AVC and H.265/HEVC.

Various coding tools such as adaptive motion vector prediction (AMVP) and merge mode (MERGE) are used to predict motion vectors (MVs) and enhance inter prediction efficiency and, therefore, the overall video compression efficiency.

Other variations of the video decoder30can be used to decode the compressed bitstream. For example, the decoder30can produce the output video stream without the loop filtering unit. For example, a non-transform based decoder30can inverse-quantize the residual signal directly without the inverse-transform processing unit78for certain blocks or frames. In another implementation, the video decoder30can have the inverse-quantization unit76and the inverse-transform processing unit78combined into a single unit.

FIG.4is a schematic diagram of a video coding device according to an embodiment of the disclosure. The video coding device400is suitable for implementing the disclosed embodiments as described herein. In an embodiment, the video coding device400may be a decoder such as video decoder30ofFIG.1Aor an encoder such as video encoder20ofFIG.1A. In an embodiment, the video coding device400may be one or more components of the video decoder30ofFIG.1Aor the video encoder20ofFIG.1Aas described above.

The video coding device400includes ingress ports410and receiver units (Rx)420for receiving data, a processor430(which may be a logic unit, or a central processing unit (CPU)) for processing the data, transmitter units (Tx)440and egress ports450for transmitting the data, and a memory460for storing the data. The video coding device400may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the ingress ports410, the receiver units420, the transmitter units440, and the egress ports450for egress or ingress of optical or electrical signals.

The processor430is implemented by hardware and/or software. The processor430may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), FPGAs, ASICs, and DSPs. The processor430is in communication with the ingress ports410, the receiver units420, the transmitter units440, the egress ports450, and the memory460. The processor430includes a coding module470. The coding module470implements the disclosed embodiments described herein. For instance, the coding module470implements, processes, prepares, or provides the various coding operations. The inclusion of the coding module470therefore provides a substantial improvement to the functionality of the video coding device400and effects a transformation of the video coding device400to a different state. Alternatively, the coding module470is implemented as instructions stored in the memory460and executed by the processor430.

The memory460includes one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory460may be volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM).

FIG.5is a simplified block diagram of an apparatus500that may be used as either or both of the source device12and the destination device14fromFIG.1Aaccording to an exemplary embodiment. Apparatus500can implement techniques of this present application. Apparatus500can be in the form of a computing system including multiple computing devices, or in the form of a single computing device, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, and the like.

Processor502of apparatus500can be a central processing unit. Alternatively, processor502can be any other type of device, or multiple devices, capable of manipulating or processing information now-existing or hereafter developed. Although the disclosed implementations can be practiced with a single processor as shown, e.g., processor502, advantages in speed and efficiency can be achieved using more than one processor.

Memory504in the apparatus500can be a read only memory (ROM) device or a random access memory (RAM) device in an implementation. Any other suitable type of storage device can be used as memory504. Memory504may be used to store code and/or data506that is accessed by processor502using bus512. Memory504can further be used to store operating system508and application programs510. Application programs510may include at least one program that permits processor502to perform the methods described here. For example, application programs510can include multiple applications 1 through N, and further include a video coding application that performs the methods described here. Apparatus500can also include additional memory in the form of secondary storage514, which can, for example, be a memory card used with a mobile computing device. Because the video communication sessions may contain a significant amount of information, they can be stored in whole or in part in storage514and loaded into memory504as needed for processing.

Apparatus500can also include one or more output devices, such as display518. Display518may be, in one example, a touch sensitive display that combines a display with a touch sensitive element operable to sense touch inputs. Display518can be coupled to processor502via bus512. Other output devices that permit a user to program or otherwise use apparatus500can be provided in addition to or as an alternative to display518. When the output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD), a cathode-ray tube (CRT) display, a plasma display or light emitting diode (LED) display, such as an organic LED (OLED) display.

Apparatus500can also include or be in communication with image-sensing device520, for example a camera, or any other image-sensing device520now existing or hereafter developed that can sense an image such as the image of a user operating apparatus500. Image-sensing device520can be positioned such that it is directed toward the user operating apparatus500. In an example, the position and optical axis of the image-sensing device520can be configured such that the field of vision includes an area that is directly adjacent to display518and from which display518is visible.

Apparatus500can also include or be in communication with sound-sensing device522, for example a microphone, or any other sound-sensing device now existing or hereafter developed that can sense sounds near apparatus500. Sound-sensing device522can be positioned such that it is directed toward the user operating apparatus500and can be configured to receive sounds, for example, speech or other utterances, made by the user while the user operates apparatus500.

AlthoughFIG.5depicts processor502and memory504of apparatus500as being integrated into a single device, other configurations can be utilized. The operations of processor502can be distributed across multiple machines (each machine having one or more of processors) that can be coupled directly or across a local area or other network. Memory504can be distributed across multiple machines such as a network-based memory or memory in multiple machines performing the operations of apparatus500. Although depicted here as a single bus, bus512of apparatus500may include multiple buses. Further, secondary storage514can be directly coupled to the other components of apparatus500or can be accessed via a network and can include a single integrated unit such as a memory card or multiple units such as multiple memory cards. Apparatus500can thus be implemented in a wide variety of configurations.

The present disclosure is related to intra-prediction as part of a video coding mechanism.

Intra prediction can be used when there is no available reference picture, or when inter predication coding is not used for the current block or picture. The reference samples of intra prediction are usually derived from previously coded (or reconstructed) neighboring blocks in the same picture. For example, both in H.264/AVC and H.265/HEVC, the boundary samples of adjacent blocks are used as reference for intra prediction. In order to cover different texture or structural characters, there are many different intra prediction modes. In each mode, a different prediction signal derivation method is used. For example, H.265/HEVC supports a total of 35 intra prediction modes, as shown inFIG.6.

For intra prediction, the decoded boundary samples of adjacent blocks are used as reference. The encoder selects the best luma intra prediction mode of each block from35options, which includes 33 directional prediction modes, a DC mode and a Planar mode. The mapping between the intra prediction direction and the intra prediction mode number is specified inFIG.6.

As shown inFIG.7, the block “CUR” is a current block to predict, the gray samples along the boundary of adjacent constructed blocks are used as reference samples. The prediction signal can be derived by mapping the reference samples according to a specific method which is indicated by the intra prediction mode.

Video coding may be performed based on color space and color format. For example, color video plays an important role in multimedia systems, where various color spaces are used to efficiently represent color. A color space specifies color with numerical values using multiple components. A popular color space is the RGB color space, where color is represented as a combination of three primary color component values (i.e., red, green and blue).

YCbCr can be easily converted from the RGB color space via a linear transformation and the redundancy between different components, namely the cross component redundancy, is significantly reduced in the YCbCr color space. One advantage of YCbCr is the backward compatibility with black and white TV as Y signal conveys luminance information. In addition, chrominance bandwidth can be reduced by subsampling the Cb and Cr components in 4:2:0 chroma sampling format with significantly less subjective impact than subsampling in the RGB color space. Because of these advantages, YCbCr has been the major color space in video compression. There are also other color spaces, such as YCoCg, used in video compression. In this disclosure, regardless of the actual color space used, the luma (or L or Y) and two chroma (Cb and Cr) are used to represent the three color components in the video compression scheme.

For example, when the chroma format sampling structure is 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array. The nominal vertical and horizontal relative locations of luma and chroma samples in pictures are shown inFIG.8.

FIG.9(includingFIG.9AandFIG.9B) is a schematic diagram illustrating an example mechanism of performing a cross-component linear model (CCLM) intra-prediction900.FIG.9illustrates an example of 4:2:0 sampling.FIG.9shows an example of the location of the left and above samples and the sample of the current block involved in the CCLM mode. The white squares are samples of the current block, and the shaded circles are reconstructed samples.FIG.9Aillustrates an example of the neighboring reconstructed pixels of a co-located luma block.FIG.9Billustrates an example of the neighboring reconstructed pixels of a chroma block. If the video format is YUV4:2:0, then there are one 16×16 luma block and two 8×8 chroma blocks.

The CCLM intra-prediction mechanism900is a type of cross-component intra-prediction. Hence, the CCLM intra-prediction900may be performed by an intra estimation unit46of an encoder20and/or an intra prediction unit94of a decoder30. The CCLM intra-prediction900predicts chroma samples903in a chroma block901. The chroma samples903appear at integer positions shown as intersecting lines. The prediction is based in part on neighboring reference samples, which are depicted as black circles. Unlike with intra-prediction modes500, the chroma samples903are not predicted solely based on the neighboring chroma reference samples905, which are denoted as reconstructed chroma samples (Rec′C). The chroma samples903are also predicted based on luma reference samples913and neighboring luma reference samples915. Specifically, a CU contains a luma block911and two chroma blocks901. A model is generated that correlates the chroma samples903and the luma reference samples913in the same CU. Linear coefficients for the model are determined by comparing the neighboring luma reference samples915to the neighboring chroma reference samples905.

As the luma reference samples913are reconstructed, the luma reference samples913are denoted as reconstructed luma samples (Rec′L). As the neighboring chroma reference samples905are reconstructed, the neighboring chroma reference samples905are denoted as reconstructed chroma samples (Rec′C).

As shown, the luma block911contains four times the samples as the chroma block901. Specifically, the chroma block901contains N number of samples by N number of samples while the luma block911contains 2N number of samples by 2N number of samples. Hence, the luma block911is four times the resolution of the chroma block901. For the prediction to operate on the luma reference samples913and the neighboring luma reference samples915, the luma reference samples913and the neighboring luma reference samples915are down-sampled to provide an accurate comparison with the neighboring chroma reference samples905and the chroma samples903. Down-sampling is the process of reducing the resolution of a group of sample values. For example, when YUV4:2:0 format is used, the luma samples may be down-sampled by a factor of four (e.g., width by two, and height by two). YUV is a color encoding system that employs a color space in terms of luma components Y and two chrominance components U and V.

To reduce the cross-component redundancy, there is a cross-component linear model (CCLM, also can be called LM mode, CCIP mode) prediction mode, for which, the chroma samples are predicted based on the reconstructed luma samples of the same coding unit (CU) by using a linear model as follows:
predC(i,j)=α·recL′(i,j)+β  (1)
where predC(i,j) represents the predicted chroma samples in a CU and recL(i,j) represents the down-sampled reconstructed luma samples of the same CU, and α and β are linear model parameters or linear model coefficients.

In one example, the parameters α and β are derived by minimizing the regression error between the neighbouring reconstructed luma samples around the current luma block and the neighboring reconstructed chroma samples around the chroma block as follows:

α=N·Σ⁡(L⁡(n)·C⁡(n))-Σ⁢L⁡(n)·Σ⁢C⁡(n)N·Σ⁡(L⁡(n)·L⁡(n))-Σ⁢L⁡(n)·Σ⁢L⁡(n)(2)β=Σ⁢C⁡(n)-α·Σ⁢L⁡(n)N(3)
where L(n) represents the down-sampled top and left neighboring reconstructed luma samples, C(n) represents the top and left neighboring reconstructed chroma samples, and value of N is equal to the sum of the width and height of the current chroma coding block (e.g., chroma block901). In another example, α and β are determined based on the minimum and maximum value of the down-sampled neighboring luma reference samples as discussed with respect toFIG.16below.

The present disclosure is related to using luma samples to predict chroma samples via intra-prediction as part of a video coding mechanism. The cross-component linear model (CCLM) prediction modes are added as additional chroma intra prediction modes. At the encoder side, more rate distortion cost check for the chroma component is added for selecting the chroma intra prediction mode.

In general, when CCLM prediction mode (short for LM prediction mode) is applied, video encoder20and video decoder30may invoke the following steps. Video encoder20and video decoder30may down-sample the neighboring luma samples. Video encoder20and video decoder30may derive linear parameters (i.e., α and β) (also referred to as scaling parameters or parameters of a cross-component linear model (CCLM) prediction mode). Video encoder20and video decoder30may down-sample the current luma block and derive the prediction (e.g., a predictive block) based on the down-sampled luma block and the linear parameters.

There may be various ways in which to down-sample.

FIG.10is a conceptual diagram illustrating an example of luma positions and chroma positions for down-sampling samples of a luma block for generating a predictive block for a chroma block. As depicted inFIG.10, a chroma sample, represented by the filled-in (i.e., solid black) triangle, is predicted from two luma samples, represented by the two filled-in circles, by applying a [1, 1] filter. The [1, 1] filter is one example of a 2-tap filter.

FIG.11is a conceptual diagram illustrating another example of luma positions and chroma positions for down-sampling samples of a luma block for generating a predictive block. As depicted inFIG.11, a chroma sample, represented by the filled in (i.e., solid black) triangle, is predicted from six luma samples, represented by the six filled in circles, by applying a 6-tap filter.

FIGS.12-15are schematic diagrams illustrating example mechanisms1200,1300,1400, and1500of down-sampling to support cross-component intra-prediction, for example according to CCLM intra-prediction900, mechanism1600, MDLM intra-prediction using CCIP_A mode1700and CCIP_L mode1800, and/or MMLM intra-prediction as depicted in graph1900. Hence, mechanisms1200,1300,1400and1500can be may be performed by an intra prediction unit46and/or an intra prediction unit74of a codec system10or40, an intra prediction unit46of an encoder20, and/or an intra prediction unit74of a decoder30. Specifically, mechanisms1200,1300,1400, and1500can be employed during step2210of method220, during step2320of method230or step2520of method250at a decoder, and during step2420of method240or step2620of method260at an encoder, respectively. The details ofFIGS.12-15are introduced in International Application No. PCT/US2019/041526, filed on Jul. 12, 2019, which is incorporated herein by reference.

In Mechanism1200ofFIG.12, two rows1218and1219of neighboring luma reference samples are down-sampled and three columns1220,1221, and1222of neighboring luma reference samples are down-sampled. The rows1218and1219and columns1220,1221, and1222are directly adjacent to a luma block1211that shares a CU with a chroma block being predicted according to cross-component intra-prediction. After down-sampling, the rows1218and1219of neighboring luma reference samples become a single row1216of down-sampled neighboring luma reference samples. Further, the columns1220,1221, and1222of neighboring luma reference samples are down-sampled resulting in a single column1217of down-sampled neighboring luma reference samples. In addition, the luma samples of the luma block1211are down-sampled to create down-sampled luma reference samples1212. The down-sampled luma reference samples1212and the down-sampled neighboring luma reference samples from the row1216and the column1217can then be employed for cross-component intra-prediction according to equation (1). It should be noted that the dimensions of rows1218and1219and columns1220,1221, and1222may extend beyond the luma block1211as shown inFIG.12. For example, the number of top neighboring luma reference samples in each row1218/1219, which may be denoted as M, is larger than the number of luma samples in a row of the luma block1211, which may be denoted as W. Further, the number of left neighboring luma reference samples in each column1220/1221/1222, which may be denoted as N, is larger than the number of luma samples in a column of the luma block1211, which may be denoted as H.

In an example, mechanism1200may be implemented as follows. For a luma block1211, the two top neighboring rows1218and1219, denoted as A1 and A2, are used for down-sampling to get down-sampled neighboring row1216denoted as A. A[i] is the ithsample in A, A1[i] is the ithsample in A1, and A2[i] is the ithsample in A2. In a specific example, a six tap down-sampling filter can be applied to neighboring rows1218and1219to obtain the down-sampled neighboring row1216according to equation (4):
A[i]=(A2[2i]*2+A2[2i-1]+A2[2i+1]+A1[2i]*2+A1[2i-1]+A1[2i+1]+4)>>3  (4)

Further, the left neighboring columns1220,1221, and1222are denoted as L1, L2, and L3 and are used for down-sampling to obtain a down-sampled neighboring column1217denoted as L. L[i] is the ithsample in L, L1[i] is the ithsample in L1, L2[i] is the ithsample in L2, and L3[i] is the ithsample in L3. In an specific example, a six tap down-sampling filter can be applied to neighboring columns1220,1221, and1222to obtain down-sampled neighboring column1217according to equation (5):
L[i]=(L2[2i]*2+L1[2i]+L3[2i]+L2[2i+1]*2+L1[2i+1]+L3[2i+1]+4)>>3  (5)

Mechanism1300ofFIG.13is substantially similar to mechanism1200ofFIG.12. Mechanism1300includes a luma block1311with neighboring rows1318and1319and columns1320,1321, and1322of neighboring luma reference samples, which are similar to luma block1211, rows1218and1219, and columns1220,1221, and1222, respectively. The difference is that rows1318and1319and columns1320,1321, and1322do not extend past the luma block1211. As in mechanism1200, the luma block1311, rows1318and1319and columns1320,1321, and1322are down-sampled to create down-sampled luma reference samples1312, column1317, and row1316containing down-sampled neighboring luma reference samples. Column1317and row1316do not extend beyond the block of down-sampled luma reference samples1312. Otherwise, down-sampled luma reference samples1312, column1317, and row1316are substantially similar to down-sampled luma reference samples1212, column1217, and row1216, respectively.

Mechanism1400ofFIG.14is similar to mechanisms1200and1300but employs a single row1418of neighboring luma reference samples instead of two rows. Mechanism1400also employs three columns1420,1421, and1422of neighboring luma reference samples. The row1418and columns1420,1421, and1422are directly adjacent to a luma block1411that shares a CU with a chroma block being predicted according to cross-component intra-prediction. After down-sampling, the row1418of neighboring luma reference samples becomes a row1416of down-sampled neighboring luma reference samples. Further, the columns1420,1421, and1422of neighboring luma reference samples are down-sampled resulting in a single column1417of down-sampled neighboring luma reference samples. Further, the luma samples of the luma block1411are down-sampled to create down-sampled luma reference samples1412. The down-sampled luma reference samples1412and the down-sampled neighboring luma reference samples from the row1416and the column1417can then be employed for cross-component intra-prediction according to equation (1).

During down-sampling, the rows and columns are stored in memory in a line buffer. By omitting row1319during down-sampling and instead using a single row1418of values significantly decreases memory usage in the line buffer. However, the down-sampled neighboring luma reference samples from the row1316have been found to be substantially similar to the down-sampled neighboring luma reference samples from the row1416. As such, omitting row1319during down-sampling and instead using a single row1418results in reduced memory utilization in the line buffer, and hence better processing speed, greater parallelism, fewer memory requirements, etc., without sacrificing accuracy and hence coding efficiency. Accordingly, in one example embodiment, a single row1418of neighboring luma reference samples are down-sampled for use in cross-component intra-prediction.

In an example, mechanism1400may be implemented as follows. For a luma block1411, the top neighboring row1418, denoted as A1, is used for down-sampling to get down-sampled neighboring row1416denoted as A. A[i] is the ithsample in A and A1[i] is the ithsample in A1. In an specific example, a three tap down-sampling filter can be applied to neighboring row1418to obtain the down-sampled neighboring row1416according to equation (6):
A[i]=(A1[2i]*2+A1[2i−1]+A1[2i+1]+2)>>2  (6)

Further, the left neighboring columns1420,1421, and1422are denoted as L1, L2, and L3 and are used for down-sampling to obtain a down-sampled neighboring column1417denoted as L. L[i] is the ithsample in L, L1[i] is the ithsample in L1, L2[i] is the ithsample in L2, and L3[i] is the ithsample in L3. In a specific example, a six tap down-sampling filter can be applied to neighboring columns1320,1321, and1322to obtain down-sampled neighboring column1317according to equation (7):
L[i]=(L2[2i]*2+L1[2i]+L3[2i]+L2[2i+1]*2+L1[2i+1]+L0[2i+1]+4)>>3  (7)

It should be noted that the mechanism1400is not limited to the down-sampling filters described. For example, instead of employing a three tap down-sampling filter as described in equation (6), the samples can also be fetched directly as in equation (8) below:
A[i]=A1[2i](8)

Mechanism1500ofFIG.15is similar to mechanism1300but employs a single row1518of neighboring luma reference samples and a single column1520of neighboring luma reference samples instead of two rows1318and1319and three columns1320,1321, and1322, respectively. The row1518and column1520are directly adjacent to a luma block1511that shares a CU with a chroma block being predicted according to cross-component intra-prediction. After down-sampling, the row1518of neighboring luma reference samples becomes a row1516of down-sampled neighboring luma reference samples. Further, the column1520of neighboring luma reference samples are down-sampled resulting in a single column1517of down-sampled neighboring luma reference samples. The down-sampled neighboring luma reference samples from the row1516and the column1517can then be employed for cross-component intra-prediction according to equation (1).

Mechanism1500omits row1319and columns1321and1322during down-sampling and instead using a single row1518and single column1520of values, which significantly decreases memory usage in the line buffer. However, the down-sampled neighboring luma reference samples from the row1316and column1317have been found to be substantially similar to the down-sampled neighboring luma reference samples from the row1516and column1517, respectively. As such, omitting row1319and columns1321and1322during down-sampling and instead using a single row1518and column1520results in reduced memory utilization in the line buffer, and hence better processing speed, greater parallelism, fewer memory requirements, etc., without sacrificing accuracy and hence coding efficiency. Accordingly, in another example embodiment, a single row1518of neighboring luma reference samples and a single column1520of neighboring luma reference samples are down-sampled for use in cross-component intra-prediction.

In an example, mechanism1500may be implemented as follows. For a luma block1511, the top neighboring row1518, denoted as A1, is used for down-sampling to get down-sampled neighboring row1516denoted as A. A[i] is the ithsample in A and A1[i] is the ithsample in A1. In a specific example, a three tap down-sampling filter can be applied to neighboring row1518to obtain the down-sampled neighboring row1516according to equation (9):
A[i]=(A1[2i]*2+A1[2i−1]+A1[2i+1]+2)>>2  (9)

Further, the left neighboring column1520is denoted as L1 is used for down-sampling to obtain a down-sampled neighboring column1517denoted as L. L[i] is the ithsample in L and L1[i] is the ithsample in L1. In a specific example, a two tap down-sampling filter can be applied to neighboring column1520to obtain down-sampled neighboring column1517according to equation (10):
L[i]=(L1[2i]+L1[2i+1]+1)>>2  (10)

In an alternate example, mechanism1500could be modified to employ an L2 column (e.g., column1321) instead of an L1 column (e.g., column1520) when down-sampling. In such a case, a two tap down-sampling filter can be applied to neighboring column L2 to obtain down-sampled neighboring column1517according to equation (11). It should be noted that the mechanism1500is not limited to the down-sampling filters described. For example, instead of employing a two tap and a three tap down-sampling filter as described in equations (9) and (10), the samples can also be fetched directly as in equations (11) and (12) below.
A[i]=A1[2i](11)
L[i]=L2[2i](12)

Further, it should also be noted that mechanisms1400and1500can also be applied when the dimensions of rows1418,1416,1518,1516and/or columns1420,1421,1422,1417,1520, and/or1517extend beyond the corresponding luma block1411and/or1511(e.g., as shown inFIG.12).

In the Joint exploration model (JEM), there are two CCLM modes: the single model CCLM mode and the multiple model CCLM mode (MMLM). As indicated by the name, the single model CCLM mode employs one linear model for predicting the chroma samples from the luma samples for the whole CU, while in MMLM, there can be two linear models. In MMLM, neighboring luma samples and neighboring chroma samples of the current block are classified into two groups, each group is used as a training set to derive a linear model (i.e., a particular α and a particular β are derived for a particular group). Furthermore, the samples of the current luma block are also classified based on the same rule for the classification of neighboring luma samples.

FIG.16is a graph illustrating an example mechanism1600of determining linear model parameters to support CCLM intra-prediction. To derive the linear model parameters α and β, the top and left neighboring reconstructed luma samples may be down-sampled to obtain a one-to-one relationship with the top and left neighboring reconstructed chroma samples. In mechanism1200, α and β, as used in equation (1), are determined based on the minimum and maximum value of the down-sampled neighboring luma reference samples. The two points (2 pairs of luma value and chroma value or 2 couples of luma value and chroma value) (A, B) are the minimum and maximum values inside the set of neighboring luma samples as depicted inFIG.16. This is an alternate approach to determining α and β based on minimizing the regression error.

As shown inFIG.16, a straight line is presented by the equation Y=αx+β, where the linear model parameters α and β are obtained according to the following equations (13) and (14):

α=yB-yAxB-xA(13)β=yA-α⁢xA(14)
where (xA, yA) is a set of coordinates defined by the minimum neighboring luma reference value and a corresponding chroma reference value, and (xB, yB) is a set of coordinates defined by the maximum neighboring luma reference value and a corresponding chroma reference value. Here note that the two points (2 pairs of luma value and chroma value) (A, B) are chosen from the down-sampled luma reconstructed neighboring samples and the chroma reconstructed neighboring samples.

The example mechanism1600uses the max/min luma values and the corresponding chroma values to derive the linear model parameters. Only 2 points (a point is represented by a pair of luma value and chroma value) are chosen from the neighboring luma samples and the neighboring chroma samples, to derive the linear model parameters. The example mechanism1600is not applied for some video sequences with some noise.

Multi-Directional Linear Model

Besides both the above (or top) neighboring samples and left neighboring samples can be used to calculate the linear model parameters together, they also can be used alternatively in the other 2 CCIP (cross-component intra prediction) modes, called CCIP_A, and CCIP_L modes. CCIP_A and CCIP_L also can be denoted as multi-directional linear model (MDLM) for brevity.

FIGS.17and18are schematic diagrams illustrating an example mechanism of performing MDLM intra-prediction. MDLM intra-prediction operates in a manner similar to CCLM intra-prediction900. Specifically, MDLM intra-prediction uses both a cross-component linear model prediction (CCIP)_A mode1700and a CCIP_L mode1800when determining linear model parameters α and β. For example, MDLM intra-prediction may calculate linear model parameters α and β using CCIP_A mode1700and CCIP_L mode1800. In another example, MDLM intra-prediction may use CCIP_A mode1700or CCIP_L mode1800to determine linear model parameters α and β.

In CCIP_A mode, only the top neighboring samples are used to calculate the linear model parameters. To obtain more reference samples, the top neighboring samples are extended to (W+H), usually. As shown inFIG.17, W=H, where W indicates the width of the respective luma or chroma block, and H indicates the height of the respective luma or chroma block.

In CCIP_L mode, only left neighboring samples are used to calculate the linear model parameters. To obtain more reference samples, the left neighboring samples are extended to (H+W), usually. As shown inFIG.18, W=H, where W indicates the width of the respective luma or chroma block, and H indicates the height of the respective luma or chroma block.

CCIP mode (i.e. CCLM or LM mode) and MDLM (CCIP_A and CCIP_L) can be used together, or, alternatively. e.g., only CCIP is used in a codec, or only MDLM is used in a codec, or both CCIP and MDLM are used in a codec.

Multiple Model CCLM

Besides the single model CCLM, there is another mode called the multiple model CCLM mode (MMLM). As indicated by the name, the single model CCLM mode employs one linear model for predicting the chroma samples from the luma samples for the whole CU, while in MMLM, there can be two models. In MMLM, neighboring luma samples and neighboring chroma samples of the current block are classified into two groups, each group is used as a training set to derive a linear model (i.e., a particular α and β are derived for a particular group). Furthermore, the samples of the current luma block are also classified based on the same rule for the classification of neighboring luma samples.

FIG.19is a graph illustrating an example mechanism1900of determining linear model parameters to support MMLM intra-prediction. MMLM intra-prediction, as shown in graph1900is a type of cross-component intra-prediction. MMLM intra-prediction is similar to CCLM intra-prediction. The difference is that in MMLM, the neighboring reconstructed luma samples are placed into two groups by comparing the relevant luma value (e.g., Rec′L) to a threshold. CCLM intra-prediction is then performed on each group to determine linear model parameters α and β and complete a corresponding linear model according to equation (1). The classification of the neighboring reconstructed luma samples into two groups may be performed according to equation (15) below:

In an example, the threshold is calculated as the average value of the neighboring reconstructed luma samples. A neighboring reconstructed luma sample with Rec′L[x,y]<=Threshold is classified into group 1; while a neighboring reconstructed luma sample with Rec′L[x,y]>Threshold is classified into group 2.

{PredC[x,y]=α1×RecL′[x,y]+β1if⁢RecL′[x,y]≤ThresholdPredC[x,y]=α2×RecL′[x,y]+β2if⁢RecL′[x,y]>Threshold(15)
where the variables of equation (15) is defined similarly to equation (1) with a subscript of one indicating relation to a first group and a subscript of two indicating a relationship to a second group.

As shown by graph1900, linear model parameters α1and β1can be calculated for a first group and linear model parameters α2and β2can be calculated for a second group. As a specific example, such values may be α1=2 of two, β1=1, α2=½, and β2=−1 of negative one where the threshold is a luma value of 17. The MMLM intra-prediction can then select the resulting model that provides the least residual samples and/or results in the greatest coding efficiency.

As noted above, the example mechanisms of performing different CCLM intra-prediction discussed herein use max/min luma values and the corresponding chroma values to derive the linear model parameters, improved mechanisms of performing CCLM intra-prediction that achieve robust linear model parameters are desirable.

If more than one points have maximum value or more than one points have minimum value, then the pair of points will be chosen based on the chroma value of the corresponding points.

If more than one points have maximum value or more than one points have minimum value, the mean chroma value of the luma samples with the maximum value will be set as the corresponding chroma value for maximum luma value, and the mean chroma value of the luma samples with the minimum value will be set as the corresponding chroma value for minimum luma value;

Not only 1 pair of points (minimum and maximum) will be chosen. Specifically, the N points which has larger luma value, and the M points which has smaller luma value will be used to calculate the linear model parameter.

Not only 1 pair of points will be chosen. Specifically, the N points with luma value within a range of [MaxValue−T1, MaxValue], and the M points with luma value within a range of [MinValue, MinValue+T2] will be chosen as the points to calculate the linear model parameter.

Not only the above and left neighboring samples are used to obtain the max/min values, but also some extended neighboring samples are used, like the below left neighboring samples and top right neighboring samples.

With the example improved mechanisms mentioned above, more robust linear model parameters can be arrived with improving the coding efficiency of CCLM intra-prediction.

In the present disclosure, the improved mechanisms for obtaining the max/min luma values and the corresponding chroma values among the couples of luma and chroma samples will be described in details below.

Here note that, the improved mechanisms also can be used in MDLM and MMLM.

In the present disclosure, the improved mechanisms are presented to obtain the maximum and minimum luma values and the corresponding chroma values to derive the linear model parameters. By the improved mechanisms, more robust linear model parameters can be derived.

In an example, here the set of the pairs of luma samples and chroma samples are illustrated as {(p0, q0), (p1, q1), (p2, q2), . . . , (p1, q1), . . . , (pV−1, qV−1)}. Where piis the luma value of the ithpoint, qiis the chroma value of the ithpoint. Here the set of luma points is noted as P={p0, p1, p2, . . . , p1, . . . , pV−1}, the set of the chroma points is noted as Q={q0, q1, . . . , qi, . . . , qV−1}.

First Improved Mechanism: More than 1 Extreme Points, and the Couple of Points is Chosen According to Chroma Value

In the first improved mechanism, if more than 1 points have the max/min value, then the couple of points will be chosen based on the chroma value of the corresponding points. The couple of points which have the smallest chroma value difference will be chosen as the couple of points to derive the linear model parameter.

For example, suppose that the 5th, 7th, 8thpoints have the maximum luma value, and the 4th, 6thpoints have the minimum luma value, |q7−q4| is the smallest value among |q5−q4|, |q5−q6|, |q7−q4|, |q7−q6|, |q8−q4| and |q8−q6|. Then the 7thand the 4thpoints will be chosen to derive the linear model parameters.

Here note that, besides using the smallest chroma value difference, the first improved mechanism can also use the biggest chroma value difference. For example, suppose that the 5th, 7th, 8thpoints have the maximum luma value, and the 4th, 6thpoints have the minimum luma value, |q5−q6| is the biggest value among |q5−q4|, |q5−q6|, |q7−q4|, |q7−q6|, |q8−q4| and |q8−q6|. Then the 5thand the 6thpoints will be chosen to derive the linear model parameters.

Here note that, the improved mechanism also can be used in MDLM, and MMLM.

Second Improved Mechanism: More than 1 Extreme Points, Using the Mean Chroma Value

In the second improved mechanism, if more than one points have the max/min value, then the mean chroma value will be used. The chroma value corresponding to the maximum luma value is the mean chroma value of the points with maximum luma value. The chroma value corresponding to the minimum luma value is the mean chroma value of the points with minimum luma value.

For example, if the 5th, 7th, 8thpoints have the maximum luma value, and the 4th, 6thpoints have the minimum luma value. Then the chroma value corresponding to the maximum luma value is the mean value of q5, q7and q8. The chroma value corresponding to the minimum luma value is the mean value of q4and q6.

Here note that, the improved mechanism also can be used in MDLM, and MMLM.

Third Improved Mechanism: (More than One Points Based on Number of Points), More than 1 Bigger/Smaller Points Will be Used, Using Mean Value

In the third improved mechanism, N points will be used to calculate the maximum luma value and the corresponding chroma value. The selected N points have bigger luma value than other points. The mean luma value of the selected N points will be used as the maximum luma value, and the mean chroma value of the selected N points will be used as the chroma value corresponding to the maximum luma value.

M points will be used to calculate the minimum luma value and the corresponding chroma value. The selected M points have smaller luma value than other points. The mean luma value of the selected M points will be used as the minimum luma value, and the mean chroma value of the selected M points will be used as the chroma value corresponding to the minimum luma value.

For example, if the 5th, 7th, 8th, 9th, 11thpoints have bigger luma value than other points, and the 4th, 6th, 14th, 18thpoints have the smaller luma value. Then the mean value of p5, p7, p8, p9and p11is the maximum luma value used for linear model parameters, and mean value of the q5, q7, q8, q9and q11is the chroma value corresponding to maximum luma value. Then the mean value of p4, p6, p14and p18is the minimum luma value used for linear model parameter, and the mean value of q4, q6, q14and q18is the chroma value corresponding to minimum luma value.

Here note that, M and N can be equal, or not equal. For example, M=N=2.

Here not that, M and N can be adaptively defined based on the block size. For example, M=(W+H)>>t, N=(W+H)>>r. Here the t and r are quantity of right shift bits, such as 2, 3, and 4.

In an alternative implementation, if (W+H)>T1, then M and N are set as particular values M1, N1. Otherwise, M and N are set as particular values M2, N2. Here M1and N1can be equal, or not equal. M2and N2can be equal, or not equal. For example, if (W+H)>16, then M=2, N=2. If (W+H)<=16, then M=1, N=1.

Note that the improved mechanism also can be used in MDLM and MMLM.

Fourth Improved Mechanism: (Actively, More than One Points Based on Luma Value Threshold), More than One Bigger/Smaller Points Will be Used, Using Mean Value

In the fourth improved mechanism, N points will be used to calculate the maximum luma value and the corresponding chroma value. The selected N points with luma value are within a range of [MaxlumaValue-T1, MaxlumaValue]. The mean luma value of the selected N points will be used as the maximum luma value, and the mean chroma value of the selected N points will be used as the chroma value corresponding to the maximum luma value. In an example, the MaxlumaValue represents the maximum luma value in the set P.

In the fourth improved mechanism, M points will be used to calculate the minimum luma value and the corresponding chroma value. The selected M points with luma value are within a range of [MinlumaValue, MinlumaValue+T2]. The mean luma value of the selected M points will be used as the minimum luma value, and the mean chroma value of the selected M points will be used as the chroma value corresponding to the minimum luma value. In an example, the MinlumaValue represents the minimum luma value in the set P.

For example, if the 5th, 7th, 8th, 9th, 11thpoints are the points with luma value within a range of [Lmax−T1, Lmax]. The 4th, 6th, 14th, 18thpoints are the points with luma value within a range of [Lmin, Lmin+T2]. In an example, the Lm represents the largest luma value in the set P, and Lminrepresents the smallest luma value in the set P. Then the mean value of p5, p7, p8, p9and p11is the maximum luma value used for linear model parameter, and the mean value of q5, q7, q8, q9and q11is the maximum chroma value corresponding to the maximum luma value. Then the mean value of p4, p6, p14and p18is the minimum luma value used for linear model parameter, and the mean value of q4, q6, q14and q18is the minimum chroma value corresponding to the minimum luma value.

Note that M and N can be equal, or not equal.

Not that T1and T2can be equal, or not equal.

Note that the improved mechanism also can be used in MDLM and MMLM.

Fifth Improved Mechanism: Using Extended Neighboring Samples

In the existing mechanism, only the top and the left neighboring samples are used to obtain the couple of points for searching the couple of points to derive the linear model parameter. In the fifth improved mechanism, some extended samples can be used to increase the number of couple of points, to improve the robustness of the linear model parameters.

For example, the top-right neighboring samples and the left-below neighboring samples are also used to derive the linear model parameters.

For example, as shown inFIG.20, in the existing single mode CCLM mechanism, the down-sampled top neighboring luma samples are represented by A′, and the down-sampled left neighboring luma samples are represented by L′. The top neighboring chroma samples are represented by Ac′, and the left neighboring chroma samples are represented by Lc′.

As shown inFIG.21, in the fifth improved mechanism, the neighboring samples will be extended to top-right and the left-below samples. This means that the reference samples A, L, and Ac, Lc may be used to obtain the max/min luma value and the corresponding chroma value.

Here M>W, N>H.

Here note that, the improved mechanism also can be used in MDLM and MMLM.

In the existing CCIP or LM mechanism, to obtain the max/min luma value and the corresponding chroma value, only one pair of points will be used.

In the proposed improved mechanisms, not only one pair of points will be used.

If more than one points have maximum value or more than one points have minimum value, then the pair of points will be chosen based on the chroma value of the corresponding points.

If more than one points have maximum value or more than one points have minimum value, then the corresponding chroma value for maximum luma value will be the mean chroma value of the luma samples with the maximum value, and the corresponding chroma value for minimum luma value will be the mean chroma value of the luma samples with the minimum value.

Not only one pair of points will be chosen. Specifically, the N points which have the larger value, and the M points which have the smaller value will be used to derive the linear model parameters.

Not only one pair of points will be chosen. Specifically, the N points with values within a range of [MaxValue−T1, MaxValue], and the M points with values within a range of [MinValue, MinValue+T2] will be chosen as the points to derive the linear model parameters.

Not only the above and left neighboring samples are used to obtain the max/min values, but also some extended neighboring samples are used, like the below left neighboring samples and top right neighboring samples.

All the improved mechanisms mentioned above will obtain the more robust linear model parameters.

All the improved mechanisms mentioned above can also be used in MMLM.

All the improved mechanisms mentioned above, except the improved mechanism 5, can also be used in MDLM.

Note that the improved mechanisms proposed in the present disclosure are used to obtain the max/min luma values and the corresponding chroma values for deriving the linear model parameters for chroma intra prediction. The improved mechanisms are applied into the intra prediction module or the intra process. Therefore, it exists in both decoder side and encoder side. Also, the improved mechanisms to obtain the max/min luma values and the corresponding chroma values may be implemented in the same way in both encoder and decoder.

For a chroma block, in order to obtain its prediction using the LM mode, the corresponding down-sampled luma samples are obtained first, then the max/min luma values and the corresponding chroma values in the reconstructed neighboring samples are obtained to derive the linear model parameters. Then, the prediction (i.e. a predictive block) of current chroma block is obtained using the derived linear model parameters and the down-sampled luma block.

A method for cross-component prediction of a block according to embodiment 1 of the present disclosure is related to the first improved mechanism described above.

A method for cross-component prediction of a block according to embodiment 2 of the present disclosure is related to the second improved mechanism described above.

A method for cross-component prediction of a block according to embodiment 3 of the present disclosure is related to the third improved mechanism described above.

A method for cross-component prediction of a block according to embodiment 4 of the present disclosure is related to the fourth improved mechanism described above.

A method for cross-component prediction of a block according to embodiment 5 of the present disclosure is related to the fifth improved mechanism described above.

FIG.22is a flowchart of another example method220for cross-component prediction of a block (e.g. a chroma block) according to some embodiments of the present disclosure. Hence, the method can be may be performed by a video encoder20and/or a video decoder30of a codec system10or40. In particular, the method can be performed by an intra prediction unit46of the video encoder20, and/or an intra prediction unit74of the video decoder30.

At step2210, a down-sampled luma block is obtained. It can be understood that the spatial resolution of the luma block is usually larger than the chroma block, a luma block (i.e. a reconstructed luma block) is down-sampled to obtain a down-sampled luma block. The luma block911,1211,1311,1411, and1511corresponds to a chroma block901, as illustrated inFIGS.9and12-15.

At step2230, a maximum luma value and a minimum luma value are determined from a set of down-sampled samples of reconstructed neighboring luma samples, wherein the reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and/or a plurality of reconstructed luma samples that are left to the luma block, and corresponding chroma value are also determined.

At step2250, linear model parameters are calculated. For example, the linear model parameters are calculated based on the maximum luma value and the corresponding chroma value, and the minimum luma value and the corresponding chroma value using equation (13) and equation (14).

At step2270, a predictive block of the chroma block901is obtained at least based on the one or more linear model parameters. The predicted chroma values of the chroma block901are generated based on the one or more linear model parameters and the down-sampled luma block1212,1312,1412,1512. The predicted chroma values of the chroma block901is derived using the equation (1).

The method for cross-component prediction of a block according to embodiment 1 (corresponding to the first improved mechanism for LM mode) of the present disclosure is provided by reference withFIG.22.

The first improved mechanism described above will be used to derive the max/min luma values, and the corresponding chroma values. If more than one points have the max/min value, then the couple of points will be chosen based on the chroma value of the corresponding points. The couple of points (which have max/min luma value) which have the smallest chroma value difference will be chosen as the couple of points to derive the linear model parameter.

Note that, besides using the smallest value of chroma value difference, the first improved mechanism can also use the biggest value of the chroma value difference.

For details, please refer to the improved mechanism 1 presented above.

The improved mechanism 1 can also be used in MDLM and MMLM. For example, to MDLM/MMLM, only the max/min luma value and corresponding chroma value are used to deriving the linear model parameters. The improved mechanism 1 is used to deriving the max/min luma values and corresponding chroma values.

The method for cross-component prediction of a block according to embodiment 2 (corresponding to the second improved mechanism for LM mode) of the present disclosure is provided by reference withFIG.22.

The difference between the embodiment 2 and the embodiment 1 lies in:

If more than one points have the max/min value, then the mean chroma value will be used. The chroma value corresponding to the maximum luma value is the mean chroma value of the points with maximum luma value. The chroma value corresponding to the minimum luma value is the mean chroma value of the points with minimum luma value.

For details, please refer to improved mechanism 2.

The improved mechanism can also be used in MDLM and MMLM. For example, to MDLM/MMLM, only the max/min luma value and corresponding chroma value are used to deriving the linear model parameters. The improved mechanism 2 is used to derive the max/min luma values and corresponding chroma values.

The method for cross-component prediction of a block according to embodiment 3 (corresponding to the third improved mechanism) of the present disclosure is provided by reference withFIG.22.

The difference between the embodiment 3 and the embodiment 1 lies in:

N points will be used to calculate the maximum luma value, and the corresponding chroma value. The selected N points have bigger luma value than other points. The mean luma value of the selected N points will be used as the maximum luma value, and the mean chroma value of the selected N points will be used as the chroma value corresponding to the maximum luma value.

M points will be used to calculate the minimum luma value, and the corresponding chroma value. The selected M points have smaller luma values than other points. The mean luma value of the selected M points will be used as the minimum luma value, and the mean chroma value of the selected M points will be used as the chroma value corresponding to the minimum luma value.

For details, please refer to the improved mechanism 3 described above.

The improved mechanism 3 can also be used in MDLM and MMLM. For example, to MDLM/MMLM, only the max/min luma values and corresponding chroma values are used for deriving the linear model parameters. The improved mechanism 3 is used for deriving the max/min luma values and corresponding chroma values.

The method for cross-component prediction of a block according to embodiment 4 (corresponding to the fourth improved mechanism) of the present disclosure is provided by reference withFIG.22.

The difference between the embodiment 4 and the embodiment 1 lies in:

N couples of points will be used to calculate the maximum luma value, and the corresponding chroma value. The selected N couples of points have luma values within a range of [MaxlumaValue−T1, MaxlumaValue]. The mean luma value of the selected N couples of points will be used as the maximum luma value, and the mean chroma value of the selected N couples of points will be used as the chroma value corresponding to the maximum luma value.

M couples of points will be used to calculate the minimum luma value, and the corresponding chroma value. The selected M couples of points have luma values within a range of [MinlumaValue, MinlumaValue+T2]. The mean luma value of the selected M couples of points will be used as the minimum luma value, and the mean chroma value of the selected M couples of points will be used as the chroma value corresponding to the minimum luma value.

For details, please refer to the improved mechanism 4 described above.

The improved mechanism 4 can also be used in MDLM and MMLM. For example, to MDLM/MMLM, only the max/min luma value and corresponding chroma value are used for deriving the linear model parameters. The improved mechanism 4 is used for deriving the max/min luma value and corresponding chroma value.

The method for cross-component prediction of a block according to embodiment 5 (corresponding to the fifth improved mechanism) of the present disclosure is provided by reference withFIG.22.

The difference between the embodiment 5 and the embodiment 1 lies in:

Some extended samples can be used to increase the number of couple of points, to improve the robustness of the linear model parameters.

For example, the top-right neighboring samples and the left-below neighboring samples are also used to derive the linear model parameters.

For details, please refer to improved mechanism 5 described above.

The improved mechanism 5 can also be used in MMLM. For example, for MMLM, only the max/min luma value and corresponding chroma value are used for deriving the linear model parameters. The improved mechanism 5 is used for deriving the max/min luma values and corresponding chroma values.

FIG.23is a flowchart of an example method230of decoding video data. At step2310, a luma block911,1211,1311,1411, and1511that corresponds to a chroma block901is determined.

At step2320, a set of down-sampled samples of reconstructed neighboring luma samples is determined, wherein the reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and/or a plurality of reconstructed luma samples that are left to the luma block.

At step2330, two pairs of luma value and chroma value are determined according to N down-sampled neighboring luma samples and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples, and/or M down-sampled neighboring luma samples and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples. The minimum value of the N down-sampled neighboring luma samples is not less than the luma value of the remaining down-sampled neighboring luma samples of the set of down-sampled samples of reconstructed neighboring luma samples, and the maximum value of the M down-sampled neighboring luma samples is not larger than the luma value of the remaining down-sampled neighboring luma samples of the set of down-sampled samples of reconstructed neighboring luma samples, and M, N is a positive integer and larger than 1. In particular, a first pair of luma value and chroma value is determined according to N down-sampled neighboring luma samples of the set of down-sampled samples and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples; a second pair of luma value and chroma value is determined according to M down-sampled neighboring luma samples of the set of down-sampled samples and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples.

At step2340, one or more linear model parameters are determined based on the two pairs of luma value and chroma value.

At step2350, a predictive block of the chroma block901is determined at least based on the one or more linear model parameters, for example, predicted chroma values of the chroma block901are generated based on the linear model parameters and the down-sampled luma block1212,1312,1412, and1512.

At step2360, the chroma block901is reconstructed based on the predictive block. For example, adding the predictive block to a residual block to reconstruct the chroma block901.

It should be noted that in the case of MDLM intra-prediction using CCIP_A mode1700, the set of reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block but does not include a plurality of reconstructed luma samples that are left to the luma block. In the case of MDLM intra-prediction using CCIP_L mode1800, the set of reconstructed neighboring luma samples does not include a plurality of reconstructed luma samples that are above the luma block and include a plurality of reconstructed luma samples that are left to the luma block. In the case of CCLM intra-prediction, the set of reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and a plurality of reconstructed luma samples that are left to the luma block.

FIG.24is a flowchart of an example method240of encoding video data. At step2410, a luma block911,1211,1311,1411, and1511that corresponds to a chroma block901is determined.

At step2420, a set of down-sampled samples of reconstructed neighboring luma samples is determined, wherein the reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and/or a plurality of reconstructed luma samples that are left to the luma block.

At step2430, two pairs of luma value and chroma value are determined according to N down-sampled neighboring luma samples and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples, and/or M down-sampled neighboring luma samples and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples. The minimum value of the N down-sampled neighboring luma samples is not less than the luma value of the remaining down-sampled neighboring luma samples of the set of down-sampled samples of reconstructed neighboring luma samples. The maximum value of the M down-sampled neighboring luma samples is not larger than the luma value of the remaining down-sampled neighboring luma samples of the set of down-sampled samples of reconstructed neighboring luma samples, and M, N is a positive integer and larger than 1. In particular, a first pair of luma value and chroma value is determined according to N down-sampled neighboring luma samples of the set of down-sampled samples and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples; a second pair of luma value and chroma value is determined according to M down-sampled neighboring luma samples of the set of down-sampled samples and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples.

At step2440, one or more linear model parameters are determined based on the two pairs of luma value and chroma value.

At step2450, a predictive block of the chroma block901is determined based on the one or more linear model parameters, for example, predicted chroma values of the chroma block901are generated based on the linear model parameters and the down-sampled luma block1212,1312,1412, and1512.

At step2460, the chroma block901is encoded based on the predictive block. Residual data between the chroma block and the predictive block is encoded and a bitstream including the encoded residual data is generated. For example, subtracting the predictive block from the chroma block901to obtain a residual block (residual data) and generating a bitstream including the encoded residual data.

It should be noted that in the case of MDLM intra-prediction using CCIP_A mode1700, the set of reconstructed neighboring luma samples includes a plurality of reconstructed luma samples that are above the luma block but does not include a plurality of reconstructed luma samples that are left to the luma block. In the case of MDLM intra-prediction using CCIP_L mode1800, the set of reconstructed neighboring luma samples does not include a plurality of reconstructed luma samples that are above the luma block and includes a plurality of reconstructed luma samples that are left to the luma block. In the case of CCLM intra-prediction, the set of reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and a plurality of reconstructed luma samples that are left to the luma block CCLM intra-prediction.

FIG.25is a flowchart of an example method250of decoding video data. At step2510, a luma block911that corresponds to a chroma block901is determined.

At step2520, a set of down-sampled samples of reconstructed neighboring luma samples is determined, wherein the reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and/or a plurality of reconstructed luma samples that are left to the luma block.

At step2530, when N down-sampled neighboring luma samples with the maximum value and/or M down-sampled neighboring luma samples with the minimum value are included in the set of down-sampled samples of reconstructed neighboring luma samples, two pairs of luma value and chroma value are determined according to N down-sampled neighboring luma samples with the maximum value and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples with the maximum values, and/or M down-sampled neighboring luma samples with the minimum value and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples with the minimum value, wherein M, N is a positive integer and larger than 1. In particular, two pairs of luma value and chroma value are determined according to at least one of the following:1. N down-sampled neighboring luma samples with the maximum value and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples with the maximum values, and one down-sampled neighboring luma sample with the minimum value and one reconstructed neighboring chroma sample that correspond to the down-sampled neighboring luma sample with the minimum value;2. one down-sampled neighboring luma sample with the maximum value and one reconstructed neighboring chroma sample that correspond to the down-sampled neighboring luma sample with the maximum values, and M down-sampled neighboring luma samples with the minimum value and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples with the minimum value; and3. N down-sampled neighboring luma samples with the maximum value and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples with the maximum values, and M down-sampled neighboring luma samples with the minimum value and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples with the minimum value, wherein M, N is a positive integer and larger than 1.

At step2540, one or more linear model parameters are determined based on the two pairs of luma value and chroma value.

At step2550, a predictive block is determined based on the one or more linear model parameters, for example, predicted chroma values of the chroma block901are generated based on the linear model parameters and the down-sampled luma block1212,1312,1412, and1512.

At step2560, the chroma block901is reconstructed based on the predictive block. For example, adding the predictive block to a residual block to reconstruct the chroma block901.

It should be noted that in the case of MDLM intra-prediction using CCIP_A mode1700, the set of reconstructed neighboring luma samples includes a plurality of reconstructed luma samples that are above the luma block but does not include a plurality of reconstructed luma samples that are left to the luma block. In the case of MDLM intra-prediction using CCIP_L mode1800, the set of reconstructed neighboring luma samples does not include a plurality of reconstructed luma samples that are above the luma block and includes a plurality of reconstructed luma samples that are left to the luma block. In the case of CCLM intra-prediction, the set of reconstructed neighboring luma samples includes a plurality of reconstructed luma samples that are above the luma block and a plurality of reconstructed luma samples that are left to the luma block CCLM intra-prediction.

FIG.26is a flowchart of an example method260of encoding video data. At step2610, a luma block911that corresponds to a chroma block901is determined.

At step2620, a set of down-sampled samples of reconstructed neighboring luma samples is determined, wherein the reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and/or a plurality of reconstructed luma samples that are left to the luma block.

At step2630, when N down-sampled neighboring luma samples with the maximum value and/or M down-sampled neighboring luma samples with the minimum value are included in the set of down-sampled samples of reconstructed neighboring luma samples, two pairs of luma value and chroma value are determined according to N down-sampled neighboring luma samples with the maximum value and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples with the maximum values, and/or M down-sampled neighboring luma samples with the minimum value and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples with the minimum value, wherein M, N is a positive integer and larger than 1. In particular, two pairs of luma value and chroma value are determined according to at least one of the following:1. N down-sampled neighboring luma samples with the maximum value and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples with the maximum values, and one down-sampled neighboring luma sample with the minimum value and one reconstructed neighboring chroma sample that correspond to the down-sampled neighboring luma sample with the minimum value;2. one down-sampled neighboring luma sample with the maximum value and one reconstructed neighboring chroma sample that correspond to the down-sampled neighboring luma sample with the maximum values, and M down-sampled neighboring luma samples with the minimum value and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples with the minimum value; and3. N down-sampled neighboring luma samples with the maximum value and N reconstructed neighboring chroma samples that correspond to the N down-sampled neighboring luma samples with the maximum values, and M down-sampled neighboring luma samples with the minimum value and M reconstructed neighboring chroma samples that correspond to the M down-sampled neighboring luma samples with the minimum value, wherein M, N is a positive integer and larger than 1.

At step2640, one or more linear model parameters are determined based on the two pairs of luma value and chroma value.

At step2650, a predictive block of the chroma block901is determined based on the one or more linear model parameters, for example, predicted chroma values of the chroma block901are generated based on the linear model parameters and the down-sampled luma block1212,1312,1412, and1512.

At step2660, the chroma block901is encoded based on the predictive block. Residual data between the chroma block and the predictive block is encoded and a bitstream including the encoded residual data is generated. For example, subtracting the predictive block from the chroma block901to obtain a residual block (residual data) and generating a bitstream including the encoded residual data.

It should be noted that in the case of MDLM intra-prediction using CCIP_A mode1700, the set of reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block but does not include a plurality of reconstructed luma samples that are left to the luma block. In the case of MDLM intra-prediction using CCIP_L mode1800, the set of reconstructed neighboring luma samples does not include a plurality of reconstructed luma samples that are above the luma block and include a plurality of reconstructed luma samples that are left to the luma block. In the case of CCLM intra-prediction, the set of reconstructed neighboring luma samples include a plurality of reconstructed luma samples that are above the luma block and a plurality of reconstructed luma samples that are left to the luma block CCLM intra-prediction.

In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.

The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of inter-operative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.

While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.

In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.