Reference sample padding and filtering for intra-prediction in video compression

By establishing a table of intra-prediction modes and applying padding and filtering techniques, the method addresses the inefficiencies in HEVC's wide angular intra prediction for non-square blocks, enhancing video encoding and decoding accuracy and efficiency.

JP2026050371APending Publication Date: 2026-03-19TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-12-10
Publication Date
2026-03-19

AI Technical Summary

Technical Problem

Existing video compression technologies like HEVC face challenges in effectively handling wide angular intra prediction modes for non-square blocks, as they lack sufficient reference samples for accurate prediction, leading to inefficiencies in encoding and decoding processes.

Method used

Implementing a method to control intra-prediction by setting up a table of intra-prediction modes corresponding to various angles, including diagonal directions for all block shapes, and selecting the appropriate mode for decoding video sequences, with specific padding and filtering techniques for non-square blocks.

Benefits of technology

Enhances the accuracy and efficiency of video encoding and decoding by providing adequate reference samples for non-square blocks, improving the prediction process and reducing data loss.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026050371000001_ABST
    Figure 2026050371000001_ABST
Patent Text Reader

Abstract

The present invention provides a method and apparatus for controlling intra-prediction to decode a video sequence. [Solution] The method includes setting up a table containing multiple intra-prediction modes corresponding to multiple intra-prediction angles, wherein the multiple intra-prediction angles include diagonal intra-prediction angles corresponding to the diagonal directions of all shapes of the coding unit, and selecting one of the multiple intra-prediction modes from the set up table in order to decode the video sequence.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Reference to Related Applications This application claims the benefit of U.S. Provisional Patent Application No. 62 / 698,526, filed on Jul. 16, 2018, with the United States Patent and Trademark Office. The entire disclosure of this provisional application is incorporated herein by reference.

[0002] The methods and apparatuses according to the embodiments relate to video processing, and more particularly, to reference sample padding and filtering for intra prediction in video compression.

Background Art

[0003] The intra prediction modes used in High Efficiency Video Coding (HEVC) are shown in FIG. 1. In HEVC, mode 10 (101) is the horizontal mode, mode 26 (102) is the vertical mode, and modes 2 (103), 18 (104), and 34 (105) are the diagonal modes. Modes 2 (103) and 34 (105) indicate the same prediction direction.

[0004] Furthermore, in HEVC, a wide angle beyond the range of prediction directions covered by the conventional intra prediction modes is called a wide angular intra prediction mode. The wide angle is only applied to blocks that are not square as follows.

[0005] When the block width exceeds the block height, an angle greater than 45 degrees in the upper right direction (intra prediction mode 34 of HEVC).

[0006] When the block height exceeds the block width, an angle greater than 45 degrees in the lower left direction (intra prediction mode 2 of HEVC).

