Method, apparatus, and computer program for video coding

By grouping context models in video coding based on coding parameters, the inefficiencies in CABAC are addressed, leading to improved efficiency and reduced dependencies, enhancing video coding performance.

JP2025530233AActive Publication Date: 2025-09-11TENCENT AMERICA LLC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2025514396
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-10-12
Filing Date
2023-10-13
Publication Date
2025-09-11
Estimated Expiration
2043-10-13

AI Technical Summary

Technical Problem

Existing video coding technologies face inefficiencies in context-adaptive binary arithmetic coding (CABAC) due to frame-level dependencies that hinder frame-level parallel processing and optimal context model initialization.

Method used

Grouping context models based on coding parameters such as temporal layer, slice type, and quantization parameter (QP) values to independently initialize and update context states, allowing for improved CABAC efficiency and reduced frame-level dependencies.

Benefits of technology

Enhances CABAC efficiency by optimizing context model initialization and reducing frame-level dependencies, thereby improving video coding performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025530233000001_ABST
    Figure 2025530233000001_ABST
Patent Text Reader

Abstract

A video bitstream having a current block in a current picture is received. A plurality of context model groups associated with coding parameter values ​​used to code the current picture are determined. Each group of the plurality of context model groups is grouped based on one or more of the coding parameter values. A context model group for a current block is determined from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block. Initial context states are determined for context models belonging to the determined context model group. The current block is reconstructed based on the determined initial context states of the context model group.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 416,449, entitled "CABAC Context Model Grouping," filed October 14, 2022, which claims the benefit of priority to U.S. Patent Application No. 18 / 379,619, entitled "CABAC CONTEXT MODEL GROUPING," filed October 12, 2023. The disclosures of these prior applications are incorporated herein by reference in their entireties.

[0002] This disclosure describes embodiments generally related to video coding. [Background technology]

[0003] The background discussion provided herein is intended to provide a general overview of the context for the disclosure. To the extent described in this background section, the work of the named inventors, and aspects of the disclosure that may not otherwise qualify as prior art at the time of filing, are not admitted, explicitly or implicitly, as prior art to the present disclosure.

[0004] Image / video compression can help transmit image / video data across different devices, storage devices, and networks with minimal quality degradation. In some examples, video codec technology can compress video based on spatial and temporal redundancy. In one example, a video codec can use a technique called intra-prediction, which can compress images based on spatial redundancy. For example, intra-prediction can use reference data from the current picture being reconstructed for sample prediction. In another example, a video codec can use a technique called inter-prediction, which can compress images based on temporal redundancy. For example, inter-prediction can predict samples in a current picture from a previously reconstructed picture using motion compensation. Motion compensation can be indicated by a motion vector (MV). Summary of the Invention

[0005] Aspects of the present disclosure include methods and apparatus for video encoding / decoding. In some examples, an apparatus for video decoding includes a processing circuit.

[0006] According to one aspect of the present disclosure, a method of video decoding is provided. A video bitstream having a current block in a current picture is received. A plurality of context model groups associated with coding parameter values ​​used to code the current picture are determined. Each group of the plurality of context model groups is grouped based on one or more of the coding parameter values. A context model group for a current block is determined from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block. Initial context states are determined for context models belonging to the determined context model group. The current block is reconstructed based on the determined initial context states of the context model group.

[0007] In one aspect, the coding parameter values ​​include at least one of a first coding parameter value indicating a temporal layer, a second coding parameter value indicating a slice type, or a third coding parameter value indicating a quantization parameter (QP) value.

[0008] In one example, for each of the plurality of context model groups, a context state for the group of the plurality of context model groups is initialized, and the context state for the group of the plurality of context model groups is further updated based on the initialized context state.

[0009] In one example, a first context model group is determined based on at least one of a first temporal layer, a first slice type, or a first QP value, and a second context model group is determined based on at least one of a second temporal layer, a second slice type, or a second QP value.

[0010] In one example, a first initial context state of a first context model of the determined context model group is determined, and a second initial context state of a second context model of the determined context model group is determined based on the determined first initial context state of the first context model.

[0011] In one example, an initial context state of the determined context model group is determined based on another group of the plurality of context model groups, the other group being indicated by coding information in the received video bitstream.

[0012] In one example, an initial context state of the determined context model group for the current block is determined based on a predetermined value indicated by coding information in the received video bitstream at one of the slice level, the picture level, and the sequence level.

[0013] In one example, the context model group is determined based on at least one of a temporal layer, a slice type, or a QP value indicated by the at least one of the coding parameter values ​​of the current block.

[0014] In one example, a plurality of candidate initial context state sets are determined for the determined context model group, and a candidate initial context state set is determined from the plurality of candidate initial context state sets as the initial context state for the determined context model group based on coding information in the video bitstream.

[0015] In one example, the determined set of candidate initial context states includes one of: (i) a predetermined initial context state; and (ii) a context state associated with a block in a picture prior to the current picture.

[0016] In one example, syntax elements associated with a current block are grouped into a plurality of syntax element sets, a context model associated with each of the plurality of syntax element sets is determined from the context model group, and an initial context state for the context model associated with each of the plurality of syntax element sets is determined based on a respective block in a picture prior to the current picture.

