Methods and apparatus for further improving the context design of prediction modes and coded block flags (CBFs).

By employing multiple contexts for entropy encoding based on neighboring block encoding modes, the method addresses inefficiencies in video coding context design, enhancing compression efficiency and reducing redundancy.

JP7835833B2Active Publication Date: 2026-03-25TENCENT AMERICA LLC
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-12-05
Publication Date
2026-03-25

AI Technical Summary

Technical Problem

Existing video coding technologies, such as HEVC and VVC, face inefficiencies in context design for prediction modes and coded block flags (CBFs), particularly when neighboring blocks are encoded in intra-inter-prediction modes, leading to suboptimal encoding decisions.

Method used

The proposed method and apparatus utilize multiple contexts for entropy encoding of prediction mode flags based on the encoding modes of neighboring blocks, distinguishing between intra, inter, and intra-inter prediction modes to improve encoding efficiency.

Benefits of technology

This approach enhances encoding efficiency by optimizing context design, reducing redundancy and improving compression performance in video coding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007835833000007
    Figure 0007835833000007
  • Figure 0007835833000008
    Figure 0007835833000008
  • Figure 0007835833000009
    Figure 0007835833000009
Patent Text Reader

Abstract

To provide a method of controlling intra-inter prediction for decoding or encoding of a video sequence.SOLUTION: A method of controlling intra-inter prediction for decoding or encoding of a video sequence includes the steps of: determining whether one or more neighboring blocks in a video sequence are coded by an intra prediction mode; entropy coding a prediction mode flag of a current block by a first context in response to determining that at least one of the neighboring blocks is coded by the intra prediction mode; and entropy coding the prediction mode flag of the current block by a second context in response to determining that none of the neighboring blocks are coded by at least the intra prediction mode.SELECTED DRAWING: Figure 10
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] [Related Applications] This application claims priority to U.S. Provisional Patent Application No. 62 / 777,041, filed on December 7, 2018, and U.S. Patent Application No. 16 / 393,439, filed on April 24, 2019, which are hereby incorporated by reference in their entirety.

[0002] [Technical Field] Methods and apparatuses consistent with embodiments relate to video coding, and more particularly, to methods and apparatuses for improving context design for prediction modes and coded block flags (CBFs).

Background Art

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

[0004] Regarding Versatile Video Coding (VVC), the following partial coding unit syntax table is shown. The flag pred_mode_flag is signaled when the slice type is not intra, the skip mode is not selected, and only one context (e.g., the variable pred_mode_flag) is used to code this flag. The partial coding unit syntax table is as follows.

Table 1

[0005] Referring to Figure 1B, VVC has a total of 87 intra-prediction modes. Of these, mode 18 (106) is a horizontal mode, mode 50 (107) is a vertical mode, and modes 2 (108), 34 (109), and 66 (110) are diagonal modes. Modes -1 to -10 (111) and modes 67 to 76 (112) are wide-angle intra-prediction (WAIP) modes.

[0006] The encoder selects the best chroma prediction mode from five modes, including planar mode (mode index 0), DC mode (mode index 1), horizontal mode (mode index 18), vertical mode (mode index 66), and diagonal mode (mode index 66), for the chroma component of the intra-encoded block, and a direct copy of the intra-prediction mode, i.e., the DM mode, for the associated luma component. The mapping between the intra-prediction direction and the intra-prediction mode number for the chroma is shown in Table 1 below. [Table 2]

[0007] To avoid overlapping modes, four modes other than the DM mode are assigned according to the intra-prediction mode of the associated luminal component. When the intra-prediction mode number of the chromal component is 4, the intra-prediction direction of the luminal component is used for intra-prediction sample generation of the chromal component. When the intra-prediction mode number of the chromal component is not 4 and is the same as the intra-prediction mode number of the luminal component, the intra-prediction direction 66 is used for intra-prediction sample generation of the chromal component.

[0008] Multi-hypothesis intra-inter prediction combines one intra prediction with one merge-indexed prediction, i.e., an intra-inter prediction mode. Within a merge coding unit (CU), one flag is signaled for the merge mode, and when the flag is True, an intra mode is selected from the intra candidate list. For the chroma component, the intra candidate list is derived from four intra prediction modes, including DC, planar, horizontal, and vertical, and the size of the intra candidate list can be 3 or 4 depending on the block shape. When the CU width is greater than twice the CU height, the horizontal mode is removed from the intra candidate list, and when the CU height is greater than twice the CU width, the vertical mode is removed from the intra candidate list. The one intra prediction mode selected by the intra mode index and the one merge-indexed prediction selected by the merge index are combined using a weighted average. For the chroma component, DM is always applied without additional signaling.

[0009] The weights for combining predictions are described below. When DC or planar mode is selected, or when the coding block (CB) width or height is less than 4, equal weights are applied. For CBs with a width or height of 4 or more, when horizontal / vertical mode is selected, one CB is first divided horizontally / vertically into four equal-area regions. Each weight set is (w_intra i ,w_inter i) is shown, where i is 1 to 4, and (w_intra1,w_inter1)=(6,2), (w_intra2,w_inter2)=(5,3), (w_intra3,w_inter3)=(3,5), (w_intra4,w_inter4)=(2,6), which are applied to the corresponding regions. (w_intra1,w_inter1) is for the region closest to the reference sample, and (w_intra4,w_inter4) is for the region furthest from the reference sample. The combined prediction can then be calculated by adding the two weighted predictions and shifting them 3 bits to the right. Furthermore, the intra-multidirectional intra-prediction modes of the predictor can be preserved for the intra-mode coding of subsequent neighboring CBs if they are intra-coded. [Overview of the Initiative]

[0010] According to the embodiment, a method for video decoding or encoding, wherein the method is A step of determining whether at least one of several neighboring blocks in a video sequence is encoded by intra-predictive mode, In response to determining that at least one of the plurality of neighboring blocks is encoded by the intra-prediction mode, the first context entropy encodes the prediction mode flag of the current block; In response to determining that none of the plurality of neighboring blocks are encoded by at least the intra prediction mode, the second context entropy encodes the prediction mode flag of the current block; There are methods that include this.

