Esempio n. 1
0
 public MicroString(EncodedFlow encFlow, ValueFlowCoder vfc)
 {
     _encFlow = encFlow;
     _targets = encFlow.Targets;
     _vfc     = vfc;
     if (_encFlow.NumSymbols == 0)
     {
         SelWidth = 0;
     }
     else
     {
         SelWidth = MathExt.CeilLog2(_encFlow.NumSymbols);
     }
 }
Esempio n. 2
0
        public MergedFlow(EncodedFlow encFlow0, EncodedFlow encFlow1)
        {
            Debug.Assert(encFlow0.NumSymbols > 1);
            Debug.Assert(encFlow1.NumSymbols > 1);

            _encFlow0 = encFlow0;
            _encFlow1 = encFlow1;
            Targets   = encFlow0.Targets.Concat(encFlow1.Targets).ToArray();

            int[] encMap0, encMap1;
            EncodedSymbols = MicrocodeAlgorithms.EncodeTogether(
                encFlow0.EncodedSymbols, encFlow0.NumSymbols,
                encFlow1.EncodedSymbols, encFlow1.NumSymbols,
                out encMap0, out encMap1);
            _encMap0 = encMap0;
            _encMap1 = encMap1;

            NumSymbols = _encMap0.Length;
            Score      = MathExt.CeilLog2(encFlow0.NumSymbols) +
                         MathExt.CeilLog2(encFlow1.NumSymbols) -
                         Math.Log(NumSymbols, 2.0);
        }
Esempio n. 3
0
 public MicroString(EncodedFlow encFlow, ValueFlowCoder vfc)
 {
     _encFlow = encFlow;
     _targets = encFlow.Targets;
     _vfc = vfc;
     if (_encFlow.NumSymbols == 0)
         SelWidth = 0;
     else
         SelWidth = MathExt.CeilLog2(_encFlow.NumSymbols);
 }
Esempio n. 4
0
        public MergedFlow(EncodedFlow encFlow0, EncodedFlow encFlow1)
        {
            Debug.Assert(encFlow0.NumSymbols > 1);
            Debug.Assert(encFlow1.NumSymbols > 1);

            _encFlow0 = encFlow0;
            _encFlow1 = encFlow1;
            Targets = encFlow0.Targets.Concat(encFlow1.Targets).ToArray();

            int[] encMap0, encMap1;
            EncodedSymbols = MicrocodeAlgorithms.EncodeTogether(
                encFlow0.EncodedSymbols, encFlow0.NumSymbols,
                encFlow1.EncodedSymbols, encFlow1.NumSymbols,
                out encMap0, out encMap1);
            _encMap0 = encMap0;
            _encMap1 = encMap1;

            NumSymbols = _encMap0.Length;
            Score = MathExt.CeilLog2(encFlow0.NumSymbols) +
                MathExt.CeilLog2(encFlow1.NumSymbols) -
                Math.Log(NumSymbols, 2.0);
        }