[0017] According to another aspect of the present disclosure, an apparatus is provided. The apparatus includes a processing circuit. The processing circuit may be configured to perform any of the described methods for video decoding / encoding. For example, the processing circuit is configured to receive a video bitstream having a current block in a current picture. The processing circuit is configured to determine a plurality of context model groups associated with coding parameter values ​​used to code the current picture. Each of the plurality of context model groups is grouped based on one or more of the coding parameter values. The processing circuit is configured to determine a context model group for a current block from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block. The processing circuit is configured to determine an initial context state for a context model belonging to the determined context model group. The processing circuit is configured to reconstruct the current block based on the determined initial context state of the context model group.

[0018] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform any of the described methods for video decoding / encoding. [Brief explanation of the drawings]

[0019] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4] 1 is an exemplary flowchart of bin decoding. [Figure 5] 1 shows a flowchart outlining a decoding process according to some embodiments of the present disclosure. [Figure 6] 1 shows a flowchart outlining an encoding process according to some embodiments of the present disclosure. [Figure 7] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0020] 1 shows a block diagram of a video processing system 100 in some examples. The video processing system 100 is an example of an application of the disclosed subject matter, which is a video encoder and video decoder in a streaming environment. The disclosed subject matter can be equally applied to other video-enabled applications, including, for example, video conferencing, digital TV, streaming services, and storage of compressed video on digital media, including CDs, DVDs, memory sticks, and the like.

[0021] The video processing system 100 may include a capture subsystem 113, which may include a video source 101, such as a digital camera, that produces a stream of uncompressed video pictures 102. In one example, the stream of video pictures 102 includes samples captured by the digital camera. The stream of video pictures 102 is depicted as a thick line to emphasize its high data volume compared to the encoded video data 104 (or encoded video bitstream) and may be processed by an electronics device 120 that includes a video encoder 103 coupled to the video source 101. The video encoder 103 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data 104 (or encoded video bitstream) is depicted as a thin line to emphasize its low data volume compared to the stream of video pictures 102 and may be stored on a streaming server 105 for later use. One or more streaming client subsystems, such as the client subsystems 106 and 108 of FIG. 1, can access the streaming server 105 to retrieve copies 107 and 109 of the encoded video data 104. The client subsystem 106 can include a video decoder 110, for example, within an electronics device 130. The video decoder 110 can decode the incoming copy of the encoded video data 107 and produce an outgoing stream of video pictures 111, which can be rendered on a display 112 (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data 104, 107, and 109 (e.g., a video bitstream) can be encoded according to a particular video coding / compression standard.Examples of such standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC). The subject matter disclosed herein may be used in the context of VVC.

[0022] It should be noted that electronics devices 120 and 130 may include other components (not shown). For example, electronics device 120 may include a video decoder (not shown), and electronics device 130 may also include a video encoder (not shown).

[0023] 2 shows an exemplary block diagram of a video decoder (210). The video decoder (210) may be included in an electronics device (230). The electronics device (230) may include a receiver (231) (e.g., a receiving circuit). The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.

[0024] The receiver (231) can receive one or more coded video sequences, e.g., included in a bitstream, to be decoded by the video decoder (210). In one embodiment, one coded video sequence is received at a time, and the decoding of each coded video sequence is independent of the decoding of other coded video sequences. The coded video sequences can be received from a channel (201), which can be a hardware / software link to a storage device that stores the coded video data. The receiver (231) can also receive the coded video data along with other data, e.g., coded audio data and / or auxiliary data streams, which can be forwarded to their respective using entities (not shown). The receiver (231) can separate the coded video sequences from other data. To combat network jitter, a buffer memory (215) can be coupled between the receiver (231) and the entropy decoder / parser 520 (hereinafter, "parser (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In others, it may be external to the video decoder 210 (not shown). In still others, there may be a buffer memory (not shown) external to the video decoder 210, e.g., to combat network jitter, and there may be another buffer memory 215 internal to the video decoder 210, e.g., to handle playback timing. When the receiver 231 is receiving data from a store-and-forward device with sufficient bandwidth and controllability or from an isosynchronous network, the buffer memory 215 may not be required or may be small. For use over best-effort packet networks, such as the Internet, the buffer memory 215 may be required and may be relatively large and advantageously sized adaptively, and may be implemented, at least in part, in an operating system or similar element (not shown) external to the video decoder 210.

[0025] The video decoder (210) may include a parser (220) for reconstructing symbols (221) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and possibly information for controlling a rendering device, such as a render device (212) (e.g., a display screen) that is not an integral part of the electronics device (230) but can be coupled to the electronics device (230), as shown in FIG. 2. The control information for the rendering device(s) may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may be according to a video coding technique or standard and may follow various principles, including variable-length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (220) may also extract information from the coded video sequence information, such as transform coefficients, quantization parameter values, motion vectors, etc.

[0026] The parser (220) may perform an entropy decoding / parsing process on the video sequence received from the buffer memory (215) to produce symbols (221).

[0027] The reconstruction of the symbols (221) may involve several different units, depending on the type of coded video picture or portion thereof and other factors (e.g., inter-picture and intra-picture, inter-block and intra-block, etc.). Which units are involved and how they are involved can be controlled by subgroup control information parsed from the coded video sequence by the parser (220). The flow of such subgroup control information between the parser (220) and the following units is not shown for clarity.

[0028] Beyond the functional blocks already described, the video decoder (210) may be conceptually subdivided into a number of functional units, as described below. In practical implementations operating within commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the subject matter of this disclosure, the following conceptual division into functional units is appropriate:

[0029] The first unit is a scalar / inverse transform unit (251), which receives quantized transform coefficients as symbol(s) (221) from the parser (220), along with control information including which transform to use, block size, quantization coefficients, quantization scaling matrix, etc. The scalar / inverse transform unit (251) can output blocks of sample values ​​that can be input to an aggregator (255).

[0030] In some cases, the output samples of the scaler / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information can be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) generates a block of the same size and shape as the block being reconstructed using surrounding, already reconstructed information fetched from the current picture buffer (258). The current picture buffer (258), for example, buffers partially reconstructed and / or fully reconstructed current pictures. In some cases, the aggregator (255) adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251).