[0011] According to the embodiment, there is a device for video coding, decoding, or encoding, the device comprising: at least one memory for storing computer program code; and at least one processor configured to access the at least one memory and operate in accordance with the computer program code. The computer program code is A first decision code configured to cause at least one processor to determine whether at least one of a plurality of neighboring blocks in a video sequence is encoded in intra-predictive mode, The execution code configured to cause the prediction mode flag of the current block to be entropy encoded by a first context in response to the determination that at least one of the plurality of neighboring blocks is encoded by the intra prediction mode, The system includes a second executable code configured to cause at least one processor to entropy encode the prediction mode flag of the current block using a second context in response to determining that none of the plurality of neighboring blocks are encoded by the intra-prediction mode.

[0012] According to the embodiment, a non-temporary computer-readable storage medium for storing instructions, wherein the instructions are stored in at least one processor. Determine whether at least one of several neighboring blocks in a video sequence is encoded by intra-predictive mode. In response to determining that at least one of the plurality of neighboring blocks is encoded by the intra-prediction mode, the first context entropy-encodes the prediction mode flag of the current block. In response to determining that none of the aforementioned neighboring blocks are encoded by at least the intra-prediction mode, the second context entropy-encodes the prediction mode flag of the current block. There is a non-temporary computer-readable storage medium.

[0013] According to one embodiment, the step of entropy coding the prediction mode flag of the current block includes the step of coding it only by the first and second contexts.

[0014] According to the embodiment, the steps include determining whether at least one of the plurality of neighboring blocks is encoded by intra-interprediction mode, In response to determining that at least one of the plurality of neighboring blocks is encoded by the intra-interprediction mode, the first context entropy encodes the prediction mode flag of the current block; In response to determining that none of the plurality of neighboring blocks are encoded by either the intra-prediction mode or the intra-inter-prediction mode, the second context entropy encodes the prediction mode flag of the current block; It also includes.

[0015] According to the embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded by the intra-prediction mode, the steps include entropy encoding the skip flag of the current block by a first skip context, The process includes the step of entropy encoding the skip flag of the current block using a second skip context in response to determining that none of the plurality of neighboring blocks are encoded by the intra prediction mode.

[0016] According to the embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded by the intra-prediction mode, the steps include entropy encoding the affine flag of the current block by a first affine context, In response to determining that none of the plurality of neighboring blocks are encoded at least by the intra prediction mode, entropy encoding the affine flag of the current block by a second affine context;

[0017] According to an embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded by the intra prediction mode, entropy encoding the sub-block integration flag of the current block by a first sub-block integration context; In response to determining that none of the plurality of neighboring blocks are encoded at least by the intra prediction mode, entropy encoding the sub-block integration flag of the current block by a second sub-block integration context;

[0018] According to an embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded by the intra prediction mode, entropy encoding the CU partition flag of the current block by a first coding unit (CU) partition context; In response to determining that none of the plurality of neighboring blocks are encoded at least by the intra prediction mode, entropy encoding the CU partition flag of the current block by a second CU partition context;

[0019] According to an embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded by the intra prediction mode, entropy encoding the AMVR flag of the current block by a first adaptive motion vector resolution (AMVR) context; In response to determining that none of the plurality of neighboring blocks are encoded at least by the intra prediction mode, entropy encoding the AMVR flag of the current block by a second AMVR context;

[0020] According to an embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded in the intra prediction mode, entropy encoding the intra-inter mode flag of the current block with a first intra-inter prediction mode context; In response to determining that none of the plurality of neighboring blocks is encoded in at least the intra prediction mode, entropy encoding the intra-inter mode flag of the current block with a second intra-inter mode context;

[0021] According to an embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded in the intra prediction mode, entropy encoding the triangular partition mode flag of the current block with a first triangular partition mode context; In response to determining that none of the plurality of neighboring blocks is encoded in at least the intra prediction mode, entropy encoding the triangular partition mode flag of the current block with a second triangular partition mode context;

[0022] According to an embodiment, in response to determining that at least one of the plurality of neighboring blocks is encoded in the intra prediction mode, entropy encoding the CBF of the current block with a first coded block flag (CBF) context; In response to determining that none of the plurality of neighboring blocks is encoded in at least the intra prediction mode, entropy encoding the CBF of the current block with a second CBF context; BRIEF DESCRIPTION OF THE DRAWINGS

[0023] [Figure 1A]This is a diagram of the intra-prediction mode in HEVC.

[0024] [Figure 1B] This is a diagram of the intra-prediction mode in VVC.

[0025] [Figure 2] This is a simplified block diagram of a communication system according to one embodiment.

[0026] [Figure 3] This is a diagram illustrating the arrangement of a video encoder and video decoder in a streaming environment according to one embodiment.

[0027] [Figure 4] This is a functional block diagram of a video decoder according to one embodiment.

[0028] [Figure 5] This is a functional block diagram of a video encoder according to one embodiment.

[0029] [Figure 6] This is a diagram of the current block and neighboring blocks of the current block according to one embodiment.

[0030] [Figure 7] This flowchart shows a method for controlling intra-interface prediction for decoding or encoding a video sequence according to one embodiment.

[0031] [Figure 8] This is a simplified block diagram of a device that controls intra-interface prediction for decoding or encoding a video sequence, according to one embodiment.

[0032] [Figure 9] This is a diagram of a computer system suitable for implementing an embodiment.

[0033] [Figure 10] This is a flowchart showing a method for controlling the decoding or encoding of a video sequence according to one embodiment.

[0034] [Figure 11] This is a flowchart showing a method for controlling the decoding or encoding of a video sequence according to one embodiment. [Modes for carrying out the invention]

[0035] 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. In one-way data transmission, the first terminal 210 may locally encode video data for transmission to the other terminal 220 via the network 250, and the second terminal 220 may receive the 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 may be common in media serving applications, etc.

[0036] Figure 2 shows a second pair of terminals (230, 240) applied to support bidirectional transmission of encoded video, which may occur, for example, during a video conference. In bidirectional data transmission, each terminal 220, 240 may encode locally captured video data for transmission to other terminals via the network 250. Each terminal 230, 240 may also receive encoded video data transmitted by other terminals, decode the encoded data, and display the restored video data on a local display device.

