Method, apparatus and computer program for video coding and bitstreams - Patents.com

JP2024100944A5Active Publication Date: 2025-02-13TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024083889
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-07-15
Filing Date
2024-05-23
Publication Date
2025-02-13
Estimated Expiration
2039-09-30

AI Technical Summary

Technical Problem

The high encoding complexity of multi-line intra prediction in video coding standards like VVC due to the large number of available intra prediction modes for non-zero reference lines, which increases computational resources and inefficiencies.

Method used

A method to generate a reduced set of intra prediction modes by creating a first MPM list for zero reference lines and a second MPM list for non-zero reference lines, where the second list is a subset of the first, and signaling a reference line index to determine the appropriate mode for encoding, thereby reducing the number of modes considered for non-zero reference lines.

Benefits of technology

This approach reduces encoding complexity and computational resources by limiting the number of intra prediction modes for non-zero reference lines, enhancing the efficiency of video encoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a method of signaling an intra prediction mode used to encode a current block.SOLUTION: A method includes: generating a first most probable mode (MPM) list corresponding to a zero reference line of a current block, the first MPM list including a first plurality of intra prediction modes; generating a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list including a second plurality of intra prediction modes, the second plurality of intra prediction modes including a subset of the first plurality of intra prediction modes; signaling a reference line index indicating a reference line used to encode the current block; and signaling an intra mode index indicating the intra prediction mode from among the first MPM list and the second MPM list.SELECTED DRAWING: Figure 8
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority under 35 U.S.C. §119 to U.S. Provisional Application No. 62 / 742,252, filed October 5, 2018, and U.S. Patent Application No. 16 / 511,626, filed July 15, 2019, both of which are incorporated by reference in their entireties.

[0002] FIELD OF THE DISCLOSURE This disclosure relates to advanced video coding techniques, and more particularly, to a mode list generation scheme for multi-line intra prediction. [Background technology]

[0003] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) published the H.265 / HEVC (High Efficiency Video Coding) standard in 2013 (version 1), 2014 (version 2), 2015 (version 3), and 2016 (version 4) [1]. In 2015, these two standards organizations jointly formed the Joint Video Exploration Team (JVET) to explore the possibility of developing the next video coding standard beyond HEVC. In October 2017, these standards organizations issued a Joint Call for Proposals (CfP) for video compression with performance beyond HEVC. By February 15, 2018, a total of 22 CfP responses had been submitted for standard dynamic range (SDR), 12 for high dynamic range (HDR), and 12 for 360 video categories. In April 2018, all received CfP responses were evaluated at the 122 MPEG / 10th JVET meeting. As a result of this meeting, JVET formally launched the standardization process for the next generation of video coding beyond HEVC. The new standard was named VVC (Versatile Video Coding), and JVET was renamed the Joint Video Expert Team.

[0004] The intra prediction modes used in HEVC are shown in Figure 1. In HEVC, there are a total of 35 intra prediction modes, of which mode 10 is the horizontal mode, mode 26 is the vertical mode, and modes 2, 18 and 34 are diagonal modes. The intra prediction modes are signaled by three most probable modes (MPMs) and the remaining 32 modes.

[0005] To code an intra mode, a Most Probable Mode (MPM) list of size 3 is created based on the intra modes of neighboring blocks. This MPM list is called the MPM list or primary MPM list. If the intra mode is not from the MPM list, a flag is signaled to indicate whether the intra mode belongs to the selected mode or not.

[0006] An example of the MPM list generation process for HEVC is shown below. ·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;

[0007] Here, leftIntraDir is used to indicate the mode of the left block, and aboveIntraDir is used to indicate the mode of the above block. If the left or above block is not currently available, leftIntraDir or aboveIntraDir will be DC_IDX. Also, the variables "offset" and "mod" are constant values ​​set to 29 and 32, respectively.

[0008] Multi-line intra prediction is proposed to use more reference lines for intra prediction, and the encoder determines and signals the reference lines used to generate the intra predictor. The reference line index is signaled before the intra prediction mode, and if a non-zero reference line index is signaled, Planar mode / DC mode is excluded from the intra prediction mode. In Figure 2, an example of four reference lines is depicted, and each reference line is composed of six segments, i.e., segments A-F, with a top-left reference sample. Furthermore, segments A and F are filled with the nearest samples from segments B and E, respectively.

[0009] For multi-line intra prediction, if the modes available for the non-zero reference lines are the same as those for the zero reference lines, the coding complexity of the multi-line intra prediction becomes very high. Therefore, it is necessary to reduce the number of intra prediction modes available for the non-zero reference lines. Summary of the Invention [Means for solving the problem]

[0010] In one embodiment, a method for signaling an intra-prediction mode to be used to code a current block in a coded video bitstream, performed by at least one processor, includes generating a first Most Probable Mode (MPM) list (MPM list) corresponding to a zero reference line of the current block, the first MPM list including a first plurality of intra-prediction modes, and generating a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list including a second plurality of intra-prediction modes, the second plurality of intra-prediction modes being selected from the first plurality of intra-prediction modes. The present invention provides a method for encoding a current block, the method comprising: signaling a reference line index indicating a reference line among a zero reference line and one or more non-zero reference lines to be used for encoding the current block, including a subset of the prediction modes; signaling a reference line index indicating a reference line to be used for encoding the current block among a zero reference line and one or more non-zero reference lines; and signaling an intra mode index indicating an intra prediction mode, wherein the intra mode index indicates an intra prediction mode in a first MPM list based on the reference line index indicating that the reference line is the zero reference line, or the intra mode index indicates an intra prediction mode in a second MPM list based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines.