[0007] Furthermore, in HEVC, the intra-sample replacement process in intra-mode is described in Section 8.4.4.2, which is reproduced below. This process includes a reference sample replacement process, an adjacent process filtering process, and an intra-prediction process. 8.4.4.2.2 Reference Sample Replacement Process for Intra Sample Prediction The inputs to this process are: Reference samples p[x][y] for intra-sample prediction: x=-1, y=-1...nTbS*2-1 and x=0...nTbS*2-1, y=-1. Conversion block size nTbS, The variable cIdx indicates the color component of the current block. That is the case. The output of this process is the modified reference sample p[x][y] for intra-sample prediction, x=-1, y=-1...nTbS*2-1 and x=0...nTbS*2-1, y=-1. The variable bitDepth is calculated as follows. If cIdx is equal to 0, then bitDepth is set to BitDepth Y Set to a value equal to [the specified value]. Otherwise, use bitDepth, BitDepth C Set to a value equal to [the specified value]. The values ​​of the sample p[x][y] for x=-1,y=-1...nTbS*2-1 and x=0...nTbS*2-1,y=-1 are corrected as follows. If all samples p[x][y] for x=-1,y=-1...nTbS*2-1 and x=0...nTbS*2-1,y=-1 are evaluated as "unavailable for intra-prediction", then all samples p[x Assign the value 1 << (bitDepth-1) to the value of [y]. Otherwise (if at least one, but not all, sample p[x][y] is evaluated as "unsuitable for intra-prediction"), perform the following steps in this order: 1. If p[-1][nTbS*2-1] is evaluated as "unavailable for intra-prediction", the search is performed sequentially from x=-1,y=nTbS*2-1 to x=-1,y=-1, and then sequentially from x=0,y=-1 to x=nTbS*2-1,y=-1. If a sample p[x][y] evaluated as "available for intra-prediction" is found, the search is terminated and the value of p[x][y] is assigned to p[-1][nTbS*2-1]. 2. The search is iteratively performed from x=-1, y=nTbS*2-2 to x=-1, y=-1. If p[x][y] is evaluated as "unavailable for intra prediction", the value of p[x][y+1] is substituted for the value of p[x][y]. 3. For x=0...nTbS*2-1, y=-1, if p[x][y] is evaluated as "unusable for intra-prediction", substitute the value of p[x-1][y] for the value of p[x][y]. All samples p[x][y] for x=-1,y=-1...nTbS*2-1 and x=0...nTbS*2-1,y=-1 are evaluated as "usable for intra-prediction". 8.4.4.2.3 Filtering process for adjacent samples The inputs to this process are: Adjacent samples p[x][y] for x=-1, y=-1...nTbS*2-1 and x=0...nTbS*2-1, y=-1 The variable nTbS indicates the size of the conversion block. That is the case. The output of this process is the filtered sample pF[x][y] for x=-1,y=-1...nTbS*2-1 and x=0...nTbS*2-1,y=-1. The variable filterFlag is calculated as follows. Set filterFlag to a value equal to 0 if one or more of the following conditions are true. predModeIntra is equal to INTRA_DC nTbS is equal to 4. Otherwise, the following applies: Set the variable minDistVerHor to a value equal to Min(Abs(predModeIntra-26),Abs(predModeIntra-10)). The specifications for the variable intraHorVerDistThres[nTbS] are shown in Table 8-3. The variable filterFlag is calculated as follows. If minDistVerHor exceeds intraHorVerDistThres[nTbS], set filterFlag to a value equal to 1. Otherwise, set filterFlag to a value equal to 0.

[0008] [Table 1]

[0009] If filterFlag is equal to 1, apply the following: The variable biIntFlag is calculated as follows. Set biIntFlag to a value equal to 1 if all of the following conditions are true. strong_intra_smoothing_enabled_flag is equal to 1. nTbS is equal to 32. Abs(p[-1][-1]+p[nTbS*2-1][-1]-2*p[nTbS-1][-1])<(1<<(BitDepth Y -5)) Abs(p[-1][-1]+p[-1][nTbS*2-1]-2*p[-1][nTbS-1])<(1<<(BitDepth Y -5)) Otherwise, set biIntFlag to a value equal to 0. Perform the filtering as follows: If biIntFlag is equal to 1, the filtered sample values ​​pF[x][y] for x=-1, y=-1...63 and x=0...63, y=-1 are calculated as follows. pF[-1][-1] = p[-1][-1](8 - 30) pF[-1][y] = ((63 - y)*p[-1][-1] + (y + 1)*p[-1]

[63] + 32) >> 6 where y = 0...62 (8 - 31) pF[-1]

[63] = p[-1]

[63] (8 - 32) pF[x][-1] = ((63 - x)*p[-1][-1] + (x + 1)*p

[63] [-1] + 32) >> 6 where x = 0...62 (8 - 33) pF

[63] [-1] = p

[63] [-1](8 - 34) In other cases (when biIntFlag is equal to 0), the filtered sample values pF[x][y] for x = -1, y = -1...nTbS*2 - 1 and x = 0...nTbS*2 - 1, y = -1 are obtained as follows. pF[-1][-1] = (p[-1][0] + 2*p[-1][-1] + p[0][-1] + 2) >> 2(8 - 35) pF[-1][y] = (p[-1][y + 1] + 2*p[-1][y] + p[-1][y - 1] + 2) >> 2 where y = 0...nTbS*2 - 2 (8 - 36) pF[-1][nTbS*2 - 1] = p[-1][nTbS*2 - 1](8 - 37) pF[x][-1] = (p[x - 1][-1] + 2*p[x][-1] + p[x + 1][-1] + 2) >> 2 where x = 0...nTbS*2 - 2 (8 - 38) pF[nTbS*2 - 1][-1] = p[nTbS*2 - 1][-1](8 - 39) 8.4.4.2.6 Specification of Intra Prediction Modes in the Range of INTRA_ANGULAR2 to INTRA_ANGULAR34 The input to this process is Intra prediction mode predModeIntra Adjacent samples p[x][y] for x = -1, y = -1...nTbS*2 - 1 and x = 0...nTbS*2 - 1, y = -1 Variable nTbS indicating the transform block size Variable cIdx indicating the color component of the current block as follows. The output of this process is predSamples[x][y], which is the predicted sample for x,y=0...nTbS-1. Figure 8-2 shows all 33 intra angles, and Table 8-4 shows the specifications of the mapping table between predModeIntra and the angle parameter intraPredAngle.

[0010] [Table 2]

[0011] Furthermore, Table 8-5 shows the specifications of the mapping table between predModeIntra and the inverse angle parameter invAngle.

[0012] [Table 3]

[0013] The values ​​of the prediction samples predSamples[x][y] for x,y=0...nTbS-1 are calculated as follows. If predModeIntra is 18 or higher, apply the following steps in this order. 1. Define the reference sample array ref[x] as follows: Apply the following: ref[x]=p[-1+x][-1] where x=0...nTbS(8-47) If intraPredAngle is less than 0, the primary reference sample sequence is expanded as follows: If (nTbS*intraPredAngle)>>5 is less than -1, ref[x]=p[-1][-1+((x*invAngle+128)>>8)] Here, x = -1...(nTbS*intraPredAngle)>>5(8-48) Otherwise, ref[x]=p[-1+x][-1] where x=nTbS+1...2*nTbS(8-49) 2. The predicted sample values ​​predSamples[x][y] for x,y=0...nTbS-1 are calculated as follows. a. Determine the index variable iIdx and the multiplier iFact as follows. iIdx=((y+1)*intraPredAngle)>>5(8-50) iFact=((y+1)*intraPredAngle)&31(8-51) The following will be applied depending on the value of b.iFact. If iFact is not equal to 0, the predicted sample values ​​predSamples[x][y] will be as follows: demand. predSamples[x][y]= ((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+16)>>5(8-52) Otherwise, the predicted sample values ​​predSamples[x][y] are calculated as follows. predSamples[x][y]=ref[x+iIdx+1](8-53) If c.predModeIntra is equal to 26 (vertical), cIdx is equal to 0, and nTbS is less than 32, then apply the following filtering with x=0, y=0...nTbS-1. predSamples[x][y]=Clip1 Y (p[x][-1]+((p[-1][y]-p[-1][-1])>>1))(8-54) Otherwise (if predModeIntra is less than 18), apply the following steps in this order: 1. Define the reference sample array ref[x] as follows: Apply the following: ref[x]=p[-1][-1+x] where x=0...nTbS(8-55) If intraPredAngle is less than 0, the primary reference sample sequence is expanded as follows: If (nTbS*intraPredAngle)>>5 is less than -1, ref[x]=p[-1+((x*invAngle+128)>>8)][-1] Here, x = -1...(nTbS*intraPredAngle)>>5(8-56) Otherwise, ref[x]=p[-1][-1+x] where x=nTbS+1...2*nTbS(8-57) 2. The values ​​of the prediction samples predSamples[x][y] for x,y=0...nTbS-1 are calculated as follows. a. Determine the index variable iIdx and the multiplier iFact as follows. iIdx=((x+1)*intraPredAngle)>>5(8-58) iFact=((x+1)*intraPredAngle)&31(8-59) The following will be applied depending on the value of b.iFact. If iFact is not equal to 0, the predicted sample values ​​predSamples[x][y] are calculated as follows. predSamples[x][y]= ((32-iFact)*ref[y+iIdx+1]+iFact*ref[y+iIdx+2]+16)>>5(8-60) Otherwise, the predicted sample values ​​predSamples[x][y] are calculated as follows. predSamples[x][y]=ref[y+iIdx+1](8-61) If c.predModeIntra is equal to 10 (horizontal), cIdx is equal to 0, and nTbS is less than 32, then apply the following filtering with x=0...nTbS-1, y=0. predSamples[x][y]=Clip1 Y (p[-1][y]+((p[x][-1]-p[-1][-1])>>1))(8-62) [Overview of the project] [Means for solving the problem]

[0014] In one embodiment, a method for controlling intra-prediction to decode a video sequence is performed by at least one processor and includes setting up a table containing a plurality of intra-prediction modes, each corresponding to a plurality of intra-prediction angles. The plurality of intra-prediction angles include diagonal intra-prediction angles, each corresponding to the diagonal directions of all shapes of the coding unit. The method further includes selecting one of the plurality of intra-prediction modes from the set up table to decode the video sequence.

[0015] In one embodiment, a device for controlling intra-prediction to decode 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 setting code configured to cause at least one processor to set up a table containing a plurality of intra-prediction modes, each corresponding to a plurality of intra-prediction angles. The plurality of intra-prediction angles include diagonal intra-prediction angles, each corresponding to the diagonal directions of all shapes of an encoding unit. 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 from the set up table in order to decode a video sequence.

[0016] In one embodiment, a non-temporary computer-readable storage medium stores instructions causing a processor to set up a table containing multiple intra-prediction modes, each corresponding to a plurality of intra-prediction angles. The plurality of intra-prediction angles include diagonal intra-prediction angles, each corresponding to the diagonal directions of all shapes of the coding unit. The instructions further cause the processor to select one of the plurality of intra-prediction modes from the set up table in order to decode the video sequence. [Brief explanation of the drawing]

[0017] [Figure 1] This is a diagram of the HEVC intra-prediction mode. [Figure 2] This is a simplified block diagram of a communication system according to one embodiment. [Figure 3] This diagram shows the configuration 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 6A] This is a diagram of the intra-prediction mode of the Versatile Video Coding (VVC) Test Model (VTM 1). [Figure 6B] This figure shows how the intra prediction mode is changed to wide-angle intra prediction mode for blocks that are not square. [Figure 7A] This figure shows, according to one embodiment, the predicted angle within the diagonal direction and the predicted angle beyond the diagonal direction. [Figure 7B] This figure shows how to adjust the predicted angle beyond the diagonal direction according to one embodiment. [Figure 8] This is a flowchart showing a method for controlling intra-prediction to decode a video sequence according to one embodiment. [Figure 9] This is a simplified block diagram of a device that controls intra-prediction for decoding a video sequence, according to one embodiment. [Figure 10] This is a diagram of a computer system suitable for carrying out an embodiment. [Modes for carrying out the invention]

[0018] Figure 2 is a simplified block diagram of a communication system (200) according to one embodiment. The communication system (200) may include at least two terminals (210-220) interconnected via a network (250). For one-way data transmission, the first terminal (210) may encode video data at its local location for transmission to the other terminal (220) via the network (250). The second terminal (220) may receive encoded video data from the other terminal via the network (250), decode the encoded data, and display the restored video data. One-way data transmission is common in applications such as media handling.

[0019] Figure 2 shows another set of terminals (230, 240) provided to support the bidirectional transmission of encoded video, which may occur, for example, during a video conference. For bidirectional data transmission, each terminal (230, 240) may encode video data captured at its local location for transmission to other terminals via the network (250). In this case as well, each terminal (230, 240) may receive the encoded video data transmitted by other terminals, decode the encoded data, and display the restored video data on a local display device.

[0020] In Figure 2, terminals (210-240) may be shown as servers, personal computers, and smartphones, but the principles of the embodiments are not limited in this way. Embodiments have been found to use laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (250) represents any number of networks (including, for example, wired and / or wireless communication networks) that carry encoded video data between terminals (210-240). The communication network (250) may exchange data over circuit-switched and / or packet-switched channels. Typical networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For the purposes of this description, the architecture and topology of network (250) may not be important to the operation of the embodiments unless described below herein.

[0021] Figure 3 shows the configuration of a video encoder and video decoder in a streaming environment according to one embodiment. For example, the disclosed protected object is similarly applicable to other applications where video can be used, including storing compressed video on digital media such as video conferencing, digital TV, CDs, DVDs, and memory sticks.

[0022] The streaming system may include an imaging subsystem (313) that may include, for example, a digital camera, a video source (301) that generates an uncompressed video sample stream (302). This sample stream (302) (shown in thick line to emphasize its larger data size compared to the encoded video bitstream) can be processed by an encoder (303) connected to the camera (301). The encoder (303) may include hardware, software, or a combination thereof that enables or implements the protected aspects disclosed as described in detail below. The encoded video bitstream (304) (shown in thin line to emphasize its smaller data size compared to the sample stream) can be stored in a streaming server (305) for later use. One or more streaming clients (306, 308) can access the streaming server (305) to obtain a copy (307, 309) of the encoded video bitstream (304). The client (306) may include a video decoder (310) that decodes a copy of the input 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 bitstream (304, 307, 309) can be encoded according to a given video encoding / compression standard. An example of such a standard is ITU-T Recommendation H265. A video encoding standard informally known as VVC is under development. The disclosed protected items may be used in association with VVC.

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

[0024] The receiver (410) may receive one or more codec video sequences that are decoded by the decoder (310). In the same embodiment or one embodiment, one encoded video sequence is received at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. Encoded video sequences may be received from a channel (412). The channel (412) may be a hardware / software link to a storage device that stores encoded video data. The receiver (410) may receive encoded video data with other data, such as encoded audio data and / or accompanying data streams, and may forward these data streams to corresponding usage locations (not shown), respectively. The receiver (410) may isolate the encoded video sequence from other data. To address network jitter, a buffer memory (415) may be connected between the receiver (410) and the entropy decoder / parser (420) (hereinafter referred to as "parser"). If the receiver (410) receives data from a memory / transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, a buffer (415) may not be required, or it can be small. For use in best-effort packet networks such as the Internet, a buffer (415) may be required, and the buffer (415) can be relatively large or optimized in size.

[0025] The video decoder (310) may include a parser (420) that reconstructs symbols (421) from an entropy-encoded video sequence. The categories of symbols include information used to manage the operation of the decoder (310) and may also include information that controls rendering devices, such as a display (312) that is connectable to the decoder rather than being an integral part of the decoder, as shown in Figure 4. The control information for one or more rendering devices may take the form of Supplementary Enhancement Information (SEI messages) or Video Usability Information (VUI) parameter set fragments (not shown). The parser (420) may parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may conform to video coding techniques and video coding standards, and may follow principles well known to those skilled in the art, including variable-length coding, Huffman coding, arithmetic coding, etc., with or without context dependency. The parser (420) may extract a set of subgroup parameters for at least one subgroup of pixels in the video decoder from the encoded video sequence based on at least one parameter corresponding to the group. Subgroups may include Group of Pictures (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), and predictive units (PU). The entropy decoder / parser may also extract information such as transform coefficients, quantizer parameter (QP) values, and motion vectors from the encoded video sequence.

[0026] The parser (420) may generate symbols (421) by performing an entropy decoding / parse operation on the video sequence received from the buffer (415). The parser (420) may receive encoded data and selectively decode specific symbols (421). Furthermore, the parser (420) may determine whether the specific symbols (421) will be provided to the motion compensation prediction unit (453), the scaler / inverse transform unit (451), the intra prediction unit (452), or the loop filter unit (454).

[0027] The reconstruction of the symbol (421) can involve multiple different regions depending on the type of encoded video picture or part thereof (interpicture and intrapicture, interblock and intrablock, etc.) and other factors. Which regions are involved and how 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 the multiple regions described below is not illustrated for clarity.

[0028] Aside from the functional blocks already described, the decoder (310) can be conceptually subdivided into several functional parts, as described below. In practical implementations operating under commercial constraints, many of these parts interact closely with each other and can be integrated at least partially. On the other hand, the conceptual subdivision into functional parts described below serves the purpose of explaining the disclosed protected subject matter.

[0029] The first part is the scaler / inverse transformer (451). The scaler / inverse transformer (451) receives the quantized transformation coefficients and control information, including what was used for the transformation, block size, quantization factor, and quantization scaling matrix, as symbols (421) from the parser (420). The scaler / inverse transformer (451) can output a block containing sample values, which can be input to the aggregator (455).

[0030] In some cases, the output samples of the scaler / inverse transform (451) can be associated with intra-coded blocks. An intra-coded block is a block that does not use prediction information derived from a previously reconstructed picture, but can use prediction information derived from a previously reconstructed portion 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 the surrounding already reconstructed information obtained from the current (partially reconstructed) picture (456). In some cases, 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) for each sample.