[0031] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to a block that may be inter-coded and motion-compensated. In such cases, the motion-compensated prediction unit (253) may access the reference picture memory (257) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (221) related to the block, these samples may be added by the aggregator (255) to the output of the scalar / inverse transform unit (251) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (257) from which the motion-compensated prediction unit (253) fetches prediction samples may be controlled by a motion vector and are available to the motion-compensated prediction unit (253) in the form of symbols (221), which may have, for example, X, Y, and reference picture components. Motion compensation can also include interpolation of sample values ​​fetched from the reference picture memory (257) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.

[0032] The output samples of the aggregator (255) may be subjected to various loop filtering techniques in a loop filter unit (256). Video compression techniques may include in-loop filtering techniques controlled by parameters included in the coded video sequence (also referred to as a coded video bitstream) and made available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression may also respond to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as to previously reconstructed and loop-filtered sample values.

[0033] The output of the loop filter unit (256) can be a sample stream that can be output to a render device (212), which can also be stored in a reference picture memory (257) for use in future inter-picture prediction.

[0034] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed and identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) can become part of the reference picture memory (257), and a new current picture buffer can be reallocated before beginning reconstruction of the next coded picture.

[0035] The video decoder (210) may perform decoding according to a given video compression technology or standard, such as ITU-T Recommendation H.265. The coded video sequence may conform to the syntax specified by the video compression technology or standard used, in the sense of adhering to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, a profile may select specific tools from all tools available in the video compression technology or standard, such that only those tools are available for use under that profile. Compliance also requires that the complexity of the coded video sequence be within a range specified by the level of the video compression technology or standard. In some cases, the level constrains the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may optionally be further constrained through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.

[0036] In one embodiment, the receiver (231) 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 (210) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0037] 3 shows an exemplary block diagram of a video encoder (303). The video encoder (303) is included in an electronics device (320). For example, the electronics device (320) includes a transmitter (340) (e.g., a transmission circuit). The video encoder (303) can be used in place of the video encoder (103) in the example of FIG. 1.

[0038] The video encoder (303) may receive video samples from a video source (301) (not part of the electronics device (320) in the example of FIG. 6) that may capture video image(s) to be encoded by the encoder (303). In another example, the video source (301) is part of the electronics device (320).

[0039] The video source (301) may provide a source video sequence to be encoded by the video encoder (303) in the form of a digital video sample stream that may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), 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 service provision system, the video source (301) may be a storage device containing pre-prepared video. In a video conferencing system, the video source (301) may be a camera capturing local image information as a video sequence. The video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may have one or more samples, depending on the sampling structure, color space, etc. used. The following discussion focuses on samples.

[0040] According to one embodiment, the video encoder (303) may code and compress pictures of a source video sequence into an encoded video sequence (343) in real time or under other required time constraints. Enforcing an appropriate coding rate is one function of the controller (350). In some embodiments, the controller (350) controls and is operatively coupled to other functional units, as described below, which are not shown for clarity. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group-of-picture (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured with other suitable functions associated with the video encoder (303) that are optimized for a particular system design.

[0041] In some embodiments, the video encoder (303) is configured to operate in a coding loop. As an overly simplified explanation, in one example, the coding loop can include a source coder (330) (e.g., responsible for creating symbols, e.g., a symbol stream, based on an input picture to be coded and one or more reference pictures) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to generate sample data, in a manner similar to that used by a (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding of the symbol stream yields bit-accurate results independent of the decoder location (local or remote), the contents of the reference picture memory (334) are also bit-accurate between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchronism (and the resulting drift when synchronism cannot be maintained, for example due to channel errors) is also used in some related art.

[0042] The operation of the "local" decoder (333) may be the same as that of a "remote" decoder, such as the video decoder (210), which has already been described in detail above in connection with Figure 2. However, briefly referring also to Figure 2, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).

[0043] In one embodiment, decoder technology, excluding parsing / entropy decoding, present in the decoder is present in the corresponding encoder in the same or substantially the same functional form. Therefore, the subject matter of this disclosure focuses on decoder operation. A description of the encoder technology can be omitted, as it is the reverse of the decoder technology that has been thoroughly described. In certain areas, more detailed descriptions are provided below.

[0044] In operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes an input picture relative to one or more previously coded pictures from a video sequence designated as “reference pictures.” Thus, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of one or more reference pictures that may be selected as prediction reference(s) for the input picture.

[0045] The local video decoder (333) may decode coded video data for pictures that may be designated as reference pictures based on symbols created by the source coder (330). The operation of the coding engine (332) may advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence may typically be a replica of the source video sequence, with some error. The local video decoder (333) may replicate the decoding process that may be performed by a video decoder on the reference pictures, causing the reconstructed reference pictures to be stored in the reference picture memory (334). In this way, the video encoder (303) may locally store copies of reconstructed reference pictures that have content in common with reconstructed reference pictures that will be obtained by a far-end video decoder.

[0046] The predictor (335) may perform a predictive search for the coding engine (332). That is, for a new picture to be coded, the predictor (336) may search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors or block shapes, that can serve as an appropriate prediction reference for the new picture. The predictor (335) may operate pixel block by pixel block to find an appropriate prediction reference. In some cases, as determined by the search results obtained by the predictor (335), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (334).

[0047] The controller (350) may manage the coding process of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0048] The outputs of all the aforementioned functional units may be subjected to entropy coding in an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.

