Encoder, decoder, and corresponding method for intranet prediction
By deriving intra-prediction modes through incremental or decremental values based on their presence in the most probable modes, the method addresses inefficiencies in intra-predictive coding, improving coding efficiency and reducing processor load.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2023-12-07
- Publication Date
- 2026-07-23
- Estimated Expiration
- Not applicable · inactive patent
AI Technical Summary
Existing video coding techniques face inefficiencies in intra-predictive mode coding, particularly when the intra-predictive mode is not included in the Most Probable Mode (MPM) list, leading to increased processor load and reduced coding efficiency.
A method and apparatus for deriving intra-prediction modes by incrementing or decrementing values based on their presence in a set of most probable modes, simplifying the non-MPM mode derivation process by ensuring the planar mode is always considered, thereby optimizing coding efficiency.
This approach enhances coding efficiency by reducing the number of bits required for intra-predictive mode coding and simplifying the derivation process, especially when the mode is not in the MPM list, leading to more efficient video compression and decompression.
Smart Images

Figure 0007894351000026 
Figure 0007894351000027 
Figure 0007894351000028
Abstract
Description
Technical Field
[0001] Cross - References to Related Applications This application claims priority to U.S. Provisional Application No. 62 / 822,865, filed Mar. 23, 2019; U.S. Provisional Application No. 62 / 824,282, filed Mar. 26, 2019; and U.S. Provisional Application No. 62 / 824,360, filed Mar. 27, 2019, all of which are incorporated herein by reference.
[0002] Technical Field Embodiments of the present application (disclosure) generally relate to the field of picture processing, and more particularly, to intra - prediction.
Background Art
[0003] Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as broadcast digital TV, video transmission over the Internet and mobile networks, real - time conversational applications such as video chat and video conferencing, DVDs and Blu - ray discs, video content collection and editing systems, and video cameras for security applications.
[0004] Even the amount of video data required to depict a relatively short video can be considerable, which can create difficulties when the data is streamed or otherwise communicated through communication networks with limited bandwidth. Therefore, video data is generally compressed before being transmitted through modern telecommunication networks. Video size can also be an issue when video is stored in storage, as memory resources may be limited. Video compressors often use software and / or hardware at the source to encode the video data before transmission or storage, thereby reducing the amount of data required to represent the digital video image. The compressed data is then received at the destination by a video decompressor that decodes the video data. Due to limited network resources and the ever-increasing demand for higher video quality, improved compression and decompression techniques that improve the compression ratio with little to no sacrifice of picture quality are desirable.
[0005] In particular, there is a continuing demand for reducing processor load in the context of intra-predictive processing. In the art, it is known to use a Most Probable Mode (MPM) list for intra-predictive mode coding. The MPM list reduces the number of bits required to code the intra-predictive mode of the current block. If the intra-predictive mode of the current block corresponds to an entry in the MPM list, the index is coded rather than the actual mode, thereby requiring fewer bits. However, the intra-predictive mode derivation process affects the efficiency of intra-mode coding if the intra-predictive mode is not included in the MPM list.
[0006] In view of this, the fundamental objective of the present invention is to provide a technique for obtaining an intra-predictive mode that results in more efficient coding compared to the aforementioned technique. [Overview of the project]
[0007] The above and other objectives are achieved by the subject matter of the independent claims. Further implementations are evident from the dependent claims, specification and drawings.
[0008] In a first aspect, the present invention relates to a method performed by a decoding device. This method includes the steps of: obtaining a value of indication information for the current block, the value of which indicates whether the intraprediction mode of the current block is included in the set of most likely modes. If the value of the indication information indicates that the intraprediction mode of the current block is not included in the set of most likely modes, the intraprediction mode of the current block, IntraPredModeY[xCb][yCb], is derived by the following ordered steps: i. When IntraPredModeY[xCb][yCb] is set to be equal to intra_luma_mpm_remainder[xCb][yCb], ii. The values of IntraPredModeY[xCb][yCb] are incremented by 1; Here, intra_luma_mpm_remainder[xCb][yCb] represents the remainder intra prediction mode, and the luma position (xCb, yCb) specifies the top-left sample of the current block relative to the top-left luma sample of the current picture.
[0009] In one possible implementation of the first aspect method, after step ii, deriving the current block's intra-predictive mode IntraPredModeY[xCb][yCb] further includes: iii. For i equal to 0 to 4 (including both ends), if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is incremented by 1.
[0010] In one possible implementation of the first aspect method, the set of most probable modes includes five candidate intra-predictive modes and planar modes. The candidate intra-predictive modes in the set of most probable modes, candModeList[i], are derived as follows: For i=0..3 and j=(i+1)..4 for each i, if candModeList[i] is greater than candModeList[j], then both values are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j])
[0011] In a second aspect, the present invention relates to a method performed by an encoding device. The method includes deriving a variable (e.g., intra_luma_mpm_remainder) using the current block's intra-prediction mode IntraPredModeY[xCb][yCb] by the following ordered steps, when the current block's intra-prediction mode IntraPredModeY[xCb][yCb] is not included in the set of most certain modes:
[0012] i. For i equal to 0 to 4 (including both endpoints), if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is reduced by 1. Here, candModeList[i] represents the candidate intra-prediction modes in the set of most likely modes; ii. The value of IntraPredModeY[xCb][yCb] is reduced by 1; Here, the rumor position (xCb, yCb) specifies the top-left sample of the current block relative to the top-left rumor sample of the current picture. The method further includes the step of sending a bitstream to the decoder, where the bitstream contains the information of the aforementioned variables.
[0013] In a possible implementation of the second aspect of the method, the set of most likely modes includes five candidate intra-predictive modes and planar modes. The candidate intra-predictive modes in the set of most likely modes, candModeList[i], are derived as follows: For i=0..3 and j=(i+1)..4 for each i, if candModeList[i] is greater than candModeList[j], then both values are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j])
[0014] A method according to the first aspect of the present invention can be performed by a decoding device according to the third aspect of the present invention. The decoding device includes an acquisition unit and a derivation unit. The acquisition unit is configured to acquire a value of indication information for the current block, the value of which indicates whether the intra-prediction mode of the current block is included in the set of most probable modes. If the value of the indication information indicates that the intra-prediction mode of the current block is not included in the set of most probable modes, the derivation unit is configured to derive the intra-prediction mode of the current block, IntraPredModeY[xCb][yCb], by the following ordered steps:
[0015] i. When IntraPredModeY[xCb][yCb] is set to be equal to intra_luma_mpm_remainder[xCb][yCb], ii. The values of IntraPredModeY[xCb][yCb] are incremented by 1; Here, intra_luma_mpm_remainder[xCb][yCb] represents the remainder intra prediction mode, and the luma position (xCb, yCb) specifies the top-left sample of the current block relative to the top-left luma sample of the current picture.
[0016] Further features and implementations of the method according to the third aspect of the present invention correspond to the features and implementation forms of the apparatus according to the first aspect of the present invention.
[0017] A method according to a second aspect of the present invention can be performed by an encoding device according to a fourth aspect of the present invention. The encoding device includes a derivation unit and a transmission unit. The derivation unit is configured to derive a variable (e.g., intra_luma_mpm_remainder) using the intra-prediction mode IntraPredModeY[xCb][yCb] of the current block by the following ordered steps, if the intra-prediction mode IntraPredModeY[xCb][yCb] of the current block is not included in the set of most probable modes:
[0018] i. For i equal to 0 to 4 (including both endpoints), if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is reduced by 1. Here, candModeList[i] represents the candidate intra-prediction modes in the set of most likely modes; ii. The value of IntraPredModeY[xCb][yCb] is reduced by 1; The transmitting unit is configured to send a bitstream to the decoder, where the bitstream contains the information of the aforementioned variables.
[0019] Further features and implementations of the method according to the fourth aspect of the present invention correspond to the features and implementation forms of the apparatus according to the second aspect of the present invention.
[0020] According to a fifth aspect, the present invention relates to an apparatus for decoding a video stream, comprising a processor and memory. The memory stores instructions causing the processor to perform the method according to the first aspect.
[0021] According to a sixth aspect, the present invention relates to an apparatus for encoding a video stream, the apparatus including a processor and a memory. The memory stores instructions that cause the processor to execute a method according to a second aspect.
[0022] According to a seventh aspect, there is provided a computer-readable storage medium storing instructions that, when executed, cause one or more processors configured to code video data. The instructions cause the one or more processors to execute a method according to a first aspect or a second aspect or any possible embodiment of a first aspect or a second aspect.
[0023] According to an eighth aspect, the present invention relates to a computer program including program code for executing a method according to a first aspect or a second aspect or any possible embodiment of a first aspect or a second aspect when executed on a computer.
[0024] Embodiments of the present invention simplify the non-MPM mode derivation process when the planar mode is always considered in the set of most accurate modes (either implicitly or explicitly). Since the plane corresponds to the minimum value of the intra mode, the derivation process of the non-MPM mode can be simplified. For the comparison and increment stages, since the plane is always in the MPM list, the comparison with the planar mode can be saved, and thus the initial value of the remaining intra prediction mode can be directly incremented by only 1 corresponding to step ii above. Correspondingly, embodiments of the present invention provide a technique for obtaining an intra prediction mode that results in more efficient coding compared to the art.
[0025] Details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims.
Brief Description of the Drawings
[0026] Embodiments of the present invention will be described in more detail below with reference to the accompanying drawings and figures. [Figure 1A] This is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 1B] This is a block diagram showing another example of a video coding system configured to implement embodiments of the present invention. [Figure 2] This is a block diagram showing an example of a video encoder configured to implement an embodiment of the present invention. [Figure 3] This is a block diagram illustrating the structure of a video decoder configured to implement embodiments of the present invention. [Figure 4] This is a block diagram showing examples of encoding or decoding devices. [Figure 5] This is a block diagram showing another example of an encoding or decoding device. [Figure 6] This is a block diagram showing examples of multiple reference line (MRL) coding tools. [Figure 7] This is a block diagram showing examples of 4x8 and 8x4 block divisions. [Figure 8] This block shows examples of divisions for all blocks except 4x8, 8x4, and 4x4. [Figure 9] This block contains examples of modeling / coding in a CABAC context. [Figure 10] This is a block diagram showing examples of neighboring blocks to the left (L) and above (A) of the current block. [Figure 11] Block diagram showing intra-prediction modes. [Figure 12] An embodiment of the current block intra prediction method 1200 implemented by the decoding device according to the present invention is shown. [Figure 13] An embodiment of the current block intra prediction method 1300 implemented by the encoding device according to the present invention is shown. [Figure 14]An embodiment of a decoding device 1400 for use in an image decoder according to the present invention is shown. [Figure 15] An embodiment of an encoding device 1500 for use in the image encoder according to the present invention is shown. [Figure 16] This is a block diagram showing an exemplary structure of a content supply system 3100 that realizes a content distribution service. [Figure 17] A block diagram showing the structure of an example terminal device.
[0027] In the following, unless otherwise explicitly specified, the same reference numeral refers to the same or at least functionally equivalent feature. [Modes for carrying out the invention]
[0028] The following description refers to accompanying drawings that form part of this disclosure and illustrate specific aspects of embodiments of the invention or specific aspects in which embodiments of the invention may be used. Embodiments of the invention may be used in other aspects and may include structural or logical modifications not shown in the drawings. Therefore, the following detailed description should not be construed as restrictive, and the scope of the invention is defined by the appended claims.
[0029] For example, disclosures relating to a described method may also be true for a corresponding apparatus or system configured to perform such method, and vice versa. For example, if one or more specific method steps are described, the corresponding apparatus may include one or more units, such as functional units, for performing the described one or more method steps (e.g., one unit that performs one or more steps, or multiple units, each performing one or more of the steps), even if such one or more units are not explicitly described or illustrated. On the other hand, if a particular apparatus is described based on one or more units, such as functional units, the corresponding method may include one step for performing the function of one or more units (e.g., one step that performs the function of the one or more units, or multiple steps, each performing one or more of the functions of the multiple units), even if such one or more steps are not explicitly described or illustrated. Furthermore, it is understood that the various exemplary embodiments and / or features described herein may be combined with each other unless otherwise specified.
[0030] Video coding typically refers to the processing of a sequence of pictures that make up a video or video sequence. The terms "frame" or "image" are sometimes used synonymously in the field of video coding instead of "picture." Video coding (or coding in general) has two parts: video encoding and video decoding. Video encoding is performed at the source and typically involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed at the destination and typically involves the reverse processing compared to the encoder to reconstruct the video picture. Embodiments referring to "coding" of a video picture (or pictures in general) are understood to relate to the "encoding" or "decoding" of the video picture or each video sequence. The combination of the encoding and decoding parts is also called a codec (coding and decoding).
[0031] In lossless video coding, the original video picture can be reconstructed. That is, the reconstructed video picture has the same quality as the original video picture (assuming there is no transmission loss or other data loss during storage or transmission). In lossy video coding, further compression is performed, for example, by quantization, to reduce the amount of data representing the video picture, and this cannot be fully reconstructed in the decoder. That is, the quality of the reconstructed video picture is lower or worse than the quality of the original video picture.
[0032] Several video coding standards belong to the group of “lossy hybrid video codecs” (i.e., combining 2D transform coding to apply spatial and temporal prediction in the sample domain with quantization in the transform domain). Each picture in a video sequence is typically partitioned into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, in an encoder, video is typically processed, i.e., encoded, at the block (video block) level. This is done, for example, by generating predicted blocks using spatial (in-picture) and / or temporal (inter-picture) predictions, subtracting the predicted blocks from the current blocks (blocks currently being processed / to be processed) to obtain residual blocks, transforming the residual blocks, and quantizing the residual blocks in the transform domain to reduce the amount of data to be transmitted (compression). In a decoder, the reverse process compared to the encoder is applied to the encoded or compressed blocks to reconstruct the current blocks for representation. Furthermore, the encoder replicates the decoder processing loop, and both generate identical predictions (e.g., intra-predictions and inter-predictions) and / or reconstructions for processing, i.e., coding of subsequent blocks.
[0033] In the following embodiments of the video coding system 10, the video encoder 20 and video decoder 30 are described based on Figures 1 to 3.
[0034] Figure 1A is a schematic block diagram showing an exemplary coding system 10, for example, a video coding system 10 (or simply coding system 10), in which the technology of the present application can be utilized. The video encoder 20 (or simply encoder 20) and video decoder 30 (or simply decoder 30) of the video coding system 10 represent an example of a device that may be configured to perform the technology described in the various examples of the present application.
[0035] As shown in Figure 1A, the coding system 10 has a source device 12 configured to provide encoded picture data 21 to a destination device 14 that decodes the encoded picture data 13, for example.
[0036] The source device 12 has an encoder 20 and may additionally, i.e., optionally, have a picture source 16, a preprocessor (or preprocessing unit) 18, for example, a picture preprocessor 18, and a communication interface or communication unit 22.
[0037] The picture source 16 may have, or be, any kind of picture capturing device, e.g., a camera for capturing real-world pictures, and / or any kind of picture generating device, e.g., a computer graphics processor for generating computer-animated pictures, or any kind of other device for acquiring and / or providing real-world pictures, computer-generated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). The picture source may also have any kind of memory or storage for storing any of the above pictures.
[0038] To distinguish it from the processing performed by the preprocessor 18 and the preprocessing unit 18, the picture or picture data 17 may be referred to as the raw picture or raw picture data 17.
[0039] The preprocessor 18 is configured to receive (raw) picture data 17, perform preprocessing on the picture data 17, and obtain a preprocessed picture 19 or preprocessed picture data 19. The preprocessing performed by the preprocessor 18 may include, for example, cropping, color format conversion (e.g., RGB to YCbCr), color correction, or noise reduction. It is understood that the preprocessing unit 18 may be an optional component.
[0040] The video encoder 20 is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details will be described later, for example, based on Figure 2).
[0041] The communication interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 (or any further processed version thereof) through the communication channel 13 to another device, such as the destination device 14 or any other device, for storage or direct reconstruction.
[0042] The destination device 14 has a decoder 30 (for example, a video decoder 30) and may additionally, or optionally, have a communication interface or communication unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.
[0043] The communication interface 28 of the destination device 14 is configured to receive encoded picture data 21 (or a further processed version thereof) from, for example, the source device 12 directly, or from any other source, such as a storage device, such as an encoded picture data storage device, and to provide the encoded picture data 21 to the decoder 30.
[0044] Communication interfaces 22 and 28 may be configured to transmit or receive encoded picture data 21 or encoded data 13 via a direct communication link between the source device 12 and the destination device 14, for example, via a direct wired or wireless connection, or via any type of network, for example, a wired or wireless network or any combination thereof, or any type of private and public network or any combination thereof.
[0045] The communication interface 22 may be configured, for example, to package the encoded picture data 21 into an appropriate format, such as a packet, and / or to process the encoded picture data using any kind of transmission encoding or processing for transmission over a communication link or communication network.
[0046] The communication interface 28, which is the counterpart to the communication interface 22, may be configured, for example, to receive transmitted data and process the transmitted data using any type of corresponding transmission decoding or processing and / or depackaging to obtain encoded picture data 21.
[0047] Both communication interfaces 22 and 28 can be configured as one-way or two-way communication interfaces, as indicated by the arrows in Figure 1A for the communication channel 13 pointing from the source device 12 to the destination device 14, and may be configured, for example, to send and receive messages, for example, to set up a connection, to receive and confirm and exchange any other information related to the communication link and / or data transmission, such as encoded picture data transmission.
[0048] The decoder 30 is configured to receive encoded picture data 21 and provide decoded picture data 31 or decoded picture 31 (further details will be described later, for example, based on Figure 3 or Figure 5).
[0049] The post-processor 32 of the destination device 14 is configured to post-process the decoded picture data 31 (also called reconstructed picture data), for example, the decoded picture 31, to obtain post-processed picture data 33, for example, the post-processed picture 33. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., YCbCr to RGB), color correction, cropping, or resampling, or any other processing to prepare the decoded picture data 31 for display, for example, by the display device 34.
[0050] The display device 34 of the destination device 14 is configured to receive post-processed picture data 33 for displaying the picture, for example, to a user or viewer. The display device 34 may be any type of display for representing the reconstructed picture, for example, an integrated or external display or monitor, or may include one. The display may include, for example, a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, a plasma display, a projector, a microLED display, a liquid crystal on silicon (LCoS), a digital optical processor (DLP), or any other type of display.
[0051] Figure 1A depicts the source device 12 and the destination device 14 as separate devices, but the embodiment of the device may include both or both functions, such as the source device 12 or its corresponding function and the destination device 14 or its corresponding function. In such embodiments, the source device 12 or its corresponding function and the destination device 14 or its corresponding function may be implemented using the same hardware and / or software, or by separate hardware and / or software, or any combination thereof.
[0052] As will be obvious to those skilled in the art based on the foregoing description, the functions of different units or the presence and (strict) division of functions within the source device 12 and / or destination device 14 as shown in Figure 1A may vary depending on the actual device and application.
[0053] The encoder 20 (for example, a video encoder 20), or the decoder 30 (for example, a video decoder 30), or both the encoder 20 and the decoder 30, may be implemented via processing circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video coding, or any combination thereof, as shown in Figure 1B. The encoder 20 may be implemented via processing circuit 46 to embody various modules discussed with respect to the encoder 20 of Figure 2 and / or any other encoder systems or subsystems described herein. The decoder 30 may be implemented via processing circuit 46 to embody various modules discussed with respect to the decoder 30 of Figure 3 and / or any other decoder systems or subsystems described herein. The processing circuits may be configured to perform various operations, as shown later, as shown in Figure 5. If the technology is partially implemented in software, the device may store instructions for the software in a suitable non-temporary computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the technology of the present disclosure. Either the video encoder 20 or the video decoder 30 may also be integrated within a single device as part of a combined encoder / decoder (codec), for example, as shown in Figure 1B.
[0054] The source device 12 and destination device 14 may include any of a wide range of devices, including any type of handheld or stationary device, such as a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or content delivery server), a broadcast receiver, a broadcast transmitter, etc., and may or may not use an operating system.
[0055] In some cases, the source device 12 and destination device 14 may be equipped for wireless communication. Thus, the source device 12 and destination device 14 may be wireless communication devices. In some cases, the video coding system 10 shown in Figure 1A is merely an example, and the technology of the present application may be applied to video coding scenarios (e.g., video encoding or video decoding) that do not necessarily involve data communication between the encoding device and the decoding device. In other examples, the data may be retrieved from local memory, streamed over a network, etc. A video encoding device can encode data and store it in memory, and / or a video decoding device can retrieve the data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode the data into memory and / or retrieve the data from memory and decode it.
[0056] For convenience of description, embodiments of the present invention are described herein with reference to, for example, High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, next-generation video coding standards developed by the ITU-T Video Coding Expert Group (VCEG) and the ISO / IEC Motion Picture Expert Group (MPEG) Joint Collaboration Team on Video Coding (JCT-VC). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.
[0057] Encoder and encoding method Figure 2 shows a schematic block diagram of an exemplary video encoder 20 configured to implement the technology of the present invention. In the example of Figure 2, the video encoder 20 has an input 201 (or input interface 201), a residual calculation unit 204, a transformation unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transformation unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy encoding unit 270, and an output 272 (or output interface 272). The mode selection unit 260 may include an inter-prediction unit 244, an intra-prediction unit 254, and a partitioning unit 262. The inter-prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in Figure 2 may be referred to as a hybrid video encoder or a video encoder with a hybrid video codec.
[0058] The residual calculation unit 204, the conversion processing unit 206, the quantization unit 208, and the mode selection unit 260 may be said to form the forward signal path of the encoder 20, while the inverse quantization unit 210, the inverse conversion processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decode picture buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may be said to form the reverse signal path of the video encoder 20. The reverse signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in Figure 3). The inverse quantization unit 210, the inverse conversion processing unit 212, the reconstruction unit 214, the loop filter 220, the decode picture buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may also be said to constitute the “built-in decoder” of the video encoder 20.
[0059] Picture and picture partitioning (picture and block) The encoder 20 may be configured to receive, for example, a picture 17 (or picture data 17) via input 201, for example, a picture of a sequence of pictures forming a video or video sequence. The received picture or picture data may be a pre-processed picture 19 (or pre-processed picture data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be referred to as the current picture or the picture to be coded (particularly in video coding, to distinguish the current picture from other pictures, for example, previously encoded and / or decoded pictures of the same video sequence, i.e., the video sequence that also contains the current picture).
[0060] A (digital) picture can be considered, or may be considered, a two-dimensional array or matrix of samples with intensity values. Samples in the array may be referred to as pixels (short for picture element) or picture elements. The number of samples in the horizontal and vertical (or axis) directions of the array or picture defines the size and / or resolution of the picture. Typically, three color components are used for color representation; that is, a picture can be represented by, or contain, three sample arrays. In the RGB format or color space, a picture contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is typically represented in a luminance and chrominance format or color space, for example, YCbCr, which includes a luminance component represented by Y (sometimes L is used instead) and two chrominance components represented by Cb and Cr. The luminance (or luma for short) component Y represents brightness or gray level intensity (for example, as in a grayscale picture), while the two chrominance (or chroma for short) components Cb and Cr represent chromaticity or color information components. Thus, a picture in YCbCr format includes a luminance sample array of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). A picture in RGB format can be converted to or from YCbCr format, and vice versa. This process is also known as color conversion or transformation. If the picture is monochrome, it may contain only a luminance sample array. Thus, a picture can be, for example, in 4:2:0, 4:2:2, and 4:4:4 color formats, an array of luma samples or arrays of luma samples in a monochrome format and two corresponding arrays of chroma samples.
[0061] Embodiments of the video encoder 20 may include a picture partitioning unit (not shown in Figure 2) configured to partition a picture 17 into a plurality of (typically non-overlapping) picture blocks 203. These blocks may also be referred to as root blocks, macroblocks (H.264 / AVC), coding tree blocks (CTBs), or coding tree units (CTUs) (H.265 / HEVC and VVC). The picture partitioning unit may be configured to use the same block size and corresponding grid defining said block size for all pictures in a video sequence, or to change the block size between pictures, or between subsets or groups of pictures, and partition each picture into a corresponding block.
[0062] In further embodiments, the video encoder may be configured to directly receive a block 203 of picture 17, for example, one, some, or all of the blocks that make up picture 17. The picture block 203 may also be referred to as the current picture block or the picture block to be coded.
[0063] Similar to picture 17, picture block 203 is also considered, or can be considered, as a two-dimensional array or matrix of samples having intensity values (sample values), although it is smaller in dimensions than picture 17. In other words, block 203 can contain, for example, one sample array (e.g., a luma array in the case of monochrome picture 17, or a luma or chroma array in the case of a color picture), or three sample arrays (e.g., a luma array and two chroma arrays in the case of color picture 17), or any other number and / or type of arrays depending on the applied color format. The number of samples in the horizontal and vertical (or axis) directions of block 203 defines the size of block 203. Thus, the block may be, for example, an M×N (M columns × N rows) array of samples, or an M×N array of conversion coefficients.
[0064] An embodiment of the video encoder 20, as shown in Figure 2, may be configured to encode the picture 17 block by block, for example, encoding and prediction may be performed for each block 203.
[0065] An embodiment of the video encoder 20, as shown in Figure 2, may further be configured to partition and / or encode a picture using slices (also referred to as video slices). Here, the picture can be partitioned into one or more slices (typically non-overlapping) or encoded using such slices, each slice may contain one or more blocks (e.g., CTUs).
[0066] Embodiments of the video encoder 20, as shown in Figure 2, may further be configured to partition and / or encode a picture by using tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles). Here, the picture can be partitioned into one or more tile groups (typically non-overlapping) or encoded using such tile groups, each tile group may contain, for example, one or more blocks (e.g., CTUs) or one or more tiles. Each tile may be, for example, rectangular and may contain one or more blocks (e.g., CTUs), for example, complete or incomplete blocks.
[0067] Residual calculation The residual calculation unit 204 may be configured to calculate a residual block 205 (also referred to as residual 205) based on the picture block 203 and the prediction block 265 (further details about the prediction block 265 will be described later). This can be done, for example, by subtracting the sample values of the prediction block 265 from the sample values of the picture block 203 sample by sample (pixel by pixel) to obtain the residual block 205 in the sample region.
[0068] conversion The conversion processing unit 206 may be configured to apply a conversion, such as a discrete cosine transform (DCT) or discrete sine transform (DST), to the sample values of the residual block 205 to obtain conversion coefficients 207 in the conversion region. The conversion coefficients 207 may also be called conversion residual coefficients and represent the residual block 205 in the conversion region.
[0069] The conversion processing unit 206 may be configured to apply an integer approximation of the DCT / DST, such as the conversion specified for H.265 / HEVC. Compared to the orthogonal DCT conversion, such an integer approximation is typically scaled by a factor. An additional scaling factor is applied as part of the conversion process to preserve the norm of the residual blocks processed by the forward and inverse conversions. The scaling factor is typically selected based on certain constraints, such as the scaling factor being a power of 2 for the shift operation, the bit depth of the conversion coefficients, and a trade-off between precision and implementation cost. A specific scaling factor may be specified, for example, for the inverse conversion by the inverse conversion processing unit 212 (and the corresponding inverse conversion by the inverse conversion processing unit 312 in the video decoder 30), and a corresponding scaling factor for the forward conversion by the conversion processing unit 206 in the encoder 20 may be specified accordingly.
[0070] Embodiments of the video encoder 20 (specifically the conversion processing unit 206) may be configured to output conversion parameters, such as one or more conversion types, encoded or compressed, for example, directly or via the entropy encoding unit 270, so that, for example, the video decoder 30 may receive and use the conversion parameters for decoding.
[0071] quantization The quantization unit 208 may be configured to quantize the transformation coefficient 207, for example by applying scalar quantization or vector quantization, to obtain the quantized coefficient 209. The quantized coefficient 209 may also be referred to as the quantized transformation coefficient 209 or the quantized residual coefficient 209.
[0072] The quantization process can reduce the bit depth associated with some or all of the 207 conversion coefficients. For example, n-bit conversion coefficients may be rounded to m-bit conversion coefficients during quantization, where n is greater than m. The degree of quantization may be modified by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. Applicable quantization step sizes may be indicated by the quantization parameter (QP), which may be, for example, an index to a predefined set of applicable quantization step sizes. For example, small quantization parameters may correspond to finer quantization (smaller quantization step sizes), large quantization parameters may correspond to coarser quantization (larger quantization step sizes), or vice versa. Quantization may involve division by the quantization step size, and the corresponding and / or inverse dequantization by, for example, the inverse quantization unit 210 may involve multiplication by the quantization step size. Some standards, such as the HEVC embodiment, may be configured to use a quantization parameter to determine the quantization step size. In general, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of the expression involving division. Additional scaling factors may be introduced for quantization and dequantization to restore the norm of the residual block, which may be modified for the scaling used in the fixed-point approximation of the expression for the quantization parameter and quantization step size. In one example implementation, the scaling of the inverse transform and dequantization may be combined. Alternatively, a customized quantization table may be used to transmit signals from encoder to decoder, for example, in a bitstream. Quantization is a lossy operation, and the loss increases with increasing quantization step size.
[0073] Embodiments of the video encoder 20 (specifically the quantization unit 208) may be configured to output quantization parameters (QP) that are encoded, for example, directly or via the entropy encoding unit 270, so that, for example, the video decoder 30 can receive and apply the quantization parameters for decoding.
[0074] inverse quantization The inverse quantization unit 210 is configured to obtain dequantized coefficients 211 by applying the inverse quantization of the quantization unit 208 to the quantized coefficients, for example, by applying the reciprocal of the quantization scheme applied by the quantization unit 208, either based on or using the same quantization step size as the quantization unit 208. The dequantized coefficients 211 may also be called dequantized residual coefficients 211 and typically correspond to the transformation coefficients 207, although they are not identical to the transformation coefficients due to quantization losses.
[0075] Inverse Transform The inverse transform processing unit 212 is configured to apply the inverse transform of the transform applied by the transform processing unit 206, such as the inverse discrete cosine transform (DCT) or the inverse discrete sine transform (DST), or other inverse transforms, to obtain a reconstructed residual block 213 (or the corresponding dequantized coefficient 213) in the sample region. The reconstructed residual block 213 is sometimes referred to as the transform block 213.
[0076] Reconstruction The reconstruction unit 214 (for example, an adder or summer 214) is configured to add the transformed block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain the reconstructed block 215 in the sample region. This is done, for example, by adding the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265 sample by sample.
[0077] filtering The loop filter unit 220 (or simply "loop filter" 220) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally, to filter the reconstructed sample to obtain a filtered sample. The loop filter unit is configured, for example, to smooth pixel transitions or to otherwise improve video quality. The loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, a smoothing filter, or a cooperative filter, or any combination thereof. Although the loop filter unit 220 is shown as an in-loop filter in Figure 2, in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 is sometimes referred to as the filtered reconstructed block 221.
[0078] Embodiments of the video encoder 20 (specifically the loop filter unit 220) may be configured to output loop filter parameters (such as sample-adaptive offset information) encoded, for example, directly or via the entropy encoding unit 270, so that, for example, the decoder 30 can receive the same loop filter parameters or the respective loop filters and apply them for decoding.
[0079] Decode picture buffer The decode picture buffer (DPB) 230 may be a memory that stores a reference picture or generally reference picture data for encoding video data by the video encoder 20. The DPB 230 may be made up of any of a variety of memory devices, such as dynamic random access memory (DRAM) including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decode picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decode picture buffer 230 may further be configured to store other previously filtered blocks of the same current picture or a different picture, for example, a previously reconstructed picture, for example, a previously reconstructed and filtered block 221, and may provide a complete previously reconstructed, i.e., decoded picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples), for example, for interpretation. The decode picture buffer (DPB) 230 may be configured to store, for example, one or more unfiltered reconfigured blocks 215, or generally unfiltered reconfigured samples, or any other further processed versions of the reconfigured blocks or samples, if the reconfigured blocks 215 are not filtered by the loop filter unit 220.
[0080] Mode selection (partitioning and prediction) The mode selection unit 260 includes a partitioning unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or acquire original picture data, for example, the original block 203 (the current block 203 of the current picture 17), and reconstructed picture data, for example filtered and / or unfiltered reconstructed samples or blocks, from the same (current) picture and / or from one or more previously decoded pictures, from, for example, a decoded picture buffer 230 or other buffer (for example, a line buffer, not shown). The reconstructed picture data is used as reference picture data for predictions, for example, inter-prediction or intra-prediction, in order to obtain a prediction block 265 or predictor 265.
[0081] The mode selection unit 260 may be configured to determine or select a partitioning (including no partitioning) and prediction mode (e.g., intra or inter-prediction mode) for the current block prediction mode, and to generate the corresponding prediction blocks 265 used for calculating the residual blocks 205 and reconstructing the reconstructed blocks 215.
[0082] Embodiments of the mode selection unit 260 may be configured to select a partitioning and prediction mode (for example, from those supported or available to the mode selection unit 260) that provides the best match, i.e., the minimum residual (minimum residual meaning better compression for transmission or storage) or minimum signal transmission overhead (minimum signal transmission overhead meaning better compression for transmission or storage), or that considers or balances both. The mode selection unit 260 may also be configured to determine the partitioning and prediction mode based on rate distortion optimization (RDO), i.e., to select a prediction mode that provides minimum rate distortion. In this context, terms such as “best,” “minimum,” and “optimal” do not necessarily refer to an overall “best,” “minimum,” and “optimal,” but may also refer to the achievement of selection criteria or other constraints such as termination or values being above or below a threshold, which could potentially lead to a “suboptimal selection” but reduce complexity and processing time.
[0083] In other words, the partitioning unit 262 may be configured to partition block 203 into smaller block partitions or subblocks (which also form blocks) using, for example, quadtree partitioning (QT), binary partitioning (BT), or ternary partitioning (TT), or any combination thereof, and to perform predictions for each of the block partitions or subblocks, for example, where mode selection involves selecting the tree structure of the partitioned block 203, and prediction modes are applied to each of the block partitions or subblocks.
[0084] The following describes in more detail the partitioning (e.g., by the partitioning unit 260) and prediction processing (by the inter-prediction unit 244 and the intra-prediction unit 254) performed by the exemplary video encoder 20.
[0085] Partitioning The partitioning unit 262 can now partition (or divide) block 203 into smaller partitions, for example, smaller blocks of square or rectangular size. These smaller blocks (which may also be called subblocks) may be further partitioned into even smaller partitions. This is also called tree partitioning or hierarchical tree partitioning, and may be recursively partitioned, for example, the root block at root tree level 0 (hierarchical level 0, depth 0), and then partitioned into two or more blocks at the next lower tree level, for example, a node at tree level 1 (hierarchical level 1, depth 1), and these blocks may again be partitioned into two or more blocks at the next lower level, for example, tree level 2 (hierarchical level 2, depth 2), and so on, until partitioning is terminated because a termination criterion is met, for example, the maximum tree depth or the minimum block size is reached. Blocks that are not further partitioned are also called leaf blocks or leaf nodes of the tree. A tree that uses partitioning into two partitions is called a binary tree (BT), a tree that uses partitioning into three partitions is called a ternary tree (TT), and a tree that uses partitioning into four partitions is called a quadary tree (QT).
[0086] As stated herein, the term “block” may refer to a part of a picture, particularly a square or rectangle. For example, with reference to HEVC and VVC, a block may be a coding tree unit (CTU), coding unit (CU), prediction unit (PU), and transformation unit (TU), and / or a corresponding block, such as a coding tree block (CTB), coding block (CB), transformation block (TB), or prediction block (PB), or may correspond to these.
[0087] For example, a coding tree unit (CTU) may be, or include, a CTB of a lumen sample of a picture having three sample arrays, two corresponding CTBs of a chroma sample, or a CTB of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. Correspondingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that the division of a component into a CTB is a partition division. A coding unit (CU) may be, or include, a coding block of a lumen sample of a picture having three sample arrays, two corresponding coding blocks of a chroma sample, or a coding block of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. Correspondingly, a coding block (CB) may be an M×N block of samples for some values of M and N, such that the division of a CTB into a coding block is a partition division.
[0088] In embodiments, for example, according to HEVC, a coding tree unit (CTU) may be partitioned into CUs by using a quadtree structure referred to as a coding tree. The decision of whether to code a picture region using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU can further be partitioned into one, two, or four PUs, depending on the PU partitioning type. Within a single PU, the same prediction process is applied, and relevant information is transmitted to the decoder for each PU. After obtaining residual blocks by applying the prediction process based on the PU partitioning type, the CU can be partitioned into transformation units (TUs) according to another quadtree structure similar to the coding tree for that CU.
[0089] In embodiments, according to the latest video coding standard currently under development, for example, referred to as Versatile Video Coding (VVC), combined quadtree and binary tree (QTBT) partitioning is used, for example, to partition coding blocks. In a QTBT block structure, CUs can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first partitioned by a quadtree structure. The quadtree leaf nodes are further partitioned by a binary or ternary (or trident) structure. The partitioned tree leaf nodes are called coding units (CUs), and their segmentation is used for prediction and transformation processing without further partitioning. This means that in a QTBT coding block structure, CUs, PUs, and TUs have the same block size. In parallel, multi-partitioning, such as ternary tree partitioning, may also be used with the QTBT block structure.
[0090] In one example, the mode selection unit 260 of the video encoder 20 may be configured to perform any combination of the partitioning techniques described herein.
[0091] As described above, the video encoder 20 is configured to determine or select the best or most optimal prediction mode from a set of prediction modes (for example, a predetermined set). The set of prediction modes may include, for example, intra-prediction modes and / or inter-prediction modes.
[0092] Intra Prediction The set of intra-prediction modes may include 35 different intra-prediction modes, such as DC (or mean) modes and non-directional modes like planar modes, or directional modes, as defined, for example in HEVC, or it may include 67 different intra-prediction modes, such as DC (or mean) modes and non-directional modes like planar modes, or directional modes, as defined, for example in VVC.
[0093] The intra-prediction unit 254 is configured to use reconfigured samples from neighboring blocks of the same current picture to generate an intra-prediction block 265 according to a certain intra-prediction mode from a set of intra-prediction modes.
[0094] The intra-prediction unit 254 (or, generally, the mode selection unit 260) is further configured to output intra-prediction parameters (or, generally, information indicating the selected intra-prediction mode for that block) to the entropy encoding unit 270 in the form of syntax elements 266, to be included in the encoded picture data 21. Thereafter, for example, the video decoder 30 can receive the prediction parameters and use them for decoding.
[0095] Interpretation The (or possible) interpretation modes of the set depend on the available reference picture (i.e., a previously at least partially decoded picture stored, for example, in DBP 230) and other interpretation parameters. These other interpretation parameters include, for example, whether the entire reference picture is used to find the best-matching reference block, or only a portion of the reference picture, for example, a search window area around that region of the current block, and / or whether, for example, pixel interpolation, for example, half / semi-pixel and / or quarter-pixel interpolation is applied.
[0096] In addition to the prediction modes described above, skip mode and / or direct mode may also be applied.
[0097] The interpretation unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (neither of which are shown in Figure 2). The motion estimation unit may be configured to receive or acquire for motion estimation a picture block 203 (the current picture block 203 of the current picture 17) and a decoded picture 231, or at least one or more previously reconstructed blocks, for example, one or more other / different reconstructed blocks of a previously decoded picture 231. For example, a video sequence may include the current picture and a previously decoded picture 231, or in other words, the current picture and a previously decoded picture 231 may be part of a sequence of pictures that make up the video sequence, or may make up such sequence.
[0098] The encoder 20 may be configured, for example, to select a reference block from multiple reference blocks of the same or different pictures among several other pictures, and to provide the reference picture (or reference picture index) and / or the offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as an interprediction parameter to the motion estimation unit. This offset is also called the motion vector (MV).
[0099] The motion compensation unit is configured to obtain, for example, interprediction parameters, and to perform interprediction based on or using said interprediction parameters to obtain interprediction blocks 265. Motion compensation performed by the motion compensation unit may include taking or generating prediction blocks by performing interpolation, possibly to sub-pixel precision, based on the motion / block vector determined by motion estimation. Interpolation filtering may generate additional pixel samples from known pixel samples, thus potentially increasing the number of candidate prediction blocks that can be used to code picture blocks. Now receiving motion vectors for the picture block PU, the motion compensation unit can locate the prediction block that the motion vectors point to in one of the reference picture lists.
[0100] The motion compensation unit may also generate syntax elements associated with blocks and video slices for use by the video decoder 30 when decoding picture blocks of video slices. Tile groups and / or tiles and their respective syntax elements may be generated or used as additions to or replacements for slices and their respective syntax elements.
[0101] Entropy coding The entropy encoding unit 270 is configured to obtain encoded picture data 21 by applying, for example, an entropy encoding algorithm or scheme (e.g., variable-length coding (VLC) scheme, context-adaptive VLC scheme (CAVLC), arithmetic coding scheme, binarization, context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioned entropy (PIPE) coding, or other entropy encoding methods or techniques) or bypass (uncompressed) to quantized coefficients 209, inter-prediction parameters, intra-prediction parameters, loop filter parameters and / or other syntax elements. The encoded picture data 21 can be output via output 272, for example, in the form of an encoded bitstream 21, so that, for example, a video decoder 30 can receive its parameters and use them for decoding. The encoded bitstream 21 may be transmitted to the video decoder 30 or stored in memory for later transmission or retrieval by the video decoder 30.
[0102] Other structural variations of the video encoder 20 can be used to encode the video stream. For example, a non-conversion-based encoder 20 can quantize the residual signal directly for certain blocks or frames without a conversion processing unit 206. In another implementation, the encoder 20 may have a single unit that combines a quantization unit 208 and an inverse quantization unit 210.
[0103] Decoder and decoding method Figure 3 shows an example of a video decoder 30 configured to implement the technology of the present invention. The video decoder 30 is configured to receive encoded picture data 21 (e.g., encoded bitstream 21), which has been encoded by, for example, an encoder 20, in order to obtain a decoded picture 331. The encoded picture data or bitstream includes information for decoding the encoded picture data, such as data representing picture blocks and associated syntax elements of an encoded video slice (and / or tile group or tile).
[0104] In the example in Figure 3, the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transformation unit 312, a reconstruction unit 314 (e.g., an adder 314), a loop filter 320, a decode picture buffer (DBP) 330, a mode application unit 360, an interpretation unit 344, and an intraprediction unit 354. The interpretation unit 344 may be or may include a motion compensation unit. In some examples, the video decoder 30 can perform a decoding path that is generally the reverse of the encoding path described with respect to the video encoder 100 from Figure 2.
[0105] As described with respect to encoder 20, the inverse quantization unit 210, inverse processing unit 212, reconstruction unit 214, loop filter 220, decode picture buffer (DPB) 230, inter-prediction unit 344, and intra-prediction unit 354 are also referred to as the “built-in decoder” of video encoder 20. Thus, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse processing unit 312 may be functionally identical to the inverse processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the loop filter 320 may be functionally identical to the loop filter 220, and the decode picture buffer 330 may be functionally identical to the decode picture buffer 230. Accordingly, the descriptions given for each unit and function of the video encoder 20 apply correspondingly to each unit and function of the video decoder 30.
[0106] Entropy Decoding The entropy decode unit 304 is configured to parse the bitstream 21 (or generally, the encoded picture data 21), perform entropy decoding on the encoded picture data 21, for example, to obtain any or all of the following: quantized coefficients 309 and / or decoded coding parameters (not shown in Figure 3), such as inter-prediction parameters (e.g., reference picture index and motion vector), intra-prediction parameters (e.g., intra-prediction mode or index), transformation parameters, quantization parameters, loop filter parameters, and / or other syntax elements. The entropy decode unit 304 may be configured to apply a decoding algorithm or scheme corresponding to the encoding scheme described with respect to the entropy encoding unit 270 of the encoder 20. The entropy decode unit 304 may be further configured to provide the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the mode application unit 360, and other parameters to other units of the decoder 30. The video decoder 30 may receive syntax elements at the video slice level and / or video block level. Tile groups and / or tiles and their respective syntax elements may be received and / or used as additions or replacements to slices and their respective syntax elements.
[0107] inverse quantization The inverse quantization unit 310 may be configured to receive quantization parameters (QP) (or generally, information about inverse quantization) and quantized coefficients from the encoded picture data 21 (for example, by parsing and / or decoding by the entropy decoding unit 304), and to apply inverse quantization to the decoded quantized coefficients 309 based on the quantization parameters to obtain dequantized coefficients 311. The dequantized coefficients 311 may also be referred to as transformed coefficients 311. The inverse quantization process may use the quantization parameters determined by the video encoder 20 for each video block in a video slice (or tile or tile group) to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied.
[0108] Inverse Transform The inverse transformation processing unit 312 may be configured to receive dequantized coefficients 311, also called transformation coefficients 311, and to apply a transformation to the dequantized coefficients 311 in order to obtain a reconstructed residual block 213 in the sample region. The reconstructed residual block 213 may also be referred to as the transformation block 313. The transformation may be an inverse transformation, such as an inverse DCT, inverse DST, inverse integer transformation, or a conceptually similar inverse transformation process. The inverse transformation processing unit 312 may further be configured to receive transformation parameters or corresponding information from the encoded picture data 21 (for example, by parsing and / or decoding by the entropy decoding unit 304) to determine which transformation to apply to the dequantized coefficients 311.
[0109] Reconstruction The reconstruction unit 314 (for example, an adder or summer 314) may be configured to add the reconstructed residual block 313 to the prediction block 365 to obtain the reconstructed block 315 in the sample region. This is done, for example, by adding the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365.
[0110] filtering The loop filter unit 320 (either within or after the coding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, a smoothing filter, or a cooperative filter, or any combination thereof. Although the loop filter unit 320 is shown as an in-loop filter in Figure 3, in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.
[0111] Decode picture buffer Next, the decoded video block 321 of the picture is stored in the decoded picture buffer 330. The decoded picture buffer 330 stores the decoded picture 331 as a reference picture for subsequent motion compensation for other pictures and / or for their respective output or display.
[0112] The decoder 30 is configured to output the decoded picture 311, for example via output 312, for presentation or viewing to the user.
[0113] prediction The inter-prediction unit 344 may be identical to the inter-prediction unit 244 (in particular, the motion compensation unit), and the intra-prediction unit 354 may be functionally identical to the inter-prediction unit 254, and performs partitioning or partitioning decision and prediction based on partitioning and / or prediction parameters or respective information received from the encoded picture data 21 (for example by parsing and / or decoding by the entropy decoding unit 304). The mode application unit 360 may be configured to perform block-by-block prediction (intra-prediction or inter-prediction) based on the reconstructed picture, block, or respective sample (filtered or unfiltered) to obtain a predicted block 365.
[0114] When a video slice is coded as an intra-coded (I) slice, the intra-prediction unit 354 of the mode-applying unit 360 is configured to generate a prediction block 365 for the picture block of the current video slice based on the signaled intra-prediction mode and data from previously decoded blocks of the current picture. When a video picture is coded as an inter-coded (i.e., B or P) slice, the inter-prediction unit 344 (e.g., motion compensation unit) of the mode-applying unit 360 is configured to generate a prediction block 365 for the video block of the current video slice based on motion vectors and other syntax elements received from the entropy-decode unit 304. For inter-prediction, the prediction block may be generated from one of the reference pictures in one of the list of reference picture lists. The video decoder 30 can construct the reference frame lists, list 0 and list 1, using default construction techniques based on reference pictures stored in the DPB 330. The same or similar may apply to, or by, embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) as additions to or replacements for slices (e.g., video slices). For example, video may be coded using tile groups and / or tiles of type I, P, or B.
[0115] The mode application unit 360 is configured to determine predictive information about the video blocks of the current video slice by parsing motion vectors or related information and other syntax elements, and to use this predictive information to generate a predictive block for the current video block to be decoded. For example, the mode application unit 360 uses some of the received syntax elements to determine the predictive mode (e.g., intra-predictive or inter-predictive) used to code the video blocks of the video slice, the inter-predictive slice type (e.g., B-slice, P-slice, or GPB-slice), construction information for one or more lists of reference picture lists for the slice, motion vectors for each inter-encoded video block of the slice, the inter-predictive status for each intercoded video block of the slice, and other information for decoding the video blocks in the current video slice. The same or similar may be applied for embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) as additions to or replacements for slices (e.g., video slices), or by such embodiments. For example, video may be coded using I, P, or B tile groups and / or tiles.
[0116] An embodiment of the video decoder 30, as shown in Figure 3, may be configured to partition and / or decode a picture using slices (also referred to as video slices). Here, the picture can be partitioned into one or more slices (typically non-overlapping) or decoded using such slices, each slice may contain one or more blocks (e.g., CTUs).
[0117] Embodiments of the video decoder 30, as shown in Figure 3, may be configured to partition and / or decode a picture by using tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles). Here, the picture can be partitioned into one or more tile groups (typically non-overlapping) or decoded using such tile groups, each tile may be, for example, rectangular and may contain one or more blocks (e.g., CTUs), for example, complete or incomplete blocks.
[0118] Other variations of the video decoder 30 can be used to decode the encoded picture data 21. For example, the decoder 30 can generate an output video stream without a loop filtering unit 320. For example, a non-transformation-based decoder 30 can dequantize the residual signal directly for certain blocks or frames without an inverse processing unit 312. In another embodiment, the video decoder 30 may have a combination of an inverse quantization unit 310 and an inverse processing unit 312 in a single unit.
[0119] The encoder 20 and decoder 30 should understand that the processing result of the current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, further operations such as clipping or shifting may be performed on the processing result of interpolation filtering, motion vector derivation, or loop filtering.
[0120] It should be noted that further operations can be applied to the currently derived motion vectors of a block (including, but not limited to, affine mode control point motion vectors, affine, planar, and ATMVP mode subblock motion vectors, and temporal motion vectors). For example, the value of a motion vector is constrained to a predefined range according to its representation bits. If the representation bits of a motion vector are bitDepth, the range is -2^(bitDepth-1) to 2^(bitDepth-1)-1. For example, if bitDepth is set to 16, the range is -32768 to 32767, and if bitDepth is set to 18, the range is -131072 to 131071. For example, the value of a derived motion vector (e.g., the MV of four 4x4 subblocks in one 8x8 block) is constrained such that the maximum difference between the integer parts of the four 4x4 subblock MVs is less than or equal to N pixels, for example, less than or equal to 1 pixel. Here, we provide two methods for constraining the motion vector according to bitDepth.
[0121] Method 1: Remove the overflow MSB (most significant bit) using flow calculation.
number
number
[0122] Method 2: Remove the overflow MSB by clipping the value.
number
number
[0123] Figure 4 is a schematic diagram of a video coding device 400 according to one embodiment of the present disclosure. The video coding device 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, the video coding device 400 may be a decoder, such as the video decoder 30 in Figure 1A, or an encoder, such as the video encoder 20 in Figure 1A.
[0124] The video coding device 400 includes an inlet port 410 (or input port 410) and a receiver unit (Rx) 420 for receiving data; a processor, logic unit, or central processing unit (CPU) 430 for processing data; a transmitter unit (Tx) 440 and an exit port 450 (or output port 450) for transmitting data; and memory 460 for storing data. The video coding device 400 may also have optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the inlet port 410, receiver unit 420, transmitter unit 440, and exit port 450 for the entry and exit of optical or electrical signals.
[0125] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (for example, as a multi-core processor), FPGAs, ASICs, and DSPs. The processor 430 communicates with an inlet port 410, a receiver unit 420, a transmitter unit 440, an exit port 450, and memory 460. The processor 430 has a coding module 470. The coding module 470 implements the embodiments disclosed above. For example, the coding module 470 implements, processes, prepares, or provides various coding operations. Thus, by including the coding module 470, the functionality of the video coding device 400 is substantially improved and conversion of the video coding device 400 to different states is realized. Alternatively, the coding module 470 may be implemented as instructions stored in memory 460 and executed by the processor 430.
[0126] Memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as an overflow data storage device to store programs when the program is selected for execution, and to store instructions and data to be read during program execution. Memory 460 may be, for example, volatile and / or non-volatile, and may be read-only memory (ROM), random access memory (RAM), tertiary associative memory (TCAM), and / or static random access memory (SRAM).
[0127] Figure 5 is a simplified block diagram of a device 500 that may be used as either or both of the source device 12 and destination device 14 from Figure 1, according to an exemplary embodiment.
[0128] The processor 502 within the device 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device or multiple devices capable of manipulating or processing information that currently exists or will be developed in the future. The disclosed implementation can be carried out using a single processor, for example, processor 502, as shown in the figure, but advantages in speed and efficiency can be achieved by using multiple processors.
[0129] The memory 504 within the device 500 may, in some implementations, be a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device can be used as memory 504. Memory 504 may contain code and data 506 accessed by the processor 502 using the bus 512. Memory 504 may further contain an operating system 508 and an application program 510, the application program 510 containing at least one program that allows the processor 502 to perform the method described herein. For example, the application program 510 may contain applications 1 to N, which further contain a video coding application that performs the method described herein.
[0130] The device 500 may also include one or more output devices, such as a display 518. In one example, the display 518 may be a touch-sensitive display that combines the display with a touch-sensitive element that can operate to sense touch input. The display 518 may be coupled to the processor 502 via the bus 512.
[0131] Although shown here as a single bus, the bus 512 of device 500 can consist of multiple buses. Furthermore, the secondary storage 514 can be directly coupled to other components of device 500 or accessed via a network, and can include a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.
[0132] Background: Intra-mode coding In the current VTM 4.0, a 6-MPM (Most Probable Modes) list is constructed for intra-mode coding. The MPM list is introduced to reduce the number of bits required to code the intra-predicted mode of the current block. The 6-MPM list is constructed based on the intra-predicted modes of the current block's neighboring blocks. If the current block's intra-predicted mode is found in the MPM list, an index is coded instead of the actual mode, allowing fewer bits to be used. If the current block's intra-predicted mode is not found in the MPM list, truncated binarization is used to code the current block's intra-predicted mode. The MPM list provides a good prediction of the current block's intra-mode.
[0133] MPM list for multiple reference lines (MRLs) In VTM 4.0, the Multiple Reference Line (MRL) coding tool can use one of several neighboring reference lines to predict the sample in the current block. If the MRL line index value is equal to 0 (i.e., the nearest neighboring reference line is used as shown in Figure 6), the normal 6MPM list including the plane and DC is used. If the MRL line index value is not equal to 0, the 6-MPM list is used, excluding the plane (i.e., a value of 0) and DC (i.e., a value of 1).
[0134] MPM list for Intra-Subpartition Coding Mode (ISP) The intra-subpartition (ISP) coding mode is a new tool adopted in VTM4.0 (JVET-M0102). The Ruma intra-prediction block is divided into two or four subpartitions vertically or horizontally, depending on the block size dimensions, as shown in Table 1. Figures 7 and 8 illustrate two possible examples. All subpartitions satisfy the condition that they contain at least 16 samples. [Table 1]
[0135] When intra-subpartition coding mode is enabled, VTM 4.0 uses a different MPM list than DC mode. Intra-subpartition mode can be applied when the value of the multiple reference line index is equal to 0 (i.e., MRL does not apply to the current intra-prediction block). Since all subpartitions share a single intra-prediction mode, the MPM list is built once for the intra-block and shared by all subpartitions.
[0136] The construction of the MPM may depend on the ISP's partitioning mode. Two partitioning modes are determined: horizontal or vertical. These are shown in Figures 7 and 8, where horizontal partitioning is shown at the top and vertical partitioning is shown at the bottom.
[0137] Table 2 below summarizes the characteristics of the 3MPM list used in VTM 4.0. [Table 2]
[0138] Background on CABAC Context Modeling / Coding As shown in Figure 9, CABAC coding consists of binarization, context modeling, and binary arithmetic coding. Binarization maps syntactic elements to binary symbols (bins). Context modeling estimates the probability of each non-bypassed (i.e., normally coded) bin based on some specific context. Finally, binary arithmetic coding compresses the bins into bits according to the estimated probabilities.
[0139] By decomposing each non-binary syntactic element value into a sequence of bins, further processing of each bin value in CABAC depends on the associated coding mode decision, which can be selected as normal mode or bypass mode. The latter bypass mode is chosen for bins that are assumed to be uniformly distributed, and as a result, the entire normal binary arithmetic encoding (and decoding) process is simply bypassed for those bins. In normal coding mode, each bin value is encoded using a normal binary arithmetic coding engine, where the associated probabilistic model is determined by a fixed selection based on the type of syntactic element and the bin position or bin index (binIdx) in the binarized representation of the syntactic element, or is adaptively selected from two or more probabilistic models depending on the relevant side information.
[0140] The selection of a probabilistic model is called context modeling. In CABAC, each probabilistic model is addressed using a unique context index (ctxIdx), which is determined by a fixed assignment or computed by context derivation logic, thereby specifying a given context model.
[0141] Background on how to determine left and top neighbors The intra-mode coding of a VVC depends on the intra-mode of its neighboring blocks, namely the blocks to its left and above the current block. Their locations are shown in Figure 10.
[0142] MPM Index Signaling A flag (i.e., the MPM flag) is used to indicate whether the current block's intra-prediction mode is present in the MPM list. If the MPM flag is true (i.e., a value of 1), the intra-prediction mode can be determined using the MPM index. The MPM index is coded using truncated unary code, as shown in Table 3, when the length of the MPM list is 6. If the MPM flag is not true, the current block's intra-prediction mode is not present in the MPM list, and the mode is coded using truncated binary code. Another example of the MPM index when the MPM list consists of five modes is shown in Table 4. The bin string for the coding index is called truncated unary code (not truncated binary code for coding non-MPM modes). Note that for truncated unary code, bins 0 and 1 are interchangeable without loss of generality. In one example, the MPM index when the MPM list consists of five modes can also be coded as shown in Table 5.
[0143] [Table 3] [Table 4] [Table 5]
[0144] Background information on Planar mode, DC, Horizontal, Vertical mode, and Angular mode: Intra-predictive modes are Planar (value 0) and DC (value 1). Other intra-predictive modes are called Angular prediction modes.
[0145] In VTM4.0, the following syntax design, as shown in Table 6, is used to transmit intra-predictive mode information. [Table 6]
[0146] intra_luma_ref_idx[x0][y0] can have one of three values: 0, 1, or 2, indicating which reference line is used. If intra_luma_ref_idx[x0][y0] does not exist, it is assumed to be equal to 0. If intra_subpartitions_mode_flag[x0][y0] is equal to 1, it specifies that the current intra coding unit will be further partitioned (i.e., ISP mode will be enabled). If intra_subpartitions_mode_flag[x0][y0] is equal to 0, it specifies that the current intra coding unit will not be partitioned into subpartitions in rectangular transformation blocks. If intra_subpartitions_mode_flag[x0][y0] does not exist, it is assumed to be equal to 0. The syntax elements intra_luma_mpm_flag[x0][y0], intra_luma_mpm_idx[x0][y0], and intra_luma_mpm_remainder[x0][y0] specify the intra prediction mode for luma samples. intra_luma_mpm_flag[x0][y0] indicates whether the intra prediction mode for the current block is derived from the MPM list. If the value of intra_luma_mpm_flag[x0][y0] is 1, it indicates that the intra prediction mode for the current block is derived from the MPM list. If the value of intra_luma_mpm_flag[x0][y0] is 0, it indicates that the intra prediction mode for the current block is not derived from the MPM list. If intra_luma_mpm_flag[x0][y0] does not exist, it is assumed to be equal to 1. intra_luma_mpm_flag[x0][y0] corresponds to the MPM flag in Table 3. intra_luma_mpm_idx corresponds to the MPM index in Table 3 and uses truncated unary codes as shown in Table 3. intra_luma_mpm_remainder represents the truncated binary code for modes not in the MPM list.
[0147] Embodiment 1 discloses the syntax intra_luma_planar_flag and ctx.
[0148] According to one embodiment of the present invention, a flag intra_luma_planar_flag is introduced. If the value of intra_luma_mpm_flag is true (for example, its value is 1), the decoder parses intra_luma_planar_flag to determine whether the intra-prediction mode of the current block is planar mode. If the value of intra_luma_planar_flag is 1, the intra-prediction mode of the current block is planar mode. If the value of intra_luma_planar_flag is 0, the intra-prediction mode of the current block is not planar mode. If intra_luma_planar_flag does not exist (for example, if intra_luma_mpm_flag is equal to 0, this flag cannot be parsed from the bitstream), the value of intra_luma_planar_flag is assumed to be 0.
[0149] If written in the style of the VVC work draft specification, the current block's intra predictive mode IntraPredModeY[xCb][yCb] is derived by applying the following procedure: - If intra_luma_mpm_flag[xCb][yCb] is equal to 1, - If intra_luma_planar_flag[xCb][yCb] is equal to 1, intraPredModeY[xCb][yCb] will be set to INTRA_PLANAR. - Otherwise, IntraPredModeY[xCb][yCb] is set to equal to candModeList[intra_luma_mpm_idx[xCb][yCb]].
[0150] If the intra prediction mode is not planar mode (i.e., the value of intra_luma_planar_flag is 0), the decoder further parses the syntax intra_luma_mpm_idx.
[0151] In one example, the value of intra_luma_planar_flag is CABAC context-coded (i.e., not CABAC bypass coding), and the decoder uses the context to parse the flag based on whether the current block is a normal intra block or not.
[0152] In one example, the value of intra_luma_planar_flag is CABAC context-coded (i.e., not CABAC bypass coding), and the decoder parses the flag using context based on whether the current block is an intrablock with multiple reference lines (MRL) enabled.
[0153] In one example, the value of intra_luma_planar_flag is CABAC context-type coded (i.e., not CABAC bypass coded), and the decoder decodes the flag using a context based on whether the current block is an intrablock with intra-subpartition (ISP) coding mode enabled.
[0154] In one example, the location of intra_luma_planar_flag is arranged as shown in Table 7. [Table 7]
[0155] Embodiment 2: intra_luma_not_planar_flag and ctx According to one embodiment of the present invention, the syntax intra_luma_not_planar_flag is introduced.
[0156] If the value of intra_luma_mpm_flag is true (for example, if its value is 1), the decoder parses intra_luma_not_planar_flag to determine whether the intra prediction mode of the current block is planar mode. If the value of intra_luma_not_planar_flag is 1, the intra prediction mode of the current block is not planar mode; if the value of intra_luma_not_planar_flag is 0, the intra prediction mode of the current block is planar mode. If intra_luma_not_planar_flag is not present in the bitstream, its value is assumed to be 1. In one example, the position of intra_luma_not_planar_flag is arranged as shown in Table 8.
[0157] If the current block's intra prediction mode is not planar mode (i.e., the value of intra_luma_not_planar_flag is 1), the decoder further parses the syntax intra_luma_mpm_idx.
[0158] If written in the style of a VVC work draft specification, the current block's intra predictive mode IntraPredModeY[xCb][yCb] is derived by applying the following procedure: - If intra_luma_mpm_flag[xCb][yCb] is equal to 1, - If intra_luma_not_planar_flag[xCb][yCb] is equal to , intraPredModeY[xCb][yCb] is set to be equal to INTRA_PLANAR. - Otherwise, IntraPredModeY[xCb][yCb] is set to equal to candModeList[intra_luma_mpm_idx[xCb][yCb]].
[0159] In one example, the value of intra_luma_not_planar_flag is CABAC context-coded (i.e., not CABAC bypass-coded), and the decoder parses the flag using a context based on whether the current block is a normal intra block or not.
[0160] In one example, the value of intra_luma_not_planar_flag is CABAC context-coded (i.e., not CABAC bypass-coded), and the decoder parses the flag using a context based on whether the current block is an intrablock with multiple reference lines (MRL) enabled.
[0161] In one example, the value of intra_luma_not_planar_flag is CABAC context-coded (i.e., not CABAC bypass-coded), and the decoder parses the flag using a context based on whether the current block is an intra-block with intra-subpartition (ISP) coding mode enabled. [Table 8]
[0162] Embodiment 3: intra_luma_planar_flag and MRL, and bypass decoding According to one embodiment of the present invention, the flag intra_luma_planar_flag is introduced.
[0163] If the value of intra_luma_mpm_flag is true (for example, its value is 1), the decoder parses whether the value of the reference index line ((intra_luma_ref_idx) is 0. If the value of the reference index line is 0, the value of intra_luma_planar_flag is parsed to determine whether the intra-prediction mode of the current block is planar mode. If the value of intra_luma_planar_flag is 1, the intra-prediction mode of the current block is planar mode. If the value of intra_luma_planar_flag is 0, the intra-prediction mode of the current block is not planar mode. If intra_luma_planar_flag does not exist, its value is assumed to be 0.
[0164] If the current intra prediction mode of the block is not planar mode (i.e., the value of intra_luma_planar_flag is 0), the decoder further parses intra_luma_mpm_idx.
[0165] In one example, the value of intra_luma_planar_flag is CABAC bypass-coded (i.e., not CABAC context-type coded), and the decoder parses the flag without using any CABAC context.
[0166] The positions of intra_luma_planar_flag are arranged as shown in Table 9. [Table 9]
[0167] Embodiment 4: intra_luma_not_planar_flag and MRL, and bypass decoding According to one embodiment of the present invention, a flag intra_luma_not_planar_flag is introduced. If the value of intra_luma_mpm_flag is true (for example, its value is 1), the decoder parses whether the value of the reference index line is 0. If the value of the reference index line is 0, intra_luma_not_planar_flag is parsed to determine whether the intra-prediction mode of the current block is planar mode. If the value of intra_luma_not_planar_flag is 1, the intra-prediction mode of the current block is not planar mode. If the value of intra_luma_planar_flag is 0, the intra-prediction mode of the current block is planar mode. If intra_luma_not_planar_flag is not present, its value is assumed to be 1.
[0168] If the current intra-prediction mode of the block is not planar mode (i.e., the value of intra_luma_not_planar_flag is 1), the decoder further parses intra_luma_mpm_idx.
[0169] In one example, the value of intra_luma_not_planar_flag is CABAC bypass-coded (i.e., not CABAC context-type coded), and the decoder parses the flag without using any CABAC context.
[0170] The position of intra_not_luma_planar_flag is as shown in Table 10. [Table 10]
[0171] Embodiment 5: intra_luma_not_planar_flag and MRL are coded in a CABAC context (the difference from Embodiment 4 is that intra_luma_not_planar_flag is coded in a CABAC context rather than bypassed).
[0172] According to one embodiment of the present invention, the flag intra_luma_not_planar_flag is introduced.
[0173] If the value of intra_luma_mpm_flag is true (for example, its value is 1), the decoder parses whether the value of the reference index line is 0. If the value of the reference index line is 0, intra_luma_not_planar_flag is parsed to determine whether the intra prediction mode of the current block is planar mode. If the value of intra_luma_not_planar_flag is 1, the intra prediction mode of the current block is not planar mode. If the value of intra_luma_planar_flag is 0, the intra prediction mode of the current block is planar mode. If intra_luma_not_planar_flag does not exist, its value is assumed to be 1.
[0174] If the current block's intra prediction mode is not planar mode (i.e., the value of intra_luma_not_planar_flag is 1), the decoder further parses intra_luma_mpm_idx.
[0175] In one example, the value of intra_luma_not_planar_flag is CABAC context-coded (i.e., not CABAC bypass-coded), and the decoder parses the flag using a context based on whether the current block is a normal intra block or not.
[0176] In one example, the value of intra_luma_not_planar_flag is CABAC context-coded (i.e., not CABAC bypass-coded), and the decoder parses the flag using a context based on whether the current block is an intrablock with multiple reference lines (MRL) enabled.
[0177] In one example, the value of intra_luma_not_planar_flag is CABAC context-coded (i.e., not CABAC bypass-coded), and the decoder parses the flag using a context based on whether the current block is an intra-block with intra-subpartition (ISP) coding mode enabled.
[0178] The position of intra_not_luma_planar_flag is as shown in Table 11. [Table 11]
[0179] If intra_luma_not_planar_flag[x0][y0] does not exist, it is presumed to be equal to 1.
[0180] Table 12 below shows an example of assigning ctxInc to a syntactic element with context-coded bins. [Table 12]
[0181] In one embodiment, the MPM list is constructed according to the following process:
[0182] 8.4.2 Derivation process for ruma-intra prediction modes The inputs to this process are as follows: - A rumor position (xCb, yCb) that specifies the top-left sample of the current rumor coding block relative to the top-left rumor sample of the current picture. - The variable cbWidth specifies the width of the current coding block in lumens of samples. - A variable cbHeight that specifies the height of the current coding block in rumor samples.
[0183] In this process, the rumor-intra prediction mode IntraPredModeY[xCb][yCb] is derived.
[0184] Table 13 specifies the values and associated names for the intraprediction mode IntraPredModeY[xCb][yCb]. [Table 13] Note: INTRA_LT_CCLM, INTRA_L_CCLM, and INTRA_T_CCLM are applicable only to chromatic components.
[0185] IntraPredModeY[xCb][yCb] is derived as follows: - If intra_luma_not_planar_flag[xCb][yCb] is equal to 1, the following ordered steps are applied.
[0186] 1. The neighboring positions (xNbA, yNbA) and (xNbB, yNbB) are set equal to (xCb - 1, yCb + cbHeight - 1) and (xCb + cbWidth - 1, yCb - 1), respectively.
[0187] 2. When X is replaced by either A or B, the variable candIntraPredModeX is derived as follows: - A availability derivation process for the block is called: The neighboring block availability check process is called with the position (xCurr, yCurr) set equal to (xCb, yCb) and the neighboring position (xNbY, yNbY) set equal to (xNbX, yNbX) as inputs, and the output is assigned to avalableX. - The candidate intra prediction mode candIntraPredModeX is derived as follows: - If one or more of the following conditions are true, candIntraPredModeX is set equal to INTRA_PLANAR - The variable availableX is equal to FALSE - CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA and ciip_flag[xNbX][yNbX] is not equal to 1 - pcm_flag[xNbX][yNbX] is equal to 1 - X is equal to B and yCb - 1 is less than ((yCb >> CtbLog2SizeY) << CtbLog2SizeY) - Otherwise, candIntraPredModeX is set equal to IntraPredModeY[xNbX][yNbX]. Here, X is replaced by either neighboring block A or B, the rumor position (xCb, yCb) specifies the top-left sample of the current rumor coding block relative to the top-left rumor sample of the current picture, the position of neighboring A (xNbA, yNbA) is set to equal to (xCb-1, yCb+cbHeight-1), the position of neighboring B (xNbB, yNbB) is set to equal to (xCb+cbWidth-1, yCb-1), the variable cbWidth specifies the width of the current coding block, the variable cbHeight specifies the height of the current coding block in rumor samples, CuPredMode represents the current prediction mode, and SizeY represents the size of the Y component of the coding tree block.
[0188] 3. The candModeList[x] for x=0..4 is derived as follows: - If candIntraPredModeB is equal to candIntraPredModeA and candIntraPredModeA is greater than INTRA_DC, then candModeList[x] at x=0..4 is derived as follows: candModeList[0]=candIntraPredModeA (8-10) candModeList[1]=2+((candIntraPredModeA+61)%64) (8-12) candModeList[2]=2+((candIntraPredModeA-1)%64) (8-13) candModeList[3]=INTRA_DC (8-11) candModeList[4]=2+((candIntraPredModeA+60)%64) (8-14) -Otherwise, if candIntraPredModeB is not equal to candIntraPredModeA, and either candIntraPredModeA or candIntraPredModeB is greater than INTRA_DC, the following applies: -The variables minAB and maxAB are derived as follows: minAB=Min(candIntraPredModeA,candIntraPredModeB) (8-24) maxAB=Max(candIntraPredModeA, candIntraPredModeB) (8-25) - If both candIntraPredModeA and candIntraPredModeB are greater than INTRA_DC, then candModeList[x] at x=0..4 is derived as follows: candModeList[0]=candIntraPredModeA (8-27) candModeList[1]=candIntraPredModeB (8-29) candModeList[2]=INTRA_DC (8-29) - If maxAB-minAB is in the range of 2 to 62 (including both ends), the following applies: candModeList[3]=2+((maxAB+61)%64) (8-30) candModeList[4]=2+((maxAB-1)%64) (8-31) -Otherwise, the following applies: candModeList[3]=2+((maxAB+60)%64) (8-32) candModeList[4]=2+((maxAB)%64) (8-33) -Otherwise (if candIntraPredModeA or candIntraPredModeB is greater than INTRA_DC), candModeList[x] at x=0..4 is derived as follows: candModeList[0] = maxAB (8-65) candModeList[1]=INTRA_DC (8-66) candModeList[2]=2+((maxAB+61)%64) (8-66) candModeList[3]=2+((maxAB-1)%64) (8-67) candModeList[4]=2+((maxAB+60)%64) (8-68) -Otherwise, the following applies: candModeList[0]=INTRA_DC (8-71) candModeList[1]=INTRA_ANGULAR50 (8-72) candModeList[2]=INTRA_ANGULAR18 (8-73) candModeList[3]=INTRA_ANGULAR46 (8-74) candModeList[4]=INTRA_ANGULAR54 (8-75)
[0189] 4. IntraPredModeY[xCb][yCb] is derived by applying the following procedure: - If intra_luma_mpm_flag[xCb][yCb] is equal to 1, then IntraPredModeY[xCb][yCb] is set to equal to candModeList[intra_luma_mpm_idx[xCb][yCb]]. - Otherwise, IntraPredModeY[xCb][yCb] is derived by applying the following ordered steps: 1. For i=0..3 and j=(i+1)..4 for each i, if candModeList[i] is greater than candModeList[j], then both values are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j]) (8-94) 2. IntraPredModeY[xCb][yCb] is derived by the following ordered steps: i. IntraPredModeY[xCb][yCb] is set to be equal to intra_luma_mpm_remainder[xCb][yCb]. ii. The values of IntraPredModeY[xCb][yCb] are incremented by 1. iii. For i equal to 0 to 4, if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is incremented by 1. - Otherwise (intra_luma_not_planar_flag[xCb][yCb] is equal to 0), IntraPredModeY[xCb][yCb] is set to be equal to INTRA_PLANAR.
[0190] For x=xCb..xCb+cbWidth-1 and y=yCb..yCb+cbHeight-1, the variables IntraPredModeY[x][y] are set to be equal to IntraPredModeY[xCb][yCb].
[0191] In one example, the current block's intra-prediction mode (for example, variable name luma_intra_mode) is neither planar mode nor an intra-prediction mode in the 5-MPM list, and its value is derived as follows, and prediction is performed for this intra-prediction mode: 1. The value of intra_luma_mpm_remainder is derived from the bitstream, and luma_intra_mode is set to the value of intra_luma_mpm_remainder. 2. The values of IntraPredModeY[xCb][yCb] are incremented by 1. 3. For i equal to i = 0 to 4 (compared to each entry in the 5-MPM list), if luma_intra_mode is greater than or equal to MPM[i] (where MPM[0] is the first entry in the MPM list, MPM[1] is the second entry in the MPM list, etc.), the value of luma_intra_mode is incremented by 1. 4. Perform intra-prediction using the derived intra-prediction mode (luma_intra_mode) and the corresponding reference sample.
[0192] (Encoder side) In one example, the current block's intra-prediction mode (for example, variable name IntraPredModeY[xCb][yCb]) is neither the planar mode nor the intra-prediction mode in the 5-MPM list, and its value is coded as follows: 1. For i=0..3 and j=(i+1)..4 for each i, if candModeList[i] is greater than candModeList[j], then both values are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j]) (8-94) 2. For i equal to 4 to 0 (including both ends), if IntraPredModeY[xCb][yCb] is greater than candModeList[i], the value of IntraPredModeY[xCb][yCb] is reduced by 1. 3. The value of IntraPredModeY[xCb][yCb] is reduced by 1. 4. The values of IntraPredModeY[xCb][yCb] are written into the bitstream using a codeword with a truncated binary binarization process, and all bins within the codeword are bypass-coded. In an encoder, the current mode is known, and the derived codeword is (i.e., intra_luma_mpm_remainder). The specifications for the terminated binary binarization process are defined as follows (9.3.3.4 in JVET-Q2001-VE.docx): Truncated Binary (TB) binarization process The input to this process is a request for TB binarization for a certain syntax element using the values synVal and cMax. The output of this process is the TB binarization of the syntax element. The bin string of the TB binarization process for the syntax element synVal is specified as follows: n = cMax + 1 k = Floor(Log2(n)) (1550) u = (1 << (k + 1)) - n - If synVal is less than u, the TB bin string is derived by calling the FL binarization process specified in Section 9.3.3.7, assuming the cMax value is equal to (1 << k) - 1. - Otherwise (synVal is greater than or equal to u), the TB bin string is derived by calling the FL binarization process specified in Section 9.3.3.7, assuming the cMax value is equal to (1 << (k + 1)) - 1.
[0193] In an implementation of the above embodiments, the planar mode may be implicitly considered to always be the first entry in an implicit 6-MPM list. This implicit 6-MPM list is composed of the planar (always the first entry) and five other modes (which can be explicitly described as a 5-MPM list). This is because if the planar mode is always in the first position of the implicit 6-MPM list, it can be split outside the implicit MPM list, and a special flag (e.g., flag intra_luma_planar_flag or flag intra_luma_not_planar_flag) is assigned to indicate whether the intra prediction mode of the current block is planar.
[0194] As an example, consider introducing `intra_luma_not_planar_flag[x0][y0]` as a special flag indicating whether the planar mode is equal to the current block's intra-prediction mode. If it is planar mode, `intra_luma_not_planar_flag` is set to 0; otherwise, it is set to 1. In this case, the first bin of `mpm_idx` is equivalent to the special flag `intra_luma_not_planar_flag`.
[0195] If the intra-prediction mode of the current block is planar, the MPM index is equal to 0 and the coded bin is 0. If the intra-prediction mode of the current block is non-planar, the MPM index is not equal to 0 and the first bin of the MPM index is always equal to 1.
[0196] In one example, intra_luma_mpm_idx is coded using truncated unary (TR) code. Value TR Mpm_idx 0 0 Mpm_idx 1 10 Mpm_idx 2 110 Mpm_idx 3 1110 Mpm_idx 4 1111
[0197] According to one embodiment of the present invention (non-angular branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode is not angle mode, and above_mode is not angle mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]). MPM[1]:DC MPM[2]: Vertical mode (i.e., 50) MPM[3]: Horizontal mode (i.e., 18) MPM[4]: Vertical -4 (i.e., 46) MPM[5]: Vertical + 4 (i.e., 54) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0198] According to one embodiment of the present invention (non-angular branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode is not angle mode, and above_mode is not angle mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]). MPM[1]: DC MPM[2]: Vertical mode (i.e., 50) MPM[3]: Horizontal mode (i.e., 18) MPM[4]: 66 MPM[5]: 2 ● Step 4: Predict the current block based on the index (referred to as the MPM index) and the entries in the constructed list.
[0199] According to an embodiment of the present invention, (non - angular branching): ● Step 1: According to FIG. 10, obtain the intra - prediction mode of the left neighboring block and the intra - prediction mode of the upper neighboring block. If the intra - prediction mode of the neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is inter - coded), the intra - prediction mode of the neighboring block is set as planar. The intra - prediction mode of the left neighboring block is denoted as left_mode, and the intra - prediction mode of the upper neighboring block is denoted as above_mode. ● Step 2: Determine whether the intra - prediction mode of the neighboring block is an angular mode. ● Step 3: When all of the following conditions (the black - filled items) are evaluated to be true · left_mode is not an angular mode and above_mode is not an angular mode An intra - prediction mode list including N entries of the intra - prediction mode is constructed as follows (for example, N is equal to 5, the first entry corresponds to MPM[1], and the second entry corresponds to MPM[2]). MPM[1]: DC MPM[2]: Vertical mode (i.e., 50) MPM[3]: Horizontal mode (i.e., 18) MPM[4]: 2 MPM[5]: 34 ● Step 4: Predict the current block based on the index (referred to as the MPM index) and the entries in the constructed list.
[0200] According to one embodiment of the present invention (non-angular branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode is not angle mode, and above_mode is not angle mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]). MPM[1]:DC MPM[2]: Vertical mode (i.e., 50) MPM[3]: Horizontal mode (i.e., 18) MPM[4]:66 MPM[5]:34 ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0201] According to one embodiment of the present invention (one angle branch, one angle and the other non-angle): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • One of left_mode and above_mode is angular mode, and the other is non-angular mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): Define the angle mode as ang and obtain it as follows: If left_mode is in angle mode, then ang=left mode Otherwise (above mode is angle mode) ang = above mode MPM[1]:ang MPM[2]:DC MPM[3]:2+((ang+61)%64) MPM[4]:2+((ang-1)%64) MPM[5]:2+((ang+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0202] According to one embodiment of the present invention (one angle branch, one angle and the other non-angle): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • One of left_mode and above_mode is angular mode, and the other is non-angular mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): Define the angle mode as ang and obtain it as follows: If left_mode is in angle mode, then ang=left mode Otherwise (above mode is angle mode) ang = above mode MPM[1]:DC MPM[2]:ang MPM[3]:2+((ang+61)%64) MPM[4]:2+((ang-1)%64) MPM[5]:2+((ang+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0203] According to one embodiment of the present invention (one angle branch, one angle and the other non-angle): ● Step 1: According to FIG. 10, obtain the intra prediction mode of the left neighboring block and the intra prediction mode of the upper neighboring block. If the intra prediction mode of the neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is inter-coded), the intra prediction mode of the neighboring block is set as planar. The intra prediction mode of the left neighbor is represented as left_mode, and the intra prediction mode of the upper neighboring block is represented as above_mode. ● Step 2: Determine whether the intra prediction mode of the neighboring block is an angular mode. ● Step 3: When all of the following conditions (the items in black) are evaluated to be true, · One of left_mode and above_mode is an angular mode, and the other is a non-angular mode A list of intra prediction modes including N entries of intra prediction modes is constructed as follows (for example, N is equal to 5, the first entry corresponds to MPM[1], and the second entry corresponds to MPM[2]): Define the angular mode as ang and obtain it as follows: If left_mode is an angular mode, ang = left mode Otherwise (if above mode is an angular mode), ang = above mode MPM[1]: ang MPM[2]: 2 + ((ang + 61) % 64) MPM[3]: DC MPM[4]: 2 + ((ang - 1) % 64) MPM[5]: 2 + ((ang + 60) % 64) ● Step 4: Predict the current block based on the index (represented as the MPM index) and the entries of the constructed list.
[0204] According to an embodiment of the present invention, (one angular branch, one is angular and the other is non-angular): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • One of left_mode and above_mode is angular mode, and the other is non-angular mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): Define the angle mode as ang and obtain it as follows: If left_mode is in angle mode, then ang=left mode Otherwise (above mode is angle mode) ang = above mode MPM[0]:Plane MPM[1]:ang MPM[2]:2+((ang+61)%64) MPM[3]:2+((ang-1)%64) MPM[4]:DC MPM[5]:2+((ang+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0205] According to one embodiment of the present invention (one angle branch, one angle and the other non-angle): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • One of left_mode and above_mode is angular mode, and the other is non-angular mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): Define the angle mode as ang and obtain it as follows: If left_mode is in angle mode, then ang=left mode Otherwise (above mode is angle mode) ang = above mode MPM[1]:ang MPM[2]:2+((ang+61)%64) MPM[3]:2+((ang-1)%64) MPM[4]:2+((ang+60)%64) MPM[5]:DC ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0206] According to one embodiment of the present invention (one angle branch, two of the same angle mode): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • Both left_mode and above_mode are angle modes, and they are the same A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]: left mode MPM[2]:2+((left mode+61)%64) MPM[3]:2+((left mode-1)%64) MPM[4]:DC MPM[5]:2+((left mode+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0207] According to one embodiment of the present invention (one angle branch, two of the same angle mode): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • Both left_mode and above_mode are angle modes, and they are the same A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]:DC MPM[2]: left mode MPM[3]:2+((left mode+61)%64) MPM[4]:2+((left mode-1)%64) MPM[5]:2+((left mode+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0208] According to one embodiment of the present invention (one angle branch, two of the same angle mode): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • Both left_mode and above_mode are angle modes, and they are the same A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]: left mode MPM[2]:DC MPM[3]:2+((left mode+61)%64) MPM[4]:2+((left mode-1)%64) MPM[5]:2+((left mode+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0209] According to one embodiment of the present invention (one angle branch, two of the same angle mode): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • Both left_mode and above_mode are angle modes, and they are the same A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]: left mode MPM[2]:2+((left mode+61)%64) MPM[3]:DC MPM[4]:2+((left mode-1)%64) MPM[5]:2+((left mode+60)%64) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0210] According to one embodiment of the present invention (one angle branch, two of the same angle mode): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • Both left_mode and above_mode are angle modes, and they are the same A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]: left mode MPM[2]:2+((left mode+61)%64) MPM[3]:2+((left mode-1)%64) MPM[4]:2+((left mode+60)%64) MPM[5]:DC ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0211] According to one embodiment of the present invention (two-angle branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode and above_mode are two different angle modes. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]:left_mode MPM[2]:above_mode MPM[3]:DC -The variables minAB and maxAB are derived as follows: minAB=Min(above_mode,left_mode) maxAB=Max(above_mode,left_mode) - If maxAB-minAB is in the range of 2 to 62 (including both ends), the following applies: MPM[4]=2+((maxAB+61)%64) (8-30) MPM[5]=2+((maxAB-1)%64) (8-31) -Otherwise, the following applies: MPM[4]=2+((maxAB+60)%64) (8-32) MPM[5]=2+((maxAB)%64) (8-33) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0212] According to one embodiment of the present invention (two-angle branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode and above_mode are two different angle modes. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]:above_mode MPM[2]:left_mode MPM[3]:DC -The variables minAB and maxAB are derived as follows: minAB=Min(above_mode,left_mode) maxAB=Max(above_mode,left_mode) - If maxAB-minAB is in the range of 2 to 62 (including both ends), the following applies: MPM[4]=2+((maxAB+61)%64) (8-30) MPM[5]=2+((maxAB-1)%64) (8-31) -Otherwise, the following applies: MPM[4]=2+((maxAB+60)%64) (8-32) MPM[5]=2+((maxAB)%64) (8-33) ●Stage 6: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0213] According to one embodiment of the present invention (two-angle branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode and above_mode are two different angle modes. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]:left_mode MPM[2]:DC MPM[3]:above_mode -The variables minAB and maxAB are derived as follows: minAB=Min(above_mode,left_mode) maxAB=Max(above_mode,left_mode) - If maxAB-minAB is in the range of 2 to 62 (including both ends), the following applies: MPM[4]=2+((maxAB+61)%64) (8-30) MPM[5]=2+((maxAB-1)%64) (8-31) -Otherwise, the following applies: MPM[4]=2+((maxAB+60)%64) (8-32) MPM[5]=2+((maxAB)%64) (8-33) ●Stage 4: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0214] According to one embodiment of the present invention (two-angle branching): ●Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the upper neighboring block according to Figure 10. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or if the neighboring block is interconnected), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighbor is represented as left_mode, and the intra-prediction mode for the upper neighboring block is represented as above_mode. ●Step 2: Determine whether the intra prediction mode of the neighboring block is angle mode or not. ●Stage 3: If all of the following conditions (items with a middle dot) are evaluated as true, • left_mode and above_mode are two different angle modes. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, if N is equal to 5, the first entry corresponds to MPM[1] and the second entry corresponds to MPM[2]): MPM[1]:above_mode MPM[2]:DC MPM[3]:left_mode -The variables minAB and maxAB are derived as follows: minAB=Min(above_mode,left_mode) maxAB=Max(above_mode,left_mode) - If maxAB-minAB is in the range of 2 to 62 (including both ends), the following applies: MPM[4]=2+((maxAB+61)%64) (8-30) MPM[5]=2+((maxAB-1)%64) (8-31) -Otherwise, the following applies: MPM[4]=2+((maxAB+60)%64) (8-32) MPM[5]=2+((maxAB)%64) (8-33) ●Stage 6: Predict the current block based on the index (represented as the MPM index) and the entries in the constructed list.
[0215] In one implementation of this embodiment, N is set to be equal to 6.
[0216] In one implementation of this embodiment, N is set to equal 6. In this case, the above list of intra prediction modes includes the first five entries, not the sixth entry.
[0217] In one implementation of this embodiment, N is set to equal 4. In this case, the list of intra prediction modes above includes the first four entries, rather than the fifth and sixth entries.
[0218] In one implementation of this embodiment, the list of intra-prediction modes is called the MPM list.
[0219] In some implementations, the list index (MPM index) is signaled within the bitstream as an indicator. Advantageously, the MPM index can be coded using a context-adaptive entropy coder (CABAC). The MPM index can be coded by the CABAC according to a variety of probabilistic models (in other words, contexts).
[0220] For example, the first bin of the codeword for mpm_index is CABAC context-coded. In this example, the context is determined based on whether the current intrablock is a multiple reference line, ISP, or normal intrablock. A total of three contexts are created for the CABAC context of the first bin of the codeword for mpm_index.
[0221] If the MPM list includes both planar mode and DC mode, the MPM list obtained by removing planar mode and DC mode from the constructed MPM list is used by the multiple reference line coding tool. In this case, the 4-MPM list is used by the intra predictive mode coding of multiple reference lines. For example, after constructing the MPM list, the MPM list is {Planar (value 0), DC (value 1), VER (value 50), HOR (value 18), VER-4 (value 46), VER+4 (value 54)}, and then, when multiple reference lines are enabled, the 4-MPM list {VER, HOR, VER-4, VER+4} is used by the intra predictive mode coding.
[0222] If the MPM list includes planar mode but not DC mode, the MPM list obtained by removing the planar mode from the constructed MPM list is used by the multiple reference line coding tool. In this case, the 5-MPM list is used by the intra-predictive mode coding of multiple reference lines. For example, the MPM list is {Planar,VER,HOR,43,60,3} after the MPM list is constructed, and then, when multiple reference lines are enabled, the 5-MPM list {VER,HOR,43,60,3} is used by the intra-predictive mode coding.
[0223] In another example, a syntax modification may be needed for MPM lists that do not have a DC mode. If an MPM list does not contain a DC, the DC mode will be used very frequently in non-MPM branches (i.e., the mpm flag is false). In this case, a new syntax, DC_mode, is introduced. DC_mode equal to 1 indicates that the intra-predictive mode of the current block is DC mode. DC_mode equal to 0 indicates that the intra-predictive mode of the current block is not DC mode.
[0224] In other words, the old non-MPM syntax was, if(mpm_flag) ... else intra_mode (using TB) from, if(mpm_flag) ... else DComecode If(DC_mode==0) intra_mode(using TB) It will be changed to this.
[0225] The syntax DC_mode can be coded using a context-adaptive entropy coder (CABAC). DC_mode can be coded by CABAC according to a variety of probabilistic models (in other words, contexts). With the introduction of DC_Mode, the maximum value for censored binaries is 60, i.e., 67 (total number of modes) - 6 (MPM) - 1 (DC). Without the introduction of DC_Mode, the maximum value for censored binaries is 61, i.e., 67 (total number of modes) - 6 (MPM).
[0226] In particular, the following method of predictive coding of the current block, implemented by a decoding device, is provided herein. The decoding device is the video decoder 30 shown in Figure 1A, or the decoder 30 shown in Figure 3.
[0227] According to one embodiment 1200 (see Figure 12), a method for intra-predicting the current block implemented by a decoding device includes the following steps: In step 1201, the device obtains a value of the indication information for the current block. The indication information is indicated by a flag, for example, intra_luma_mpm_flag.
[0228] In step 1202, the device determines whether the value of the instruction information indicates that the current block's intra-predictive mode is included in the set of most probable modes. As described above, if the value of intra_luma_mpm_flag is equal to 1, the current block's intra-predictive mode is included in the set of most probable modes. If the value of intra_luma_mpm_flag is equal to 0, the current block's intra-predictive mode is not included in the set of most probable modes.
[0229] In step 1203, if the indicator value indicates that the current block's intra-predictive mode is not included in the set of most probable modes, the device derives the current block's intra-predictive mode IntraPredModeY[xCb][yCb] by the following ordered steps: i. IntraPredModeY[xCb][yCb] is set to be equal to intra_luma_mpm_remainder[xCb][yCb] ii. The values of IntraPredModeY[xCb][yCb] are incremented by 1. iii. For i equal to 0 to 4 (including both ends), if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is incremented by 1.
[0230] The candidate intra-prediction mode candModeList[i] in the set of most likely modes is derived as follows: For i=0..3 and j=(i+1)..4 for each i, if candModeList[i] is greater than candModeList[j], then both values are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j])
[0231] In step 1204, the device performs intra-prediction using the derived intra-prediction mode (luma_intra_mode) and the corresponding reference sample.
[0232] Detailed information about this embodiment 1200 is shown in the embodiments described above.
[0233] According to one embodiment 1300 (see Figure 13), a method for intra-predicting the current block implemented by an encoding device includes the following steps: The encoding device is the video encoder 20 in Figure 1A, or the encoder 20 in Figure 2.
[0234] In step 1301, the device determines whether the current block's intra-prediction mode is included in the set of most probable modes. In step 1302, if the current block's intra-prediction mode IntraPredModeY[xCb][yCb] is not included in the set of most probable modes, the device derives variables using the current block's intra-prediction mode IntraPredModeY[xCb][yCb] by the following ordered steps: i. For i equal to 0 to 4 (including both ends), if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is reduced by 1. ii. The values of IntraPredModeY[xCb][yCb] are reduced by 1.
[0235] The candidate intra-prediction mode candModeList[i] in the set of most likely modes is derived as follows: For i=0..3 and j=(i+1)..4 for each i, if candModeList[i] is greater than candModeList[j], then both values are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j])
[0236] In step 1303, the device encodes the bitstream. The bitstream contains the values of the variables, for example, intra_luma_mpm_remainder[xCb][yCb], and the device sends the encoded bitstream to the decoding device.
[0237] Detailed information about this embodiment 1300 is shown in the embodiments described above.
[0238] Figure 14 shows an embodiment of the decoding device 1400. The decoding device 1400 may be the video decoder 30 in Figure 1A or the decoder 30 in Figure 3, and the decoding device 1400 can be used to implement embodiment 1200 and other embodiments described above. The device includes an acquisition unit (1401) and a derivation unit (1402). The acquisition unit (1401) is configured to acquire a value of the indication information of the current block, the value of which indicates that the intra-predictive mode of the current block is included in the set of most probable modes.
[0239] The derivation unit (1402) derives the intraprediction mode of the current block, IntraPredModeY[xCb][yCb], by the following ordered steps, if the value of the indicator information indicates that the intraprediction mode of the current block is not included in the set of most probable modes: i. IntraPredModeY[xCb][yCb] is set to be equal to intra_luma_mpm_remainder[xCb][yCb] ii. The values of IntraPredModeY[xCb][yCb] are incremented by 1. Here, intra_luma_mpm_remainder[xCb][yCb] represents the remainder intra prediction mode, and the luma position (xCb, yCb) specifies the top-left sample of the current block relative to the top-left luma sample of the current picture.
[0240] The device 1400 further includes a prediction unit 1403 (not shown in Figure 14). The prediction unit 1403 performs intra-prediction using the derived intra-prediction mode (luma_intra_mode) and the corresponding reference sample.
[0241] Figure 15 shows an embodiment of the encoding device 1500 for intra prediction. The encoding device 1500 may be the video encoder 20 in Figure 1A or the encoder 20 in Figure 2, and the encoding device 1500 can be used to implement embodiment 1300 and the other embodiments described above.
[0242] The device 1500 includes a derivation unit 1501 and a transmission unit 1502. The derivation unit (1501) is configured to derive a variable using the current block's intra-prediction mode IntraPredModeY[xCb][yCb] by the following ordered steps, if the current block's intra-prediction mode IntraPredModeY[xCb][yCb] is not included in the set of most certain modes: i. For i equal to 0 to 4 (including both endpoints), if IntraPredModeY[xCb][yCb] is greater than candModeList[i], the value of IntraPredModeY[xCb][yCb] is reduced by 1. Here, candModeList[i] represents the candidate intraprediction modes in the set of most likely modes; ii. The value of IntraPredModeY[xCb][yCb] is reduced by 1; Here, the rumor position (xCb, yCb) specifies the top-left sample of the current block relative to the top-left rumor sample of the current picture.
[0243] The transmitting unit (1502) is configured to transmit a bitstream to the decoder, where the bitstream contains the information of the aforementioned variables.
[0244] Embodiments of the present invention simplify the non-MPM mode derivation process when the planar mode is always considered (either implicitly or explicitly) in the MPM list and indicated as a flag (intra_luma_not_planar_flag). Since the planar mode corresponds to the minimum value of the intra-mode, the derivation process for the non-MPM mode can be simplified. For the comparison and increment steps, since the planar mode is always in the MPM list, the comparison with the planar mode can be omitted, and thus the initial value of the surplus intra-prediction mode can be directly incremented by 1, corresponding to step ii above.
[0245] The following describes the encoding and decoding methods shown in the above embodiments, as well as the applications of systems using them.
[0246] Figure 16 is a block diagram showing a content delivery system 3100 for realizing a content delivery service. This content delivery system 3100 includes a capture device 3102, a terminal device 3106, and optionally a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, Wi-Fi, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any combination thereof.
[0247] The capture device 3102 may generate data and encode the data by encoding methods as shown in the embodiments described above. Alternatively, the capture device 3102 may deliver the data to a streaming server (not shown in the figure), which encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or tablet, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include the source device 12 as described above. If the data includes video, the video encoder 20 included in the capture device 3102 may actually perform the video encoding process. If the data includes audio (i.e., voice), the audio encoder included in the capture device 3102 may actually perform the audio encoding process. In some practical scenarios, the capture device 3102 delivers the encoded video and audio data by multiplexing them together. For example, in other practical scenarios in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. The capture device 3102 delivers the encoded audio data and encoded video data separately to the terminal device 3106.
[0248] In the content supply system 3100, the terminal device 310 receives and plays back the encoded data. The terminal device 3106 may be a device with data receiving and restoration capabilities that can decode the encoded data described above, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set-top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or any combination thereof. For example, the terminal device 3106 may include the destination device 14 as described above. If the encoded data includes video, the video decoder 30 included in the terminal device is preferred for performing video decoding. If the encoded data includes audio, the audio decoder included in the terminal device is preferred for performing audio decoding.
[0249] For terminal devices with a display, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA) 3122, or a vehicle-mounted device 3124, the terminal device can provide the decoded data to its display. For terminal devices without a display, such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, an external display 3126 is made contact thereto to receive and display the decoded data.
[0250] When each device in this system performs encoding or decoding, a picture encoding device or a picture decoding device as shown in the embodiments described above can be used.
[0251] Figure 17 shows the structure of an example of a terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol progression unit 3202 analyzes the transmission protocol of the stream. This protocol includes, but is not limited to, Real-Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real-Time Transport Protocol (RTP), Real-Time Messaging Protocol (RTMP), or any combination thereof. After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to the multiplexing / decomposition unit 3204. The multiplexing / decomposition unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As mentioned above, in some practical scenarios, such as in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is sent to the video decoder 3206 and audio decoder 3208 without passing through the multiplexing / decomposition unit 3204.
[0252] Through multiplexing, a video elementary stream (ES), an audio ES, and optionally subtitles are generated. A video decoder 3206, including a video decoder 30 as described in the embodiments described above, decodes the video ES by the decoding method shown in the embodiments described above to generate video frames and provides this data to the synchronization unit 3212. An audio decoder 3208 decodes the audio ES to generate audio frames and provides this data to the synchronization unit 3212. Alternatively, the video frames may be stored in a buffer (not shown in Figure Y) before being provided to the synchronization unit 3212. Similarly, the audio frames may be stored in a buffer (not shown in Figure Y) before being provided to the synchronization unit 3212.
[0253] The synchronization unit 3212 synchronizes video frames and audio frames and supplies video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information may be coded in syntax using timestamps for the presentation of coded audio and visual data and for the delivery of the data stream itself.
[0254] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes them with the video and audio frames, and supplies the video / audio / subtitles to the video / audio / subtitle display 3216.
[0255] The present invention is not limited to the systems described above, and any of the picture encoding or picture decoding devices in the embodiments described above can be incorporated into other systems, such as automotive systems.
[0256] Mathematical operators The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more precisely defined, and additional operations such as exponentiation and real-valued division are defined. The numbering and counting conventions generally start from 0. For example, "the first" is equivalent to the 0th, "the second" is equivalent to the 1st, and so on.
[0257] Arithmetic operators The following operators are defined as follows: + Addition - Subtraction (as a two-argument operator) or sign reversal (as a unary prefix operator) * Multiplication including matrix multiplication x y Exponentiation. Specifies x raised to the power of y. In other contexts, such notation is used for superscripts where it is not intended to be interpreted as an exponentiation. / Integer division. The result is truncated towards zero. For example, 7 / 4 and -7 / -4 are truncated to 1, and -7 / 4 and 7 / -4 are truncated to -1. The ÷ symbol is used to indicate division in mathematical expressions where rounding or truncation is not intended.
number
number
[0258] Logical operators The following logical operators are defined as follows: x && y: Boolean logic "and" for x and y Boolean logic "or" for x||yx and y ! Boolean logic "not" If x?y:zx is true or not equal to 0, it evaluates to the value of y; otherwise, it evaluates to the value of z.
[0259] Relational operators The following relational operators are defined as follows: > larger >= greater than or equal to < Smaller <= Less than or equal to == equal != Not equal When a relational operator is applied to a syntax element or variable to which the value "na" (not applicable) is assigned, the value "na" is treated as a unique value for that syntax element or variable. The value "na" is considered not to be equal to any other value.
[0260] Bitwise operator The following bitwise operators are defined as follows: & Bitwise 'and'. When acting on an integer argument, it acts on the two's complement representation of the integer value. When acting on a binary argument containing fewer bits than the other argument, the shorter argument is extended by adding additional significant bits equal to 0. | Bitwise 'or'. When acting on an integer argument, it acts on the two's complement representation of the integer value. When acting on a binary argument containing fewer bits than the other argument, the shorter argument is extended by adding additional significant bits equal to 0. ^ Bitwise 'exclusive or'. When acting on an integer argument, it acts on the two's complement representation of the integer value. When acting on a binary argument containing fewer bits than the other argument, the shorter argument is extended by adding additional significant bits equal to 0. x>>y Arithmetic right shift of y binary digits of the two's complement integer representation of x. This function is defined only for non-negative integer values of y. The bits shifted into the most significant bits (MSB) as a result of the right shift have the same value as the MSB of x before the shift operation. x<<y Arithmetic left shift of y binary digits of the two's complement integer representation of x. This function is defined only for non-negative integer values of y. The bits shifted into the least significant bits (LSB) as a result of the left shift have a value equal to 0.
[0261] Assignment operator The following arithmetic operators are defined as follows: = Assignment operator ++ Increment, i.e., x++ is equivalent to x=x+1; when used in an array index, it is evaluated to the value of the variable before the increment operation. [[ID=2,6]]-- Decrement, i.e., x-- is equivalent to x=x-1; when used in an array index, it is evaluated to the value of the variable before the decrement operation. += increments by the specified amount. That is, x+=3 is equivalent to x=x+3, and x+=(-3) is equivalent to x=x+(-3). -= Decrement by the specified amount. That is, x-=3 is equivalent to x=x-3, and x-=(-3) is equivalent to x=x-(-3).
[0262] Range notation The following notation is used to specify a range of values: x = y ... zx takes integer values from y down to z (including both ends). Here, x, y, and z are integers, and z is greater than y.
[0263] mathematical function The following mathematical function is defined:
number
number
number
number
number
[0264] Operation priority order If the order of precedence in an expression is not explicitly indicated using parentheses, the following rules apply: - Operations with higher priority are evaluated before operations with lower priority. - Operations with the same priority are evaluated sequentially from left to right.
[0265] Table 14 below specifies the order of operations from highest to lowest; higher positions in Table 14 indicate higher priority. For operators also used in the C programming language, the precedence used herein is the same as that used in the C programming language. Table 14: Order of operations from highest (top of the table) to lowest (bottom of the table) [Table 14]
[0266] Text description of logical operations In the text, mathematically it takes the following form: if (condition 0) statement 0 else if (condition 1) statement 1 ... else / * Comments for reference regarding the remaining conditions * / statement n The statement of a logical operation described by may also be written as follows: ...The following applies: -If condition 0, statement 0 -Otherwise, if condition 1 is met, then statement 1 -… -Otherwise (comments for reference regarding the remaining conditions) Statement n.
[0267] Each statement in the text that begins with "If...then..., otherwise..., if...then..., otherwise..." is introduced by "...then..." or "...the following applies," followed immediately by "if...". The final condition in "If...then..., otherwise..., if...then..., otherwise..." may always be "otherwise...". Statements that intersperse the "If...then..., otherwise..., if...then..., otherwise..." structure can be identified by matching "...then..." or "...the following applies" with the final "otherwise...".
[0268] In the text, mathematically it takes the following form: if(condition0a & condition0b) statement 0 else if(condition 1a || condition 1b) statement 1 ... else statement n The statement of a logical operation described by may also be written as follows: ...The following applies: -If all of the following conditions are true, then statement 0: -Condition 0a -condition 0b -Otherwise, if one or more of the following conditions are true, Statement 1 -Condition 1a -Condition 1b -… -Otherwise, state n.
[0269] In the text, mathematically it takes the following form: if (condition 0) statement 0 if (condition 1) statement 1 The statement of a logical operation described by may also be written as follows: If condition 0, statement 0 If condition 1 is met, then statement 1.
[0270] While embodiments of this disclosure have been described primarily in relation to video coding, it should be noted that embodiments of the coding system 10, encoder 20, and decoder 30 (and correspondingly system 10), as well as other embodiments described herein, may be configured for the processing or coding of still pictures, i.e., for the processing or coding of individual pictures independent of any preceding or consecutive pictures, as in video coding. Generally, when picture processing coding is limited to a single picture 17, only the interpretation units 244 (encoder) and 344 (decoder) may not be available. All other functions (also referred to as tools or techniques) of the video encoder 20 and video decoder 30 may be equally applicable to still picture processing. Other functions include, for example, residual calculation 204 / 304, transformation 206, quantization 208, inverse quantization 210 / 310, (inverse) transformation 212 / 312, partitioning 262 / 362, intra prediction 254 / 354, and / or loop filtering 220, 320, and entropy coding 270, and entropy decoding 304.
[0271] For example, embodiments of encoder 20 and decoder 30, and functions described herein with reference to encoder 20 and decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, functions may be stored as one or more instructions or codes on a computer-readable medium or transmitted through a communication medium and executed by a hardware-based processing unit. The computer-readable medium may include computer-readable storage mediums corresponding to tangible media such as data storage mediums, or communication mediums including any medium that facilitates the transfer of computer programs from one location to another, for example, according to a communication protocol. Thus, the computer-readable medium may generally correspond to (1) non-transient tangible computer-readable storage mediums, or (2) communication mediums such as signals or carrier waves. The data storage medium may be any available medium accessible by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementations of the technologies described herein. Computer program products may include computer-readable mediums.
[0272] For example, and not limited to, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Also, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio waves, and microwaves, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves, and microwaves are included in the definition of a medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary, tangible storage media. As used herein, the terms "disk" and "disc" include compact discs (CDs), laser discs, optical discs, digital multipurpose discs (DVDs), floppy disks, and Blu-ray discs, where a "disk" typically reproduces data magnetically, while a "disc" reproduces data optically using a laser. Any combination of the above should also be included within the scope of computer-readable media.
[0273] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term “processor” as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the technologies described herein. Furthermore, in some aspects, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. These technologies may also be fully implemented by one or more circuits or logic elements.
[0274] The technology of this disclosure can be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). While various components, modules, or units are described in this disclosure to highlight the functional aspects of apparatus configured to perform the disclosed technology, these are not necessarily required to be implemented by different hardware units. Rather, as described above, the various units may be combined within a codec hardware unit, or they may be provided by a collection of interoperable hardware units that include one or more processors as described above in association with suitable software and / or firmware.
Claims
1. One or more processors; A non-temporary computer-readable storage medium coupled to one or more processors, storing programming for execution by one or more processors. An encoding device having the following, wherein the programming is performed by one or more processors, and the encoding device: The current configuration is configured to derive the current block's intra-prediction mode IntraPredModeY if the current block's intra-prediction mode IntraPredModeY is not included in the set of most probable modes, and the derivation is: For each candidate intraprediction mode candModeList[i] in the array of candidate intraprediction modes, if the intraprediction mode IntraPredModeY is greater than candModeList[i], the step of decreasing the value of the intraprediction mode IntraPredModeY by 1, wherein candModeList[i] represents the candidate intraprediction modes in the set of most likely modes, i is in the range from N to M (including both ends), N is 4, M is 0, and N > M; This is achieved by performing the step of reducing the value of the aforementioned intra-prediction mode IntraPredModeY by 1; The aforementioned intra-prediction mode IntraPredModeY specifies the lumen intra-prediction mode at the lumen position that specifies the top-left sample of the current block for the top-left lumen sample of the current picture. Encoding device.
2. The encoding device according to claim 1, wherein the candModeList[i] in the array is derived by sorting the candidate intra-prediction modes, and for each candModeList[i], candModeList[i] < candModeList[i+1], where i is in the range from M to N-1.
3. When the aforementioned programming is executed by one or more processors, the encoding device further: If candModeList[i] is greater than candModeList[i+1], then swap the values of candModeList[i] and candModeList[i+1]. This is configured to derive the candidate intra-prediction mode candModeList[i], where i is in the range of M to N-1. The encoding device according to claim 2.
4. When the aforementioned programming is executed by one or more processors, the encoding device further: The encoding device according to claim 1, configured to transmit a bitstream to a decoder, wherein the bitstream includes a value of instruction information for the current block, the value of which indicates whether the intra-prediction mode of the current block is included in the set of most probable modes.
5. The encoding device according to claim 4, wherein the value of the instruction information is indicated by the flag intra_luma_mpm_flag, and if the value of intra_luma_mpm_flag is not equal to 1, the intra-predictive mode of the current block is not included in the set of most probable modes.
6. The encoding device according to claim 5, wherein the syntactic element intra_luma_mpm_remainder represents a truncated binary code for a mode not included in the set of most probable modes.
7. The encoding apparatus according to claim 1, wherein the set of most likely modes includes five candidate intra-prediction modes and a planar mode.
8. The encoding device according to claim 7, wherein a planar flag indicates whether the current block's intra-prediction mode IntraPredModeY is a planar mode.
9. The encoding device according to claim 8, wherein the planar flag is coded using context-adaptive binary arithmetic coding (CABAC).
10. The encoding apparatus according to claim 9, wherein the context indicates whether the current block is an intrablock with intra-subpartition (ISP) coding mode enabled, or whether the current block is an intrablock with multiple reference lines (MRL) enabled.
11. A method for intra-prediction implemented by an encoding device, the method being: The process includes deriving the current block's intra-prediction mode IntraPredModeY if the current block's intra-prediction mode IntraPredModeY is not included in the set of most probable modes, wherein the derivation is: For each candidate intraprediction mode candModeList[i] in the array of candidate intraprediction modes, if the intraprediction mode IntraPredModeY is greater than candModeList[i], the step of decreasing the value of the intraprediction mode IntraPredModeY by 1, wherein candModeList[i] represents the candidate intraprediction modes in the set of most likely modes, i is in the range from N to M (including both ends), N is 4, M is 0, and N > M; This is achieved by performing the step of reducing the value of the aforementioned intra-prediction mode IntraPredModeY by 1; The aforementioned intra-prediction mode IntraPredModeY specifies the lumen intra-prediction mode at the lumen position that specifies the top-left sample of the current block for the top-left lumen sample of the current picture. method.
12. The method according to claim 11, wherein the candModeList[i] in the array is derived by sorting the candidate intra-prediction modes, and for each candModeList[i], candModeList[i] < candModeList[i+1], where i is in the range from M to N-1.
13. The candidate intra prediction mode candModeList[i] is, This is derived by swapping the values of candModeList[i] and candModeList[i+1] when candModeList[i] is greater than candModeList[i+1], where i ranges from M to N-1. The method according to claim 12.
14. The method according to any one of claims 11 to 13, further comprising the step of sending a bitstream to a decoder, wherein the bitstream includes a value of instruction information for the current block, the value of the instruction information is indicated by a flag intra_luma_mpm_flag, and if the value of intra_luma_mpm_flag is not equal to 1, the intra predictive mode of the current block is not included in the set of most likely modes.
15. The method according to any one of claims 11 to 14, wherein the set of most likely modes includes five candidate intra-prediction modes and a planar mode.