[0031] In other cases, the output samples of the scaler / inverse transformer (451) can be associated with intercoded blocks, and in some cases, with motion-compensated blocks. In this case, the motion-compensated prediction unit (453) can access the reference picture memory (457) to obtain samples to be used for prediction. After motion-compensating the obtained samples according to the symbols (421) associated with the blocks, the output sample information can be generated by adding these samples to the output of the scaler / inverse transformer (referred to in this case as residual samples or residual signals) by the aggregator (455). The address in the reference picture memory format from which the motion-compensated unit obtains the predicted samples can be controlled by a motion vector, which can be available to the motion-compensated unit in the form of a symbol (421) that can have, for example, X, Y and reference picture components. Motion compensation may also include interpolation of sample values ​​obtained from the reference picture memory when using the accurate motion vectors of subsamples, a motion vector prediction mechanism, etc.

[0032] The output samples of the aggregator (455) can be subjected to various loop filtering techniques in the loop filtering section (454). The video compression technique may include in-loop filtering, which is controlled by parameters included in the encoded video bitstream that are made available to the loop filtering section (454) as symbols (421) from the parser (420). On the other hand, the in-loop filtering technique may also be influenced by metadata obtained when decoding earlier (earlier in decoding order) parts of the encoded picture or encoded video sequence, and by previously reconstructed and loop-filtered sample values.