[0011] In one embodiment, a device for signaling an intra-prediction mode used to code a current block in a coded video bitstream comprises at least one memory configured to store program code; and at least one processor configured to read and operate as instructed by the program code, the program code comprising: a first generating code configured to cause the processor to generate a first Most Probable Mode List (MPM list) corresponding to a zero reference line of the current block, the first MPM list including a first plurality of intra-prediction modes; and a second generating code configured to cause the processor to generate a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list including a second plurality of intra-prediction modes, and a second generating code configured to cause the processor to generate a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list including a second plurality of intra-prediction modes, and a second MPM list including a second plurality of intra-prediction modes. A device is provided that includes a second generation code, the plurality of intra prediction modes including a subset of the first plurality of intra prediction modes; a first notification code configured to cause a processor to signal a reference line index indicating a reference line among a zero reference line and one or more non-zero reference lines to be used to encode the current block; and a second notification code configured to cause the processor to signal an intra mode index indicating an intra prediction mode, wherein the intra mode index indicates an intra prediction mode in a first MPM list based on the reference line index indicating that the reference line is the zero reference line, or the intra mode index indicates an intra prediction mode in a second MPM list based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines.

[0012] In one embodiment, a non-transitory computer-readable medium storing instructions including one or more instructions, which when executed by one or more processors of a device for signaling an intra-prediction mode to be used to encode a current block in an encoded video bitstream, causes the one or more processors to: generate a first Most Probable Mode List (MPM list) corresponding to a zero reference line of the current block, the first MPM list including a first plurality of intra-prediction modes; and generate a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list including a second plurality of intra-prediction modes, the second plurality of intra-prediction modes including a first plurality of intra-prediction modes. A non-transitory computer-readable medium is provided that generates a second MPM list including a subset of a plurality of intra-prediction modes, signals a reference line index indicating a reference line among a zero reference line and one or more non-zero reference lines to be used to encode a current block, and signals an intra-mode index indicating an intra-prediction mode, wherein the intra-mode index indicates an intra-prediction mode in the first MPM list based on the reference line index indicating that the reference line is the zero reference line, and the intra-mode index indicates an intra-prediction mode in the second MPM list based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines.

[0013] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Brief description of the drawings]

[0014] [Figure 1] FIG. 2 is a diagram showing an example of an intra-prediction mode in HEVC. [Diagram 2] FIG. 13 is a diagram showing an example of a reference line adjacent to a coding block unit. [Diagram 3]FIG. 1 is a diagram showing an example of an intra-prediction mode in VVC. [Figure 4] FIG. 1 is a simplified block diagram of a communication system according to one embodiment. [Diagram 5] FIG. 2 is a diagram of an arrangement of a video encoder and a video decoder in a streaming environment according to one embodiment. [Figure 6] FIG. 2 is a functional block diagram of a video decoder according to one embodiment. [Figure 7] FIG. 2 is a functional block diagram of a video encoder according to an embodiment. [Figure 8] 1 is a flowchart of an example process for signaling an intra-prediction mode used to encode a current block in a coded video bitstream, according to one embodiment. [Figure 9] FIG. 1 is a diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015] In VVC, there are a total of 95 intra prediction modes as shown in Figure 3, where mode 18 is the horizontal mode, mode 50 is the vertical mode, and modes 2, 34, and 66 are the diagonal modes. Modes -1 to -10 and modes 67 to 76 are sometimes called Wide-Angle Intra Prediction (WAIP) modes.

[0016] In VTM2.0.1, the size of the MPM list is 3 and the MPM list generation process is the same as in HEVC. One difference is that "offset" is changed to 61 and "mod" is changed to 64, since VTM2.0.1 has 67 advertised modes.

[0017] In the next section, we describe the encoding process of the luma intra mode, that is, IntraPredModeY[xPb][yPb] can be derived by the following ordered steps: 1. Set the adjacent positions (xNbA, yNbA) and (xNbB, yNbB) to be equal to (xPb - 1, yPb) and (xPb, yPb - 1), respectively. 2. When X is replaced by either A or B, derive the variable candIntraPredModeX as follows. - 6.4. As specified in Section X [Ed.(BB): Neighbouring blocks availability checking process tbd], call the block availability derivation process with the location (xCurr, yCurr) set equal to (xPb, yPb) and the adjacent location (xNbY, yNbY) set equal to (xNbX, yNbX), and assign the output to availableX. - Derive the candidate intra prediction mode candIntraPredModeX as follows. - If one or more of the following conditions are met, set candIntraPredModeX equal to INTRA_DC. - 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 less than ((yPb >> CtbLog2SizeY) << CtbLog2SizeY). - Otherwise, set candIntraPredModeX equal to IntraPredModeY[xNbX][yNbX]. 3. Derive candModeList[x] for x = 0..2 as follows. - If candIntraPredModeB is equal to candIntraPredModeA, apply the following. - If candIntraPredModeA is less than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC), derive candModeList[x] for x = 0..2 as follows. candModeList[0]=INTRA_PLANAR candModeList[1]=INTRA_DC candModeList[2]=INTRA_ANGULAR50 - Otherwise, derive candModeList[x] for x=0..2 as follows: candModeList[0]=candIntraPredModeAcandModeList[1]=2+((candIntraPredModeA+61)%64)candModeList[2]=2+((candIntraPredModeA-1)%64) - Else, if (candIntraPredModeB is not equal to candIntraPredModeA), then apply the following: - Derive candModeList[0] and candModeList[1] as follows: candModeList[0]=candIntraPredModeA candModeList[1]=candIntraPredModeB - If neither candModeList[0] nor candModeList[1] is equal to INTRA_PLANAR, then set candModeList[2] equal to INTRA_PLANAR. - Else, if neither candModeList[0] nor candModeList[1] is equal to INTRA_DC, then set candModeList[2] equal to INTRA_DC. - Otherwise, set candModeList[2] equal to INTRA_ANGULAR50. 4. Derive IntraPredModeY[xPb][yPb] by applying the following steps: - if intra_luma_mpm_flag[xPb][yPb] is equal to 1, set IntraPredModeY[xPb][yPb] equal to candModeList[intra_luma_mpm_idx[xPb][yPb]]. - Otherwise, derive IntraPredModeY[xPb][yPb] by applying the following ordered steps: 1. Modify the array candModeList[x], x=0..2, according to the following ordered procedure: When i.candModeList[0] is greater than candModeList[1], swap both values ​​as follows: (candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1]) ii.If candModeList[0] is greater than candModeList[2], swap both values ​​as follows: (candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2]) iii.If candModeList[1] is greater than candModeList[2], swap both values ​​as follows: (candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2]) 2. Derive IntraPredModeY[xPb][yPb] by the following ordered steps: i. Set IntraPredModeY[xPb][yPb] equal to intra_luma_mpm_remainder[xPb][yPb]. ii. For i between 0 and 2, when IntraPredModeY[xPb][yPb] is greater than or equal to candModeList[i], increment the value of IntraPredModeY[xPb][yPb] by 1.

