Video encoding and decoding method and related device
By using non-zero reference rows to determine the intra prediction mode of adjacent blocks of the current block and generate an MPM list including six angle patterns, the problem of generating more angle patterns in the prior art is solved, and the efficiency and quality of video encoding is improved.
Patent Information
- Application Number
- CN202211116274.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-12-28
- Filing Date
- 2019-08-29
- Publication Date
- 2025-08-22
- Estimated Expiration
- 2039-08-29
AI Technical Summary
In efficient video encoding, it is difficult for the prior art to generate a list of most likely modes (MPM lists) including more angle modes, especially when only two adjacent blocks can be accessed, it is impossible to effectively use non-zero reference rows for intra prediction.
It is determined whether the intra prediction modes of the first and second adjacent blocks of the current block are angle modes by using non-zero reference rows, and a list of MPMs including six candidate modes, wherein all of these modes are angle modes, ensuring that the corresponding mode is included when determining that the intra prediction mode of the adjacent block is angle mode.
It realizes the generation of more angle mode MPM lists under non-zero reference row conditions, which improves the efficiency and quality of video encoding.
Smart Images

Figure CN115499652B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to U.S. Provisional Application No. 62 / 731,776, filed on September 14, 2018, and U.S. Application No. 16 / 234,993, filed on December 28, 2018, the disclosures of which are incorporated herein by reference in their entireties. Technical Field
[0003] The present disclosure relates to video processing technology, and in particular to a video encoding and decoding method and related devices. Background Art
[0004] exist Figure 5 FIGURE 5 shows the intra prediction modes used in High Efficiency Video Coding (HEVC). In HEVC, there are a total of 35 intra prediction modes, of which mode 10 is a horizontal mode (501), mode 26 is a vertical mode (502), and modes 2, 18, and 34 are diagonal modes (503). The intra prediction modes are signaled by three most probable modes (MPMs) and 32 remaining modes.
[0005] To encode intra mode, a most probable mode (MPM) list of size 3 is constructed based on the intra modes of neighboring blocks. This MPM list will be referred to as the MPM list or the main 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.
[0006] The process of generating an MPM list is shown below. Here, leftIntraDir indicates the mode in the left block, and aboveIntraDir indicates the mode in the upper block. If the left block or upper block is currently unavailable, leftIntraDir or aboveIntraDir is set to the index DC_IDX. In addition, the variables "offset" and "mod" are constant values, which are set to 29 and 32 respectively.
[0007] ●If(leftIntraDir==aboveIntraDir&&leftIntraDir>DC_IDX)
[0008] MPM[0] = leftIntraDir;
[0009] ○MPM[1]=((leftIntraDir+offset)%mod)+2;
[0010] ○MPM[2]=((leftIntraDir-1)%mod)+2;
[0011] ●Else if(leftIntraDir==aboveIntraDir)
[0012] ○MPM[0]=PLANAR_IDX;
[0013] ○MPM[1]=DC_IDX;
[0014] ○MPM[2]=VER_IDX;
[0015] ●Else if(leftIntraDir!=aboveIntraDir)
[0016] MPM[0] = leftIntraDir;
[0017] ○MPM[1]=aboveIntraDir;
[0018] ○If(leftIntraDir>0&&aboveIntraDir>0)
[0019] ■MPM[2]=PLANAR_IDX;
[0020] ○Else
[0021] ■MPM[2]=(leftIntraDir+aboveIntraDir)<2? VER_IDX:DC_IDX;
[0022] When only two adjacent patterns can be accessed, how to generate an MPM list including more angle patterns for non-zero rows is a technical problem that needs to be solved. Summary of the Invention
[0023] According to at least one embodiment, a video decoding method, the method being executed by at least one processor for controlling multi-line intra prediction using a non-zero reference line, the method comprising: determining whether the intra prediction mode of a first neighboring block of a current block is an angle mode. The method may further comprise: determining whether the intra prediction mode of a second neighboring block of the current block is an angle mode. The method may further comprise: generating an MPM list comprising six candidate modes for intra prediction of the current block, wherein the six candidate modes are all angle modes. The MPM list may be generated so that it includes the intra prediction mode of the first neighboring block when the intra prediction mode of the first neighboring block is determined to be an angle mode, and includes the intra prediction mode of the second neighboring block when the intra prediction mode of the second neighboring block is determined to be an angle mode.
[0024] According to at least one embodiment, a device for controlling multi-line intra prediction using a non-zero reference line to decode a video sequence may be provided. The device may include: at least one memory configured to store computer program code; and at least one processor configured to access the at least one memory and operate according to the computer program code. The computer program code may include a first determination code configured to cause the at least one processor to determine whether the intra prediction mode of the first neighboring block of the current block is an angle mode. The computer program code may also include a second determination code configured to cause the at least one processor to determine whether the intra prediction mode of the second neighboring block of the current block is an angle mode. The computer program code may also include a generation code configured 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, wherein the six candidate modes are all angle modes. The generation code can also be configured to cause the at least one processor to generate an MPM list, so that the MPM list includes the intra-frame prediction mode of the first neighboring block when it is determined that the intra-frame prediction mode of the first neighboring block is the angle mode, and includes the intra-frame prediction mode of the second neighboring block when it is determined that the intra-frame prediction mode of the second neighboring block is the angle mode.
[0025] According to at least one embodiment, a non-transitory computer-readable storage medium storing instructions, the instructions may cause at least one processor to determine whether the intra-frame prediction mode of a first neighboring block of a current block is an angle mode. The instructions may also cause the at least one processor to determine whether the intra-frame prediction mode of a second neighboring block of the current block is an angle mode. The instructions may also cause the at least one processor to generate an MPM list, the MPM list including six candidate modes for intra-frame prediction of the current block, wherein the six candidate modes are all angle modes. The instructions may cause the at least one processor to generate an MPM list, such that the MPM list includes the intra-frame prediction mode of the first neighboring block when it is determined that the intra-frame prediction mode of the first neighboring block is an angle mode, and includes the intra-frame prediction mode of the second neighboring block when it is determined that the intra-frame prediction mode of the second neighboring block is an angle mode.
[0026] It can be seen that when using a non-zero reference row to control multi-line intra-frame prediction, it is determined whether the intra-frame prediction mode of the first neighboring block of the current block is an angle mode; it is determined whether the intra-frame prediction mode of the second neighboring block of the current block is an angle mode; and a most probable mode (MPM) list is generated, the MPM list including multiple candidate modes for intra-frame prediction of the current block, wherein the multiple candidate modes are all angle modes, and when it is determined that the intra-frame prediction mode of the first neighboring block is an angle mode, the MPM list includes the intra-frame prediction mode of the first neighboring block, and when it is determined that the intra-frame prediction mode of the second neighboring block is an angle mode, the MPM list includes the intra-frame prediction mode of the second neighboring block. This achieves the generation of an MPM list including more angle modes for non-zero rows. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] Additional features, nature, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, in which:
[0028] Figure 1 is a schematic diagram of a simplified block diagram of a communication system according to an embodiment;
[0029] Figure 2 is a schematic diagram of a simplified block diagram of a streaming system according to an embodiment;
[0030] Figure 3 is a schematic diagram of a simplified block diagram of a video decoder and display according to an embodiment;
[0031] Figure 4 is a schematic diagram of a simplified block diagram of a video encoder and a video source according to an embodiment;
[0032] Figure 5 It is a diagram of intra prediction modes in HEVC;
[0033] Figure 6 is a diagram of intra prediction modes in Versatile Video Coding Draft 2;
[0034] Figure 7 is a diagram showing an example of reference lines used for multi-line intra prediction;
[0035] Figure 8 is a diagram showing an example of a top block and a left block relative to a current block;
[0036] Figure 9 is a diagram of a computer system suitable for implementing embodiments. DETAILED DESCRIPTION
[0037] Figure 1A simplified block diagram of a communication system (100) according to an embodiment of the present disclosure is shown. The system (100) may include at least two terminals (110 to 120) interconnected via a network (150). For one-way data transmission, a first terminal (110) may encode video data at a local location for transmission to another terminal (120) via the network (150). A second terminal (120) may receive the encoded video data from the other terminal from the network (150), decode the encoded data, and display the recovered video data. One-way data transmission may be common in media service applications, etc.
[0038] Figure 1 A second pair of terminals (130, 140) is shown that are provided to support bidirectional transmission of encoded video, such as might occur during a video conference. For bidirectional data transmission, each terminal (130, 140) can encode video data captured at a local location for transmission to the other terminal via a network (150). Each terminal (130, 140) can also receive encoded video data transmitted by the other terminal, can decode the encoded data, and can display the recovered video data at a local display device.
[0039] exist Figure 1 In the embodiment of the present invention, the terminals (110 to 140) can be, for example, servers, personal computers, and smart phones and / or any other type of terminals. For example, the terminals (110 to 140) can be laptop computers, tablet computers, media players and / or dedicated video conferencing equipment. The network (150) represents any number of networks that transmit encoded video data between the terminals (110 to 140), including, for example, wired and / or wireless communication networks. The communication network (150) can exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunication networks, local area networks, wide area networks and / or the Internet. For the purposes of this discussion, unless otherwise specified below, the architecture and topology of the network (150) may be unimportant to the operation of the present disclosure.
[0040] As examples of applications of the disclosed subject matter, Figure 2 The placement of the video encoder and decoder in a streaming environment is shown. The disclosed subject matter can be used with other video-enabled applications, including, for example, video conferencing, digital TV, storing compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0041] like Figure 2As shown, the streaming system (200) may include a capture subsystem (213) including a video source (201) and an encoder (203). The streaming system (200) may also include at least one streaming server (205) and / or at least one streaming client (206).
[0042] A video source (201) can create, for example, an uncompressed video sample stream (202). The video source (201) can be, for example, a digital camera. The sample stream (202) is depicted as a thick line to emphasize the high amount of data compared to an encoded video bitstream, which can be processed by an encoder (203) coupled to the camera (201). The encoder (203) can include hardware, software, or a combination thereof to implement or implement various aspects of the disclosed subject matter as described in more detail below. The encoder (203) can also generate an encoded video bitstream (204). The encoded video bitstream (204) is depicted as a thin line to emphasize the lower amount of data compared to the uncompressed video sample stream (202), which can be stored on a streaming server (205) for future use. One or more streaming clients (206) can access the streaming server (205) to retrieve a video bitstream (209) that can be a copy of the encoded video bitstream (204).
[0043] The streaming client (206) may include a video decoder (210) and a display (212). The video decoder (210) may, for example, decode an incoming video bitstream (209), which is a copy of an encoded video bitstream (204), and create an outgoing video sample stream (211) that may be presented on a display (212) or another presentation device (not depicted). In some streaming systems, the video bitstreams (204, 209) may be encoded according to certain video coding / compression standards. Examples of such standards include, but are not limited to, ITU-T Recommendation H.265. A video coding standard under development is informally referred to as the Versatile Video Coding (VVC) video coding standard. Implementations of the present disclosure may be used in the context of VVC.
[0044] Figure 3 An example functional block diagram of a video decoder (210) attached to a display (212) is shown in accordance with an embodiment of the present disclosure.
[0045] 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-frame 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 circuits. The video decoder (210) may also be partially or completely implemented in software running on one or more CPUs with associated memory.
[0046] In this and other embodiments, a receiver (310) can receive one or more encoded video sequences to be decoded by a decoder (210) - one encoded video sequence at a time, wherein the decoding of each encoded video sequence is independent of the decoding of the other encoded video sequences. The encoded video sequence can be received from a channel (312), which can be a hardware / software link to a storage device storing the encoded video data. The receiver (310) can receive the encoded video data as well as other data, such as encoded audio data and / or auxiliary data streams that can be forwarded to their respective consuming entities (not depicted). The receiver (310) can separate the encoded video sequence from the other data. To cope with network jitter, a buffer memory (315) can be coupled between the receiver (310) and an entropy decoder / parser (320) (hereinafter referred to as "parser"). When the receiver (310) receives data from a store / forward device with sufficient bandwidth and controllability or from an isochronous network, the buffer (315) can be omitted or the buffer (315) can be smaller. In order to make the best possible use of a packet network such as the Internet, a buffer (315) may be required, which may be relatively large and may have an adaptive size.
[0047] The video decoder (210) may include a parser (320) to reconstruct symbols (321) from an entropy-encoded video sequence. The types of symbols include, for example, information for managing the operation of the decoder (210) and possibly for controlling functions such as Figure 2The control information for the rendering device may be coupled to a display (212) of a decoder. The control information for the rendering device may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not depicted). The parser (320) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may be performed according 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 sensitivity, etc. The parser (320) may extract a subgroup parameter set for at least one subgroup of pixel subgroups in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroup may include: a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (320) may also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0048] The parser (320) may perform entropy decoding / parsing operations on the video sequence received from the buffer (315) to create symbols (321).
[0049] Depending on the type of coded video picture or portion of a coded video picture (e.g., inter-frame and intra-frame pictures, inter-frame blocks and intra-frame blocks) and other factors, the reconstruction of the symbol (321) can involve multiple different units. Which units are involved and how they are involved can be controlled by subgroup control information parsed from the coded video sequence by the parser (320). For the sake of brevity, the flow of such subgroup control information between the parser (320) and the multiple units described below is not depicted.
[0050] In addition to the functional blocks already mentioned, the decoder (210) can be conceptually subdivided into several functional units as described below. In actual implementations operating under commercial constraints, many of these units interact closely with each other and may be at least partially integrated with each other. However, for the purposes of describing the disclosed subject matter, the conceptual subdivision into the following functional units is appropriate.
[0051] One unit may be a scaler / inverse transform unit (351). The scaler / inverse transform unit (351) may receive quantized transform coefficients as symbols (321) from the parser (320) along with control information including which transform mode to use, block size, quantization factor, quantization scaling matrix, etc. The scaler / inverse transform unit (351) may output a block comprising sample values that may be input into an aggregator (355).
[0052] In some cases, the output samples of the scaler / inverse transform unit (351) may belong to an intra-coded block; that is, a block that does not use predictive information from a previously reconstructed picture, but may use predictive information from a previously reconstructed portion of the current picture. Such predictive information may be provided by the intra-picture prediction unit (352). In some cases, the intra-picture prediction unit (352) uses surrounding reconstructed information taken 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 the prediction information already generated by the intra-prediction unit 352 to the output sample information provided by the scaler / inverse transform unit 351 on a per-sample basis.
[0053] In other cases, the output samples of the scaler / inverse transform unit (351) may belong to a block that has been inter-coded and possibly motion compensated. In such a case, the motion compensated prediction unit (353) may access the reference picture buffer (357) to obtain samples for prediction. After motion compensation of the obtained samples according to the symbols 321 belonging to the block, these samples may be added to the output of the scaler / inverse transform unit 351 (in this case referred to as residual samples or residual signal) by the aggregator 355 to generate output sample information. The address within the reference picture buffer (357) from which the motion compensated prediction unit (353) obtains the predicted samples may be controlled by a motion vector. The motion vector may be provided to the motion compensated prediction unit (353) in the form of a symbol (321) that may have, for example, x, y, and reference picture components. Motion compensation may also include interpolation of sample values obtained from the reference picture buffer (357) when using sub-sample accurate motion vectors, motion vector prediction mechanisms, etc.
[0054] The output samples of the aggregator (355) may be subjected to various loop filtering techniques in a loop filter unit (356). The video compression techniques may include in-loop filtering techniques controlled by parameters included in the coded video bitstream and available to the loop filter unit (356) as symbols (321) from the parser (320), but the video compression techniques may also be responsive to meta-information obtained during decoding of a previous (in decoding order) portion of a coded picture or coded video sequence, and to previously reconstructed and loop filtered sample values.
[0055] The output of the loop filter unit (356) may be a sample stream that may be output to a presentation device such as a display (212) and stored in a reference picture buffer (357) for use in future inter-picture prediction.
[0056] Certain coded pictures, once fully reconstructed, can be used as reference pictures for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by a parser (320)), the current reference picture stored in the current picture memory (358) can become part of the reference picture buffer (357), and a new current picture memory can be reallocated before starting to reconstruct a subsequent coded picture.
[0057] The video decoder (210) may perform decoding operations according to a predetermined video compression technique that may be documented in a standard such as ITU-T Recommendation H.265. In the sense that the encoded video sequence follows the syntax of the video compression technique or standard, the encoded video sequence may conform to the syntax specified by the video compression technique or standard being used, as specified in the video compression technique document or standard and, in particular, in a profile document therein. Furthermore, to conform to some video compression techniques or standards, the complexity of the encoded video sequence may be within a range defined by a hierarchy of the video compression technique or standard. In some cases, the hierarchy limits a maximum picture size, a maximum frame rate, a maximum reconstruction sample rate (measured in, for example, megasamples per second), a maximum reference picture size, etc. In some cases, the limits set by the hierarchy may be further defined by a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the encoded video sequence.
[0058] In an embodiment, a receiver (310) 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 (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, and the like.
[0059] Figure 4 An example functional block diagram of a video encoder (203) associated with a video source (201) is shown according to an embodiment of the present disclosure.
[0060] 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).
[0061] The encoder (203) may receive video samples from a video source (201) (which is not part of the encoder) that may capture video images to be encoded by the encoder (203).
[0062] The video source (201) can provide a source video sequence to be encoded by the encoder (203) in the form of a digital video sample stream, which can 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., YCrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (201) can be a storage device that stores previously prepared videos. In a video conferencing system, the video source (203) can be a camera that captures local image information as a video sequence. The video data can be provided as multiple individual pictures that are given motion when viewed sequentially. The pictures themselves can be organized as a spatial pixel array, where each pixel can include one or more samples, depending on the sampling structure, color space, etc. used. The relationship between pixels and samples can be easily understood by those skilled in the art. The following description focuses on samples.
[0063] Depending on the embodiment, the encoder (203) may encode and compress the pictures of the source video sequence into an encoded video sequence (443) in real time or under any other time constraints required by the application. Implementing an appropriate encoding speed may be a function of the controller (450). The controller (450) may also control other functional units described below and may be functionally coupled to these units. The coupling is not depicted for the sake of brevity. The parameters set by the controller (450) may include rate control related parameters (picture skipping, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art may readily identify other functions of the controller (450) that may belong to the video encoder (203) optimized for a particular system design.
[0064] Some video encoders operate in a manner readily recognizable to those skilled in the art as a "coding loop." As a simplified description, the coding loop can include the encoding portion of a source encoder (430) (responsible for creating symbols based on the input picture to be encoded and the reference picture) and a (local) decoder (433) embedded in the encoder (203) that reconstructs the symbols to create sample data that the (remote) decoder will also create, when the compression between the symbols and the encoded video bitstream is lossless in certain video compression techniques. This reconstructed sample stream can be input to a reference picture memory (434). Because decoding the symbol stream produces bit-accurate results that are independent of the decoder's location (local or remote), the reference picture memory contents are also bit-accurate between the local encoder and the remote encoder. In other words, the reference picture samples "seen" by the prediction portion of the encoder are exactly the same sample values that the decoder will "see" when using prediction during decoding. This basic principle of reference picture synchronization (and the drift that results when synchronization cannot be maintained, for example due to channel errors) is known to those skilled in the art.
[0065] The operation of the "local" decoder (433) can be combined with the Figure 3 The operation of the "remote" decoder (210) described in detail is essentially the same. However, since the symbols are available and the entropy encoder (445) and parser (320) can losslessly encode / decode the symbols into the encoded video sequence, the entropy decoding portion of the decoder (210), including the channel (312), receiver (310), buffer (315), and parser (320), may not need to be fully implemented in the local decoder (433).
[0066] At this point, it can be observed that any decoder technology other than parsing / entropy decoding present in the decoder may need to be present in substantially the same functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on decoder operation. Since encoder technology can be mutually inverse with the decoder technology already fully described, the description of encoder technology can be simplified. A more detailed description is provided below only where necessary.
[0067] As part of the operation of the source encoder (430), motion compensated predictive coding may be performed, which predictively encodes an input frame with reference to one or more previously encoded frames in the video sequence, designated as "reference frames." In this manner, the encoding engine (432) encodes the differences between pixel blocks of the input frame and pixel blocks of a reference frame that may be selected as a reference for prediction of the input frame.
[0068] The local video decoder (433) can decode the encoded video data of the frame that can be designated as the reference frame based on the symbols created by the source encoder (430). The operation of the encoding engine (432) can advantageously be lossy processing. When the encoded video data is in the video decoder ( Figure 4 When decoded at a remote location (not shown), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (433) replicates the decoding process that may be performed on the reference frames by the video decoder and may cause the reconstructed reference frames to be stored in the reference picture memory (434). In this way, the encoder (203) may locally store copies of the reconstructed reference frames that have common content (absent transmission errors) with the reconstructed reference frames that the remote video decoder will obtain.
[0069] The predictor (435) can perform a prediction search for the encoding engine (432). That is, for a new frame to be encoded, the predictor (435) can search the reference picture memory (434) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., that can be used as appropriate prediction references for the new picture. The predictor (435) can operate on a pixel block by pixel block basis to find an appropriate prediction reference. In some cases, the input picture can have prediction references extracted from multiple reference pictures stored in the reference picture memory (434), as determined by the search results obtained by the predictor (435).
[0070] The controller ( 450 ) may manage encoding operations of the video encoder ( 430 ), including, for example, setting parameters and subgroup parameters for encoding video data.
[0071] The outputs of all the above functional units may be entropy coded in an entropy encoder (445). The entropy encoder converts the symbols generated by the various functional units into a coded video sequence by losslessly compressing them according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.
[0072] The transmitter (440) can buffer the encoded video sequence created by the entropy encoder (445) in preparation for transmission via a communication channel (460), which can be a hardware / software link to a storage device where the encoded video data will be stored. The transmitter (440) can combine the encoded video data from the video encoder (430) with other data to be transmitted, such as encoded audio data and / or an auxiliary data stream (source not shown).
[0073] The controller (450) can manage the operation of the encoder (203). During encoding, the controller (450) can assign a specific coded picture type to each coded picture, which may affect the coding techniques that can be applied to the corresponding picture. For example, a picture can generally be assigned as an intra picture (I picture), a predictive picture (P picture), or a bidirectional predictive picture (B picture).
[0074] An intra picture (I picture) can be a picture that can be encoded and decoded without using any other frame in the sequence as a prediction source. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are aware of these variations of I pictures and their corresponding applications and features.
[0075] A predictive picture (P picture) may be a picture that may be encoded and decoded using intra prediction or inter prediction, which predicts sample values of each block using at most one motion vector and a reference index.
[0076] Bidirectional predictive pictures (B pictures) can be encoded and decoded using intra-frame prediction or inter-frame prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predictive pictures can use more than two reference pictures and associated metadata to reconstruct a single block.
[0077] A source picture may typically be spatially subdivided into a plurality of blocks of samples (e.g., blocks of 4×4, 8×8, 4×8, or 16×16 samples, respectively) and coded block by block. These blocks may be predictively coded with reference to other (already coded) blocks, which are determined by the coding allocation applied to the block's corresponding picture. For example, blocks of an I picture may be non-predictively coded or may be predictively coded (spatial prediction or intra prediction) with reference to already coded blocks of the same picture. Pixel blocks of a P picture may be non-predictively coded with reference to one previously coded reference picture via spatial prediction or via temporal prediction. Blocks of a B picture may be non-predictively coded with reference to one or two previously coded reference pictures via spatial prediction or via temporal prediction.
[0078] The video encoder (203) may perform encoding operations according to a predetermined video coding technique or standard, such as ITU-T Recommendation H.265. In operation of the video encoder (203), 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 by the video coding technique or standard used.
[0079] In an embodiment, the transmitter (440) may 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, Visual Usability Information (VUI) parameter set segments, etc.
[0080] Figure 6 This is a diagram of the intra prediction mode in VVC Draft 2.
[0081] In VVC draft 2, there are Figure 5 A total of 87 intra-frame prediction modes are shown, of which mode 18 (601) is a horizontal mode, mode 50 (602) is a 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).
[0082] In VVC draft 2, the size of the MPM list remains 3, and the MPM list generation process is the same as HEVC. However, the difference is that since there are 67 signaled modes in VVC draft 2, "offset" is changed to 61 and "mod" is changed to 64.
[0083] The following clause in VVC draft 2 describes the luma intra mode coding process, where IntraPredModeY[xPb][yPb] is derived:
[0084] 1. Set the adjacent positions (xNbA, yNbA) and (xNbB, yNbB) equal to (xPb-1, yPb) and (xPb, yPb-1), respectively.
[0085] 2. For X replaced by A or B, the variable candIntraPredModeX is obtained as follows:
[0086] - Invoke the block availability checking process specified in clause 6.4.X [Ed.(BB): Neighbouring blocks availability checking process tbd] with the position (xCurr, yCurr) set equal to (xPb, yPb) and the neighboring position (xNbY, yNbY) set equal to (xNbX, yNbX) as input, and the output assigned to availableX.
[0087] - Determine the candidate intra prediction mode candIntraPredModeX by the following steps:
[0088] - If one or more of the following conditions are true, then candIntraPredModeX is set equal to INTRA_DC.
[0089] -The variable availableX is equal to FALSE.
[0090] -CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA.
[0091] -X is equal to B and yPb-1 is less than ((yPb>>CtbLog2SizeY)< <CtbLog2SizeY)。
[0092] Otherwise, set candIntraPredModeX equal to IntraPredModeY[xNbX][yNbX].
[0093] 3. Determine candModeList[x] as follows, where x = 0...2:
[0094] - If candIntraPredModeB is equal to candIntraPredModeA, then the following processing applies:
[0095] If candIntraPredModeA is less than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC), then derive candModeList[x] as follows, where x = 0..2:
[0096] candModeList[0]=INTRA_PLANAR (8-1)
[0097] candModeList[1]=INTRA_DC (8-2)
[0098] candModeList[2]=INTRA_ANGULAR50 (8-3)
[0099] Otherwise, find candModeList[x] as follows, where x = 0..2:
[0100] candModeList[0]=candIntraPredModeA (8-4)
[0101] candModeList[1]=2+((candIntraPredModeA+61)%64) (8-5)
[0102] candModeList[2]=2+((candIntraPredModeA-1)%64) (8-6)
[0103] Otherwise (candIntraPredModeB is not equal to candIntraPredModeA), the following applies:
[0104] - Obtain candModeList[0] and candModeList[1] by following the steps below:
[0105] candModeList[0]=candIntraPredModeA (8-7)
[0106] candModeList[1]=candIntraPredModeB (8-8)
[0107] - If both candModeList[0] and candModeList[1] are not equal to INTRA_PLANAR, then set candModeList[2] equal to INTRA_PLANAR,
[0108] - Otherwise, if both candModeList[0] and candModeList[1] are not equal to INTRA_DC, then set candModeList[2] equal to INTRA_DC,
[0109] - Otherwise, set candModeList[2] equal to INTRA_ANGULAR50.
[0110] 4. Obtain IntraPredModeY[xPb][yPb] by applying the following procedure:
[0111] - If intra_luma_mpm_flag[xPb][yPb] is equal to 1, set IntraPredModeY[xPb][yPb] equal to candModeList[intra_luma_mpm_idx[xPb][yPb]].
[0112] Otherwise, IntraPredModeY[xPb][yPb] is derived by applying the following ordered steps:
[0113] 1. Modify the array candModeList[x], where x = 0..2, by following the steps in order:
[0114] i. In the case that candModeList[0] is greater than candModeList[1], swap the two values as follows:
[0115] (candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1]) (8-9)
[0116] ii. In the case that candModeList[0] is greater than candModeList[2], swap the two values as follows:
[0117] (candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2]) (8-10)
[0118] iii. In the case that candModeList[1] is greater than candModeList[2], swap the two values as follows:
[0119] (candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2]) (8-11)
[0120] 2. Obtain IntraPredModeY[xPb][yPb] by the following ordered steps:
[0121] i. Set IntraPredModeY[xPb][yPb] equal to intra_luma_mpm_remainder[xPb][yPb].
[0122] ii. For i equal to 0 to 2, inclusive, if IntraPredModeY[xPb][yPb] is greater than or equal to candModeList[i], increase the value of IntraPredModeY[xPb][yPb] by 1.
[0123] In the above, the variable IntraPredModeY[x][y], where x=xPb..xPb+cbWidth-1 and y=yPb..yPb+cbHeight-1, is set equal to IntraPredModeY[xPb][yPb].
[0124] In the development of VVC draft 2, an MPM list of size 6 was proposed. The MPM list includes Planar mode and DC mode. The remaining 4 MPMs are generated using two adjacent modes, the left mode and the top mode.
[0125] Multi-line intra prediction is proposed to use more reference lines for intra prediction, where the encoder decides and signals which reference line to use 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. Figure 7 An example of four reference rows (710) is depicted in FIG, wherein each reference row (710) is composed of six segments (i.e., segments A to F) together with a reference sample in the upper left corner. In addition, segments A and F are filled with the samples closest to segments B and E, respectively.
[0126] In multi-line intra prediction, when the signaled reference line index is non-zero, Planar mode and DC mode are excluded from MPM list generation and mode encoding. Furthermore, it is proposed that the aforementioned MPM list of size 6 can be generated from two neighboring modes. Therefore, how to generate six angular MPMs for non-zero lines when only two neighboring modes are accessible is an open question.
[0127] The proposed methods can be used individually or in combination in any order.
[0128] In the following description, the row index of the most recent reference row is 0 (zero reference row). The largest signaled reference row number is denoted as N.
[0129] Likewise Figure 8 As shown, the upper (top) side block (701) and the left side block (702) are defined in the following manner:
[0130] like Figure 8 As shown, the pixel at the upper left position in the current block (703) is represented as (x, y). A block in which the y coordinates of all samples included are greater than or equal to y and the x coordinates of all samples included are less than x is called a left block. A block in which the y coordinates of all samples included are less than y is called an upper block. Figure 8 An example of left side blocks (L1, Lx, and Ln) and upper side blocks (A1, A2, Ax, An) of the current block (703) is shown in FIG.
[0131] The two adjacent patterns mentioned below can be from the upper side (701) of the current block (703) or from the left side (702) of the current block (703). The following are some examples of the two adjacent patterns:
[0132] In one example, both adjacent patterns are from the left (702).
[0133] In another example, both adjacent patterns are from the upper side (701).
[0134] In another example, one of the adjacent patterns is from the left side ( 702 ), and the other adjacent pattern is from the upper side ( 701 ).
[0135] In another example, when the width of the current block (703) is greater than the height of the current block (703), both adjacent patterns are from the upper side (701), or when the height is greater than the width, both adjacent patterns are from the left side (702), or when the width is equal to the height, one adjacent pattern is from the upper side (701) and the other adjacent pattern is from the left side (702).
[0136] The reference sample sides may be selected and used according to the block width, block height, or the ratio of block width to block height (as described in the above examples) to derive two (or more) adjacent blocks.
[0137] In one example, if the block width / height is greater than a predefined threshold, only two (or more) neighboring blocks are selected from the upper side (701). Example values of the threshold include, but are not limited to, 2, 4, 8, 16, 32, and 64.
[0138] In another example, if the block height / width is greater than a predefined threshold, then only two (or more) neighboring blocks are selected from the left side (702). Example values of the threshold include, but are not limited to, 2, 4, 8, 16, 32, and 64.
[0139] In the following description, if the mode of the neighboring block is not available, the mode is set to Planar mode or DC mode.
[0140] In the following description, if the mode number range represented by the signal is 0 to M (0 and M are inclusive), then M can be any positive integer, such as 34 or 66. The neighboring modes of a given mode X are defined as follows: if X is greater than 2 and less than M-1, then the neighboring modes of X are X-1 and X+1. If X is equal to 2, then the neighboring modes of X are 3 and M (or M-1). If X is equal to M-1, then the neighboring modes of X are X-1 and X+1 (or 2). If X is equal to M, then the neighboring modes of X are M-1 and 2 (or 3).
[0141] In the following description, if a mode is not Planar mode or DC mode, or a mode generates prediction samples according to a given prediction direction, such as intra prediction modes 2 to 66 defined in VVC draft 2, then the mode is called an angular mode. The two variables offset and mod can have the following two groups:
[0142] 1) Offset=mod-3, mod=M-2;
[0143] 2) Offset=mod-3, mod=M-1;
[0144] When the signaled reference row index is non-zero, the following method can generate 6 angle MPMs via two adjacent patterns. The following methods or examples can be used alone or in combination in any order.
[0145] In one embodiment, if at least one of two adjacent modes is an angle mode, the following algorithm is used to generate 6 angle MPMs. The two adjacent modes are denoted as Mode_A and Mode_B. The variable ang_mode[] is used to record the angle mode of the adjacent mode. The variable ang_count is used to indicate the number of angle 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.
[0146] ●If Mode_A is angle mode, then MPM[mpm_index]=Mode_A, ang_count+=1, mpm_index+=1;
[0147] ●If Mode_B is angle mode, then MPM[mpm_index]=Mode_B, ang_count+=1, mpm_index+=1;
[0148] ●For (diff=0;diff<=2&&mpm_index<6;diff++){
[0149] For (idx=0; idx <ang_count;idx++){
[0150] ○MPM[mpm_index]=((ang_mode[idx]+offset-diff)%mod)+2;
[0151] ○if (includedMode[MPM[mpm_index]] == false)){
[0152] ■includedMode[MPM[mpm_index++]]=true}
[0153] ○If mpm_index == 6, then exit the loop;
[0154] ○MPM[mpm_index]=((ang_mode[idx]-1+diff)%mod)+2;
[0155] ○if (includedMode[MPM[mpm_index]] == false) {
[0156] ■includedMode[MPM[mpm_index++]]=true}
[0157] 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, the vertical / horizontal modes are added to generate six angle MPMs. These six angle modes can be added to the MPM list in any order.
[0158] • In one example, 6 angle MPMs are generated as follows.
[0159] ●MPM[0]=ang_mode
[0160] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0161] ●MPM[2]=((ang_mode-1)%mod)+2;
[0162] ●MPM[3]=((ang_mode-1+offset)%mod)+2;
[0163] ●MPM[4]=((ang_mode)%mod)+2;
[0164] ●MPM[5] = vertical or horizontal mode. In one example, if MPM[0]
[0165] If the vertical mode is not included in MPM[4], MPM[5] is set to the vertical mode.
[0166] Otherwise, MPM[5] is set to horizontal mode.
[0167] In another 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, and 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 angle modes can be added to the MPM list in any order.
[0168] • In one example, 6 angle MPMs are generated as follows.
[0169] ●MPM[0]=ang_mode
[0170] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0171] ●MPM[2]=((ang_mode-1)%mod)+2;
[0172] ●MPM[3]=((ang_mode-1+offset)%mod)+2;
[0173] ●MPM[4]=((ang_mode)%mod)+2;
[0174] ●MPM[5]=((ang_mode+1)%mod)+2;
[0175] • In another example, 6 angle MPMs are generated as follows.
[0176] ●MPM[0]=ang_mode
[0177] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0178] ●MPM[2]=((ang_mode-1)%mod)+2;
[0179] ●MPM[3]=((ang_mode-1+offset)%mod)+2;
[0180] ●MPM[4]=((ang_mode)%mod)+2;
[0181] ●MPM[5]=((ang_mode-2+offset)%mod)+2;
[0182] In another embodiment, if only one of the neighboring patterns is an angle pattern, denoted as ang_neighbor, then six angle MPMs are obtained as follows, where these six angle patterns can be added to the MPM list in any order. An example is shown below.
[0183] ●MPM[0]=ang_mode
[0184] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0185] ●MPM[2]=((ang_mode-1)%mod)+2;
[0186] ●MPM[3]=((ang_mode-2+offset)%mod)+2;
[0187] ●MPM[4]=((ang_mode+1)%mod)+2;
[0188] MPM[5] = vertical or horizontal mode. In one example, if vertical mode is not included in MPM[0] to MPM[4], MPM[5] is set to vertical mode. Otherwise, MPM[5] is set to horizontal mode.
[0189] In another embodiment, if two adjacent modes in the adjacent modes are angular modes and they are adjacent modes, the MPM list can be generated as follows. The two adjacent modes are represented as Mode_A and Mode_B, and they are added to the MPM list. The variables ang_max and ang_min are used to record the maximum and minimum modes between Mode_A and Mode_B.
[0190] If Mode_A is greater than Mode_B, then ang_max is set to Mode_A and ang_min is set to Mode_B
[0191] ●If ang_min is equal to 2 and ang_max is equal to M-1 or M, then the values of ang_min and ang_max are swapped.
[0192] The remaining 4 angle MPMs are derived as follows. These 4 modes can be added in any order, and the following is an example.
[0193] ●MPM[2]=((ang_min+offset)%mod)+2;
[0194] ●MPM[3]=((ang_max-1)%mod)+2;
[0195] ●MPM[4]=((ang_min-1+offset)%mod)+2;
[0196] ●MPM[5]=((ang_max)%mod)+2;
[0197] In another embodiment, two adjacent modes are represented by Mode_A and Mode_B, and if both adjacent modes are angular modes and abs(Mode_A-Mode_B)>2&&abs(Mode_A-Mode_B)<=Thres, the following algorithm is used to generate 6 angular MPMs. Thres is a positive integer, and Thres is greater than 2, for example, Thres=61 or 62 or 63.
[0198] ●First, add Mode_A and Mode_B to the MPM list
[0199] ● Then, add the two adjacent modes of Mode_A and the two adjacent modes of Mode_B to the MPM list
[0200] ●And these 6 angle MPMs can be added to the MPM list in any order
[0201] ● The following shows an example of the generation of 6 MPMs
[0202] ○MPM[0]=Mode_A
[0203] ○MPM[1]=Mode_B
[0204] ○MPM[2]=((Mode_A+offset)%mod)+2;
[0205] ○MPM[3]=((Mode_A-1)%mod)+2;
[0206] ○MPM[4]=((Mode_B+offset)%mod)+2;
[0207] ○MPM[5]=((Mode_B-1)%mod)+2;
[0208] In another embodiment, two adjacent modes are represented by Mode_A and Mode_B, and if the two adjacent modes are both angular modes, and abs(Mode_A-Mode_B)==2||abs(Mode_A-Mode_B)>Thres, where Thres is a positive integer and Thres is greater than 2, for example, Thres=61 or 62 or 63, then 6 angular MPMs are obtained by the following algorithm.
[0209] ●Use variables ang_max and ang_min to record the maximum and minimum modes between Mode_A and Mode_B.
[0210] If Mode_A is greater than Mode_B, then ang_max is set to Mode_A and ang_min is set to Mode_B
[0211] ●Then, add the 3 neighboring modes of Mode_A and Mode_B to the MPM list
[0212] ●Finally, add the vertical or horizontal mode to the MPM list, and these 6 MPMs can be added to the MPM list in any order.
[0213] ●An example is shown below
[0214] ●MPM[0]=ang_min
[0215] ●MPM[1]=ang_max
[0216] ●MPM[2]=((ang_min-1)%mod)+2;
[0217] ●MPM[3]=((ang_min+offset)%mod)+2;
[0218] MPM[4]=((ang_max-1)%mod)+2;
[0219] ●MPM[5] = vertical or horizontal mode. In one example, if MPM[0]
[0220] If the vertical mode is not included in MPM[4], MPM[5] is set to the vertical mode.
[0221] Otherwise, MPM[5] is set to horizontal mode.
[0222] In another embodiment, if both adjacent modes are Planar mode or DC mode, six default modes are used to populate the MPM list. These six default modes can be added to the MPM list in any order.
[0223] ● In one embodiment, the 6 default modes are {50, 18, 2, 34, 66, 26}
[0224] ● In another embodiment, the 6 default modes are {50, 18, 2, 34, 26, 42}
[0225] ● In another embodiment, when the width of the current block is greater than the height, the 6 default modes are {50, 18, 34, 66, 42, 58}
[0226] ● In another embodiment, when the height of the current block is greater than the width, the 6 default modes are {50, 18, 34, 2, 10, 26}
[0227] ● In another embodiment, when the width of the current block is equal to the height, the 6 default modes are {50, 18, 2, 34, 26, 42}
[0228] In another embodiment, all neighboring modes of the angle mode are first added to the MPM list. Then, for each of these neighboring modes that is an angle mode, which is denoted as ang_mode, if the angle mode ((ang_mode-1)%mod)+2 and the angle mode ((ang_mode+offset)%mod)+2 are not included in the MPM list, they are added to the MPM list.
[0229] • In one embodiment, if the MPM list is still not fully populated, several default modes are added. The default mode list can be any of the alternatives described in item number h above.
[0230] ●In another embodiment, if the MPM list is still not fully populated, for each mode in the modes already in the MPM list (denoted as mpm_mode), if the angle mode ((mpm_mode-1)%mod)+2 and the angle mode ((mpm_mode+offset)%mod)+2 are not included in the MPM list, they are added to the MPM list.
[0231] In at least one embodiment, the above techniques 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 partially or fully implemented in software running on one or more CPUs with associated memory.
[0232] The above techniques can be implemented as computer software using computer-readable instructions and physically stored in one or more computer-readable media. For example, Figure 9 A computer system (800) suitable for implementing certain embodiments of the present disclosure is shown.
[0233] Computer software may be encoded using any suitable machine code or computer language, and mechanisms such as assembly, compilation, and linking may be applied to the computer software to create code comprising instructions that may be executed directly by a computer central processing unit (CPU), graphics processing unit (GPU), etc., or through interpretation, microcode execution, etc.
[0234] 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.
[0235] Figure 9 The components shown for the computer system (800) are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of computer software implementing embodiments of the present disclosure. Neither should the configuration of components be interpreted as having any dependency or requirement relating to any one or combination of components shown in the non-limiting embodiment of the computer system (800).
[0236] The computer system (800) may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, hand clapping), visual input (e.g., gestures), and olfactory input (not depicted). 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 (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0237] The input human-machine interface device may include one or more of the following (only one of each is depicted): keyboard (801), mouse (802), touchpad (803), touch screen (810), data glove, joystick (805), microphone (806), scanner (807), camera (808).
[0238] The computer system (800) may also include certain human-computer interface output devices. Such human-computer interface output devices may stimulate one or more senses of a human user through, for example, tactile output, sound, light, and smell / taste. Such human-computer interface output devices may include tactile output devices (e.g., tactile feedback provided by a touch screen (810), a data glove, or a joystick (805), although there may also be tactile feedback devices that do not function as input devices). For example, such devices may be audio output devices (e.g., speakers (809), headphones (not depicted)), visual output devices (e.g., screens (810), including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capabilities, each with or without tactile feedback capabilities—some of which may be capable of outputting two-dimensional visual output or more than three-dimensional output through means such as stereo output; virtual reality glasses (not depicted), holographic displays, and smoke boxes (not depicted)), and printers (not depicted).
[0239] The computer system (800) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (820) with CD / DVD etc. media (821), thumb drives (822), removable hard drives or solid-state drives (823), traditional magnetic media such as tapes and floppy disks (not depicted), dedicated ROM / ASIC / PLD based devices such as security dongles (not depicted), etc.
[0240] Those skilled in the art will also understand that the term "computer-readable media" used in connection with the presently disclosed subject matter does not include transmission media, carrier waves, or other transient signals.
[0241] The computer system (800) may also include an interface to one or more communication networks. The network may be, for example, wireless, wired, optical. The network may also be local, wide area, urban, vehicle-mounted and industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks (including GSM, 3G, 4G, 5G, LTE, etc.), television wired or wireless wide area digital networks (including cable television, satellite television and terrestrial broadcast television), vehicle-mounted and industrial (including CANBus), etc. Some networks typically require an external network interface adapter attached to some common data port or peripheral bus (849) (such as, for example, a USB port of the computer system (800)); other interfaces are typically integrated into the core of the computer system (800) by attaching to a system bus as described below (for example, an Ethernet interface integrated into a PC computer system or a cellular network interface integrated into a smartphone computer system). Using any of these networks, the computer system (800) can communicate with other entities. Such communications can be one-way, receive-only (e.g., broadcast television), one-way, send-only (e.g., CANBus to certain CANBus devices), or two-way, for example, to other computer systems using a local area digital network or a wide area digital network. Certain protocols and protocol stacks can be used on each of these networks and network interfaces as described above.
[0242] The above-mentioned human interface device, human-accessible storage device, and network interface may be attached to the core ( 840 ) of the computer system ( 800 ).
[0243] The core (840) may include one or more central processing units (CPUs) (841), graphics processing units (GPUs) (842), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (843), hardware accelerators (844) for certain tasks, etc. These devices, along with read-only memory (ROM) (845), random access memory (846), internal mass storage devices such as internal non-user accessible hard drives, SSDs, etc. (847) may be connected via a system bus (848). In some computer systems, the system bus (848) may be accessed in the form of one or more physical plugs to enable expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached to the core's system bus (848) directly or via a peripheral bus (849). Peripheral bus architectures include PCI, USB, etc.
[0244] The CPU (841), GPU (842), FPGA (843), and accelerator (844) can execute certain instructions, which, when combined, can constitute the aforementioned computer code. The computer code can be stored in ROM (845) or RAM (846). Transient data can also be stored in RAM (846), while permanent data can be stored, for example, in an internal mass storage device (847). Fast storage and retrieval of any of the memory devices can be achieved by using a cache memory, which can be closely associated with one or more CPUs (841), GPUs (842), mass storage devices (847), ROM (845), RAM (846), etc.
[0245] The computer readable medium may have computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of a type well known and available to those skilled in the art of computer software.
[0246] By way of example and not limitation, a computer system (800) having an architecture, and in particular a core (840), can provide functionality due to a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be media associated with a user-accessible mass storage device as described above, as well as certain storage devices of the core (840) having non-transitory properties, such as an intra-core mass storage device (847) or ROM (845). Software implementing various embodiments of the present disclosure can be stored in such a device and executed by the core (840). Depending on specific needs, the computer-readable medium can include one or more memory devices or chips. The software can cause the core (840), and in particular the processor therein (including a CPU, GPU, FPGA, etc.), to perform specific processing or specific portions of specific processing described herein, including defining data structures stored in RAM (846) and modifying these data structures according to the processing defined by the software. Additionally or alternatively, the computer system may provide functionality due to logic hardwired or otherwise embodied in circuitry (e.g., accelerator (844)), which logic may operate in place of or in conjunction with software to perform specific processes or specific portions of specific processes described herein. Where appropriate, reference to software may encompass logic and vice versa. Where appropriate, reference to a computer-readable medium may encompass circuitry (e.g., an integrated circuit (IC)) storing software for execution, circuitry embodying logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.
[0247] Although the present disclosure has described several non-limiting embodiments, there are changes, permutations, and various substitute equivalents that fall within the scope of the present disclosure. It will therefore be understood that although not explicitly shown or described herein, those skilled in the art will be able to devise many systems and methods that embody the principles of the present disclosure and are therefore within its spirit and scope.
Claims
1. A video decoding method, characterized in that: include: Obtaining the intra prediction mode of the first neighboring block of the current block; Obtaining an intra prediction mode of a second adjacent block of the current block; as well as When the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are both angular modes, and are adjacent angular modes, obtaining a most probable mode (MPM) list according to a magnitude relationship between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the MPM list including a plurality of candidate modes for intra prediction of the current block; Determine a first candidate mode in the MPM list as the intra prediction mode of the first neighboring block; as well as A second candidate mode in the MPM list is determined as the intra prediction mode of the second neighboring block.
2. The video decoding method according to claim 1, wherein: Further including: According to the size of the index value, the size relationship of the angle mode between the intra-frame prediction mode of the first adjacent block and the intra-frame prediction mode of the second adjacent block is determined, wherein the angle mode with a smaller index value is the first mode, and the angle mode with a larger index value is the second mode.
3. The video decoding method according to claim 2, wherein: Further including: determining a third candidate pattern of the MPM list as a second adjacent angular pattern of the first pattern, the second adjacent angular pattern of the first pattern having a value that is not between the first pattern and the second pattern; determining a fourth candidate pattern of the MPM list as a second adjacent angle pattern of the second pattern, the second adjacent angle pattern of the second pattern having a value that is not between the first pattern and the second pattern; A fifth candidate pattern of the MPM list is determined as an adjacent angle pattern that is a second adjacent angle pattern of the first pattern except the first pattern.
4. The video decoding method according to claim 1, wherein: Obtaining the most probable mode (MPM) list includes: Add Mode_A and Mode_B to the MPM list; and Determine the remaining angle modes in the MPM list as: MPM[2]=((ang_min+offset)%mod)+2 MPM[3]=((ang_max-1)%mod)+2 MPM[4]=((ang_min-1+offset)%mod)+2 Wherein, Mode_A and Mode_B represent the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block respectively, and the variables ang_max and ang_min are used to record the maximum mode and minimum mode between Mode_A and Mode_B; If Mode_A is greater than Mode_B, set ang_max to Mode_A and ang_min to Mode_B; If ang_min is equal to 2 and ang_max is equal to M-1 or M, then the values of ang_min and ang_max are switched, the mode number range represented by the signal is 0 to M, including 0 and M, the variable offset = mod-3, the variable mod = M-–2, and M is 34 or 66.
5. A video encoding method, characterized in that: include: Set the intra prediction mode of the first neighboring block of the current block; Setting an intra prediction mode of a second adjacent block of the current block; as well as When the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are both angular modes, and are adjacent angular modes, generating a most probable mode (MPM) list according to a magnitude relationship between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the MPM list including a plurality of candidate modes for intra prediction of the current block; Setting a first candidate mode in the MPM list as the intra prediction mode of the first neighboring block; as well as The second candidate mode in the MPM list is set as the intra prediction mode of the second neighboring block.
6. The video encoding method according to claim 5, wherein: Further including: According to the size of the index value, the size relationship of the angle mode between the intra-frame prediction mode of the first adjacent block and the intra-frame prediction mode of the second adjacent block is determined, wherein the angle mode with a smaller index value is the first mode, and the angle mode with a larger index value is the second mode.
7. The video encoding method according to claim 6, wherein: Further including: setting a third candidate mode of the MPM list to a second adjacent angle mode of the first mode, the second adjacent angle mode of the first mode having a value that is 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 of the second mode having a value not between the first mode and the second mode; The fifth candidate pattern of the MPM list is set to an adjacent angle pattern of a second adjacent angle pattern of the first pattern except the first pattern.
8. The video encoding method according to claim 5, wherein: Generating the most probable mode MPM list includes: Add Mode_A and Mode_B to the MPM list; and Determine the remaining angle modes in the MPM list as: MPM[2]=((ang_min+offset)%mod)+2 MPM[3]=((ang_max-1)%mod)+2 MPM[4]=((ang_min-1+offset)%mod)+2 Wherein, Mode_A and Mode_B represent the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block respectively, and the variables ang_max and ang_min are used to record the maximum mode and minimum mode between Mode_A and Mode_B; If Mode_A is greater than Mode_B, set ang_max to Mode_A and ang_min to Mode_B; If ang_min is equal to 2 and ang_max is equal to M-1 or M, then the values of ang_min and ang_max are switched, the mode number range represented by the signal is 0 to M, including 0 and M, the variable offset = mod-3, the variable mod = M-–2, and M is 34 or 66.
9. A video decoding device, characterized in that: The device includes an acquisition unit and a generation unit: The acquiring unit is configured to acquire an intra-frame prediction mode of a first neighboring block of a current block and an intra-frame prediction mode of a second neighboring block of the current block; and The generating unit is configured to, when both the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angle modes, and are adjacent angle modes, obtain a most probable mode (MPM) list according to a magnitude relationship between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the MPM list including a plurality of candidate modes for intra prediction of the current block; Determine a first candidate mode in the MPM list as the intra prediction mode of the first neighboring block; as well as A second candidate mode in the MPM list is determined as the intra prediction mode of the second neighboring block.
10. A video encoding device, characterized in that: The device includes an acquisition unit and a generation unit: The acquiring unit is configured to set an intra-frame prediction mode of a first neighboring block of a current block and an intra-frame prediction mode of a second neighboring block of the current block; and The generating unit is configured to generate a most probable mode (MPM) list according to a size relationship between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block when both the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angular modes and are adjacent angular modes, the MPM list including a plurality of candidate modes for intra prediction of the current block; Setting a first candidate mode in the MPM list as the intra prediction mode of the first neighboring block; as well as The second candidate mode in the MPM list is set as the intra prediction mode of the second neighboring block.
11. A non-transitory computer-readable storage medium storing instructions, characterized in that: The instructions enable at least one processor to execute the method according to any one of claims 1 to 8.
12. A computer device, characterized in that: The device includes a processor and a memory: The memory is used to store program code and transmit the program code to the processor; The processor is configured to execute the method according to any one of claims 1 to 8 according to instructions in the program code.
13. A method for storing a bit stream, characterized in that: Execute the video encoding method according to any one of claims 5 to 8 to generate a bit stream, and store the bit stream.
14. A method for transmitting a bit stream, characterized in that: Execute the video encoding method according to any one of claims 5 to 8 to generate a bit stream, and transmit the bit stream.
15. A computer storage medium, characterized in that Instructions are stored, and the instructions can be executed by at least one processor to perform the method according to any one of claims 5 to 8, generate a video bit stream, and store it.