[0033] The output of the loop filter section (454) can be either a sample stream that can be output to the drawing device (312) or a sample stream that can be stored in the reference picture memory (456) for use in subsequent in-picture prediction.

[0034] Once a given encoded picture is fully reconstructed, it can be used as a reference picture for subsequent predictions. When an encoded picture is fully reconstructed and has been 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 reallocate the current picture memory that it has just become before starting the reconstruction of subsequent encoded pictures.

[0035] The video decoder (310) may perform decoding operations according to a specified video compression technique, which may be one described in a standard document such as ITU-T Recommendation H265. The encoded video sequence may conform to the syntax defined by the video compression technique or standard used, in the sense that it adheres to the syntax of the video compression technique or standard, as defined in the video compression technique document or standard, particularly for profiles, as defined in that document. In addition, compliance may require that the complexity of the encoded video sequence be within limits determined by the level of the video compression technique or standard. In some cases, the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc., are limited by the level. In some cases, the limitations determined by the level may be further restricted by the Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the encoded video sequence.

[0036] 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 one or more encoded video sequences. The additional data may be used by the video decoder (310) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may take the form of, for example, a temporal, spatial, or signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, or forward error correction code.

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

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

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

[0040] In one embodiment, the encoder (303) may encode and compress the pictures of the source video sequence into an encoded video sequence (543) in real time, or encode and compress them while subject to other arbitrary time constraints required by the application. One function of the controller (550) is to achieve an appropriate encoding speed. The controller controls and is functionally connected to other functional parts described later. For clarity, the connections are not shown. Parameters set by the controller may include rate control-related parameters (picture skip, quantizer, λ value of rate-distortion optimization technique, ...), picture size, Group of Pictures (GOP) arrangement, maximum motion vector search range, etc. Other functions of the controller (550) related to the video encoder (303) optimized for a given system design will be readily identifiable to those skilled in the art.

[0041] Some video encoders operate within what is readily understood by those skilled in the art as an "encoding loop." In greatly simplified terms, the encoding loop can 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 to be encoded and generating one or more reference pictures), and a (local) decoder (533) incorporated into the encoder (303) that reconstructs the symbols and generates sample data that a decoder (located elsewhere) would also have generated (generated in such a way that there is no loss in any compression between the symbols and the encoded video bitstream in any video compression techniques conceivable in the disclosed protected subject). This reconstructed sample stream is input to a reference picture memory (534). Decoding the symbol stream results in bit invariance regardless of the decoder's location (local or elsewhere), and therefore, the contents of the reference picture buffer are also bit invariant between the local encoder and the encoder at another location. In other words, the prediction portion of the encoder "sees" the exact same sample values ​​as the reference picture samples that the decoder "sees" when using predictions during decoding. This basic principle concerning the synchronization of reference pictures (and furthermore, the fact that drift occurs as a result when synchronization cannot be maintained, for example, due to channel errors) is well known to those skilled in the art.

[0042] The operation of the “local” decoder (533) can be the same as the operation of the “other location” decoder (310), as has already been explained in detail above in conjunction with Figure 4. However, referring briefly to Figure 4, if symbols are available and there is no loss in the encoding / decoding of symbols to the encoded video sequence by the entropicorder (545) and parser (420), the entropy decoding portion of the decoder (310), including the channels (412), receiver (410), buffer (415), and parser (420), does not have to be fully performed by the local decoder (533).

[0043] One finding that can be made in this regard is that any decoder techniques other than parse / entropy decoding present in the decoder must also be present in the corresponding encoder in a nearly identical functional form. The reverse of a comprehensively described decoder technique can be omitted from the description of the encoder technique. More detailed explanations are only necessary in specific areas, which will be provided below.

[0044] As part of this operation, the source coder (530) may perform motion-compensated predictive coding. It predicts and codes 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 one or more reference frames that can be selected as one or more predictive references for the input frame.

[0045] The local video decoder (533) can decode the encoded video data of a frame that can be designated as a reference frame based on the symbols generated by the source coder (530). This has the effect that the operation of the encoding engine (532) may be a lossy process. When the encoded video data can be decoded by the video decoder (not shown in Figure 4), the reconstructed video sequence may generally be a reproduction of the source video sequence containing some errors. The local video decoder (533) reproduces the decoding process that can be performed by the video decoder on the reference frame and can store the reconstructed reference frame in the reference picture cache (534). In this way, the encoder (303) can store locally a copy of the reconstructed reference frame that has the same content as the reconstructed reference frame obtained by the remote video decoder (without transmission errors).

[0046] 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) to find sample data (as candidate reference pixel blocks) or certain metadata such as reference picture motion vectors and block shapes that can be used as appropriate predictive references for the new picture. The predictor (535) may find appropriate predictive references by associating one sample block with one pixel block. In some cases, if a decision is made based on the search results obtained by the predictor (535), the input picture may have predictive references extracted from multiple reference pictures stored in the reference picture memory (534).

[0047] The controller (550) may manage the encoding operations of the video coder (530), including, for example, setting parameters and subgroup parameters used to encode video data.

[0048] The outputs of all the functional parts described above may be entropically coded by an entropicorder (545). The entropicorder converts the symbols generated by the various functional parts into coded video sequences by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable-length coding, and arithmetic coding.

[0049] The transmitter (540) may buffer the encoded video sequence generated by the entropicorder (545) to prepare the encoded video sequence for transmission over the communication channel (560). The communication channel (560) may be a hardware / software link to a storage device capable of storing 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 encoded audio data and / or accompanying data streams (source not shown).

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