[0018] Set the variable IntraPredModeY[x][y] equal to IntraPredModeY[xPb][yPb], where x=xPb..xPb+cbWidth-1 and y=yPb..yPb+cbHeight-1.

[0019] In the development of VVC, an MPM list of size 6 is proposed. The planar and DC modes may always be included in the MPM list. Two adjacent modes, namely the left-hand mode and the top-hand mode, may be used to generate the remaining four MPMs.

[0020] In VTM4.0, the size of the MPM list is expanded to 6. When intra_luma_mpm_flag is true, it indicates that the current mode belongs to the candidate MPM list. Consider Table 1 below. [Table 1]

[0021] FIG. 4 shows a simplified block diagram of a communication system (300) according to one embodiment of the present disclosure. The communication system (300) may include at least two terminals (410-420) interconnected via a network (450). In the case of a one-way transmission of data, a first terminal (410) may encode video data at a local location for transmission to another terminal (420) via the network (450). The second terminal (420) may receive the encoded video data of the other terminal from the network (450), decode the encoded data, and display the recovered video data. One-way data transmission may be common in media provisioning applications, etc.

[0022] 4 illustrates a second pair of terminals (430, 440) provided to support two-way transmission of encoded video, such as might occur during a video conference. For two-way transmission of data, each terminal (430, 440) may encode video data captured at a local location for transmission over the network (450) to the other terminal. Each terminal (430, 440) may also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the recovered video data on a local display device.

[0023] In FIG. 4, the terminals (410-440) may be depicted as servers, personal computers, and smartphones, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (450) represents any number of networks that convey encoded video data between the terminals (410-440), including, for example, wired and / or wireless communication networks. The communication network (450) may exchange data over 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 this description, the architecture and topology of the network (450) may not be important to the operation of the present disclosure, unless otherwise described herein below.

[0024] 5 shows an arrangement of a video encoder and a video decoder in a streaming environment as an example application for the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-enabled applications including, for example, video conferencing, digital television, and storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0025] The streaming system may include a capture subsystem (513), which may include a video source (501), such as a digital camera, that creates an uncompressed video sample stream (502). The sample stream (502), shown in bold to emphasize its high data volume compared to an encoded video bitstream, may be processed by an encoder (503) coupled to the camera (501). The encoder (503) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (504), shown in thin to emphasize its low data volume compared to the sample stream, may be stored on a streaming server (505) for future use. One or more streaming clients (506, 508) may access the streaming server (505) to obtain copies (507, 509) of the encoded video bitstream (504). The client (506) may include a video decoder (510) that decodes a copy of an input, encoded video bitstream (507) and creates an output video sample stream (511) that can be rendered on a display (512) or other rendering device (not shown). In some streaming systems, the video bitstreams (504, 507, 509) may be encoded according to a particular video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. Video coding standards under development are informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.

[0026] FIG. 6 may be a functional block diagram of a video decoder (510) according to one embodiment of the present invention.

[0027] The receiver (610) may receive one or more codec video sequences to be decoded by the decoder (510), and in the same or another embodiment, may receive one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel (612), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (610) may receive the video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to an entity (not shown) that uses each. The receiver (610) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (615) may be coupled between the receiver (610) and the entropy decoder / parser (620) (hereinafter the "parser"). When the receiver (610) is receiving data from a store-and-forward device with sufficient bandwidth and controllability, or from an isochronous network, the buffer (615) may not be needed or may be small. If a buffer (615) is needed for use with a best-effort packet network, such as the Internet, the buffer (615) may be relatively large and, advantageously, adaptively sized.

[0028] The video decoder (510) may include a parser (620) for reconstructing symbols (621) from the entropy-encoded video sequence. These categories of symbols include information used to manage the operation of the decoder (510) and may include information for controlling a rendering device, such as a display (512), which is not an integral part of the decoder but may be coupled to the decoder, as shown in FIG. 6. The rendering device control information may be in the form of a Supplementary Enhancement Information (SEI message) or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (620) may parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may conform to a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, context-sensitive or non-context-sensitive arithmetic coding, etc. The parser (620) may extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroups may include Groups of Pictures (GOP), pictures, tiles, slices, macroblocks, Coding Units (CU), blocks, Transform Units (TU), Prediction Units (PU), etc. The entropy decoder / parser may also extract transform coefficients, quantization parameter (QP) values, motion vectors, etc. from the coded video sequence information.

