Ejemplo n.º 1
0
        internal int GetHuff(SimpleBitIO bitIO)
        {
            int iSymbol = m_pHuffman.m_hufDecTable[bitIO.PeekBit16(Constant.HUFFMAN_DECODE_ROOT_BITS)];

            if (iSymbol < 0)
            {
                bitIO.GetBit16(Constant.HUFFMAN_DECODE_ROOT_BITS);
            }
            else
            {
                bitIO.GetBit16((uint)(iSymbol & ((1 << Constant.HUFFMAN_DECODE_ROOT_BITS_LOG) - 1)));
            }

            int iSymbolHuff = iSymbol >> Constant.HUFFMAN_DECODE_ROOT_BITS_LOG;

            if (iSymbolHuff < 0)
            {
                iSymbolHuff = iSymbol;
                while ((iSymbolHuff = m_pHuffman.m_hufDecTable[iSymbolHuff + Constant.SIGN_BIT[2] + bitIO.GetBit16(1)]) < 0)
                {
                    ;
                }
            }
            return(iSymbolHuff);
        }
Ejemplo n.º 2
0
        /*************************************************************************
        *       Huffman decoding with short tables
        *************************************************************************/
        internal int GetHuffShort(SimpleBitIO bitIO)
        {
            int iSymbol = m_pHuffman.m_hufDecTable[bitIO.PeekBit16(Constant.HUFFMAN_DECODE_ROOT_BITS)];

            System.Diagnostics.Debug.Assert(iSymbol >= 0);

            bitIO.GetBit16((uint)(iSymbol & ((1 << (byte)Constant.HUFFMAN_DECODE_ROOT_BITS_LOG) - 1)));
            return(iSymbol >> Constant.HUFFMAN_DECODE_ROOT_BITS_LOG);
        }
        /*************************************************************************
            Huffman decoding with short tables
        *************************************************************************/
        internal int GetHuffShort(SimpleBitIO bitIO)
        {
            int iSymbol = m_pHuffman.m_hufDecTable[bitIO.PeekBit16(Constant.HUFFMAN_DECODE_ROOT_BITS)];
            Debug.Assert(iSymbol >= 0);

            bitIO.GetBit16((uint)(iSymbol & ((1 << Constant.HUFFMAN_DECODE_ROOT_BITS_LOG) - 1)));
            return iSymbol >> Constant.HUFFMAN_DECODE_ROOT_BITS_LOG;
        }
        internal int GetHuff(SimpleBitIO bitIO)
        {
            int iSymbol = m_pHuffman.m_hufDecTable[bitIO.PeekBit16(Constant.HUFFMAN_DECODE_ROOT_BITS)];

            if (iSymbol < 0)
            {
                bitIO.GetBit16(Constant.HUFFMAN_DECODE_ROOT_BITS);
            }
            else
            {
                bitIO.GetBit16((uint)(iSymbol & ((1 << Constant.HUFFMAN_DECODE_ROOT_BITS_LOG) - 1)));
            }

            var iSymbolHuff = iSymbol >> Constant.HUFFMAN_DECODE_ROOT_BITS_LOG;

            if (iSymbolHuff < 0)
            {
                iSymbolHuff = iSymbol;
                while ((iSymbolHuff = m_pHuffman.m_hufDecTable[iSymbolHuff + Constant.SIGN_BIT[2] + bitIO.GetBit16(1)]) < 0)
                {
                }
            }
            return iSymbolHuff;
        }