Method, apparatus, and computer program for intra-mode coding

By determining and utilizing additional intra-prediction modes based on wide angles at specific edges of coding units, the method enhances encoding efficiency and reduces bit usage in video coding standards like HEVC and VVC.

JP7866597B2Active Publication Date: 2026-05-27TENCENT AMERICA LLC
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
TENCENT AMERICA LLC
Filing Date
2024-08-07
Publication Date
2026-05-27

AI Technical Summary

Technical Problem

The existing intra-prediction modes in video coding standards like HEVC and VVC require inefficient signaling of intra-prediction modes, particularly when the aspect ratio of coding units deviates from 1, leading to increased bit usage and complexity in encoding and decoding processes.

Method used

A method and apparatus that determine the aspect ratio of coding units and add additional intra-prediction modes to a table based on wide angles at specific edges, allowing for more efficient selection and encoding of video sequences.

Benefits of technology

This approach reduces the number of bits required for signaling intra-prediction modes, thereby improving encoding efficiency and reducing computational complexity in video processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007866597000005
    Figure 0007866597000005
  • Figure 0007866597000006
    Figure 0007866597000006
  • Figure 0007866597000007
    Figure 0007866597000007
Patent Text Reader

Abstract

To provide a method and a device for controlling intra-prediction for decoding a video sequence.SOLUTION: The method includes the steps of: determining the ratio of width to the height of a coding unit, and adding a first wide angle towards the lower left side of the coding unit, a second wide angle towards the upper right side of the coding unit, and additional intra prediction modes corresponding to the first and second wide angles, respectively, to a table that contains an intra prediction mode corresponding to an intra prediction angle on the basis of the determined ratio being different from 1. The method includes the step of selecting one of the intra-prediction mode and the additional intra prediction modes added to the table for decoding the video sequence.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] [Cross - Reference to Related Applications] This application claims the priority of U.S. Provisional Patent Application No. 62 / 734,996 filed on September 21, 2018 and U.S. Patent Application No. 16 / 198,951 filed on November 23, 2018 with the United States Patent and Trademark Office, and these applications are incorporated herein by reference in their entirety.

[0002] The methods and apparatuses according to embodiments relate to video processing, and more particularly, to methods and apparatuses for intra - mode coding.

Background Art

[0003] The intra - prediction modes used in High - Efficiency Video Coding (HEVC) are shown in FIG. 1. There are a total of 35 intra - prediction modes in HEVC. Among them, mode 10 (101) is the horizontal mode, mode 26 (102) is the vertical mode, and modes 2 (103), mode 18 (104), and mode 34 (105) are diagonal modes. The intra - prediction mode is signaled by three most probable modes (MPMs) and the remaining 32 modes.

[0004] In the coding of the intra - mode, a size - 3 most probable mode (MPM) list is created based on the intra - modes of adjacent blocks. This MPM list is called the MPM list or the primary MPM list. One MPM flag is signaled to indicate whether the current mode belongs to the MPM list. When the MPM flag is true, a unary code is used to signal the MPM index. When the MPM flag is false, 5 - bit fixed - length coding is used to signal the remaining modes.

[0005] The generation process for MPM list generation is shown below. Here, leftIntraDir indicates the mode in the left block, and aboveIntraDir indicates the mode in the upper block. If the left or upper block is not available at the moment, leftIntraDir or aboveIntraDir is set to the exponent DC_IDX. Also, the variables "offset" and "mod" are constant values ​​set to 29 and 32, respectively. ·If(leftIntraDir==aboveIntraDir&&leftIntraDir>DC_IDX) MPM[0] = leftIntraDir; MPM[1]=((leftIntraDir+offset)%mod)+2; MPM[2]=((leftIntraDir-1)%mod)+2; ·Else if(leftIntraDir==aboveIntraDir) MPM[0] = PLANAR_IDX; MPM[1] = DC_IDX; MPM[2] = VER_IDX; ·Else if(leftIntraDir!=aboveIntraDir) MPM[0] = leftIntraDir; MPM[1]=aboveIntraDir; If(leftIntraDir>0&&aboveIntraDir>0) ·MPM[2]=PLANAR_IDX; Else ·MPM[2]=(leftIntraDir+aboveIntraDir)<2?VER_IDX:DC_IDX; [Overview of the Initiative] [Means for solving the problem]

[0006] According to some embodiments, a method for controlling intra-prediction for decoding a video sequence is performed by at least one processor, which includes determining the ratio of width to height of a coding unit, and, based on the determined ratio being different from 1, adding a first wide angle toward the lower left edge of the coding unit, a second wide angle toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, to a table containing a plurality of intra-prediction modes corresponding to the intra-prediction angles. The method further includes selecting one of the plurality of intra-prediction modes and the additional intra-prediction modes added to the table for decoding a video sequence.

[0007] According to some embodiments, a device for controlling intra-prediction for decoding a video sequence includes at least one memory configured to store computer program code, and at least one processor configured to access the at least one memory and operate in accordance with the computer program code. The computer program code includes determination code configured to cause at least one processor to determine the ratio of width to height of a coding unit, and addition code configured to cause at least one processor to add a first wide angle toward the lower left edge of a coding unit, a second wide angle toward the upper right edge of a coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, to a table containing a plurality of intra-prediction modes corresponding to intra-prediction angles, based on the determined ratio being different from 1. The computer program code further includes selection code configured to cause at least one processor to select one of the plurality of intra-prediction modes and the additional intra-prediction modes added to the table for decoding a video sequence.

[0008] According to some embodiments, a non-temporary computer-readable storage medium stores an instruction causing a processor to determine the ratio of width to height of a coding unit, and, based on the determined ratio being different from 1, to add a first wide angle toward the lower left edge of the coding unit, a second wide angle toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, to a table containing a plurality of intra-prediction modes corresponding to the intra-prediction angles. The instruction further causes the processor to select one of the plurality of intra-prediction modes and the additional intra-prediction modes added to the table for decoding a video sequence. [Brief explanation of the drawing]

[0009] [Figure 1] This is a diagram of the intra-prediction mode in HEVC. [Figure 2] This is a schematic block diagram of a communication system according to one embodiment. [Figure 3] This figure shows the arrangement of a video encoder and video decoder in a streaming environment according to one embodiment. [Figure 4] This is a functional block diagram of a video decoder according to one embodiment. [Figure 5] This is a functional block diagram of a video encoder according to one embodiment. [Figure 6] This figure shows the intra-predictive mode in Draft 2 of the Multipurpose Video Coding (VVC). [Figure 7] This flowchart shows a method for controlling intra-prediction for decoding a video sequence according to one embodiment. [Figure 8] This is a schematic block diagram of a device for controlling intra-prediction for decoding a video sequence according to one embodiment. [Figure 9] This figure shows a computer system suitable for implementing the embodiment. [Modes for carrying out the invention]

[0010] Figure 2 is a schematic block diagram of a communication system (200) according to one embodiment. The communication system (200) may include at least two terminals (210-220) connected to each other via a network (250). In the case of one-way data transmission, the first terminal (210) can encode video data at its local location for transmission to the other terminal (220) via the network (250). The second terminal (220) can receive the encoded video data from the other terminal via the network (250), decode the encoded data, and display the recovered video data. One-way data transmission may be common in media delivery applications and the like.

[0011] Figure 2 shows a second set of terminals (230, 240) provided to support the bidirectional transmission of encoded video, which may occur, for example, during a video conference. In the case of bidirectional data transmission, each terminal (230, 240) can encode video data captured at its local location for transmission to the other terminal over the network (250). Furthermore, each terminal (230, 240) can receive the encoded video data transmitted by the other terminal, decode the encoded data, and display the recovered video data on a local display device.

[0012] In FIG. 2, the terminals (210 to 240) can be exemplified as a server, a personal computer, and a smartphone, but the principle of the embodiment is not limited as such. The embodiment is applicable to a laptop computer, a tablet computer, a media player, and / or dedicated video conferencing equipment. The network (250) represents any number of networks that transmit encoded video data between the terminals (210 to 240), such as, for example, a wired and / or wireless communication network. The communication network (250) can exchange data via a circuit-switched and / or packet-switched channel. Representative networks include a telecommunications network, a local area network, a wide area network, and / or the Internet. For the purposes of this specification, the architecture and connection form of the network (250) may not be important for the operation of the embodiment, unless otherwise described herein below.

[0013] FIG. 3 is a diagram of the arrangement of video encoders and video decoders in a streaming environment according to an embodiment. The disclosed subject matter may be equally applicable to other video-enabled applications, including, for example, the storage of compressed video on digital media, including video conferencing, digital TV, CD, DVD, memory stick, and the like.

[0014] The streaming system may include a capture subsystem (313) which can include a video source (301), such as a digital camera, that generates an uncompressed video sample stream (302). This sample stream (302), shown in thick lines to emphasize its larger data size compared to the encoded video bitstream, may be processed by an encoder (303) connected to the camera (301). The encoder (303) may include hardware, software, or a combination thereof to enable or perform aspects of the subject matter of this disclosure, as will be described in more detail below. The encoded video bitstream (304), shown in thin lines to emphasize its smaller data size compared to the sample stream, may be stored in a streaming server (305) for future use. One or more streaming clients (306, 308) may access the streaming server (305) to obtain a copy (307, 309) of the encoded video bitstream (304). A client (306) may include a video decoder (310) that receives and decodes a copy of the encoded video bitstream (307) and generates an output video sample stream (311) that can be rendered on a display (312) or other rendering device (not shown). In some streaming systems, the video bitstreams (304, 307, 309) may be encoded according to a specific video encoding / compression standard. An example of such a standard is ITU-T Recommendation H.265. A video encoding standard informally known as VVC is under development. The subject matter of this disclosure may be used in the context of VVC.

[0015] Figure 4 is a functional block diagram of a video decoder (310) according to one embodiment.

[0016] The receiver (410) can receive one or more codec video sequences decoded by the decoder (310), and in the same or one embodiment, is one encoded video sequence at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. The encoded video sequence can be received from a channel (412) which may be a hardware / software link to a storage device storing the encoded video data. The receiver (410) can receive the encoded encoded video data together with other data that can be transferred to respective usage entities (not shown), such as encoded audio data and / or auxiliary data streams. The receiver (410) can separate the encoded video sequence from other data. To counter network jitter, a buffer memory (415) can be connected between the receiver (410) and the entropy decoder / parser (420) (hereinafter, “parser”). If the receiver (410) is receiving data from a sufficient bandwidth and controllable storage / transfer device or an isochronous network, the buffer (415) may not be necessary or may be small. When used in a best effort packet network such as the Internet, the buffer (415) may be required, and the buffer (415) may be relatively large and preferably of an adaptable size.

[0017] The video decoder (310) may include a parser (420) for reconstructing symbols (421) from an entropy-encoded video sequence. Examples of these symbols include information used to manage the operation of the decoder (310), as shown in Figure 4, and possibly information for controlling rendering devices, such as a display (312), which may be connected to the decoder but is not an integral part of the decoder itself. The rendering device control information may take the form of supplemental extension information (SEI messages) or video usability information (VUI) parameter set fragments (not shown). The parser (420) can perform parsing / entropy decoding of the received encoded video sequence. The encoding of the encoded video sequence may conform to video coding techniques or standards and may follow principles well known to those skilled in the art, such as variable-length coding, Huffman coding, or context-independent or non-context-independent arithmetic coding. From the encoded video sequence, the parser (420) can extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder, based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transformation units (TU), prediction units (PU), and so on. Furthermore, the entropy decoder / parser can also extract information such as transformation coefficients, quantization parameter (QP) values, and motion vectors from the encoded video sequence.

[0018] The parser (420) can perform an entropy decoding / analysis operation on the video sequence received from the buffer (415) to generate symbols (421). The parser (420) can receive the encoded data and selectively decode specific symbols (421). Furthermore, the parser (420) can determine whether or not to feed specific symbols (421) to the motion compensation prediction unit (453), the scaler / inverse transform unit (451), the intra prediction unit (452), or the loop filter unit (454).

[0019] Symbol reconstruction (421) may involve several different units, depending on the type of the encoded video picture or part thereof (inter and intra-picture, inter and intra-block, etc.) and other factors. Which units are involved and how they are involved can be controlled by subgroup control information analyzed from the video sequence encoded by the parser (420). The flow of such subgroup control information between the parser (420) and the several units described below is not shown for the sake of clarity.

[0020] In addition to the functional blocks already described, the decoder (310) can be conceptually subdivided into several functional units, as described below. In actual implementations operating under commercial constraints, many of these units may interact closely with each other and be integrated at least partially. However, for the purpose of illustrating the subject matter of this disclosure, the following conceptual subdivision into functional units is appropriate.

[0021] The first unit is the scaler / inverse unit (451). The scaler / inverse unit (451) receives the quantized transformation coefficients, as well as control information such as the transformation to be used, block size, quantization coefficients, and quantization scaling matrix, from the parser (420) as symbols (421). The scaler / inverse unit (451) can output a block containing sample values ​​that can be input to the aggregator (455).