[0029] The parser (620) may perform entropy decoding / parsing operations on the video sequence received from the buffer (615) to produce symbols (621). The parser (620) may receive the encoded data and selectively decode particular symbols (621). Additionally, the parser (620) may determine whether a particular symbol (621) should be provided to a motion compensated prediction unit (653), a scaler / inverse transform unit (651), an intra prediction unit (652), or a loop filter (656).

[0030] The reconstruction of the symbols (621) can include a number of different units, depending on the type of coded video picture or part thereof (inter-picture and intra-picture, inter-block and intra-block, etc.), and other factors. Which units are included and how can be controlled by subgroup control information parsed by the parser (620) from the coded video sequence. The flow of such subgroup control information between the parser (620) and the following units is not shown for clarity.

[0031] In addition to the functional blocks already mentioned, the decoder (510) can be conceptually subdivided into several functional units, as described below. In practical implementations operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate:

[0032] The first unit is a scalar / inverse transform unit (651), which receives the quantized transform coefficients as symbols (621) from the parser (620), along with control information including which transform to use, block size, quantization factor, quantization scaling matrix, etc. It can then output blocks containing sample values ​​that can be input to the aggregator (655).

[0033] In some cases, the output samples of the scaler / inverse transform (651) may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (652). In some cases, the intra-picture prediction unit (652) uses surrounding already reconstructed information fetched from the current (partially reconstructed) picture (656) to generate blocks of the same size and shape as the block being reconstructed. The aggregator (655) adds, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (652) to the output sample information provided by the scaler / inverse transform unit (651).

[0034] In other cases, the output samples of the scalar / inverse transform unit (651) may relate to an inter-coded, possibly motion-compensated block. In such cases, the motion compensation prediction unit (653) may access a reference picture memory (657) to fetch samples used for prediction. After motion compensation of the fetched samples according to the symbols (621) relating to the block, these samples may be added by an aggregator (655) to the output of the scalar / inverse transform unit (in this case called residual samples or residual signals) to generate output sample information. The address in the reference picture memory format from which the motion compensation unit fetches the prediction samples may be controlled by a motion vector, which is available to the motion compensation unit in the form of a symbol (621) that may have components of, for example, X, Y, and a reference picture. Motion compensation may also include interpolation of sample values ​​fetched from the reference picture memory, motion vector prediction mechanisms, etc., when sub-sample accurate motion vectors are used.

[0035] The output samples of the aggregator (655) can be subjected to various loop filtering techniques in a loop filter unit (656). Video compression techniques can include in-loop filter techniques controlled by parameters contained in the encoded video bitstream and provided to the loop filter unit (656) as symbols (621) from the parser (620), but can also react to previously reconstructed, loop filtered sample values ​​as well as meta information obtained during the decoding of a coded picture or a previous (in decoding order) part of a coded video sequence.

[0036] The output of the loop filter unit (656) may be a sample stream that can be output to a rendering device (512) or stored in a reference picture memory (656) for use in future inter-picture prediction.

[0037] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (620)), the current reference picture (656) can become part of the reference picture buffer (657), and a new current picture memory can be reallocated before beginning reconstruction of the next coded picture.

[0038] The video decoder (510) may perform decoding operations according to a given video compression technique, such as documented in a standard such as ITU-T Rec. H.265. The encoded video sequence may be compliant with the syntax defined by the video compression technique or standard used in the sense that it follows the syntax of the video compression technique or standard as defined in the video compression technique or standard, particularly in the profile documents therein. Compliance also requires that the complexity of the encoded video sequence is within a range defined by the level of the video compression technique or standard. In some cases, the level constrains the maximum picture size, maximum frame rate, maximum reconstructed sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limitations set by the level may be further constrained in some cases by the specification of a Hypothetical Reference Decoder (HRD) and HRD buffer management metadata signaled in the encoded video sequence.

[0039] In one embodiment, the receiver (610) may 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 may be used by the video decoder (510) 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 signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0040] FIG. 7 may be a functional block diagram of a video encoder (503) according to one embodiment of the present disclosure.

[0041] The encoder (503) may receive video samples from a video source (501) that may capture video to be encoded by the encoder (503) (not part of the encoder).

