US11336892B2 - Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) - Google Patents
Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) Download PDFInfo
- Publication number
- US11336892B2 US11336892B2 US16/923,908 US202016923908A US11336892B2 US 11336892 B2 US11336892 B2 US 11336892B2 US 202016923908 A US202016923908 A US 202016923908A US 11336892 B2 US11336892 B2 US 11336892B2
- Authority
- US
- United States
- Prior art keywords
- new
- probability
- weight
- counter
- context
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
Definitions
- the disclosed embodiments relate to video coding in general and MCABAC in particular.
- a first aspect relates to a method comprising obtaining a first weight for a first probability associated with a first probability update window; obtaining a second weight for a second probability associated with a second probability update window, wherein the first weight and the second weight are unequal; and coding, using the first weight and the second weight, a portion of a video.
- the method provides for the ability to model bin strings with more emphasis on P 0 new or on P 1 new .
- an overall probability is based on the first weight, the first probability, the second weight, and the second probability.
- the overall probability is equal to 1.
- the first weight is ⁇ 0
- the first probability is P 0 new
- the second weight is ⁇ 1
- the first probability update window is shorter than the second probability update window and used for quickly-changing data, and wherein the second probability update window is used for slowly-changing data.
- At least one of the first weight or the second weight is predefined.
- a sum of the first weight and the second weight is 1.
- the coding is encoding.
- the method further comprises signaling at least one of the first weight or the second weight in a bitstream.
- the signaling is based on an equal distribution.
- the signaling is based on an unequal distribution.
- the signaling is in a sequence parameter set.
- the method further comprises deriving at least one of the first weight and the second weight.
- the deriving is based on a first counter for the first probability, a second counter for the second probability, and a comparison of the first counter and the second counter.
- the coding is decoding.
- the method further comprises receiving a code indicating at least one of the first weight or the second weight in a bitstream.
- the code is based on an equal distribution.
- the code is based on an unequal distribution.
- the code is in a sequence parameter set.
- the code is in a picture parameter set.
- the method further comprises deriving at least one of the first weight and the second weight.
- the deriving is based on a first counter for the first probability, a second counter for the second probability, and a comparison of the first counter and the second counter.
- a second aspect relates to an apparatus comprising a memory; and a processor coupled to the memory and configured to perform any of the first aspect as such or any preceding implementation form of the first aspect.
- a third aspect relates to a computer program product comprising computer-executable instructions stored on a non-transitory medium that when executed by a processor cause an apparatus to perform any of the first aspect as such or any preceding implementation form of the first aspect.
- Embodiments can be implemented in hardware, software, or in any combination of hardware and software.
- FIG. 1 is a schematic diagram of a coding system.
- FIG. 2 is a block diagram of a simplified CABAC encoder.
- FIG. 3A is SPS syntax according to an embodiment of the disclosure
- FIG. 3B is PPS syntax according to an embodiment of the disclosure.
- FIG. 4A is SPS syntax according to another embodiment of the disclosure.
- FIG. 4B is PPS syntax according to another embodiment of the disclosure.
- FIG. 5 is a flowchart illustrating a method of deriving a weight according to an embodiment of the disclosure.
- FIG. 6 is a flowchart illustrating a method of coding a portion of a video according to an embodiment of the disclosure.
- FIG. 7 is a schematic diagram of an apparatus according to an embodiment of the disclosure.
- ASIC application-specific integrated circuit
- CABAC context-adaptive binary arithmetic coding
- CPU central processing unit
- DSP digital signal processor
- FPGA field-programmable gate array
- GOP group of pictures
- NAL network abstraction layer
- RAM random-access memory
- ROM read-only memory
- TCAM ternary content-addressable memory
- TX transmitter unit.
- FIG. 1 is a schematic diagram of a coding system 100 .
- the coding system 100 comprises a source device 110 , a medium 150 , and a destination device 160 .
- the source device 110 and the destination device 160 are mobile phones, tablet computers, desktop computers, notebook computers, or other devices.
- the medium 150 is a local network, a radio network, the Internet, or another communications medium.
- the source device 110 comprises a video generator 120 , an encoder 130 , and an output interface 140 .
- the video generator 120 is a camera or another device that generates videos.
- the encoder 130 may be referred to as a codec.
- the encoder 130 encodes the videos and other data into bitstreams according to a set of rules.
- the output interface 140 is an antenna or another component that transmits the bitstreams to the destination device 160 .
- the video generator 120 , the encoder 130 , and the output interface 140 are in a combination of devices.
- the destination device 160 comprises an input interface 170 , a decoder 180 , and a display 190 .
- the input interface 170 is an antenna or another component that receives the bitstreams from the source device 110 .
- the decoder 180 may also be referred to as a codec.
- the decoder 180 decodes the videos and other data from the bitstreams according to the set of rules. Together, encoding and decoding are referred to as coding.
- the display 190 displays the videos for a user to view.
- the input interface 170 , the decoder 180 , and the display 190 are in a combination of devices.
- the encoder 130 may encode videos using lossless coding to obtain encoded videos.
- Lossless coding is coding that allows the decoder 180 to then perfectly decode the encoded videos to obtain the original videos.
- One type of lossless coding is entropy coding, which represents frequently-occurring patterns with relatively fewer bits and rarely-occurring patterns with relatively more bits.
- CABAC is a type of entropy coding based on arithmetic coding.
- FIG. 2 is a block diagram of a simplified CABAC encoder 200 .
- the simplified CABAC encoder 200 implements the encoder 130 .
- the simplified CABAC encoder 200 comprises a binarizer 210 , a context modeler 220 , and a coding engine 230 .
- the binarizer 210 receives symbols of syntax elements, applies a binarization scheme to the symbols to obtain bin strings, and provides the bin strings to the context modeler 220 .
- the syntax elements describe how the decoder 180 can reconstruct videos.
- the syntax elements include, for instance, MVDs and related data.
- the context modeler 220 receives the bin strings, compares bits in probability update windows of the bin strings to context models, and updates the context models based on the comparison.
- a probability update window or simply a window, is a specified number of bits in a bin string.
- Each syntax element may have its own context model.
- the context modeler 220 compares what an old probability, P old , predicts a predicted value of a bit should be to what the actual value of the bit is.
- the context modeler 220 updates P old to a new probability, P new after the comparison. If the predicted value and the actual value are different, then P old and P new are different; if the predicted value and the actual value are the same, then P old and P new are also the same. Together, P old , P new , and the rules for how to update P old to P new make up a context model.
- the context modeler 220 provides the bin strings and a final P new to the coding engine 230 .
- the coding engine 230 receives the bin strings and P new from the context modeler 220 and encodes the bits in the bin strings according to P new to obtain encoded bits. Finally, the coding engine 230 provides the encoded bits to the output interface 140 as a bitstream for transmission to the destination device 160 over the medium 150 . The decoder 180 then decodes the bitstream in an opposite manner.
- MCABAC uses two probability update windows instead of one. Specifically, W 0 is relatively shorter and used for quickly-changing data, and W 1 is relatively longer and used for slowly-changing data. W 0 is shorter than W 1 . W 0 and W 1 are associated with their own probabilities, P 0 and P 1 , respectively. P 0 and P 1 are represented as follows:
- P 0 new ⁇ P 0 old + [ ( 2 k - P 0 old ) ⁇ > > ⁇ M i ] ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 1 P 0 old - ( P 0 old ⁇ > > ⁇ M i ) ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 0 ( 1 )
- P 1 new ⁇ P 1 old + [ ( 2 k - P 1 old ) ⁇ > > ⁇ 8 ] ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 1 P 1 old - ( P 1 old ⁇ > > ⁇ 8 ) ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 0 .
- ( 2 ) k is an encoder precision in bits; >> is a symbol indicating a multiplication of 2 to the power of a succeeding amount, in this case 2 M i or 2 8 ; M i is a length of W 0 ; and a length of W 1 is 8. M i is variable, so the encoder 130 encodes it in the bitstream.
- An overall probability, P is equal to 1 and defined as follows:
- P is a normalized value.
- both P 0 new and P 1 new have a weight of 0.5.
- the embodiments provide for setting different lengths of W 0 and W 1 ; setting unequal weights for P 0 new and P 1 new ; and setting those weights differently for each context model, the same for sets of context models, or the same for all context models.
- the weights are predefined at an encoder and at a decoder, the encoder signals the weights, or both the encoder and the decoder derive the weights. While deriving the weights, the encoder and the decoder may adapt P 0 new and P 1 new .
- the embodiments provide for the ability to model bin strings with more emphasis on P 0 new or on P 1 new .
- equations (1) and (2) become the following:
- P 0 new ⁇ P 0 old + [ ( 2 k - P 0 old ) ⁇ > > ⁇ M s ] ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 1 P 0 old - ( P 0 old ⁇ > > ⁇ M s ) ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 0 ( 4 )
- P 1 new ⁇ P 1 old + [ ( 2 k - P 1 old ) ⁇ > > ⁇ M l ] ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 1 P 1 old - ( P 1 old ⁇ > > ⁇ M l ) ⁇ ⁇ if ⁇ ⁇ input ⁇ ⁇ is ⁇ ⁇ 0 .
- ⁇ 0 is a weight for P 0 new
- ⁇ 1 is a weight for P 1 new
- ⁇ 0 ⁇ 1 is normalized values.
- predefined may mean that N is set before the encoder 130 encodes, or the decoder 180 decodes, a bitstream based on N.
- ⁇ 0 > ⁇ 1 more emphasis is on P 0 new instead of on P 1 new .
- ⁇ 1 > ⁇ 0 more emphasis is on P 1 new instead of on P 0 new .
- ⁇ 0 is different for each context model, and ⁇ 1 is different for each context model.
- ⁇ 0 is the same for a set of context models, and ⁇ 1 is the same for a set of context models.
- ⁇ 0 is the same for all context models, and ⁇ 1 is the same for all context models.
- one technique is used for ⁇ 0 and another technique is used for ⁇ 1 .
- predefined may mean that ⁇ 0 and ⁇ 1 are set before the encoder 130 encodes, and the decoder 180 decodes, a bitstream based on ⁇ 0 and ⁇ 1 .
- ⁇ 0 and ⁇ 1 are set in a codec.
- the encoder 130 signals ⁇ 0 , ⁇ 1 , or both ⁇ 0 and ⁇ 1 in a bitstream. Though signaling of ⁇ 0 is described, the encoder 130 may similarly encode ⁇ 1 or both ⁇ 0 and ⁇ 1 .
- the decoder 180 looks up 011 in its lookup table and determines that ⁇ 0 is 3/8. The decoder 180 then subtracts 3/8 from 1 to determine that ⁇ 1 is 5/8. J may be variable.
- the encoder signals ⁇ 0 , ⁇ 1 , or both ⁇ 0 and ⁇ 1 in an SPS, a PPS, a slice header, or another high-level NAL unit.
- FIG. 3A is SPS syntax 310 according to an embodiment of the disclosure.
- the SPS syntax 310 comprises a CABAC weights present flag, cabac_weights_present_flag, which indicates that a value of ⁇ 0 should be initialized based on a predefined relationship.
- FIG. 3B is PPS syntax 320 according to an embodiment of the disclosure.
- the PPS syntax 320 comprises a CABAC weights present flag, cabac_weights_present_flag, which indicates that a value of ⁇ 0 should be initialized based on a predefined relationship.
- the SPS syntax 310 and the PPS syntax 320 comprise cabac_weights_present_flag in the locations shown
- the SPS syntax 310 and the PPS syntax 320 may comprise cabac_weights_present_flag in another suitable location.
- the predefined relationship may be a table such as Table 1 and may indicate a different value for each context model, a different value for each set of context models, or the same value for all context models.
- predefined may mean that ⁇ 0 is set before the encoder 130 encodes, or the decoder 180 decodes, a bitstream based on ⁇ 0 . For instance, ⁇ 0 may be hardcoded.
- FIG. 4A is SPS syntax 410 according to another embodiment of the disclosure.
- the SPS syntax 410 comprises a CABAC weights present flag, cabac_weights_present_flag, which indicates that a value of ⁇ 0 should be initialized based on a predefined relationship.
- FIG. 4B is PPS syntax 420 according to an embodiment of the disclosure.
- the PPS syntax 420 comprises a CABAC weights present flag, cabac_weights_present_flag, which indicates that a value of ⁇ 0 should be initialized based on a predefined relationship.
- the SPS syntax 410 and the PPS syntax 420 comprise cabac_weights_present_flag in the locations shown
- the SPS syntax 410 and the PPS syntax 420 may comprise cabac_weights_present_flag in another suitable location.
- the predefined relationship may be a table such as Table 1 and may indicate a different value for each context model, a different value for each set of context models, or the same value for all context models.
- predefined may mean that ⁇ 0 is set before the encoder 130 encodes, or the decoder 180 decodes, a bitstream based on ⁇ 0 . For instance, ⁇ 0 may be hardcoded.
- both the encoder 130 and the decoder 180 derive ⁇ 0 .
- the encoder 130 and the decoder 180 may do so using the same method. Though derivation of ⁇ 0 is described, the encoder 130 and the decoder 180 may similarly encode ⁇ 1 or both ⁇ 0 and ⁇ 1 .
- FIG. 5 is a flowchart illustrating a method 500 of deriving a weight according to an embodiment of the disclosure.
- the encoder 130 or the decoder 180 performs the method 500 .
- the encoder 130 or the decoder 180 initializes ⁇ 0 .
- the encoder 130 or the decoder 180 initializes ⁇ 0 at 0.5.
- the encoder 130 or the decoder 180 determines whether there is an LPS switch for P 0 new . For instance, if P 0 new predicts a predicted value of a bit should be 0 so that an LPS for the bit is 1, meaning the predicted value is not 1, and if the actual value of the bit is 0, then the predicted value is correct, there is no LPS switch, and the method 500 proceeds to decision diamond 520 . However, if P 0 new predicts a predicted value of a bit should be 0 so that an LPS for the bit is 1, meaning the predicted value is not 1, and if the actual value of the bit is 1, then the predicted value is incorrect, there is an LPS switch, and the method 500 proceeds to step 515 . At step 515 , the encoder 130 or the decoder 180 adds to C 0 , which is a counter for ⁇ 0 and its corresponding probability P 0 new .
- the encoder 130 or the decoder 180 determines whether there is an LPS switch for P 1 new . For instance, if P 1 new predicts a predicted value of a bit should be 0 so that an LPS for the bit is 1, meaning the predicted value is not 1, and if the actual value of the bit is 0, then the predicted value is correct, there is no LPS switch, and the method 500 proceeds to decision diamond 530 . However, if P 0 new predicts a predicted value of a bit should be 0 so that an LPS for the bit is 1, meaning the predicted value is not 1, and if the actual value of the bit is 1, then the predicted value is incorrect, there is an LPS switch, and the method 500 proceeds to step 525 . At step 525 , the encoder 130 or the decoder 180 adds to C 1 , which is a counter for ⁇ 1 and its corresponding probability P 1 new .
- the encoder 130 or the decoder 180 determines whether C 0 ⁇ C 1 . If not, then the method 500 proceeds to step 550 . If so, then the method 500 proceeds to step 545 .
- the encoder 130 or the decoder 180 decreases ⁇ 0 and returns to decision diamond 510 to analyze a subsequent bit.
- the encoder 130 or the decoder 180 increases ⁇ 0 and returns to decision diamond 510 to analyze a subsequent bit.
- the decrease at step 545 and the increase at step 550 are by a predefined increment, for instance 0.1. In this context, predefined means set before the encoder 130 or the decoder 180 performs the method 500 .
- the encoder 130 or the decoder 180 repeats the method 500 for each bit of a context entity such as a CU, a tile, a frame, or a GOP. By increasing or decreasing ⁇ 0 , ⁇ 1 , or both ⁇ 0 and ⁇ 1 while performing the method 600 , the encoder 130 or the decoder 180 adapts P 0 new and P 1 new .
- the encoder 130 or the decoder 180 determines ⁇ 0 , ⁇ 1 , or both ⁇ 0 and ⁇ 1 with any suitable precision using a shallow neural network.
- the precision may be variable.
- the encoder 130 signals ⁇ 0 , ⁇ 1 , or both ⁇ 0 and ⁇ 1 using an on/off flag combined with any of the three approaches above.
- the encoder 130 or the decoder 180 determines statistical behavior and selects from a lookup table ⁇ 0 , ⁇ 1 , or both ⁇ 0 and ⁇ 1 corresponding to the statistical behavior.
- FIG. 6 is a flowchart illustrating a method 600 of coding a portion of a video according to an embodiment of the disclosure.
- the encoder 130 or the decoder 180 performs the method 600 .
- a first weight for a first probability associated with a first probability update window is obtained.
- the encoder 130 or the decoder 180 obtains ⁇ 0 , ⁇ 0 is for P 0 new , and P 0 new is associated with K.
- a second weight for a second probability associated with a second probability update window is obtained.
- the encoder 130 or the decoder 180 obtains ⁇ 1 , ⁇ 1 is for P 1 new , and P 1 new is associated with W 1 .
- the first weight and the second weight are unequal.
- a portion of a video is coded using the first weight and the second weight. For instance, the encoder 130 encodes, or the decoder 180 decodes, a bin string using equations (4)-(6).
- an overall probability may be based on the first weight, the first probability, the second weight, and the second probability.
- the overall probability is as expressed in equation (6), (7), or (8).
- the overall probability may be equal to 1.
- the first weight may be ⁇ 0
- the first probability may be P 0 new
- the second weight may be ⁇ 1
- the second probability may be P 1 new .
- the overall probability may be as expressed in equation (6).
- the first probability update window may be shorter than the second probability update window and used for quickly-changing data
- the second probability update window may be used for slowly-changing data.
- the first probability update window is W 0 and the second probability update window is W 1 .
- At least one of the first weight or the second weight is predefined. A sum of the first weight and the second weight may be equal to 1.
- the method 600 may further comprise signaling at least one of the first weight or the second weight in a bitstream.
- the signaling may be based on an equal distribution.
- the signaling may be based on an unequal distribution. For instance, the signaling is based on either the equal distribution or the unequal distribution in Table 1.
- the signaling may be in a sequence parameter set.
- the signaling may be in a picture parameter set.
- the weights may be in a separate table.
- the method 600 may further comprise deriving at least one of the first weight and the second weight. For instance, the method 600 may further comprise the method 500 .
- the deriving may be based on a first counter for the first probability, a second counter for the second probability, and a comparison of the first counter and the second counter.
- the first counter is C 0
- the second counter is C 1
- the comparison is the decision diamond 530 , the decision diamond 540 , or both the decision diamond 530 and the decision diamond 540 .
- the method 600 may further comprise receiving a code indicating at least one of the first weight or the second weight in a bitstream.
- the code is one of the codes in Table 1.
- the code may be based on an equal distribution.
- the code may be based on an unequal distribution.
- the code is based on either the equal distribution or the unequal distribution in Table 1.
- the code may be in a sequence parameter set.
- the code may be in a picture parameter set.
- the method 600 may further comprise deriving at least one of the first weight and the second weight.
- the method 600 may further comprise the method 500 .
- the deriving is based on a first counter for the first probability, a second counter for the second probability, and a comparison of the first counter and the second counter.
- the first counter is C 0
- the second counter is C 1
- the comparison is the decision diamond 530 , the decision diamond 540 , or both the decision diamond 530 and the decision diamond 540 .
- An apparatus comprising a memory and a processor coupled to the memory may perform the method 500 .
- a computer program product comprising computer-executable instructions stored on a non-transitory medium that when executed by a processor may cause an apparatus to perform the method 500 .
- FIG. 7 is a schematic diagram of an apparatus 700 according to an embodiment of the disclosure.
- the apparatus 700 may implement the disclosed embodiments.
- the apparatus 700 comprises ingress ports 710 and an RX 720 to receive data; a processor, logic unit, baseband unit, or CPU 730 to process the data; a TX 740 and egress ports 750 to transmit the data; and a memory 760 to store the data.
- the apparatus 700 may also comprise OE components, EO components, or RF components coupled to the ingress ports 710 , the RX 720 , the TX 740 , and the egress ports 750 to provide ingress or egress of optical signals, electrical signals, or RF signals.
- the processor 730 is any combination of hardware, middleware, firmware, or software.
- the processor 730 comprises any combination of one or more CPU chips, cores, FPGAs, ASICs, or DSPs.
- the processor 730 communicates with the ingress ports 710 , the RX 720 , the TX 740 , the egress ports 750 , and the memory 760 .
- the processor 730 comprises an adaptive MCABAC component 770 , which implements the disclosed embodiments.
- the inclusion of the adaptive MCABAC component 770 therefore provides a substantial improvement to the functionality of the apparatus 700 and effects a transformation of the apparatus 700 to a different state.
- the memory 760 stores the motion adaptive MCABAC component 770 as instructions, and the processor 730 executes those instructions.
- the memory 760 comprises any combination of disks, tape drives, or solid-state drives.
- the apparatus 700 may use the memory 760 as an over-flow data storage device to store programs when the apparatus 700 selects those programs for execution and to store instructions and data that the apparatus 700 reads during execution of those programs.
- the memory 760 may be volatile or non-volatile and may be any combination of ROM, RAM, TCAM, or SRAM.
- An apparatus comprises a memory element; and a processor element coupled to the memory element and configured to perform the following method: obtaining a first weight for a first probability associated with a first probability update window; obtaining a second weight for a second probability associated with a second probability update window, wherein the first weight and the second weight are unequal; and coding, using the first weight and the second weight, a portion of a video.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Algebra (AREA)
- Evolutionary Biology (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Computational Biology (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
k is an encoder precision in bits; >> is a symbol indicating a multiplication of 2 to the power of a succeeding amount, in this case 2M
P is a normalized value. In equation (3), both P0 new and P1 new have a weight of 0.5. However, it may be desirable to model bin strings with more emphasis on P0 new or on P1 new. Thus, it may be desirable to assign different weights, not necessarily 0.5, to P0 new and P1 new. In addition, it may be desirable to adaptively change those weights.
For instance, Ms=4, and Mi=8.
P=α 0 P 0 new+α1 P 1 new. (6)
α0 is a weight for P0 new, α1 is a weight for P1 new, and α0≠α1. α0 and α1 are normalized values. When α0+α1=1, equation (6) becomes the following:
P=α 0 P 0 new+(1−α0)P 1 new. (7)
Alternatively, instead of equation (6), equation (3) becomes the following:
P=[α0 P 0 new+(2N−α0)P 1 new]>>N. (8)
N is a predefined integer. For instance, N=3. In this context, predefined may mean that N is set before the
TABLE 1 |
Values for α0. |
Code | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
| 0 | ⅛ | ¼ | ⅜ | ½ | ⅝ | ¾ | ⅞ |
| 0 | 1/32 | 1/16 | ¼ | ½ | ⅝ | ¾ | ⅞ |
Table 1 comprises both an equal distribution and an unequal distribution. The equal distribution comprises equally-spaced values for α0, and the unequal distribution comprises unequally-spaced values for α0. The
Claims (26)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/923,908 US11336892B2 (en) | 2018-01-12 | 2020-07-08 | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862617049P | 2018-01-12 | 2018-01-12 | |
PCT/US2019/013037 WO2019140083A1 (en) | 2018-01-12 | 2019-01-10 | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (mcabac) |
US16/923,908 US11336892B2 (en) | 2018-01-12 | 2020-07-08 | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2019/013037 Continuation WO2019140083A1 (en) | 2018-01-12 | 2019-01-10 | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (mcabac) |
Publications (2)
Publication Number | Publication Date |
---|---|
US20200344480A1 US20200344480A1 (en) | 2020-10-29 |
US11336892B2 true US11336892B2 (en) | 2022-05-17 |
Family
ID=65444322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/923,908 Active US11336892B2 (en) | 2018-01-12 | 2020-07-08 | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) |
Country Status (2)
Country | Link |
---|---|
US (1) | US11336892B2 (en) |
WO (1) | WO2019140083A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019140083A1 (en) * | 2018-01-12 | 2019-07-18 | Futurewei Technologies, Inc. | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (mcabac) |
US20230291905A1 (en) * | 2022-03-10 | 2023-09-14 | Tencent America LLC | Method and apparatus for adaptive multi-hypothesis probability model for arithmetic coding |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856701B2 (en) | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
US7932843B2 (en) | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
US20140064360A1 (en) * | 2012-08-31 | 2014-03-06 | Qualcomm Incorporated | Intra prediction improvements for scalable video coding |
US20140177708A1 (en) * | 2011-06-28 | 2014-06-26 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding/decoding |
US20160353110A1 (en) * | 2015-05-29 | 2016-12-01 | Qualcomm Incorporated | Advanced arithmetic coder |
US20170105013A1 (en) * | 2015-10-08 | 2017-04-13 | Sharp Laboratories Of America, Inc. | Systems and methods for reducing artifacts in temporal scalable layers of video |
US20180070100A1 (en) * | 2016-09-06 | 2018-03-08 | Qualcomm Incorporated | Geometry-based priority for the construction of candidate lists |
US20190068970A1 (en) * | 2017-08-29 | 2019-02-28 | Google Llc | Selective mixing for entropy coding in video compression |
US20190230350A1 (en) * | 2016-05-13 | 2019-07-25 | Vid Scale, Inc | Systems and methods for generalized multi-hypothesis prediction for video coding |
US20200344480A1 (en) * | 2018-01-12 | 2020-10-29 | Huawei Technologies Co., Ltd. | Adaptive Multi-Hypothesis Context-Adaptive Binary Arithmetic Coding (MCABAC) |
-
2019
- 2019-01-10 WO PCT/US2019/013037 patent/WO2019140083A1/en active Application Filing
-
2020
- 2020-07-08 US US16/923,908 patent/US11336892B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856701B2 (en) | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
US7932843B2 (en) | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
US20140177708A1 (en) * | 2011-06-28 | 2014-06-26 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding/decoding |
US20140064360A1 (en) * | 2012-08-31 | 2014-03-06 | Qualcomm Incorporated | Intra prediction improvements for scalable video coding |
US20160353110A1 (en) * | 2015-05-29 | 2016-12-01 | Qualcomm Incorporated | Advanced arithmetic coder |
US20170105013A1 (en) * | 2015-10-08 | 2017-04-13 | Sharp Laboratories Of America, Inc. | Systems and methods for reducing artifacts in temporal scalable layers of video |
US20190230350A1 (en) * | 2016-05-13 | 2019-07-25 | Vid Scale, Inc | Systems and methods for generalized multi-hypothesis prediction for video coding |
US20180070100A1 (en) * | 2016-09-06 | 2018-03-08 | Qualcomm Incorporated | Geometry-based priority for the construction of candidate lists |
US20190068970A1 (en) * | 2017-08-29 | 2019-02-28 | Google Llc | Selective mixing for entropy coding in video compression |
US20200344480A1 (en) * | 2018-01-12 | 2020-10-29 | Huawei Technologies Co., Ltd. | Adaptive Multi-Hypothesis Context-Adaptive Binary Arithmetic Coding (MCABAC) |
Non-Patent Citations (9)
Title |
---|
"Series H: Audiovisual and Multimedia Systems, Infastructure of audiovisual services—Coding of moving video, High efficiency video calling," ITU-T, H.265, Dec. 2016, 664 pages. |
ALSHIN ALEXANDER; ALSHINA ELENA; PARK JEONGHOON: "High precision probability estimation for CABAC", 2013 VISUAL COMMUNICATIONS AND IMAGE PROCESSING (VCIP), IEEE, 17 November 2013 (2013-11-17), pages 1 - 6, XP032543605, DOI: 10.1109/VCIP.2013.6706454 |
Alshin et al, High Precision Probability Estimation for CABAC (Year: 2013). * |
Alshin, A et al., Coding efficiency improvements beyond HEVC with known tools (Year: 2015). * |
Alshin, A., et al., "High precision probability estimation for CABAC," Visual Communications and Image Processing, XP032543605, Nov. 17, 2013, 6 pages. |
Bross, B., et al., "Versatile Video Coding (Draft 3)," JVET-L1001v5, 12th Meeting: Macao, CN, Oct. 3-12, 2018, 194 pages. |
Chen, J., et al., "Algorithm Description of Joint Exploration Test Model 7 (JEM 7)," JVET-G1001-v1, 7th Meeting TOrino, IT, Jul. 13-21, 2017, 50 pages. |
Marpe, D., "Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard," IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, No. 7, Jul. 2003, pp. 620-636. |
Sullivan, G., et al., "Overview of the High Efficiency Video Coding (HEVC) Standard," IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, No. 12, Dec. 2012, pp. 1649-1668. |
Also Published As
Publication number | Publication date |
---|---|
WO2019140083A1 (en) | 2019-07-18 |
US20200344480A1 (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11398058B2 (en) | Prediction type signaling and temporal order signaling in point cloud coding (PCC) | |
US11638034B2 (en) | Signaling of Matrix Intra Prediction parameters in video coding | |
CN106899379B (en) | Method and communication device for processing polarization code | |
Duhamel et al. | Joint source-channel decoding: A cross-layer perspective with applications in video broadcasting | |
CN111183647B (en) | Method, apparatus, and computer-readable medium for decoding video data | |
RU2426227C2 (en) | Encoding variable-length codes with efficient memory usage | |
US11336892B2 (en) | Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) | |
WO2018019044A1 (en) | Encoding method and device | |
CN110710211B (en) | Selection and signaling of motion vector precision (MV) | |
JP7369191B2 (en) | Canonical coded bin reduction for coefficient decoding using thresholds and Rician parameters | |
ES2878325T3 (en) | Binary arithmetic coding with parameterized probability estimation finite state machines | |
US20080224905A1 (en) | Data compression using variable-to-fixed length codes | |
CN101578871A (en) | Cavlc enhancements for svc cgs enhancement layer coding | |
US20210274182A1 (en) | Context-based binary arithmetic encoding and decoding | |
US20230208554A1 (en) | Encoding and Decoding Method and Apparatus | |
CN109565596A (en) | The method and apparatus of the binary symbol sequence of syntactic element relevant to video data are indicated for context adaptive binary arithmetic coding | |
US20080199088A1 (en) | Losslessly improving compression of compressed image data | |
US20180205952A1 (en) | Method and apparatus for performing arithmetic coding by limited carry operation | |
Nguyen et al. | Estimation of redundancy in compressed image and video data for joint source-channel decoding | |
US20220264135A1 (en) | Motion Model Signaling | |
WO2018228589A1 (en) | Encoding method, wireless device, and chip | |
US20240114140A1 (en) | Video decoding and encoding method, device and storage medium | |
US20050041877A1 (en) | Method for transmitting image or video data encoded using variable length codes and corresponding transmitter | |
WO2024079334A1 (en) | Video encoder and video decoder | |
WO2023154590A1 (en) | Entropy coding for neural-based media compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
AS | Assignment |
Owner name: HUAWEI TECHNOLOGIES CO., LTD., CHINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FUTUREWEI TECHNOLOGIES, INC.;REEL/FRAME:057759/0683 Effective date: 20190110 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |