Method, device, and computer program for intra mode coding

JP2024156924A5Active Publication Date: 2025-04-03TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024130704
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2018-11-23
Filing Date
2024-08-07
Publication Date
2025-04-03
Estimated Expiration
2039-09-05

AI Technical Summary

Technical Problem

Existing video encoding technologies face inefficiencies in intra-mode encoding due to the high number of intra prediction modes, particularly in advanced codecs like VVC, leading to increased bit usage and computational complexity.

Method used

The proposed method introduces additional intra prediction modes based on the aspect ratio of coding units, adding wide angles to the traditional intra prediction modes, reducing the number of signaled modes by utilizing the correlation between neighboring blocks and incorporating wide angles towards the bottom left and top right edges of the coding unit.

Benefits of technology

This approach reduces the bit usage and computational complexity in intra-mode encoding by leveraging the aspect ratio and neighboring block information, enhancing encoding efficiency and decoding performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a method 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 priority to U.S. Provisional Patent Application No. 62 / 734,996, filed September 21, 2018, and U.S. Patent Application No. 16 / 198,951, filed November 23, 2018, in the U.S. Patent and Trademark Office, which applications are incorporated herein by reference in their entireties.

[0002] Methods and apparatus according to embodiments relate to video processing, and more particularly to methods and apparatus for intra-mode encoding. [Background technology]

[0003] The intra prediction modes used in High Efficiency Video Coding (HEVC) are shown in Figure 1. There are a total of 35 intra prediction modes in HEVC, among which mode 10 (101) is the horizontal mode, mode 26 (102) is the vertical mode, and mode 2 (103), mode 18 (104), and mode 34 (105) are diagonal modes. The intra prediction modes are informed by three Most Probable Modes (MPM) and the remaining 32 modes.

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

[0005] The generation process of MPM list generation is shown as follows: where 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 currently available, leftIntraDir or aboveIntraDir is set to the index DC_IDX. And 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; Summary of the Invention [Means for solving the problem]

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

[0007] According to some embodiments, an apparatus for controlling intra prediction for decoding of 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 according to the computer program code. The computer program code includes a determining code configured to cause the at least one processor to determine a ratio of a width to a height of a coding unit, and an additional code configured to cause the at least one processor to add a first wide angle toward a lower left side of the coding unit, a second wide angle toward a upper right side of the coding unit, and additional intra prediction modes corresponding to the first wide angle and the second wide angle, respectively, to a table including 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 a selecting code configured to cause the at least one processor to select one of the plurality of intra prediction modes and the additional intra prediction mode added to the table for decoding of the video sequence.

[0008] According to some embodiments, a non-transitory computer-readable storage medium stores instructions that cause a processor to determine a ratio of a width to a height of a coding unit and, based on the determined ratio being different from 1, add a first wide angle toward a lower left side of the coding unit, a second wide angle toward a upper right side of the coding unit, and additional intra prediction modes corresponding to the first wide angle and the second wide angle, respectively, to a table including a plurality of intra prediction modes corresponding to intra prediction angles. The instructions further cause the processor to select one of the plurality of intra prediction modes and the additional intra prediction mode added to the table for decoding of a video sequence. [Brief description of the drawings]

[0009] [Figure 1] FIG. 2 is a diagram of intra prediction modes in HEVC. [Diagram 2] 1 is a schematic block diagram of a communication system according to one embodiment. [Diagram 3] FIG. 2 illustrates an arrangement of a video encoder and a video decoder in a streaming environment according to one embodiment. [Figure 4] FIG. 2 is a functional block diagram of a video decoder according to one embodiment. [Diagram 5] FIG. 2 is a functional block diagram of a video encoder according to one embodiment. [Figure 6] FIG. 1 is a diagram showing intra-prediction modes in Draft 2 of Versatile Video Coding (VVC). [Figure 7] 1 is a flow chart illustrating a method for controlling intra prediction for decoding of a video sequence according to one embodiment. [Figure 8] 1 is a schematic block diagram of an apparatus for controlling intra prediction for decoding of a video sequence according to one embodiment; [Figure 9] FIG. 1 illustrates a computer system suitable for implementing embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0010] FIG. 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 a one-way transmission of data, a first terminal (210) may encode video data at a local location for transmission to the other terminal (220) via the network (250). The second terminal (220) may receive the encoded video data of the other terminal from the network (250), decode the encoded data, and display the recovered video data. One-way data transmission may be common in media provisioning applications, etc.

[0011] 2 illustrates a second set of terminals (230, 240) provided to support two-way transmission of encoded video, such as may occur during a video conference. For two-way transmission of data, each terminal (230, 240) can encode video data captured at a local location for transmission over the network (250) to the other terminal. Additionally, each terminal (230, 240) can receive 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-240) may be illustrated as servers, personal computers, and smartphones, although the principles of the embodiments are not so limited. The embodiments are applicable to laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (250) represents any number of networks that convey encoded video data between the terminals (210-240), such as wired and / or wireless communication networks. The communication network (250) may exchange data over circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this specification, the architecture and topology of the network (250) may not be important to the operation of the embodiments, unless otherwise described herein below.

[0013] 3 is a diagram of a video encoder and video decoder arrangement in a streaming environment according to one embodiment. The disclosed subject matter may be equally applicable to other video-enabled applications including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0014] The streaming system may include a capture subsystem (313), which may include a video source (301), such as a digital camera, that generates an uncompressed video sample stream (302). This sample stream (302), shown in bold to emphasize its large amount of data 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 described in more detail below. An encoded video bitstream (304), shown in thin to emphasize its small amount of data compared to the sample stream, may be stored on a streaming server (305) for future use. One or more streaming clients (306, 308) may access the streaming server (305) to obtain copies (307, 309) of the encoded video bitstream (304). The client (306) may include a video decoder (310) that receives and decodes a copy of the encoded video bitstream (307) to generate 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 particular 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] FIG. 4 is a functional block diagram of a video decoder (310) according to one embodiment.

[0016] A receiver (410) may receive one or more codec video sequences to be decoded by the decoder (310), one coded video sequence at a time in the same embodiment or in one embodiment, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel (412), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (410) may receive the encoded coded video data together with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). The receiver (410) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (415) may be connected between the receiver (410) and the entropy decoder / parser (420) (hereinafter, the "parser"). If the receiver (410) is receiving data from a store-and-forward device or an isocyclic network with sufficient bandwidth and control, 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 may be relatively large and advantageously of adaptive size.

[0017] The video decoder (310) may include a parser (420) for recovering symbols (421) from the entropy-encoded video sequence. The types of symbols include information used to manage the operation of the decoder (310), as shown in FIG. 4, and possibly information for controlling a rendering device, such as a display (312), which may not be an integral part of the decoder but may be connected to the decoder. The rendering device control information may be in the form of a supplemental enhancement information (SEI message) or a video usability information (VUI) parameter set fragment (not shown). The parser (420) may perform parsing / entropy decoding of the received encoded video sequence. The encoding of the encoded video sequence may conform to a video encoding technique or standard and may follow principles well known to those skilled in the art, such as variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (420) may extract from the encoded video sequence 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. The subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. In addition, the entropy decoder / parser may also extract information from the encoded video sequence, such as transform coefficients, quantization parameter (QP) values, motion vectors, etc.

[0018] The parser (420) can perform entropy decoding / parsing operations on the video sequence received from the buffer (415) to generate symbols (421). The parser (420) can receive the encoded data and selectively decode particular symbols (421). Additionally, the parser (420) can determine whether a particular symbol (421) should be provided to a motion compensated prediction unit (453), a scaler / inverse transform unit (451), an intra prediction unit (452), or a loop filter unit (454).

[0019] The reproduction of symbols (421) may involve several different units, depending on the type of 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 parsed from the encoded video sequence by the parser (420). The flow of such subgroup control information between the parser (420) and several units described below is not shown for clarity.

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

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

[0022] In some cases, the output samples of the scaler / inverse transform (451) may relate to intra-coded blocks, i.e., blocks that do not use prediction information from previously reconstructed pictures, but rather may use prediction information from previously reconstructed parts of the current picture. Such prediction information may be provided by an 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) adds the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451), possibly in a sample-by-sample manner.