[0037] In Figure 2, terminal devices 210-240 may be shown as servers, personal computers, and smartphones, but the principles of the embodiments are not limited to these. Embodiments include applications by laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network 250 represents any number of networks that carry encoded video data between terminal devices 210-240, including, for example, wired and / or wireless communication networks. Communication network 250 may exchange data via circuit switching and / or packet switching channels. Typical networks include electronic communication networks, local area networks, wide area networks, and / or the Internet. For the purposes of discussing the present invention, the architecture and topology of network 250 may not be important to the operation of the embodiments unless otherwise specified below.

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

[0039] The streaming system may include a capture subsystem 313, which may include a video source 301, for example, a digital camera, that generates an uncompressed video sample stream 302. The sample stream 302 is shown in thick lines to emphasize its high data capacity compared to the encoded video bitstream and can be processed by an encoder 303 coupled to the camera 301. The encoder 303 may include hardware, software, or a combination thereof, and can enable or implement aspects of the subject of disclosure as detailed below. The encoded video bitstream 304 is shown in thin lines to emphasize its low data capacity compared to the sample stream and can be stored in the streaming server 305 for future use. One or more streaming clients 306, 308 can access the streaming server 305 to read copies 307, 309 of the encoded video bitstream 304. Client 306 may include a video decoder 310. The video decoder 310 decodes an incoming copy of the encoded bitstream 307 and generates an output video sample stream 311 that can be rendered on a display 312 or other rendering device (not shown). In some streaming systems, video bitstreams 304, 307, and 309 can be encoded according to specific video coding / compression standards. Examples of these standards include ITU-T Recommendation H.265. The video coding standard VVC is under development. The subject of this disclosure may be used in the context of VVC.

[0040] Figure 4 is a functional block diagram 400 of a video decoder 310 according to one embodiment.

[0041] Receiver 410 may receive one or more encoded video sequences to be encoded by video decoder 310, or in the same or different embodiments, one encoded video sequence at a time, where the decoding of each encoded video sequence is independent of other encoded video sequences. Encoded video sequences may be received from channel 412, which may be a hardware / software link to a storage device that stores encoded video data. Receiver 410 may receive encoded video data together with other data, e.g., encoded audio data and / or incidental data streams that may be transferred to their respective usage entities (not shown). Receiver 410 may isolate the encoded video sequences from other data. To eliminate network jitter, buffer memory 415 may be coupled between receiver 410 and entropy decoder / parser 420 (hereinafter, "parser 420"). Buffer 415 may be unnecessary or small when receiver 410 is receiving data controllly from a storage / transfer device with sufficient bandwidth or from an isochronous network. When used in best-effort packet networks such as the internet, a buffer of 415 may be required, which can be relatively large and, advantageously, can be adapted to an adaptive size.

[0042] The video decoder 310 may include a parser 420 to reconstruct symbols 421 from the encoded video sequence. These symbol categories may include information used to manage the operation of the video decoder 310, and information for controlling rendering devices, such as a display 312, which may not be part of the decoder's integration but may be coupled to the decoder, as shown in Figure 4. The control information for rendering devices may be in the form of SEI (Supplementary Enhancement Information) messages or VUI (Video Usability Information) 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 follow video coding techniques or standards, and may follow principles well known to those skilled in the art, including variable-length coding, Huffman coding, context-dependent or non-context-dependent arithmetic coding, 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 that group. Subgroups may include GOP (Groups of Picture), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), prediction units (PU), etc. The entropy decoder / parser may also extract information such as transformation coefficients, quantizer parameter (QP) values, motion vectors, etc., from the encoded video sequence.

[0043] The parser 420 may perform an entropy decoding / parse operation on the video sequence received from the buffer 415 to generate a symbol 421. The parser 420 may receive encoded data and selectively decode a particular symbol 421. Furthermore, the parser 420 may determine whether a particular symbol 421 should 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.

[0044] The reconstruction of symbol 421 may include multiple different units, depending on the type of encoded video picture or part thereof (e.g., inter and intra-picture, inter and intra-block) and other factors. Which units are included and how they are included can be controlled by subgroup control information parsed from the encoded video sequence by parser 420. The flow of such subgroup control information between parser 420 and the following multiple units is not shown for clarity.

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

[0046] The first unit is the scaler / inverse unit 451. The scaler / inverse unit 451 receives the quantized transformation coefficients and control information, including which transformation should be used, the block size, quantization coefficients, quantization scaling matrix, etc., from the parser 420 as symbol 421. The scaler / inverse unit 451 can output a block containing sample values ​​that can be input to the aggregator 455.