[0049] A transmitter (340) may buffer the coded video sequence(s) produced by the entropy coder (345) and prepare them for transmission over a communication channel (360), which may be a hardware or software link to a storage device that stores the coded video data. The transmitter (340) may merge the coded video data from the video encoder (303) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).

[0050] The controller (350) may manage the operation of the video encoder (303). During coding, the controller (350) may assign each coded picture a particular coded picture type, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned one of the following picture types:

[0051] Intra-pictures (I-pictures) can be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs allow several different types of intra-pictures, including, for example, Independent Decoder Refresh (IDR) pictures.

[0052] Predictive pictures (P pictures) can be encoded and decoded using intra- or inter-prediction, using motion vectors and reference indices to predict the sample values ​​of each block.

[0053] Bidirectionally predicted pictures (B pictures) can be coded and decoded using intra- or inter-prediction, using two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multi-predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.

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

[0055] The video encoder (303) may perform coding operations according to a predetermined video coding technique or standard, such as ITU-T Recommendation H.265. In operation, the video encoder (303) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The coded video data may therefore conform to a syntax defined by the video coding technique or standard being used.

[0056] In one embodiment, the transmitter (340) may transmit additional data along with the encoded video. The source coder (330) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0057] Video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or otherwise) between pictures. In one example, a particular picture being coded / decoded, called the current picture, is divided into multiple blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture can be coded by a vector called a motion vector. A motion vector points to a reference block in the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.

[0058] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. Bi-prediction techniques use two reference pictures, such as a first reference picture and a second reference picture, both of which are earlier in a video than the current picture in decoding order (but may be earlier and later, respectively, in display order). A block in the current picture can be coded with a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. The block can be predicted by a combination of the first and second reference blocks.

[0059] Furthermore, merge mode techniques can be used to improve coding efficiency in inter-picture prediction.

[0060] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed on a block-by-block basis. For example, according to the HEVC standard, a picture in a sequence of video pictures is divided into multiple coding tree units (CTUs) for compression, and the CTUs within a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU may be recursively quadtree-decomposed into one or more coding units (CUs). For example, a 64×64 pixel CTU can be divided into one CU of 64×64 pixels, four CUs of 32×32 pixels, or 16 CUs of 16×16 pixels. In one example, each CU is analyzed to determine the prediction type of that CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Generally, each PU includes a luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations during coding (encoding / decoding) are performed in units of prediction blocks. Taking a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values), such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, and the like.

[0061] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technology. In one embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.

[0062] This disclosure includes aspects related to context-adaptive binary arithmetic coding (CABAC) initialization and inheritance. For example, multiple groups of CABAC initialization or multiple groups of CABAC inheritance from previously coded pictures may be applied to entropy coding.

[0063] A CABAC engine, such as one in HEVC, can use a table-based probability transition process between 64 different representative probability states. In HEVC, the current interval range (e.g., ivlCurrRange), which represents the state of the coding engine, can be quantized to a set of four values ​​before calculating a new interval range. HEVC state transitions can be implemented using a table containing 64×4 8-bit pre-calculated values ​​to approximate the value of ivlCurrRange*pLPS(pStateIdx), where pLPS is the probability of the least probable symbol (LPS) and pStateIdx is the index of the current state. Also, decoding decisions can be made using a pre-calculated look-up table (LUT). For example, the LPS range (e.g., ivlLpsRange) can be determined based on the LUT in equation (1) as follows: The LPS range (eg, ivlLpsRange) can also be used to update the current interval range (eg, ivlCurrRange) and calculate the output bin value (eg, binVal).

number

[0064] Probabilities can be linearly represented by the probability index pStateIdx, for example, in VVC. Therefore, all calculations can be performed using formulas without LUT operations. To improve the accuracy of probability estimation, a multi-hypothesis probability update model can be applied. pStateIdx, used for interval subdivision in a binary arithmetic coder, can be a combination of two probabilities, pStateIdx0 and pStateIdx1. These two probabilities can be associated with each context model of CABAC and can be updated independently with different adaptation rates. The adaptation rates of pStateIdx0 and pStateIdx1 for each context model can be pre-trained based on the statistics of the associated bin. The probability estimate of pStateIdx can be the average of estimates from two hypotheses (e.g., pStateIdx0 and pStateIdx1).

[0065] 4 shows an example flowchart (400) for decoding a single binary decision (e.g., decoding a bin) in VVC. As shown in flowchart (400), at (S410), input variables of a context table (e.g., ctxTable) and a context index (e.g., ctxIdx) may be received. In some embodiments, the input variables may also include a current interval range (e.g., ivlCurrRange) and an interval offset (e.g., ivlOffset). At (S420), variables of a quantization range index (e.g., qRangeIdx), a probability state (e.g., pState), a most probable symbol value (e.g., valMps), and a least probable symbol interval range (e.g., ivlLpsRange) may be determined, and ivlCurrRange may be updated as ivlCurrRange-ivlLpsRange. At (S430), when ivlOffset is less than ivlCurrRange, the bin value (e.g., binVal) may be determined as valMps, as shown at (S450). When ivlOffset is greater than or equal to ivlCurrRange, the bin value (e.g., binVal) may be determined as 1-valMps, ivlOffset may be decremented by ivlCurrRange, and ivlCurrRange may be set equal to ivlLpsRange, as shown at (S440). At (S460), pStateIdx0 and pStateIdx0 may be updated based on the shift0, shift1, and bin value parameters. At (S470), a renormalization process (e.g., RenormD) in the decoder may be performed based on the determined pStateIdx0 and pStateIdx0.