[0051] An intra-picture (I-picture) may be capable of being encoded and decoded without using any other frames in the sequence as a source of prediction. Some video codecs allow for different types of intra-pictures, including, for example, an Independent Decoder Refresh Picture. Those skilled in the art will conceive of such variations of the I-picture and their corresponding uses and characteristics.

[0052] Predictive pictures (P-pictures) may be able to be encoded and decoded using intra-prediction or inter-prediction, which uses at most one motion vector and reference index to predict the sample values ​​of each block.

[0053] A bidirectional predictive picture (B-picture) may be able to be encoded and decoded using intra-prediction or inter-prediction, which uses at most two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multi-predictive picture may use more than two reference pictures and associated metadata to reconstruct a single block.

[0054] Generally, multiple source pictures may be spatially subdivided into multiple sample blocks (for example, blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively), and each block may be encoded individually. Blocks may also be encoded by predicting them by referencing other (already encoded) blocks determined by the encoding assignment applied to the picture corresponding to that block. For example, blocks of picture I may be encoded without prediction, or they may be encoded by predicting (spatial or intra-prediction) by referencing already encoded blocks of the same picture. Pixel blocks of picture P may be encoded without prediction by spatial or temporal prediction by referencing one previously encoded reference picture. Blocks of picture B may be encoded without prediction by spatial or temporal prediction by referencing one or two previously encoded reference pictures.

[0055] The video coder (303) may perform encoding operations in accordance with specified video coding techniques or standards such as ITU-T Recommendation H265. In such operations, the video coder (303) may perform various compression operations, including predictive coding operations that take advantage of temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to the syntax defined by the video coding technique or standard being used.

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

[0057] Figure 6A shows the intra-prediction mode of VTM 1.

[0058] Referring to Figure 6A, an intra-prediction scheme based on 65 directional modes is proposed to capture any edge direction shown in natural images, and this intra-prediction scheme based on 65 directional modes is being studied for the development of VVC. In VTM 1, mode 2 and mode 66 indicate the same prediction direction.

[0059] For non-square blocks, some conventional angular intra-prediction modes may be changed to wide-angle modes. The changed modes may be signaled using the original method and remapped to wide-angle mode indices after parsing. The total number of intra-prediction modes does not need to be changed (i.e., 35 as in the case of VTM 1), nor does the intra-mode coding step need to be changed.

[0060] For the 35 intra-prediction modes, the modified intra-prediction modes may be those shown in Table 1 below, where W represents the block width and H represents the block height.

[0061] [Table 4]

[0062] For the 67 intra-prediction modes, the modified intra-prediction modes may be those shown in Table 2 below, where W represents the block width and H represents the block height.

[0063] [Table 5]

[0064] Figure 6B shows how the intra prediction mode is changed to wide-angle intra prediction mode for blocks that are not square.

[0065] Referring to Figure 6B, Mode 2 (601) and Mode 3 (602) are changed to Mode 35 (603) and Mode 36 (604), which have wider angles. The direction of Mode 35 (603) is opposite to that of Mode 3 (602), and the direction of Mode 36 (604) is opposite to that of Mode 4 (605).

[0066] However, in VTM 1, when a wide-angle intra-prediction direction is applied, the adjacent reference samples in the upper row or left column are insufficient for non-square blocks.

[0067] The embodiments described here may be used separately or combined in any order. In this description, if the width is greater than or equal to the height, the top row will be referred to as the long side and the leftmost column as the short side. Otherwise, the top row will be referred to as the short side and the leftmost column as the long side. The block width is denoted by nWidth and the block height is denoted by nHeight.

[0068] When padding an array of N reference samples, or buffer, this padding means either inserting a reconstructed adjacent sample located at the relative position of the reference sample into the reference sample value, copying the reference sample value from an already inserted reference sample, or deriving it from an already inserted reference sample using a predefined function (for example, linear extrapolation).

[0069] Embodiments may include padding a different number of reference samples depending on encoded information including, but not limited to, block size, block width, block height, block width-to-height ratio, block area size, and intra-prediction direction.

[0070] In one embodiment, we propose padding both the upper and left adjacent reference samples with 2*max(nWidth, nHeight) + 1 samples.

[0071] In another embodiment, we propose padding the longer side with 2*max(nWidth,nHeight)+1 samples and the shorter side with nWidth+nHeight+1 samples.

[0072] In another embodiment, we propose padding the upper reference sample with 2*nWidth+3 samples and the left reference sample with 2*nHeight+3 samples.

[0073] In another embodiment, if width / height <= 4 or height / width <= 4, we propose padding the upper reference sample by 2*nWidth+3 samples and the left reference sample by 2*nHeight+3 samples. Otherwise, pad the longer side by 2*max(nWidth,nHeight)+1 samples and the shorter side by 2*min(nWidth,nHeight)+1+M samples, where M can be 10, 11, 12, 13, or 14.

[0074] In another embodiment, we propose padding the upper reference sample with 2*nWidth+M samples and the left reference sample with 2*nHeight+N samples. The values ​​of M and N may depend on the encoding information, including (but not limited to) the block size, block width, block height, block width-to-height ratio, block area size, and intra-prediction direction.

[0075] Embodiments may include removing some conventional angles on the shorter sides and adding the same number of wider angles on the longer sides. After removing angles on the shorter sides, all remaining angles are within the diagonal direction of each block shape, where the diagonal direction is indicated by the line connecting the upper right corner and the lower left corner.

[0076] Figure 7A is a diagram showing the predicted angles within the diagonal direction and the predicted angles beyond the diagonal direction, according to one embodiment.

[0077] Referring to Figure 7A, the predicted angle (710) (solid arrow) located within the filled triangular region (720) in the upper left is an intra-predicted angle within the diagonal direction, while the predicted angle (730) (dotted angle) located outside the filled triangular region (720) in the upper left is an intra-predicted angle beyond the diagonal direction.

[0078] In one embodiment, for 35 intra-mode cases, several deletion modes are shown in Table 3, where W represents the block width and H represents the block height.

[0079] [Table 6]

[0080] In one embodiment, for 67 intra-mode cases, several deletion modes are shown in Table 4, where W represents the block width and H represents the block height.

[0081] [Table 7]

[0082] Embodiments may include removing some conventional angles on the shorter sides and adding the same number of wider angles on the longer sides. After removing angles on the shorter sides, all remaining angles are within the diagonal angles of each block shape, except for N predicted angles. Examples of values ​​for N include, but are not limited to, 1, 2, 3, and 4. The N predicted angles are then further adjusted so that they are within the diagonal angles.

[0083] Figure 7B shows how to adjust the predicted angle beyond the diagonal direction according to one embodiment.

[0084] Referring to Figure 7B, adjust the predicted angle (730) (dotted arrow), which is beyond the diagonal direction, so that it becomes the predicted angle (740) (thick arrow), which is within the diagonal direction (within the filled triangular area (720) in the upper left).

[0085] When adjusting one or more predicted angles, angles already within the diagonal direction are also further adjusted to ensure a uniform distribution of all available predicted angles, for example, so that the predicted angles are uniformly distributed.