[0023] In other cases, the output samples of the scalar / inverse transform unit (451) may relate to an inter-coded, possibly motion-compensated block. In such cases, the motion compensation prediction unit (453) may access the reference picture memory (457) to obtain samples used for prediction. After motion compensation of the samples obtained according to the symbols (421) related to the block, these samples may be added by the aggregator (455) to the output of the scalar / inverse transform unit (in this case referred to as residual samples or residual signals) to generate output sample information. The address in the reference picture memory form from which the motion compensation unit obtains the prediction samples may be controlled by a motion vector available to the motion compensation unit in the form of the 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 sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0024] Various loop filtering techniques can be applied to the output samples of the aggregator (455) in the loop filter unit (454). Video compression techniques are 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 can include in-loop filter techniques that may be responsive to meta-information obtained in the decoding of previous portions (in decoding order) of the encoded pictures or encoded video sequences, as well as to previously reconstructed and loop filtered sample values.

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

[0026] Once a particular coded picture has been fully reconstructed, it can be used as a reference picture for future prediction. Once a coded picture has been fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (420)), the current reference picture (456) can become part of the reference picture buffer (457) and a new current picture memory can be reallocated before beginning the reconstruction of the next coded picture.

[0027] The video decoder (310) may perform decoding operations according to a given video compression technique, which may be documented in a standard such as ITU-T Rec H265. The encoded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense of adhering to the syntax of the video compression technique or standard as specified in the video compression technique's document or standard, in particular its profile document. It may also be necessary for compliance that the complexity of the encoded video sequence be within the boundaries defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reproduction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. The limits set by the level may be further limited in some cases by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled in the encoded video sequence.

[0028] In one embodiment, the receiver (410) can 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 recreate the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

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

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

[0031] The video source (301) may provide a source video sequence that is encoded by the encoder (303) in the form of a digital video sample stream that may be of 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 presentation 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 number of individual pictures that give motion when viewed in sequence. The picture itself 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 can easily understand the relationship between pixels and samples. The following description focuses 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 constraint required by the application. Enforcing 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 for rate distortion optimization techniques, 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 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 those skilled in the art will easily recognize as a "coding loop." As a very simplified explanation, the coding loop may consist of an encoding part (hereafter "source coder") of the encoder (530) (responsible for generating symbols based on the input picture to be encoded and reference pictures) and a (local) decoder (533) embedded in the encoder (303) that reproduces the symbols to generate sample data that the (remote) decoder is also expected to generate (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). That reproduced sample stream is input to a reference picture memory (534). The contents of the reference picture buffer are also bit-accurate between the local and remote encoders, since the decoding of the symbol stream gives bit-accurate results regardless of the location of the decoder (local or remote). In other words, the predictive part of the encoder "sees" exactly the same sample values ​​as the reference picture samples that the decoder is expected to "see" when using prediction in decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained, for example due to channel errors) is well known to those skilled in the art.

[0034] The operation of the "local" decoder (533) may be the same as the operation of the "remote" decoder (310) already described in detail above in connection with Figure 4. However, with brief reference also to Figure 4, because symbols are available and the encoding / decoding of symbols into an encoded video sequence by the entropy coder (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), may not be fully implemented in the local decoder (533).

[0035] An observation that can be made in this regard is that any decoder technique, other than parsing / entropy decoding, that is present in a decoder must necessarily be present in the corresponding encoder in substantially identical functional form. A description of the encoder techniques can be omitted, since they are the inverse of the decoder techniques described generically. Only in certain areas is further elaboration necessary, as will be presented below.

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

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

[0038] A predictor (535) may perform a prediction search for the coding engine (532). That is, for a new frame to be coded, 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., that may serve as suitable prediction references for the new picture. The predictor (535) may operate on a sample block vs. pixel block basis to find a suitable prediction reference. In some cases, as determined by the search results obtained by the predictor (535), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (534).

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

[0040] The output of all the above mentioned functional units may be subjected to entropy coding in an entropy coder (545) which converts the symbols produced by the various functional units into an encoded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, e.g. Huffman coding, variable length coding, arithmetic coding, etc.

