System and method for parameterizing probabilistic update rate of arithmetic encoder
By selecting and signaling parameters Ai, Bi, Ci and Ei, the probability update rate of the arithmetic encoder is dynamically adjusted, solving the problem of low encoding efficiency in the prior art, and achieving more efficient video encoding.
Patent Information
- Application Number
- CN202380056482.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-06-13
- Filing Date
- 2023-06-15
- Publication Date
- 2025-03-14
AI Technical Summary
In existing video encoding techniques, the probability update rate of arithmetic encoders usually uses predefined constants, resulting in a decrease in encoding efficiency in some cases.
By selecting and signaling parameters Ai, Bi, Ci, and Ei, the probability update rate of the arithmetic encoder is dynamically adjusted to improve encoding efficiency.
This method can optimize the performance of arithmetic encoder under different encoding conditions and improve encoding efficiency.
Smart Images

Figure CN119631404A_ABST
Abstract
Description
Related Applications
[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 403,627, filed on September 2, 2022, entitled “Adaptive Parameters for Arithmetic Coder Probability Update Rate,” and is a continuation of and claims priority to U.S. Patent Application No. 18 / 209,205, filed on June 13, 2023, entitled “Systems and Methods for Parameterizing Arithmetic Coder Probability Update Rate,” all of which are hereby incorporated by reference in their entirety. Technical Field
[0002] Embodiments herein relate generally to video encoding and decoding, including but not limited to systems and methods for parameterizing arithmetic encoder probability update rates. Background Art
[0003] Digital video is supported by various electronic devices such as digital televisions, laptop or desktop computers, tablet computers, digital cameras, digital recording devices, digital media players, video game consoles, smart phones, video teleconferencing devices, video streaming devices, etc. Electronic devices transmit and receive digital video data over a communication network or otherwise transmit digital video data, and / or store digital video data on a storage device. Due to the limited bandwidth capacity of a communication network and the limited memory resources of a storage device, video encoding may be used to compress the video data according to one or more video encoding standards before transmitting or storing the video data.
[0004] A variety of video codec standards have been developed. For example, video coding standards include the Alliance for Open Media Video 1 (AV1), Versatile Video Coding (VVC), Joint Exploration Test Model (JEM), High Efficiency Video Coding (HEVC / H.265), Advanced Video Coding (AVC / H.264), and Moving Picture Experts Group (MPEG) coding. Video coding typically uses prediction methods (e.g., inter-frame prediction, intra-frame prediction, etc.) that exploit the redundancy inherent in video data. Video coding aims to compress video data into a form that uses a lower bit rate while avoiding or minimizing degradation of video quality.
[0005] HEVC (also known as H.265) is a video compression standard designed as part of the MPEG-H project. ITU-T and ISO / IEC published the HEVC / H.265 standard in 2013 (version 1), 2014 (version 2), 2015 (version 3), and 2016 (version 4). Versatile Video Coding (VVC), also known as H.266, is a video compression standard intended as a successor to HEVC. ITU-T and ISO / IEC published the VVC / H.266 standard in 2020 (version 1) and 2022 (version 2). AV1 is an open video coding format designed as a replacement for HEVC. On January 8, 2019, Confirmed Version 1.0.0 of the specification with Errata 1 was released. Summary of the invention
[0006] As mentioned above, encoding (compression) reduces bandwidth and / or storage space requirements. As described in detail below, lossless compression and lossy compression can be used. Lossless compression refers to a technique in which an exact copy of the original signal can be reconstructed from the compressed original signal via a decoding process. Lossy compression refers to an encoding / decoding process in which the original video information is not fully retained during encoding and cannot be fully recovered during decoding. When lossy compression is used, the reconstructed signal may not be the same as the original signal, but the distortion between the original signal and the reconstructed signal is small enough to make the reconstructed signal usable for the intended application. The amount of tolerable distortion depends on the application. For example, users of certain consumer video streaming applications can tolerate higher distortion than users of movie or television broadcast applications. The compression ratio achievable by a specific encoding algorithm can be selected or adjusted to reflect various distortion tolerances: higher tolerable distortion generally allows encoding algorithms that produce higher losses and higher compression ratios.
[0007] The video encoder and / or decoder can utilize techniques and steps from several major categories, including, for example, motion compensation, Fourier transform, quantization, and entropy coding. During entropy coding, data about the operation can be sent to the entropy encoder. The entropy encoder can output a code stream (encoded video sequence), which can be transmitted to another device via a transmission channel. During the video decoding process, the code stream can be sent to the entropy decoder. The entropy decoder can output data about the operation based on the code stream, which data may include intra-frame prediction information, residual information, etc. In some embodiments, entropy coding / decoding utilizes an arithmetic coding algorithm based on the probability of occurrence of symbols (or characters) as the basis for arithmetic coding. In some embodiments, the probability of occurrence of symbols (or characters) is dynamically updated during the encoding / decoding process. For example, there are only two possible characters ("a" and "b"), the probability of "a" occurring is denoted as p_a, and the probability of "b" occurring is denoted as p_b, and then p_a+p_b=1 (or any other constant value). Therefore, when "a" is encountered during the encoding / decoding process, p_a can be updated to a larger value; and p_b can be updated to a smaller value because their sum can be a constant. This probability update process can be called a "probability conversion process" or a "probability state index update process."
[0008] According to some embodiments, a method of video decoding is performed in a computing system including a memory and one or more processors. The method includes: (i) receiving video data including a plurality of blocks from a video bitstream; (ii) obtaining corresponding values of one or more parameters from the video bitstream, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values of the one or more parameters are selected from a set of predefined values; and (iii) parsing the video data using the arithmetic encoder probability update rate and the corresponding values for the one or more parameters.
[0009] According to some embodiments, a method of video encoding is performed in a computing system including a memory and one or more processors. The method includes: (i) obtaining video data including a plurality of blocks; (ii) selecting corresponding values for one or more parameters, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values for the one or more parameters are selected from a set of predefined values; and (iii) encoding the video data using the arithmetic encoder probability update rate and the corresponding values for the one or more parameters.
[0010] According to some embodiments, a computing system is provided, such as a streaming system, a server system, a personal computer system, or other electronic device. The computing system includes a control circuit and a memory storing one or more groups of instructions. One or more groups of instructions include instructions for performing any method described herein. In some embodiments, the computing system includes an encoder component and / or a decoder component.
[0011] According to some embodiments, a non-volatile computer-readable storage medium is provided. The non-volatile computer-readable storage medium stores one or more sets of instructions for execution by a computing system. The one or more sets of instructions include instructions for executing any of the methods described herein.
[0012] Therefore, a device and system having methods for encoding and decoding a video are disclosed. Such methods, devices and systems can supplement or replace conventional methods, apparatuses and systems for video encoding and / or decoding.
[0013] The features and advantages described in the specification are not necessarily all-inclusive, and in particular, some additional features and advantages will be apparent to those of ordinary skill in the art in view of the drawings, descriptions, and claims provided in this disclosure. In addition, it should be noted that the language used in the specification is primarily selected for readability and instructional purposes, and is not necessarily selected to describe or limit the subject matter described herein. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] In order to understand the present disclosure in more detail, a more specific description may be made with reference to the features of various embodiments, some of which are illustrated in the accompanying drawings. However, the accompanying drawings illustrate only the relevant features of the present disclosure and are therefore not necessarily considered to be limiting, as those skilled in the art will understand after reading the present disclosure that the description may allow for other effective features.
[0015] Figure 1 is a block diagram illustrating an example communication system in accordance with some embodiments.
[0016] Figure 2A is a block diagram illustrating example elements of an encoder component according to some embodiments.
[0017] Figure 2B is a block diagram illustrating example elements of a decoder component according to some embodiments.
[0018] Figure 3 is a block diagram illustrating an example server system in accordance with some embodiments.
[0019] Figure 4 is a flow chart illustrating an example process for decoding binary decisions.
[0020] Figure 5A-5B A flow chart is shown of an example method of encoding and decoding video according to some embodiments.
[0021] In accordance with common practice, the various features illustrated in the drawings are not necessarily drawn to scale, and like reference numerals may be used to denote like features throughout the specification and drawings. DETAILED DESCRIPTION
[0022] The present disclosure describes the parameterization of probability update rate. Traditional probability update rate uses predefined constants for probability update rate calculation. However, in some cases, using predefined constants can lose coding efficiency. The present disclosure describes selecting and signaling parameters (e.g., Ai, Bi, Ci and Ei in equation 4 below). In some cases, this parameterization improves the coding efficiency of one or more arithmetic encoders. Example Systems and Devices
[0023] Figure 1 1 is a block diagram illustrating a communication system 100 according to some embodiments. The communication system 100 includes a source device 102 and a plurality of electronic devices 120 (e.g., electronic device 120-1 to electronic device 120-m) communicatively coupled to each other via one or more networks. In some embodiments, the communication system 100 is a streaming system used, for example, with video-enabled applications such as video conferencing applications, digital television applications, and media storage and / or distribution applications.
[0024] Source device 102 includes a video source 104 (e.g., a camera component or a media storage device) and an encoder component 106. In some embodiments, video source 104 is a digital camera (e.g., configured to create an uncompressed video sample stream). Encoder component 106 generates one or more encoded video streams from the video stream. The video stream from video source 104 can have a high data volume compared to the encoded video stream 108 generated by encoder component 106. Because the encoded video stream 108 has a lower data volume (less data) than the video stream from the video source, the encoded video stream 108 requires less bandwidth to transmit and requires less storage space to store than the video stream from video source 104. In some embodiments, source device 102 does not include encoder component 106 (e.g., configured to transmit uncompressed video data to one or more networks 110).
[0025] One or more networks 110 represent any number of networks that transmit information between source device 102, server system 112, and / or electronic device 120, including, for example, wired (wired) and / or wireless communication networks. One or more networks 110 can exchange data in circuit switching and / or packet switching channels. Representative networks include telecommunication networks, local area networks, wide area networks, and / or the Internet.
[0026] One or more networks 110 include a server system 112 (e.g., a distributed / cloud computing system). In some embodiments, the server system 112 is or includes a streaming server (e.g., configured to store and / or distribute video content such as an encoded video stream from the source device 102). The server system 112 includes an encoder component 114 (e.g., configured to encode and / or decode video data). In some embodiments, the encoder component 114 includes an encoder component and / or a decoder component. In various embodiments, the encoder component 114 is instantiated as hardware, software, or a combination thereof. In some embodiments, the encoder component 114 is configured to decode the encoded video stream 108 and re-encode the video data using different encoding standards and / or methods to generate encoded video data 116. In some embodiments, the server system 112 is configured to generate multiple video formats and / or encodings from the encoded video stream 108.
[0027] In some embodiments, the server system 112 functions as a media aware network element (MANE). For example, the server system 112 can be configured to prune the encoded video stream 108 to cut a potentially different stream for one or more of the electronic devices 120. In some embodiments, the MANE is provided separately from the server system 112.
[0028] The electronic device 120-1 includes a decoder component 122 and a display 124. In some embodiments, the decoder component 122 is configured to decode the encoded video data 116 to generate an output video stream that can be rendered on a display or other type of rendering device. In some embodiments, one or more of the electronic devices 120 do not include a display component (e.g., communicatively coupled to an external display device and / or include a media storage device). In some embodiments, the electronic device 120 is a streaming client. In some embodiments, the electronic device 120 is configured to access the server system 112 to obtain the encoded video data 116.
[0029] The source device and / or the plurality of electronic devices 120 are sometimes referred to as “end devices” or “user devices.” In some embodiments, one or more of the source device 102 and / or the electronic devices 120 are examples of server systems, personal computers, portable devices (e.g., smartphones, tablets, or laptops), wearable devices, video conferencing devices, and / or other types of electronic devices.
[0030] In an example operation of the communication system 100, the source device 102 transmits an encoded video stream 108 to the server system 112. For example, the source device 102 can encode a picture stream captured by the source device. The server system 112 receives the encoded video stream 108 and can decode and / or encode the encoded video stream 108 using an encoder component 114. For example, the server system 112 can apply a coding that is more optimized for network transmission and / or storage to the video data. The server system 112 can transmit the encoded video data 116 (e.g., one or more encoded video streams) to one or more of the electronic devices 120. Each electronic device 120 can decode the encoded video data 116 to recover and optionally display the video picture.
[0031] In some embodiments, the transmission discussed above is a unidirectional data transmission. Unidirectional data transmission is sometimes used for media service applications, etc. In some embodiments, the transmission discussed above is a bidirectional data transmission. Bidirectional data transmission is sometimes used for video conferencing applications, etc. In some embodiments, the encoded video code stream 108 and / or the encoded video data 116 are encoded and / or decoded according to any of the video encoding / compression standards described herein, such as HEVC, VVC, and / or AV1.
[0032] Figure 2A 1 is a block diagram illustrating example elements of an encoder component 106 according to some embodiments. The encoder component 106 receives a source video sequence from a video source 104. In some embodiments, the encoder component includes a receiver (e.g., a transceiver) component configured to receive the source video sequence. In some embodiments, the encoder component 106 receives the video sequence from a remote video source (e.g., a video source that is a component of a device different from the encoder component 106). The video source 104 can provide the source video sequence in the form of a digital video sample stream, which can have any suitable bit depth (e.g., 8 bits, 10 bits, or 12 bits), any color space (e.g., BT.601 Y CrCb or RGB), and any suitable sampling structure (e.g., Y CrCb 4:2:0 or Y CrCb 4:4:4). In some embodiments, the video source 104 is a storage device that stores previously captured / prepared videos. In some embodiments, the video source 104 is a camera that captures local image information as a video sequence. The video data can be provided as a plurality of separate pictures that produce motion when viewed in sequence. The picture itself can be organized as a spatial array of pixels, where each pixel can include one or more samples depending on the sampling structure, color space, etc. used. The relationship between pixels and samples can be easily understood by those of ordinary skill in the art. The following description focuses on examples.
[0033] The encoder component 106 is configured to encode and / or compress the pictures of the source video sequence into an encoded video sequence 216 in real time or under other time constraints required by the application. Implementing an appropriate encoding speed is a function of the controller 204. In some embodiments, the controller 204 controls other functional units as described below and is functionally coupled to the other functional units. The parameters set by the controller 204 may include parameters related to rate control (e.g., picture skipping, λ value of quantizer and / or rate distortion optimization techniques), picture size, picture group (GOP) layout, maximum motion vector search range, etc. Other functions of the controller 204 can be easily identified by those of ordinary skill in the art as they may be related to the encoder component 106 optimized for a particular system design.
[0034] In some embodiments, the encoder component 106 is configured to operate in an encoding loop. In a simplified example, the encoding loop includes a source encoder 202 (e.g., responsible for creating symbols, such as a symbol stream, based on the input picture to be encoded and the reference picture) and a (local) decoder 210. The decoder 210 reconstructs the symbols to create sample data in a similar manner to the (remote) decoder (when the compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream (sample data) is input to the reference picture memory 208. Since the decoding of the symbol stream leads to bit-accurate results independent of the decoder location (local or remote), the contents of the reference picture memory 208 are also bit-accurate between the local encoder and the remote encoder. In this way, the prediction part of the encoder interprets the same sample values as the sample values interpreted by the decoder when using prediction during decoding as reference picture samples. The principles of reference picture synchronization (and the resulting drift if the synchronization cannot be maintained, for example due to channel errors) are known to those of ordinary skill in the art.
[0035] The operation of the decoder 210 may be the same as the operation of the remote decoder, such as the decoder component 122, which will be described below in conjunction with Figure 2B However, a brief reference Figure 2B , since symbols are available and the entropy encoder 214 and parser 254 can be lossless in encoding / decoding symbols for the encoded video sequence, the entropy decoding portion of the decoder component 122, including the buffer memory 252 and the parser 254, may not be fully implemented in the local decoder 210.
[0036] At this point it can be observed that, in addition to parsing / entropy decoding present in a decoder, any decoder techniques must also be present in substantially the same functional form in the corresponding encoder. Thus, the disclosed subject matter focuses on decoder operation. The descriptions of encoder techniques may be abbreviated, as they are the inverse of the fully described decoder techniques. A more detailed description is only required in certain areas and is provided below.
[0037] As part of its operation, source encoder 202 may perform motion compensated predictive coding, which predictively encodes an input frame with reference to one or more previously encoded frames in a video sequence designated as reference frames. In this manner, encoding engine 212 encodes the difference between a pixel block of an input frame and a pixel module of a reference frame that may be selected as a predictive reference for the input frame. Controller 204 may manage the encoding operations of source encoder 202, including, for example, the setting of parameters and subgroup parameters for encoding video data.
[0038] The decoder 210 decodes the encoded video data of the frame that can be designated as the reference frame based on the symbols created by the source encoder 202. The operation of the encoding engine 212 can advantageously be a lossy process. Figure 2A When the encoded video data is decoded at a remote video decoder (not shown), the reconstructed video sequence may be a copy of the source video sequence with some errors. The decoder 210 replicates the decoding process that may be performed on the reference frame by the remote video decoder and may cause the reconstructed reference frame to be stored in the reference picture memory 208. In this way, the encoder component 106 locally stores a copy of the reconstructed reference frame with common content as the reconstructed reference frame to be obtained by the remote video decoder (without transmission errors).
[0039] The predictor 206 may perform a prediction search for the encoding engine 212. That is, for a new frame to be encoded, the predictor 206 may search the reference picture memory 208 for sample data (as candidate reference pixel blocks) or certain metadata, such as reference picture motion vectors, block shapes, etc., that may be used as appropriate prediction references for the new picture. The predictor 206 may operate on a block of samples, pixel block by pixel block, to find an appropriate prediction reference. In some cases, as determined by the search results obtained by the predictor 206, the input picture may have a prediction reference drawn from multiple reference pictures stored in the reference picture memory 208.
[0040] The outputs of all of the above functional units may be entropy encoded in entropy encoder 214. Entropy encoder 214 converts the symbols generated by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those of ordinary skill in the art (e.g., Huffman coding, variable length coding, and / or arithmetic coding).
[0041] In some embodiments, the output of the entropy encoder 214 is coupled to a transmitter. The transmitter can be configured to buffer the coded video sequences created by the entropy encoder 214 to prepare them for transmission via a communication channel 218, which can be a hardware / software link to a storage device storing the coded video data. The transmitter can be configured to merge the coded video data from the source encoder 202 with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (source not shown). In some embodiments, the transmitter can send additional data along with the coded video. The source encoder 202 can include such data as part of the coded video sequence. The additional data can include time / space / SNR enhancement layers, other forms of redundant data, such as redundant pictures and slices, supplemental enhancement information (SEI) messages, visual usability information (VUI) parameter set fragments, etc.
[0042] The controller 204 can manage the operation of the encoder component 106. During encoding, the controller 204 can assign a specific encoding picture type to each encoded picture, which may affect the encoding technology applied to the corresponding picture. For example, a picture can be designated as an intra picture (I picture), a predicted picture (P picture), or a bidirectional predicted picture (B picture). An intra picture can be encoded and decoded without using any other frame in the sequence as a prediction source. Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh (IDR) pictures. Those of ordinary skill in the art know these variants of I pictures and their respective applications and features, so they are not repeated here. Predicted pictures can be encoded and decoded using intra prediction or inter prediction, using at most one motion vector and reference index to predict the sample values of each block. Bidirectional predicted pictures can be encoded and decoded using intra prediction or inter prediction, using at most two motion vectors and reference indexes to predict the sample values of each block. Similarly, multiple predicted pictures can use more than two reference pictures and related metadata to reconstruct a single block.
[0043] The source picture may typically be spatially subdivided into a number of blocks of samples (e.g., each block of samples is 4×4, 8×8, 4×8, or 16×16) and encoded block by block. Blocks may be predictively encoded with reference to other (already coded) blocks determined by the coding assignment applied to the block's corresponding picture. For example, blocks of an I picture may be non-predictively encoded or predictively encoded (spatial prediction or intra prediction) with reference to already coded blocks of the same picture. Blocks of pixels of a P picture may be non-predictively encoded by spatial prediction or by temporal prediction with reference to one previously coded reference picture. Blocks of a B picture may be non-predictively encoded by spatial prediction or by temporal prediction with reference to one or two previously coded reference pictures.
[0044] Video can be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-frame prediction (often abbreviated as intra-frame prediction) exploits spatial correlations in a given picture, while inter-frame prediction exploits (temporal or other) correlations between pictures. In one example, a particular picture in encoding / decoding (called the current picture) is divided into blocks. When a block in the current picture is similar to a reference block in a reference picture that was previously encoded in the video and is still buffered, the block in the current picture can be encoded with a vector called a motion vector. The motion vector points to a reference block in a reference picture, and in the case of using multiple reference pictures, can have a third dimension that identifies the reference picture.
[0045] The encoder component 106 may perform encoding operations according to a predetermined video encoding technique or standard, such as any described herein. In its operation, the encoder component 106 may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard used.
[0046] Figure 2B is a block diagram illustrating example elements of decoder component 122 according to some embodiments. Figure 2B The decoder component 122 in is coupled to the channel 218 and the display 124. In some embodiments, the decoder component 122 includes a transmitter coupled to the loop filter 256 and configured to transmit data to the display 124 (eg, via a wired or wireless connection).
[0047] In some embodiments, decoder component 122 includes a receiver coupled to channel 218 and configured to receive data from channel 218 (e.g., via a wired or wireless connection). The receiver can be configured to receive one or more encoded video sequences to be decoded by decoder component 122. In some embodiments, the decoding of each encoded video sequence is independent of other encoded video sequences. Each encoded video sequence can be received from channel 218, which can be a hardware / software link to a storage device storing encoded video data. The receiver can receive encoded video data with other data (e.g., encoded audio data and / or auxiliary data streams), which can be forwarded to their respective use entities (not depicted). The receiver can separate the encoded video sequence from the other data. In some embodiments, the receiver receives additional (redundant) data together with the encoded video. The additional data can be included as part of one or more encoded video sequences. Decoder component 122 can use the additional data to decode the data and / or more accurately reconstruct the original video data. The additional data can be in the form of, for example, time, space or SNR enhancement layers, redundant stripes, redundant pictures, forward error correction codes, etc.
[0048] According to some embodiments, decoder component 122 includes a buffer memory 252, a parser 254 (sometimes also referred to as an entropy decoder), a scaler / inverse transform unit 258, an intra prediction unit 262, a motion compensated prediction unit 260, an aggregator 268, a loop filter unit 256, a reference picture memory 266, and a current picture memory 264. In some embodiments, decoder component 122 is implemented as an integrated circuit, a series of integrated circuits, and / or other electronic circuits. In some embodiments, decoder component 122 is implemented at least partially in software.
[0049] Buffer memory 252 is coupled between channel 218 and parser 254 (e.g., to combat network jitter). In some embodiments, buffer memory 252 is separate from decoder component 122. In some embodiments, a separate buffer memory is provided between the output of channel 218 and decoder component 122. In some embodiments, in addition to buffer memory 252 internal to decoder component 122 (e.g., which is configured to handle playout timing), a separate buffer memory is provided external to decoder component 122 (e.g., to combat network jitter). When receiving data from a store / forward device with sufficient bandwidth and controllability or from an isochronous network, buffer memory 252 may not be required or may be very small. For use on a best-effort packet network such as the Internet, buffer memory 252 may be necessary, which buffer memory 252 may be relatively large and may advantageously have an adaptive size and may be implemented at least in part in an operating system or similar element (not depicted) external to decoder component 122.
[0050] The parser 254 is configured to reconstruct symbols 270 from the encoded video sequence. The symbols may include, for example, information for managing the operation of the decoder component 122, and / or information for controlling a rendering device such as the display 124. The control information for one or more rendering devices may be in the form of, for example, a supplemental enhancement information (SEI) message or a video usability information (VUI) parameter set fragment (not depicted). The parser 254 parses (entropy decodes) the encoded video sequence. The encoding of the encoded video sequence may be in accordance with a video coding technique or standard, and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser 254 may extract a set of subgroup parameters for at least one subgroup of pixels in the video decoder from the encoded video sequence based on at least one parameter corresponding to the set. 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. Parser 254 may also extract information such as transform coefficients, quantizer parameter values, motion vectors, etc. from the encoded video sequence.
[0051] The reconstruction of the symbol 270 may involve a number of different units, depending on the type of the coded video picture or portion thereof (such as: inter- and intra-pictures, inter- and intra-blocks) and other factors. Which units are involved and how they are involved may be controlled by subgroup control information parsed from the coded video sequence by the parser 254. For clarity, such subgroup control information flow between the parser 254 and the multiple units is not depicted below.
[0052] In addition to the functional blocks already mentioned, decoder component 122 can be conceptually subdivided into a plurality of functional units as described below. In a practical implementation operating under commercial constraints, many of these units interact closely with each other and can be at least partially integrated with each other. However, in order to describe the disclosed subject matter, the conceptual subdivision of the following functional units is maintained.
[0053] The scaler / inverse transform unit 258 receives the quantized transform coefficients and control information (such as the transform to be used, block size, quantization factor, and / or quantization scaling matrix) from the parser 254 as one or more symbols 270. The scaler / inverse transform unit 258 may output a block including sample values that may be input into the aggregator 268.
[0054] In some cases, the output samples of the scalar / inverse transform unit 258 belong to intra-coded blocks; that is, 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 may be provided by the intra-prediction unit 262. The intra-picture prediction unit 262 may use surrounding already reconstructed information obtained from the current (partially reconstructed) picture from the current picture memory 264 to generate a block of the same size and shape as the block under reconstruction. The aggregator 268 may add the prediction information already generated by the intra-prediction unit 262 to the output sample information provided by the scalar / inverse transform unit 258 on a per-sample basis.
[0055] In other cases, the output samples of the scaler / inverse transform unit 258 belong to an inter-frame coded and possibly motion compensated block. In this case, the motion compensated prediction unit 260 may access the reference picture memory 266 to obtain samples for prediction. After the obtained samples are motion compensated according to the symbol 270 belonging to the block, these samples may be added to the output of the scaler / inverse transform unit 258 (in this case referred to as residual samples or residual signals) by the aggregator 268 to generate output sample information. The address at which the motion compensated prediction unit 260 obtains the predicted samples from the reference picture memory 266 may be controlled by a motion vector. The motion vector may be used for the motion compensated prediction unit 260 in the form of a symbol 270, which may have, for example, X, Y and reference picture components. Motion compensation may also include interpolation of sample values obtained from the reference picture memory 266 when using sub-sample accurate motion vectors, motion vector prediction mechanisms, etc.
[0056] The output samples of aggregator 268 may be subjected to various loop filtering techniques in loop filter unit 256. The video compression techniques may include in-loop filter techniques that are controlled by parameters included in the coded video bitstream and available to loop filter unit 256 as symbols 270 from parser 254, but may also be responsive to meta-information obtained during decoding of a previous (in decoding order) portion of a coded picture or coded video sequence, and to previously reconstructed and loop filtered sample values.
[0057] The output of the loop filter unit 256 may be a sample stream that may be output to a rendering device such as the display 124 , as well as stored in the reference picture memory 266 for use in future inter-frame prediction.
[0058] Certain coded pictures, once fully reconstructed, may be used as reference pictures for future predictions. Once a coded picture is fully reconstructed and the coded picture has been identified as a reference picture (e.g., by parser 254), the current reference picture may become part of reference picture memory 266, and a new current picture memory may be reallocated before starting reconstruction of a subsequent coded picture.
[0059] The decoder component 122 may perform decoding operations according to a predetermined video compression technique that may be recorded in a standard, such as any of the standards described herein. The encoded video sequence may conform to the syntax specified by the video compression technique or standard used, in the sense that it adheres to the syntax of the video compression technique or standard, as specified in the video compression technology document or standard and in particular in the profile document therein. Moreover, in order to conform to certain video compression techniques or standards, the complexity of the encoded video sequence may be within a range defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sampling rate (e.g., measured in megasamples per second), maximum reference picture size, etc. In some cases, the limits set by the level may be further limited by the hypothetical reference decoder (HRD) specifications and metadata of the HRD buffer management signaled in the encoded video sequence.
[0060] Figure 3 306, and a plurality of communication buses 312 for interconnecting these components. In some embodiments, the control circuit 302 includes one or more processors (e.g., CPUs, GPUs, and / or DPUs). In some embodiments, the control circuit includes one or more field programmable gate arrays (FPGAs), hardware accelerators, and / or one or more integrated circuits (e.g., application specific integrated circuits).
[0061] One or more network interfaces 304 may be configured to interface with one or more communication networks (e.g., wireless, wired, and / or optical networks). Communication networks may be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of communication networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., television wired or wireless wide area digital networks including cable television, satellite television, and terrestrial broadcast television, vehicular and industrial networks including CANBus, etc. Such communications may be one-way receive-only (e.g., broadcast television), one-way send-only (e.g., CANbus to certain CANbus devices), or two-way (e.g., to other computer systems using local area digital networks or wide area digital networks). Such communications may include communications to one or more cloud computing networks.
[0062] The user interface 306 includes one or more output devices 308 and / or one or more input devices 310. The one or more input devices 310 may include one or more of the following: a keyboard, a mouse, a trackpad, a touch screen, a data glove, a joystick, a microphone, a scanner, a camera, etc. The one or more output devices 308 may include one or more of the following: an audio output device (e.g., a speaker), a visual output device (e.g., a display or viewer), etc.
[0063] The memory 314 may include high-speed random access memory (such as DRAM, SRAM, DDR RAM, and / or other random access solid-state memory devices) and / or non-volatile memory (such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, and / or other non-volatile solid-state storage devices). The memory 314 optionally includes one or more storage devices remote from the control circuit 302. Alternatively, the memory 314 or one or more non-volatile solid-state storage devices within the memory 314 include a non-volatile computer-readable storage medium. In some embodiments, the memory 314 or the non-volatile computer-readable storage medium of the memory 314 stores the following programs, modules, instructions, and data structures, or a subset or superset thereof: An operating system 316, which includes programs for handling various basic system services and for performing hardware-related tasks; • A network communications module 318 for connecting the server system 112 to other computing devices via one or more network interfaces 304 (eg, via wired and / or wireless connections); An encoding module 320 for performing various functions related to encoding and / or decoding data (such as video data). In some embodiments, the encoding module 320 is an instance of the encoder component 114. The encoding module 320 includes, but is not limited to, one or more of the following: o a decoding module 322 for performing various functions related to decoding encoded data, such as those previously described with respect to the decoder component 122; and o an encoding module 340 for performing various functions related to encoding data, such as those previously described with respect to encoder component 106; and Picture memory 352 for storing pictures and picture data, for example for use by encoding module 320. In some embodiments, picture memory 352 includes one or more of: reference picture memory 208, buffer memory 252, current picture memory 264, and reference picture memory 266.
[0064] In some embodiments, the decoding module 322 includes a parsing module 324 (e.g., configured to perform the various functions previously described with respect to the parser 254), a transform module 326 (e.g., configured to perform the various functions previously described with respect to the calibrator / inverse transform unit 258), a prediction module 328 (e.g., configured to perform the various functions previously described with respect to the motion compensated prediction unit 260 and / or the intra-frame prediction unit 262), and a filter module 330 (e.g., configured to perform the various functions previously described with respect to the loop filter unit 256).
[0065] In some embodiments, the encoding module 340 includes an encoding module 342 (e.g., configured to perform various functions previously described with respect to the source encoder 202 and / or the encoding engine 212) and a prediction module 344 (e.g., configured to perform various functions previously described with respect to the predictor 206). In some embodiments, the decoding module 322 and / or the encoding module 340 include Figure 3 A subset of the modules shown. For example, both the decoding module 322 and the encoding module 340 use a shared prediction module.
[0066] Each of the above identified modules stored in the memory 314 corresponds to a set of instructions for performing the functions described herein. The above identified modules (e.g., a set of instructions) do not need to be implemented as separate software programs, programs or modules, and therefore various subsets of these modules can be combined or otherwise rearranged in various embodiments. For example, the encoding module 320 optionally does not include separate decoding and encoding modules, but uses a set of modules to perform two groups of functions. In some embodiments, the memory 314 stores a subset of the above identified modules and data structures. In some embodiments, the memory 314 stores additional modules and data structures not described above, such as audio processing modules.
[0067] In some embodiments, the server system 112 includes a web or hypertext transfer protocol (HTTP) server, a file transfer protocol (FTP) server, and web pages and applications implemented using common gateway interface (CGI) scripts, PHP hypertext preprocessor (PHP), active server pages (ASP), hypertext markup language (HTML), extensible markup language (XML), Java, JavaScript, asynchronous JavaScript and XML (AJAX), XHP, Javelin, Wireless Universal Resource File (WURFL), etc.
[0068] although Figure 3 The server system 112 is shown in accordance with some embodiments, but Figure 3It is intended more as a functional description of various features that may be present in one or more server systems, rather than as a schematic diagram of the structures of the embodiments described herein. In practice, and as recognized by one of ordinary skill in the art, items shown separately may be combined and some items may be separated. For example, Figure 3 Some of the items shown individually in the figure can be implemented on a single server, and a single item can be implemented by one or more servers. The actual number of servers used to implement server system 112, and how features are distributed among them, will vary from one implementation to another, and optionally, will depend in part on the amount of data traffic that the server system handles during peak usage periods and during average usage periods. Entropy Coding
[0069] As previously described, during entropy encoding, data about the operation may be sent to an entropy encoder (e.g., entropy encoder 214). The entropy encoder may output a code stream that may be transmitted to another device via a transmission channel. During the video decoding process, the code stream may be sent to an entropy decoder. The entropy decoder may be configured to reconstruct certain symbols representing syntax elements constituting the encoded picture from the encoded picture. Such symbols may include, for example, a mode for encoding a block (e.g., an intra mode, an inter mode, a bidirectional prediction mode, a merge submode, or another submode), prediction information (e.g., intra prediction information or inter prediction information) that may identify a sample or metadata for prediction by an intra decoder or an inter decoder, residual information in the form of, for example, quantized transform coefficients, and the like.
[0070] For example, in HEVC, the entropy encoder / decoder can use a context-adaptive binary arithmetic coding (CABAC) algorithm. The CABAC engine in HEVC uses a table-based probability conversion process between 64 different representative probability states.
[0071] Syntax elements describing the content of a video frame may undergo binary arithmetic coding to obtain a coded stream as a stream of binary bins. During CABAC, the initial interval [0, 1) may be stretched by an integer multiplier (e.g., 512), and the probability of the least-probable symbol (pLPS) may be presented as an integer divisor by rounding their quotient. Then, the interval segmentation operation including typical arithmetic coding may be performed as an approximate calculation using integer arithmetic with a specified resolution.
[0072] The updated interval length (rLPS) corresponding to the LPS can be calculated as rLPS=R*pLPS, where R is the value of the current interval length. In order to save time and improve efficiency, the above-mentioned computationally intensive multiplication operation can be replaced by a lookup table (LUT) supplemented with pre-calculated multiplication results; and therefore, the updated interval length (ivLpsRange) corresponding to the LPS can be obtained by two indexes pStateIdx and qRangeIdx, for example, as given by Equation 1: ivlLpsRange=rangeTabLps[pStateIdx][qRangeIdx] Equation 1
[0073] During encoding / decoding, each time a new value (binVal) of the binary number to be encoded / decoded is obtained, the probability value pLPS can be recursively updated. For example, at the k-th step (i.e., during encoding or decoding of the k-th binary number), when binVal is the value of LPS, the new value of pLPS can be calculated as a larger value; or when binVal is the value of the most probable symbol (MPS), the new value of pLPS can be calculated as a smaller value.
[0074] In some embodiments, pLPS may be one of 64 possible values indexed by a 6-bit pStateIdx variable.Updating the probability value may be accomplished by updating the index pStateIdx, which may be performed by looking up the value from a pre-computed table to save computational power and / or improve efficiency.
[0075] In some embodiments, the range ivlCurrRange representing the state of the encoding engine may be quantized to a set of 4 values before calculating the new interval range. The state transition may be implemented using a table containing all 64×4 8-bit pre-computed values to approximate the value of ivlCurrRange*pLPS(pStateIdx). In addition, a pre-computed LUT may be used to implement the decoding decision. The LUT is first used to obtain ivlLpsRange, and then ivlLpsRange is used to update ivlCurrRange and calculate the output binVal.
[0076] For example, in VVC, the probability can be linearly represented by the probability index pStateIdx. Therefore, all calculations can be completed by equations without LUT operations. In order to improve the accuracy of probability estimation, a multi-hypothesis probability update model can be used, such as Figure 4. In this example, pStateIdx for interval subdivision in the binary arithmetic encoder is a combination of two probabilities pStateIdx0 and pStateIdx1. These two probabilities are associated with each context model and are updated independently at 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 binary numbers. The probability estimate pStateIdx can be the average of the estimates from the two hypotheses.
[0077] Figure 4 A flow chart of an example process for decoding a single decision (decoding decision) including a renormalization process (RenomD) in an arithmetic decoding engine is illustrated. In some embodiments, the inputs to the decoding decision are a context table (ctxTable) and a context index (ctxIdx). As shown in 402, the value of the variable ivlLpsRange is derived. Given the current value of ivlCurrRange, the variable qRangeIdx is derived as qRangeIdx=ivlCurrRange>>5. Given qRangeIdx, pStateIdx0, and pStateIdx1 associated with ctxTable and ctxIdx, valMps and ivlLpsRange are derived as pState=pStateIdx1+16*pStateIdx0; valMps=pState>>14; and ivlLpsRange=(qRangeIdx*((valMps?32767-pState:pState)>>9)>>1)+4. Set the variable ivlCurrRange to ivlCurrRange - ivlLpsRange.
[0078] When ivlOffset is greater than or equal to ivlCurrRange, set the variable binVal equal to 1-valMps, decrement ivlOffset by ivlCurrRange, and set ivlCurrRange equal to ivlLpsRange; otherwise, set the variable binVal equal to valMps.
[0079] To update the probabilities, during the state transition process, the inputs to the process are the current pStateIdx0 and pStateIdx1, and the decoded value binVal; and the outputs of the process are the updated pStateIdx0 and pStateIdx1 of the context variables associated with ctxTable and ctxIdx. In 404, variables shift0 and shift1 are derived based on the shiftIdx value associated with ctxTable and ctxIdx: shift0 = (shiftIdx>>2)+2; and shift1 = (shiftIdx&3)+3+shift0; and based on the decoded value binVal, the updates of the two variables pStateIdx0 and pStateIdx1 associated with ctxTable and ctxIdx are derived as pStateIdx0 = pStateIdx0-(pStateIdx0>>shift0)+(1023*binVal>>shift0) and pStateIdx1 = pStateIdx1-(pStateIdx1>>shift1)+(16383*binVal>>shift1).
[0080] For example, VVC CABAC may have a quantization parameter (QP)-dependent initialization process called at the beginning of each slice. Given an initial value of the luma QP for a slice, the initial probability state of the context model (denoted as preCtxState) may be derived by: m=slopeIdx×5-45, n=(offsetIdx<<3)+7; and preCtxState=Clip3(1,127,((m×(QP-32))>>4)+n).
[0081] In some embodiments, slopeIdx and offsetIdx are limited to 3 bits, and the total initialization value is represented by 6 bits of precision. The probability state preCtxState can directly represent the probability in the linear domain. Therefore, preCtxState may only require appropriate shift operations before being input to the arithmetic coding engine, and the logarithmic to linear domain mapping and 256-byte table can be predefined and stored / saved in the memory. pStateIdx0 and pStateIdx1 can be obtained by: pStateIdx0=preCtxState<<3 and pStateIdx1=preCtxState<<7.
[0082] In some embodiments, the CABAC algorithm can use a binary basis, which includes two possible characters / symbols (e.g., "0" and "1"). In a binary-based arithmetic coding algorithm, the two possible characters / symbols can also be represented as a minimum probability symbol (LPS) and a maximum probability symbol (MPS).
[0083] In some embodiments, the entropy encoder or decoder may use an arithmetic algorithm with an M-ary basis that includes M possible characters / symbols. For example, M may be any integer value between 2 and 16. For example, when M is equal to 5, the M-ary basis includes 5 possible characters / symbols, which may be represented as "0", "1", "2", "3", and "4".
[0084] The M-ary arithmetic coding engine is used to entropy encode syntax elements. Each syntax element is associated with an alphabet of M elements. As input to an encoder or decoder, the coding context may include a sequence of M-ary symbols with a set of M probabilities. Each of the M probabilities may correspond to each of the M-ary symbols; and may be represented by a cumulative distribution function (CDF).
[0085] The cumulative distribution function of M-ary symbols can be expressed as C = [c0, c1, ..., c (M-2) ,c (M-1) The cumulative distribution function of M-ary symbols can be represented by an array of M 15-bit integers, where c (M-1) =2 15 , c n / 32768 is the probability that the symbol is less than or equal to n, and n is an integer from 0 to M-1.
[0086] In some embodiments, after encoding / parsing each syntax element, the M probabilities (e.g., an array of cumulative distribution functions) are updated. In some embodiments, after encoding / decoding each M-ary symbol, the M probabilities are updated. For example, when M=4, the array of cumulative distribution functions includes [c0, c1, c2, c3].
[0087] In some embodiments, the updating of the M probabilities is performed according to Equation 2: Where symbol symbol is the M-ary symbol currently being encoded / decoded, α is an adaptive probability update rate based on the number of times the symbol has been encoded or decoded (e.g., up to 32), and m is the index of the element in the CDF. This adaptation of α can allow faster probability updates when starting to encode / parse syntax elements. For example, when M=5 and the M-ary symbol currently being decoded is "3", m∈[0,symbol) can be m∈[0,3), where m includes any integer between 0 (including the end value) and 3 (excluding the end value); and m∈[symbol,M-1) can be m∈[3,4), where m includes any integer between 3 (including the end value) and 4 (excluding the end value).
[0088] In some embodiments, the M-ary arithmetic coding process can follow the conventional arithmetic coding engine design; however, only the most significant 9 bits of the 15-bit probability value are input to the arithmetic encoder / decoder. When parsing the bitstream, the probability update rate α associated with the symbol is calculated based on the number of times the associated symbol appears, and the value of α is reset using the following formula at the beginning of a frame or tile.
[0089] Equation 3 below shows an example probability update rate: Where count is the number of times the associated symbol occurs when encoding / parsing the code stream. As indicated by the above equation, the probability update rate has a large value at the beginning (when count is relatively small, for example, 16), and then saturates later (when count is relatively large, for example, after 32 occurrences).
[0090] As shown above, the probability update rate (or rate in the case of a multi-hypothesis entropy coding engine) takes the following general expression: Where i is the index of the hypothesis, count count is the number of times the associated symbol / context appears when parsing the code stream, M means the number of different symbol values of the associated syntax / context, and the parameters Ai, Bi, Ci and Ei are predefined constants or their values can be signaled. In some embodiments, the parameters Ai, Bi, Ci and Ei are signaled with high-level syntax / context (such as video parameter set (VPS), picture parameter set (PPS), sequence parameter set (SPS), adaptive parameter set (APS), picture header, frame header, slice header, tile header or CTU header). The present disclosure describes a method for selecting and signaling parameters Ai, Bi, Ci and Ei. Selecting and signaling parameters can optimize the coding efficiency of the arithmetic encoder. Equation 4 is intended to be an example, and in some embodiments, other equations are used for probability update rates, and the methods described for selecting and signaling parameters are applicable to the parameters of other equations. The methods and systems described herein can also be applied to other types of rates, such as adaptive rates and / or probability distribution update rates.
[0091] Figure 5A is a flow chart illustrating a method 500 of encoding a video according to some embodiments. The method 500 may be performed at a computing system (e.g., server system 112, source device 102, or electronic device 120) having a control circuit and a memory storing instructions for execution by the control circuit. In some embodiments, the method 500 is performed by executing instructions stored in a memory (e.g., memory 314) of the computing system.
[0092] As used herein, the term "block" may be interpreted as a prediction block, a coding block, a coding unit (CU), or a transform block. The term "block size" may refer to a block width, a block height, a maximum value of width, a maximum value of height, a minimum value of width, a minimum value of height, an area size (width*height), and / or an aspect ratio of a block (width:height, or height:width).
[0093] The system obtains (502) video data including a plurality of blocks. The system selects (504) corresponding values of one or more parameters corresponding to an arithmetic coder probability update rate, wherein the corresponding values for the one or more parameters are selected from a set of predefined values. The system encodes (506) the video data using the arithmetic coder probability update rate and the corresponding values for the one or more parameters.
[0094] For example, the system uses an arithmetic encoder to encode / decode a code stream of video data. The arithmetic encoder is configured to estimate symbol probabilities. The arithmetic encoder can use adaptive probabilities (e.g., the probability of future symbols is based on previously encountered symbols). The rate of updating the arithmetic encoder can also be adaptive (e.g., the encoder can be updated faster in some contexts and updated more slowly in other contexts). In some embodiments, the arithmetic encoder is updated based on multiple update rates. In some embodiments, a low complexity recursive update using the estimated true probability is used.
[0095] Figure 5B is a flow chart illustrating a method 550 of decoding a video according to some embodiments. The method 550 may be performed at a computing system (e.g., server system 112, source device 102, or electronic device 120) having a control circuit and a memory storing instructions for execution by the control circuit. In some embodiments, the method 550 is performed by executing instructions stored in a memory (e.g., memory 314) of the computing system.
[0096] The system receives (552) a video stream including a plurality of blocks. The system obtains (554) corresponding values of one or more parameters from the video stream, the one or more parameters corresponding to an arithmetic coder probability update rate, wherein the corresponding values for the one or more parameters are selected from a set of predefined values. The system calculates (556) an arithmetic coder probability update rate based on the corresponding values of the one or more parameters signaled in the video stream. The system determines (558) one or more coding contexts based on the calculated arithmetic coder probability update rate. The system decodes (560) a block from the plurality of blocks based on the one or more coding contexts.
[0097] In some embodiments, for an arithmetic encoder using a single hypothesis or multiple hypotheses for probability estimation, the value of one or more of the parameters Ai, Bi, Ci, and Ei is selected by the encoder from a set of predefined values and signaled in a high-level syntax. i The predefined values of include 0, 1, 2, ..., 8. In some embodiments, B i and C i The predefined values of include 0, 1, 2, ..., 128. In some embodiments, E i The predefined values include 0, 1, 2, 3, 4.
[0098] In some embodiments, requirement B i Less than C i For example, (B i , C i) include (3,7), (3,15), (3,31), (7,15), (7,31), and (15,31). In some embodiments, signaling B i and C i The increment value between (for example, C i -B i In some embodiments, signaling A i , B i , C i and / or E i The binary representation of the value of .
[0099] For example, for parameter A i The syntax changes can be tabulated as shown in Table 1 below, where the syntax ac_param_a0 and ac_param_a1 indicate A i In some embodiments, f(n) has a value other than 3 (eg, 2, 4, or 7). Table 1
[0100] As another example, for parameter A i , the syntax changes can be tabulated as shown in Table 2 below, where the syntax ac_param_a indicates the value of a single hypothesis of A. Table 2
[0101] In some embodiments, a lookup table is defined with possible combinations of values for one or more of Ai, Bi, Ci, and Ei. For example, an index to a lookup table is signaled. An example lookup table of combinations of (Bi, Ci) with values (3, 7), (3, 15), (3, 31), (7, 15), (7, 31), (15, 31) is tabulated in Table 3. index <![CDATA[(B i ,C i )]]> 0 (3,7) 1 (3,15) 2 (7,15) 3 (7,31) 4 (15,31) Table 3
[0102] As another example, for a parameter combination (Bi, Ci), the syntax changes may be tabulated as shown in Table 4 below. Table 4
[0103] In some embodiments, for each grammar A i , B i , C i and E iIn some embodiments, for A i , B i , C i and E i Each or a selected one of the signals a flag to indicate whether to use a default value (eg, if not using a default value, then signaling a parameter value).
[0104] As a target of A i As an example of signaling a flag using multiple hypotheses, the syntax changes can be tabulated as shown in Table 5. Table 5
[0105] As another example of signaling a separate flag for each hypothesis of parameter Ai, the syntax changes may be tabulated as shown in Table 6. Table 6
[0106] In some embodiments of signaling parameter values, a first subset of parameter values is signaled individually for each hypothesis, and a second subset of parameter values is signaled once for each hypothesis and shared. For example, a parameter value for Ai is signaled individually for each hypothesis, and one value is signaled for other parameters (e.g., Bi, Ci, or Ei) and shared for each parameter from multiple hypotheses.
[0107] In some embodiments, for multi-hypothesis probability estimation, the parameters for each hypothesis satisfy the above conditions, and the parameters for each hypothesis are signaled as indicated in any one of Tables 1 to 6 above.
[0108] although Figure 5A and Figure 5B The various logical stages are illustrated in a particular order, but stages that are not order dependent may be reordered, and other stages may be combined or split. Certain reordering or other groupings not specifically mentioned are obvious to one of ordinary skill in the art, and thus the ordering and groupings presented herein are not exhaustive. Furthermore, it should be appreciated that the various stages may be implemented in hardware, firmware, software, or any combination thereof. Methods 500 and 550 are applicable to both multi-symbol arithmetic coding and binary (M equals 2) arithmetic coding.
[0109] We now turn to some example embodiments.
[0110] (A1) In one aspect, some embodiments include a method of video decoding (e.g., method 550). In some embodiments, the method is performed in a computing system (e.g., server system 112) including a memory and a control circuit. In some embodiments, the method is performed in an encoding module (e.g., encoding module 320). In some embodiments, the method is performed at a parser (e.g., parser 254). The method includes: (i) receiving video data including a plurality of blocks from a video bitstream; (ii) obtaining corresponding values of one or more parameters associated with a block in the plurality of blocks from the video bitstream, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values of the one or more parameters are determined according to a set of predefined values; (iii) calculating an arithmetic encoder probability update rate based on corresponding values of one or more parameters signaled in the video bitstream; (iv) determining one or more encoding contexts based on the calculated arithmetic encoder probability update rate; and (v) decoding the block in the plurality of blocks based on the one or more encoding contexts. In some embodiments, the method includes parsing the video data using the arithmetic encoder probability update rate and corresponding values of the one or more parameters.
[0111] (A2) In some embodiments of A1, the values of one or more parameters are obtained from a high-level syntax in the video bitstream. For example, the high-level syntax corresponds to a sequence level, a frame level, a slice level, or a tile level. In some embodiments, the high-level syntax is higher than the block level. For example, the high-level syntax may include a VPS, an SPS, a PPS, an APS, a slice header, a picture header, a tile header, and / or a CTU header.
[0112] (A3) In some embodiments of A1 or A2, the corresponding values of the one or more parameters are selected by an encoder component (e.g., identified during the encoding process).
[0113] (A4) In some embodiments of any of A1-A3, the one or more parameters include an offset parameter, and the predefined value of the offset parameter is in the range of 0 to 8. For example, 3 bits are used for the predefined value of the offset parameter. For example, the predefined value of parameter a may include a number in the range of 0-8.
[0114] (A5) In some embodiments of any of A1-A4, the one or more parameters include two or more counting parameters, and the predefined values of the two or more counting parameters are in the range of 0 to 128. For example, 7 bits are used for the predefined values of the two or more counting parameters. For example, the predefined values of parameters B and C may include numbers in the range of 0-128.
[0115] (A6) In some embodiments of A5, the two or more counting parameters include a first parameter and a second parameter, and the corresponding value of the first parameter needs to be less than the corresponding value of the second parameter. For example, parameter B needs to be less than parameter C. For example, possible combinations of (B, C) include (3, 7), (3, 15), (3, 31), (7, 15), (7, 31), (15, 31). In some embodiments, the predefined value includes 2 n-1 The values given, where n is in the range of zero to the number of bits specified for signaling the parameter value. In some cases, using these predefined values has hardware advantages (e.g., using shift operations instead of other more complex operations).
[0116] (A7) In some embodiments of A5 or A6, a difference between the two or more counting parameters is signaled via the video bitstream. For example, a corresponding value of a first counting parameter is signaled together with a difference (e.g., instead of signaling the respective values of the second counting parameter). For example, a delta value between B and C (e.g., CB) is signaled.
[0117] (A8) In some embodiments of any of A1-A7, the one or more parameters include a grammar size parameter, and the predefined value of the grammar size parameter is in the range of 0 to 4. For example, 2 bits are used for the predefined value of the grammar size parameter. For example, the predefined value of parameter E may include a number in the range of 0-4.
[0118] (A9) In some embodiments of any of A1-A8, obtaining the corresponding values of one or more parameters includes obtaining a binary representation of the corresponding values. For example, a binary representation of the values of A, B, C, and E is represented by a signal.
[0119] (A10) In some embodiments of any of A1-A9, obtaining corresponding values of one or more parameters includes, for each hypothesis in two or more hypotheses, obtaining corresponding values of a particular hypothesis of the one or more parameters. In some embodiments, the corresponding value of each parameter is signaled for each hypothesis. For example, each hypothesis in a multiple hypothesis coding engine may use different values for one or more parameters.
[0120] (A11) In some embodiments of any of A1-A10, obtaining the corresponding values of the one or more parameters includes obtaining an index to a lookup table from the video bitstream. In some embodiments, the lookup table is defined by possible combinations of values of the one or more parameters. For example, the index to the lookup table is signaled.
[0121] (A12) In some embodiments of any one of A1-A11, a corresponding default value is specified for each of the one or more parameters, and a flag in the video bitstream indicates whether the corresponding default value is used for a first parameter of the one or more parameters. The method also includes: (i) assigning the corresponding default value to the first parameter according to the flag having a first value; and (ii) obtaining the corresponding value of the first parameter from the video bitstream according to the flag having a second value. For example, default values of A, B, C, and E are defined for each syntax. In this example, a flag is sent in the bitstream for each or a subset of A, B, C, and E to indicate whether the default value is used. Otherwise, in this example, these values are signaled in the bitstream.
[0122] (A13) In some embodiments of A12, a different flag is sent for each of the two or more hypotheses. For example, a separate flag is sent for each hypothesis of parameter A.
[0123] (A14) In some embodiments of any of A1-A13: (i) obtaining the corresponding values of the one or more parameters includes obtaining a first value of a first parameter of the one or more parameters and obtaining a second value of a second parameter of the one or more parameters; (ii) calculating the arithmetic coder probability update rate includes using the first value of the first parameter and the second value of the second parameter to calculate the arithmetic coder probability update rate according to a first hypothesis; and (iii) the method also includes using the first value of the first parameter and the third value of the second parameter to calculate a second arithmetic coder probability update rate according to a second hypothesis. For example, when signaling parameter values, for selected parameters, parameter values are sent separately for each hypothesis, and for the remaining parameters, parameter values are signaled once and shared by each hypothesis. For example, for each hypothesis, the parameter value of A is signaled separately, however, for other parameters (e.g., B, C, and / or E), for each parameter from multiple hypotheses, a value is signaled and shared.
[0124] (A15) In some embodiments of any of A1-A14, the video bitstream corresponds to a video encoded according to any of B1-A13 below. In some embodiments, the compressor uses past inputs to estimate the probability distribution (prediction) of the next symbol. The compressor can pass the prediction and the symbol to the arithmetic encoder and update the model with the encoded symbol. The decompressor can make the same prediction using the data it has decoded, decode the symbol, and then update its model with the decoded output symbol. In this way, the model may not know whether it is compressing or decompressing. In some embodiments, the update rate is initially fast and decreases as the count increases, for example, resulting in a stable model. In some embodiments, the count is bounded, for example, resulting in an adaptive model.
[0125] (B1) In another aspect, some embodiments include a method of video encoding (e.g., method 500). In some embodiments, the method is performed at a computing system (e.g., server system 112) having a memory and a control circuit. In some embodiments, the method is performed at an encoding module (e.g., encoding module 320). In some embodiments, the method is performed at an entropy encoder (e.g., entropy encoder 214). The method includes: (i) obtaining video data including a plurality of blocks; (ii) selecting corresponding values for one or more parameters, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values for the one or more parameters are selected from a set of predefined values; and (iii) encoding the video data using the arithmetic encoder probability update rate and the corresponding values for the one or more parameters. .
[0126] (B2) In some embodiments of B1, the values of one or more parameters are signaled in a high-level syntax.
[0127] (B3) In some embodiments of B1 or B2, corresponding values of one or more parameters are selected by an encoder component (eg, encoder 106).
[0128] (B4) In some embodiments of any one of B1-B3, the one or more parameters include an offset parameter, and wherein the predefined value of the offset parameter is in the range of 0 to 8.
[0129] (B5) In some embodiments of any one of B1-B4, the one or more parameters include two or more counting parameters, and the predefined values of the two or more counting parameters are in the range of 0 to 128.
[0130] (B6) In some embodiments of B5, the two or more counting parameters include a first parameter and a second parameter, and the corresponding value of the first parameter needs to be smaller than the corresponding value of the second parameter.
[0131] (B7) In some embodiments of B5 or B6, a difference between two or more counting parameters is signaled in the video bitstream.
[0132] (B8) In some embodiments of any one of B1-B7, the one or more parameters include a grammar size parameter, and the predefined value of the grammar size parameter is in the range of 0 to 4.
[0133] (B9) In some embodiments of any one of B1-B8, obtaining corresponding values of one or more parameters includes obtaining a binary representation of the corresponding values.
[0134] (B10) In some embodiments of any one of B1-B9, obtaining corresponding values of one or more parameters includes, for each hypothesis of two or more hypotheses, obtaining corresponding values of the one or more parameters for a particular hypothesis.
[0135] (B11) In some embodiments of any one of B1-B10, obtaining corresponding values of one or more parameters includes obtaining an index to a lookup table.
[0136] (B12) In some embodiments of any one of B1-B11, a corresponding default value is specified for each parameter in one or more parameters; and the method also includes: (i) setting a flag to specify whether to use the corresponding default value; (i) assigning the corresponding default value to the first parameter based on the flag having a first value; and (ii) obtaining the corresponding value of the first parameter based on the flag having a second value.
[0137] (B13) In some embodiments of B12, a different flag is sent for each of the two or more hypotheses.
[0138] The methods described herein can be used alone or in any order. Each method can be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In some embodiments, the processing circuit executes a program stored in a non-transient computer readable medium.
[0139] On the other hand, some embodiments include a computing system (e.g., server system 112) that includes a control circuit (e.g., control circuit 302) and a memory (e.g., memory 314) coupled to the control circuit, the memory storing one or more sets of instructions configured to be executed by the control circuit, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1 to A18 above).
[0140] On the other hand, some embodiments include a non-volatile computer-readable storage medium storing one or more sets of instructions for execution by control circuitry of a computing system, the one or more sets of instructions including instructions for performing any of the methods described herein (e.g., A1 to A15, and B1 to B13 above).
[0141] It will be understood that although the terms "first", "second", etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element.
[0142] The terms used herein are only for the purpose of describing specific embodiments and are not intended to limit the claims. As used in the description of the embodiments and the appended claims, the singular forms "a", "an", and "the" are also intended to include the plural forms, unless the context clearly indicates otherwise. It will also be understood that the term "and / or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that when used in this specification, the terms "comprises" and "comprising" indicate the presence of stated features, wholes, steps, operations, elements, and / or parts, but do not exclude the presence or addition of one or more other features, wholes, steps, operations, elements, parts, and / or groups thereof.
[0143] As used herein, the term "if" may be interpreted to mean "when" or "at the time of" or "in response to determining" or "upon determining" or "in response to detecting" the stated antecedent is true, depending on the context. Similarly, the phrase "if it is determined that [the stated antecedent is true]" or "if [the stated antecedent is true]" or "when [the stated antecedent is true]" may be interpreted to mean "at the time of determining" or "in response to determining" or "upon determining" or "upon detecting" or "in response to detecting" the stated antecedent is true, depending on the context.
[0144] For purposes of explanation, the foregoing description has been described with reference to specific embodiments. However, the above illustrative discussion is not intended to be exhaustive or to limit the claims to the precise forms disclosed. In view of the above teachings, many modifications and variations are possible. The embodiments are selected and described in order to best explain the operating principles and practical applications so that others skilled in the art can understand.
Claims
1. A method for video decoding, executed in a computing system, the computing system comprising a memory and one or more processors, characterized in that: The method comprises: receiving video data including a plurality of blocks from a video stream; obtaining, from the video bitstream, corresponding values of one or more parameters associated with a block of the plurality of blocks, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values of the one or more parameters are determined according to a set of predefined values; Calculating the arithmetic encoder probability update rate based on respective values of the one or more parameters signaled in the video stream; determining one or more coding contexts based on the calculated arithmetic encoder probability update rate; and The block of the plurality of blocks is decoded based on the one or more encoding contexts.
2. The method according to claim 1, characterized in that The corresponding values of the one or more parameters are obtained from high-level syntax in the video code stream.
3. The method according to claim 1, characterized in that The respective values of the one or more parameters are selected by the encoder component.
4. The method according to claim 1, characterized in that: The one or more parameters include an offset parameter, and wherein the predefined value of the offset parameter is in the range of 0 to 8.
5. The method according to claim 1, characterized in that The one or more parameters include two or more counting parameters, and wherein the predefined values of the two or more counting parameters are in the range of 0 to 128.
6. The method according to claim 5, characterized in that The two or more counting parameters include a first parameter and a second parameter, and wherein a corresponding value of the first parameter needs to be smaller than a corresponding value of the second parameter.
7. The method according to claim 5, characterized in that A difference between the two or more counting parameters is signaled via the video stream.
8. The method according to claim 1, characterized in that The one or more parameters include a grammar size parameter, and wherein a predefined value of the grammar size parameter is in the range of 0 to 4.
9. The method according to claim 1, characterized in that: Obtaining the corresponding value of the one or more parameters includes obtaining a binary representation of the corresponding value.
10. The method according to claim 1, characterized in that Obtaining corresponding values of the one or more parameters includes: For each of the two or more hypotheses, a corresponding value of the particular hypothesis of the one or more parameters is obtained.
11. The method according to claim 1, characterized in that: Obtaining corresponding values of the one or more parameters includes obtaining an index to a lookup table from the video bitstream.
12. The method according to claim 1, characterized in that Specifying a corresponding default value for each of the one or more parameters, and wherein a flag in the video bitstream indicates whether the corresponding default value is used for a first parameter of the one or more parameters; and The method further comprises: assigning the corresponding default value to the first parameter in response to the flag having a first value; as well as According to the flag having the second value, a corresponding value of the first parameter is obtained from the video code stream.
13. The method according to claim 12, characterized in that A different flag is signaled for each of the two or more hypotheses.
14. The method according to claim 1, characterized in that: Obtaining corresponding values of the one or more parameters comprises obtaining a first value of a first parameter of the one or more parameters and obtaining a second value of a second parameter of the one or more parameters; Calculating the arithmetic coder probability update rate comprises calculating the arithmetic coder probability update rate according to a first hypothesis using the first value of the first parameter and the second value of the second parameter; and The method further comprises calculating a second arithmetic encoder probability update rate according to a second hypothesis using the first value of the first parameter and a third value of the second parameter.
15. A computing system comprising: Control circuit; Memory; as well as One or more sets of instructions stored in the memory and configured to be executed by the control circuitry, the one or more sets of instructions comprising instructions for: receiving video data including a plurality of blocks from a video stream; obtaining, from the video bitstream, corresponding values of one or more parameters associated with a block of the plurality of blocks, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values of the one or more parameters are determined according to a set of predefined values; Calculating the arithmetic encoder probability update rate based on respective values of the one or more parameters signaled in the video stream; determining one or more coding contexts based on the calculated arithmetic encoder probability update rate; as well as The block of the plurality of blocks is decoded based on the one or more encoding contexts.
16. The computing system of claim 15, wherein: The corresponding values of the one or more parameters are obtained from high-level syntax in the video code stream.
17. The computing system of claim 15, wherein: Obtaining corresponding values of the one or more parameters includes obtaining an index to a lookup table from the video bitstream.
18. A non-volatile computer-readable storage medium storing one or more sets of instructions configured to be executed by a computing device having control circuitry and memory, the one or more sets of instructions comprising instructions for: receiving video data including a plurality of blocks from a video stream; obtaining, from the video bitstream, corresponding values of one or more parameters associated with a block of the plurality of blocks, the one or more parameters corresponding to an arithmetic encoder probability update rate, wherein the corresponding values of the one or more parameters are determined according to a set of predefined values; Calculating the arithmetic encoder probability update rate based on respective values of the one or more parameters signaled in the video stream; determining one or more coding contexts based on the calculated arithmetic encoder probability update rate; as well as The block of the plurality of blocks is decoded based on the one or more encoding contexts.
19. The non-volatile computer-readable storage medium of claim 18, wherein: The corresponding values of the one or more parameters are obtained from high-level syntax in the video code stream.
20. The non-volatile computer readable storage medium of claim 18, wherein: Obtaining corresponding values of the one or more parameters includes obtaining an index to a lookup table from the video bitstream.