A video encoding and decoding method and related device
By generating a list of MPMs containing more angle modes, the problem of difficulty in generating multiple angle modes is solved when only two adjacent modes can be accessed, and the efficiency and quality of video decoding are improved.
Patent Information
- Application Number
- CN202211116260.6
- 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-05-06
- Estimated Expiration
- 2039-08-29
AI Technical Summary
In efficient video encoding technology, in case only two adjacent modes can be accessed, how to generate a list of most likely modes (MPM) including more angle modes for intra prediction of non-zero rows.
By determining whether the intra prediction mode of adjacent blocks of the current block is an angle mode, and generating an MPM list including six candidate angle modes, it is ensured that the MPM list contains corresponding angle modes in different adjacent modes.
It realizes the generation of more angle mode MPM lists in non-zero rows, improving the efficiency and quality of video decoding.
Smart Images

Figure CN115499651B_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 entirety. 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 Intra prediction modes used in High Efficiency Video Coding (HEVC) are shown in FIG. 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 mode 2, mode 18, and mode 34 are diagonal modes (503). 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 MPM list or 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 the MPM list is shown as follows. Here, leftIntraDir indicates the mode in the left block, and aboveIntraDir indicates the mode in the upper block. If the left block or the upper block is not currently available, 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?
[0022] VER_IDX:DC_IDX;
[0023] 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
[0024] According to at least one embodiment, a video decoding method, the method is executed by at least one processor to control multi-line intra-frame prediction using a non-zero reference line, the method comprising: determining whether the intra-frame prediction mode of the first neighboring block of the current block is an angle mode. The method may also include: determining whether the intra-frame prediction mode of the second neighboring block of the current block is an angle mode. The method may also include: generating 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 MPM list can be generated so that it includes the intra-frame prediction mode of the first neighboring block when the intra-frame prediction mode of the first neighboring block is determined to be an angle mode, and includes the intra-frame prediction mode of the second neighboring block when the intra-frame prediction mode of the second neighboring block is determined to be an angle mode.
[0025] According to at least one embodiment, a device for controlling multi-line intra prediction using non-zero reference lines 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 enable 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 enable 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 enable 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 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] According to at least one embodiment, a non-transitory computer-readable storage medium storing instructions, the instructions can cause at least one processor to determine whether the intra-frame prediction mode of the first neighboring block of the current block is an angle mode. The instructions can also cause the at least one processor to determine whether the intra-frame prediction mode of the second neighboring block of the current block is an angle mode. The instructions can 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 can cause 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 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.
[0027] It can be seen that when using non-zero reference lines 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 likely mode MPM list is generated, the MPM list includes 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. Thereby, it is achieved that an MPM list including more angle modes is generated for non-zero lines. BRIEF DESCRIPTION OF THE DRAWINGS
[0028] Additional features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, in which:
[0029] Figure 1 is a schematic diagram of a simplified block diagram of a communication system according to an embodiment;
[0030] Figure 2 is a schematic diagram of a simplified block diagram of a streaming system according to an embodiment;
[0031] Figure 3 is a schematic diagram of a simplified block diagram of a video decoder and a display according to an embodiment;
[0032] Figure 4 is a schematic diagram of a simplified block diagram of a video encoder and a video source according to an embodiment;
[0033] Figure 5 is a diagram of intra prediction modes in HEVC;
[0034] Figure 6 is a diagram of intra prediction modes in Versatile Video Coding Draft 2;
[0035] Figure 7 is a diagram showing an example of reference lines for multi-line intra prediction;
[0036] Figure 8 is a diagram showing an example of a top side block and a left side block relative to a current block;
[0037] Fig. 9 is a diagram of a computer system suitable for implementing an embodiment. DETAILED DESCRIPTION
[0038] Figure 1 A 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 unidirectional 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 encoded video data from another terminal from the network (150), decode the encoded data, and display the recovered video data. Unidirectional data transmission may be common in media service applications and the like.
[0039] Figure 1 A second pair of terminals (130, 140) is shown, which are provided to support bidirectional transmission of encoded video, such as may 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.
[0040] exist Figure 1In 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 switching and / or packet switching 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.
[0041] 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.
[0042] like Figure 2 As shown, the streaming system (200) may include a capture subsystem (213), which includes 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).
[0043] 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).
[0044] The streaming client (206) may include a video decoder (210) and a display (212). The video decoder (210) may, for example, decode a video bitstream (209) that is an incoming 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 encoding / compression standards. Examples of these standards include, but are not limited to, ITU-T Recommendation H.265. The 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.
[0045] 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.
[0046] The video decoder (210) may include a channel (312), a receiver (310), a buffer memory (315), an entropy decoder / parser (320), a scaler / inverse transform unit (351), an intra prediction unit (352), a motion compensated prediction unit (353), an aggregator (355), a loop filter unit (356), a reference picture memory (357), and a current picture memory (358). In at least one embodiment, the video decoder (210) may include an integrated circuit, a series of integrated circuits, and / or other electronic circuits. The video decoder (210) may also be partially or completely implemented in software running on one or more CPUs with associated memory.
[0047] In this and other embodiments, a receiver (310) may receive one or more coded video sequences to be decoded by a decoder (210) - one coded video at a time, wherein the decoding of each coded video sequence is independent of the decoding of the other coded video sequences. The coded video sequence may be received from a channel (312), which may be a hardware / software link to a storage device storing the coded video data. The receiver (310) may receive the coded video data as well as other data, such as coded audio data and / or auxiliary data streams that may be forwarded to their respective consuming entities (not depicted). The receiver (310) may separate the coded video sequence from the other data. To cope with network jitter, a buffer memory (315) may 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 storage / forward device with sufficient bandwidth and controllability or from an isochronous network, the buffer (315) may not be used, or the buffer (315) may 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.
[0048] 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 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 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 the 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.
[0049] The parser (320) may perform entropy decoding / parsing operations on the video sequence received from the buffer (315) to create symbols (321).
[0050] Depending on the type of coded video picture or portion of coded video picture (e.g., inter-picture and intra-picture, inter-block and intra-block) and other factors, the reconstruction of the symbol (321) may involve multiple different units. Which units are involved and how they are involved may be controlled by subgroup control information parsed from the coded video sequence by the parser (320). For the sake of brevity, such subgroup control information flow between the parser (320) and the multiple units described below is not depicted.
[0051] 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 purpose of describing the disclosed subject matter, it is appropriate to conceptually subdivide into the following functional units.
[0052] One unit may be a sealer / inverse transform unit (351). The sealer / inverse transform unit (351) may receive quantized transform coefficients as symbols (321) from the parser (320) as well as control information including which transform mode to use, block size, quantization factor, quantization scaling matrix, etc. The sealer / inverse transform unit (351) may output a block including sample values that may be input into an aggregator (355).
[0053] In some cases, the output samples of the sealer / 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 an 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 sealer / inverse transform unit 351 on a per-sample basis.
[0054] 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 the obtained samples are motion compensated 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 signals) 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 available to the motion compensated prediction unit (353) in the form of a symbol (321), which 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.
[0055] 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 filter 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.
[0056] 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.
[0057] 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.
[0058] The video decoder (210) may perform decoding operations according to a predetermined video compression technique that may be recorded in a standard such as ITU-T H.265 Recommendation. The encoded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the encoded video sequence follows the syntax of the video compression technology or standard, as specified in the video compression technology document or standard and specifically in a profile document therein. In addition, to conform to some video compression technologies or standards, the complexity of the encoded video sequence may be within a range defined by the hierarchy of the video compression technology or standard. In some cases, the hierarchy limits the maximum picture size, the maximum frame rate, the maximum reconstruction sample rate (measured in, for example, mega samples per second), the 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 of the HRD buffer management signaled in the encoded video sequence.
[0059] In an embodiment, the 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, etc.
[0060] 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.
[0061] 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).
[0062] 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).
[0063] The video source (201) may provide a source video sequence to be encoded by the encoder (203) in the form of a digital video sample stream, which may have any suitable bit depth (e.g., x-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the video source (201) may be a storage device storing previously prepared videos. In a video conferencing system, the video source (203) may be a camera device that captures local image information as a video sequence. The video data may be provided as a plurality of separate pictures that are given motion when viewed sequentially. The pictures themselves may be organized as a spatial pixel array, where each pixel may include one or more samples, depending on the sampling structure, color space, etc. used. The relationship between pixels and samples may be easily understood by those skilled in the art. The following description focuses on samples.
[0064] According to an embodiment, the encoder (203) can 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 can be a function of the controller (450). The controller (450) can also control other functional units as described below and can be functionally coupled to these units. The coupling is not depicted for simplicity. The parameters set by the controller (450) can include rate control related parameters (picture skipping, quantizer, lambda value of rate distortion optimization technology, etc.), picture size, picture group (GOP) layout, maximum motion vector search range, etc. Those skilled in the art can easily identify other functions of the controller (450), which can belong to the video encoder (203) optimized for a specific system design.
[0065] Some video encoders operate in a manner that is readily recognizable to those skilled in the art as a "coding loop". As a simplified description, the coding loop may 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 may be input to a reference picture memory (434). Since decoding the symbol stream produces bit-accurate results that are independent of the decoder 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.
[0066] 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).
[0067] At this point, it can be observed that any decoder technology other than the parsing / entropy decoding present in the decoder may need to be present in the corresponding encoder in substantially the same functional form. For this reason, the disclosed subject matter focuses on the decoder operation. Since the encoder technology can be mutually inverse with the decoder technology that has been fully described, the description of the encoder technology can be simplified. A more detailed description is only required and provided in some places hereinafter.
[0068] 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 from a video sequence designated as "reference frames." In this manner, the encoding engine (432) encodes the differences between pixel blocks of an input frame and pixel blocks of a reference frame that may be selected as a reference for prediction of the input frame.
[0069] 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 symbol created by the source encoder (430). The operation of the encoding engine (432) can advantageously be a lossy process. When the encoded video data is in the video decoder ( Figure 4 When decoded at a remote video decoder (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 by the video decoder on the reference frame and may cause the reconstructed reference frame to be stored in the reference picture memory (434). In this way, the encoder (203) may store locally 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.
[0070] The predictor (435) may perform a prediction search for the encoding engine (432). That is, for a new frame to be encoded, the predictor (435) may 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 may be used as appropriate prediction references for the new picture. The predictor (435) may operate on a pixel block by pixel block basis to find an appropriate prediction reference. In some cases, the input picture may 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).
[0071] The controller ( 450 ) may manage encoding operations of the video encoder ( 430 ), including, for example, setting of parameters and subgroup parameters for encoding video data.
[0072] The outputs of all the above functional units may be entropy encoded 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 the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.
[0073] 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 auxiliary data streams (source not shown).
[0074] The controller (450) may manage the operation of the encoder (203). During encoding, the controller (450) may assign a specific coded picture type to each coded picture, which may affect the coding techniques that may be applied to the corresponding picture. For example, a picture may generally be assigned as an intra picture (I picture), a predictive picture (P picture), or a bidirectional predictive picture (B picture).
[0075] An intra picture (I picture) may 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.
[0076] 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.
[0077] Bidirectional predictive pictures (B pictures) can be pictures that 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 for reconstruction of a single block.
[0078] The source picture may typically be spatially subdivided into a number 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 corresponding picture of the block. For example, blocks of an I picture may be non-predictively coded, or may be predictively coded (spatial prediction or intra-frame 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.
[0079] The video encoder (203) may perform encoding operations according to a predetermined video encoding technique or standard, such as ITU-T H.265 Recommendation. 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 an input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard used.
[0080] 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.
[0081] Figure 6 This is a diagram of the intra prediction mode in VVC Draft 2.
[0082] In VVC draft 2, there are Figure 5 A total of 87 intra 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 referred to as wide-angle intra prediction (WAIP) modes (606, 707).
[0083] In VVC draft 2, the size of the MPM list is still 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.
[0084] The following clause in VVC draft 2 describes the luma intra mode coding process, where IntraPredModeY[xPb][yPb] is derived:
[0085] 1. Set the adjacent positions (xNbA, yNbA) and (xNbB, yNbB) equal to (xPb-1, yPb) and (xPb, yPb-1), respectively.
[0086] 2. For X replaced by A or B, the variable candIntraPredModeX is obtained as follows:
[0087] - 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 is assigned to availableX.
[0088] - The candidate intra prediction mode candIntraPredModeX is obtained by the following steps:
[0089] - If one or more of the following conditions are true, candIntraPredModeX is set equal to INTRA_DC.
[0090] -The variable availableX is equal to FALSE.
[0091] -CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA.
[0092] -X is equal to B and yPb-1 is less than ((yPb>>CtbLog2SizeY)< <CtbLog2SizeY)。
[0093] Otherwise, set candIntraPredModeX equal to IntraPredModeY[xNbX][yNbX].
[0094] 3. Obtain candModeList[x] as follows, where x = 0...2:
[0095] - If candIntraPredModeB is equal to candIntraPredModeA, then the following applies:
[0096] - If candIntraPredModeA is less than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC), then candModeList[x] is derived as follows, where x = 0..2:
[0097] candModeList[0]=INTRA_PLANAR (8-1)
[0098] candModeList[1]=INTRA_DC (8-2)
[0099] candModeList[2]=INTRA_ANGULAR50 (8-3)
[0100] Otherwise, follow the steps below to get candModeList[x], where x = 0..2:
[0101] candModeList[0]=candIntraPredModeA (8-4)
[0102] candModeList[1]=2+((candIntraPredModeA+61)%64) (8-5)
[0103] candModeList[2]=2+((candIntraPredModeA-1)%64) (8-6)
[0104] - Otherwise (candIntraPredModeB is not equal to candIntraPredModeA), the following applies:
[0105] - Obtain candModeList[0] and candModeList[1] by following the steps below:
[0106] candModeList[0]=candIntraPredModeA (8-7)
[0107] candModeList[1]=candIntraPredModeB (8-8)
[0108] - If both candModeList[0] and candModeList[1] are not equal to INTRA_PLANAR, then set candModeList[2] equal to INTRA_PLANAR,
[0109] - Otherwise, if both candModeList[0] and candModeList[1] are not equal to INTRA_DC, then set candModeList[2] equal to INTRA_DC,
[0110] - Otherwise, set candModeList[2] equal to INTRA_ANGULAR50.
[0111] 4. Obtain IntraPredModeY[xPb][yPb] by applying the following process:
[0112] - If intra_luma_mpm_flag[xPb][yPb] is equal to 1, set IntraPredModeY[xPb][yPb] equal to candModeList[intra_luma_mpm_idx[xPb][yPb]].
[0113] Otherwise, IntraPredModeY[xPb][yPb] is obtained by applying the following ordered steps:
[0114] 1. Modify the array candModeList[x], where x = 0..2, by the following ordered steps:
[0115] i. If candModeList[0] is greater than candModeList[1], swap the two values as follows:
[0116] (candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1]) (8-9)
[0117] ii. If candModeList[0] is greater than candModeList[2], swap the two values as follows:
[0118] (candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2]) (8-10)
[0119] iii. In the case that candModeList[1] is greater than candModeList[2], swap the two values as follows:
[0120] (candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2]) (8-11)
[0121] 2. Obtain IntraPredModeY[xPb][yPb] by the following ordered steps:
[0122] i. Set IntraPredModeY[xPb][yPb] equal to intra_luma_mpm_remainder[xPb][yPb].
[0123] 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.
[0124] 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].
[0125] In the development of VVC draft 2, an MPM list of size 6 is 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.
[0126] 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 4 reference lines (710) is depicted in FIG, wherein each reference line (710) is composed of 6 segments (ie, segments A to F) together with a reference sample at the top left. In addition, segments A and F are filled with the samples closest to segments B and E, respectively.
[0127] In multi-line intra prediction, Planar mode and DC mode are excluded from MPM list generation and mode coding when the signaled reference row index is non-zero. In addition, it is proposed that the above-mentioned MPM list of size 6 can be generated from 2 neighboring modes. Therefore, it is an open question how to generate 6 angular MPMs for non-zero rows when only 2 neighboring modes can be accessed.
[0128] The proposed methods can be used individually or in combination in any order.
[0129] 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.
[0130] Likewise Figure 8 As shown, the upper (top) side block (701) and the left side block (702) are defined in the following manner:
[0131] like Figure 8 As shown, the pixel at the upper left position in the current block (703) is represented as (x, y). A block including all samples whose y coordinates are greater than or equal to y and all samples whose x coordinates are less than x is called a left block. A block including all samples whose y coordinates 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.
[0132] The two adjacent patterns mentioned below may 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:
[0133] In one example, both adjacent patterns are from the left side (702).
[0134] In another example, both adjacent patterns are from the upper side (701).
[0135] 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).
[0136] In another example, when the width of the current block (703) is greater than the height of the current block (703), both adjacent modes are from the upper side (701), or when the height is greater than the width, both adjacent modes are from the left side (702), or when the width is equal to the height, one adjacent mode is from the upper side (701) and the other adjacent mode is from the left side (702).
[0137] The reference sample side may be selected and used according to the block width, the block height, the ratio of the block width to the block height (as described in the above examples) to derive two (or more) adjacent blocks.
[0138] In one example, if the block width / height is greater than a predefined threshold, two (or more) neighboring blocks are selected only from the upper side (701). Example values of the threshold include, but are not limited to, 2, 4, 8, 16, 32, and 64.
[0139] 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.
[0140] In the following description, if the mode of the neighboring block is not available, the mode is set to the Planar mode or the DC mode.
[0141] 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).
[0142] 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:
[0143] 1) Offset=mod-3, mod=M-2;
[0144] 2) Offset=mod-3, mod=M-1;
[0145] When the signaled reference row index is non-zero, the following method can generate 6 angular MPMs via two adjacent patterns. The following methods or examples can be used alone or in combination in any order.
[0146] In one embodiment, if at least one of the two adjacent modes is an angle mode, the following algorithm is used to generate 6 angle MPMs. The two adjacent modes are represented 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.
[0147] ●If Mode_A is the angle mode, then MPM[mpm_index] = Mode_A,
[0148] ang_count+=1, mpm_index+=1;
[0149] ●If Mode_B is the angle mode, then MPM[mpm_index] = Mode_B,
[0150] ang_count+=1, mpm_index+=1;
[0151] ●For (diff=0;diff<=2&&mpm_index<6;diff++){
[0152] ●For (idx=0; idx <ang_count;idx++){
[0153] ○MPM[mpm_index]=((ang_mode[idx]+offset-diff)%mod)+2;
[0154] ○if (includedMode[MPM[mpm_index]] == false)) {
[0155] ■includedMode[MPM[mpm_index++]]=true}
[0156] ○If mpm_index == 6, then exit the loop;
[0157] ○MPM[mpm_index]=((ang_mode[idx]-1+diff)%mod)+2;
[0158] ○if (includedMode[MPM[mpm_index]] == false) {
[0159] ■includedMode[MPM[mpm_index++]]=true}
[0160] In one embodiment, if only one of the neighboring modes is an angle mode, denoted as ang_neighbor, then ang_neighbor and its 2 neighboring modes (denoted as mode_L and mode_R) are added to the MPM list, and 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 6 angle MPMs. These 6 angle modes can be added to the MPM list in any order.
[0161] ●In one example, 6 angle MPMs are generated as follows.
[0162] ●MPM[0]=ang_mode
[0163] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0164] ●MPM[2]=((ang_mode-1)%mod)+2;
[0165] ●MPM[3]=((ang_mode-1+offset)%mod)+2;
[0166] ●MPM[4]=((ang_mode)%mod)+2;
[0167] ●MPM[5] = vertical or horizontal mode. In one example, if MPM[0]
[0168] If MPM[4] does not include the vertical mode, MPM[5] is set to the vertical mode.
[0169] Otherwise, MPM[5] is set to horizontal mode.
[0170] In another embodiment, if only one of the neighboring modes is an angle mode, denoted as ang_neighbor, 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.
[0171] ●In one example, 6 angle MPMs are generated as follows.
[0172] ●MPM[0]=ang_mode
[0173] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0174] ●MPM[2]=((ang_mode-1)%mod)+2;
[0175] ●MPM[3]=((ang_mode-1+offset)%mod)+2;
[0176] ●MPM[4]=((ang_mode)%mod)+2;
[0177] ●MPM[5]=((ang_mode+1)%mod)+2;
[0178] In another example, 6 angle MPMs are generated as follows.
[0179] ●MPM[0]=ang_mode
[0180] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0181] ●MPM[2]=((ang_mode-1)%mod)+2;
[0182] ●MPM[3]=((ang_mode-1+offset)%mod)+2;
[0183] ●MPM[4]=((ang_mode)%mod)+2;
[0184] ●MPM[5]=((ang_mode-2+offset)%mod)+2;
[0185] In another embodiment, if only one of the neighboring patterns is an angle pattern, denoted as ang_neighbor, six angle MPMs are obtained as follows, where the six angle patterns can be added to the MPM list in any order. An example is shown below.
[0186] ●MPM[0]=ang_mode
[0187] ●MPM[1]=((ang_mode+offset)%mod)+2;
[0188] ●MPM[2]=((ang_mode-1)%mod)+2;
[0189] ●MPM[3]=((ang_mode-2+offset)%mod)+2;
[0190] ●MPM[4]=((ang_mode+1)%mod)+2;
[0191] MPM[5] = vertical or horizontal mode. In one example, if the vertical mode is not included in MPM[0] to MPM[4], MPM[5] is set to the vertical mode. Otherwise, MPM[5] is set to the horizontal mode.
[0192] In another embodiment, if two of the adjacent modes are angle 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. Variables ang_max and ang_min are used to record the maximum mode and minimum mode between Mode_A and Mode_B.
[0193] If Mode_A is greater than Mode_B, ang_max is set to Mode_A and ang_min is set to Mode_B
[0194] ●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.
[0195] The remaining 4 angle MPMs are derived as follows. These 4 modes can be added in any order, below is an example.
[0196] ●MPM[2]=((ang_min+offset)%mod)+2;
[0197] ●MPM[3]=((ang_max-1)%mod)+2;
[0198] ●MPM[4]=((ang_min-1+offset)%mod)+2;
[0199] ●MPM[5]=((ang_max)%mod)+2;
[0200] In another embodiment, two adjacent modes are represented by Mode_A and Mode_B, and if both adjacent modes are angle modes and abs(Mode_A-Mode_B)>2&&abs(Mode_A-Mode_B)<=Thres, the following algorithm is used to generate 6 angle MPMs. Thres is a positive integer, and Thres is greater than 2, for example, Thres=61 or 62 or 63.
[0201] ●First, add Mode_A and Mode_B to the MPM list
[0202] ●Then, add the two adjacent modes of Mode_A and the two adjacent modes of Mode_B to the MPM list
[0203] ● And these 6 angle MPMs can be added to the MPM list in any order
[0204] ● The following shows an example of the generation of 6 MPMs
[0205] ○MPM[0]=Mode_A
[0206] ○MPM[1]=Mode_B
[0207] ○MPM[2]=((Mode_A+offset)%mod)+2;
[0208] ○MPM[3]=((Mode_A-1)%mod)+2;
[0209] ○MPM[4]=((Mode_B+offset)%mod)+2;
[0210] ○MPM[5]=((Mode_B-1)%mod)+2;
[0211] In another embodiment, two adjacent modes are represented by Mode_A and Mode_B, and if the two adjacent modes are angle 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 angle MPMs are obtained by the following algorithm.
[0212] ●Use variables ang_max and ang_min to record the maximum and minimum modes between Mode_A and Mode_B.
[0213] If Mode_A is greater than Mode_B, ang_max is set to Mode_A and ang_min is set to Mode_B
[0214] ● Then, add the 3 neighboring modes of Mode_A and Mode_B to the MPM list
[0215] ●Finally, the vertical or horizontal mode is added to the MPM list, and these 6 MPMs can be added to the MPM list in any order.
[0216] ●An example is shown below
[0217] ●MPM[0]=ang_min
[0218] ●MPM[1]=ang_max
[0219] ●MPM[2]=((ang_min-1)%mod)+2;
[0220] ●MPM[3]=((ang_min+offset)%mod)+2;
[0221] MPM[4]=((ang_max-1)%mod)+2;
[0222] MPM[5] = vertical or horizontal mode. In one example, if the vertical mode is not included in MPM[0] to MPM[4], MPM[5] is set to the vertical mode. Otherwise, MPM[5] is set to the horizontal mode.
[0223] In another embodiment, if both adjacent modes are Planar mode or DC mode, 6 default modes are used to populate the MPM list. These 6 default modes can be added to the MPM list in any order.
[0224] ● In one embodiment, the 6 default modes are {50,18,2,34,66,26}
[0225] ● In another embodiment, the 6 default modes are {50, 18, 2, 34, 26, 42}
[0226] ● 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}
[0227] ● 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}
[0228] ● 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}
[0229] 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.
[0230] - 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.
[0231] ●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.
[0232] In at least one embodiment, the above techniques may be performed by an integrated circuit, a series of integrated circuits, and / or other electronic circuits. In at least one embodiment, the techniques may be partially or fully implemented in software running on one or more CPUs with associated memory.
[0233] 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, Fig. 9 A computer system (800) suitable for implementing certain embodiments of the present disclosure is shown.
[0234] 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 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.
[0235] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, etc.
[0236] Fig. 9 The components for the computer system (800) shown in the non-limiting embodiment of 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. Nor should the configuration of components be interpreted as having any dependency or requirement related to any one or combination of components shown in the non-limiting embodiment of the computer system (800).
[0237] The computer system (800) may include certain human-machine interface input devices. Such human-machine interface input devices may respond to inputs implemented by one or more human users through, for example, tactile inputs (e.g., keystrokes, swipes, data glove movements), audio inputs (e.g., voice, clapping), visual inputs (e.g., gestures), olfactory inputs (not depicted). The human-machine interface devices may also be used to capture certain media that are not necessarily directly related to a person's conscious input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and videos (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0238] The input human-machine interface device may include one or more of the following (only one of each is depicted): keyboard (801), mouse (802), touch pad (803), touch screen (810), data glove, joystick (805), microphone (806), scanner (807), camera (808).
[0239] 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), but there may also be tactile feedback devices that are not used 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 these screens may be able to output two-dimensional visual output or more than three-dimensional output by means such as stereo output; virtual reality glasses (not depicted), holographic displays, and smoke boxes (not depicted)) and printers (not depicted).
[0240] 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.
[0241] Those skilled in the art should 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.
[0242] 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 smart phone computer system). Using any of these networks, the computer system (800) can communicate with other entities. Such communications may 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 may be used on each of these networks and network interfaces as described above.
[0243] The above-mentioned human-machine interface device, human-accessible storage device, and network interface may be attached to the core ( 840 ) of the computer system ( 800 ).
[0244] 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 by additional CPUs, GPUs, etc. Peripheral devices may be attached to the core's system bus (848) directly or via a peripheral bus (849). The architecture of the peripheral bus includes PCI, USB, etc.
[0245] The CPU (841), GPU (842), FPGA (843) and accelerator (844) can execute certain instructions, which in combination can constitute the above-mentioned computer code. The computer code can be stored in ROM (845) or RAM (846). Transition data can also be stored in RAM (846), while permanent data can be stored in, for example, an internal mass storage device (847). Fast storage and retrieval for 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), ROMs (845), RAMs (846), etc.
[0246] The computer readable medium may have computer codes for performing various computer-implemented operations. The media and computer codes 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.
[0247] As an 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 a computer-readable medium can be a medium associated with a user-accessible mass storage device as described above, as well as certain storage devices of the core (840) having a non-transitory nature, such as a core mass storage device (847) or a 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 may include one or more memory devices or chips. The software can enable the core (840) and in particular the processor therein (including a CPU, GPU, FPGA, etc.) to perform specific processing or specific parts of specific processing described herein, including defining data structures stored in RAM (846) and modifying these data structures according to 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 include logic and vice versa. Where appropriate, reference to computer-readable media may include circuitry (e.g., integrated circuits (ICs)) storing software for execution, circuitry embodying logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.
[0248] Although the present disclosure has described several non-limiting embodiments, there are changes, permutations, and various replacement 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 conceive of 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: Determine whether the intra prediction mode of the first neighboring block of the current block and the intra prediction mode of the second neighboring block are angle modes; as well as In the case where the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are determined to be an angle mode, a most probable mode MPM list is determined, the MPM list including a plurality of candidate modes for intra prediction of the current block, wherein: Record the maximum mode and the minimum mode between the intra-frame prediction mode of the first neighboring block and the intra-frame prediction mode of the second neighboring block, when the absolute value of the difference between the intra-frame prediction mode of the first neighboring block and the intra-frame prediction mode of the second neighboring block is equal to 2: Setting the first candidate mode in the MPM list to the minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the second candidate mode in the MPM list to the maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the third candidate mode of the MPM list to a first neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the fourth candidate mode of the MPM list to a second neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the second neighboring angle mode being different from the first neighboring angle mode; The fifth candidate mode of the MPM list is set to a first neighboring angle mode of a maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block.
2. The video decoding method according to claim 1, characterized in that The MPM list includes: MPM[0] = ang_min MPM[1] = ang_max MPM[2] = ((ang_min-1)%mod) + 2 MPM[3] = ((ang_min + offset)%mod) + 2 MPM[4] = ((ang_max-1)%mod) + 2 Among them, Mode_A and Mode_B represent the intra-frame prediction mode of the first adjacent block and the intra-frame prediction mode of the second adjacent block respectively, 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, ang_max is set to Mode_A, ang_min is set to Mode_B, the variable offset = mod - 3, the variable mod = M - 2, M is 34 or 66.
3. A video encoding method, characterized in that: include: Determine whether the intra prediction mode of the first neighboring block of the current block and the intra prediction mode of the second neighboring block are angle modes; as well as When determining that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angle modes, generating a most probable mode MPM list, the MPM list including a plurality of candidate modes for intra prediction of the current block, wherein: Record the maximum mode and the minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, when the absolute value of the difference between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block is equal to 2: Setting the first candidate mode in the MPM list to the minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the second candidate mode in the MPM list to the maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the third candidate mode of the MPM list to a first neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the fourth candidate mode of the MPM list to a second neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the second neighboring angle mode being different from the first neighboring angle mode; The fifth candidate mode of the MPM list is set to a first neighboring angle mode of a maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block.
4. The video encoding method according to claim 3, characterized in that The MPM list includes: MPM[0] = ang_min MPM[1] = ang_max MPM[2] = ((ang_min-1)%mod) + 2 MPM[3] = ((ang_min + offset)%mod) + 2 MPM[4] = ((ang_max-1)%mod) + 2 Among them, Mode_A and Mode_B represent the intra-frame prediction mode of the first adjacent block and the intra-frame prediction mode of the second adjacent block respectively, 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, ang_max is set to Mode_A, ang_min is set to Mode_B, the variable offset = mod - 3, the variable mod = M - 2, M is 34 or 66.
5. A video decoding device, characterized in that: The device comprises a determining unit and a generating unit: The determining unit is used to determine whether the intra-frame prediction mode of the first neighboring block of the current block and the intra-frame prediction mode of the second neighboring block are angle modes; and The generating unit is configured to determine a most probable mode (MPM) list when it is determined that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angle modes, wherein the MPM list includes a plurality of candidate modes for intra prediction of the current block, wherein: Record the maximum mode and the minimum mode between the intra-frame prediction mode of the first neighboring block and the intra-frame prediction mode of the second neighboring block, when the absolute value of the difference between the intra-frame prediction mode of the first neighboring block and the intra-frame prediction mode of the second neighboring block is equal to 2: Setting the first candidate mode in the MPM list to the minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the second candidate mode in the MPM list to the maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the third candidate mode of the MPM list to a first neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the fourth candidate mode of the MPM list to a second neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the second neighboring angle mode being different from the first neighboring angle mode; The fifth candidate mode of the MPM list is set to a first neighboring angle mode of a maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block.
6. A video encoding device, characterized in that: The device comprises a determining unit and a generating unit: The determining unit is used to determine whether the intra-frame prediction mode of the first neighboring block of the current block and the intra-frame prediction mode of the second neighboring block are angle modes; and The generating unit is configured to generate a most probable mode (MPM) list when determining that the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block are angle modes, wherein the MPM list includes a plurality of candidate modes for intra prediction of the current block, wherein: Record the maximum mode and the minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, when the absolute value of the difference between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block is equal to 2: Setting the first candidate mode in the MPM list to the minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the second candidate mode in the MPM list to the maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the third candidate mode of the MPM list to a first neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block; Setting the fourth candidate mode of the MPM list to a second neighboring angle mode that is a minimum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block, the second neighboring angle mode being different from the first neighboring angle mode; The fifth candidate mode of the MPM list is set to a first neighboring angle mode of a maximum mode between the intra prediction mode of the first neighboring block and the intra prediction mode of the second neighboring block.
7. 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 4.
8. A computer device, characterized in that: The device comprises a processor and a memory: The memory is used to store program codes and transmit the program codes to the processor; The processor is configured to execute the method according to any one of claims 1 to 4 according to the instructions in the program code.
9. A method for generating a video bitstream, characterized in that: include: Generate video bitstream; The video bitstream is generated according to the method according to any one of claims 3 to 4.
Citation Information
Patent Citations
Method and device for intra prediction
CN108174205A
Method for coding / decoding of intra prediction mode and apparatus thereof
KR1020130027975A