[0022] In some cases, the output samples of the scaler / inverse transform (451) may relate to intra-encoded blocks, i.e., blocks that do not use prediction information from previously reconstructed pictures, but rather can use prediction information from previously reconstructed portions of the current picture. Such prediction information can be provided by the intra-picture prediction unit (452). In some cases, the intra-picture prediction unit (452) generates a block of the same size and shape as the block being reconstructed, using surrounding already reconstructed information obtained from the current (partially reconstructed) picture (456). The aggregator (455) may, in some cases, add the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451) on a sample-by-sample basis.

[0023] In other cases, the output samples of the scaler / inverse unit (451) may relate to intercoded and possibly motion-compensated blocks. In such cases, a motion-compensated prediction unit (453) can access a reference picture memory (457) to obtain samples to be used for prediction. After motion-compensating the samples obtained according to the symbols (421) related to the blocks, these samples can be added by an aggregator (455) to the output of the scaler / inverse unit (in this case, called residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory form from which the motion-compensated unit obtains prediction samples can be controlled by motion vectors available to the motion-compensated unit in the form of symbols (421) which may have, for example, X, Y, and reference picture components. Furthermore, motion compensation may include interpolation of sample values ​​obtained from the reference picture memory when the exact motion vectors of subsamples are used, motion vector prediction mechanisms, and so on.

[0024] Various loop filtering techniques can be applied to the output samples of the aggregator (455) in the loop filter unit (454). The video compression technique is controlled by parameters contained in the encoded video bitstream and made available to the loop filter unit (454) as symbols (421) from the parser (420), but may include in-loop filtering techniques that respond to metadata obtained in decoding earlier parts (in the decoding order) of the encoded picture or encoded video sequence, as well as to previously reconstructed and loop-filtered sample values.

[0025] The output of the loop filter unit (454) may be output to the rendering device (312) and may also be a sample stream that may be stored in reference picture memory (456) for use in future interpicture prediction.

[0026] Once a particular encoded picture is fully reproduced, it can be used as a reference picture for future predictions. Once an encoded picture is fully reproduced and identified as a reference picture (for example, by the parser (420)), the current reference picture (456) can become part of the reference picture buffer (457), and new current picture memory can be reallocated before starting the reproduction of the next encoded picture.

[0027] The video decoder (310) can perform decoding operations according to a predetermined video compression technique that may be documented in standards such as ITU-T Rec H265. The encoded video sequence may conform to the syntax specified by the video compression technique or standard used, in the sense that it faithfully adheres to the syntax of the video compression technique or standard as specified in the video compression technique documentation or standard, particularly its profile documentation. Furthermore, the complexity of the encoded video sequence may also be required for compliance to be within the boundaries defined by the level of the video compression technique or standard. In some cases, the level may limit the maximum picture size, maximum frame rate, maximum reproducible sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. Limitations set by the level may, in some cases, be further restricted by the virtual reference decoder (HRD) specification and metadata for HRD buffer management notified in the encoded video sequence.

[0028] In one embodiment, the receiver (410) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder (310) to properly decode the data and / or more accurately reproduce the original video data. The additional data may take the form of, for example, a temporal, spatial, or signal-to-noise ratio (SNR) extension layer, redundant slices, redundant pictures, forward error correction code, etc.

[0029] Figure 5 is a functional block diagram of a video encoder (303) according to one embodiment.

[0030] The encoder (303) can receive video samples from a video source (301) (not part of the encoder) that can capture video images to be encoded by the encoder (303).

[0031] The video source (301) can provide a source video sequence encoded by an encoder (303) in the form of a digital video sample stream, which may have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media delivery system, the video source (301) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. The video data may be provided as a series of separate pictures that give motion when viewed sequentially. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc., used. Those skilled in the art will readily understand the relationship between pixels and samples. The following description will focus on samples.

[0032] According to one embodiment, the encoder (303) can encode and compress pictures of a source video sequence into an encoded video sequence (543) in real time or under any other time constraints required by the application. Forcing an appropriate encoding rate is one of the functions of the controller (550). The controller controls and is functionally connected to other functional units, as described below. For clarity, the connections are not shown. Parameters set by the controller include rate control-related parameters (picture skip, quantizer, lambda value of rate distortion optimization technique, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will be able to easily identify the other functions of the controller (550), as they may relate to a video encoder (303) optimized for a particular system design.

[0033] Some video encoders operate in what is readily recognizable to those skilled in the art as an "encoding loop." In a highly simplified explanation, the encoding loop may consist of an encoding portion of an encoder (530) (hereinafter referred to as the "source coder") (responsible for generating symbols based on the input picture and reference picture to be encoded) and a (local) decoder (533) embedded in an encoder (303) that reproduces the symbols to generate sample data (since any compression between the symbols and the encoded video bitstream is lossless in the video compression techniques considered in the subject matter of this disclosure). The reproduced sample stream is input to a reference picture memory (534). Decoding the symbol stream yields bit-accurate results regardless of the decoder's location (local or remote), so the contents of the reference picture buffer are also bit-accurate between the local encoder and the remote encoder. In other words, the prediction portion of the encoder "sees" the exact same sample values ​​as the reference picture samples that the decoder is expected to "see" when using predictions in decoding. This fundamental principle of simultaneity of reference pictures (and the drift that occurs when simultaneity cannot be maintained, for example, due to channel errors) is well known to those skilled in the art.

[0034] The operation of the “local” decoder (533) may be the same as that of the “remote” decoder (310), which has already been described in detail in relation to Figure 4. However, as also briefly referring to Figure 4, since symbols are available and the encoding / decoding of symbols to the encoded video sequence by the entropicorder (545) and parser (420) may be lossless, the entropy decoding portion of the decoder (310), including the channel (412), receiver (410), buffer (415), and parser (420), does not need to be fully implemented in the local decoder (533).

[0035] One observation that can be made in this regard is that all decoder techniques present in the decoder, except for syntactic parsing / entropy decoding, must necessarily exist in the corresponding encoder in substantially the same functional form. The explanation of encoder techniques is the inverse of the comprehensively explained decoder techniques and can therefore be omitted. Further explanation is necessary only in specific areas, which are shown below.

[0036] As part of its operation, the source coder (530) may perform motion-compensated predictive coding, predictively coding the input frame by referencing one or more previously coded frames from a video sequence designated as “reference frames”. In this way, the coding engine (532) codes the difference between the pixel blocks of the input frame and the pixel blocks of the reference frame which may be selected as a predictive reference for the input frame.

[0037] The local video decoder (533) can decode the encoded video data of a frame that may be designated as a reference frame based on the symbols generated by the source coder (530). The operation of the encoding engine (532) can conveniently be a lossy process. When the encoded video data can be decoded by a video decoder (not shown in Figure 4), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (533) can replicate the decoding process that may be performed by the video decoder for the reference frame and have the reconstructed reference frame stored in the reference picture cache (534). In this way, the encoder (303) can locally store a copy of the reconstructed reference frame that has common content (without transmission errors) with the reconstructed reference frame obtained by the far-end video decoder.

[0038] The predictor (535) may perform a predictive search for the encoding engine (532). That is, for a new frame to be encoded, the predictor (535) may search the reference picture memory (534) for sample data (as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc., which can function as appropriate predictive references for the new picture. The predictor (535) may operate on a sample block versus pixel block basis to find appropriate predictive references. In some cases, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory (534), as determined by the search results obtained by the predictor (535).

[0039] The controller (550) can manage the encoding operations of the video coder (530), such as setting parameters and subgroup parameters used for encoding video data.

[0040] The outputs of all the above-mentioned functional units can be subjected to entropy coding in the entropicorder (545). The entropicorder converts the symbols generated by the various functional units into coded video sequences by lossless compression of the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable-length coding, arithmetic coding, etc.

[0041] The transmitter (540) can buffer the encoded video sequence generated by the entropicorder (545) and prepare it for transmission over a communication channel (560), which may be a hardware / software link to a storage device capable of storing the encoded video data. The transmitter (540) can merge the encoded video data from the videocoder (530) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (source not shown).

[0042] The controller (550) can manage the operation of the encoder (303). During encoding, the controller (550) can assign each encoded picture to a specific encoded picture type that may affect the encoding technique that can be applied to that picture. For example, a picture may often be assigned as one of the following frame types:

[0043] An intra-picture (I-picture) can be a picture that can be encoded and decoded without using any other frames in the sequence as a source for prediction. Some video codecs allow various types of intra-pictures, such as independent decoder refresh pictures. Those skilled in the art will be familiar with these variations of I-pictures and their respective uses and characteristics.

[0044] A predictive picture (P-picture) can be a picture that can be encoded and decoded using intra-prediction or inter-prediction, which uses up to one motion vector and reference index to predict the sample values ​​of each block.

[0045] A bidirectional predictive picture (B-picture) can be a picture that can be encoded and decoded using intra-prediction or inter-prediction, using up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multiple predictive pictures can use three or more reference pictures and associated metadata to reproduce a single block.

[0046] A source picture can generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and encoded block by block. Blocks can be predictively encoded by referencing other (already encoded) blocks, as determined by the coding assignment applied to each picture in the block. For example, blocks in picture I can be non-predictively encoded or predictively encoded by referencing already encoded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks in picture P can be encoded non-predictively, by spatial prediction, or by temporal prediction referencing one previously encoded reference picture. Blocks in picture B can be encoded non-predictively, by spatial prediction, or by temporal prediction referencing one or two previously encoded reference pictures.

[0047] The video coder (303) can perform encoding operations in accordance with a specified video encoding technique or standard, such as ITU-T Rec H265. In these operations, the video coder (303) can perform various compression operations, including predictive encoding operations that utilize the temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard used.

[0048] In one embodiment, the transmitter (540) may transmit additional data along with the encoded video. The video coder (530) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures or slices, Supplementary Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, and the like.

[0049] Figure 6 shows the intra-prediction mode in VVC Draft 2.

[0050] VVC Draft 2 has a total of 87 intra-prediction modes, as shown in Figure 6. Among these, mode 18 (601) is the horizontal mode, mode 50 (602) is the vertical mode, and modes 2 (603), 34 (604), and 66 (605) are the diagonal modes. Modes 1 to 10 and modes 67 to 76 are called wide-angle intra-prediction (WAIP) modes.

[0051] Thirty-five HEVC intra-predictive modes are included in Draft 2 of VVC, and the mode numbers for these 35 HEVC modes are 0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, and 66.

[0052] In VVC Draft 2, the size of the MPM list is still 3, and the MPM list generation process is the same as in HEVC. The difference is that VVC Draft 2 has 67 notified modes, so "offset" is changed to 61 and the variable "mod" is changed to 64.

[0053] In mode coding, one MPM flag is first signaled to indicate whether the current mode belongs to the MPM list. If the MPM flag is true, a truncated unary code is used to signal the MPM index. If the MPM flag is false, a 6-bit fixed-length code is used to signal the remaining mode.

[0054] The following section from Draft 2 of VVC illustrates the luminance intra-mode coding process. 1. The adjacent locations (xNbA, yNbA) and (xNbB, yNbB) are set equal to (xPb - 1, yPb) and (xPb, yPb - 1), respectively. 2. When X is replaced by either A or B, the variable candIntraPredModeX is derived as follows. - The availability derivation process of the block specified in Section 6.4.X [Ed.(BB): Adjacent block availability check process tbd] is called with the location (xCurr, yCurr) set equal to (xPb, yPb) and the adjacent location (xNbY, yNbY) set equal to (xNbX, yNbX), and the output is assigned to availableX. - 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_DC. - The variable availableX is equal to FALSE. - CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA. - X is equal to B and yPb - 1 is less than ((yPb >> CtbLog2SizeY) << CtbLog2SizeY). - Otherwise, candIntraPredModeX is set equal to IntraPredModeY[xNbX][yNbX]. 3. candModeList[x] for x = 0..2 is derived as follows. - If candIntraPredModeB is equal to candIntraPredModeA, the following applies. - If candIntraPredModeA is less than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC), candModeList[x] for x = 0..2 is derived as follows. candModeList[0] = INTRA_PLANAR(8 - 1) candModeList[1]=INTRA_DC(8-2) candModeList[2]=INTRA_ANGULAR50(8-3) -In other cases, candModeList[x] for x=0..2 is derived as follows: candModeList[0]=candIntraPredModeA(8-4) candModeList[1]=2+((candIntraPredModeA+61)%64)(8-5) candModeList[2]=2+((candIntraPredModeA-1)%64)(8-6) -If otherwise (candIntraPredModeB is not equal to candIntraPredModeA), then the following applies: -candModeList[0] and candModeList[1] are derived as follows: candModeList[0]=candIntraPredModeA(8-7) candModeList[1]=candIntraPredModeB(8-8) -If neither candModeList[0] nor candModeList[1] is equal to INTRA_PLANAR, candModeList[2] is set to be equal to INTRA_PLANAR. - Otherwise, if neither candModeList[0] nor candModeList[1] is equal to INTRA_DC, candModeList[2] is set to be equal to INTRA_DC. - Otherwise, candModeList[2] is set to INTRA_ANGULAR50. 4. IntraPredModeY[xPb][yPb] is derived by applying the following procedure. -If intra_luma_mpm_flag[xPb][yPb] is equal to 1, then IntraPredModeY[xPb][yPb] is set to equal to candModeList[intra_luma_mpm_idx[xPb][yPb]]. - Otherwise, IntraPredModeY[xPb][yPb] is derived by applying the following steps in this order: 1. The array candModeList[x](x=0..2) is modified in the following order of steps: If i.candModeList[0] is greater than candModeList[1], the two values ​​are swapped as follows: (candModeList[0], candModeList[1])=Swap(candModeList[0], candModeList[1])(8-9) ii. If candModeList[0] is greater than candModeList[2], the two values ​​are swapped as follows: (candModeList[0], candModeList[2])=Swap(candModeList[0], candModeList[2])(8-10) iii.candModeList[1] is greater than candModeList[2], then both values ​​are swapped as follows: (candModeList[1], candModeList[2])=Swap(candModeList[1], candModeList[2])(8-11) 2. IntraPredModeY[xPb][yPb] is derived by the following steps in this order. i.IntraPredModeY[xPb][yPb] is set to be equal to intra_luma_mpm_remainder[xPb][yPb]. ii. If i is equal to 0 to 2 (including 0 and 2), the value of IntraPredModeY[xPb][yPb] is incremented by 1 when IntraPredModeY[xPb][yPb] is greater than or equal to candModeList[i]. The variables IntraPredModeY[x][y] in x=xPb..xPb+cbWidth-1 and y=yPb..yPb+cbHeight-1 are set to be equal to IntraPredModeY[xPb][yPb].

[0055] In the development of Draft 2 of VVC, a list of MPMs of size 6 was proposed. Planar mode and DC mode are included in the MPM list. Two adjacent modes, namely the left and upper modes, are used to generate the remaining four MPMs.

[0056] However, in VVC Draft 2, the number of available intra-predictive modes exceeds 67, requiring many bits for notification. There is a strong correlation between the current block and its neighboring blocks, which can be used to reduce the number of intra-predictive modes notified for the current block.

[0057] The methods proposed below can be used individually or combined in any order.

[0058] In the following explanation, if a mode is neither planar mode nor DC mode, or if a mode generates prediction samples according to a given prediction direction such as intra-prediction modes 2~76 and -1~-10 defined in VVC Draft 2, this mode is called angular mode.

[0059] In the following description, an authorized intra-prediction mode (AIPM) set is defined as a set of modes that include modes available for intra-prediction of the current block, and a denied intra-prediction mode (DIPM) set is defined as a set of modes that include modes that are not available or can not be communicated for intra-prediction of the current block.

[0060] This document uses two variables, `offset` and `mod`. These two variables can have the following two sets of values: 1) offset=61, mod=64; or 2) offset=62, mod=65.