[0042] The video source (501) may provide a source video sequence to be encoded by the encoder (503) in the form of a digital video sample stream that can be of any suitable bit depth (e.g., 8-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 provision system, the video source (501) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (503) may be a camera that captures local image information as a video sequence. The video data may be provided as a number of separate pictures that give motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc. in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.

[0043] According to one embodiment, the encoder (503) may encode and compress pictures of a source video sequence into an encoded video sequence (743) in real-time or under any other time constraint required by the application. Enforcing an appropriate encoding rate is one of the functions of the controller (750). The controller controls and is operatively coupled to other functional units as described below. For clarity, couplings are not depicted. Parameters set by the controller may include rate control related parameters (picture skip, quantization, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art can easily identify other functions of the controller (750) as they may relate to a video encoder (503) optimized for a particular system design.

[0044] Some video encoders operate in what one skilled in the art would readily recognize as a "coding loop." As an oversimplified explanation, the coding loop can consist of the coding part of the encoder (730) (hereafter "source coder") (responsible for creating symbols based on the input picture to be coded and reference pictures), and a (local) decoder (733) built into the encoder (503) that reconstructs the symbols to create sample data that the (remote) decoder would also create (since any compression between the symbols and the coded video bitstream is lossless in the video compression techniques contemplated in the disclosed subject matter). That reconstructed sample stream is input to a reference picture memory (734). Since the decoding of the symbol stream produces bit-perfect results regardless of the location of the decoder (local or remote), the contents of the reference picture buffer are also bit-perfect between the local and remote encoders. In other words, the predictive part of the encoder "sees" the exact same sample values ​​as the decoder would "see" when using prediction during decoding as reference picture samples. This basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained, for example due to channel errors) is well known to those skilled in the art.

[0045] The operation of the "local" decoder (733) can be the same as that of the "remote" decoder (510), which has already been described in detail above in connection with Figure 6. With brief reference also to Figure 6, the entropy decoder portion of the decoder (510), including the channel (612), receiver (610), buffer (615), and parser (620), need not be fully implemented in the local decoder (733), since symbols are available and the encoding / decoding of symbols for the encoded video sequence by the entropy coder (745) and parser (620) can be lossless.

[0046] An observation that can be made at this point is that any decoder techniques, other than parsing / entropy decoding, that are present in the decoder must necessarily be present in the corresponding encoder in substantially identical functional form. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques that have been described generically. Only in certain areas is a more detailed description necessary, and is provided below.

[0047] As part of its operation, the source coder (730) may perform motion compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence designated as “reference frames.” In this manner, the coding engine (732) codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references for the input frame.

[0048] The local video decoder (733) may decode the encoded video data of frames that may be designated as reference frames based on symbols created by the source coder (730). The operation of the coding engine (732) may advantageously be a lossy process. When the encoded video data may be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a replica of the source video sequence, usually with some errors. The local video decoder (733) may create a replica of the decoding process that may be performed by the video decoder on the reference frames and store the reconstructed reference frames in a reference picture cache (734). In this way, the encoder (503) may locally store copies (free of transmission errors) of reconstructed reference frames that have common content with the reconstructed reference frames obtained by the far-end video decoder.

[0049] The predictor (735) may perform the prediction search of the coding engine (732). That is, for a new frame to be encoded, the predictor (735) may search the reference picture memory (734) for sample data (as candidate reference pixel blocks) or specific metadata of the reference pictures, such as motion vectors, block shapes, etc., that serve as suitable prediction references for the new picture. The predictor (735) may operate on a sample block by pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (735), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (734).

[0050] The controller (750) may manage the encoding operations of the video coder (730), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0051] The output of all the aforementioned functional units may be entropy coded in an entropy coder (745) that converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0052] The transmitter (740) may buffer the encoded video sequence created by the entropy coder (745) and prepare it for transmission over a communication channel (760), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (740) may merge the encoded video data from the video coder (730) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).

[0053] A controller (750) may manage the operation of the encoder (503). During encoding, the controller (750) may assign each encoded picture a particular encoding picture type, which may affect the encoding technique that may be applied to the respective picture. For example, pictures are often assigned as one of the following frame types:

[0054] An Intra Picture (I-Picture) is one that can be coded and decoded without using other frames in the sequence as a source of prediction. Some video codecs allow different types of Intra Pictures, such as Independent Decoder Refresh Pictures. Those skilled in the art are aware of these variants of I-Pictures and their respective uses and characteristics.

[0055] A predictive picture (P picture) may be one that can be encoded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict sample values ​​for each block.

[0056] A Bi-directionally Predictive Picture (B-picture) may be encoded and decoded using intra- or inter-prediction that uses up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a Multiple Predictive Picture may use more than two reference pictures and associated metadata to reconstruct a single block.

[0057] A source picture is usually spatially subdivided into several sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. Blocks are predictively coded with reference to other (already coded) blocks, determined by the coding assignment applied to the respective picture of the blocks. For example, blocks of an I-picture may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be predictively coded by spatial prediction or by temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded by spatial prediction or by temporal prediction with reference to one or two previously coded reference pictures.

[0058] The video coder (503) may perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec. H.265. In its operations, the video coder (503) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.

[0059] In one embodiment, the transmitter (740) may transmit additional data along with the encoded video. The video coder (730) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, redundant pictures or slices, supplementary enhancement information (SEI) messages, visual usability information (VUI) parameter set fragments, and other forms of redundant data.

[0060] In an embodiment, the line index of the closest reference line may be 0. The closest reference line may be called the zero reference line, and the other lines may be called non-zero reference lines. The maximum reference line number that is reported is denoted as N.

[0061] In an embodiment, for non-zero reference lines, the intra mode index may be signaled from a mode list that is a subset of the zero reference line MPM list, i.e., a secondary MPM list. Thus, modes not included in the zero reference line MPM list are not used for non-zero reference lines, and the reference line index may be signaled before the intra prediction mode.

[0062] In one embodiment, planar and DC modes in the zero reference line MPM list are excluded from the non-zero reference line mode list, and all other modes in the zero reference line MPM list are used for the non-zero reference lines.

[0063] In another embodiment, the mode list generation process for non-zero reference lines is the same as the zero reference line MPM list generation process, except that planar and DC modes are excluded from the mode list for non-zero reference lines.

[0064] In one embodiment, the size of the mode list for non-zero reference lines is four, while the size of the MPM list for zero reference lines is six.

[0065] In another embodiment, the size of the mode list for non-zero reference lines is three and the size of the MPM list for zero reference lines is six.

[0066] In another embodiment, reporting of the mode index of a non-zero reference line is the same as reporting of the MPM index of a zero reference line, except that five bins are used to report the MPM index of a zero reference line, whereas up to three bins are used to report the mode index of a non-zero reference line.