[0086] Instead of limiting the prediction angle to be within the diagonal direction, the embodiment may include limiting the prediction angle to use only reference samples within a specified range (or group or number) of reference samples for the available prediction angles, as described above.

[0087] In one embodiment, only the top m*nWidth+1+offsetX (including the top-left corner) reference samples can be used for intra-prediction, and intra-prediction angles that may use reference samples other than the top n*nWidth+1+offsetX samples are not permitted. Examples of offsetX values ​​may include, but are not limited to, 1, 2, 3, 4, ..., 14, ..., and 48. Examples of m and n values ​​may include, but are not limited to, 1, 2, 3, and 4.

[0088] In one embodiment, only the top m*nHeight+1+offsetY (including the top-left corner) reference samples can be used for intra-prediction, and intra-prediction angles that may use reference samples other than the top n*nHeight+1+offsetY samples are not permitted. Examples of offsetY values ​​may include, but are not limited to, 1, 2, 3, 4, ..., 14, ..., and 48. Examples of m and n values ​​may include, but are not limited to, 1, 2, 3, and 4.

[0089] In one embodiment, only m*max(nHeight,nWidth)+1+offset(including the upper left corner) reference samples can be used for intra-prediction, and intra-prediction angles that may use reference samples other than n*max(nHeight,nWidth)+1+offset are not permitted. Examples of offset values ​​may include, but are not limited to, 1, 2, 3, 4, ..., 14, ..., and 48. Examples of m and n values ​​may include, but are not limited to, 1, 2, 3, and 4.

[0090] In one embodiment, only m*min(nHeight,nWidth)+1+offset(including the upper left corner) reference samples can be used for intra-prediction, and intra-prediction angles that may use reference samples other than n*min(nHeight,nWidth)+1+offset are not permitted. Examples of offset values ​​may include, but are not limited to, 1, 2, 3, 4, ..., 14, ..., and 48. Examples of m and n values ​​may include, but are not limited to, 1, 2, 3, and 4.

[0091] Embodiments may include removing 3, 5, 6, 7, or 8 modes on the shorter side when the width / height ratio is 2 (or 1 / 2), 4 (or 1 / 4), 8 (or 1 / 8), 16 (or 1 / 16), or 32 (1 / 32) in the case of 35 intra-prediction modes, and removing 6, 10, 12, 14, or 16 modes on the shorter side when the width / height ratio is 2 (or 1 / 2), 4 (or 1 / 4), 8 (or 1 / 8), 16 (or 1 / 16), or 32 (1 / 32) in the case of 67 intra-prediction modes.

[0092] In one embodiment, for the remaining modes on the shorter side, if the angle of this mode exceeds the diagonal direction of the block, this angle is mapped to the diagonal direction of the block. For example, in the case of 35 intra-prediction modes, if width / height = 2 (or 1 / 2) and the angle of mode 5 (or mode 31) is 17 / 32 and exceeds the diagonal direction of the block, the angle of mode 5 (or mode 31) is mapped to 16 / 32; if width / height = 4 (or 1 / 4) and the angle of mode 7 (or mode 29) is 9 / 32 and exceeds the diagonal direction of the block, the angle of mode 7 (or mode 29) is mapped to 8 / 32; if width / height = 8 (or 1 / 8) and the angle of mode 8 (or mode 28) is 5 / 32 and exceeds the diagonal direction of the block, the angle of mode 8 (or mode 28) is mapped to 4 / 32.

[0093] In another example, for 67 intra-prediction modes, if width / height = 2 (or 1 / 2) and mode 8 (or mode 60) has an angle of 17 / 32 and extends beyond the diagonal of the block, the angle of mode 8 (or mode 60) is mapped to 16 / 32; if width / height = 4 (or 1 / 4) and mode 12 (or mode 56) has an angle of 9 / 32 and extends beyond the diagonal of the block, the angle of mode 12 (or mode 56) is mapped to 8 / 32; and if width / height = 8 (or 1 / 8) and mode 14 (or mode 54) has an angle of 5 / 32 and extends beyond the diagonal of the block, the angle of mode 14 (or mode 54) is mapped to 4 / 32.

[0094] The embodiment may include modifying or setting the angle of the intra-prediction mode so that the angle includes the diagonal direction of all block shapes.

[0095] In one embodiment, we propose including angles α in the angle table such that tan(α) is equal to {1 / 32, 2 / 32, 4 / 32, 8 / 32, 16 / 32, 32 / 32}. In another embodiment, we propose increasing the predicted angle accuracy from 1 / 32 samples to 1 / 64 samples and including angles α in the angle table such that tan(α) is equal to {1 / 64, 2 / 64, 4 / 64, 8 / 64, 16 / 64, 32 / 64, 64 / 64}. In yet another embodiment, we propose increasing the predicted angle accuracy from 1 / 32 samples to 1 / 128 samples and including angles α in the angle table such that tan(α) is equal to {1 / 128, 2 / 128, 4 / 128, 8 / 128, 16 / 128, 32 / 128, 64 / 128, 128 / 128}.

[0096] In another embodiment, for 35 intra-prediction modes, the angle table may be represented by Tables 5 and 6 below.

[0097] [Table 8]

[0098] [Table 9]

[0099] In another embodiment, for 67 intra-prediction modes, the angle table may be represented by Table 7 below.

[0100] [Table 10]

[0101] In Tables 5 to 7 above, intraPredAngle shows the intra-predicted angle, predModeIntra shows the intra-predicted mode, and invAngle shows the inverse angle.

[0102] Figure 8 is a flowchart of a method (800) for controlling intra-prediction to decode a video sequence according to one embodiment. In some implementations, one or more process blocks in Figure 8 may be executed by a decoder (310). In some implementations, one or more process blocks in Figure 8 may be executed by another device or group of devices, such as an encoder (303), which may be separate from or include the decoder (310).

[0103] Referring to Figure 8, in the first block (810), method (800) includes setting up a table containing a plurality of intra-prediction modes corresponding to a plurality of intra-prediction angles, the plurality of intra-prediction angles containing diagonal intra-prediction angles corresponding to the diagonal directions of all shapes of the coding unit, respectively.

[0104] Each of the diagonal intra-predicted angles can be denoted by α, and tan(α) is equal to {1 / 32, 2 / 32, 4 / 32, 8 / 32, 16 / 32, 32 / 32}.

[0105] The number of intra-prediction modes included in the configured table may be 67, and the configured table may include Table 7 above.

[0106] Each of the diagonal intra-predicted angles can be denoted by α, and tan(α) is equal to {1 / 64, 2 / 64, 4 / 64, 8 / 64, 16 / 64, 32 / 64, 64 / 64}.

[0107] Each of the diagonal intra-predicted angles can be denoted by α, and tan(α) is equal to {1 / 128, 2 / 128, 4 / 128, 8 / 128, 16 / 128, 32 / 128, 64 / 128, 128 / 128}.

[0108] The number of intra-prediction modes included in the configured table may be 35, and the configured table may include Table 5 above.