[0061] In one embodiment, there are two intra-prediction mode sets for each block, which are the AIPM set and the DIPM set. For each block, the modes of these two mode sets may differ depending on the encoded information of the adjacent block and / or the current block, and may include, but are not limited to, the intra-prediction mode of the adjacent block, the intra-prediction mode of the current block, the aspect ratio, the encoded block flag (CBF), the primary and / or secondary transformation type, the adjacent reproduced samples, and so on.

[0062] In one embodiment, the modes of the AIPM set and the DIPM set depend on the intra-prediction mode of the adjacent block.

[0063] In one embodiment, the adjacent mode is included in the AIPM set but not in the DIPM set.

[0064] In one embodiment, blocks having the same aspect ratio or the same width and / or height may have different AIPM sets and / or different DIPM sets.

[0065] In one embodiment, for each angular adjacent mode represented by ang_mode, a specific mode can be derived by the following equations 1 and 2, and the derived mode is included in the AIPM set but not in the DIPM set. (ang_mode+offset-diff)%mod+2(formula 1) (ang_mode-1+diff)%mod+2(Equation 2)

[0066] In equations 1 and 2, diff is a variable, which is a positive integer or zero. In one example, diff may be any value less than or equal to 6. In another example, diff may be any value less than or equal to 3. In yet another example, diff may be any value within the set {0, 1, 2, 3, 5, 7}.

