US11336892B2 - Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) - Google Patents

Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) Download PDF

Info

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
Application number
US16/923,908
Other versions
US20200344480A1 (en
Inventor
Vladyslav ZAKHARCHENKO
Jianle Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to US16/923,908 priority Critical patent/US11336892B2/en
Publication of US20200344480A1 publication Critical patent/US20200344480A1/en
Assigned to HUAWEI TECHNOLOGIES CO., LTD. reassignment HUAWEI TECHNOLOGIES CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FUTUREWEI TECHNOLOGIES, INC.
Application granted granted Critical
Publication of US11336892B2 publication Critical patent/US11336892B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/18Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/184Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding 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

A method comprises 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.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This is a continuation of Int'l Patent App. No. PCT/US2019/013037 filed on Jan. 10, 2019 by Futurewei Technologies, Inc. and titled “Adaptive Multi-Hypothesis Context-Adaptive Binary Arithmetic Coding (MCABAC),” which claims priority to U.S. Prov. Patent App. No. 62/617,049 filed on Jan. 12, 2018 by Futurewei Technologies, Inc. and titled “Adaptive Multi-Hypothesis Context-Adaptive Binary Arithmetic Coding (MCABAC),” both of which are incorporated by reference.
TECHNICAL FIELD
The disclosed embodiments relate to video coding in general and MCABAC in particular.
BACKGROUND
Videos use a relatively large amount of data, so communication of videos uses a relatively large amount of bandwidth. However, many networks operate at or near their bandwidth capacities. In addition, customers demand high video quality, which requires using even more data. There is therefore a desire to both reduce the amount of data videos use and improve video quality. One solution is to compress videos during an encoding process and decompress the videos during a decoding process.
SUMMARY
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 P0 new or on P1 new.
In a first implementation form of the method according to the first aspect as such, an overall probability is based on the first weight, the first probability, the second weight, and the second probability.
In a second implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the overall probability is equal to 1.
In a third implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the first weight is α0, the first probability is P0 new, the second weight is α1, and the second probability is P1 new and wherein P=α0P0 new1P1 new.
In a fourth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, 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.
In a fifth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, at least one of the first weight or the second weight is predefined.
In a sixth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, a sum of the first weight and the second weight is 1.
In a seventh implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the coding is encoding.
In an eighth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the method further comprises signaling at least one of the first weight or the second weight in a bitstream.
In a ninth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the signaling is based on an equal distribution.
In a tenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the signaling is based on an unequal distribution.
In an eleventh implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the signaling is in a sequence parameter set.
In a twelfth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, wherein the signaling is in a picture parameter set.
In a thirteenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the method further comprises deriving at least one of the first weight and the second weight.
In a fourteenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, 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.
In a fifteenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the coding is decoding.
In a sixteenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the method further comprises receiving a code indicating at least one of the first weight or the second weight in a bitstream.
In a seventeenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the code is based on an equal distribution.
In an eighteenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the code is based on an unequal distribution.
In a nineteenth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the code is in a sequence parameter set.
In a twentieth implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the code is in a picture parameter set.
In a twenty-first implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, the method further comprises deriving at least one of the first weight and the second weight.
In a twenty-second implementation form of the method according to the first aspect as such or any preceding implementation form of the first aspect, 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.
Any of the above embodiments may be combined with any of the other above embodiments to create a new embodiment. These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
BRIEF DESCRIPTION OF THE DRAWINGS
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
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.
DETAILED DESCRIPTION
It should be understood at the outset that, although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
The following abbreviations apply:
ASIC: application-specific integrated circuit
CABAC: context-adaptive binary arithmetic coding
CPU: central processing unit
CU: coding unit
DSP: digital signal processor
EO: electrical-to-optical
FPGA: field-programmable gate array
GOP: group of pictures
LPS: least probable symbol
MCABAC: multi-hypothesis CABAC
MVD: motion vector difference
NAL: network abstraction layer
OE: optical-to-electrical
PPS: picture parameter set
RAM: random-access memory
RF: radio frequency
ROM: read-only memory
RX: receiver unit
SPS: sequence parameter set
SRAM: static RAM
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. Alternatively, 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. Alternatively, 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. For the comparison, the context modeler 220 compares what an old probability, Pold, predicts a predicted value of a bit should be to what the actual value of the bit is. The context modeler 220 updates Pold to a new probability, Pnew after the comparison. If the predicted value and the actual value are different, then Pold and Pnew are different; if the predicted value and the actual value are the same, then Pold and Pnew are also the same. Together, Pold, Pnew, and the rules for how to update Pold to Pnew make up a context model. The context modeler 220 provides the bin strings and a final Pnew to the coding engine 230.
The coding engine 230 receives the bin strings and Pnew from the context modeler 220 and encodes the bits in the bin strings according to Pnew 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, W0 is relatively shorter and used for quickly-changing data, and W1 is relatively longer and used for slowly-changing data. W0 is shorter than W1. W0 and W1 are associated with their own probabilities, P0 and P1, respectively. P0 and P1 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 2M i or 28; Mi is a length of W0; and a length of W1 is 8. Mi is variable, so the encoder 130 encodes it in the bitstream. An overall probability, P, is equal to 1 and defined as follows:
P = P 0 new + P 1 new 2 P = 0.5 P 0 new + 0.5 P 1 new . ( 3 )
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.
Disclosed herein are embodiments for adaptive MCABAC. The embodiments provide for setting different lengths of W0 and W1; setting unequal weights for P0 new and P1 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 P0 new and P1 new. The embodiments provide for the ability to model bin strings with more emphasis on P0 new or on P1 new.
First, instead of the encoder 130 signaling Mi for W0 and instead of setting a length of W1 to 8, a length Ms for short W0 and a length Ml for long W1 are set. Thus, 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 . ( 5 )
For instance, Ms=4, and Mi=8.
Second, instead of setting an equal weight of 0.5 for both P0 new and P1 new, unequal weights for P0 new and P1 new are set. Thus, equation (3) becomes the following:
P=α 0 P 0 new1 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 α01=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 encoder 130 encodes, or the decoder 180 decodes, a bitstream based on N. When α01, more emphasis is on P0 new instead of on P1 new. Similarly, when α10, more emphasis is on P1 new instead of on P0 new.
Third, α0 is different for each context model, and α1 is different for each context model. Alternatively, α0 is the same for a set of context models, and α1 is the same for a set of context models. Alternatively, α0 is the same for all context models, and α1 is the same for all context models. Alternatively, one technique is used for α0 and another technique is used for α1.
Fourth, α0 and α1 are determined using one of the following three approaches. By determining α0, α1 may also be determined when α01=1. Similarly, by determining α1, α0 may also be determined.
In a first approach for determining α0 and α1, α0 and α1 are predefined. In this context, 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. For instance, α0 and α1 are set in a codec.
In a second approach for determining α0 and α1, 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 encoder 130 signals α0 using j bits, where j is an integer. For instance, when j=3, the encoder 130 signals α0 as follows:
TABLE 1
Values for α0.
Code 000 001 010 011 100 101 110 111
Equal Distribution 0 ¼ ½ ¾
Unequal Distribution 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 encoder 130 and the decoder 180 may store Table 1, or the equal distribution portion or the unequal portion of Table 1, as a lookup table. As an example, if the encoder 130 signals 011 for α0, then 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. Though 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. In this context, 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. Though 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. In this context, 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.
In a third approach for determining α0 and α1, 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. At step 505, the encoder 130 or the decoder 180 initializes α0. For instance, the encoder 130 or the decoder 180 initializes α0 at 0.5.
At decision diamond 510, the encoder 130 or the decoder 180 determines whether there is an LPS switch for P0 new. For instance, if P0 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 P0 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 C0, which is a counter for α0 and its corresponding probability P0 new.
At decision diamond 520, the encoder 130 or the decoder 180 determines whether there is an LPS switch for P1 new. For instance, if P1 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 P0 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 C1, which is a counter for α1 and its corresponding probability P1 new.
At decision diamond 530, the encoder 130 or the decoder 180 determines whether C0=C1. If not, then the method 500 proceeds to decision diamond 540. If so, then the method proceeds to step 535. At step 535, the encoder 130 or the decoder 180 leaves α0 unchanged and returns to decision diamond 510 to analyze a subsequent bit.
At decision diamond 540, the encoder 130 or the decoder 180 determines whether C0<C1. If not, then the method 500 proceeds to step 550. If so, then the method 500 proceeds to step 545. At step 545, the encoder 130 or the decoder 180 decreases α0 and returns to decision diamond 510 to analyze a subsequent bit. At step 550, 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 P0 new and P1 new.
Alternatively, instead of one of the three approaches above, 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. Alternatively, the encoder 130 signals α0, α1, or both α0 and α1 using an on/off flag combined with any of the three approaches above. Alternatively, 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. At step 610, a first weight for a first probability associated with a first probability update window is obtained. For instance, the encoder 130 or the decoder 180 obtains α0, α0 is for P0 new, and P0 new is associated with K. At step 620, a second weight for a second probability associated with a second probability update window is obtained. For instance, the encoder 130 or the decoder 180 obtains α1, α1 is for P1 new, and P1 new is associated with W1. The first weight and the second weight are unequal. Finally, at step 630, 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).
In the method 600, an overall probability may be based on the first weight, the first probability, the second weight, and the second probability. For instance, 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 P0 new, the second weight may be α1, and the second probability may be P1 new. Specifically, 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, and the second probability update window may be used for slowly-changing data. For instance, the first probability update window is W0 and the second probability update window is W1. 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.
When the coding in the method 600 is encoding, 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. For instance, the first counter is C0, the second counter is C1, and the comparison is the decision diamond 530, the decision diamond 540, or both the decision diamond 530 and the decision diamond 540.
When the coding in the method 600 is decoding, the method 600 may further comprise receiving a code indicating at least one of the first weight or the second weight in a bitstream. For instance, 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. For instance, 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. For instance, 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. For instance, the first counter is C0, the second counter is C1, and 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. Alternatively, 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.
While several embodiments have been provided in the present disclosure, it may be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, components, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled may be directly coupled or may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.