[0041] The transmitter (540) may buffer the encoded video sequence produced by the entropy coder (545) and prepare it for transmission over a communication channel (560), which may be a hardware / software link to a storage device that may store the encoded video data. The transmitter (540) may merge the encoded video data from the video coder (530) with other data to be transmitted, such as, for example, encoded audio data and / or auxiliary data streams (sources not shown).

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

[0043] An intra picture (I-picture) may be a picture that can be coded and decoded without using any other frame in a sequence as a source of prediction. Some video codecs allow different types of intra pictures, such as independent decoder refresh pictures. Those skilled in the art will be aware of these variants of I-pictures and their respective uses and characteristics.

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

[0045] A bidirectionally predicted picture (B-picture) may be a picture that can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multi-prediction picture may use more than two reference pictures and associated metadata to reconstruct a single block.

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

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

[0048] In one embodiment, the transmitter (540) can 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, etc.

[0049] FIG. 6 is a diagram showing intra prediction modes in Draft 2 of VVC.

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

[0051] Thirty-five HEVC intra prediction 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 "offset" is changed to 61 and the variable "mod" is changed to 64, because there are 67 signaled modes in VVC Draft 2.

[0053] For mode encoding, first, one MPM flag is 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 modes.

[0054] The following passage from Draft 2 of VVC describes the luma intra mode encoding 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. - When 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) - Otherwise, 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) Otherwise (candIntraPredModeB is not equal to candIntraPredModeA), 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, then candModeList[2] is set equal to INTRA_PLANAR. - Otherwise, if neither candModeList[0] nor candModeList[1] is equal to INTRA_DC, then candModeList[2] is set equal to INTRA_DC. - Otherwise, candModeList[2] is set equal 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, IntraPredModeY[xPb][yPb] is set equal to candModeList[intra_luma_mpm_idx[xPb][yPb]]. Otherwise, IntraPredModeY[xPb][yPb] is derived by applying the following ordered steps: 1. The array candModeList[x] (x=0..2) is modified by the following ordered steps: If i.candModeList[0] is greater than candModeList[1], then both 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], then both values ​​are swapped as follows: (candModeList[0], candModeList[2])=Swap(candModeList[0], candModeList[2])(8-10) iii.If 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 ordered steps: i. IntraPredModeY[xPb][yPb] is set equal to intra_luma_mpm_remainder[xPb][yPb]. ii. If i is equal to 0 to 2 (inclusive), then when IntraPredModeY[xPb][yPb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xPb][yPb] is increased by 1. The variable IntraPredModeY[x][y], where x=xPb..xPb+cbWidth-1 and y=yPb..yPb+cbHeight-1, is set equal to IntraPredModeY[xPb][yPb].

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

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

[0057] The following suggested methods can be used individually or combined in any order.

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

[0059] In the following description, the allowed intra-prediction mode (AIPM) set is defined as a mode set containing modes that can be used for intra-prediction of the current block, and the disallowed intra-prediction mode (DIPM) set is defined as a mode set containing modes that cannot be signaled or used for intra-prediction of the current block.

[0060] Two variables are used in this document: offset and mod. These two variables can have 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 per block: an AIPM set and a DIPM set. For each block, the modes of these two mode sets may differ depending on the coded information of neighboring blocks and / or the current block, which may include, but are not limited to, the intra-prediction modes of neighboring blocks, the intra-prediction mode of the current block, the aspect ratio, the coded block flags (CBF), the primary and / or secondary transform types, neighboring reconstructed samples, etc.

[0062] In one embodiment, the AIPM and DIPM sets of modes depend on the intra-prediction modes of the neighboring blocks.

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

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

[0065] In one embodiment, for each angular adjacent mode, denoted by ang_mode, a specific mode can be derived by Equations 1 and 2 below, 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(Eq. 2)

[0066] In Equations 1 and 2, diff is a variable and 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 in the set {0, 1, 2, 3, 5, 7}.

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

[0068] In one embodiment, the AIPM and DIPM sets of modes depend on the inter prediction modes of the neighboring blocks.

[0069] In one embodiment, the modes of the AIPM and DIPM sets depend on whether the adjacent blocks are intra-coded, inter-coded, or coded using an intra block copy (IBC) mode, a MERGE mode, a SKIP mode, or another coding mode.

