Methods, apparatus and computer programs for multiple-line intra prediction in video compression
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2025-06-12
- Publication Date
- 2026-05-15
AI Technical Summary
Existing video coding technologies face inefficiencies in multi-line intra prediction, such as reliance on the first reference line, limited application to luma components, inconsistent intra prediction modes for different reference lines, underutilization of neighboring pixel variations, lack of diverse DC or planar modes, and inefficient use of multiple line reference pixels.
Implementing a method and apparatus that utilize a memory and processor to perform intra-prediction across multiple reference lines, set intra-prediction modes, signal reference line indices, and manage most probable modes, including exclusion of planar and DC modes from the mode list, and adapt the length of the mode list based on reference line indices.
Enhances coding efficiency by optimizing intra-prediction processes, utilizing neighboring pixel variations, and improving the use of multiple line reference pixels, leading to improved video compression performance.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation of U.S. patent application Ser. No. 16 / 240,388, filed Jan. 4, 2019, entitled "METHODS AND APPARATUS FOR MULTIPLE LINE INTRA PREDICTION IN VIDEO" This patent application claims the benefit of priority to "Compression," which is a continuation of U.S. Patent Application No. 16 / 234,324, filed December 27, 2018, which claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 694,132, filed July 5, 2018. Each of the above applications is hereby expressly incorporated by reference in its entirety into this application. [Background technology]
[0002] This disclosure relates to next-generation video coding techniques beyond HEVC, and more particularly to improving intra-prediction schemes, for example, using multiple reference lines.
[0003] The main profile of the video coding standard HEVC (High Efficiency Video Coding) was finalized in 2013. Shortly thereafter, the International Organization for Standardization (ITU-T) VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) began exploring the need to develop a future video coding standard with the potential to significantly increase compression performance compared to the current HEVC standard (including its current extensions). Multiple organizations are working together on this exploration activity through a collaborative effort known as the Joint Video Exploration Team (JVET), which evaluates compression technology designs proposed by experts in the field. To explore video coding technologies that can surpass the performance of HEVC, the Joint Exploration Model (JEM) has been developed by the JVET; the current latest version of the JEM is JEM-7.1.
[0004] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) agreed on H. The MPEG-265 / HEVC (High Efficiency Video Coding) standard released Version 1 in 2014, Version 2 in 2015, and Version 4 in 2016. Since then, we have been researching the potential need for standardization of future video coding technologies with compression performance far exceeding that of the HEVC standard (including its extensions). In October 2017, we issued a joint Call for Proposals (CfP) for video compression technologies with performance superior to HEVC. By February 15, 2018, a total of 22 CfP responses had been submitted for standard dynamic range (SDR), 12 for high dynamic range (HDR), and 12 for 360 video classifications. In April 2018, all CfP responses were evaluated at the 122 MPEG / 10th JVET (Joint Video Exploration Team - Joint Video Experts Team) meeting. After careful evaluation, JVET officially launched the standardization of the next generation of video coding that will surpass HEVC, namely the so-called Versatile Video Coding (VVC). The current version of VTM (VVC Test Model) is VTM1. Summary of the Invention [Problem to be solved by the invention]
[0005] Even if multiple lines are available, there are various technical problems in this field. For example, a technical problem exists in that the first reference line is still found to be the most selected line. However, each block that has a first reference line always needs to signal one bin to indicate the line index of the current block.
[0006] Also, multi-line intra prediction is applied to luma intra prediction only: the possible coding gain of multi-line intra prediction with chroma components is not utilized.
[0007] Furthermore, reference samples with different line indices may have different characteristics, which makes it less optimal to set the same number of intra prediction modes for different reference lines.
[0008] Also, in multi-line intra prediction, pixels from multiple adjacent lines are stored and accessed, but the pixels from the adjacent lines are not used in smoothing the pixels within the current line.
[0009] Also, in multi-line intra prediction, the encoder selects one reference line to predict pixel values of the current block, but the variation trends of neighboring pixels are not used to predict samples within the current block.
[0010] Also, in multi-line intra prediction, there are no planar or DC modes with a number greater than 1. Exploration of other versions of DC or planar modes is not fully exploited.
[0011] Also, although multiple line reference pixels are applied to intra prediction, the coding gain of multiple line reference pixels is not utilized, although there are other places where reference pixels are used.
[0012] Therefore, a technical solution to such problems is desirable. [Means for solving the problem]
[0013] Methods and apparatuses are included, including a memory configured to store computer program code and a hardware processor or processors configured to access the computer program code and operate as instructed by the computer program code, the computer program including: intra-prediction code configured to cause the processor to encode or decode a video sequence by performing intra-prediction among a plurality of reference lines of the video sequence; intra-prediction mode code configured to cause the processor to set an intra-prediction mode for a first reference line at a zero reference line closest to a current block of intra-prediction among a plurality of non-zero reference lines; and most probable mode code configured to cause the processor to set one or more most probable modes for a second reference line at the non-zero reference line.
[0014] According to an exemplary embodiment, the program code further includes signaling code configured to cause the processor to signal a reference line index before signaling the most probable mode flag and the intra mode; to signal the most probable mode flag in response to determining that the reference line index is signaled and that the signaled index indicates a zero reference line; and to derive the most probable mode flag to be true without signaling the most probable mode flag and to signal a most probable mode index for the current block in response to determining that the reference line index is signaled and that the signaled index indicates at least one non-zero reference line.
[0015] According to an exemplary embodiment, the most probable mode code is further configured to cause the processor to include one or more most probable modes in the most probable mode list and to exclude the planar mode and the DC mode from the most probable mode list.
[0016] According to an exemplary embodiment, the most probable mode code is further configured to cause the at least one processor to set a length of the most probable mode list based on the reference line index value, such that the length of the most probable mode list includes the number of the one or more most probable modes.
[0017] According to an exemplary embodiment, the most probable mode code is further configured to cause the at least one processor to set the length of the most probable mode list to either 1 or 4 in response to detecting a non-zero reference line, and to set the length of the most probable mode list to either 3 or 6 in response to determining that the current reference line is a zero reference line.
[0018] According to an exemplary embodiment, the most probable mode code is further configured to cause the at least one processor, in response to detecting a non-zero reference line, to set a length of the most probable mode list to consist of five most probable modes.
[0019] According to an exemplary embodiment, one of the non-zero reference lines is a line adjacent to the current block and is farther away from the current block than the zero reference line.
[0020] According to an exemplary embodiment, the one or more most probable modes include any level of most probable mode from a lowest level most probable mode to a highest level most probable mode.
[0021] According to an exemplary embodiment, the one or more most probable modes include only the most probable mode levels allowed for non-zero reference lines.
[0022] Further features, nature and various advantages of the subject matter of the present disclosure will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0023] [Figure 1] 1A and 1B show diagrams according to an embodiment. [Figure 2] 10A and 10B show schematic diagrams of another view according to an embodiment; [Figure 3] 10A and 10B schematically illustrate yet another view according to an embodiment. [Figure 4] 10A and 10B schematically illustrate yet another view according to an embodiment. [Figure 5] 10A and 10B schematically illustrate yet another view according to an embodiment. [Figure 6] 10A and 10B schematically illustrate yet another view according to an embodiment. [Figure 7] 10A and 10B schematically illustrate yet another view according to an embodiment. [Figure 8] 10A and 10B schematically illustrate yet another view according to an embodiment. [Figure 9] 1 is a simplified flowchart according to an embodiment. [Figure 10] 1 is another simplified flowchart according to an embodiment. [Figure 11] 10 is yet another simplified flowchart according to an embodiment. [Figure 12] 10 is yet another simplified flowchart according to an embodiment. [Figure 13] 10 is yet another simplified flowchart according to an embodiment. [Figure 14] 10 is yet another simplified flowchart according to an embodiment. [Figure 15] 1A and 1B show diagrams according to an embodiment. [Figure 16] 1 is a simplified flowchart according to an embodiment. [Figure 17] 1 is another simplified flowchart according to an embodiment. [Figure 18] 10 is yet another simplified flowchart according to an embodiment. [Figure 19] 10 is yet another simplified flowchart according to an embodiment. [Figure 20] 10 is yet another simplified flowchart according to an embodiment. [Figure 21] 10 is yet another simplified flowchart according to an embodiment. [Figure 22]10 is yet another simplified flowchart according to an embodiment. [Figure 23] 10 is yet another simplified flowchart according to an embodiment. [Figure 24] 10 is yet another simplified flowchart according to an embodiment. [Figure 25] 10 is yet another simplified flowchart according to an embodiment. [Figure 26] 1A and 1B show diagrams according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0024] The proposed features described below may be used individually or in combination in any order. Also, the embodiments may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium. In this disclosure, a most probable mode (MPM) can refer to a primary MPM, a secondary MPM, or both the primary and secondary MPMs.
[0025] 1 shows a simplified block diagram of a communication system 100 according to an embodiment of the present disclosure. The communication system 100 includes at least two terminals 102 and 103 interconnected via a network 105. In a one-way data transmission scenario, a first terminal 103 may locally encode video data to transmit to the other terminal 102 via the network 105. The second terminal 102 may receive the other terminal's encoded video data from the network 105, decode the encoded data, and display the recovered video data. One-way data transmission may be common in media distribution applications, for example.
[0026] 1 shows a second pair of terminals 101 and 104 provided to support bidirectional transmission of encoded video, such as may occur during a video conference. For bidirectional transmission of data, each terminal 101 and 104 may encode video data captured at a local location for transmission to the other terminal over network 105. Each terminal 101 and 104 may receive the encoded video data transmitted by the other terminal, decode the encoded data, and display the recovered video data on a local display device.
[0027] In FIG. 1 , terminals 101, 102, 103, and 104 may be depicted as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure also apply to laptops, tablet computers, media players, and / or dedicated videoconferencing equipment. Network 105 represents any number of networks, including wired and / or wireless communication networks, that convey encoded video data between terminals 101, 102, 103, and 104. Communication network 105 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of network 105 may be irrelevant to the operation of the present disclosure, unless described below.
[0028] 2 illustrates the placement of video encoders and decoders in a streaming environment as an example application of the disclosed subject matter, which is equally applicable to other video uses including, for example, video conferencing, digital television, and storage of compressed video on digital media such as CDs, DVDs, memory sticks, etc.
[0029] The streaming system may include a capture subsystem 203, which may include, for example, a video source 201, such as a digital camera, that creates an uncompressed video sample stream 213. The sample stream 213, shown in bold to emphasize its large amount of data compared to an encoded video bitstream, may be processed by an encoder 202 coupled to the camera 201. As described in more detail below, the encoder 202 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter. The encoded video bitstream 204, shown in thin to emphasize its small amount of data compared to the sample stream, may be stored on a streaming server 205 for later use. One or more streaming clients 212 and 207 may access the streaming server 205 to retrieve copies 208 and 206 of the encoded video bitstream 204. Client 212 may include a video decoder 211 that decodes an incoming copy of the encoded video bitstream 208 to produce an outgoing video sample stream 210, which may be displayed on display device 209 or another display device (not shown). In some streaming systems, video bitstreams 204, 206, and 208 may be encoded according to several video encoding / compression standards. Examples of such standards are described above and further herein.
[0030] FIG. 3 is a functional block diagram of a video decoder 300 according to an embodiment of the present invention.
[0031] Receiver 302 may receive one or more codec video sequences to be decoded by decoder 300, or, in the same or another embodiment, may simultaneously receive one coded video sequence, with the decoding of each coded video sequence being independent of other coded video sequences. The coded video sequences may be received from channel 301, which may be hardware / software coupled to a storage device that stores the coded video data. Receiver 302 may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to respective entities (not shown). Receiver 302 may separate the coded video sequences from other data. To combat network jitter, a buffer memory 303 may be coupled between receiver 302 and entropy decoder / parser 304 (hereinafter "parser"). When receiver 302 is receiving data from a storage / transmission device with sufficient bandwidth and control, or from an isosynchronous network, buffer 303 may not be needed or may be small. Buffer 303 may be needed for use with best-effort packet networks such as the Internet, and may be relatively large and preferably of an adaptable size.
[0032] Video decoder 300 may include a parser 304 to reconstruct symbols 313 from the entropy-coded video sequence. Such symbol classification includes information used to govern the operation of decoder 300 and potential information for controlling a display device, such as display device 312, which is not an integral part of the decoder but may be coupled to it. Control information for the display device(s) may be provided in the form of Supplementary Enhancement Information (SEI) messages, or Video Usability Information (VUI) messages. The parser 304 may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may conform to a video coding technique or standard, and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, context-dependent or context-independent arithmetic coding, etc. The parser 304 may extract a set of subgroup parameters for at least one subgroup of pixels in the video decoder based on at least one parameter corresponding to the group from the coded video sequence. The subgroup may include a group of pictures (GOP), an image, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The entropy decoder / parser may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, and motion vectors.
[0033] The parser 304 may perform entropy decoding / parsing operations on the video sequence received from the buffer 303 to generate symbols 313. The parser 304 may receive the encoded data and selectively decode particular symbols 313. The parser 304 may also determine whether to provide the particular symbols 313 to the motion compensated prediction unit 306, the scaler / inverse transform unit 305, the intra prediction unit 307, or the loop filter 311.
[0034] The symbol reconstruction 313 may include several different units depending on the type of coded video or portions thereof (e.g., inter-picture and intra-picture, inter-block and intra-block), as well as other factors. Which units are included and how can be controlled by subgroup control information parsed from the coded video sequence by the parser 304. The flow of such subgroup control information between the parser 304 and the following units is not shown for clarity.
[0035] In addition to the functional blocks already mentioned, decoder 200 may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, a conceptual subdivision into the following functional units is appropriate:
[0036] The first unit is a scalar / inverse transform unit 305. The scalar / inverse transform unit 305 receives quantized transform coefficients as well as control information, including the transform to use, block size, quantization factor, quantization scaling matrix, etc., as symbol(s) 313 from the parser 304. The scalar / inverse transform unit 305 can output blocks containing sample values, which can be input to the aggregator 310.
[0037] In some cases, the output samples of the scalar / inverse transform unit 305 may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed image may use prediction information from a previously reconstructed portion of the current image. Such prediction information may be provided by the intra-image prediction unit 307. In some cases, the intra-image prediction unit 307 uses surrounding already reconstructed information taken from the current (partially reconstructed) image 309 to generate blocks of the same size and shape as the block being reconstructed. The aggregator 310 may optionally add the prediction information generated by the intra-prediction unit 307, sample by sample, to the output sample information provided by the scalar / inverse transform unit 305.
[0038] In other cases, the output samples of the scalar / inverse transform unit 305 may relate to an inter-coded and potentially motion-compensated block. In such cases, the motion-compensated prediction unit 306 may access the reference picture memory 308 to retrieve samples to use for prediction. After motion-compensating the retrieved samples according to symbols 313 associated with the block, these samples may be added to the output of the scalar / inverse transform unit (in this case, called residual samples or a residual signal) by the aggregation device 310 to generate output sample information. The addresses in the reference picture memory from which the motion compensation unit retrieves prediction samples may be controlled by a motion vector, available to the motion compensation unit in the form of symbols 313, and may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values retrieved from the reference picture memory when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.
[0039] The output samples of aggregator 310 may be subjected to various loop filtering techniques in loop filter unit 311. Video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video bitstream and made available to loop filter unit 311 as symbols 313 from parser 304, but may also be responsive to meta-information obtained during decoding of previous (in decoding order) portions of the coded image or coded video sequence, as well as to previously reconstructed loop-filtered sample values.
[0040] The output of the loop filter unit 311 may be a sample stream that can be output to a display device 312 and stored in a reference picture memory 557 for use in subsequent inter-picture prediction.
[0041] Some coded pictures, once fully reconstructed, can be used as reference pictures for future prediction. Once a coded picture is fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser 304), the current reference picture 309 can become part of the reference picture buffer 308, and a new current picture memory can be reallocated before starting the reconstruction of a subsequent coded picture.
[0042] Video decoder 300 may perform decoding operations in accordance with a given video compression technique, which may be described in a standard such as ITU-T Rec. H.265. An encoded video sequence is said to conform to the syntax specified by the video compression technique or standard used in the sense that it adheres to the syntax of the video compression technique or standard, as specified in the video compression technique document or standard, and specifically in the profiles described therein. A further requirement for compliance may be that the complexity of the encoded video sequence be within a range specified by the level of the video compression technique or standard. In some cases, the level may limit the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further limited by a Hypothetical Reference Decoder (HRD) specification and HRD buffer management metadata signaled in the encoded video sequence.
[0043] In embodiments, receiver 302 may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence(s). The additional data may be used by video decoder 300 to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, etc.
[0044] FIG. 4 is a functional block diagram of a video encoder 400 according to an embodiment of the present disclosure.
[0045] The encoder 400 may receive video samples from a video source 401 (not part of the encoder) that may capture the video(s) to be encoded by the encoder 400 .
[0046] The video source 401 may provide the source video sequence to be encoded by the encoder 400 in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media delivery system, the video source 401 may be a storage device storing previously prepared video. In a video conferencing system, the video source 401 may be a camera capturing local image information as a video sequence. The video data may be provided as multiple individual images that convey motion when viewed in sequence. The images themselves may be organized as a spatial array of pixels, each of which may contain one or more samples depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following discussion will focus on samples.
[0047] According to an embodiment, the encoder 400 may encode and compress images of a source video sequence into an encoded video sequence 410 in real time or under other time constraints required by the application. Ensuring an appropriate encoding rate is one function of the controller 402. The controller controls and is operatively coupled to other functional units, as described below. For clarity, coupling is not shown. Parameters set by the controller may include rate control-related parameters (e.g., picture skip, quantization, lambda values for rate-distortion optimization techniques), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily identify other functions of the controller 402 as they may be relevant to optimizing the video encoder 400 for certain system designs.
[0048] Some video encoders operate in what those skilled in the art will readily recognize as a "coding loop." As an overly simplistic explanation, the encoding loop may consist of an encoder 403 (hereafter "source encoder") encoding section (responsible for generating symbols based on an input image to be encoded and reference image(s)), and a (local) decoder 406 embedded in the encoder 400 that reconstructs the symbols to generate sample data that the (remote) decoder also generates (because the compression between the symbols and the encoded video bitstream is lossless in the video compression techniques contemplated by the disclosed subject matter). The reconstructed sample stream is input to a reference image memory 405. Since decoding of the symbol stream results in bit-exact decoding, regardless of the decoder's location (local or remote), the contents of the reference image buffer are also bit-perfect between the local and remote encoders. In other words, the encoder's prediction section "sees" the reference image samples as exactly the same sample values that the decoder "sees" when using prediction during decoding. This basic principle of reference image synchronicity (and the resulting drift when synchronicity cannot be maintained, for example due to channel errors) is well known to those skilled in the art.
[0049] The operation of the "local" decoder 406 may be the same as the "remote" decoder 300, which has already been described in detail above in relation to Figure 3. However, referring also momentarily to Figure 4, the entropy decoding portion of the decoder 300, including the channel 301, receiver 302, buffer 303, and parser 304, may not be entirely implemented in the local decoder 406, as symbols are available and can be losslessly encoded / decoded into an encoded video sequence by the entropy encoder 408 and parser 304.
[0050] It is currently believed that any decoder techniques, with the exception of parsing / entropy decoding, present in the decoder will naturally need to be present in the corresponding encoder in approximately the same functional form. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques, which are described generically. Only in a few areas is more detailed explanation required, as described below.
[0051] The source encoder 403 may perform motion-compensated predictive coding as part of its operation, predictively coding an input frame with respect to one or more previously coded frames from the video sequence designated as “reference frames.” In this method, the encoding engine 407 codes the differences between pixel blocks of the input frame and pixel blocks of reference frame(s) that may be selected as predictive reference(s) for the input frame.
[0052] The local video decoder 406 may decode the encoded video data of frames that may be designated as reference frames based on symbols generated by the source encoder 403. The operation of the encoding engine 407 may preferably be a lossy process. When the encoded video data may be decoded by a video decoder (not shown in FIG. 4), the reconstructed video sequence may be a copy of the source video sequence, typically with some errors. The local video decoder 406 repeats the decoding process that may be performed on the reference frames by the video decoder, and may cause the reconstructed reference frames to be stored in the reference picture cache 405. In this manner, the encoder 400 may locally store copies of reconstructed reference frames that have content in common with reconstructed reference frames obtained by a far-end video decoder (free of transmission errors).
[0053] The predictor 404 may perform a prediction search for the coding engine 407. That is, for a new frame to be coded, the predictor 404 may search the reference picture memory 405 for sample data (as candidate reference pixel blocks) or some metadata such as reference picture motion vectors, block shapes, etc., which serve as suitable prediction references for the new picture. The predictor 404 may operate on a sample-by-sample basis to find a suitable prediction reference. In some cases, as determined by the search results obtained by the predictor 404, the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory 405.
[0054] Controller 402 may manage the encoding operations of video encoder 403, including, for example, setting parameters and subgroup parameters used to encode the video data.
[0055] The output of all the functional units described above may be entropy coded in an entropy coder 408. The entropy coder converts the symbols, as produced by the various functional units, into an encoded video sequence by losslessly compressing the symbols with techniques known to those skilled in the art as Huffman coding, variable length coding, arithmetic coding, etc.
[0056] The transmitter 409 may buffer the encoded video sequence(s) as they are generated by the entropy encoder 408 in preparation for transmission over the communication channel 411, which may be a hardware / software association with a storage device that stores the encoded video data. The transmitter 409 may also merge the encoded video data of the video encoder 403 with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0057] A controller 402 may manage the operation of the encoder 400. During encoding, the controller 405 may assign several encoding image types to each of the encoded images, which may affect the encoding technique that may be applied to each image. For example, images are often assigned to one of the following frame types:
[0058] An intra-picture (I-picture) is one that can be coded and decoded without using other frames in a sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, Independent Decoder Refresh pictures. Those skilled in the art are aware of such variations of I-pictures, as well as their respective uses and characteristics.
[0059] A predicted image (P picture) can be coded and decoded using intra or inter prediction, using at most one motion vector and reference index to predict the sample values of each block.
[0060] Bidirectionally predicted images (B-pictures) can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predicted images can use more than two reference images and associated metadata to reconstruct a block.
[0061] A source image may be subdivided, typically spatially, into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the code assignment applied to each image of the block. For example, blocks of an I-picture may be coded nonpredictively or predictively with reference to previously coded blocks of the same image (spatial prediction or intra-prediction). Pixel blocks of a P-picture may be coded nonpredictively by spatial prediction with reference to one previously coded reference image or by temporal prediction. Blocks of a B-picture may be coded nonpredictively by spatial prediction with reference to one or two previously coded reference images or by temporal prediction.
[0062] Video encoder 400 may perform encoding operations in accordance with a given video coding technique or standard, such as ITU-T Rec. H.265. In doing so, video encoder 400 may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore conform to a syntax specified by the video coding technique or standard used.
[0063] In embodiments, the transmitter 409 may transmit additional data along with the encoded video. The video encoder 403 may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, redundant images and slices, Supplementary Enhancement Information (SEI) messages, Visual Usability Information (VU), and other similar data. It may also contain other forms of redundant data, such as VUI (Variable User Interface) parameter set fragments.
[0064] Figure 5 shows the intra-prediction modes used in HEVC and JEM. To capture any edge direction that appears in natural video, the number of directional intra-modes is expanded from 33 to 65 as used in HEVC. The additional directional modes in JEM over HEVC are indicated by dotted arrows in Figure 5, while the planar and DC modes remain the same. These dense directional intra-prediction modes apply to all block sizes and both luma and chroma intra-prediction. As shown in Figure 5, directional intra-prediction modes identified by dotted arrows that are associated with odd intra-prediction mode indexes are referred to as odd intra-prediction modes. Directional intra-prediction modes identified by solid arrows that are associated with even intra-prediction mode indexes are referred to as even intra-prediction modes. In this specification, the directional intra-prediction modes indicated by solid or dotted arrows in Figure 5 are also referred to as angular modes.
[0065] In JEM, a total of 67 intra prediction modes are used for luma intra prediction. To encode an intra mode, an MPM list of size 6 is constructed based on the intra modes of neighboring blocks. If the intra mode is not from the MPM list, a flag is signaled to indicate whether the intra mode belongs to the selected mode. In JEM-3.0, there are 16 selected modes, which are selected evenly for every four angular modes. In JVET-D0114 and JVET-G0060, 16 sub-MPMs are derived that replace the evenly selected modes.
[0066] 6 shows N reference layers used for the intra-directional mode: block unit 611, segment A 601, segment B 602, segment C 603, segment D 604, segment E 605, segment F 606, first reference layer 610, second reference layer 609, third reference layer 608, and fourth reference layer 607.
[0067] In both HEVC and JEM, as well as some other standards such as H.264 / AVC, the reference samples used to predict the current block are limited to the nearest reference line (row or column). In the multiple-reference line intra-prediction method, the number of candidate reference lines (rows or columns) increases from 1 (i.e., the nearest) to N for the intra-directional mode, where N is an integer equal to or greater than 1. Figure 2 shows a 4x4 prediction unit (PU) as an example to illustrate the concept of the multiple-line intra-directional prediction method. The intra-directional mode can arbitrarily select one of N reference layers to generate a predictor. In other words, the predictor p(x,y) is generated from one of the reference samples S1, S2, ~SN. A flag is signaled to indicate which reference layer is selected for the intra-directional mode. If N is set to 1, the intra-directional prediction method is the same as the conventional method in JEM 2.0. In Figure 6, reference lines 610, 609, 608, and 607 are composed of six segments 601, 602, 603, 604, 605, and 606, with an upper-left reference sample. In this specification, reference layers are also referred to as reference lines. The coordinates of the upper-left pixel in the current block unit are (0,0), and the coordinates of the upper-left pixel of the first reference line are (-1,-1).
[0068] In JEM, for the luma component, neighboring samples used to generate intra-prediction samples are filtered before the generation process. The filtering is controlled by a given intra-prediction mode and transforms the block size. If the intra-prediction mode is DC or the transform block size is 4x4, the neighboring samples are not filtered. If the distance between a given intra-prediction mode and the vertical mode (or horizontal mode) is greater than a predefined threshold, the filtering process is enabled. A [1,2,1] filter and a bilinear filter are used to filter the neighboring samples.
[0069] The position dependent intra prediction combination (PDPC) method is an intra prediction method that calls for the combination of unfiltered boundary reference samples and HEVC-style intra prediction with filtered boundary reference samples. Each prediction sample pred[x][y] located at (x, y) is calculated as follows: pred[x][y]=(wL*R -1,y +wT+R x,-1 +wTL+R -1,-1 ,+(64-wL-wT-wTL)*pred[x][y]+32)>>6 (Formula 2-1) where R x,-1 ,R -1,y represent the unfiltered reference samples located above and to the left of the current sample (x,y), respectively, and R -1,-1 represents the unfiltered reference sample located in the top left corner of the current block. The weighting is calculated as follows: wT=32>>((y<<1)>>shift) (Equation 2-2) wL=32>>((x<<1)>>shift)(Equation 2-3) wTL = -(wL>>4)-(wT>>4) (Equation 2-4) shift=(log2(wigth)+log2(height)+2)>>2(Equation 2-5)
[0070] FIG. 7 shows a diagram 700 in which weights (wL, wT, wTL) for the (0,0) and (1,0) positions within one 4x4 block are shown.
[0071] Figure 8 shows a Local Illumination Compensation (LIC) diagram 800, which is based on a linear model of illumination changes, uses a scale factor a and an offset b, and is adaptively enabled or disabled for each coding unit (CU) coded in inter mode.
[0072] When LIC is applied to a CU, the least square error method is used to derive the parameters a and b using the neighboring samples of the current CU and its corresponding reference samples. More specifically, as shown in Figure 8, neighboring samples of the subsampled (2:1 subsampling) CU and corresponding samples in the reference image (identified by the motion information of the current CU or sub-CU) are used. IC parameters are derived and applied to each prediction direction separately.
[0073] When a CU is coded in merge mode, the LIC flag is copied from the neighboring block in a manner similar to the motion information copying in merge mode, or the LIC flag is signaled for the CU to indicate whether LIC is applied.
[0074] FIG. 9 illustrates a flowchart 900 according to an example embodiment.
[0075] In S901, in the case of multi-line intra prediction, instead of setting the same number of reference layers for all blocks, the number of reference layers for each block may be adaptively selected, where the index of the nearest reference line is denoted by 1.
[0076] In S902, the block size of the above / left block may be used to determine the number of reference layers for the current block. For example, if the size of the above and / or left block is larger than MxN, the number of reference layers for the current block is limited to L. M and N can be 4, 8, 16, 32, 64, 128, 256, and 512. L can be 1 to 8.
[0077] In one embodiment, when M and / or N is 64 or greater, L is set to 1.
[0078] In another embodiment, the ratio of the number of candidate top reference rows to the number of candidate left reference columns is the same as the ratio of block width to block height. For example, if the current block size is MxN, the number of candidate top reference rows is m and the number of candidate left reference columns is n, so M:N=m:n.
[0079] Alternatively, in S903, the location of the last coefficient of the left and above blocks can be used to determine the number of reference layers for the current block. For example, if the location of the last coefficient is within the first MxN region of the above and / or left block, the number of reference layers for the current block is limited to L (e.g., L can be from 1 to 8), and M and N can be from 1 to 1024.
[0080] In one embodiment, the number of reference layers for the current block is limited to one when there are no coefficients in the above and / or left blocks.
[0081] In another embodiment, when the coefficients in the above and / or left blocks are in the 2x2 top-left region, the number of reference layers for the current block is limited to 1-2.
[0082] Alternatively, in S904, the pixel values of the reference samples in the upper and / or left blocks can be used to determine the number of reference layers for the current block. For example, the index L i and a reference line with index L j The difference between the reference line and the i <L j ) is extremely small, the reference line L j is removed from the reference line list. i and L j can be between 1 and 8. In some cases, the difference between all reference lines is so small that all reference lines with a number greater than 1 are eliminated. Methods for measuring the difference between two reference lines include, but are not limited to, gradient, SATD, SAD, MSE, SNR, and PSNR.
[0083] In one embodiment, Li and L j If the average SAD is less than 2, the reference line L j is removed from the reference line list.
[0084] Alternatively, in S905, the prediction mode of the above and / or left mode information can be used to determine the number of reference layers for the current block.
[0085] In one embodiment, if the prediction mode of the above and / or left block is skip mode, the number of reference layers for the current block is limited to L, where L can be 1-8.
[0086] FIG. 10 illustrates a flowchart 1000 according to an example embodiment.
[0087] In S1001, the reference line index for chroma can be derived from luma, whether in a different tree or the same tree, where the index of the nearest reference line is denoted by 1.
[0088] In S1002, for the same tree, if the reference line index of the co-located luma block is ≧3, the reference line index of the current chroma block is set to 2. Otherwise, the reference line index of the current chroma block is set to 1.
[0089] In S1003, for separate trees, if the chroma block covers only one block in the luma component, the reference line index derivation algorithm is the same as 2.a. If the chroma block covers multiple blocks in the luma component, the reference line index derivation algorithm may be one of the following:
[0090] For blocks collocated in the luma component, if the reference line index of the majority of blocks is less than 3, the reference line index for the current chroma block is derived as 1. Otherwise, the reference line index of the current chroma block is derived as 2. Methods for measuring the majority may include, but are not limited to, the region size of the block and the number of blocks.
[0091] Alternatively, for the collocated blocks in the luma component, if the reference line index of one block is greater than or equal to 3, the reference line index for the current chroma block is derived as 2. Otherwise, the reference line index of the current chroma block is derived as 1.
[0092] Alternatively, for the collocated blocks in the luma component, if the reference line index of the majority of blocks is less than 3, the reference line index for the current chroma block is derived as 1. Otherwise, the reference line index for the current chroma block is derived as 2.
[0093] Alternatively, in S1004, whether to use adaptive selection is considered, and if so, the method of FIG. 9 can also be used to limit the number of reference layers for the current chroma block. After applying the method of FIG. 9, the number of reference layers is L C1 Next, the derivation algorithm shown in S1002 and S1003 or S1005 and S1006 of FIG. 10 is set to the current block L C2 is further applied to obtain the line index of C1 ,L C2 ) becomes the last reference line index for the current chroma block.
[0094] FIG. 11 shows a flowchart 1100 according to an example embodiment.
[0095] In S1101, it is considered that different reference lines have different numbers of intra prediction modes, where the index of the nearest reference line is denoted by 1.
[0096] For example, the first reference line has 67 modes, the second reference line has 35 modes, the third reference line has 17 modes, and the fourth reference line has 9 modes.
[0097] For example, the first reference line has 67 modes, the second reference line has 33 modes, the third reference line has 17 modes, and the fourth reference line has 9 modes.
[0098] Alternatively, in S1102, the reference lines with indexes greater than 1 share the same number of intra modes, but much less than the first reference line, such as less than half the number of intra prediction modes of the first reference line.
[0099] In S1103, for example, only directional intra prediction modes with even mode indices are allowed for reference lines with indices greater than 1. As shown in Figure 5, directional intra prediction modes with odd mode indices are labeled with dotted arrows, and directional intra prediction modes with even mode indices are labeled with solid arrows.
[0100] In S1104, in another example, only directional intra prediction modes with even mode indexes, as well as DC and planar modes, are allowed for reference lines with indexes greater than one.
[0101] In S1105, in another example, only most probable modes (MPMs) are allowed for non-zero reference lines, and MPMs include both first-level MPMs and second-level MPMs.
[0102] In S1106, in another example, since a reference line index greater than 1 is only valid for even mode (or odd mode) intra prediction modes, when encoding an intra prediction mode, if a reference line index greater than 1 is signaled, intra prediction modes such as planar / DC and odd (or even) intra prediction modes are excluded from the MPM derivation and list, excluded from the second level MPM derivation and list, and excluded from the remaining non-MPM mode list.
[0103] In S1107, the reference line index is signaled after signaling the intra-prediction mode, and whether to signal the reference line index depends on the signaled intra-prediction mode.
[0104] For example, only directional intra-prediction modes with even mode indexes are allowed for reference lines with indexes greater than 1. If the signaled intra-prediction mode is directional prediction with even mode indexes, the selected reference line index is transmitted. Otherwise, only one default reference line, such as the nearest reference line, is allowed for intra-prediction, and no index is signaled.
[0105] In another example, only Most Probable Mode (MPM) is allowed for reference lines with index greater than 1. If the signaled intra prediction is from MPM, the selected reference line index needs to be signaled. Otherwise, only one default reference line, such as the closest reference line, is allowed for intra prediction, and no index is signaled.
[0106] In another sub-embodiment, for all directional intra-prediction modes, or for all intra-prediction modes, reference lines with indexes greater than 1 are still valid, and the intra-prediction mode index can be used as context for entropy coding the reference line index.
[0107] In another embodiment, only most probable modes (MPMs) are allowed for reference lines with an index greater than 1. In one approach, all MPMs are allowed for reference lines with an index greater than 1. In another approach, a subset of MPMs are allowed for reference lines with an index greater than 1. When MPMs are categorized into multiple levels, in one approach, only some levels of MPMs are allowed for reference lines with an index greater than 1. In one example, only the lowest level of MPMs are allowed for reference lines with an index greater than 1. In another example, only the highest level of MPMs are allowed for reference lines with an index greater than 1. In another example, only a predefined (or signaled / indicated) level of MPMs are allowed for reference lines with an index greater than 1.
[0108] In another embodiment, only non-MPMs are allowed for reference lines with index greater than 1. In one approach, all non-MPMs are allowed for reference lines with index greater than 1. In another approach, a subset of non-MPMs are allowed for reference lines with index greater than 1. In one example, only non-MPMs associated with even (or odd) indices in descending (or ascending) order of all non-MPM intra-mode indices are allowed for reference lines with index greater than 1.
[0109] In another embodiment, the planar and DC modes are assigned to predefined indices in the MPM mode list.
[0110] In one example, the predefined index further depends on the encoded information, including but not limited to, the width and height of the block.
[0111] In another subembodiment, an MPM with a given index is allowed for reference lines with an index greater than 1. A given MPM index can be signaled or specified as a high-level syntax element, for example, in a sequence parameter set (SPS), a picture parameter set (PPS), a slice header, or as a common syntax element or parameter for a region of an image. A reference line index is signaled only if the intra mode of the current block is equal to one of the given MPM indices.
[0112] For example, the length of the MPM list is 6, and the indices of the MPM list are 0, 1, 2, 3, 4, and 5. If the intra mode of the current block is not equal to the modes with MPM indices 0 and 5, then reference lines with indices greater than 1 are allowed.
[0113] In S1108, in one embodiment, all intra prediction modes are allowed for the closest reference line of the current block, while only the most probable mode is allowed (or not allowed) for reference lines with an index greater than 1 (or a specific index value such as 1).
[0114] In S1109, in one embodiment, the most probable mode includes only first level MPM, such as 3 MPM for HEVC and 6 MPM for JEM (or VTM).
[0115] In S1110, in another embodiment, the most probable mode can be any level of MPM from the lowest level MPM to the highest level MPM.
[0116] In S1111, in another embodiment, for reference lines with indexes greater than 1, only some levels of MPM are allowed.
[0117] In S1112, in another embodiment, the most probable mode can be only one level of MPM, such as the lowest level of MPM, the highest level of MPM, or a predefined level of MPM.
[0118] In S1113, in another embodiment, the reference line index is signaled before the MPM flag and intra mode. If the signaled reference line index is 1, the MPM flag is also signaled. If the signaled reference line index is greater than 1, the MPM flag for the current block is not signaled and the MPM flag for the current block is derived as 1. For reference lines with index greater than 1, the MPM index for the current block is still signaled.
[0119] In S1114, in one embodiment, the MPM list generation process depends on the reference line index value.
[0120] In one example, the MPM list generation process for reference lines with index greater than 1 is different from that for reference lines with index 1. For reference lines with index greater than 1, planar and DC modes are excluded from the MPM list. The length of the MPM list is the same for all reference lines.
[0121] The default MPM used in the MPM list generation process depends on the reference line index. In one example, the default MPM associated with reference lines with an index greater than 1 is different from that associated with a reference line with an index of 1.
[0122] In S1115, in one embodiment, the length of the MPM list, i.e., the number of MPMs, depends on the reference line index value.
[0123] In another embodiment, the length of the MPM list for a reference line index value of 1 is set to be different from the MPM list for a reference line index value greater than 1. For example, the length of the MPM list for a reference line with an index greater than 1 is one or two shorter than the length of the MPM list for a reference line index of 1.
[0124] In another embodiment, the length of the MPM list, i.e., the number of MPMs, is 5 for reference line indices greater than 1. The default MPMs for the MPM list generation process are {VER,HOR,2,66,34} when 65 angular modes are applied. The default MPM order can be any combination of these five listed modes.
[0125] In S1116, for odd-directional intra prediction modes and / or angular intra prediction modes that derive (but do not signal) reference line indices such as planar / DC, multi-line reference samples are used to generate a predictor for the current block.
[0126] For angular intra-prediction modes from which a reference line index is derived (not signaled), a predicted sample value is generated using a weighted sum of multiple predictors, each of which is a prediction generated using one of multiple reference lines.
[0127] In one example, the weighted sum uses weights of {3,1} applied to the predictors produced by the first and second reference lines, respectively.
[0128] In another example, the weighting depends on the block size, the block width, the block height, the sample position within the current block being predicted, and / or the intra-prediction mode.
[0129] In one example, for a given angular prediction mode with an odd index, a first reference line is used to generate one prediction block unit Pred1, and a second reference line is used to generate another prediction block unit. As a result, the final prediction value for each pixel of the current block unit is the weighted sum of these two generated prediction block units. This process can be expressed mathematically by Equation (4-1), where W i is the same value for all pixels in the same block. For different blocks, regardless of the intra prediction mode and block size, W i may be the same or may depend on the intra-prediction mode and block size.
[0130]
number
[0131] Alternatively, in S1117, the number of intra prediction modes for each reference line is derived by the difference between the reference samples of that line. Methods for measuring the difference include, but are not limited to, gradient, SATD, SAD, MSE, SNR, and PSNR.
[0132] If both the top row and left column of the reference samples are very similar, the number of modes can be reduced to 4, 9, 17, or 35 modes. The four modes are the planar mode, the DC mode, the vertical mode, and the horizontal mode.
[0133] If only the top row of reference samples is very similar, the near-vertical prediction modes are downsampled. In a special case, only mode 50 is kept, while modes 35 to 49 and modes 51 to 66 are excluded. The near-horizontal intra prediction modes are reduced accordingly, to bring the total intra prediction modes to 9, 17, or 35.
[0134] If only the left column of reference samples is very similar, the modes of the near-horizontal prediction modes are downsampled. In a special case, only mode 18 is kept, while modes 2 to 17 and modes 19 to 33 are excluded. The intra-prediction modes in the near-vertical direction are reduced accordingly, to bring the total intra-prediction modes to 9, 17, or 35.
[0135] FIG. 12 illustrates a flowchart 1200 according to an example embodiment.
[0136] In S1201, each sample in the current reference line is smoothed based on the adjacent samples in the current line and its adjacent reference line(s), where the index of the nearest reference line is denoted by 1.
[0137] In S1202, for each pixel in the current line, all pixels in reference lines 1 to L can be used to smooth the pixels in the current line, where L is the maximum allowed number of reference lines for intra prediction, and L may be 1 to 8.
[0138] In S1203, the boundary pixels may or may not be filtered. If filtered, each boundary pixel in the same line uses the same filter. Boundary pixels in different lines may use different filters. For example, boundary pixels in the first reference line may be filtered by a [3,2,2,1] filter, boundary pixels in the second reference line may be filtered by a [2,3,2,1] filter, boundary pixels in the third reference line may be filtered by a [1,2,3,2] filter, and boundary pixels in the fourth reference line may be filtered by a [1,2,2,3] filter.
[0139] In S1204, for other pixels, pixels within each line can use the same filter, and pixels within different lines can use different filters, or for other pixels, pixels at different locations can use different filters, but these filters are predefined and the encoder does not need to signal the index of the filter.
[0140] Alternatively, in S1205, the filtering operation for each line may depend on the intra prediction mode and the transform size. The filtering operation is enabled only when the intra prediction mode and the transform size satisfy certain conditions. For example, the filtering operation is disabled when the transform size is 4x4 or less.
[0141] Alternatively, in S1206, the filter used to smooth each pixel may have an irregular filter support shape rather than a rectangular shape. The filter support shape may be predefined and may depend on any information available to both the encoder and decoder, including, but not limited to, reference line index, intra mode, block height and / or width.
[0142] Alternatively, in S1207, for each pixel in the first reference line, pixels in the first reference line and the second reference line can be used to smooth the pixel. For each pixel in the second reference line, pixels in the first, second, and third reference lines can be used to smooth the pixel. For each pixel in the third reference line, pixels in the second, third, and fourth reference lines can be used to smooth the pixel. For each pixel in the fourth reference line, pixels in the third and fourth reference lines can be used to smooth the pixel. In other words, for pixels in the first and fourth reference lines, pixels in two lines are used to filter each pixel, and for pixels in the second and third reference lines, pixels in three lines are used to filter each pixel.
[0143] For example, the filtered pixels in the second and third reference lines can be calculated by Equations 4-2 to 4-5. p'(x,y)=(p(x-1,y)+p(x,y-1)+p(x,y+1)+p(x+1,y)+4*p(x,y))>>3 (Formula 4-2) p'(x,y)=(p(x,y+1)-p(x,y-1)+p(x,y))(Equation 4-3) p'(x,y)=(p(x-1,y)+p(x-1,y-1)+p(x-1,y+1)+p(x,y-1)+p(x,y+1)+p(x+1,y-1)+p(x+1,y)+p(x+1,y+1)+8*p(x,y))>>4(Equation 4-4)
[0144]
number
[0145] The filtered pixels in the first reference line can be calculated by Equations 4-6 to 4-10. p'(x,y)=(p(x-1,y)+p(x,y-1)+p(x+1,y)+5*p(x,y))>>3(Equation 4-6) p'(x,y)=(p(x-1,y)+p(x,y-1)+p(x+1,y)+5*p(x,y))>>2(Equation 4-7) p'(x,y)=(2p(x,y)-p(x,y-1))(Equation 4-8) p'(x,y)=(p(x-1,y)+p(x-1,y-1)+p(x,y-1)+p(x+1,y-1) +p(x+1,y)+3*p(x,y))>>3(Equation 4-9)
[0146]
number
[0147] The filtered pixels in the fourth reference line can be calculated by Equations 4-11 to 4-15. p'(x,y)=(p(x-1,y)+p(x,y+1)+p(x+1,y)+5*p(x,y))>>3(Equation 4-11) p'(x,y)=(p(x-1,y)+p(x,y+1)+p(x+1,y)+p(x,y))>>2(Equation 4-12) p'(x,y)=(2p(x,y)-p(x,y+1))(Equation 4-13) p'(x,y)=(p(x-1,y)+p(x-1,y+1)+p(x,y+1)+p(x+1,y+1)+p(x+1,y)+3*p(x,y))>>3(Equation 4-14)
[0148]
number
[0149] Also, rounding, such as rounding towards zero, positive infinity, or negative infinity, may be added to the above formula.
[0150] FIG. 13 illustrates a flowchart 1300 according to an example embodiment.
[0151] In S1301, in the current block, samples at different positions may use different reference sample combinations for different line index prediction, where the index of the nearest reference line is denoted by 1.
[0152] In S1302, for a given intra prediction mode, each reference line i corresponds to one prediction block Pred i For each pixel, the mode is to use these generated prediction blocks Pred to generate the final prediction block. i Different combinations of can be used. Specifically, for a pixel at location (x,y), Equation 4-16 can be used to calculate the predicted value.
[0153]
number
[0154] Here, W i is location dependent, in other words the weighting coefficients for the same location are the same and for different locations the weighting coefficients are different.
[0155] Alternatively, given an intra-prediction mode for each sample, a set of reference samples from multiple reference lines is selected, and a weighted sum of the selected set of reference samples is calculated as the final predicted value. The selection of the reference sample may depend on the intra-mode and the position of the prediction sample, and the weighting may depend on the intra-mode and the position of the prediction sample.
[0156] In S1303, for each sample, when applying reference line x to intra prediction, the predicted values of line 0 and line x are compared, and if line 1 produces a significantly different predicted value, the predicted value from line x may be excluded and line 0 may be used instead. Methods for measuring the difference between the predicted value of the current position and the predicted value of its adjacent position include, but are not limited to, gradient, SATD, SAD, MSE, SNR, and PSNR.
[0157] Alternatively, more than two predicted values are generated from different reference lines and the median (or average, or most frequently occurring) value is used as the predicted sample.
[0158] In S1304, for each sample, applying reference line x to intra prediction, the predicted values of line 1 and line x are compared, and if line 1 produces a significantly different predicted value, the predicted value from line x may be excluded and line 1 may be used instead. Methods for measuring the difference between the predicted value of the current position and the predicted value of its adjacent position include, but are not limited to, gradient, SATD, SAD, MSE, SNR, and PSNR.
[0159] Alternatively, more than two predicted values are generated from different reference lines and the median (or average, or most frequently occurring) value is used as the predicted sample.
[0160] FIG. 14 illustrates a flowchart 1400 according to an example embodiment.
[0161] In S1401, after intra prediction, pixels in multiple lines are used to filter the predicted value of each block, instead of using only pixels in the nearest reference line, where the index of the nearest reference line is denoted by 1.
[0162] For example, in S1402, PDPC may be extended for multi-line intra prediction. Each prediction sample pred[x][y] located at (x, y) is calculated by the following formula:
[0163]
number
[0164] Here, m may be from -8 to -2.
[0165] In one example, the reference samples in the two nearest lines are used to filter the samples in the current block. For the top-left pixel, only the top-left sample in the first row is used. This can be expressed mathematically by Equation 4-18:
[0166]
number
[0167] Alternatively, in S1403, the boundary filter may be expanded to multiple lines.
[0168] After DC prediction, the pixels in the first few columns and rows are filtered by neighboring reference pixels. The pixels in the first column can be filtered by the following formula:
[0169]
number
[0170] For the pixels in the first row, the filtering operation is as follows:
[0171]
number
[0172] In some special cases, the pixels in the first column can be filtered by the following formula: p'(0,y)=p(0,y)+R -1,y -R -2,y (Formula 4-21)
[0173] The pixels in the first row can also be filtered by the following formula: p'(x,0)=p(x,0)+R x,-1 -R x,-2 (Formula 4-22)
[0174] After vertical prediction, the pixels in the first few columns can be filtered by equation 4-23.
[0175]
number
[0176] After horizontal prediction, the first few rows of pixels can be filtered by equation 4-24.
[0177]
number
[0178] In another embodiment, for vertical / horizontal prediction, if a reference line with an index greater than 1 is used to generate a predicted sample, the first column / row in the line index greater than 1 and its corresponding pixel are used for boundary filtering. As shown in FIG. 15, for reference lines 1503, 1502, and block unit 1501, the second reference line 1503 is used to generate a predicted sample for the current block unit, and pixels with a vertical direction are used for vertical prediction. After vertical prediction, pixels with a diagonal texture in reference line 1 and pixels with a diagonal texture in reference line 1503 are used to filter the first few columns in the current block unit. The filtering process can be formulated by Equation 4-25, where m represents the selected line index and may be 2 to 8. n is the number of right-shift bits and may be 1 to 8. p'(x,y)=p(x,y)+(p(-1,y)-p(-1,-m))>>n(Equation 4-25)
[0179] For horizontal prediction, the filtering process can be formulated by Equation 4-26. p'(x,y)=p(x,y)+(p(x,-1)-p(-m,-1))>>n(Equation 4-26)
[0180] In another embodiment, when a reference line with an index greater than 1 is used, after diagonal prediction, such as mode 2 and mode 34 in FIG. 1(a), pixels along the diagonal direction from the first reference line to the current reference line are used to filter pixels in the first few columns / rows of the current block unit. Specifically, after mode 2 prediction, pixels in the first few rows can be filtered by equation 4-27. After mode 34 prediction, pixels in the first few columns can be filtered by equation 4-28. m represents the reference line index for the current block and can be between 2 and 8. n is the number of right shift bits and can be between 2 and 8. W i is a weighting factor, which is an integer.
[0181]
number
[0182] FIG. 16 shows a flowchart 1600 according to an example embodiment.
[0183] In S1601, in the case of multiple reference line intra prediction, if the reference line index is greater than 1, the modified DC and planar mode are added, where the index of the nearest reference line is indicated by 1.
[0184] In S1602, in the case of planar mode, when different reference lines are used, different predefined upper right and lower left reference samples are used to generate predicted samples.
[0185] Alternatively, in S1603, when a different reference line is used, a different intra-smoothing filter is used.
[0186] In S1604, in DC mode, for the first reference line, all of the pixels in the upper row and left column are used to calculate the DC value, and when the reference line index is greater than 1, only a portion of the pixels are used to calculate the DC value.
[0187] For example, the pixel above in the first reference line is used to calculate the DC value for the second reference line, the pixel to the left in the first reference line is used to calculate the DC value for the third reference line, and half of the left pixels and half of the top pixels in the first reference line are used to calculate the DC value for the fourth reference line.
[0188] In S1605, in the case of DC mode, all reference pixels in all available candidate lines (rows and columns) are used to calculate the DC predictor.
[0189] FIG. 17 shows a flowchart 1700 according to an example embodiment.
[0190] S1701 is implemented to extend multiple reference lines to IC mode. In S1702, multiple top / left reference lines are used to calculate IC parameters, and in S1703, which reference lines are used to calculate IC parameters is signaled.
[0191] FIG. 18 shows a flowchart 1800 according to an example embodiment.
[0192] S1801 is implemented to signal multiple reference line indexes.
[0193] In one embodiment, in S1802, the reference line index is signaled using variable length coding. The closer the distance to the current block, the shorter the codeword. For example, if the reference line indexes are 0, 1, 2, and 3, with 0 being closest to the current block and 3 being farthest, the corresponding codewords are 1, 01, 001, and 000, where 0 and 1 can be swapped.
[0194] In another embodiment, the reference line index is signaled using fixed length coding in S1806. For example, if the reference line indexes are 0, 1, 2, and 3, with 0 being closest to the current block and 3 being farthest, the corresponding codewords are 10, 01, 11, and 00, where 0 and 1 can be swapped and the order can be changed.
[0195] In S1803 it is considered whether to use different codeword tables, and if not, in S1804, in yet another embodiment, reference line indices are signaled using variable length coding, with the order of indices in the codeword tables (from shortest codeword to longest codeword) being 0, 2, 4, ... 2k, 1, 3, 5, ... 2k+1 (or 2k-1), where index 0 indicates the reference line closest to the current block and 2k+1 is the furthest.
[0196] In another embodiment, in S1805, the reference line indexes are signaled using variable length coding, and the order of the indices in the codeword table (from shortest codeword to longest) is closest, farthest, second-closest, second-farthest, etc. In one specific example, if the reference line indices are 0, 1, 2, and 3, with 0 being closest to the current block and 3 being farthest, the codewords for these are 0 for index 0, 10 for index 3, 110 for index 2, and 111 for index 1. The codewords for reference line indices 1 and 2 may be swapped. 0s and 1s in the codewords may be interchanged.
[0197] FIG. 19 shows a flowchart 1900 according to an example embodiment.
[0198] In S1901, when the number of top reference lines (rows) is different from the number of left reference lines (columns), multiple reference line indexes are signaled.
[0199] In S1902, in one embodiment, if the number of top reference lines (rows) is M and the number of left reference lines (columns) is N, the reference line index for the maximum (M,N) may use any of the methods described above, or a combination thereof. The reference line index for the minimum (M,N) is a subset of codewords, typically the shorter one, from the codeword used to indicate the reference line index for the maximum (M,N). For example, if M=4, N=2, and the codewords used to signal M(4) reference line indexes {0,1,2,3} are 1, 01, 001, 000, the codewords used to signal N(2) reference line indexes {0,1} are 1, 01.
[0200] In another embodiment, in S1903, if the number of top reference lines (rows) is M and the number of left reference lines (columns) is N, and M and N are different, the reference line indexes for signaling the top reference line (row) index and the left reference line (column) index are different, and any of the above-mentioned methods or combinations thereof may be used independently.
[0201] FIG. 20 shows a flowchart 2000 according to an example embodiment.
[0202] In S2000, it is taken into consideration to know the number of reference lines in various encoding tools, and in S2001, in order to conserve pixel line buffers where possible, a constraint may be imposed so that the maximum number of reference lines that can be used for intra prediction, such as intra prediction based on a deblocking filter or template matching, does not exceed the number of reference lines used in other encoding tools.
[0203] FIG. 21 shows a flowchart 2100 according to an example embodiment.
[0204] In S2100, multi-line intra prediction and its interaction with other coding tools / modes is performed.
[0205] For example, in S2101, in one embodiment, the use and / or signaling of other syntax elements / coding tools / modes, including but not limited to cbf, last position, transform skip, transform type, secondary transform index, primary transform index, PDPC index, may depend on the multiline reference line index.
[0206] In S2102, in one example, when the multiline reference index is non-zero, transform skip is not used and the transform skip flag is not signaled.
[0207] In S2103, in another example, the context used to signal other coding tools, such as transform skip, cbf, primary transform index, and secondary transform index, may depend on the value of the multiline reference index.
[0208] In S2104, in another embodiment, the multiline reference index may be signaled after other syntax elements including, but not limited to, cbf, last position, transform skip, transform type, secondary transform index, primary transform index, and PDPC index, and the use and / or signaling of the multiline reference index may depend on the other syntax elements.
[0209] FIG. 22 shows a flowchart 2200 according to an example embodiment.
[0210] In S2201, a reference line index is considered to be obtained, and in S2202, the reference line index can be used as a context for entropy coding other syntax elements, including, but not limited to, intra prediction modes, MPM indices, primary transform indices, secondary transform indices, transform skip flags, coded block flags (CBFs), and transform coefficients, and vice versa.
[0211] FIG. 23 shows a flowchart 2300 according to an example embodiment.
[0212] In S2301, it is proposed to include reference line information in the MPM list. That is, if the prediction mode of the current block is the same as one of the candidates in the MPM list, both intra prediction and the selected reference line of the selected candidate are applied to the current block, and the intra prediction mode and the reference line index are not signaled. In addition, the number of MPM candidates for different reference line indexes is pre-defined. Here, the closest reference line is indicated by 1.
[0213] In S2302, in one embodiment, the number of MPMs for each reference line index is predefined, which can be signaled as a high-level syntax element such as a sequence parameter set (SPS), a picture parameter set (PPS), a slice header, a tile header, a coding tree unit (CTU) header, or as a common syntax element or parameter for a region of an image. As a result, the length of the MPM list may be different for different sequences, images, slices, tiles, groups of coding blocks, or regions of an image.
[0214] For example, the number of MPMs for reference line index 1 is 6, and the number of MPMs with each of the other reference line indices is 2. As a result, if the total number of reference lines is 4, the total number of MPM lists is 12.
[0215] In another embodiment, in S2303, all intra prediction modes of the above, left, above-left, above-right, and below-left blocks together with their reference line indexes are included in the MPM list. As shown in diagram 2400 of Figure 24, all neighboring blocks of the current block unit are shown, where A is the below-left block, B, C, D, and E are left blocks, F is the above-left block, G and H are above blocks, and I is the above-right block. This is after adding the modes of the neighboring blocks to the MPM list. If the number of MPM candidates with a given number of reference lines is less than a predefined number, a default mode is used to fill the MPM list.
[0216] In another embodiment, in S2304, if the mode of the current block is equal to one of the candidates in the MPM list, no reference line index is signaled, and if the mode of the current block is not equal to any of the candidates in the MPM list, a reference line index is signaled.
[0217] In one example, if line 1 is used for the current block, the second level MPM mode is also used, but the second level MPM includes only intra prediction mode information.
[0218] In another example, the second level MPM is not used for other lines and fixed length coding is used to encode the remaining modes.
[0219] FIG. 25 shows a flowchart 2500 according to an example embodiment.
[0220] In S2501, in the current VVC test mode VTM-1.0, the chroma intra coding modes are the same as those of HEVC, including DM (a direct copy of the luma mode) and four additional angular intra prediction modes, and in the current BMS-1.0, the cross component linear model (CCLM) mode is also applied to chroma intra coding. The CCLM mode includes one LM mode, one multi-model LM (MMLM), and four multi-filter LM (MFLM) modes, because when the CCLM mode is not enabled, only the DM mode is used for chroma blocks, while when the CCLM mode is enabled, only the DM and CCLM modes are used for chroma blocks.
[0221] In S2502, in one embodiment, only one DM mode is used for a chroma block, no flag is signaled for the chroma block, and the chroma mode is derived as the DM mode.
[0222] In another embodiment, in S2503, only one DM and one CCLM mode are used for a chroma block, and one DM flag is used to signal whether DM mode or LM mode is used for the current chroma block.
[0223] In one sub-embodiment, there are three contexts used to signal the DM flag: when both the left block and the top block use DM mode, context 0 is used to signal the DM flag; when only one of the left block and the top block uses DM mode, context 1 is used to signal the DM flag; or when both the left block and the top block do not use DM mode, context 2 is used to signal the DM flag.
[0224] In another embodiment, in S2504, only DM and CCLM (when enabled) modes are used for small chroma blocks. If the width or height of the chroma block, or the region size (width * height) is less than or equal to Th, the current chroma block is called a small chroma block. Th can be 2, 4, 8, 16, 32, 64, 128, 256, 512, or 1024.
[0225] For example, if the region size of the current chroma block is less than or equal to 8, then only DM and CCLM (when enabled) modes are used for the current chroma block.
[0226] In another example, when the region size of the current chroma block is 16 or less, only DM and CCLM (when enabled) modes are used for the current chroma block.
[0227] In another example, for small chroma blocks, only one DM and one CCLM (when enabled) mode is used.
[0228] In another embodiment, in S2505, when the intra mode of the luma component is equal to one of the MPM modes, the chroma block can only use DM mode, and no flag is signaled for the chroma mode, or both DM and CCLM modes are allowed for the chroma block.
[0229] In one example, the MPM mode may be first level MPM only.
[0230] In another example, the MPM mode may be second level MPM only.
[0231] In another example, the MPM mode can be either a first level MPM or a second level MPM.
[0232] In another embodiment, in S2506, when the intra mode of the luma component is not equal to any MPM mode, the chroma block can use DM mode, no flag is signaled for the chroma mode, or both DM and CCLM modes are allowed for the chroma block.
[0233] Therefore, through the exemplary embodiments described herein, the above-mentioned technical problems can be advantageously improved by such technical solutions.
[0234] The techniques described above can be implemented as computer software using computer-readable instructions, physically stored on one or more computer-readable media, or executed by one or more specially configured hardware processors. For example, Figure 26 illustrates a computer system 2600 suitable for implementing some embodiments of the disclosed subject matter.
[0235] Computer software can be encoded using any suitable machine code or computer language, which may be subject to mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., directly, or via interpretation, microcode execution, etc.
[0236] The instructions may be executed by various types of computers or components thereof, such as personal computers, tablet computers, servers, smartphones, game consoles, and Internet of Things (IoT) devices.
[0237] 26 are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 2600.
[0238] The computer system 2600 may also include several human interface input devices. Such human interface input devices may respond to input by one or more users, for example, by tactile input (e.g., pressing a key, swiping, moving a data glove), audio input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). The human interface devices may further be used to capture several media that do not necessarily involve direct conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images captured by a still camera), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0239] The input human interface devices may include one or more of a keyboard 2602, a mouse 2603, a trackpad 403, a touchscreen 2604, a joystick 2605, a microphone 2606, a scanner 2608, and a camera 2607 (only one of each is shown).
[0240] The computer system 2600 may also include several human interface output devices. Such human interface output devices may stimulate one or more of the user's senses, such as haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., touchscreen 2610 or haptic feedback via joystick 2605, although some haptic feedback devices may not function as input devices), audio output devices (speakers 2609, headphones (not shown)), visual output devices (such as screens 2610 including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touchscreen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional video output or output in excess of three dimensions by means of stereoscopic output, VR glasses (not shown), holographic displays, smoke generating devices (smoke tanks (not shown)), and printers (not shown)).
[0241] The computer system 2600 may further include human-accessible storage devices and their associated media, such as optical media, including media 2611 such as CDs / DVDs, CD / DVD ROM / RW 2612, USB thumb-drive 2613, removable hard drives or solid-state drives 2614, legacy magnetic media (not shown) such as tape and floppy disks, and specialized ROM / ASIC / PLD-based devices (not shown) such as security dongles.
[0242] Those skilled in the art will further appreciate that the term "computer-readable medium" as used with respect to the subject matter disclosed herein does not include transmission media, carrier waves or other transitory signals.
[0243] The computer system 2600 may further include an interface to one or more communication networks 2615. The network may be, for example, wireless, wired, or optical. The network may also be local, wide area, metropolitan, in-vehicle, industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet; cellular networks including WLAN, GSM, 3G, 4G, 5G, LTE, etc.; wide area digital networks for cable or wireless television including cable, satellite, and terrestrial television; in-vehicle and industrial networks including CANbus; and the like. Some networks typically require an external network interface adapter attached to some general-purpose data port or peripheral bus 2625 (e.g., a USB port on the computer system 2600); other networks typically are integrated into the core of the computer system 2600 by attaching to a system bus (e.g., an Ethernet interface on a PC computer system or a cellular network interface on a smartphone computer system), as described below. Using any such network, the computer system 2600 can communicate with other entities. Such communication may be one-way, receive-only (e.g., television broadcast), one-way transmit-only (e.g., CANbus to device transmitting to CANbus), or two-way communication to other computer systems, for example, using local or wide area digital networks. As previously mentioned, several protocols and protocol stacks may be used for each such network and each network interface.
[0244] The human interface devices, human-accessible storage devices, and network interfaces described above may be attached to the core 2612 of the computer system 2600 .
[0245] The core 2612 may include one or more central processing units (CPUs) 2612, graphics processing units (GPUs) 2622, specialized programmable processing units 2624 in the form of FPGAs (Field Programmable Gate Areas), hardware accelerators 2624 for some tasks, etc. Such devices may be connected via a system bus 2626, along with read-only memory (ROM) 2619, random access memory 2618, and internal mass storage devices such as internal non-user-accessible hard drives, SSDs, etc. 447. In some computer systems, the system bus 2626 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 2626 or via a peripheral bus 2601. Peripheral bus architectures include PCI, USB, etc.
[0246] The CPU 2621, GPU 2622, FPGA 2624, and accelerator 2624 may combine and execute several instructions that may make up the aforementioned computer code. The computer code may be stored in ROM 2619 or RAM 2618. Transient data may also be stored in RAM 2618, whereas persistent data may be stored, for example, in internal mass storage device 2620. Cache memory may be used to enable quick storage and retrieval of any memory device, and may be closely associated with one or more of the CPU 2621, GPU 2622, mass storage device 2620, ROM 2619, RAM 2618, etc.
[0247] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0248] By way of example and not by way of limitation, architecture 2600, and specifically a computer system having core 2616, can provide functionality as a result of processor(s) (e.g., CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage devices as previously introduced, as well as media associated with some storage of core 2616 that are non-transitory in nature, such as core internal mass storage 2620 or ROM 2619. Software implementing various embodiments of the present disclosure can be stored on such devices and executed by core 2616. Computer-readable media may include one or more memory devices or chips according to particular needs. The software can cause core 2616, and specifically the processors therein (including CPU, GPU, FPGA, etc.), to perform particular operations, or particular portions of particular operations, described herein, including defining data structures stored in RAM 2618 and modifying such data structures according to software-defined operations. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired into or embodied in circuitry (e.g., accelerator 2624), which may operate in place of or in conjunction with software to perform particular operations, or portions of particular operations, described herein. References to software may encompass logic where appropriate, and vice versa. References to computer-readable media may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution where appropriate, circuitry embodying logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.
[0249] While this disclosure has described several exemplary embodiments, there are alterations, substitutions, and various substitute equivalents, which are within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within its principles and scope.
[0250] (Appendix 1) 1. A method for decoding video footage executed by at least one processor, comprising: the at least one processor: performing decoding of a video sequence by intra prediction between a plurality of reference lines of the video sequence; setting a plurality of intra prediction modes for a zero reference line among a plurality of non-zero reference lines that is closest to the current block of the intra prediction; setting at least one most probable mode for one of the plurality of non-zero reference lines; A method comprising: (Appendix 2) signaling a reference line index before signaling a most probable mode flag and an intra prediction mode; signaling the reference line index and, in response to determining that the signaled index indicates the zero reference line, signaling the most probable mode flag; signaling the reference line index, and in response to determining that the signaled index indicates at least one of the plurality of non-zero reference lines, deriving the most probable mode flag to be true without signaling the most probable mode flag, and signaling a most probable mode index for the current block; 2. The method of claim 1, further comprising: (Appendix 3) the at least one most probable mode for the non-zero reference line is included in a most probable mode list; 2. The method of claim 1, wherein at least one of a planar mode and a DC mode is excluded from the most probable mode list corresponding to any one of the non-zero reference lines. (Appendix 4) setting a length of the most probable mode list based on a reference line index value, such that the length of the most probable mode list includes the number of the at least one most probable mode. 4. The method of claim 3, further comprising: (Appendix 5) 5. The method of claim 4, wherein the length of the most probable list of a reference line with an index value of 1 is set to be different from the length of the most probable list of a reference line with an index value greater than 1. (Appendix 6) 5. The method of claim 4, wherein the length of the most probable mode list for a reference line having an index value greater than 1 is one less than the length of the most probable mode list for a reference line having an index value of 1. (Appendix 7) in response to detecting the non-zero reference line, setting the length of the most probable mode list to either 1 or 4; in response to determining that the current reference line is a zero reference line, setting the length of the most probable mode list to 3 or 6; 5. The method of claim 4, further comprising: (Appendix 8) responsive to detecting the non-zero reference line, setting the length of the most probable mode list to consist of five most probable modes; in response to the current reference line being a non-zero reference line, setting a length of the corresponding most probable mode list to 6; 5. The method of claim 4, further comprising: (Appendix 9) 9. A method according to any one of claims 1 to 8, wherein one of the non-zero reference lines is a line adjacent to the current block and is farther away from the current block than the zero reference line. (Appendix 10) 10. The method of any one of claims 1 to 9, wherein the at least one most probable mode comprises a first level most probable mode. (Appendix 11) 11. The method of any one of claims 1 to 10, wherein the at least one most probable mode comprises any level of most probable mode from a lowest level most probable mode to a highest level most probable mode. (Appendix 12) 11. The method of any one of claims 1 to 10, wherein the at least one most probable mode includes only most probable mode levels allowed for the non-zero reference line. (Appendix 13) at least one memory configured to store computer program code; at least one hardware processor configured to access the computer program code and to act as instructed by the computer program code to perform the method of any one of claims 1 to 12; An apparatus comprising: (Appendix 14) 13. A computer program product for causing a computer to carry out the method according to any one of claims 1 to 12. [Explanation of symbols]
[0251] 100 Communication Systems 101 terminals 102 terminals 103 terminals 104 terminals 105 Network 200 Decoder 201 Video Source 202 encoder 203 Acquisition Subsystem 204 Video Bitstream 205 Streaming Server 206 Copy of encoded video bitstream 207 Streaming Client 208 Copy of encoded video bitstream 209 Display device 210 video sample streams 211 Video decoder 212 Streaming Client 213 Video Sample Stream 300 Decoder 301 Channel 302 Receiver 303 Buffer Memory 304 Parser 305 Scaler / Descaler Unit 306 Motion Compensation Prediction Unit 307 Intra-Image Prediction Unit 308 Reference Image Buffer 309 Current Reference Image 310 Aggregation Device 311 Loop Filter Unit 312 Display device 313 Symbol 400 encoder 401 Video Source 402 Controller 403 Source Encoder 404 Predictor 405 Reference Image Memory 406 Decoder 407 Encoding Engine 408 Entropy Encoder 409 Transmitter 410 Encoded Video Sequence 411 Communication Channel 2600 Computer Systems 2601 Peripheral bus 2602 keyboard 2603 Trackpad 2604 Mouse 2605 Joystick 2606 Mike 2607 Camera 2608 Scanner 2609 Audio output device 2610 Touchscreen 2611 Medium 2612 CD / DVD ROM / RW 2613 USB memory 2614 Solid State Drive 2615 Communication Network 2616 cores 2617 Graphics Adapter 2618 Random Access Memory (RAM) 2619 Read-Only Memory (ROM) 2620 Internal Mass Storage 2621 CPU 2622 GPU 2624 FPGA 2624 Accelerator 2625 Peripheral bus 2626 System Bus [Prior art documents] [Patent documents]
[0252] [Patent Document 1] International Publication No. 2018 / 070267
Claims
1. A method performed by at least one processor of the decoder, The steps include receiving a video sequence of encoded video footage and generating a decoded video image by performing an intra prediction based on multiple reference lines for the current block contained in the video footage, The step of generating the decoded video image is: The steps include determining a first-level most likely mode (MPM) including multiple intra-prediction modes for the zero reference line closest to the current block among the multiple reference lines, A step of determining a second level MPM for at least one non-zero reference line included in the plurality of reference lines, which includes some of the intra-prediction modes among the plurality of intra-prediction modes that correspond to the first level MPM. A method that includes an intra-prediction mode corresponding to the second level MPM, wherein the intra-prediction mode does not include a planar mode.
2. A method performed by at least one processor of the encoder, The steps include: performing an encoding method to generate a video sequence of encoded video footage by making an intra prediction based on multiple reference lines for the current block contained in the video footage of the received video sequence; The steps include storing the video sequence of the encoded video image generated by the encoding method in a storage device, and The encoding method includes, The steps include determining a first-level most likely mode (MPM) including multiple intra-prediction modes for the zero reference line closest to the current block among the multiple reference lines, A step of determining a second level MPM for at least one non-zero reference line included in the plurality of reference lines, which includes some of the intra-prediction modes among the plurality of intra-prediction modes that correspond to the first level MPM. A method that includes an intra-prediction mode corresponding to the second level MPM, wherein the intra-prediction mode does not include a planar mode.
3. A method performed by at least one processor of the encoder, The steps include: performing an encoding method to generate a video sequence of encoded video footage by making an intra prediction based on multiple reference lines for the current block contained in the video footage of the received video sequence; The steps include: transmitting a bitstream containing a video sequence of encoded video footage generated by the encoding method from the encoder; The encoding method includes, The steps include determining a first-level most likely mode (MPM) including multiple intra-prediction modes for the zero reference line closest to the current block among the multiple reference lines, A step of determining a second level MPM for at least one non-zero reference line included in the plurality of reference lines, which includes some of the intra-prediction modes among the plurality of intra-prediction modes that correspond to the first level MPM. A method that includes an intra-prediction mode corresponding to the second level MPM, wherein the intra-prediction mode does not include a planar mode.
4. A method according to any one of claims 1 to 3, wherein of a plurality of intra-prediction modes that may be used in intra-prediction based on the plurality of reference lines, six intra-prediction modes correspond to the first level MPM and five intra-prediction modes correspond to the second level MPM.
5. An apparatus comprising at least one hardware processor configured to perform the method described in any one of claims 1 to 3.
6. A computer program that causes a computer to perform the method described in any one of claims 1 to 3.