[0109] In the second block (820), the method (800) includes selecting one of several intra-prediction modes from a set table in order to decode the video sequence.

[0110] Method (800) is a method of determining the ratio of the width to the height of an encoding unit and removing a first number of multiple intra-prediction modes from a set table based on the determined ratio, which is 4 or more and 1 / 4 or less, wherein the first number of removals corresponds to the determined ratio and the shorter side of the width and height. Selecting one of the multiple intra-prediction modes may include selecting one of the multiple intra-prediction modes from the table from which the first number of multiple intra-prediction modes have been removed in order to decode a video sequence.

[0111] Deleting a first number of multiple intra-prediction modes may include deleting a first number of multiple intra-prediction modes from a configured table based on a determined ratio of 4, 8, 16, or 32, where the first number is 5, 6, 7, or 8, and deleting a first number of multiple intra-prediction modes from a configured table based on a determined ratio of 1 / 4, 1 / 8, 1 / 16, or 1 / 32, where the first number is 5, 6, 7, or 8.

[0112] Deleting a first number of multiple intra-prediction modes may include deleting a first number of multiple intra-prediction modes from a configured table based on a determined ratio of 4, 8, 16, or 32, where the first number is 10, 12, 14, or 16, and deleting a first number of multiple intra-prediction modes from a configured table based on a determined ratio of 1 / 4, 1 / 8, 1 / 16, or 1 / 32, where the first number is 10, 12, 14, or 16.

[0113] The method may further include, for each of the multiple intra-prediction modes included in the table from which a first number of multiple intra-prediction modes have been removed, mapping the intra-prediction angles associated with that intra-prediction mode diagonally, based on the intra-prediction angles associated with that intra-prediction mode from among multiple intra-prediction angles that are greater than the diagonal direction of the coding unit.

[0114] Figure 8 shows an example of blocks of method (800), but in some implementations, method (800) may include additional blocks, fewer blocks, different blocks, or blocks arranged differently from those shown in Figure 8. In addition to this, or instead, two or more blocks of method (800) may be executed in parallel.

[0115] Furthermore, the proposed method may be implemented by a processing circuit (for example, 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.

[0116] Figure 9 is a simplified block diagram of a device (900) that controls intra-prediction to decode a video sequence, according to one embodiment.

[0117] Referring to Figure 9, the device (900) includes a setting code (910) and a selection code (920).

[0118] The configuration code (910) sets up a table containing multiple intra-prediction modes, each corresponding to a set of multiple intra-prediction angles, and the set of multiple intra-prediction angles is configured to include diagonal intra-prediction angles corresponding to the diagonal directions of all shapes of the coding unit.

[0119] Each of the diagonal intra-predicted angles can be denoted by α, and tan(α) is equal to {1 / 32, 2 / 32, 4 / 32, 8 / 32, 16 / 32, 32 / 32}.

[0120] The number of intra-prediction modes included in the configured table may be 67, and the configured table may include Table 7 above.

[0121] Each of the diagonal intra-predicted angles can be denoted by α, and tan(α) is equal to {1 / 64, 2 / 64, 4 / 64, 8 / 64, 16 / 64, 32 / 64, 64 / 64}.

[0122] Each of the diagonal intra-predicted angles can be denoted by α, and tan(α) is equal to {1 / 128, 2 / 128, 4 / 128, 8 / 128, 16 / 128, 32 / 128, 64 / 128, 128 / 128}.

[0123] The number of intra-prediction modes included in the configured table may be 35, and the configured table may include Table 5 above.

[0124] The selection code (920) is configured to select one of several intra-prediction modes from a configured table in order to decode the video sequence.

[0125] The device (900) may further include a determination code (930) configured to determine the ratio of the width to the height of an encoding unit, and a deletion code (940) configured to delete a first number of intra-prediction modes from a set table based on the determined ratio, which is 4 or more and 1 / 4 or less, such that the first number corresponds to the determined ratio and the shorter side of the width and height. A selection code (920) may further be configured to cause at least one processor to select one of the intra-prediction modes from the table from which the first number of intra-prediction modes have been deleted in order to decode a video sequence.

[0126] The deletion code (930) may be further configured to delete a first number of intra-prediction modes from a configured table based on a determined ratio of 4, 8, 16, or 32, where the first number is 5, 6, 7, or 8, and delete a first number of intra-prediction modes from a configured table based on a determined ratio of 1 / 4, 1 / 8, 1 / 16, or 1 / 32, where the first number is 5, 6, 7, or 8.

[0127] The deletion code (930) may be further configured to delete a first number of intra-prediction modes from a configured table based on a determined ratio of 4, 8, 16, or 32, where the first number is 10, 12, 14, or 16, and delete a first number of intra-prediction modes from a configured table based on a determined ratio of 1 / 4, 1 / 8, 1 / 16, or 1 / 32, where the first number is 10, 12, 14, or 16.

[0128] The device (900) may further include a mapping code (950) configured to map, for each of the multiple intra-prediction modes included in a table from which a first number of multiple intra-prediction modes have been removed, the intra-prediction angles associated with that intra-prediction mode in the diagonal direction, based on the intra-prediction angles associated with that intra-prediction mode from among a plurality of intra-prediction angles that are greater than the diagonal direction of the coding unit.

[0129] The above-described technology can be implemented as computer software that uses computer-readable instructions and is physically stored on one or more computer-readable media.

[0130] Figure 10 shows a computer system (1000) suitable for carrying out an embodiment.

[0131] Computer software can be coded using any suitable machine code or computer language that may be assembled, compiled, and linked, or using similar mechanisms to create code that contains instructions that can be executed directly, or through interpretation, microcode execution, etc., by a computer central processing unit (CPU), graphics processing unit (GPU), etc.

[0132] The instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things devices.

[0133] The components shown in Figure 10 for the computer system (1000) are illustrative and not intended to imply any limitation on the scope of use or functionality of the computer software implementing the embodiment. The configuration of the components should not be interpreted as having any dependence or requirement on any one of the components or any combination thereof shown in the exemplary embodiment of the computer system (1000).

[0134] The computer system (1000) may include several human interface input devices. Such human interface input devices may respond to input from one or more human users through, for example, haptic input (keystrokes, swipes, data glove movements, etc.), voice input (voice, applause, etc.), visual input (gestures, etc.), and olfactory input (not shown). Human interface devices may also be used to capture some media that is not necessarily directly related to conscious human input, such as sound (speech, music, ambient sounds, etc.), images (scanned images, photographic images obtained from still image cameras, etc.), and video (2D video, 3D video including stereoscopic video, etc.).

[0135] The input human interface device may include one or more of the following (only one of each is shown): keyboard (1001), mouse (1002), trackpad (1003), touchscreen (1010), data glove (1004), joystick (1005), microphone (1006), scanner (1007), and camera (1008).

[0136] The computer system (1000) may also include several human interface output devices. Such human interface output devices may 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., touch screens (1010), haptic feedback via data gloves (1004) or joysticks (1005), although some haptic feedback devices do not function as input devices), audio output devices (speakers (1009), headphones (not shown), etc.), visual output devices (screens (1010), including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, organic light-emitting diode (OLED) screens, etc., each regardless of whether it has a touch screen input function or whether it has a haptic feedback function, some of which may have the function of outputting two-dimensional visual output or output beyond three dimensions through means such as stereoscopic output, virtual reality glasses (not shown), holographic displays, smoke tanks (not shown)), and printers (not shown).