[0067] In one embodiment, to reduce the complexity of reproducing the AIPM set, several derived modes are limited by a threshold indicated by Thres. Thres may be any positive integer, such as 16, 32, or 48.

[0068] In one embodiment, the modes of the AIPM set and the DIPM set depend on the interprediction mode of the adjacent block.

[0069] In one embodiment, the modes of the AIPM set and the DIPM set depend on whether adjacent blocks are intra-encoded, inter-encoded, encoded by intra-block copy (IBC) mode, encoded by MERGE mode, encoded by SKIP mode, or encoded by another encoding mode.

[0070] In one embodiment, reproduced pixels from adjacent blocks are used to derive a set of allowed and disallowed intra-predictive modes.

[0071] In one embodiment, the gradients of adjacent reproduced samples are used to derive the modes of the AIPM set and the DIPM set. The gradients can be calculated by one of the following methods, but are not limited to, the first-order gradient method, the second-order gradient method, and the biconjugate gradient method.

[0072] In one embodiment, the modes of the AIPM set and DIPM set can be derived using an edge detection method or an image feature detection method. The edge detection method includes, but is not limited to, one of the following: the Sobel operator, the Laplace operator, the Canny edge detector, the Kayyali operator, the SUSAN corner detector, etc.

[0073] In one embodiment, the number of modes included in the AIPM set and the DIPM set is predefined and fixed for all blocks.

[0074] In one embodiment, the number of modes included in the AIPM set is represented by S, where S is equal to M plus 2, for example, S = M + 2 K Here, M and K are positive integers, for example, M=6 and K=5. M can be 7 or less. Typical values, though not limited to these, include 3, 4, 5, 6, and 7.

[0075] In one embodiment, the size of the AIPM set is represented by S, where S is equal to M plus multiple levels of powers of 2, for example, S = M + 2 K +2 L Here, M, K, and L are positive integers, for example, M=6, K=4, and L=5. M may be less than or equal to 7. Typical values, though not limited to these, include 3, 4, 5, 6, and 7.

[0076] In one embodiment, the number of modes included in the AIPM set and the DIPM set is predefined and fixed for each block size, each block aspect ratio, or each block shape. However, the number of modes included in the AIPM set and the DIPM set may differ for different block sizes, different block aspect ratios, or different block shapes.

[0077] In one embodiment, if the size of the AIPM set is S and the number of intra-predictive modes derived from adjacent modes is less than S, the default mode is used to fill the AIPM set.

[0078] In one embodiment, all HEVC intra-prediction modes are included in the default mode. In one example, S is 35 or greater.

[0079] In one embodiment, all intra-prediction modes associated with even-numbered mode indices are included in the default mode. In one example, S is 35 or greater.

[0080] In one embodiment, the default mode includes the angle mode associated with the odd mode index after the HEVC intra prediction mode.

[0081] In one embodiment, if the size of the AIPM set is 38, the default mode is predefined as {0, 1, 2, 50, 18, 34, 66, 10, 26, 42, 58, 6, 14, 22, 30, 38, 46, 54, 62, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 17, 19, 49}.