[0066] Similar to HEVC, VVC CABAC can also have a quantization parameter (QP)-dependent initialization process that is invoked at the beginning of each slice. Given the initial value of luma QP for a slice, the initial probability state of the context model, denoted preCtxState, can be derived in equations (2)-(4) as follows:

number

number

[0067] To further improve CABAC efficiency, an inherited context initialization method may be included in, for example, ECM software. For example, the context states of all context models in an inter slice (e.g., a B-type slice or a P-type slice) containing the last CTU in a corresponding picture may be stored. The stored context state may be used to initialize the context models in the next inter slice with the same slice type, the same QP value, and the same temporal layer ID.

[0068] For each inter slice, a control flag may be signaled to select the context initialization scheme used for that inter slice. When the flag is equal to zero, the slice's context model may be initialized with one of multiple existing context initialization tables based on a flag such as sh_cabac_init_flag. Otherwise, the slice's context model may be initialized by inheriting the slice's context state from a previously coded picture.

[0069] Although the above-mentioned related methods may improve coding efficiency, they may introduce dependencies between frames at the same temporal level, which may destroy frame-level parallelism, such as frame parallel processing (FPP), in both the encoder and the decoder.

[0070] Furthermore, when temporal inheritance for CABAC states is used, it can be assumed that the initial context model is not optimal in all cases, e.g., for each temporal layer, a better initial CABAC state may be available to improve coding efficiency.

[0071] In this disclosure, multiple (or multiple) candidate context models may be applied to entropy code a syntax element. Each candidate context model may provide a respective estimate of the conditional probability of the syntax element to be coded. An exemplary context model may be a CABAC context model. The CABAC context model may be a probability model for one or more bins of the binarized syntax element. The CABAC context may be selected from a selection of available models depending on the statistics of recently coded syntax elements. The CABAC context model may store the probability that each bin is "1" or "0."

[0072] In the present disclosure, multiple groups of context models, such as CABAC context models, may be applied to an entropy coding module. For example, the multiple context models (e.g., CABAC context models) may be divided into multiple context model groups according to predetermined criteria, such as coding parameter values. A context state (e.g., a probability pStateIdx of the LPS and a value valMPs of the MPS) for each of the multiple context model groups may be initialized and updated, respectively.

[0073] In one aspect, the context models may be grouped based on one or more criteria of CABAC inheritance (or coding parameter values), such as, for example, one or a combination of temporal layer, quantization parameter (QP), slice type, etc. For simplicity and clarity, the following description may use temporal layer as an example of a criterion or coding parameter value.

[0074] In one example, the context models may be grouped into a plurality of context model groups based on coding parameter values. Each of the plurality of context model groups may be grouped based on one or more of the coding parameter values. In one example, a context model group for a current block may be determined from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block. The coding parameter values ​​may include at least one of a first coding parameter value indicating a temporal layer (e.g., temporal layer 0, temporal layer 1), a second coding parameter value indicating a slice type (e.g., I-type, P-type, or B-type), or a third coding parameter value indicating a quantization parameter (QP) value.

[0075] In one example, a first context model group may be determined based on at least one of a first temporal layer, a first slice type, or a first QP value. A second context model group may be determined based on at least one of a second temporal layer, a second slice type, or a second QP value. For example, the first context model group may be determined based on a first temporal layer (e.g., temporal layer 0), and the second context model group may be determined based on a second temporal layer (e.g., temporal layer 1).

[0076] In one aspect, a separate set of initial context models may be applied to each group, and the context state (e.g., LPS probabilities pStateIdx and MPS values ​​valMPs) for each group may be initialized and updated independently of other groups.

[0077] In one example, for each group of the plurality of context model groups, a context state for the respective group of the plurality of context model groups may be initialized, and the context state for the respective group of the plurality of context model groups may be further updated based on the initialized context state.

[0078] In one aspect, each temporal level (or temporal layer) can have a respective initial context model, and the CABAC context state for each initial context model can be updated and inherited within the corresponding group for the entropy coding process.

[0079] For example, a first context model group may be grouped based on a first time level (or a first time layer). A second context model group may be grouped based on a second time level (or a second time layer). The context states of the context models of the first group may be initialized and updated within the first group. The context states of the context models of the second group may be initialized and updated within the second group.

[0080] In one example, a first initial context state of a first context model in a first context model group may be determined, and based on the determined first initial context state of the first context model, a second initial context state of a second context model in the first context model group may be determined.

[0081] In one aspect, CABAC state inheritance may be restricted within the same group of context models.

[0082] In one aspect, the source of CABAC state inheritance may be signaled to be selected from one of a plurality of context model groups.

[0083] In one example, the initial context state of a context model group can be determined based on a context model of another group, the other group being indicated by coding information in a received video bitstream.