[0067] In another embodiment, reporting of the mode index of a non-zero reference line is the same as reporting of the MPM index of a zero reference line, except that five bins are used to report the MPM index of a zero reference line, whereas up to two bins are used to report the mode index of a non-zero reference line.

[0068] In another embodiment, planar modes, DC modes, and modes with MPM index equal to 5 in the MPM list of the zero reference line are excluded for non-zero reference lines.

[0069] Figure 8 is a flowchart of an example process 800 for signaling an intra-prediction mode used to encode a current block in a coded video bitstream. In some implementations, one or more process blocks of Figure 8 may be performed by the decoder 510. In some implementations, one or more process blocks of Figure 8 may be performed by another device, such as the encoder 503, or a group of devices separate from or including the decoder 510.

[0070] 8, the process 800 may include generating a first most probable mode (MPM) list corresponding to a zero reference line of a current block (block 810). The first MPM list may include a first plurality of intra-prediction modes.

[0071] 8, the process 800 may include generating a second MPM list corresponding to one or more non-zero reference lines of the current block (block 820). The second MPM list may include a second plurality of intra-prediction modes, which may be a subset of the first plurality of intra-prediction modes.

[0072] As further shown in FIG. 8, process 800 may include notifying a reference line index indicating a reference line to be used to encode the current block among the zero reference line and one or more non-zero reference lines (block 830).

[0073] As further shown in FIG. 8, the process 800 may include determining whether the reference line index indicates that the reference line is a zero reference line (block 840). Based on the reference line index indicating that the reference line is a zero reference line, the process 800 may then signal an intra-mode index indicating an intra-prediction mode from within a first MPM list (block 850). Based on the reference line index indicating that the reference line is one of one or more non-zero reference lines, the process 800 may then signal an intra-mode index indicating an intra-prediction mode from within a second MPM list (block 850).

[0074] In one embodiment, the zero reference line may include the closest reference line among multiple reference lines of the current block.

[0075] In one embodiment, the planar intra prediction modes may be excluded from the second MPM list.

[0076] In one embodiment, the DC intra prediction mode may be excluded from the second MPM list.

[0077] In one embodiment, the planar intra prediction modes and the DC intra prediction modes may be excluded from the second MPM list.

[0078] In one embodiment, the second MPM list may be smaller than the first MPM list.

[0079] In one embodiment, the number of the first plurality of intra-prediction modes may be six, and the number of the second plurality of intra-prediction modes may be four.

[0080] In one embodiment, the intra-mode index is signaled using a first number of bins based on the reference line index indicating that the reference line is a zero reference line, and the intra-mode index is signaled using a second number of bins, less than the first number of bins, based on the reference line index indicating that the reference line is one of one or more non-zero reference lines.

[0081] In one embodiment, the first number of bins may be five and the second number of bins may be three.

[0082] In one embodiment, the reference line index may be signaled before the intra-mode index.

[0083] Although Figure 8 illustrates example blocks of process 800, in some implementations, process 800 may include additional blocks, fewer blocks, different blocks, or blocks in a different arrangement than those illustrated in Figure 8. Additionally or alternatively, two or more of the blocks of process 800 may be performed in parallel.

[0084] Additionally, the proposed methods may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium to perform one or more of the proposed methods.

[0085] The techniques described above can be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, FIG. 9 illustrates a computer system 1200 suitable for implementing certain embodiments of the disclosed subject matter.

[0086] The computer software may be coded using any suitable machine code or computer language that may be subjected to mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that may be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., directly, or through interpretation, microcode execution.

[0087] 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, and the like.

[0088] 9 for computer system 1200 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software for implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 1200.

[0089] The computer system 1200 may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, such as, for example, tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), olfactory input (not shown), etc. The human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (voice, music, environmental sounds, etc.), images (scanned images, photographic images obtained from a still image camera, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).

[0090] The input human interface devices may include one or more of a keyboard 901, a mouse 902, a trackpad 903, a touch screen 910, a data glove 1204, a joystick 905, a microphone 906, a scanner 907, and a camera 908 (only one of each shown).

[0091] The computer system 1200 may also include certain human interface output devices. Such human 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 interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen 910, data gloves 1204, or joystick 905, although some haptic feedback devices do not function as input devices), audio output devices (such as speakers 909, headphones (not shown)), visual output devices (such as cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, organic light emitting diode (OLED) screens, each with or without touch screen input capability and each with or without haptic feedback capability, some of which may output two-dimensional visual output or three or more dimensional output, such as by means of stereographic output, virtual reality glasses (not shown), screens 910 including holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0092] The computer system 1200 may also include human accessible storage devices and their associated media, such as a CD / DVD ROM / RW 920 with optical media 921 such as CDs / DVDs, thumb drives 922, removable hard drives or solid state drives 923, legacy magnetic media such as tapes or floppy disks (not shown), specialized ROM / ASIC / PLD based devices (not shown) such as security dongles, etc.

[0093] Those skilled in the art will also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transitory signals.