[0070] In one embodiment, reconstructed pixels of neighboring blocks are used to derive the set of allowed and disallowed intra-prediction modes.

[0071] In one embodiment, the gradients of adjacent reconstructed samples are used to derive the modes of the AIPM and DIPM sets. The gradients can be calculated by one of the following methods, including but 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 and DIPM sets can be derived using edge detection or image feature detection methods, including but not limited to one of the following: Sobel operator, Laplace operator, Canny edge detector, Kayyali operator, SUSAN corner detector, etc.

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

[0074] In one embodiment, the number of modes included in the AIPM set is denoted by S, where S is equal to M plus a power of 2, e.g., S=M+2 K where M and K are positive integers, for example, M=6 and K=5. M may be equal to or less than 7. Typical values ​​include, but are not limited to, 3, 4, 5, 6, and 7.

[0075] In one embodiment, the size of the AIPM set is denoted by S, where S is equal to M plus a power of two for the number of levels, e.g., S=M+2 K +2 L where M, K, and L are positive integers, e.g., M=6, K=4, L=5. M may be less than or equal to 7. Typical values ​​include, but are not limited to, 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, or each block aspect ratio, or each block shape. However, the number of modes included in the AIPM set and the DIPM set may be different for different block sizes, or 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-prediction modes derived from neighboring modes is less than S, a default mode is used to fill the AIPM set.

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

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

[0080] In one embodiment, after the HEVC intra prediction modes are included, the angle modes associated with odd mode indices are included in the default modes.

[0081] In one embodiment, when the AIPM set size is 38, the default modes are 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, a primary MPM list and a non-MPM list, where the size of the non-MPM list is a power of two.

[0084] In one embodiment, to encode a mode in an AIPM set, first one MPM flag is 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 the mode in a non-MPM list.

[0085] According to the aspect ratio of the current block, 28 or 30 wide angles and respective wide angle intra prediction modes are added to the table of original angles and respective original angle intra prediction modes.

[0086] In one embodiment, 14 or 15 wide angles and respective wide angle intra prediction modes are added to the bottom-left direction of the current block (e.g., bottom side 606 of FIG. 6), and another 14 or 15 wide angles and respective wide angle intra prediction modes are added to the top-right direction of the current block (e.g., right side 607 of FIG. 6). Some example implementations are shown in Tables 1 and 2 below.

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

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

[32] ) of 32 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, 1024}, where angles {0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32} are original angles and angles {35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024} are wide 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 with VVC's respective intra prediction modes with 30 wide angle and 30 respective wide angle intra prediction modes added to the 67 original angle and 67 respective original angle intra prediction modes.

[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 original angles and angles {35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512} are wide 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 with VVC's respective intra prediction modes in which 28 wide angle and 28 respective wide angle intra prediction modes are added to the 67 original angle and 67 respective original angle intra prediction modes.

[0096] [Table 2]

[0097] The following text describes the changes (strikethrough and underlined) to the text of Draft 2 of VVC using the above embodiment. 8.2.4.2.7 INTRA_ANGULAR2..INTRA_ANGULAR66 Intra Prediction Mode Specifications The inputs to this process are: - intra prediction mode predModeIntra, - adjacent samples p[x][y] (x=-1, y=-1..refH-1 and x=0..refW-1, y=-1), - the variable nTbW, which specifies the width of the transformation block; - variable nTbH, which specifies the height of the transformation block; - variable refW, which specifies the width of the reference sample, - Variable refH that specifies the height of the reference sample It is. The output of this process is the modified intra prediction mode predModeIntra and the predicted samples predSamples[x][y], where x=0..nTbW+1, y=0..nTbH+1. The variable whRatio is set equal to min(abs(Log2(nTbW / nTbH))), 2). For non-square blocks (nTbW is not equal to nTbH), the intra prediction mode predModeIntra is modified as follows: - If all of the following conditions are true, then predModeIntra is set equal to (predModeIntra + 65): -nTbW is greater than nTbH -predModeIntra is 2 or greater -predModeIntra is smaller than (whRatio>1)?12:8 - Otherwise, if all of the following conditions are true, predModeIntra is set equal 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 a mapping table between predModeIntra and the angle parameter intraPredAngle, and Figure 8-3 shows the intra prediction angles for each angle parameter.