[0084] In one example, the source of CABAC state inheritance may indicate a source block in a previous picture, such as a block in the middle of the previous picture or at the end of the previous picture. Based on signal information, a source block in the previous picture may be selected from multiple candidate source blocks in the previous picture. Based on the determined context state of the source block, a context state may be initialized.

[0085] In one aspect, multiple initial CABAC context sets may be available, and one of these initial context model sets may be selected when any context initialization process is required.

[0086] In one aspect, the selection of the initial CABAC context (or the selection of the initial value of the CABAC context model) may be signaled in the bitstream, for example, at the slice level (e.g., slice header), picture level (e.g., picture parameter set (PPS) or picture header), or sequence level (e.g., sequence parameter set (SPS)).

[0087] In one example, the initial context state of a context model group may be determined based on a predetermined value indicated by coding information, such as signaled at one of a slice level, a picture level, and a sequence level.

[0088] In one aspect, the selection of the initial CABAC context may be determined by a predetermined criterion, such as one or a combination of the following: temporal layer, slice type, QP value, and so on.

[0089] In one example, the context model group is determined based on at least one of a temporal layer, a slice type, or a QP value.

[0090] In one aspect, the choice of whether to use one of the context initialization sets or inherit the CABAC state may be signaled in the bitstream, for example, at the slice level (e.g., slice header), picture level (e.g., PPS or picture header), or sequence level (e.g., SPS).

[0091] In one example, a flag may be signaled to indicate which of the context initialization sets should be used. The context initialization may indicate the initial values ​​(or initial context state) for the context model. The initial context state may include (i) hard-coded values ​​defined in the specification of a codec, such as VVC, or (ii) intermediate values ​​of blocks from the previous picture. The intermediate values ​​may be referred to as inheritance. Both the hard-coded values ​​and the intermediate values ​​may be referred to as initialization.

[0092] In one example, a plurality of candidate initial context state sets may be determined for a context model group. Based on coding information in the video bitstream, a candidate initial context state set may be determined from the plurality of candidate initial context state sets as the initial context state for the context model group.

[0093] In one example, the determined set of candidate initial context states includes one of: (i) a predetermined initial context state; and (ii) a context state associated with a block in a picture prior to the current picture.

[0094] In one aspect, syntaxes (e.g., syntaxes related to the current block) can be grouped into different sets. All syntaxes can be grouped into different sets. For each set, the source of CABAC state inheritance (not including CABAC state inheritance) can be selected (and / or signaled) differently.

[0095] In one example, syntax elements associated with a current block may be grouped into a plurality of syntax element sets. From the context model group, a context model associated with each of the plurality of syntax element sets may be determined. An initial context state for the context model associated with each of the plurality of syntax element sets may be determined based on a respective block in a picture prior to the current picture.

[0096] 5 shows a flowchart outlining a process (500) according to one embodiment of the present disclosure. The process (500) can be used in a video decoder. In various embodiments, the process (500) is performed by a processing circuit, such as a processing circuit that performs the functions of the video decoder (110), a processing circuit that performs the functions of the video decoder (210), and the like. In some embodiments, the process (500) is implemented in software instructions, and thus the processing circuit performs the process (500) when the processing circuit executes the software instructions. The process begins at (S501) and proceeds to (S510).

[0097] At (S510), a video bitstream having a current block in a current picture is received.

[0098] At (S520), a plurality of context model groups associated with coding parameter values ​​used to code the current picture are determined, each group of the plurality of context model groups being grouped based on one or more of the coding parameter values.

[0099] At (S530), a context model group for the current block is determined from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block.

[0100] At (S540), an initial context state is determined for the context models that belong to the determined context model group.

[0101] At (S550), the current block is reconstructed based on the determined initial context state of the context model group.

[0102] In one aspect, the coding parameter values ​​include at least one of a first coding parameter value indicating a temporal layer, a second coding parameter value indicating a slice type, or a third coding parameter value indicating a quantization parameter (QP) value.

[0103] In one example, for each of the plurality of context model groups, a context state for the group of the plurality of context model groups is initialized, and the context state for the group of the plurality of context model groups is further updated based on the initialized context state.

[0104] In one example, a first context model group is determined based on at least one of a first temporal layer, a first slice type, or a first QP value, and a second context model group is determined based on at least one of a second temporal layer, a second slice type, or a second QP value.

[0105] In one example, a first initial context state of a first context model of the determined context model group is determined, and a second initial context state of a second context model of the determined context model group is determined based on the determined first initial context state of the first context model.

[0106] In one example, an initial context state of the determined context model group is determined based on another group of the plurality of context model groups, the other group being indicated by coding information in the received video bitstream.

[0107] In one example, an initial context state of the determined context model group for the current block is determined based on a predetermined value indicated by coding information in the received video bitstream at one of the slice level, the picture level, and the sequence level.

[0108] In one example, the context model group is determined based on at least one of a temporal layer, a slice type, or a QP value indicated by the at least one of the coding parameter values ​​of the current block.

[0109] In one example, a plurality of candidate initial context state sets are determined for the determined context model group, and a candidate initial context state set is determined from the plurality of candidate initial context state sets as the initial context state for the determined context model group based on coding information in the video bitstream.

[0110] In one example, the determined set of candidate initial context states includes one of (i) a predetermined initial context state and (ii) a context state associated with a block in a picture prior to the current picture. In one example, syntax elements associated with the current block are grouped into a plurality of syntax element sets. From the context model group, a context model associated with each of the plurality of syntax element sets is determined. An initial context state for a context model associated with each of the plurality of syntax element sets is determined based on each block in a picture prior to the current picture.