[0094] The computer system 1200 may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, optical. Furthermore, the networks may be local, wide area, metropolitan, vehicular, and industrial, real-time, delay-tolerant networks, and the like. Examples of networks include local area networks such as Ethernet, wireless LAN, and the like, cellular networks including Global System for Mobile Communications (GSM), third generation (3G), fourth generation (4G), fifth generation (5G), Long-Term Evolution (LTE), and the like, TV wired or wireless wide area digital networks including cable television, satellite television, and terrestrial broadcast television, vehicular and industrial networks including CANBus, and the like. Particular networks typically require an external network interface adapter that connects to a particular general-purpose data port or peripheral bus (949) (e.g., a Universal Serial Bus (USB) port of computer system 1200, etc.), or are otherwise typically integrated within the core of computer system 1200 by attaching to a system bus described below (e.g., an Ethernet interface for a PC computer system, or a cellular network interface for a smartphone computer system). Using any of these networks, computer system 1200 can communicate with other entities. Such communications may be unidirectional receive only (e.g., broadcast television), unidirectional transmit only (e.g., from a CANbus to a particular CANbus device), or bidirectional, e.g., to another computer system using a local area or wide area digital network. As noted above, each of these networks and network interfaces may use particular protocols and protocol stacks.

[0095] The aforementioned human interface devices, human accessible storage, and network interfaces may be attached to the core 940 of the computer system 1200 .

[0096] The cores 940 may include one or more central processing units (CPUs) 941, graphics processing units (GPUs) 942, specialized programmable processing units in the form of Field Programmable Gate Areas (FPGAs) 943, hardware accelerators for specific tasks 944, etc. These devices are connected via a system bus 1248 along with read only memory (ROM) 945, random access memory (RAM) 946, and internal mass storage devices 947 such as internal, non-user accessible hard drives, solid state drives (SSDs), etc. In some computer systems, the system bus 1248 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 1248 or via a peripheral bus 949. Peripheral bus architectures include Peripheral Component Interconnect (PCI), USB, etc.

[0097] The CPU 941, GPU 942, FPGA 943, and accelerator 944 may execute certain instructions that may combine to constitute the aforementioned computer code. The computer code may be stored in ROM 945 or RAM 946. Temporary data may also be stored in RAM 946, while persistent data may be stored, for example, in internal mass storage device 947. Rapid storage and retrieval from any memory device may be made possible through the use of a cache memory that may be closely associated with one or more of the CPU 941, GPU 942, mass storage device 947, ROM 945, RAM 946, etc.

[0098] The computer-readable medium can bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0099] By way of example and not limitation, computer system 1200 having the architecture, and in particular core 940, may provide functionality as a result of a processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with a user-accessible mass storage device as introduced above, as well as specific storage of core 940 of a non-transitory nature, such as mass storage device 947 internal to the core or ROM 945. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by core 940. Computer-readable media may include one or more memory devices or chips according to specific needs. The software may cause core 940, and in particular the processor therein (including CPU, GPU, FPGA, etc.) to execute specific processes or specific parts of specific processes described herein, including the definition of data structures stored in RAM 946 and the modification of such data structures, according to the software-defined processes. Additionally or alternatively, the computer system may provide functionality as a result of logic implemented in hardware or otherwise embedded in circuitry (e.g., accelerator 944) that may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may include logic, where appropriate, and vice versa. References to computer-readable media may include, where appropriate, circuitry (such as an integrated circuit (IC)) that stores software to be executed, circuitry in which logic to be executed is embedded, or both. The present disclosure includes any appropriate combination of hardware and software.

[0100] While this disclosure has described several exemplary embodiments, there are alterations, alterations, permutations, and various equivalents that fall within the scope of this disclosure. Thus, it will be appreciated that those skilled in the art can devise numerous systems and methods that embody the principles of the present disclosure and are therefore within its spirit and scope, even if not explicitly shown or described herein. [Explanation of symbols]

[0101] 300 Communication Systems 410 Terminal 420 Terminal 430 Terminal 440 Terminal 450 Network 501 Video source, camera 502 Uncompressed Video Sample Stream 503 Video encoder, video source, 504 Video Bitstream 505 Streaming Server 506 Streaming Client 507 Copy, video bitstream 508 Streaming Client 509 Copy, video bitstream 510 Video Decoder 511 Video Sample Stream 512 Display, rendering device 513 Capture Subsystem 610 Receiver 612 Channels 615 Buffer memory, buffer 620 Parser 621 Symbols 651 Scaler / Descaler Unit 652 Intra prediction unit, intra picture prediction unit 653 Motion Compensation Prediction Unit 655 Aggregator 656 Loop filter, Loop filter unit, Reference picture memory, Reference picture 657 Reference Picture Memory, Reference Picture Buffer 730 Source Coder, Video Coder 732 Encoding Engine 733 Local Decoder, Local Video Decoder 734 Reference Picture Memory, Reference Picture Cache 735 Predictor 740 Transmitter 743 coded video sequence 745 Entropy Coder 750 Controller 760 Communication Channel 800 processes 901 Keyboard 902 Mouse 903 Trackpad 905 Joystick 906 Mike 907 Scanner 908 Camera 909 Speaker 910 Touchscreen 921 Optical media 922 Thumb Drive 923 Solid State Drive 940 cores 941 Central Processing Unit (CPU) 942 Graphics Processing Unit (GPU) 943 Field Programmable Gate Area (FPGA) 944 Hardware Accelerator 945 Read-Only Memory (ROM) 946 Random Access Memory (RAM) 947 Mass storage device 949 Surrounding Bus 1200 Computer Systems 1204 Data Gloves 1248 System Bus

Claims

1. 1. A method for video decoding performed by a decoder, comprising: generating a first Most Probable Mode List (MPM list) corresponding to a zero reference line of a current block, the first MPM list including a first plurality of intra-prediction modes; generating a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list consisting of a second plurality of intra prediction modes that is a subset of the first plurality of intra prediction modes; decoding, from the coded video bitstream, a reference line index indicating a reference line to be used for coding the current block among the zero reference line and the one or more non-zero reference lines; decoding, from the encoded video bitstream, an intra-mode index indicating an intra-prediction mode used to code the current block; decoding the current block from the encoded video bitstream using video samples in a reference line indicated by the reference line index and an intra prediction mode indicated by the intra mode index; Including, the intra mode index indicates the intra prediction mode in the first MPM list based on the reference line index indicating that the reference line is the zero reference line; or the intra mode index indicates the intra prediction mode in the second MPM list based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines. method.