[0047] In some cases, the output samples from the scaler / inverse unit 451 may belong to intra-coded blocks, i.e., blocks that do not use prediction information from previously reconstructed pictures but can use prediction information from portions of the picture that were reconstructed before 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 fetched from the currently (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 unit 451, sample by sample.

[0048] In other cases, the output samples of the scaler / inverse unit 451 may be associated with intercoded, and possibly motion-compensated, blocks. In such cases, the motion-compensated prediction unit 453 can access the reference picture memory 457 to fetch samples to be used for prediction. After motion-compensating the fetched samples according to the symbols 421 associated with the blocks, these samples may be added to the output of the scaler / inverse unit by the aggregator 455 to generate output sample information (in this case, called residual samples or residual signals). The address in the reference picture memory from which the motion-compensated prediction unit fetches prediction samples can be controlled by the motion vector available to the motion-compensated prediction unit, in the form of symbols 421 which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​fetched from the reference picture memory when the exact motion vector of a subsample is in use, motion vector prediction mechanisms, etc.

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

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

[0051] A particular encoded picture, once fully reconstructed, can be used as a reference picture for future predictions. Once an encoded picture is fully reconstructed and identified as a reference picture (e.g., by parser 420), the current reference picture 456 can become part of the reference picture memory 457, allowing for the reallocation of fresh current picture memory before initiating the reconstruction of subsequent encoded pictures.

[0052] The video decoder 310 may perform decoding operations according to a predetermined video compression technique defined in a standard such as ITU-T Rec. H.265. The encoded video sequence may follow the syntax specified by the video compression technique or standard in use, in the sense that the encoded video sequence follows the syntax of the video compression technique or standard, specifically as specified in the profile document therein. Furthermore, compliance may require that the complexity of the encoded video sequence be within the limits set by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further restricted through the HRD (Hypothetical Reference Decoder) specification and metadata for HDR buffer management signaled in the encoded video sequence.

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

[0054] Figure 5 is a functional block diagram 500 of a video encoder 303 according to one embodiment.

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

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

[0057] According to 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 under any other time constraints required by the application. Implementing an appropriate encoding rate is one function of the control unit 550. The control unit controls and is functionally coupled to other functional units, as described later. The coupling is not illustrated for clarity. Parameters set by the control unit may include rate control-related parameters (picture skip, quantizer, lambda value of rate distortion optimization technique, ...), picture size, GOP (group of pictures) layout, maximum motion vector search range, etc. Those skilled in the art will immediately recognize other functions of the control unit 550 when relating to a video encoder 303 optimized for a particular system design.

[0058] Some video encoders operate within what a person skilled in the art would immediately recognize as an "encoding loop." In very simplified terms, the encoding loop may include an encoder 530 (hereinafter, the "source coder") (which generates symbols based on the input picture to be encoded and a reference picture) and an encoded portion of a (local) decoder 533 incorporated within encoder 303, which reconstructs the symbols to generate sample data that a (remote) decoder can produce (when any compression between the symbols and the encoded video bitstream is lossless among the video compression techniques considered in the subject of the disclosure). The reconstructed sample stream is input to a reference picture memory 534. When decoding the symbol stream yields bit-accurate results independently of the decoder position (local or remote), the contents of the reference picture buffer are also bit-accurate between the local encoder and the remote encoder. In other words, the predictive portion of the encoder "sees" as reference picture samples exactly the same sample values ​​that the decoder "sees" when using predictions during decoding. This fundamental principle of reference picture synchronization (and the resulting drift, for example, when synchronization cannot be maintained due to channel errors) is well known to those skilled in the art.

[0059] The operation of the “local” decoder 533 may be the same as that of the “remote” decoder 310, as detailed above in relation to Figure 4. Referring briefly to Figure 4, however, since symbols are available and the encoding / decoding of symbols to the encoded video sequence by the entropy coder 545 and parser 420 may be lossless, the entropy decoding portion of decoder 310, including channel 412, receiver 410, buffer 415, and parser 420, does not need to be fully implemented in the local decoder 533.

[0060] The consideration here is that any decoder techniques within the decoder, excluding parse / entropy decoding, must exist in substantially the same functional form as those within the corresponding encoder. The description of encoder techniques can be omitted, as they are the inverse of the decoder techniques over which they are comprehensively described. More detailed explanations are necessary only in specific areas, and are provided below.

[0061] During operation, in some examples, the source coder 530 may perform motion-compensated predictive coding. This predictively codes the input frame by referencing one or more previously coded frames from a video sequence designated as “reference frames”. In this method, the coding engine 532 codes the difference between the pixel blocks of the input frame and the pixel blocks of the reference frame which may be selected as the prediction criterion for the input frame.

[0062] The local video decoder 533 may decode the encoded video data of a frame that may be designated as a reference frame, based on the symbols generated by the source coder 530. The operation of the encoding engine 532 may, advantageously, be lossy. When the encoded video data can be decoded by a video decoder (not shown in Figure 4), the reconstructed video sequence may, as a standard, be a copy of the source video sequence with some errors. The local video decoder 533 may duplicate the decoding process that may be performed by the video decoder on the reference frame, resulting in a reconstructed reference frame that should be stored in the reference picture cache 534. Thus, the encoder 303 may locally store a copy of the reconstructed reference frame that has the same content as the reconstructed reference frame obtained by the far-end video decoder (if there are no transmission errors).

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

[0064] The control unit 550 may manage the encoding operation of the video coder 530, including, for example, setting parameters and subgroup parameters used for encoding video data.

[0065] The outputs of all the aforementioned functional units may undergo entropy coding in the entropy coder 545. The entropy coder 545 converts the symbols generated by the various functional units into coded video sequences by lossless compression of the symbols according to techniques well known to those skilled in the art, such as Huffman coding, variable-length coding, arithmetic coding, etc.

[0066] The transmitter 540 may buffer the encoded video sequence generated by the entropy coder 545 in preparation for transmission over a communication channel 560, which may be a hardware / software link to a storage device capable of storing 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 auxiliary data streams (sources not shown).

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

[0068] An intra-picture (I-picture) may be a picture that can be encoded and decoded without using any other pictures in the sequence as a source for prediction. Some video codecs allow different types of intra-pictures, including, for example, IDR (Independent Decoder Refresh) pictures. A person skilled in the art will recognize variations of I-pictures and their individual applications and characteristics.

[0069] A predictive picture (P-picture) may, in most cases, be a picture that can be encoded and decoded using intra-prediction or inter-prediction with a single motion vector and reference index to predict the sample values ​​of each block.

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

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

[0072] The video decoder 303 may perform encoding operations in accordance with a predetermined video encoding technique or standard, such as ITU-T Rec. H.265. In this operation, the video decoder 303 may perform various compression operations, including predictive encoding operations that utilize temporal and spatial redundancy in the input video sequence. The encoded video data may therefore conform to the syntax specified by the video encoding technique or standard being used.

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

[0074] In related technologies, only one context is used for the flag pred_mode_flag, which indicates whether a block is intra or interpredicted, and the flag value applied to neighboring blocks is not used. Furthermore, when a neighboring block is encoded in intra-interprediction mode, it is predicted using a mixture of intra and interprediction modes, and therefore, in the context design for signaling the flag pred_mode_flag, it may be more efficient to consider whether the neighboring block is encoded using intra-interprediction mode.

[0075] The embodiments described herein may be used individually or in combination in any order. In the following description, the flag pred_mode_flag indicates whether the current block is intra- or inter-encoded.

[0076] Figure 600 shows the current block and neighboring blocks of the current block according to one embodiment.

[0077] Referring to Figure 6, the current block 610 is shown together with the neighboring block 620 above it and the neighboring block 630 to its left. Each of the neighboring block 620 above and the neighboring block 630 to its left may have a width of 4 and a height of 4.

[0078] In the embodiment, information that neighboring blocks (e.g., upper neighboring block 620 and left neighboring block 630) are encoded in intra-predictive mode, inter-predictive mode, or intra-inter-predictive mode is used to derive a context value used to entropically encode the flag pred_mode_flag of the current block (e.g., current block 610). Specifically, when neighboring blocks are encoded in intra-inter-predictive mode, the relevant intra-predictive mode is used for intra-mode encoding and / or MPM derivation of the current block, but neighboring blocks are considered inter-encoded blocks even if intra-predictive mode is used for neighboring blocks when deriving a context value for entropically encoding the flag pred_mode_flag of the current block.

[0079] In one example, the associated intra-prediction mode of an intra-inter-prediction mode is always planar.

[0080] In another example, the relevant intra-prediction mode for an intra-inter-prediction mode is always DC.

[0081] In yet another example, the relevant intra-prediction mode is aligned with the intra-prediction mode applied in the intra-inter-prediction mode.

[0082] In one embodiment, when neighboring blocks (e.g., the upper neighboring block 620 and the left neighboring block 630) are encoded by an intra-interpredictive mode, the relevant intrapredictive mode is used for intramode coding and / or MPM derivation of the current block (e.g., the current block 610), but neighboring blocks can also be considered intra-coded blocks when they derive a context value for entropy coding the flag pred_mode_flag of the current block.

[0083] In one example, the associated intra-prediction mode of an intra-inter-prediction mode is always planar.

[0084] In another example, the relevant intra-prediction mode for an intra-inter-prediction mode is always DC.

[0085] In yet another example, the relevant intra-prediction mode is aligned with the intra-prediction mode applied in the intra-inter-prediction mode.

[0086] In one embodiment, the context index or value is incremented by 2, 0, and 1 when neighboring blocks are encoded in intra-prediction mode, inter-prediction mode, and inter-intra-prediction mode, respectively.

[0087] In another embodiment, the context index or value is incremented by 1, 0, and 0.5 when neighboring blocks are encoded in intra-prediction mode, inter-prediction mode, and inter-intra-prediction mode, respectively, and the final context index is rounded to the nearest integer.

[0088] After the context index or value has been incremented with respect to all neighboring blocks of the current block and the final context index has been determined, the average context index may be determined based on the final context index being divided by the number of neighboring blocks and rounded to the nearest integer. The flag pred_mode_flag may be set to indicate whether the current block is intra-encoded or inter-encoded, based on the determined average context index. For example, if the determined average context index is 1, the flag pred_mode_flag may be set to indicate that the current block is intra-encoded, and if the determined average context index is 0, the flag pred_mode_flag may be set to indicate that the current block is inter-encoded.

[0089] In the embodiment, information on whether the current block (e.g., current block 610) is encoded in intra-prediction mode, inter-prediction mode, or inter-intra-prediction mode is used to derive one or more context values ​​for entropy encoding the CBF of the current block.

[0090] In one embodiment, three distinct contexts (e.g., variables) are used to entropically encode the CBF. One is used when the current block is encoded in intra-predictive mode, one is used when the current block is encoded in inter-predictive mode, and one is used when the current block is encoded in intra-inter-predictive mode. The three distinct contexts may be applied only to encode a lumar CBF, only to encode a chromar CBF, or only to encode both a lumar and a chromar CBF.

[0091] In another embodiment, two distinct contexts (e.g., variables) are used to entropically encode the CBF. One is used when the current block is encoded in intra-predictive mode, and the other is used when the current block is encoded in inter-predictive mode or intra-inter-predictive mode. The two distinct contexts may be applied only to encode a lumar CBF, only to encode a chromar CBF, or only to encode both a lumar and a chromar CBF.

[0092] In yet another embodiment, two separate contexts (e.g., variables) are used to entropically encode the CBF. One is used when the current block is encoded in intra-predictive mode or inter-predictive mode, and the other is used when the current block is encoded in intra-inter-predictive mode. The two separate contexts may be applied only to encode a lumar CBF, only to encode a chromar CBF, or only to encode both a lumar and a chromar CBF.

[0093] Figure 7 is a flowchart of a method 700 for controlling intra-interpretation for decoding or encoding a video sequence, according to one embodiment. In some implementations, one or more processing blocks in Figure 7 may be performed by the decoder 310. In some implementations, one or more processing blocks in Figure 7 may be performed by another device or group of devices separate from or including the decoder 310, such as the encoder 303.

[0094] Referring to Figure 7, in the first block 710, method 700 includes the step of determining whether the neighboring blocks of the current block are encoded by intra-interpredictive mode. Based on the determination that the neighboring blocks are not encoded by intra-interpredictive mode (No in 710), method 700 terminates.

[0095] Based on the determination that a neighboring block is encoded by intra-interpredictive mode (Yes in 710), in the second block 720, method 700 includes the step of performing intra-mode coding of the current block using the intrapredictive mode associated with the intra-interpredictive mode.

[0096] In the third block 730, method 700 includes the step of setting a predictive mode flag indicating whether the current block is intra-encoded or inter-encoded, such that the predictive mode flag indicates that the current block is inter-encoded.

[0097] Method 700 may further include the step of performing an MPM derivation of the current block using an intra-prediction mode associated with an intra-inter-prediction mode, based on the determination that a neighboring block is encoded by an intra-inter-prediction mode (Yes in 710).

[0098] The intra-prediction mode associated with the intra-inter prediction mode may be the planar mode, DC mode, or the intra-prediction mode applied in the intra-inter prediction mode.

[0099] Method 700 includes the step of determining whether a neighboring block is encoded in intra-prediction mode, inter-prediction mode, or intra-inter-prediction mode, Based on the determination that the neighboring block is encoded by intra-predictive mode, the context index of the predictive mode flag is incremented by 2, Based on the determination that neighboring blocks are encoded in interprediction mode, the context index is incremented by 0, Based on the determination that neighboring blocks are encoded by intra-interpredictive mode, the context index is incremented by 1, The steps include determining the average context index based on the incremented context index and the number of neighboring blocks of the current block, The process may further include the step of setting a prediction mode flag based on the determined average context index.

[0100] The method includes the step of determining whether a neighboring block is encoded in intra-prediction mode, inter-prediction mode, or intra-inter-prediction mode, Based on the determination that the neighboring block is encoded by intra-predictive mode, the context index of the predictive mode flag is incremented by 1. Based on the determination that neighboring blocks are encoded in interprediction mode, the context index is incremented by 0, Based on the determination that neighboring blocks are encoded by intra-interpredictive mode, the context index is incremented by 0.5, The steps include determining the average context index based on the incremented context index and the number of neighboring blocks of the current block, The process may further include the step of setting a prediction mode flag based on the determined average context index.

[0101] Figure 7 shows an exemplary block of Method 700, but in some implementations, Method 700 may include more blocks, fewer blocks, or blocks in a different arrangement than those shown in Figure 7. Additionally or alternatively, two or more blocks of Method 700 may be executed in parallel.

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

[0103] Figure 8 is a simplified block diagram of a device 800 that controls intra-interface prediction for decoding or encoding a video sequence, according to one embodiment.

[0104] Referring to Figure 8, device 800 includes a first decision code 810, an execution code 820, and a setting code 830. Device 800 may further include an increment code 840 and a second decision code 850.

[0105] The first decision code 810 is configured to cause at least one processor to determine whether the neighboring blocks of the current block are encoded in intra-interpredictive mode.

[0106] The executable code 820 is configured to cause at least one processor to perform intra-mode coding of the current block using the intra-prediction mode associated with the intra-interprediction mode, based on the determination that neighboring blocks are coded by the intra-interprediction mode.

[0107] Configuration code 830 is configured to cause at least one processor to set a prediction mode flag indicating whether the current block is intra-encoded or inter-encoded, such that the prediction mode flag indicates the current block is inter-encoded, based on the determination that the neighboring block is encoded by intra-inter-prediction mode.

[0108] The executable code 820 is configured to cause at least one processor to perform the derivation of the Most Probable Mode (MPM) of the current block using the intra-prediction mode associated with the intra-inter-prediction mode, based on the determination that neighboring blocks are encoded by the intra-inter-prediction mode.

[0109] The intra-prediction mode associated with the intra-inter prediction mode may be the planar mode, DC mode, or the intra-prediction mode applied in the intra-inter prediction mode.

[0110] The first decision code 810 may be further configured to cause at least one processor to determine whether a neighboring block is encoded in intra-prediction mode, inter-prediction mode, or intra-inter-prediction mode. The increment code 840 may be configured to cause at least one processor to increment the context index of the prediction mode flag by 2 based on the determination that the neighboring block is encoded in intra-prediction mode, to increment the context index by 0 based on the determination that the neighboring block is encoded in inter-prediction mode, and to increment the context index by 1 based on the determination that the neighboring block is encoded in intra-inter-prediction mode.

[0111] The second decision code 850 may be configured to cause at least one processor to determine the average context index based on the incremented context index and the number of neighboring blocks of the current block. The setting code 830 may be further configured to cause at least one processor to set a prediction mode flag based on the determined average context index.

[0112] The first decision code 810 may be further configured to cause at least one processor to determine whether a neighboring block is encoded in intra-prediction mode, inter-prediction mode, or intra-inter-prediction mode. The increment code 840 may be configured to cause at least one processor to increment the context index of the prediction mode flag by 1 based on the determination that the neighboring block is encoded in intra-prediction mode, to increment the context index by 0 based on the determination that the neighboring block is encoded in inter-prediction mode, and to increment the context index by 0.5 based on the determination that the neighboring block is encoded in intra-inter-prediction mode. The second decision code 850 may be configured to cause at least one processor to determine the average context index based on the incremented context index and the number of neighboring blocks of the current block. The setting code 830 may be further configured to cause at least one processor to set the prediction mode flag based on the determined average context index.

[0113] The above-described technology can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. Figure 9 shows a computer system 900 suitable for implementing an embodiment.

[0114] Computer software can be encoded using any suitable machine code or computer language, which can be processed by mechanisms such as assembly, compilation, and linking to generate code containing instructions that can be executed directly or through interpretation, microcode execution, etc., by a computer's central processing unit (CPU), graphics processing unit (GPU), etc.

[0115] The instructions can be executed on various computers or components, including, for example, personal computers, tablet computers, servers, smartphones, game consoles, Internet of Things devices, etc.

[0116] The components shown in Figure 9 of the computer system 900 are illustrative and do not imply any limitations, such as on the scope of use or functionality of the computer software implementing the embodiment. Furthermore, the configuration of the components should not be construed as having any dependencies or requirements relating to any one or combination of the components shown in the exemplary embodiment of the computer system (900).

[0117] The computer system 900 may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users through, for example, sensory input (e.g., keystrokes, swipes, data grab actions), voice input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). The human interface devices can also be used to capture certain media that do not necessarily need to be directly related to conscious human input, such as voice (e.g., conversation, music, ambient sounds), images (e.g., scanned images, photographic images taken from a digital camera), and video (e.g., including 2D video, 3D video, and stereoscopic video).

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