[0098] [Table 3]

[0099] ...

[0100] [Table 4]

[0101] 7 is a flow chart illustrating a method (700) for controlling intra prediction for decoding of a video sequence according to one embodiment. In some implementations, one or more processing blocks of FIG. 7 may be performed by the decoder (310). In some implementations, one or more processing blocks of FIG. 7 may be performed by another device or devices that are separate from or include the decoder (310), such as the encoder (303).

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

[0103] In a second block (720), the method (700) includes adding a first wide angle toward the bottom left side of the coding unit, a second wide angle toward the top right side of the coding unit, and additional intra prediction modes corresponding to the first wide angle and the second wide angle, respectively, to a table including multiple intra prediction modes corresponding to the intra prediction angles based on the determined ratio being different from 1.

[0104] The number of first wide angles added to the table may be fourteen. Each of the intra-prediction angles included in the table may have an angular orientation α with tan(α) 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 wide angles added to the table may have an angular orientation α with tan(α) 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-prediction angles included in the table can have an angular orientation α with tan(α) 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 wide angles added to the table can have an angular orientation α with tan(α) 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 fifteen. Each of the intra-prediction angles included in the table may have an angular orientation α with tan(α) 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 wide angles added to the table may have an angular orientation α with tan(α) 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 fifteen. Each of the intra-prediction angles included in the table may have an angular orientation α with tan(α) 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 wide angles added to the table may have an angular orientation α with tan(α) 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 the 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 above.

[0109] In a third block (730), the method (700) includes selecting one of the multiple intra-prediction modes and the additional intra-prediction mode added to the table for decoding the video sequence.

[0110] Although Figure 7 illustrates exemplary blocks of method (700), in some implementations, method (700) may include additional blocks, fewer blocks, different blocks, or blocks in a different arrangement with respect to the blocks illustrated in Figure 7. Additionally or alternatively, two or more of the blocks of method (700) may be performed in parallel.

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

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

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

[0114] A decision code (810) is configured to determine a ratio of width to height of a coding unit.

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

[0116] The number of first wide angles added to the table may be fourteen. Each of the intra-prediction angles included in the table may have an angular orientation α with tan(α) 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 wide angles added to the table may have an angular orientation α with tan(α) 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-prediction angles included in the table can have an angular orientation α with tan(α) 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 wide angles added to the table can have an angular orientation α with tan(α) 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 fifteen. Each of the intra-prediction angles included in the table may have an angular orientation α with tan(α) 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 wide angles added to the table may have an angular orientation α with tan(α) 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 fifteen. Each of the intra-prediction angles included in the table may have an angular orientation α with tan(α) 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 wide angles added to the table may have an angular orientation α with tan(α) 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 the 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 above.

[0121] A selection code (830) is configured to select one of the multiple intra-prediction modes and the additional intra-prediction mode added to the table for decoding the video sequence.

[0122] The techniques described above may be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media.

[0123] FIG. 9 is a diagram of a computer system (900) suitable for implementing embodiments.

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

[0125] The instructions may be executed on various types of computers or components thereof, such as, for example, a personal computer, a tablet computer, a server, a smart phone, a gaming device, an Internet of Things device, etc.

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

[0127] The computer system (900) may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, via tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), olfactory input (not shown), etc. 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.), video (two-dimensional video, three-dimensional video including stereoscopic video, etc.), etc.

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

[0129] Additionally, the computer system (900) may include certain human interface output devices that can stimulate one or more of the senses of a human user, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices can include haptic output devices (e.g., haptic feedback via a touchscreen (910), data gloves (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 (screens (910) including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, organic light emitting diode (OLED) screens, etc., each of which may or may not have touchscreen input capability, each of which may or may not have haptic feedback capability, and some of which may be capable of outputting two-dimensional visual output, or output in more than three dimensions by means of stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), etc.), and printers (not shown).

[0130] Additionally, the computer system (900) may include human accessible storage devices and their associated media, such as optical media, such as CD / DVD ROM / RW (920), 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] Moreover, those skilled in the art should understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transitory signals.