[0137] The computer system (1000) may also include human-accessible storage devices and related media such as CD / DVD ROM / RW (1020) media including CD / DVD media (1021), thumb-drive (1022), removable hard drive or solid-state drive (1023), legacy magnetic media such as tape and floppy disk (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).

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

[0139] The computer system (1000) may also include an interface to one or more communication networks. For example, the network may be wireless, wired, or optical. Furthermore, the network may be local, wide-area, urban, automotive, and industrial, real-time, latency-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including 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 including cable TV, satellite TV, and terrestrial broadcast TV, and automotive and industrial networks including CANBus. Generally, some networks require an external network interface adapter that is attached to some general-purpose data port or peripheral bus ((1049)) (for example, a Universal Serial Bus (USB) port on a computer system (1000), while others are generally integrated into the core of the computer system (1000) by being attached to the system bus, as described below (for example, an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1000) can communicate with the other party. Such communication can be one-way, receive-only (for example, television broadcasting), one-way transmit-only (for example, a device sending from one CANbus to a specific CANbus), or bidirectional (for example, using a local or wide-area digital network to communicate with other computer systems). It is possible to communicate with each of the networks and network interfaces described above. Several protocols and protocol stacks can be used for each of the networks and network interfaces described above.

[0140] The aforementioned human interface device, human-accessible memory device, and network interface can be attached to the core (1040) of the computer system (1000).

[0141] The core (1040) may include one or more central processing units (CPUs) (1041), graphics processing units (GPUs) (1042), dedicated programmable processing units in the form of field programmable gate areas (FPGAs) (1043), hardware accelerators (1044) for specific tasks, etc. These devices may be connected via a system bus (1048) along with read-only memory (ROM) (1045), random access memory (RAM) (1046), internal mass storage devices (1047) such as internal hard drives and solid-state drives (SSDs) that are not accessible to the user. In some computer systems, the system bus (1048) may be accessible in the form of one or more physical plugs to allow expansion by additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1048) or via a peripheral bus (1049). The structure for peripheral buses includes peripheral component interconnects (PCI), USB, and others.

[0142] The CPU (1041), GPU (1042), FPGA (1043), and accelerator (1044) can execute predetermined instructions that, when combined, form the aforementioned computer code. This computer code can be stored in ROM (1045) or RAM (1046). Furthermore, changing data can be stored in RAM (1046), while immutable data can be stored, for example, in an internal mass storage device (1047). By using a cache memory that can be closely associated with one or more CPUs (1041), GPUs (1042), mass storage devices (1047), ROMs (1045), RAM (1046), etc., high-speed storage and high-speed reading to any memory device becomes possible.

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

[0144] As an example, and not an limitation, a computer system having architecture (1000), particularly core (1040), can function as a result of a processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embedded in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage devices as described above, or media associated with some non-temporary storage device of core (1040), such as intracore mass storage (1047) or ROM (1045). Software implementing various embodiments can be stored in such devices and executed by core (1040). The computer-readable media may include one or more memory devices or chips, depending on the specific requirements. Software can be used to cause a core (1040), in particular a processor (including a CPU, GPU, FPGA, etc.) within the core (1040), to execute a specific process or a specific part of a specific process as described in this application, which includes defining data structures to be stored in RAM (1046) and modifying such data structures according to a process defined by the software. In addition to this, or instead, a computer system can perform functions as a result of hardwiring logic to a circuit (e.g., an accelerator (1044)) or otherwise incorporating it into a circuit, which can operate in place of or in cooperation with the software to execute a specific process or a specific part of a specific process as described in this application. Referencing software can include referring to logic, and vice versa (where applicable). Referencing a computer-readable medium can include referring to a circuit that stores executable software (such as an integrated circuit (IC)), a circuit that embodies executable logic, or both (where applicable). Embodiments include any suitable combination of hardware and software.

[0145] While this disclosure has described several exemplary embodiments, there are many variations, substitutions, and alternative equivalents that fall within the scope of this disclosure. Therefore, it will be apparent that a number of systems and methods, not expressly shown or described herein but included in the spirit and scope of this disclosure, can be conceived by embodying the principles of this disclosure. [Explanation of Symbols]

[0146] 101 Mode 10 102 Mode 26 103 Mode 2 104 Mode 18 105 Mode 34 200 Communication Systems 210 First terminal 220 Second terminal 250 Communication Networks 301 Video Source 302 Video Sample Stream 303 Video Encoder 304 encoded video bitstream 305 Streaming Server 306 clients 307 Encoded video bitstream 310 Video Decoder 311 Output video sample stream 312 Drawing Devices 313 Imaging Subsystem 410 Receiver Channel 412 415 buffer memory 420 Parsa 421 Symbols 451 Scaler / Inverse Transformer 452 Intrapicture Prediction Unit 452 Intra Prediction Unit 453 Motion Compensation Prediction Unit 454 Loop filter section 455 Aggregator 456 Current Picture 457 Reference Picture Buffer 530 Source Coder 532 coding engine 533 Decoder 534 Reference Picture Memory 535 Predictor 540 Transmitter 543 Encoded video sequence 545 Entropicorder 550 Controller 560 Communication Channels 601 Mode 2 602 Mode 3 603 Mode 35 604 Mode 36 605 Mode 4 710 Prediction angle 720 triangle area 730 Predicted angle 740 Prediction angle 800 ways 810 blocks 820 blocks 900 equipment 910 Configuration Code 920 Selection Code 930 Deletion Code 950 Mapping Code 1000 Computer Systems 1001 Keyboard 1002 Mouse 1003 Trackpad 1004 Data Glove 1005 Joystick 1006 Mike 1007 Scanner 1008 Camera 1009 Speaker 1010 Touchscreen 1010 screen 1020 CD / DVD ROM / RW 1021 CD / DVD 1022 thumb-drive 1023 Solid State Drive 1040 cores 1041 CPU 1042 GPU 1043 FPGA 1044 Accelerator 1045 ROM 1046 RAM 1047 Internal mass storage 1048 System Bus 1049 Local buses

Claims

[Claim 1] A method for controlling intra-prediction to decode a video sequence, wherein the method is performed by at least one processor, and the method is A step of setting up a table including a plurality of intra-prediction angles and a plurality of intra-prediction modes corresponding to each of the plurality of intra-prediction angles, wherein the plurality of intra-prediction angles include diagonal intra-prediction angles corresponding to the diagonal directions of a plurality of coding units of a plurality of different rectangles, each having a different ratio of width to height, The steps include selecting one of the multiple intra-prediction modes from the configured table in order to decode the video sequence, and A method for providing this.