Claims (26)

What is claimed is:
1. A method comprising:
obtaining a first weight α0 for a first probability P0 new associated with a first probability update window W0;
obtaining a second weight α1 for a second probability P1 new associated with a second probability update window W1, wherein α0 and α1 are non-binary and unequal, wherein P0 new and P1 new are based on a comparison of what an old probability predicts a predicted value of a bit should be to what an actual value of the bit is, and wherein W0 and W1 are specified numbers of bits in a bin string; and
coding, using α0, α1, and multi-hypothesis context-adaptive binary arithmetic coding (MCABAC), a portion of a video.
2. The method of claim 1, wherein an overall probability is based on α0, P0 new, α1 and P1 new.
3. The method of claim 2, wherein P=α0P0 new1P1 new, wherein P=1, and wherein the overall probability is P.
4. The method of claim 1, wherein W0 is shorter than W1 and used for quickly-changing data, and wherein W1 is used for slowly-changing data.
5. The method of claim 1, wherein at least one of α0 or α1 is predefined.
6. The method of claim 1, wherein a sum of α0 and α1 is 1.
7. The method of claim 1, wherein the coding is encoding.
8. The method of claim 7, further comprising signaling at least one of α0 or α1 in a bitstream.
9. The method of claim 8, wherein the signaling is based on an equal distribution.
10. The method of claim 8, wherein the signaling is based on an unequal distribution.
11. The method of claim 8, wherein the signaling is in a sequence parameter set or a picture parameter set.
12. The method of claim 7, further comprising deriving at least one of α0 or α1, wherein the deriving is based on a first counter for P0 new, a second counter P1 new, and a comparison of the first counter and the second counter.
13. The method of claim 1, wherein the coding is decoding.
14. The method of claim 13, further comprising receiving a code indicating at least one of α0 or α1 in a bitstream.
15. The method of claim 14, wherein the code is based on an equal distribution.
16. The method of claim 14, wherein the code is based on an unequal distribution.
17. The method of claim 14, wherein the code is in a sequence parameter set or a picture parameter set.
18. The method of claim 13, further comprising deriving at least one of α0 or α1, wherein the deriving is based on a first counter for P0 new, a second counter for P1 new, and a comparison of the first counter and the second counter.
19. An apparatus comprising:
a memory configured to store instructions; and
a processor coupled to the memory and configured to:
obtain a weight α0 for a first probability P0 new associated with a first probability update window W0;
obtain a second weight α1 for a second probability P1 new associated with a second probability update window W1, wherein α0 and α1 are non-binary and are unequal, wherein P0 new and P1 new are based on a comparison of what an old probability predicts a predicted value of a bit should be to what an actual value of the bit is, and wherein W0 and W1 are specified numbers of bits in a bin string; and
code, using α0, α1, and multi-hypothesis context-adaptive binary arithmetic coding (MCABAC), a portion of a video.
20. A computer program product comprising instructions stored on a non-transitory medium and that, when executed by a processor, cause an apparatus to:
obtain a first weight α0 for a first probability P0 new associated with a first probability update window W0;
obtain a second weight α1 for a second probability P1 new associated with a second probability update window W1, wherein α0 and α1 are non-binary and unequal, wherein P0 new and P1 new are based on a comparison of what an old probability predicts a predicted value of a bit should be to what an actual value of the bit is, and wherein W0 and W1 are specified numbers of bits in a bin string; and
code, using α0, α1, and multi-hypothesis context-adaptive binary arithmetic coding (MCABAC), a portion of a video.
21. The method of claim 1, further comprising adaptively changing α0 and α1.
22. The method of claim 1, further comprising:
setting a first length Ms for W0; and
setting a second length Ml for W1.
23. The method of claim 1, further comprising setting α0 and α1 differently for each context model.
24. The method of claim 1, further comprising setting α0 and α1 the same for each context model.
25. The method of claim 1, further comprising setting α0 and α1 the same for all context models.
26. The method of claim 1, further comprising further coding the portion using a context model specific to a syntax element to be coded.
US16/923,908 2018-01-12 2020-07-08 Adaptive multi-hypothesis context-adaptive binary arithmetic coding (MCABAC) Active US11336892B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

Patent Citations (10)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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