[0111] Then, the process proceeds to (S599) and ends.

[0112] The process 500 may be adapted as desired. One or more steps of the process 500 may be modified and / or omitted. Additional step(s) may be added. Any suitable order of performance may be used.

[0113] 6 shows a flowchart outlining a process (600) according to one embodiment of the present disclosure. The process (600) can be used in a video encoder. In various embodiments, the process (600) is performed by a processing circuit, such as a processing circuit performing the functions of the video encoder (103), a processing circuit performing the functions of the video encoder (303), or the like. In some embodiments, the process (600) is implemented in software instructions, and thus the processing circuit performs the process (600) when the processing circuit executes the software instructions. The process begins at (S601) and proceeds to (S610).

[0114] At (S610), a plurality of context models are divided into a plurality of context model groups based on coding parameter values ​​used to code the current picture, and each group of the plurality of context model groups is grouped based on one or more of the coding parameter values.

[0115] At (S620), a context model group for a current block in a current picture is determined from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block.

[0116] At (S630), an initial context state is determined for each context model in the determined context model group.

[0117] At (S640), the current block is coded based on the determined initial context state of the context model group.

[0118] Then, the process proceeds to (S699) and ends.

[0119] Process 600 may be adapted as desired. Step(s) of process 600 may be modified and / or omitted. Additional step(s) may be added. Any suitable order of performance may be used.

[0120] The techniques described above can be implemented as computer software using computer-readable instructions physically stored on one or more computer-readable media. For example, Figure 7 illustrates a computer system (700) suitable for implementing certain embodiments of the disclosed subject matter.

[0121] Computer software may be coded using any suitable machine code or computer language that can be assembled, compiled, linked, or similarly subjected to mechanisms to produce code having instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), and the like, either directly or via interpretation, microcode execution, and the like.

[0122] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.

[0123] 7 for computer system (700) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in this exemplary embodiment of computer system (700).

[0124] The computer system 700 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, moving a data glove, etc.), audio input (e.g., voice, clapping, etc.), visual input (e.g., gestures, etc.), or olfactory input (not shown). The human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (e.g., speech, music, ambient sounds, etc.), images (e.g., scanned images, photographic images obtained from a still camera, etc.), or video (e.g., two-dimensional video, three-dimensional video including stereoscopic video, etc.).

[0125] The input human interface devices may include one or more of a keyboard (701), a mouse (702), a trackpad (703), a touchscreen (710), a data glove (not shown), a joystick (705), a microphone (706), a scanner (707), and a camera (708) (only one of each shown).

[0126] The computer system 700 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen 710, data gloves (not shown), or joystick 705, although some haptic feedback devices may not function as input devices), audio output devices (e.g., speakers 709, headphones (not shown), etc.), visual output devices (e.g., screens 710, including CRT screens, LCD screens, plasma screens, and OLED screens (each with or without touchscreen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or four or more dimensions through means such as stereoscopic output), virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), etc.), and printers (not shown).

[0127] The computer system (700) may also include human-accessible storage devices and their associated media, such as optical media including, for example, CD / DVD ROM / RW (720) with CD / DVD or similar media (721), thumb drives (722), removable hard drives or solid-state drives (723), legacy magnetic media such as tape and floppy disks (registered trademark, not shown), specialized ROM / ASIC / PLD-based devices (not shown) such as security dongles, and the like.

[0128] Those skilled in the art will also appreciate that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include transmission media, carrier waves, or other transitory signals.

[0129] The computer system 700 may also include an interface 754 to one or more communications networks 755. Networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicular, and industrial, real-time, latency-tolerant, and the like. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, and the like, TV wired or wireless wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, and vehicular and industrial networks including CANbus. Certain networks typically require an external network interface adapter that attaches to a particular general-purpose data port or peripheral bus 749 (e.g., a USB port on the computer system 700), while others are typically integrated into the core of the computer system 700 by attachment to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, computer system 700 can communicate with other entities. Such communication may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or two-way, for example, to other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks may be used on each network and network interface, as described above.

[0130] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core (740) of the computer system (700).

[0131] The core (740) may include one or more central processing units (CPUs) (741), graphics processing units (GPUs) (742), specialized programmable processing units in the form of field programmable gate arrays (FPGAs) (743), task-specific hardware accelerators (744), graphics adapters (750), etc. These devices may be connected via a system bus (748), along with read-only memory (ROM) (745), random access memory (746), and internal mass storage (747), such as internal, non-user-accessible hard drives, SSDs, and the like. In some computer systems, the system bus (748) may be made accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, and the like. Peripheral devices may be attached either directly to the core's system bus (748) or via a peripheral bus (749). In one example, a screen (710) may be connected to the graphics adapter (750). Peripheral bus architectures include PCI, USB, and the like.

[0132] The CPU (741), GPU (742), FPGA (743), and accelerator (744) may execute specific instructions that, in combination, may constitute the aforementioned computer code. The computer code may be stored in ROM (745) or RAM (746). Transient data may also be stored in RAM (746), while permanent data may be stored, for example, in internal mass storage (747). Rapid storage and retrieval from any of the memory devices may be enabled through the use of cache memory, which may be associated with one or more of the CPU (741), GPU (742), mass storage (747), ROM (745), RAM (746), and the like.