[0132] Additionally, the computer system (900) may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, optical. Furthermore, the networks may be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, and the like. 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), TV wired or wireless wide area digital networks such as cable television, satellite TV, and terrestrial broadcast TV, vehicular and industrial such as CANBus, and the like. Particular networks generally require an external network interface adapter that is attached to a particular general-purpose data port or peripheral bus (949), such as a Universal Serial Bus (USB) port of the 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., the integration of an Ethernet interface into a PC computer system, or the 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 communications may be unidirectional receive only (e.g., broadcast TV), unidirectional transmit only (e.g., CANbus to certain CANbus devices), or bidirectional, such as communications to other computer systems using local area digital networks or wide area digital networks. Specific protocols and protocol stacks may be used in each of the networks and network interfaces as described above.

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

[0134] The cores (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 for specific tasks (944), and the like. 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 a non-user accessible internal hard drive, solid-state drive (SSD), and the like. 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, and the like. Peripherals 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, and the like.

[0135] The CPU (941), GPU (942), FPGA (943), and accelerator (944) can execute certain instructions that may be configured in combination as computer code described above. Such computer code may be stored in ROM (945) or RAM (946). Temporary data may also be stored in RAM (946), while permanent data may be stored, for example, in internal mass storage (947). Cache memory, which may be closely associated with one or more of the CPU (941), GPU (942), mass storage (947), ROM (945), RAM (946), etc., may be used to enable fast storage and retrieval from any memory device.

[0136] The computer-readable media may carry computer code for performing various computer implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the embodiments, or they may be the types of media and computer code well known and available to those skilled in the computer software arts.

[0137] By way of example, and not by way of limitation, a computer system having the architecture (900), and in particular the core (940), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be media associated with the user-accessible mass storage discussed above as well as the core's internal mass storage (947) or specific storage of the core (940) that is of a non-transitory nature, such as ROM (945). Software implementing various embodiments can be stored in such devices and executed by the core (940). The computer-readable media can include one or more memory devices or chips according to particular needs. The software can cause the core (940), and in particular the processor (CPU, GPU, FPGA, etc.) within the core, to perform certain processes or certain parts of certain processes described herein, including the definition of data structures stored in RAM (946) and the modification of such data structures according to processes defined by the software. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (944)) that may operate in place of or in cooperation with the software to perform certain processes or certain portions of certain processes described herein. Where appropriate, references to software may encompass logic, and vice versa. Where appropriate, references to computer-readable media may encompass circuitry (such as integrated circuits (ICs)) that stores software for execution, circuitry that embodies logic for execution, or both. Embodiments encompass any suitable combination of hardware and software.

[0138] While several exemplary embodiments have been described in this disclosure, there are alterations, permutations, and various substitute equivalents that fall within the scope of the disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and are therefore within the spirit and scope of the invention. [Explanation of symbols]

[0139] 200 Communication Systems 210 Terminals 220 Terminals 230 Terminals 240 Terminals 250 Communication Network 301 Video source, camera 302 Uncompressed Video Sample Stream 303 Encoder, Video Encoder 304 Video Bitstream 305 Streaming Server 306 Streaming Client 307 Video Bitstream 308 Streaming Client 309 Video Bitstream 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 Parser 421 Reproduction, Symbol 451 Reverse conversion unit 452 Intra-picture Prediction Unit 453 Motion Compensation Prediction Unit 454 Loop Filter Unit 455 Aggregator 456 Reference Pictures 457 Reference Picture Buffer 530 Video Coder, Source Coder, Encoder 532 encoding engine 533 Decoder, Local Video Decoder 534 Reference Picture Cache, Reference Picture Memory 535 Predictor 540 Transmitter 543 Video Sequences 545 Entropy Coder 550 Controller 560 Communication Channels 606 Bottom 607 Right Side 710 Block 720 Block 730 Block 800 equipment 810 Decision Code 820 Additional Code 830 Selection Code 900 Computer Systems 900 Architecture 901 Keyboard 902 Mouse 903 Trackpad 904 Data Gloves 905 Joystick 906 Mike 907 Scanner 908 Camera 909 Audio Output Device Speaker 910 Touchscreen 921 Medium 922 Thumb Drive 923 Solid State Drive 940 cores 943 Field Programmable Gate Area FPGA 944 Hardware Accelerator 945 Read-only memory ROM 947 Internal Mass Storage 948 System Bus 949 Surrounding Bus 2103 Mode 2603 Mode 10101 mode 18104 Mode 18601 Mode 26102 Mode 34105 Mode 34604 Mode 50602 Mode 66605 Mode

Claims

1. 1. A method for controlling intra prediction for decoding of a video sequence, comprising the steps of: The method is executed by at least one processor, determining a ratio of width to height of a coding unit; adding a first wide angle toward a lower left side of the coding unit, a second wide angle toward a upper right side of the coding unit, and additional intra prediction modes corresponding to the first wide angle and the second wide angle, to a table including a plurality of intra prediction modes corresponding to intra prediction angles based on the determined ratio being different from 1; selecting at least one of the plurality of intra-prediction modes and the additional intra-prediction mode added to the table for decoding the video sequence; Including, (i) the ratio is greater than 1 and less than 2; if a variable predModeIntra specifying an intra prediction mode in the encoded video sequence is greater than or equal to 2 and less than 8, the selection is based on the intra prediction mode specified in the video sequence plus 65; (ii) the reciprocal of the ratio is greater than 1 and less than 2; if a variable predModeIntra specifying an intra prediction mode in the encoded video sequence is greater than 60 and less than or equal to 66, the selection is based on the intra prediction mode specified in the video sequence minus 67; method.

2. A method according to claim 1, comprising: 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}.