[0119] The computer system 900 may also include certain human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, through sensory output, sound, light, and smell / taste. Such human interface output devices may include sensory output devices (e.g., sensory feedback via a touchscreen 910, data grab 904, or joystick 905, although sensory feedback devices that do not function as input devices may also exist), audio output devices (e.g., speaker 909, headphones (not shown)), visual output devices (e.g., screen 910, cathode ray tube (CRT) screen, liquid crystal display (LCD) screen, plasma screen, organic light-emitting diode (OLED) screen, each having or not having touchscreen input capability, each having or not having sensory feedback capability, some of which may be stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (which may be capable of outputting more than shown)).

[0120] The computer system 900 may also include human-accessible storage devices, as well as related media such as optical media like CD / DVDROM / RW920 with media 921 such as CD / DVD, a thumb drive 922, a removable hard drive or solid state drive 923, legacy magnetic media such as tape and floppy disks (not shown), and devices based on dedicated ROM / ASIC / PLD such as security dongles (not shown).

[0121] Those skilled in the art should also understand that the term “computer-readable medium” as used in connection with the subject matter of this disclosure does not include transmission media, carrier waves, or other transient signals.

[0122] The computer system 900 may also include interfaces to one or more communication networks. These networks may be, for example, wireless, wired, or optical. The networks may further be local, wide-area, urban, vehicle and industrial, real-time, latency-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM (global systems for mobile communications), 3G, 4G, 5G, LTE (Long-Term Evolution), etc., wired or wireless wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, and vehicle and industrial networks including CANBus, etc. Certain networks generally require an external network interface connected to a specific general-purpose data port or peripheral bus 949 (e.g., the USB port of the computer system 900). Others are generally integrated into the core of the computer system 900 by being connected to a system bus, as described later (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using these networks, the computer system (900) can communicate with other entities. Such communication may be unidirectional (e.g., broadcast television), unidirectional (e.g., CANBus to a specific CANbus device), or bidirectional (e.g., local or wide-area digital network). Specific protocols and protocol stacks may be used for each of the aforementioned networks and network interfaces.

[0123] The aforementioned human interface device, human-accessible storage device, and network interface can be mounted on the core 940 of the computer system 900.

[0124] The core 940 may include one or more central processing units (CPUs) 941, graphics processing units (GPUs) 942, dedicated programmable processing units in the form of GPGA 943, hardware accelerators 944 for specific tasks, etc. These devices may be connected via a system bus 948, along with read-only memory (ROM) 945, random access memory (RAM) 946, and internal mass storage devices 947 such as internal, user-inaccessible hard drives, SSDs, etc. In some computer systems, the system bus 948 is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices can be attached directly to the core's system bus 948 or via a peripheral bus 949. The architecture of the peripheral bus includes PCI, USB, etc.

[0125] The CPU 941, GPU 942, FPGA 943, and accelerator 944 can execute specific instructions that, when combined, can generate the aforementioned computer code. This computer code can be stored in ROM 945 or RAM 946. Temporary data can also be stored in RAM 946, while permanent data can be stored, for example, in the built-in mass storage device 947. High-speed storage and retrieval to any of the memory devices can be enabled through the use of cache memory, which may be closely associated with one or more of the CPU (941), GPU (942), mass storage device (947), ROM (945), RAM (946), etc.

[0126] Computer-readable media may contain computer code for performing actions carried out by various computers. The media and computer code may be specifically designed and configured for the purposes of the embodiment, or they may be of a type well known and available to those skilled in the field of computer software.

[0127] As an example, and not limited to, a computer system 900 having an architecture, and specifically a 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 may be specific storage devices of the core 940 having non-transient characteristics, such as a core-integrated mass storage device 947 or ROM 945, and media associated with user-accessible mass storage devices as described above. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core 940. The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software can cause the core (940) and specifically the processors within it (including a CPU, GPU, FPGA, etc.) to perform specific operations or specific parts of specific operations described herein, including defining and modifying data structures stored in RAM (946) according to software-defined operations. As an addition or alternative, a computer system may provide functionality as a result of logic hardwired or other in-circuit implementations (e.g., accelerators (944)) that can operate together with or in place of software to perform specific processes or specific parts of specific processes described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may include, where appropriate, circuits (such as integrated circuits (ICs)) that house software for execution, circuits that implement logic for execution, or both. Embodiments include any appropriate combination of hardware and software.

[0128] The inventors discovered that pred_mode_flag has some correlation with the current block and its neighbors, as well as with neighboring blocks. When neighbors use a pred_mode_flag equal to 1, the current block is likely, or should be, also using a pred_mode_flag equal to 1. In such cases, thanks to the correlation, improved context efficiency can be achieved in arithmetic coding / decoding. Neighboring block information can be used as context for entropy coding / decoding the current pred_mode_flag to improve coding efficiency.

[0129] Additionally, VVC may have an intra-interpretation mode, which is a special prediction mode that is a mixture of interpretation and intraprediction.

[0130] Therefore, if it is desirable to add neighbor blocks as the context for entropy coding / decoding of pred_mode_flag, it may be necessary to determine whether neighbor blocks can be considered as intra or intermode in order to derive the context, given that neighbor blocks are coded by intra-interprediction modes. Aspects of the present invention relate to the design of the context for entropy coding / decoding of pred_mode_flag, for which different designs may exist.

[0131] As described above, when multiple neighboring blocks are identified, three contexts may be used depending on how many neighboring blocks are intra-encoded. For example, if no intra-encoded neighboring blocks exist, context index 0 may be used. If one intra-encoded neighboring block exists, context index 1 may be used, and in other cases, there may be two neighboring blocks for which context index 2 may be used. Therefore, three contexts may exist depending on the number of neighboring blocks encoded by intra-encoding.

[0132] However, further improvements may be achieved by reducing the number of contexts from three to two. For example, if none of the neighboring blocks are encoded by intra-coding, the first context may be used; otherwise, if any of the neighboring blocks use intra-coding, another context may be used. Such a design may be adopted as part of the VVC.

[0133] Figure 10 shows an exemplary flowchart 1000 according to an embodiment, which is the same as the embodiment described above, except for the differences described herein.

[0134] Step 1001 is a check to determine one or more neighboring blocks of the current block, and step 1002 may determine whether one or more of these neighboring blocks are intra-encoded. If not, step 1003 may use the first context for the current block; if yes, step 1004 may use another context for the current block.

[0135] According to an exemplary embodiment, in addition to checking one or more neighboring blocks to determine whether intra-coding is used, it may also be checked whether intra-inter-coding is used.

[0136] Figure 11 shows an exemplary flowchart 1100 according to an embodiment, which is the same as the embodiment described above, except for the differences described herein.

[0137] Step 1101 is a check to determine one or more neighboring blocks of the current block, and step 1102 may determine whether one or more of these neighboring blocks are intra-encoded. If not, step 1103 may check whether one or more neighboring blocks use intra-inter-encoding, and if affirmative, step 1104 may use the first context for the current block. Otherwise, if intra-encoding is determined in step 1102, or if intra-inter-encoding is determined in step 1103, a different context may be used for the current block in step 1105.

[0138] In addition to Figure 10, and similarly in addition to Figure 11, pred_mode_flag was discussed, but further adoption by VVC includes other syntactic elements, such as skip flags, affine flags, and subblock merge flags, as will be further explained by the following syntax.

[0139] [Table 3]

[0140] [Table 4]

[0141] [Table 5] TIFF0007835833000006.tif20193

[0142] In other words, in an exemplary embodiment, several neighboring blocks are first identified, and two contexts are used to entropically encode the pred_mode_flag of the current block. The first context may be used when none of the identified neighboring blocks are encoded by the intra-prediction mode, and the other context may be used otherwise.

[0143] Additionally, several neighboring blocks may be identified first, and two contexts may be used to entropically encode the pred_mode_flag of the current block. If none of the identified neighboring blocks are encoded by intra-prediction mode or intra-interprediction, the first context may be used; otherwise, the second context may be used.

[0144] In other examples, several neighboring blocks may be identified first, and two contexts may be used to entropy encode the CBF flag of the current block. If none of the identified neighboring blocks are encoded by the intra-predictive mode, the first context may be used; otherwise, the second context may be used.

[0145] In other examples, several neighboring blocks may be identified first, and two contexts may be used to entropy encode the CBF flag of the current block. If none of the identified neighboring blocks are encoded by intra-prediction mode or intra-interprediction, the first context may be used; otherwise, the second context may be used.

[0146] For entropy coding syntax elements such as the skip flag (cu_skip_flag), affine flag (inter_affine_flag), subblock merge flag (merge_subblock_flag), CU split flags (qt_split_cu_flag, mtt_split_cu_flag, mtt_split_cu_vertical_flag, mtt_split_cu_binary_flag), IMV flag (amvr_mode), intra-intermode flag, and triangular partitioning flag, we propose using two contexts depending on the corresponding flag value used for neighboring blocks, according to the embodiments described above. Examples of such flags are introduced in the table above. The meaning of these flags may suggest different respective modes, such as one or another of skip mode, affine mode, subblock merge mode, etc.

[0147] Furthermore, according to exemplary embodiments, several neighboring blocks are first identified. When entropy encoding the aforementioned flags, if none of the identified neighboring blocks are encoded by the corresponding mode (meaning the relevant flag value is signaled with a value indicating that the corresponding mode is possible), a first context may be used; otherwise, a second context may be used. In addition, as will be understood by those skilled in the art from the viewpoint of this disclosure, any of the embodiments referring to Figures 10 and 11 may be used with these additional flags.

[0148] As described above, according to the exemplary embodiment, the number of contexts may be advantageously reduced to two contexts for the flag and such prediction.

[0149] While this disclosure describes several exemplary embodiments, alternatives, substitutions, and various equivalents exist and are included within the scope of this disclosure. As will be apparent to those skilled in the art, numerous systems and methods can be devised that implement the principles of this disclosure and thus fall within the spirit and scope of this disclosure, although these are not expressly shown or described herein.

Claims

1. A method for entropy encoding the first prediction mode flag of the current block by determining the context of the first prediction mode flag of the current block based on the first prediction mode flag of the adjacent block, wherein the adjacent block is encoded in either intra-mode, inter-mode, or intra-inter-mode, and intra-inter-mode is different from both inter-mode and intra-mode. The adjacent block is at least one of the blocks to the left and above the current block, and the method is If it is determined that none of the adjacent blocks are encoded in intra-mode, the first context entropy encodes the first prediction mode flag of the current block; If it is determined that the adjacent block is encoded in intra-mode, the second context entropy encodes the first prediction mode flag of the current block; Includes, The first prediction mode flag is pred_mode_flag. method.

2. The method of claim 1, wherein the second context is 1 and the first context is different from the second context.

3. A method for entropy decoding the first prediction mode flag of the current block by determining the context of the first prediction mode flag of the current block based on the first prediction mode flag of the adjacent block, wherein the adjacent block is decoded in either intra-mode, inter-mode, or intra-inter-mode, and intra-inter-mode is different from both inter-mode and intra-mode. The adjacent block is at least one of the blocks to the left and above the current block, and the method is If it is determined that none of the adjacent blocks have been decoded in intra-mode, the first context entropy decodes the first prediction mode flag of the current block, If it is determined that the adjacent block is being decoded in intra-mode, the second context entropy-decodes the first prediction mode flag of the current block; Includes, The first prediction mode flag is pred_mode_flag. method.

4. A method for entropy encoding the first prediction mode flag of the current block into encoded data by determining the context of the first prediction mode flag of the current block based on the first prediction mode flag of the adjacent block, wherein the adjacent block is encoded in either intra-mode, inter-mode, or intra-inter-mode, and intra-inter-mode is different from both inter-mode and intra-mode. The adjacent block is at least one of the blocks to the left and above the current block, and the method is The steps include generating an encoded data bitstream, The method includes the step of transmitting the bitstream, and the method is If it is determined that none of the adjacent blocks are encoded in intra-mode, the first context entropy encodes the first prediction mode flag of the current block; If it is determined that the adjacent block is encoded in intra-mode, the second context entropy encodes the first prediction mode flag of the current block; Includes, The first prediction mode flag is pred_mode_flag. method.

5. At least one memory configured to store computer program code, At least one processor configured to access the at least one memory and operate according to the computer program code, A device having, The computer program code is used to cause the at least one processor to perform the method according to any one of claims 1 to 4, in an apparatus.

6. A computer program that causes at least one processor to perform the method described in any one of claims 1 to 4.

Citation Information

Patent Citations

  • Method and apparatus of video coding

    US20170251213A1

  • Method for processing image based on joint inter-intra prediction mode and apparatus therefor

    US20180249156A1

  • Video encoding method and apparatus, and video decoding method and apparatus

    US20180288410A1

  • Method and apparatus of entropy coding and context modelling for video and image coding

    US20180332288A1

  • Method and apparatus of entropy coding and context modelling for video and image coding

    WO2017088810A1