Video decoding method, apparatus, and computer program
The proposed method for generating an MPM list with six angular modes based on neighboring block analysis addresses inefficiencies in multi-line intra prediction, enhancing encoding accuracy and efficiency in video compression.
Patent Information
- Application Number
- JP2020560454
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-12-28
- Filing Date
- 2019-08-29
- Publication Date
- 2025-01-14
- Estimated Expiration
- 2039-08-29
AI Technical Summary
Existing video encoding techniques face inefficiencies in generating the Most Probable Mode (MPM) list for multi-line intra prediction, particularly in scenarios where non-zero reference lines are used, leading to suboptimal encoding decisions.
A method and apparatus for generating an MPM list that includes six candidate modes for intra prediction, all of which are angular modes, by determining the intra prediction modes of neighboring blocks and incorporating them into the list based on specific conditions, such as whether the modes are angular or not, and using non-zero reference lines to exclude Planar and DC modes when necessary.
This approach enhances the accuracy and efficiency of video encoding by optimizing the MPM list generation, improving encoding decisions and reducing redundancy in video data compression.
Smart Images

Figure 0007612415000001 
Figure 0007612415000002 
Figure 0007612415000003
Abstract
Description
[Technical field]
[0001] This application claims priority to U.S. Provisional Application No. 62 / 731,776, filed September 14, 2018, and U.S. Application No. 16 / 234,993, filed December 28, 2018, the disclosures of which are incorporated herein by reference in their entireties.
[0002] This disclosure relates to a set of advanced video encoding techniques. More particularly, it relates to an MPM list generation scheme for multi-line intra prediction. [Background technology]
[0003] Figure 5 shows the intra prediction modes used in High Efficiency Video Coding (HEVC). There are a total of 35 intra prediction modes in HEVC, where mode 10 is the horizontal mode (501), mode 26 is the vertical mode (502), and modes 2, 18, and 34 are diagonal modes (503). The intra prediction modes are signaled by three most probable modes (MPM) and the remaining 32 modes. Summary of the Invention [Problem to be solved by the invention]
[0004] To code an intra mode, we build a Most Probable Mode (MPM) list of size 3 based on the intra modes of neighboring blocks. This MPM list is called the MPM list or the primary MPM list. If the intra mode is not from the MPM list, we signal a flag to indicate whether the intra mode belongs to the selected mode.
[0005] The process of generating an MPM list is as follows, where leftIntraDir indicates the mode in the left block and aboveIntraDir indicates the mode in the above block. If the left block and above block are not currently available, set leftIntraDir or aboveIntraDir to the index DC_IDX. Also, the variables "offset" and "mod" are constant values and are set to 29 and 32, respectively. ·If(leftIntraDir==aboveIntraDir&&leftIntraDir>DC_IDX) ○MPM[0]=leftIntraDir; ○MPM[1]=((leftIntraDir+offset)%mod)+2; ○MPM[2]=((leftIntraDir-1)%mod)+2; ·Else if(leftIntraDir==aboveIntraDir) ○MPM[0]=PLANAR_IDX; ○MPM[1]=DC_IDX; ○MPM[2]=VER_IDX; ·Else if(leftIntraDir!=aboveIntraDir) ○MPM[0]=leftIntraDir; ○MPM[1]=aboveIntraDir; ○If(leftIntraDir>0&&aboveIntraDir>0) ■ MPM[2] = PLANAR_IDX; Else ■MPM[2]=(leftIntraDir+aboveIntraDir)<2?VER_IDX:DC_IDX; [Means for solving the problem]
[0006] According to at least one embodiment, a video decoding method executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line includes determining whether an intra prediction mode of a first neighboring block of a current block is an angular mode. The method may further include determining whether an intra prediction mode of a second neighboring block of the current block is an angular mode. The method may further include generating an MPM list, the MPM list including six candidate modes for intra prediction of the current block, the six candidate modes all being angular modes. The MPM list may be generated to include the intra prediction mode of the first neighboring block if it is determined that the intra prediction mode of the first neighboring block is an angular mode, and to include the intra prediction mode of the second neighboring block if it is determined that the intra prediction mode of the second neighboring block is an angular mode.
[0007] According to at least one embodiment, an apparatus for decoding a video sequence by controlling multi-line intra prediction using a non-zero reference line is provided. The apparatus may include at least one memory arranged to store computer program code, and at least one processor arranged to access the at least one memory and operate based on the computer program code. The computer program code may include a first decision code arranged to cause the at least one processor to determine whether an intra prediction mode of a first neighboring block of a current block is an angular mode. The computer program code may further include a second decision code arranged to cause the at least one processor to determine whether an intra prediction mode of a second neighboring block of the current block is an angular mode. The computer program code may further include generation code arranged to cause the at least one processor to generate an MPM list, the MPM list including six candidate modes for intra prediction of the current block, all six candidate modes being angular modes. The generation code is further configured to cause the at least one processor to generate an MPM list such that if it is determined that the intra prediction mode of the first neighboring block is an angular mode, the MPM list includes the intra prediction mode of the first neighboring block, and if it is determined that the intra prediction mode of the second neighboring block is an angular mode, the MPM list includes the intra prediction mode of the second neighboring block.
[0008] According to at least one embodiment, a non-transitory computer-readable storage medium storing instructions may cause at least one processor to determine whether an intra-prediction mode of a first neighboring block of a current block is an angular mode. The instructions may further cause the at least one processor to determine whether an intra-prediction mode of a second neighboring block of the current block is an angular mode. The instructions may further cause the at least one processor to generate an MPM list, the MPM list including six candidate modes for intra-prediction of the current block, all six candidate modes being angular modes. The instructions may cause the at least one processor to generate an MPM list such that if the intra-prediction mode of the first neighboring block is determined to be an angular mode, the MPM list includes the intra-prediction mode of the first neighboring block, and if the intra-prediction mode of the second neighboring block is determined to be an angular mode, the MPM list includes the intra-prediction mode of the second neighboring block. [Brief description of the drawings]
[0009] Other features, characteristics and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings, in which: [Figure 1] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a streaming system according to one embodiment. [Diagram 3] FIG. 2 is a schematic diagram of a simplified block diagram of a video decoder and display according to one embodiment. [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a video encoder and a video source according to one embodiment. [Diagram 5] FIG. 2 is a diagram of intra prediction modes in HEVC. [Figure 6] FIG. 1 is a diagram of intra-prediction modes in Draft 2 of Versatile Video Coding (VVC). [Figure 7] FIG. 2 is a diagram showing an example of reference lines for multi-line intra prediction. [Figure 8] 1A and 1B are diagrams illustrating examples of blocks above and to the left of a current block. [Figure 9] FIG. 1 is a diagram of a computer system for implementing an embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] FIG. 1 shows a simplified block diagram of a communication system (100) according to an embodiment of the present disclosure. The system (100) may include at least two terminals (110-120) connected to each other via a network (150). In the case of one-way data transmission, a first terminal (110) can encode video data at a local location and transmit the encoded video data to another terminal (120) via the network (150). The second terminal (120) can receive the encoded video data of the other terminal from the network (150), decode the encoded data, and display the restored video data. One-way data transmission is common in media service applications, etc.
[0011] 1 illustrates a second pair of terminals (130, 140) provided to support two-way transmission of encoded video, such as may occur during a video conference. For two-way data transmission, each terminal (130, 140) can encode video data captured at a local location and transmit it to the other terminal over the network (150). Each terminal (130, 140) can also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the reconstructed video data on a local display device.
[0012] In FIG. 1, the terminals (110-140) may be, for example, servers, personal computers, smartphones, and / or any other type of terminal. For example, the terminals (110-140) may be laptop computers, tablets, media players, and / or dedicated video conferencing equipment. The network (150) represents any number of networks for transmitting encoded video data between the terminals (110-140), including, for example, wired and / or wireless communication networks. The communication network (150) may exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of discussion of this application, the architecture and topology of the network (150) is not important to the operation of the present disclosure, unless otherwise described herein below.
[0013] As an example application of the disclosed subject matter, Figure 2 shows a video encoder and decoder arrangement in a streaming environment. The disclosed subject matter can be utilized with other applications that support video, including, for example, video conferencing, digital TV, storage of compressed video on digital media such as CDs, DVDs, memory sticks, etc.
[0014] 2, the streaming system (200) can include a capture subsystem (213), which includes a video source (201) and an encoder (203). The streaming system (200) may further include at least one streaming server (205) and / or at least one streaming client (206).
[0015] A video source (201) may, for example, create an uncompressed video sample stream (202). The sample stream (202) is depicted as a thick line to emphasize the amount of data compared to an encoded video bitstream, and the sample stream (202) may be processed by an encoder (203) connected to the camera (201). The encoder (203) may include hardware, software, or a combination thereof to realize or implement aspects of the disclosed subject matter, which are described in more detail below. The encoder (203) may generate an encoded video bitstream (204). The encoded video bitstream (204) is depicted as a thin line to emphasize the amount of data compared to the uncompressed video sample stream (202), and may be stored on a streaming server (205) for future use. One or more streaming clients (206) may access the streaming server (205) to retrieve a video bitstream (209) as a copy of the encoded video bitstream (204).
[0016] The streaming client (206) may include a video decoder (210) and a display (212). The video decoder (210) may, for example, decode a video bitstream (209) as an incoming copy of the encoded video bitstream (204) and create an outgoing video sample stream (211) that may be rendered on a display (212) or another rendering device (not shown). In some streaming systems, the video bitstreams (204, 209) may be encoded according to a particular video encoding / compression standard. Examples of these standards include, but are not limited to, the ITU-T H.265 recommendation. A video encoding standard informally referred to as Versatile Video Coding (VVC) is under development. Embodiments of the present disclosure may be used in the context of VVC.
[0017] FIG. 3 illustrates an exemplary functional block diagram of a video decoder (210) coupled to a display (212) in accordance with an embodiment of the present disclosure.
[0018] The video decoder (210) may include a channel (312), a receiver (310), a buffer memory (315), an entropy decoder / parser (320), a scaler / inverse transform unit (351), an intra prediction unit (352), a motion compensated prediction unit (353), an aggregator (355), a loop filter unit (356), a reference picture memory (357), and a current picture memory (358). In at least one embodiment, the video decoder (210) may include an integrated circuit, a series of integrated circuits, and / or other electronic circuitry. The video decoder (210) may also be implemented, in part or in whole, in software running on one or more CPUs with associated memory.
[0019] In this and other embodiments, the receiver (310) can receive one or more coded video sequences to be decoded by the decoder (210), one coded video sequence at a time, with the decoding of each coded video sequence being independent of the decoding of the other coded video sequences. The coded video sequences can be received from a channel (312), which is a hardware / software link to a storage device for storing the coded video data. The receiver (310) can receive the coded video data and other data, such as coded audio data and / or auxiliary data streams, which can be forwarded to a respective using entity (not shown). The receiver (310) can separate the coded video sequences from the other data. To address network jitter, a buffer memory (315) can be coupled between the receiver (310) and the entropy decoder / parser (320) (hereafter referred to as the "parser"). When the receiver 310 receives data from a store-and-forward device or an isochronous real-time network with sufficient bandwidth and controllability, the buffer 315 may not be used or may be small. To make optimal use of packet networks such as the Internet, the buffer 315 may be required, and may be relatively large and have a self-adaptive size.
[0020] The video decoder (210) may include a parser (320) for reconstructing symbols (321) based on the entropy coded video sequence. These categories of symbols include, for example, information for managing the operation of the video decoder (210) and for controlling a rendering device, such as a display (212), which may be coupled to the decoder as shown in FIG. 2. The control information for the rendering device may be in the form of Supplementary Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (not shown). The parser (320) parses / entropy decodes 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, arithmetic coding with or without context-dependent coding, etc. The parser (320) extracts a subgroup parameter set for at least one of the pixel subgroups in the video decoder from the encoded video sequence based on at least one parameter corresponding to the group. The subgroup may be a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (Transform Unit), a block, a transform block, a transform unit, a transform block ... The parser (320) may include a prediction unit (TU), a prediction unit (PU), etc. The parser (320) may also extract information such as transform coefficients, quantizer parameter values, motion vectors, etc. from the encoded video sequence.
[0021] The parser (320) can create symbols (321) by performing entropy decoding / parsing operations on the video sequence received from the buffer (315).
[0022] The reconstruction of the symbols (321) may involve several different units, depending on the type of coded video picture or part thereof (e.g., inter-picture vs. intra-picture, inter-block vs. intra-block), and other factors. The units involved, and the type of involvement, may be controlled by subgroup control information parsed by the parser (320) from the coded video sequence. For simplicity, the flow of such subgroup control information between the parser (320) and the following units is not shown.
[0023] In addition to the mentioned functional blocks, the decoder (210) may be conceptually subdivided into several functional units, which are described below. In an actual implementation operating under commercial constraints, several of these units may closely interact 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:
[0024] One unit may be a scalar / inverse transform unit (351), which may receive quantized transform coefficients and control information as symbols (321) from the parser (320), including the transform method to be used, block size, quantization factor, quantization scaling matrix, etc. The scalar / inverse transform unit (351) may output blocks containing sample values that may be input to an aggregator (355).
[0025] In some cases, the output samples of the scalar / inverse transform unit (351) may belong to intra-coded blocks, i.e., blocks that do not utilize prediction information from a previously reconstructed picture, but can utilize prediction information from a previously reconstructed part of the current picture. Such prediction information may be provided by an intra-picture prediction unit (352). In some cases, the intra-picture prediction unit (352) utilizes surrounding already reconstructed information obtained from the current (partially reconstructed) picture from the current picture memory (358) to generate a block of the same size and shape as the block being reconstructed. In some cases, the aggregator 355 adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit 352 to the output sample information provided by the scalar / inverse transform unit 351.
[0026] In other cases, the output samples of the scalar / inverse transform unit (351) may belong to a block that has already been inter-coded, possibly motion-compensated. In such a case, the motion compensated prediction unit (353) accesses the reference picture memory (357) to obtain samples used for prediction. After motion compensating the obtained samples based on the symbols 321 belonging to the block, these samples may be added by the aggregator 355 to the output of the scalar / inverse transform unit 351 (in this case referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (357) from which the motion compensated prediction unit (353) obtains the prediction samples may be controlled by a motion vector. The motion vector may be available to the motion compensated prediction unit (353) in the form of a symbol (321), which may have, for example, an x, Y, and reference picture component. Motion compensation may further include interpolation of sample values obtained from a reference picture memory (357), motion vector prediction mechanisms, etc. when sub-sample accurate motion vectors are used.
[0027] The output samples of the aggregator (355) may be subjected to various loop filtering techniques in a loop filter unit (356). Video compression techniques include in-loop filtering techniques controlled by parameters included in the encoded video bitstream and applied to the loop filter unit (356) as symbols (321) from the parser (320), which may be responsive to meta-information obtained during decoding of previous parts of the encoded picture or encoded video sequence (in decoding order) or to previously constructed loop filtered sample values.
[0028] The output of the loop filter unit (356) may be a sample stream, which can be output to a rendering device such as a display (212) or can be stored in a reference picture memory (356) for use in future inter-picture prediction.
[0029] Once some coded pictures are fully reconstructed, they can be used as reference pictures for future prediction. If a coded picture is fully reconstructed and is recognized as a reference picture (e.g., by the parser (320)), the current reference picture stored in the current picture memory (358) can become part of the reference picture memory (357), and a new current picture memory can be reallocated before starting reconstruction of a subsequent coded picture.
[0030] The video decoder (210) may perform the decoding operation according to a given video compression technique, which may be recorded in, for example, the ITU-T H.265 Recommendation standard. In the sense that the encoded video sequence complies with the syntax of the video compression technique or standard, the encoded video sequence may comply with the syntax specified by the video compression technique or standard used, e.g., as specified in a video compression technique document or standard, more specifically in a profile document therein. Also, to comply with some video compression techniques or standards, the complexity of the encoded video sequence is within a range limited by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, the maximum frame rate, the maximum reconstructed sample rate (e.g., measured in mega samples per second), the maximum reference picture size, etc. In some cases, the limits set by the level may be further limited by the specifications of a Hypothetical Reference Decoder (HRD) and metadata of HRD buffer management, which are signaled in the encoded video sequence.
[0031] In an embodiment, the receiver (310) can receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data can be utilized by the video decoder (210) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial or SNR enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0032] FIG. 4 illustrates an example functional block diagram of a video encoder (203) associated with a video source (201) in accordance with an embodiment of the present disclosure.
[0033] The video encoder (203) may include, for example, an encoder as a source encoder (430), a coding engine (432), a (local) decoder (433), a reference picture memory (434), a predictor (435), a transmitter (440), an entropy encoder (445), a controller (450), and a channel (460).
[0034] The encoder (203) may receive video samples from a video source (201) (not part of the encoder), which may capture the video images that are encoded by the encoder (203).
[0035] The video source (201) may provide a source video sequence to be encoded by the encoder (203) in the form of a digital video sample stream, which may have any suitable bit depth (e.g., x-bit, 10-bit, 12-bit, ...), 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 service system, the video source (201) may be a storage device for storing previously prepared videos. In a video conferencing system, the video source (203) may be a camera for capturing local image information as a video sequence. The video data is provided as a number of separate pictures that give motion when viewed in sequence. The pictures themselves may be organized as a spatial pixel array, with each pixel containing one or more samples depending on the sampling structure, color space, etc. used. The relationship between pixels and samples is easily understood by those skilled in the art. The following description focuses on samples.
[0036] According to an embodiment, the encoder (203) can encode and compress pictures of a source video sequence into an encoded video sequence (443) in real time or under any other time constraint required by the application. Running at an appropriate encoding rate is one function of the controller (450). The controller (450) may also control and be operatively coupled to other functional units described below, which are not shown for the sake of brevity. Parameters set by the controller (450) may include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Other functions of the controller (450) are readily recognizable to those skilled in the art, and may reside in a video encoder (203) optimized for a particular system design.
[0037] Some video encoders operate in a manner that those skilled in the art will easily recognize as a "coding loop." As a very simplified description, the coding loop may include the coding part of the source encoder (430), responsible for constructing symbols based on the input picture to be coded and the reference pictures, and a (local) decoder (433) embedded in the encoder (203), which reconstructs the symbols to create the sample data that the (remote) decoder also tries to create, if the compression between the symbols and the coded video bitstream is lossless in some video compression techniques. The reconstructed sample stream may be input to a reference picture memory (434). The contents of the reference picture memory are also bit-exact between the local and remote encoders, since the decoding on the symbol stream is independent of the decoder location (local or remote) and results in bit-exact results. In other words, the reference picture samples "seen" by the predictive part of the encoder are exactly the same as the sample values "seen" by the decoder when it tries to use prediction during decoding. The basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained, e.g., due to channel errors) is well known to those skilled in the art.
[0038] The operation of the "local" decoder (433) may be essentially the same as the operation of the "remote" decoder (210), which has been described in detail above in connection with Figure 3. However, because symbols are available and the entropy encoder (445) and parser (320) are capable of losslessly encoding / decoding the symbols into an encoded video sequence, the entropy decoding portion of the decoder (210), including the channel (312), receiver (310), buffer (315), and parser (320), need not be fully implemented in the local decoder (433).
[0039] In this case, it is observed that any decoder technique other than analysis / entropy decoding present in the decoder necessarily exists in the corresponding encoder in essentially the same functional form. Therefore, the disclosed subject matter focuses on the operation of the decoder. The description of the encoder technique may be simplified since the encoder technique and the fully described decoder technique are mutually inverse. More detailed description is only necessary in certain areas and is provided below.
[0040] As part of its operation, the source encoder (430) may perform motion-compensated predictive encoding, where the source encoder (430) performs predictive encoding on an input frame with reference to one or more encoded frames from the video sequence designated as "reference frames." In this manner, the encoding engine (432) encodes differences between pixel blocks of an input frame and pixel blocks of reference frames that may be selected as predictive references for the input frame.
[0041] The local video decoder (433) may decode the encoded video data of the frames designated as reference frames based on the symbols created by the source encoder (430). The operation of the encoding engine (432) may advantageously be a lossy process. When the encoded video data is decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence may generally be a replica of the source video sequence with some errors. The local video decoder (433) may copy the decoding process that the video decoder may perform on the reference frames and store the reconstructed reference frames in the reference picture memory (434). In this way, the encoder (203) stores copies of the reconstructed reference frames locally, which have a common content with the reconstructed reference frames obtained by the remote video decoder (no transmission errors are present).
[0042] The predictor (435) can perform a prediction search for the coding engine (432). That is, for a new frame to be coded, the predictor (435) can search the reference picture memory (434) for sample data or specific metadata, such as reference picture motion vectors, block shapes, etc., that can be used as suitable prediction references for the new picture (as candidate reference pixel blocks). The predictor (435) can find suitable prediction references by operating pixel block by pixel block based on the sample blocks. In some cases, the input picture may have prediction references extracted from multiple reference pictures stored in the reference picture memory (434), as determined based on the search results obtained by the predictor (435).
[0043] The controller (450) can manage the encoding operations of the video encoder (430), including, for example, setting parameters and subgroup parameters for encoding the video data.
[0044] The output of all the above functional units may be entropy coded in an entropy coder (445) which performs lossless compression on the symbols produced by the various functional units to convert them into an encoded video sequence according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.
[0045] The transmitter (440) can buffer the encoded video sequence created by the entropy encoder (445) to prepare it for transmission over a communication channel (460), which may be a hardware / software link to a storage device for storing the encoded video data. The transmitter (440) can merge the encoded video data from the video encoder (430) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0046] The controller (450) can manage the operation of the encoder (203). During encoding, the controller (450) assigns a particular encoded picture type to each encoded picture, which may affect the encoding technique that may be applied to the respective picture. For example, pictures are typically assigned as intra pictures (I pictures), predicted pictures (P pictures), or bidirectionally predicted pictures (B pictures).
[0047] An Intra picture (I-picture) is a picture that is coded and decoded without using any other frame in a sequence as a prediction source. Some video codecs allow different types of Intra pictures, including Independent Decoder Refresh (IDR) pictures. Those skilled in the art are aware of these variations of I-pictures and their corresponding uses and characteristics.
[0048] A predictive picture (P picture) may be a picture that is coded and decoded using intra- or inter-prediction, which predicts sample values for each block using at most one motion vector and reference index.
[0049] A bidirectionally predictive picture (B-picture) may be a picture that is coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multi-predictive picture may use more than two reference pictures and associated metadata to reconstruct a single block.
[0050] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks each having 4x4, 8x8, 4x8, or 16x16 samples) and may be coded block by block. These blocks are coded predictively with reference to other (already coded) blocks, which are determined by the coding assignment applied to the block's corresponding picture. For example, blocks of an I-picture may be coded non-predictively, or blocks of an I-picture may be coded predictively (spatial or intra prediction) with reference to already coded blocks of the same picture. Pixel blocks of a P-picture are coded non-predictively through spatial or temporal prediction with reference to one already coded reference picture. Blocks of a B-picture are coded non-predictively through spatial or temporal prediction with reference to one or two already coded reference pictures.
[0051] The video encoder (203) may perform encoding operations based on a given video encoding technique or standard, for example the ITU-T H.265 recommendation. In its operation, the video encoder (203) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to a syntax specified in the video encoding technique or standard used.
[0052] In an embodiment, the transmitter (440) can transmit additional data along with the encoded video. The video encoder (430) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, Supplemental Enhancement Information (SEI) messages, Video Usability Information (VUI) parameter set fragments, etc.
[0053] FIG. 6 is a diagram of intra prediction modes in VVC Draft 2.
[0054] In VVC Draft 2, there are a total of 87 intra-prediction modes, as shown in Figure 6, where mode 18 (601) is the horizontal mode, mode 50 (602) is the vertical mode, and mode 2 (603), mode 34 (604), and mode 66 (605) are diagonal modes. Modes -1 to -10 and modes 67 to 76 are called Wide-Angle Intra Prediction (WAIP) modes (606, 707).
[0055] In VVC draft 2, the size of the MPM list is still 3, and the generation process of the MPM list is the same as in HEVC, except that "offset" is changed to 61 and "mod" is changed to 64, since there are 67 signaled modes in VVC draft 2.
[0056] The next section of VVC Draft 2 describes the luma intra mode encoding process from which IntraPredModeY[xPb][yPb] is obtained. 1. Adjacent positions (xNbA, yNbA) and (xNbB, yNbB) are set equal to (xPb-1, yPb) and (xPb, yPb-1), respectively. 2. If X is replaced by A or B, the variable candIntraPredModeX is derived by the following steps: -Section 6.4.X[Ed.(BB):Neighbouring Blocks availability checking Invoke the availability derivation process for the block specified by [process tbd], where position (xCurr, yCurr) is (xPb, yPb) and the adjacent position (xNbY, yNbY) is set equal to (xNbX, yNbX) as input. and the output is assigned to availableX. - Obtain a candidate intra-prediction mode candIntraPredModeX according to the following steps: - Set candIntraPredModeX equal to INTRA_DC if one or more of the following conditions are true: - The variable availableX is equal to FALSE. - CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA. - X is equal to B and yPb-1 is equal to ((yPb >> CtbLog2SizeY) << CtbLog2SizeY) Less than. - otherwise, candIntraPredModeX to IntraPredModeY[xNbX][yNbX] Set it equal to 3. Follow these steps to get candModeList[x], where x=0...2: - If candIntraPredModeB is equal to candIntraPredModeA, the following applies: - If candIntraPredModeA is less than 2 (i.e., INTRA_PLANAR or equal to INTRA_DC), follow these steps to get candModeList[x], where x=0..2: candModeList[0]=INTRA_PLANAR (8-1) candModeList[1]=INTRA_DC (8-2) candModeList[2]=INTRA_ANGULAR50(8-3) - Otherwise, follow these steps to get candModeList[x], where x=0..2: candModeList[0]=candIntraPredModeA (8-4) candModeList[1]=2+((candIntraPredModeA+61)% 64)(8-5) candModeList[2]=2+((candIntraPredModeA-1)% 64) (8-6) - Otherwise (if candIntraPredModeB is not equal to candIntraPredModeA), the following applies: -Get candModeList[0] and candModeList[1] by following these steps: candModeList[0]=candIntraPredModeA (8-7) candModeList[1]=candIntraPredModeB (8-8) - If neither candModeList[0] nor candModeList[1] is equal to INTRA_PLANAR, set candModeList[2] equal to INTRA_PLANAR. - Otherwise, if neither candModeList[0] nor candModeList[1] is equal to INTRA_DC, set candModeList[2] equal to INTRA_DC. - Otherwise, set candModeList[2] equal to INTRA_ANGULAR50. 4. Apply the following process to get IntraPredModeY[xPb][yPb]: -intra_luma_mpm_flag[xPb][yPb] is equal to 1, IntraPredModeY[xPb][yPb] is set to candModeList[intra_luma_mpm_idx[xPb][yPb]] Set it equal to - Otherwise, use the following steps to get IntraPredModeY[xPb][yPb]: 1. Correct the array candModeList[x], where x=0..2, according to the following steps: i.candModeList[0] is candModeList[1] If it is, swap these two values as follows: (candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1])(8-9) ii.candModeList[0] is candModeList[2] If it is, swap these two values as follows: (candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2])(8-10) iii.candModeList[1] If is greater than candModeList[2], swap these two values as follows: (candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2])(8-11) 2. Obtain IntraPredModeY[xPb][yPb] by following these steps: i. Set IntraPredModeY[xPb][yPb] equal to intra_luma_mpm_remainder[xPb][yPb]. ii. If i is between 0 and 2, inclusive, and IntraPredModeY[xPb][yPb] is greater than or equal to candModeList[i], increase the value of IntraPredModeY[xPb][yPb] by 1.
[0057] In the above, there is a variable IntraPredModeY[x][y], where x = xPb..xPb+cbWidth-1 and y = yPb..yPb+cbHeight-1 and IntraPredModeY[xPb][yPb] are arranged so that they are equal to
[0058] In the development of VVC Draft 2, an MPM list of size 6 is proposed, which includes a Planar mode and a DC mode. Two adjacent modes, the Left mode and the Top mode, are used to generate the other four MPMs.
[0059] Multi-line intra prediction is proposed to perform intra prediction using more reference lines, and which reference line is used to generate an intra predictor is determined and signaled by the encoder. The reference line index is signaled before the intra prediction mode, and if a non-zero reference line index is signaled, the planar mode / DC mode is excluded from the intra prediction mode. Figure 7 shows an example of four reference lines (710), each of which is composed of six segments (i.e., segments A to F) with a reference sample at the top left. In addition, the samples closest to segments B and E are embedded in segments A and F, respectively.
[0060] In multi-line intra prediction, if the signaled reference line index is non-zero, Planar and DC modes are excluded from MPM list generation and mode coding. Also, it is proposed to generate an MPM list of size 6 with two adjacent modes. Therefore, it is an open question how to generate 6 angle MPMs for non-zero rows when only two adjacent modes are accessible.
[0061] The proposed methods may be used separately or in any combination in any order.
[0062] In the following description, the line index of the closest reference line is 0 (zero reference line). The number of the maximum reference line that is signaled is denoted as N.
[0063] Similarly, as shown in FIG. 8, the top block (701) and the left block (702) are limited as follows.
[0064] As shown in Figure 8, the pixel at the top left position in the current block (703) is denoted as (x,y). A block in which all samples have a y coordinate greater than or equal to y and all samples have an x coordinate less than x is called a left block. A block in which all samples have a y coordinate less than y is called an upper block. Figure 8 shows an example of left blocks (L1, Lx, and Ln) and upper blocks (A1, A2, Ax, An) of the current block (703).
[0065] The two neighboring modes mentioned below can be from the top (701) of the current block (703) or from the left (702) of the current block (703). Below are some examples of the two neighboring modes:
[0066] In one example, the two adjacent modes are both from the left side (702).
[0067] In another example, the two adjacent modes are both from the top side (701).
[0068] In another example, one of the adjacent modes is from the left side (702) and the other adjacent mode is from the top side (701).
[0069] In other examples, if the width of the current block (703) is greater than the height of the current block (703), then the two adjacent modes are both from the top (701), or if the height of the current block (703) is greater than the width, then the two adjacent modes are both from the left side (702), or if the width of the current block (703) is equal to the height, then one adjacent mode is from the top (701) and the other adjacent mode is from the left side (702).
[0070] Based on the block width, block height, and the ratio of block width to block height, two (or more) adjacent blocks can be obtained by selecting and using a reference sample side (as described in the examples above).
[0071] In one example, if the width / height of a block is greater than a given threshold, select two (or more) neighboring blocks only from the top side (701). Examples of threshold values include, but are not limited to, 2, 4, 8, 16, 32, and 64.
[0072] In another example, if the height / width of a block is greater than a certain threshold, select two (or more) neighboring blocks from the left side only (702). Examples of threshold values include, but are not limited to, 2, 4, 8, 16, 32, and 64.
[0073] In the following description, if the mode of the adjacent block is not available, the mode is set to the planar mode or the DC mode.
[0074] In the following description, where the signaled mode number range is from 0 to M (inclusive), M may be any positive integer, e.g., 34 or 66. The neighboring modes of a given mode X are restricted such that if X is greater than 2 and less than M-1, the neighboring modes of X are X-1 and X+1. If X is equal to 2, the neighboring modes of X are 3 and M (or M-1). If X is equal to M-1, the neighboring modes of X are X-1 and X+1 (or 2). If X is equal to M, the neighboring modes of X are M-1 and 2 (or 3).
[0075] In the following description, when a mode is not a Planar mode or a DC mode, or when a mode generates a predicted sample according to a predetermined prediction direction, such as intra prediction modes 2 to 66 limited in VVC Draft 2, the mode is called an angle mode. There are two groups of two variables, Offset and mod: 1) Offset=mod-3,mod=M-2; 2) Offset = mod - 3, mod = M - 1;
[0076] If the signaled reference line index is non - zero, the following method can generate six angular MPMs through two adjacent modes. The following method or example may be used alone or in combination in any order.
[0077] In one embodiment, when at least one of the two adjacent modes is an angular mode, the following algorithm is used to generate six angular MPMs. The two adjacent modes are denoted as Mode_A and Mode_B. The variable ang_mode[] is used to record the angular modes of the adjacent modes. The variable ang_count is used to indicate the number of angular modes, and mpm_index is used to indicate the index of the MPM list. Initially, ang_count and mpm_index are set to 0. IncludedMode[] is used to indicate whether each mode is included in the MPM list, and all elements in the array IncludedMode[] are initially set to False. · When Mode_A is an angular mode, MPM [mpm_index] = Mode_A, ang_count += 1, mpm_index += 1; · When Mode_B is an angular mode, MPM [mpm_index] = Mode_B, ang_count += 1, mpm_index += 1; · When (diff = 0; diff <= 2 && mpm_index < 6; diff++){ · When (idx = 0; idx < ang_count; idx++){ ○ MPM[mpm_index] = ((ang_mode[idx] + offset - diff) % mod)+2; ○ When (includedMode[MPM[mpm_index]] == false)){, ■includedMode[MPM[mpm_index++]]=true} ○If mpm_index==6, break; ○MPM[mpm_index]=((ang_mode[idx]-1+diff) %mod)+2; ○If (includedMode[MPM[mpm_index]]==false) {, ■includedMode[MPM[mpm_index++]] = true}.
[0078] In one embodiment, if only one of the neighboring modes is an angle mode denoted as ang_neighbor, then ang_neighbor and its two neighboring modes (denoted as mode_L and mode_R) are added to the MPM list, then one neighboring mode of mode_L and one neighboring mode of mode_R are added to the MPM list. Finally, a vertical / horizontal mode is added to generate a six angle MPM. These six angle modes may be added to the MPM list in any order. In one example, the six angle MPMs are generated as follows: MPM[0]=ang_mode MPM[1]=((ang_mode+offset)% mod)+2; ·MPM[2]=((ang_mode-1)%mod)+2; ·MPM[3]=((ang_mode-1+offset)%mod)+2; · MPM[4] = ((ang_mode)% mod + 2; MPM[5] = Vertical or Horizontal mode. In one example, if MPM[0] to MPM[4] do not contain a vertical mode, then MPM[5] is set to vertical mode. Otherwise, MPM[5] is set to horizontal mode.
[0079] In another embodiment, if only one of the neighboring modes is an angular mode denoted as ang_neighbor, then ang_neighbor and its two neighboring modes (denoted as mode_L and mode_R) are added to the MPM list, then one neighboring mode of mode_L (denoted as mode_L_L) and one neighboring mode of mode_R (denoted as mode_R_R) are added to the MPM list. Finally, one neighboring mode of mode_L_L or mode_R_R is added to the MPM list. These six angular modes may be added to the MPM list in any order. In one example, the six angle MPMs are generated as follows: MPM[0]=ang_mode ·MPM[1]=((ang_mode+offset%mod)+2; ·MPM[2]=((ang_mode-1)%mod)+2; ·MPM[3]=((ang_mode-1+offset)%mod)+2; · MPM[4] = ((ang_mode)% mod + 2; ·MPM[5]=((ang_mode+1)%mod)+2; In another example, the six angle MPMs are generated as follows: MPM[0]=ang_mode ·MPM[1]=((ang_mode+offset)%mod)+2; ·MPM[2]=((ang_mode-1)%mod)+2; ·MPM[3]=((ang_mode-1+offset)%mod)+2; · MPM[4] = ((ang_mode) % mod) + 2; ·MPM[5]=((ang_mode-2+offset)%mod)+2;
[0080] In another embodiment, if only one of the neighbor modes is an angle mode indicated as ang_neighbor, the six angle MPMs are obtained as follows, and these six angle modes are added to the MPM list in any order. An example is given below. MPM[0]=ang_mode ·MPM[1]=((ang_mode+offset)%mod)+2; ·MPM[2]=((ang_mode-1)%mod)+2; ·MPM[3]=((ang_mode-2+offset)%mod)+2; ·MPM[4]=((ang_mode+1)%mod)+2; MPM[5] = Vertical or Horizontal mode. In one example, if MPM[0] to MPM[4] do not contain a vertical mode, then MPM[5] is set to vertical mode. Otherwise, MPM[5] is set to horizontal mode.
[0081] In another embodiment, if two of the adjacent modes are angular modes and they are adjacent modes, the MPM list is generated as follows: The two adjacent modes are denoted as Mode_A and Mode_B and are added to the MPM list: The variables ang_max and ang_min are utilized to record the maximum and minimum modes between Mode_A and Mode_B. If Mode_A is greater than Mode_B, ang_max is set to Mode_A and ang_min is set to Mode_B, If ang_min is equal to 2 and ang_max is equal to M-1 or M, swap the values of ang_min and ang_max. · Obtain the other four angle MPMs as follows: These four modes may be added in any order, the following is just an example. ·MPM[2]=((ang_min+offset)%mod)+2; · MPM[3] = ((ang_max-1)%mod) + 2; ·MPM[4]=((ang_min-1+offset)%mod)+2; · MPM[5] = ((ang_max) % mod) + 2;
[0082] In another embodiment, if two adjacent modes are denoted as Mode_A and Mode_B, and these two adjacent modes are both angle modes, and abs(Mode_A-Mode_B)>2&&abs(Mode_A-Mode_B)≦Thres, the following algorithm is used to generate six angle MPMs, where Thres is a positive integer, and Thres is greater than 2, e.g., Thres=61 or 62 or 63. First, add Mode_A and Mode_B to the MPM list Then, add the two adjacent modes of Mode_A and the two adjacent modes of Mode_B to the MPM list. These six angle MPMs may also be added to the MPM list in any order. Below is an example of generating six MPMs. ○MPM[0]=Mode_A ○MPM[1]=Mode_B ○MPM[2]=((Mode_A+offset)%mod)+2; ○MPM[3]=((Mode_A-1)%mod)+2; ○MPM[4]=((Mode_B+offset)%mod)+2; ○MPM[5]=((Mode_B-1)%mod)+2;
[0083] In another embodiment, if two adjacent modes are denoted by Mode_A and Mode_B, and these two adjacent modes are both angle modes, and abs(Mode_A-Mode_B)==2||abs(Mode_A-Mode_B)>Thres, where Thres is a positive integer and is greater than 2, for example, Thres=61 or 62 or 63, then the following algorithm is used to obtain six angle MPMs. · Use the variables ang_max and ang_min to record the maximum and minimum modes between Mode_A and Mode_B. If Mode_A is greater than Mode_B, ang_max is set to Mode_A and ang_min is set to Mode_B. Then, add the three adjacent modes, Mode_A and Mode_B, to the MPM list. Finally, add the vertical or horizontal mode to the MPM list, and these 6 MPMs may be added to the MPM list in any order. The following is an example. MPM[0]=ang_min MPM[1]=ang_max · MPM[2] = ((ang_min-1)%mod) + 2; ·MPM[3]=((ang_min+offset)%mod)+2; · MPM[4] = ((ang_max-1)%mod) + 2; MPM[5] = Vertical or Horizontal mode. In one example, if MPM[0] to MPM[4] do not contain a vertical mode, then MPM[5] is set to vertical mode. Otherwise, MPM[5] is set to horizontal mode.
[0084] In another embodiment, if the two adjacent modes are both planar or DC modes, six default modes are used to populate the MPM list, and these six default modes may be added to the MPM list in any order. In one embodiment, the 6 default modes are {50, 18, 2, 34, 66, 26}. In another embodiment, the 6 default modes are {50, 18, 2, 34, 26, 42}. In another embodiment, if the width of the current block is greater than its height, the six default modes are {50, 18, 34, 66, 42, 58}. In another embodiment, if the height of the current block is greater than the width, the six default modes are {50, 18, 34, 2, 10, 26}. In another embodiment, if the width of the current block is equal to its height, the six default modes are {50, 18, 2, 34, 26, 42}.
[0085] In another embodiment, first add all adjacent modes that are angular modes to the MPM list, denoted as ang_mode, and add angular mode ((ang_mode-1)%mod)+2 and angular mode ((ang_mode+offset)%mod)+2 to the MPM list if they are not included in the MPM list. In one embodiment, add some default modes if the MPM list is not already completely filled. The default mode list is any one of the alternatives described in item number h above. In another embodiment, if the MPM list is not yet completely filled, for each mode that was already in the MPM list (denoted as mpm_mode), add angle mode ((mpm_mode-1) % mod)+2 and angle mode ((mpm_mode+offset) % mod)+2 to the MPM list if they are not included in the MPM list.
[0086] In at least one embodiment, the techniques described above may be performed by an integrated circuit, a series of integrated circuits, and / or other electronic circuitry. In at least one embodiment, the techniques may be implemented partially or fully in software running on one or more CPUs with associated memory.
[0087] The techniques described above may be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, Figure 9 illustrates a computer system (800) suitable for implementing some embodiments of the present disclosure.
[0088] Computer software can be coded using any suitable machine code or computer language, and can be subjected to mechanisms such as assembling, compiling, linking, etc. to produce code containing instructions that are executed directly by a computer central processing unit (CPU), graphics processing unit (GPU), etc., or interpreted, by microcode, etc.
[0089] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, etc.
[0090] 9 are exemplary in nature and are not intended to imply any limitation on the scope or functionality of the computer software used to implement embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the non-limiting embodiment of computer system (800).
[0091] The computer system (800) may include several human-machine interface input devices. Such human-machine interface input devices may be responsive to one or more human user inputs, such as tactile inputs (e.g., keystrokes, slides, data glove movements), audio inputs (e.g., voice, claps), visual inputs (e.g., postures), olfactory inputs (not shown), etc. The human-machine interface devices may also be used to capture certain media that are not necessarily directly related to a conscious human input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a static image capture device), and video (e.g., two-dimensional video, three-dimensional video including stereo video).
[0092] The input human-machine interface devices may include one or more of a keyboard (801), a mouse (802), a touchpad (803), a touch panel (810), a data glove, a joystick (805), a microphone (806), a scanner (807), and an image capture device (808) (only one of each is shown).
[0093] The computer system (800) may further include several human machine interface output devices. Such human machine interface output devices may stimulate one or more of the human user's senses, for example, through haptic output, sound, light, and smell / taste. Such human machine interface output devices may be haptic output devices (e.g., haptic feedback devices provided by a touch panel (810), data gloves, or joystick (805), but also haptic feedback devices that do not function as input devices). For example, such devices may be audio output devices (e.g., speakers (809), headphones (not shown)), visual output devices (e.g., screens (810), including CRT screens, LCD screens, plasma screens, OLED screens, each of which may or may not have touch panel input capabilities, haptic feedback capabilities, some of which may output two-dimensional visuals or three or more dimensional outputs, such as by means of stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0094] The computer system (800) may further include human accessible storage devices and associated media, including, for example, optical media such as CD / DVD ROM / RW (820) having media such as CD / DVD (821), thumb drives (822), removable hard drives or solid state drives (823), conventional magnetic media such as magnetic tape and floppy disks (not shown), dedicated ROM / ASIC / PLD based, dongle-like devices (not shown), etc.
[0095] Those skilled in the art will appreciate that the term "computer-readable medium" as used in connection with the subject matter disclosed in this application does not include transmission media, carrier waves or other instantaneous signals.
[0096] The computer system (800) may further include an interface to one or more communication networks. The network may be, for example, a wireless, wired, or optical network. The network may be a local area network, a wide area network, a metropolitan network, a vehicle industrial network, a real-time network, a delay-tolerant network, and the like. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks (including GSM, 3G, 4G, 5G, LTE, and the like), television wired or wireless wide area digital networks (including cable television, satellite television, and terrestrial television), vehicle and industrial networks (including CANBus), and the like. Some networks typically require an external network interface adapter that is connected to some general-purpose data port or peripheral bus (849) (e.g., a USB port of the computer system (800)), while other interfaces are typically integrated into the core of the computer system (800) by connecting to a system bus as described below (e.g., an Ethernet interface integrated into a PC computer system, or a cellular network interface integrated into a smartphone computer system). The computer system (800) may use any of these networks to communicate with other entities. Such communications may be one-way receive only (e.g., broadcast television), one-way transmit only (e.g., a CAN bus to a CANbus device), or bidirectional, e.g., to other computer systems using local or wide area digital networks. Specific protocols and protocol stacks may be utilized for each of the above networks and network interfaces.
[0097] Human machine interface devices, human accessible storage devices, and network interfaces may be connected to the core (840) of the computer system (800).
[0098] The core (840) may include one or more central processing units (CPUs) (841), graphic processing units (GPUs) (842), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (843), hardware accelerators for certain tasks (844), etc. These devices may be connected via a system bus (848), along with read only memory (ROM) (845), random access memory (846), internal mass storage devices (847) such as internal hard disk drives or SSDs that are not accessible to the user. In some computer systems, the system bus (848) may be accessed in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected to the core's system bus (848) directly or via a peripheral bus (849). Peripheral bus architectures include PCI, USB, etc.
[0099] The CPU (841), GPU (842), FPGA (843) and accelerator (844) can execute some instructions, which, when combined, can constitute the above computer code. The computer code is stored in ROM (845) or RAM (846). Temporary data can be stored in RAM (846) and permanent data can be stored, for example, in an internal mass storage device (847). The use of a cache memory allows for fast storage and retrieval of any memory device, and the cache memory can be closely associated with one or more of the CPU (841), GPU (842), mass storage device (847), ROM (845), RAM (846), etc.
[0100] The computer-readable medium can bear computer code for performing various computer-implemented operations, and the medium and computer code may be specially designed and constructed for the purposes of the present disclosure, or they may be of the type well known and available to those skilled in the computer software arts.
[0101] By way of example and not limitation, a computer system having the architecture (800), and in particular the core (840), may provide functionality by having a processor (including a CPU, GPU, FPGA, accelerator, etc.) execute software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage devices as introduced above, as well as specific storage devices of the core (840) that are non-transitory in nature, such as the core's internal mass storage device (847) or ROM (845). Software for implementing the embodiments of the present disclosure may be stored in such devices and executed by the core (840). Depending on the particular needs, the computer-readable media may include one or more storage devices or chips. The software causes the core (840), and in particular the processor therein (including a CPU, GPU, FPGA, etc.), to perform certain processes or certain parts of certain processes described herein, including defining data structures stored in RAM (846) and modifying such data structures based on the processes defined by the software. Also, or alternatively, the computer system may provide functionality through logic that is hardwired or otherwise embedded in circuitry (e.g., accelerator (844)) that may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. Where appropriate, references to software may include logic, and conversely, references to logic may include software. Where appropriate, references to computer-readable media may include circuitry (e.g., integrated circuits (ICs)) on which software is stored to be executed, circuitry embodying the logic to be executed, or both. This disclosure includes any appropriate combination of hardware and software.
[0102] Although the present disclosure has previously described several non-limiting examples, there are modifications, substitutions, and various alternative equivalents that are within the scope of the present disclosure. It should therefore be understood that those skilled in the art will be able to devise numerous systems and methods that embody the principles of the present disclosure and are therefore within its spirit and scope, although not explicitly shown or described herein.
[0103] (Appendix 1) 1. A video decoding method executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line, comprising: determining whether an intra prediction mode of a first neighboring block of a current block is an angle mode; determining whether an intra prediction mode of a second neighboring block of the current block is an angular mode; generating a most probable mode MPM list, the MPM list including six candidate modes for intra prediction of the current block; The six candidate modes are all angular modes, A video decoding method, wherein, if it is determined that the intra prediction mode of the first neighboring block is an angular mode, the MPM list includes the intra prediction mode of the first neighboring block, and, if it is determined that the intra prediction mode of the second neighboring block is an angular mode, the MPM list includes the intra prediction mode of the second neighboring block. (Appendix 2) The step of generating the MPM list includes performing the following operations when determining that the intra prediction mode of the first neighboring block is an angular mode and determining that the intra prediction mode of the second neighboring block is not an angular mode: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode of the MPM list to a first adjacent angle mode of an intra prediction mode of the first adjacent block; Setting a third candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, which is different from the first adjacent angle mode; Setting a fourth candidate mode of the MPM list to a neighboring angle mode of the first neighboring angle mode other than the intra prediction mode of the first neighboring block; Set a fifth candidate mode of the MPM list to a neighboring angle mode of the second neighboring angle mode other than the intra prediction mode of the first neighboring block; A video decoding method as described in Appendix 1, wherein a sixth candidate mode of the MPM list is set to an adjacent angle mode of the fourth candidate mode other than the first adjacent angle mode, or to an adjacent angle mode of the fifth candidate mode other than the second adjacent angle mode. (Appendix 3) 3. The video decoding method of claim 2, wherein in the MPM list index, the order of the most probable candidate modes from lowest to highest is the first candidate mode to the sixth candidate mode. (Appendix 4) The step of generating the MPM list includes, when determining that the intra prediction mode of the first neighboring block is an angular mode and determining that the intra prediction mode of the second neighboring block is an adjacent angular mode relative to the intra prediction mode of the first neighboring block, performing the following operations: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Determine a magnitude relationship between an angle mode of the first neighboring block and an intra prediction mode of the second neighboring block, where a smaller angle mode is a first mode and a larger angle mode is a second mode; In a first case, the first mode is equal to a minimum angle mode signaled in a codec standard and the second mode is equal to a maximum angle mode signaled in the codec standard used by the at least one processor to control multi-line intra prediction using the non-zero reference lines, and in the first case, performing the following operations: setting a third candidate mode of the MPM list to a first adjacent angle mode of the second mode, the first adjacent angle mode having a value between the first mode and the second mode; setting a fourth candidate mode of the MPM list to a first adjacent angle mode of the first mode, the first adjacent angle mode having a value between the first mode and the second mode; Setting a fifth candidate mode of the MPM list to an adjacent angle mode of a first adjacent angle mode of the second mode other than the second mode; Setting a sixth candidate mode of the MPM list to an adjacent angle mode of a first adjacent angle mode of the first mode other than the first mode; In a second case different from the first case, the following operations are performed: setting a third candidate mode of the MPM list to a second adjacent angle mode of the first mode, the second adjacent angle mode having a value not between the first mode and the second mode; setting the fourth candidate mode in the MPM list to a second adjacent angle mode of the second mode, the second adjacent angle mode having a value not between the first mode and the second mode; Setting the fifth candidate mode in the MPM list to an adjacent angle mode of a second adjacent angle mode of the first mode other than the first mode; 2. The video decoding method of claim 1, wherein the sixth candidate mode in the MPM list is set to an adjacent angle mode of a second adjacent angle mode of the second mode other than the second mode. (Appendix 5) 5. The video decoding method of claim 4, wherein in the MPM list index, the order of the most probable candidate modes from lowest to highest is the first candidate mode to the sixth candidate mode. (Appendix 6) The step of generating the MPM list includes: determining that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes; and if an absolute value of a difference between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block is greater than 2 and is less than or equal to a predetermined threshold, the predetermined threshold being a positive integer greater than 2, performing the following operations: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Set a third candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the first adjacent block; Setting a fourth candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, which is different from the first adjacent angle mode; Set a fifth candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the second adjacent block; A video decoding method as described in Appendix 1, wherein a sixth candidate mode of the MPM list is set to a second adjacent angle mode of an intra prediction mode of the second adjacent block, and the second adjacent angle mode of the intra prediction mode of the second adjacent block is different from the first adjacent angle mode of the intra prediction mode of the second adjacent block. (Appendix 7) 7. The video decoding method of claim 6, wherein in the MPM list index, the order of the most probable candidate modes from lowest to highest is the first candidate mode to the sixth candidate mode. (Appendix 8) moreover, determining whether an intra prediction mode of a first neighboring block of a current block is a planar mode or a direct current (DC) mode; determining whether an intra prediction mode of a second neighboring block of the current block is a planar mode or a DC mode; The step of generating the MPM list includes performing at least one of the following operations when determining that the intra prediction mode of the first neighboring block is a planar mode or a DC mode, and determining that the intra prediction mode of the second neighboring block is a planar mode or a DC mode: The six candidate modes are set to values among {50, 18, 2, 34, 66, 26}, The six candidate modes are set to values among {50, 18, 2, 34, 26, 42}, 2. The video decoding method of claim 1, wherein the six candidate modes correspond to modes of Versatile Video Coding (VVC). (Appendix 9) 9. The video decoding method of claim 8, wherein the order of the most probable candidate modes from lowest to highest in the MPM list index is {50, 18, 2, 34, 66, 26}, or {50, 18, 2, 34, 26, 42}. (Appendix 10) When determining that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes, the step of generating the MPM list includes the steps of: Add the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block to the MPM list; Add to the MPM list each adjacent angular mode between the first adjacent block and the second adjacent block that has not been previously added to the MPM list; 2. The video decoding method of claim 1, further comprising: adding adjacent angle modes of the modes included in the MPM list that have not been previously added to the MPM list to the MPM list if the MPM list is not completely filled after adding each adjacent angle mode of the first adjacent block and the second adjacent block to the MPM list, until the MPM list is completely filled. (Appendix 11) 1. An apparatus for decoding a video sequence by controlling multi-line intra prediction using a non-zero reference line, comprising: at least one memory arranged to store computer program code; at least one processor configured to access said at least one memory and to operate based on said computer program code; The computer program code comprises: first decision code configured to cause the at least one processor to determine whether an intra-prediction mode of a first neighboring block of a current block is an angular mode; second decision code configured to cause the at least one processor to determine whether an intra-prediction mode of a second neighboring block of the current block is an angular mode; and generating code configured to cause the at least one processor to generate a most probable mode MPM list, the MPM list including six candidate modes for intra prediction of the current block; The six candidate modes are all angular modes, The generation code is configured to cause the at least one processor to generate the MPM list such that, if it is determined that the intra prediction mode of the first neighboring block is an angular mode, the MPM list includes the intra prediction mode of the first neighboring block, and, if it is determined that the intra prediction mode of the second neighboring block is an angular mode, the MPM list includes the intra prediction mode of the second neighboring block. (Appendix 12) The generation code is configured to cause the at least one processor to perform the following operations when determining that the intra prediction mode of the first neighboring block is an angular mode and determining that the intra prediction mode of the second neighboring block is not an angular mode: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode of the MPM list to a first adjacent angle mode of an intra prediction mode of the first adjacent block; Setting a third candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, which is different from the first adjacent angle mode; Setting a fourth candidate mode of the MPM list to a neighboring angle mode of the first neighboring angle mode other than the intra prediction mode of the first neighboring block; Set a fifth candidate mode of the MPM list to a neighboring angle mode of the second neighboring angle mode other than the intra prediction mode of the first neighboring block; 12. The apparatus of claim 11, wherein the apparatus sets a sixth candidate mode of the MPM list to an adjacent angle mode of the fourth candidate mode other than the first adjacent angle mode, or to an adjacent angle mode of the fifth candidate mode other than the second adjacent angle mode. (Appendix 13) 13. The apparatus of claim 12, wherein the generation code is configured to cause the at least one processor to generate the MPM list such that an order of the most probable candidate modes from lowest to highest indices of the MPM list is from the first candidate mode to the sixth candidate mode. (Appendix 14) The generation code is configured to cause the at least one processor to perform the following operations when determining that the intra prediction mode of the first neighboring block is an angular mode and determining that the intra prediction mode of the second neighboring block is an adjacent angular mode relative to the intra prediction mode of the first neighboring block: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Determine a magnitude relationship between an angle mode of the first neighboring block and an intra prediction mode of the second neighboring block, where a smaller angle mode is a first mode and a larger angle mode is a second mode; In a first case, the first mode is equal to a minimum angle mode signaled in a codec standard and the second mode is equal to a maximum angle mode signaled in the codec standard, the codec standard being used by the at least one processor to control multi-line intra prediction using the non-zero reference lines, and in the first case, performing the following operations: setting a third candidate mode of the MPM list to a first adjacent angle mode of the second mode, the first adjacent angle mode having a value between the first mode and the second mode; setting a fourth candidate mode of the MPM list to a first adjacent angle mode of the first mode, the first adjacent angle mode having a value between the first mode and the second mode; Setting a fifth candidate mode of the MPM list to an adjacent angle mode of a first adjacent angle mode of the second mode other than the second mode; Setting a sixth candidate mode of the MPM list to an adjacent angle mode of a first adjacent angle mode of the first mode other than the first mode; In a second case different from the first case, the following operations are performed: setting a third candidate mode of the MPM list to a second adjacent angle mode of the first mode, the second adjacent angle mode having a value not between the first mode and the second mode; setting the fourth candidate mode in the MPM list to a second adjacent angle mode of the second mode, the second adjacent angle mode having a value not between the first mode and the second mode; Setting the fifth candidate mode in the MPM list to an adjacent angle mode of a second adjacent angle mode of the first mode other than the first mode; 12. The apparatus of claim 11, setting the sixth candidate mode in the MPM list to an adjacent angle mode of a second adjacent angle mode of the second mode other than the second mode. (Appendix 15) 15. The apparatus of claim 14, wherein the generation code is configured to cause the at least one processor to generate the MPM list such that an order of the most probable candidate modes from lowest to highest indices of the MPM list is from the first candidate mode to the sixth candidate mode. (Appendix 16) The generation code is configured to cause the at least one processor to perform the following operations if the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes, and if an absolute value of a difference between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block is greater than 2 and less than or equal to a predetermined threshold, the predetermined threshold being a positive integer greater than 2: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Set a third candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the first adjacent block; Setting a fourth candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, which is different from the first adjacent angle mode; Set a fifth candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the second adjacent block; The apparatus of claim 11, further comprising: setting a sixth candidate mode of the MPM list to a second adjacent angle mode of an intra prediction mode of the second neighboring block, the second adjacent angle mode of the intra prediction mode of the second neighboring block being different from the first adjacent angle mode of the intra prediction mode of the second neighboring block. (Appendix 17) 17. The apparatus of claim 16, wherein the generation code is configured to cause the at least one processor to generate the MPM list such that an order of the most probable candidate modes from lowest to highest indices of the MPM list is from the first candidate mode to the sixth candidate mode. (Appendix 18) The computer program code further comprises: third decision code configured to cause the at least one processor to determine whether an intra-prediction mode of a first neighboring block of the current block is a planar mode or a DC mode; and fourth decision code configured to cause the at least one processor to determine whether an intra-prediction mode of a second neighboring block of the current block is a planar mode or a DC mode; The generation code is configured to cause the at least one processor to perform at least one of the following operations if it determines that an intra-prediction mode of the first neighboring block is a planar mode or a DC mode and determines that an intra-prediction mode of the second neighboring block is a planar mode or a DC mode: The six candidate modes are set to values among {50, 18, 2, 34, 66, 26}, The six candidate modes are set to values among {50, 18, 2, 34, 26, 42}, 12. The apparatus of claim 11, wherein the six candidate modes correspond to modes of Versatile Video Coding (VVC). (Appendix 19) The generation code is configured to cause the at least one processor to perform the following operations if it determines that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes: Add the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block to the MPM list; Add each adjacent angle mode of the first adjacent block and the second adjacent block to the MPM list that has not been previously added to the MPM list; After adding each adjacent angle mode of the first adjacent block and the second adjacent block to the MPM list, if the MPM list is not completely filled, until the MPM list is completely filled, add to the MPM list the adjacent angle modes of the modes included in the MPM list that have not been previously added to the MPM list. The apparatus according to Supplementary Note 11. (Supplementary Note 20) A computer program for causing a computer to execute the method according to any one of Supplementary Notes 1 to 11.
Prior Art Documents
Non-Patent Documents
[0104]
Non-Patent Document 1
Non-Patent Document 2
Claims
1. 1. A video decoding method executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line, comprising: determining whether an intra prediction mode of a first neighboring block of the current block is an angular mode; determining whether an intra prediction mode of a second neighboring block of the current block is an angular mode; generating a Most Probable Mode (MPM) list, the MPM list including a plurality of candidate modes for intra prediction of the current block; the plurality of candidate modes are angular modes; If it is determined that the intra prediction mode of the first neighboring block is an angular mode and the intra prediction mode of the second neighboring block is not an angular mode, generating the MPM list includes performing the following operations: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode of the MPM list to a first adjacent angle mode of an intra prediction mode of the first adjacent block; Set a third candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, the second adjacent angle mode being different from the first adjacent angle mode; Set a fourth candidate mode of the MPM list to an adjacent angle mode of the first adjacent angle mode other than the intra prediction mode of the first adjacent block; Set a fifth candidate mode of the MPM list to an adjacent angle mode of the second adjacent angle mode other than the intra prediction mode of the first adjacent block; The video decoding method further comprises: determining whether an intra prediction mode of a first neighboring block of a current block is a planar mode or a DC mode; determining whether an intra prediction mode of a second neighboring block of the current block is a planar mode or a DC mode; The step of generating the MPM list includes performing at least one of the following operations when determining that the intra prediction mode of the first neighboring block is a planar mode or a DC mode, and determining that the intra prediction mode of the second neighboring block is a planar mode or a DC mode: Set each of the six candidate modes included in the MPM list to a value among {50, 18, 2, 34, 66, 26}; The six candidate modes are set to values among {50, 18, 2, 34, 26, 42}, The six candidate modes correspond to modes of Versatile Video Coding (VVC).
2. The MPM list is: MPM[0]=ang_mode; MPM[1]=((ang_mode+offset)% mod)+2; MPM[2]=((ang_mode-1)% mod)+2; MPM[3]=((ang_mode-1+offset)% mod)+2; MPM[4]=((ang_mode)% mod)+2; 2. The video decoding method of claim 1, comprising: ang_mode indicating an intra-prediction mode of the first neighboring block.
3. 2. The video decoding method of claim 1, wherein the MPM list is generated such that in the MPM list index, the order of most probable candidate modes from lowest to highest is from the first candidate mode to the last candidate mode.
4. 1. A video decoding method executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line, comprising: determining whether an intra prediction mode of a first neighboring block of the current block is an angular mode; determining whether an intra prediction mode of a second neighboring block of the current block is an angular mode; generating a Most Probable Mode (MPM) list, the MPM list including a plurality of candidate modes for intra prediction of the current block; the plurality of candidate modes are angular modes; When it is determined that the intra prediction mode of the first neighboring block is an angular mode, the MPM list includes the intra prediction mode of the first neighboring block, and when it is determined that the intra prediction mode of the second neighboring block is an angular mode, the MPM list includes the intra prediction mode of the second neighboring block; The step of generating the MPM list includes performing the following operations when determining that the intra prediction mode of the first neighboring block is an angular mode and determining that the intra prediction mode of the second neighboring block is an adjacent angular mode relative to the intra prediction mode of the first neighboring block: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Determine a magnitude relationship between an angle mode of the first neighboring block and an intra prediction mode of the second neighboring block, where a smaller angle mode is a first mode and a larger angle mode is a second mode; In the first case, the following operations are performed: setting a third candidate mode of the MPM list to a second adjacent angle mode of the first mode, the second adjacent angle mode having a value not between the first mode and the second mode; setting a fourth candidate mode of the MPM list to a second adjacent angle mode of the second mode, the second adjacent angle mode having a value not between the first mode and the second mode; Setting a fifth candidate mode of the MPM list to an adjacent angle mode of a second adjacent angle mode of the first mode other than the first mode; The video decoding method further comprises: determining whether an intra prediction mode of a first neighboring block of a current block is a planar mode or a DC mode; determining whether an intra prediction mode of a second neighboring block of the current block is a planar mode or a DC mode; The step of generating the MPM list includes performing at least one of the following operations when determining that the intra prediction mode of the first neighboring block is a planar mode or a DC mode, and determining that the intra prediction mode of the second neighboring block is a planar mode or a DC mode: Set each of the six candidate modes included in the MPM list to a value among {50, 18, 2, 34, 66, 26}; The six candidate modes are set to values among {50, 18, 2, 34, 26, 42}, The six candidate modes correspond to modes of Versatile Video Coding (VVC).
5. In a second case different from the first case, the first mode is equal to a minimum angle mode signaled in a codec standard and the second mode is equal to a maximum angle mode signaled in the codec standard, the codec standard being used by the at least one processor to control multi-line intra prediction using the non-zero reference lines, and in the first case, performing the following operations: setting a third candidate mode of the MPM list to a first adjacent angle mode of the second mode, the first adjacent angle mode having a value between the first mode and the second mode; setting a fourth candidate mode of the MPM list to a first adjacent angle mode of the first mode, the first adjacent angle mode having a value between the first mode and the second mode; The video decoding method of claim 4 , further comprising setting a fifth candidate mode of the MPM list to an adjacent angle mode other than the second mode and a first adjacent angle mode of the second mode.
6. The step of generating the MPM list for intra prediction of the current block includes: adding Mode_A and Mode_B to the MPM list; and MPM[2]=((ang_min+offset)% mod)+2; MPM[3]=((ang_max-1)% mod)+2; MPM[4]=((ang_min-1+offset)% mod)+2; deriving the remaining angle MPM according to 5. The video decoding method of claim 4, further comprising: Mode_A and Mode_B indicating the intra-prediction mode of the first neighboring block and the intra-prediction mode of the second neighboring block, respectively; and variables arg_max and arg_min are used to record the maximum and minimum modes in Mode_A and Mode_B.
7. 1. A video decoding method executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line, comprising: determining whether an intra prediction mode of a first neighboring block of the current block is an angular mode; determining whether an intra prediction mode of a second neighboring block of the current block is an angular mode; generating a Most Probable Mode (MPM) list, the MPM list including a plurality of candidate modes for intra prediction of the current block; the plurality of candidate modes are angular modes; When it is determined that the intra prediction mode of the first neighboring block is an angular mode, the MPM list includes the intra prediction mode of the first neighboring block, and when it is determined that the intra prediction mode of the second neighboring block is an angular mode, the MPM list includes the intra prediction mode of the second neighboring block; The step of generating the MPM list includes: determining that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes; and if an absolute value of a difference between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block is greater than 2 and is less than or equal to a predetermined threshold, the predetermined threshold being a positive integer greater than 2, performing the following operations: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Set a third candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the first adjacent block; Set a fourth candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, the second adjacent angle mode being different from the first adjacent angle mode; Set a fifth candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the second adjacent block; The video decoding method further comprises: determining whether an intra prediction mode of a first neighboring block of a current block is a planar mode or a DC mode; determining whether an intra prediction mode of a second neighboring block of the current block is a planar mode or a DC mode; The step of generating the MPM list includes performing at least one of the following operations when determining that the intra prediction mode of the first neighboring block is a planar mode or a DC mode, and determining that the intra prediction mode of the second neighboring block is a planar mode or a DC mode: Set each of the six candidate modes included in the MPM list to a value among {50, 18, 2, 34, 66, 26}; The six candidate modes are set to values among {50, 18, 2, 34, 26, 42}, The six candidate modes correspond to modes of Versatile Video Coding (VVC).
8. The MPM list is: MPM[0]=Mode_A MPM[1]=Mode_B MPM[2]=((Mode_A+offset)% mod)+2; MPM[3]=((Mode_A-1)% mod)+2; MPM[4]=((Mode_B+offset)% mod)+2; 8. The video decoding method of claim 7, comprising: Mode_A and Mode_B indicating an intra-prediction mode of the first neighboring block and an intra-prediction mode of the second neighboring block, respectively.
9. 1. A video decoding method executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line, comprising: determining whether an intra prediction mode of a first neighboring block of the current block is an angular mode; determining whether an intra prediction mode of a second neighboring block of the current block is an angular mode; generating a Most Probable Mode (MPM) list, the MPM list including a plurality of candidate modes for intra prediction of the current block; the plurality of candidate modes are angular modes; When it is determined that the intra prediction mode of the first neighboring block is an angular mode, the MPM list includes the intra prediction mode of the first neighboring block, and when it is determined that the intra prediction mode of the second neighboring block is an angular mode, the MPM list includes the intra prediction mode of the second neighboring block; The step of generating the MPM list includes: determining that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes, and when an absolute value of a difference between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block is equal to 2, performing the following operations: Set a first candidate mode in the MPM list to an intra-prediction mode of the first neighboring block; Set a second candidate mode in the MPM list to the intra prediction mode of the second neighboring block; Set a third candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the first adjacent block; Set a fourth candidate mode of the MPM list to a second adjacent angle mode of the intra prediction mode of the first adjacent block, the second adjacent angle mode being different from the first adjacent angle mode; Set a fifth candidate mode of the MPM list to a first adjacent angle mode of the intra prediction mode of the second adjacent block; The video decoding method further comprises: determining whether an intra prediction mode of a first neighboring block of a current block is a planar mode or a DC mode; determining whether an intra prediction mode of a second neighboring block of the current block is a planar mode or a DC mode; The step of generating the MPM list includes performing at least one of the following operations when determining that the intra prediction mode of the first neighboring block is a planar mode or a DC mode, and determining that the intra prediction mode of the second neighboring block is a planar mode or a DC mode: Set each of the six candidate modes included in the MPM list to a value among {50, 18, 2, 34, 66, 26}; The six candidate modes are set to values among {50, 18, 2, 34, 26, 42}, The six candidate modes correspond to modes of Versatile Video Coding (VVC).
10. The MPM list is: MPM[0]=ang_min; MPM[1]=ang_max; MPM[2]=((ang_min-1)% mod)+2; MPM[3]=((ang_min+offset)% mod)+2; MPM[4]=((ang_max-1)% mod)+2; 10. The video decoding method of claim 9, further comprising: Mode_A and Mode_B respectively indicating the intra-prediction mode of the first neighboring block and the intra-prediction mode of the second neighboring block; and variables arg_max and arg_min are used to record the maximum and minimum modes in Mode_A and Mode_B; if Mode_A is greater than Mode_B, arg_max is set to Mode_A and arg_min is set to Mode_B.
11. 2. The video decoding method of claim 1, wherein the order of most probable candidate modes from lowest to highest in the indices of the MPM list is {50, 18, 2, 34, 66, 26} or {50, 18, 2, 34, 26, 42}.
12. 1. An apparatus for decoding a video sequence by controlling multi-line intra prediction using a non-zero reference line, comprising: at least one memory arranged to store computer program code; and at least one processor configured to access said at least one memory and to perform the video decoding method of any one of claims 1 to 11 based on said computer program code.
13. A computer program product causing a computer to carry out the video decoding method according to any one of claims 1 to 11.
14. a range of prediction mode numbers signaled to the processor for performing the video decoding method is in the range of 0 to M, inclusive, where M is a predetermined positive integer; The first and second adjacent angle modes of the intra prediction mode X of the first adjacent block are if X is greater than 2 and less than M−1, then X−1 and X+1; When X is equal to 2, then 3 and M (or M-1); If X is equal to M-1, then X-1 and X+1 (or 2); A video decoding method according to any one of claims 1 to 11, wherein if X is equal to M, then X is M-1 and 2 (or 3).