[0133] The computer-readable media may have computer code thereon for performing various computer-implemented processes. The media and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0134] By way of example, and not limitation, a computer system having the architecture (700), and in particular the core (740), can provide functionality as a result of the execution by one or more processors (including CPUs, GPUs, FPGAs, accelerators, and the like) of software embodied in one or more tangible computer-readable media. Such computer-readable media can be specific storage of the core (740) that is non-transitory in nature, such as the core's internal mass storage (747) or ROM (745), and media associated with user-accessible mass storage as introduced above. Software implementing various embodiments of the present disclosure can be stored on such devices and executed by the core (740). The computer-readable media can include one or more memory devices or chips, depending on specific needs. Software may cause the core (740) and particularly the processors therein (including CPUs, GPUs, FPGAs, and the like) to perform particular processes or portions of particular processes described herein, including by defining data structures stored in RAM (746) and modifying such data structures according to processes defined by the software. Additionally, or alternatively, the computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator (744)) that can operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may include circuitry (e.g., integrated circuits (ICs)) storing software for execution, circuitry embodying logic for execution, or both, where appropriate. The present disclosure includes any suitable combination of hardware and software.

[0135] The use of "at least one of" or "one of" in this disclosure is intended to include any one or combination of the described elements. For example, reference to at least one of A, B, or C; at least one of A, B, and C; at least one of A, B, and / or C; and at least one of A through C is intended to include A only, B only, C only, or any combination thereof. Reference to one of A or B and one of A and B is intended to include A or B or (A and B). The use of "one of" does not exclude any combination of the described elements where applicable, such as when the elements are not mutually exclusive.

[0136] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various equivalent alternatives that fall within the scope of the disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and are therefore within its spirit and scope.

Claims

1. 1. A method of video decoding executed by one or more processors, comprising: receiving a video bitstream having a current block in a current picture; determining a plurality of context model groups associated with coding parameter values ​​to be used in coding the current picture, each group of the plurality of context model groups being grouped based on one or more of the coding parameter values; determining a context model group for the current block from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block; determining an initial context state for a context model belonging to the determined context model group; reconstructing the current block based on the determined initial context state of the context model group; A method having the following.

2. 2. The method of claim 1, wherein the coding parameter values ​​include at least one of a first coding parameter value indicating a temporal layer, a second coding parameter value indicating a slice type, or a third coding parameter value indicating a quantization parameter (QP) value.

3. For each of the plurality of context model groups, initializing a context state for a group of the plurality of context model groups; updating the context state for the group of the plurality of context model groups based on the initialized context state; The method of claim 1 further comprising:

4. The step of determining the plurality of context model groups further comprises: (i) determining a first context model group based on at least one of a first temporal layer, a first slice type, or a first QP value; and (ii) determining a second context model group based on at least one of a second temporal layer, a second slice type, or a second QP value. The method of claim 1 , comprising:

5. The step of determining the initial context state further comprises: determining a first initial context state of a first context model of the determined context model group; determining a second initial context state of a second context model of the determined context model group based on the determined first initial context state of the first context model; The method of claim 1 , comprising:

6. The step of determining the initial context state further comprises: determining the initial context state of the determined context model group based on another group of the plurality of context model groups, the other group being indicated by coding information in the received video bitstream; The method of claim 1 , comprising:

7. The step of determining the initial context state further comprises: determining the initial context state of the determined context model group for the current block based on a predetermined value indicated by coding information in the received video bitstream at one of a slice level, a picture level, and a sequence level; The method of claim 1 , comprising:

8. The step of determining the context model group for the current block further comprises: determining the context model group based on at least one of a temporal layer, a slice type, or a quantization parameter (QP) value indicated by the at least one of the coding parameter values ​​of the current block; The method of claim 1 , comprising:

9. The step of determining the initial context state further comprises: determining a plurality of candidate initial context state sets for the determined context model group; determining a candidate initial context state set from the plurality of candidate initial context state sets as the initial context state for the determined context model group based on coding information in the received video bitstream. The method of claim 1 , comprising:

10. 10. The method of claim 9, wherein the determined set of candidate initial context states includes one of: (i) a predetermined initial context state; and (ii) a context state associated with a block in a picture prior to the current picture.

11. Syntax elements associated with the current block are grouped into a plurality of syntax element sets; The method further comprises: determining a context model associated with each set of the plurality of syntax element sets from the context model group; determining an initial context state for the context model associated with each set of the plurality of syntax element sets based on different blocks in pictures prior to the current picture; having The method of claim 1.

12. 1. A method of video encoding executed by one or more processors, comprising: dividing a plurality of context models into a plurality of context model groups based on coding parameter values ​​used to code a current picture, each group being grouped based on one or more of the coding parameter values; determining a context model group for a current block in the current picture from the plurality of context model groups according to at least one of the coding parameter values ​​associated with the current block; determining an initial context state for each context model of the determined context model group; encoding the current block based on the determined initial context state of the context model group; A method having the following.

13. one or more processors; one or more memories storing a computer program; and The computer program causes the one or more processors to perform the method of any one of claims 1 to 12. Device.

14. A computer program causing a computer to carry out the method according to any one of claims 1 to 12.

Citation Information

Patent Citations

  • Encoding apparatus and method, decoding apparatus and method, recording medium, and program

    JP2003319391A

  • Method, apparatus, and system for parallel encoding and decoding of moving images.

    JP2011515880A

  • Image processing device and method

    JP2021141348A

  • Image encoding and decoding

    JP2022516734A

  • Method and computer program for video coding

    JP2022521516A