2. The method of claim 1 , wherein the zero reference line comprises a closest reference line of a plurality of reference lines of the current block.

3. The method of claim 1 or 2, wherein planar intra-prediction modes are excluded from the second MPM list.

4. The method of claim 1 or 2, wherein a DC intra-prediction mode is excluded from the second MPM list.

5. The method of claim 1 or 2, wherein planar and DC intra-prediction modes are excluded from the second MPM list.

6. 3. The method of claim 1 or 2, wherein the second MPM list is smaller than the first MPM list, and planar intra-prediction modes, DC intra-prediction modes, and modes with an MPM index equal to 5 are excluded from the second MPM list.

7. The method of claim 1 , wherein the number of the first plurality of intra-prediction modes is six.

8. when the reference line index indicates that the reference line is the zero reference line, the intra-mode index is encoded in the coded video bitstream using a first number of bins; when the reference line index indicates that the reference line is the one of the one or more non-zero reference lines, the intra mode index is coded within the coded video bitstream using a second number of bins that is less than the first number of bins.

8. The method according to any one of claims 1 to 7.

9. The method of claim 8 , wherein the first number of bins is five and the second number of bins is three.

10. The method of claim 1 , wherein the reference line index is coded before the intra-mode index in the coded video bitstream.

11. A decoder comprising: at least one memory storing a program; at least one processor coupled to said memory; Including, The program is configured to cause the at least one processor to execute a method according to any one of claims 1 to 10. decoder.

12. A computer program product causing a computer to carry out the method according to any one of claims 1 to 10.

13. A method performed by an encoder, comprising: generating a first Most Probable Mode List (MPM list) corresponding to a zero reference line of a current block, the first MPM list including a first plurality of intra-prediction modes; generating a second MPM list corresponding to one or more non-zero reference lines of the current block, the second MPM list consisting of a second plurality of intra prediction modes that is a subset of the first plurality of intra prediction modes; encoding a reference line index, indicating a reference line to be used for coding the current block among the zero reference line and the one or more non-zero reference lines, into an encoded video bitstream; encoding an intra-mode index into the encoded video bitstream, the intra-mode index indicating an intra-prediction mode used to code the current block; encoding the current block into the encoded video bitstream using video samples in a reference line indicated by the reference line index and an intra prediction mode indicated by the intra mode index; storing the encoded video bitstream on a computer readable medium; Including, The intra mode index indicates the intra prediction mode in a first MPM list based on the reference line index indicating that the reference line is the zero reference line, or the intra mode index indicates the intra prediction mode in the second MPM list based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines. method.

14. A method performed by an encoder, comprising: generating an encoded video bitstream, the encoded video bitstream comprising: The encoded data of the current block; a reference line index indicating a reference line to be used for coding the current block among a zero reference line and one or more non-zero reference lines; an intra-mode index indicating an intra-prediction mode to be used to code the current block; transmitting the encoded video bitstream; Including, a first most probable mode list (MPM list) corresponding to the zero reference line, the first MPM list including a first plurality of intra-prediction modes; a second MPM list corresponds to the one or more non-zero reference lines, the second MPM list being comprised of a second plurality of intra prediction modes that is a subset of the first plurality of intra prediction modes; based on the reference line index indicating that the reference line is the zero reference line, the intra mode index indicates the intra prediction mode in the first MPM list, or based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines, the intra mode index indicates the intra prediction mode in the second MPM list. method.

15. A method executed by one or more processors, comprising: processing an encoded video bitstream according to rules; The encoded video bitstream comprises: The encoded data of the current block; a reference line index indicating a reference line to be used for coding the current block among a zero reference line and one or more non-zero reference lines; an intra-mode index indicating an intra-prediction mode used to code the current block; The rule is: a first most probable mode list (MPM list) corresponding to the zero reference line includes a first plurality of intra-prediction modes; and a second MPM list corresponding to the one or more non-zero reference lines is comprised of a second plurality of intra prediction modes that is a subset of the first plurality of intra prediction modes; The rule further comprises: the intra mode index indicates the intra prediction mode in the first MPM list based on the reference line index indicating that the reference line is the zero reference line; and the intra mode index indicates the intra prediction mode in the second MPM list based on the reference line index indicating that the reference line is one of the one or more non-zero reference lines. method.

16. 1. An encoded video bitstream comprising: The encoded data of the current block; a reference line index indicating a reference line to be used for coding the current block among a zero reference line and one or more non-zero reference lines; an intra mode index indicating an intra prediction mode used to code the current block; Including, one or more processors for decoding the reference line index and the intra-mode index from the encoded video bitstream; When the reference line index indicates that the reference line is the zero reference line, the intra mode index indicates an intra prediction mode in a first most probable mode list (MPM list) corresponding to the zero reference line of the current block, the first MPM list including a first plurality of intra prediction modes; When the reference line index indicates that the reference line is one of the one or more non-zero reference lines, the intra mode index indicates an intra prediction mode in a second MPM list corresponding to the one or more non-zero reference lines of the current block, the second MPM list consisting of a second plurality of intra prediction modes that is a subset of the first plurality of intra prediction modes; the one or more processors decode the current block from the encoded data of the current block using video samples in a reference line indicated by the reference line index and the intra prediction mode indicated by the intra mode index. Encoded video bitstream.