Esempio n. 1
0
 /// <summary>
 ///  Renormalizes the working state by outputting the LSB into
 ///  the ANS bitstream.
 /// </summary>
 /// <param name="symbol">Current working symbol.</param>
 /// <param name="output">Output ANS bitstream.</param>
 /// <param name="state">Working state.</param>
 public void EncodeRenormalizeState(int symbol, BitStreamIO.Writer output, ref int state)
 {
     while (state >= (Config.FrequencyCounts[symbol] << 1))
     {
         output.PutBit((state & 1));
         state >>= 1;
     }
 }
Esempio n. 2
0
        /// <summary>
        ///  Encodes a list of bytes into metadata and bitstream.
        /// </summary>
        /// <param name="input">Input byte list</param>
        public BitStream EncodeANSBitStream(List <byte> input)
        {
            var Input  = new SymbolStreamIO.Reader(input);
            var Output = new BitStreamIO.Writer();
            int state  = Config.TotalFrequencyCounts;
            int symbol;

            while (Input.HasData())
            {
                symbol = Input.GetSymbol();
                EncodeRenormalizeState(symbol, Output, ref state);
                EncodeSymbol(symbol, ref state);
            }
            Output.Terminate(input.Count, state);
            return(Output.BitStream);
        }