[0082] In one embodiment, if the size of the AIPM set is greater than 35, all HEVC intra-prediction modes, or all intra-prediction modes associated with even-mode indexes, or all intra-prediction modes associated with odd-mode indexes are always included in the AIPM set but not in the DIPM set.

[0083] In one embodiment, with respect to the AIPM set, it can be further divided into two lists, namely a primary MPM list and a non-MPM list, where the size of the non-MPM list is a power of 2.

[0084] In one embodiment, to encode a mode within the AIPM set, an MPM flag is first signaled to indicate whether the current mode belongs to the primary MPM list. If the MPM flag is true, a truncated unary code is used to signal the MPM index. Otherwise, a fixed-length code is used to signal a mode in a non-MPM list.

[0085] Depending on the aspect ratio of the current block, 28 or 30 wide angles and their respective wide angle intra-prediction modes are added to the table of the original angle and its respective original angle intra-prediction mode.

[0086] In one embodiment, 14 or 15 wide-angle and their respective wide-angle intra-prediction modes are added to the lower left of the current block (e.g., the bottom edge 606 in Figure 6), and another 14 or 15 wide-angle and their respective wide-angle intra-prediction modes are added to the upper right of the current block (e.g., the right edge 607 in Figure 6). Several example implementations are shown in Tables 1 and 2 below.

[0087] The angle table for wide angles is shown below, along with the original angles.

[0088] In one example, an angle table (angTable

[32] ) of 32 angles can contain angles {0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024}, where angles {0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32} are the original angles and angles {35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024} are the broader angles.

[0089] In other words, each angle can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32, 35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32, 1024 / 32}.

[0090] Table 1 may be an example of such an angle table having intra-prediction modes for each VVC, with 67 original angles and 67 intra-prediction modes for each of the original angles, plus 30 wide angles and 30 intra-prediction modes for each of the wide angles.

[0091] [Table 1]

[0092] predModeIntra indicates the intra-prediction mode of VVC, and intraPredAngle indicates the intra-prediction angle.

[0093] In another example, an angle table (angTable

[31] ) of 31 angles may contain angles {0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512}, where angles {0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32} are the original angles and angles {35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512} are the broader angles.

[0094] In other words, each angle can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32, 35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32}.

[0095] Table 2 may be an example of such an angle table having intra-prediction modes for each VVC, with 67 original angles and 67 intra-prediction modes for each of the original angles, plus 28 wide angles and 28 intra-prediction modes for each of the wide angles.

[0096] [Table 2]

[0097] The following text describes the changes (strikethrough and underlining) to the text of Draft 2 of the VVC using the above-described embodiment. 8.2.4.2.7 Specifications of the intra-predictive mode for INTRA_ANGULAR2..INTRA_ANGULAR66 The input to this process is, - Intra predictive mode predModeIntra, - Adjacent samples p[x][y](x=-1, y=-1..refH-1 and x=0..refW-1, y=-1), - Variable nTbW that specifies the width of the transformation block, - Variable nTbH that specifies the height of the transformation block, - Variable refW specifies the width of the reference sample. - Variable refH that specifies the height of the reference sample. That is the case. The output of this process is the modified intra prediction mode predModeIntra and the predicted samples predSamples[x][y](x=0..nTbW+1, y=0..nTbH+1). The variable whRatio is set to equal to min(abs(Log2(nTbW / nTbH)), 2). For non-square blocks (where nTbW is not equal to nTbH), the intra prediction mode predModeIntra is changed as follows: -If all of the following conditions are true, predModeIntra will be set to equal to (predModeIntra + 65). -nTbW is greater than nTbH -predModeIntra is 2 or greater -predModeIntra is less than (whRatio>1)?12:8 - Otherwise, if all of the following conditions are met, predModeIntra will be set to (predModeIntra-67). -nTbH is greater than nTbW -predModeIntra is 66 or less. predModeIntra is greater than (whRatio>1)?56:60 Table 8-5 specifies the mapping table between predModeIntra and the angle parameter intraPredAngle, and Figure 8-3 shows the intra-predicted angle for each angle parameter.

[0098] [Table 3]

[0099] ...

[0100] [Table 4]

[0101] Figure 7 is a flowchart of a method (700) for controlling intra-prediction for decoding a video sequence according to one embodiment. In some implementations, one or more processing blocks in Figure 7 may be performed by a decoder (310). In some implementations, one or more processing blocks in Figure 7 may be performed by an encoder (303) or other device or group of devices separate from the decoder (310), or including the decoder (310).

[0102] Referring to Figure 7, in the first block (710), method (700) includes determining the ratio of width to height of the coding unit.

[0103] In the second block (720), the method (700) includes, on the basis that the determined ratio is different from 1, adding to a table containing multiple intra-prediction modes corresponding to intra-prediction angles a first broad angle toward the lower left edge of the coding unit, a second broad angle toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second broad angles, respectively.

[0104] The number of first wide angles added to the table may be 14. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the first broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32}.

[0105] The number of second wide angles added to the table may be 14. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the second broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32}.

[0106] The number of first wide angles added to the table may be 15. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the first broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32, 1024 / 32}.

[0107] The number of second wide angles added to the table may be 15. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the second broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32, 1024 / 32}.

[0108] The first number of multiple intra-prediction modes included in the table may be 67, the second number of additional intra-prediction modes added to the table may be 28, and the table may include Table 2 as described above.

[0109] In the third block (730), method (700) includes selecting one of several intra-prediction modes and additional intra-prediction modes added to the table in order to decode a video sequence.

[0110] Figure 7 shows a typical block of method (700), but in some implementations, method (700) may include additional blocks, fewer blocks, different blocks, or blocks in different arrangements with respect to the block shown in Figure 7. In addition to or instead of this, two or more blocks of method (700) may be executed in parallel.

[0111] Furthermore, the proposed method can be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute one or more of the proposed methods by running a program stored in a non-temporary computer-readable medium.

[0112] Figure 8 is a schematic block diagram of an apparatus (800) for controlling intra-prediction for decoding a video sequence according to one embodiment.

[0113] Referring to Figure 8, the device (800) includes a decision code (810), an additional code (820), and a selection code (830).

[0114] The decision code (810) is configured to determine the ratio of width to height of the encoded unit.

[0115] The additional code (820) is configured to add a first wide angle toward the lower left edge of the coding unit, a second wide angle toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, respectively, to a table containing multiple intra-prediction modes corresponding to the intra-prediction angles, based on the determined ratio being different from 1.

[0116] The number of first wide angles added to the table may be 14. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the first broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32}.

[0117] The number of second wide angles added to the table may be 14. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the second broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32}.