3. A method according to claim 1 or 2, comprising: The method of claim 1, wherein the number of first wide angles added to the table is 14.

4. The method according to claim 3, wherein each of the first wide angles added to the table has an angular orientation α with tan(α) 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}.

5. The method of claim 1, comprising: The number of second wide angles added to the table is 14.

6. The method according to claim 5, wherein each of the second wide angles added to the table has an angular orientation α with tan(α) 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}.

7. The method of claim 1, comprising: The number of first wide angles added to the table is 15.

8. The method according to claim 7, comprising:

20. The method of claim 19, wherein each of the first wide angles added to the table has an angular orientation α with tan(α) 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}.

9. The method of claim 1, comprising: The number of second wide angles added to the table is 15.

10. The method of claim 9, comprising: wherein each of the second wide angles added to the table has an angular orientation α with tan(α) 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}.

11. An apparatus for controlling intra prediction for decoding of a video sequence, comprising: At least one processor; at least one memory coupled to said at least one processor; Including, The at least one memory has a computer program stored therein; 11. Apparatus, wherein the at least one processor is configured to execute the computer program to implement the method of any one of claims 1 to 10.

12. A program for causing a computer to execute the method according to any one of claims 1 to 10.

13. A method for controlling intra prediction for encoding of a video sequence, comprising: The method is executed by at least one processor, determining a ratio of width to height of a coding unit; adding a first wide angle toward a lower left side of the coding unit, a second wide angle toward a upper right side of the coding unit, and additional intra prediction modes corresponding to the first wide angle and the second wide angle, to a table including a plurality of intra prediction modes corresponding to intra prediction angles based on the determined ratio being different from 1; selecting at least one of the plurality of intra-prediction modes and the additional intra-prediction mode added to the table for encoding the video sequence; generating a variable predModeIntra that specifies an intra prediction mode; Including, (i) the ratio is greater than 1 and less than 2; if the variable predModeIntra is greater than or equal to 2 and less than 8, the selection is based on an intra prediction mode specified in the encoded video sequence plus 65; (ii) the reciprocal of the 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 based on an intra prediction mode specified in the encoded video sequence minus 67; method.

14. The method of claim 13, comprising: 20 / 32, 23 / 32, 26 / 32, 29 / 32, 32 / 32}.

15. An apparatus for controlling intra prediction for encoding of a video sequence, comprising: At least one processor; at least one memory coupled to said at least one processor; Including, The at least one memory has a computer program stored therein; The apparatus, wherein the at least one processor is configured to execute the computer program to implement the method of claim 13.

16. A program for causing a computer to execute the method described in claim 13.