[0118] The number of first wide angles added to the table may be 15. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the first broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32, 1024 / 32}.

[0119] The number of second wide angles added to the table may be 15. Each of the intra-predicted angles included in the table can have an angular direction α where tan(α) is equal to {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}, and each of the second broad angles added to the table can have an angular direction α where tan(α) is equal to {35 / 32, 39 / 32, 45 / 32, 51 / 32, 57 / 32, 64 / 32, 73 / 32, 86 / 32, 102 / 32, 128 / 32, 171 / 32, 256 / 32, 341 / 32, 512 / 32, 1024 / 32}.

[0120] The first number of multiple intra-prediction modes included in the table may be 67, the second number of additional intra-prediction modes added to the table may be 28, and the table may include Table 2 as described above.

[0121] The selection code (830) is configured to select one of several intra-prediction modes and any additional intra-prediction modes added to the table in order to decode the video sequence.

[0122] The aforementioned technologies can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media.

[0123] Figure 9 shows a computer system (900) suitable for implementing the embodiment.

[0124] Computer software can be encoded using any suitable machine code or computer language that generates code containing instructions that can be subjected to assembly, compilation, linking, or similar mechanisms and executed directly by the computer's central processing unit (CPU), graphics processing unit (GPU), etc., or via interpretation, microcode execution, etc.

[0125] Instructions can be executed on various types of computers or their components, such as personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things devices.

[0126] The components shown in Figure 9 for the computer system (900) are illustrative in nature and are not intended to imply any limitations on the use or functionality of computer software implementing the embodiments. Furthermore, the configuration of the components should not be interpreted as having any dependency or requirement on any one or combination of components shown in a typical embodiment of the computer system (900).

[0127] The computer system (900) may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users, for example, through haptic input (keystrokes, swipes, data glove movements, etc.), audio input (voices, applause, etc.), visual input (gestures, etc.), olfactory input (not shown), etc. The human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (speech, music, ambient sounds, etc.), images (scanned images, photographic images obtained from still cameras, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).

[0128] An input human interface device may include one or more of the following: keyboard (901), mouse (902), trackpad (903), touchscreen (910), data glove (904), joystick (905), microphone (906), scanner (907), and camera (908) (only one of each is shown).

[0129] Furthermore, the computer system (900) may include certain human interface output devices. Such human interface output devices can stimulate the senses of one or more human users, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (910), data glove (904), or joystick (905), although there may be haptic feedback devices that do not function as input devices), audio output devices (speakers (909), headphones (not shown), etc.), visual output devices (each having a touchscreen input function or not, each having a haptic feedback function or not, some of which may be capable of outputting two-dimensional visual output, or capable of outputting more than three dimensions by means such as stereographic output, virtual reality glasses (not shown), holographic display, and smoke tank (not shown), such as screens (910) including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, organic light-emitting diode (OLED) screens), and printers (not shown).

[0130] Furthermore, the computer system (900) may include human-accessible storage devices and their associated media, such as optical media like CD / DVD ROM / RW (920) on media like CD / DVD (921), thumb drives (922), removable hard drives or solid-state drives (923), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).

[0131] Furthermore, those skilled in the art should understand that the term “computer-readable medium” as used in relation to the subject matter disclosed herein does not include transmission media, carrier waves, or other transient signals.

[0132] Furthermore, the computer system (900) may also include an interface to one or more communication networks. The networks may be, for example, wireless, wired, or optical. In addition, the networks may be local, wide-area, metropolitan, vehicle and industrial, real-time, latency-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks such as Global Systems for Mobile Communications (GSM), third generation (3G), fourth generation (4G), fifth generation (5G), and Long-Term Evolution (LTE), wired or wireless wide-area digital networks such as cable television, satellite TV, and terrestrial broadcast TV, and vehicle and industrial networks such as CANBus. Certain networks generally require an external network interface adapter attached to a specific general-purpose data port or peripheral bus ((949)) (e.g., a Universal Serial Bus (USB) port on a computer system (900)). (Others are generally integrated into the core of the computer system (900) by attachment to a system bus as described below (e.g., integration of an Ethernet interface into a PC computer system, or integration of a cellular network interface into a smartphone computer system).) Using any of these networks, the computer system (900) can communicate with other entities. Such communication may be unidirectional (receive only, e.g., broadcast TV), unidirectional (transmit only, e.g., from a CANbus to a specific CANbus device), or bidirectional, such as communication to other computer systems using a local area digital network or wide area digital network. Specific protocols and protocol stacks may be used in each of the networks and network interfaces as described above.

[0133] The aforementioned human interface devices, human-accessible storage devices, and network interfaces can be attached to the core (940) of the computer system (900).

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

[0135] The CPU (941), GPU (942), FPGA (943), and accelerator (944) can execute specific instructions that can be constructed by combining the aforementioned computer code. Such computer code can be stored in ROM (945) or RAM (946). Temporary data can also be stored in RAM (946), while permanent data can be stored, for example, in internal mass storage (947). By using cache memory that can be closely associated with one or more CPUs (941), GPUs (942), mass storage (947), ROM (945), RAM (946), etc., high-speed storage and retrieval to any memory device can be enabled.

[0136] Computer-readable media can carry computer code for performing various operations carried out by a computer. The media and computer code may be specifically designed and constructed for the purposes of the embodiment, or they may be of a type of media and computer code that is well known and available to those skilled in computer software technology.

[0137] A computer system having an architecture (900), in particular a core (940), can provide the resulting functionality of a processor (including CPUs, GPUs, FPGAs, accelerators, etc.) that runs software embodied in one or more tangible computer-readable media. Such computer-readable media may be mass storage accessible to the user as described above, as well as media associated with specific storage of the core (940) that has a non-transient nature, such as internal mass storage (947) or ROM (945). Software that implements various embodiments may be stored in such devices and run by the core (940). The computer-readable media may include one or more memory devices or chips according to specific needs. The software may cause the core (940), in particular a processor (CPU, GPU, FPGA, etc.) within the core, to run specific processes or specific parts of specific processes described herein, including defining data structures stored in RAM (946) and modifying such data structures according to processes defined by software. In addition to or instead of the foregoing, a computer system may provide functionality resulting from logic wired or otherwise embodied in circuits (e.g., accelerators (944)) that can act in place of or in cooperation with software to perform specific processes or specific parts of specific processes described herein. Where necessary, references to software may encompass logic, and vice versa. References to computer-readable media may, where necessary, encompass circuits (such as integrated circuits (ICs)) that house software for execution, circuits that embody logic for execution, or both. Embodiments may encompass any suitable combination of hardware and software.

[0138] While several typical embodiments have been described in this disclosure, there are many variations, substitutions, and alternative equivalents that fall within the scope of this disclosure. Therefore, those skilled in the art will understand that numerous systems and methods embodying the principles of this disclosure and thus falling within the technical concept and scope of the invention, although not expressly shown or described herein, can be devised. [Explanation of Symbols]

[0139] 200 Communication Systems 210 terminals 220 terminals 230 devices 240 devices 250 Communication Networks 301 Video Sources, Cameras 302 Uncompressed Video Sample Streams 303 encoder, video encoder 304 video bitstream 305 Streaming Server 306 Streaming Clients 307 video bitstreams 308 Streaming Clients 309 video bitstreams 310 Decoder, Video Decoder 311 Output video sample stream 312 Rendering devices, displays 313 Capture Subsystem 410 Receiver 412 channels 415 Buffer memory, buffer 420 Parsa 421 Reproduction, Symbol 451 Inverse Conversion Unit 452 IntraPicture Prediction Units 453 Motion Compensation Prediction Unit 454 Loop Filter Unit 455 Aggregator 456 Reference Picture 457 Reference Picture Buffer 530 Video coders, source coders, encoders 532 coding engine 533 Decoder, Local Video Decoder 534 Reference picture cache, reference picture memory 535 Predictor 540 Transmitter 543 Video Sequences 545 Entropicoda 550 Controller 560 communication channels 606 Bottom edge 607 Right side 710 blocks 720 blocks 730 blocks 800 equipment 810 Decision Code 820 Additional Codes 830 Selection Code 900 Computer Systems 900 Architecture 901 Keyboard 902 Mouse 903 Trackpad 904 Data Globe 905 Joystick 906 Mike 907 Scanner 908 Camera 909 Audio Output Device: Speakers 910 Touchscreen 921 Medium 922 Thumb Drive 923 Solid State Drive 940 cores 943 Field-Programmable Gate Area FPGA 944 Hardware Accelerators 945 Read-only memory ROM 947 Internal Mass Storage 948 System Bus 949 Local buses 2103 Mode 2603 Mode 10101 mode 18104 Mode 18601 mode 26102 Mode 34105 Mode 34604 Mode 50602 Mode 66605 Mode

Claims

1. A method for controlling intra-prediction for decoding a video sequence, The above method is performed by at least one processor, A step of determining the ratio of width to height of the encoding unit, The steps include adding, based on the determined ratio being different from 1, a first wide angle directed toward the lower left edge of the coding unit, a second wide angle directed toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, respectively, to a table containing multiple intra-prediction modes corresponding to the intra-prediction angle; For decoding the video sequence, the step of selecting at least one of the plurality of intra-prediction modes and the additional intra-prediction modes added to the table, Includes, (i) When the ratio is greater than 1 and less than 2, If the variable predModeIntra, which specifies the intra-prediction mode in the encoded video sequence, is 2 or greater and less than 8, the selection is made based on the intra-prediction mode specified in the video sequence plus 65. (ii) If the reciprocal of the above ratio is greater than 1 and less than 2, If the variable predModeIntra, which specifies the intra prediction mode in the encoded video sequence, is greater than 60 and less than or equal to 66, the selection is made based on the intra prediction mode specified in the video sequence minus 67. After the wide angle is added, the tan(α) of the angular direction α for each intra-predicted angle includes {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}. method.

2. A device for controlling intra-prediction for decoding a video sequence, At least one processor, At least one memory connected to the aforementioned at least one processor, Includes, The aforementioned at least one memory contains a computer program, The apparatus wherein the at least one processor is configured to execute the computer program to realize the method according to claim 1.

3. A program for causing a computer to perform the method described in claim 1.

4. A method for controlling intra-prediction for encoding a video sequence, The above method is performed by at least one processor, A step of determining the ratio of width to height of the encoding unit, The steps include adding, based on the determined ratio being different from 1, a first wide angle directed toward the lower left edge of the coding unit, a second wide angle directed toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, respectively, to a table containing multiple intra-prediction modes corresponding to the intra-prediction angle; For encoding the video sequence, the step of selecting at least one of the plurality of intra-prediction modes and the additional intra-prediction modes added to the table, The steps include generating a variable predModeIntra that specifies the intra prediction mode, and Includes, (i) When the ratio is greater than 1 and less than 2, If the variable predModeIntra is 2 or greater and less than 8, the selection is made based on the intra prediction mode specified in the encoded video sequence plus 65. (ii) If the reciprocal of the above ratio is greater than 1 and less than 2, If the variable predModeIntra is greater than 60 and less than or equal to 66, the selection is made based on the intra prediction mode specified in the encoded video sequence minus 67. After the wide angle is added, the tan(α) of the angular direction α for each intra-predicted angle includes {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}. method.

5. A device for controlling intra-prediction for encoding video sequences, At least one processor, At least one memory connected to the aforementioned at least one processor, Includes, The aforementioned at least one memory contains a computer program, The apparatus wherein the at least one processor is configured to execute the computer program to realize the method according to claim 4.

6. A program for causing a computer to perform the method described in claim 4.

7. A method for transmitting a bitstream, The above method is performed by at least one processor, A step of determining the ratio of width to height of the encoding unit, The steps include adding, based on the determined ratio being different from 1, a first wide angle directed toward the lower left edge of the coding unit, a second wide angle directed toward the upper right edge of the coding unit, and additional intra-prediction modes corresponding to the first and second wide angles, respectively, to a table containing multiple intra-prediction modes corresponding to the intra-prediction angle; For encoding a video sequence, the step of selecting at least one of the plurality of intra-prediction modes and the additional intra-prediction modes added to the table, The steps include generating a variable predModeIntra that specifies the intra prediction mode, and The steps include: encoding the video sequence based on the selected intra prediction mode to generate a bitstream; The steps include transmitting the bitstream, Includes, (i) When the ratio is greater than 1 and less than 2, If the variable predModeIntra is 2 or greater and less than 8, the selection is made based on the intra prediction mode specified in the encoded video sequence plus 65. (ii) If the reciprocal of the above ratio is greater than 1 and less than 2, If the variable predModeIntra is greater than 60 and less than or equal to 66, the selection is made based on the intra prediction mode specified in the encoded video sequence minus 67. After the wide angle is added, the tan(α) of the angular direction α for each intra-predicted angle includes {0 / 32, 1 / 32, 2 / 32, 3 / 32, 4 / 32, 6 / 32, 8 / 32, 10 / 32, 12 / 32, 14 / 32, 16 / 32, 18 / 32, 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}. method.

8. At least one processor, At least one memory connected to the aforementioned at least one processor, Includes, The aforementioned at least one memory contains a computer program, The apparatus wherein the at least one processor is configured to execute the computer program to realize the method according to claim 7.

9. A program for causing a computer to perform the method described in claim 7.