Esempio n. 1
0
        protected void ReadNode(BitStream bs, HuffmanNode node)
        {
            int flag = bs.ReadBit();

            if (flag == 0)
            {
                /* it's a leaf */
                ReadValue(bs, node);
            }
            else
            {
                /* it's a node */
                node.branch_0 = new HuffmanNode();
                ReadNode(bs, node.branch_0);
                node.branch_1 = new HuffmanNode();
                ReadNode(bs, node.branch_1);
            }
        }
Esempio n. 2
0
		protected void Read (BitStream bs)
		{
			root = new HuffmanNode ();
			ReadNode (bs, Root);
		}
Esempio n. 3
0
		protected virtual void ReadValue (BitStream bs, HuffmanNode node)
		{
			node.value = (uint)bs.ReadByte();
		}
Esempio n. 4
0
			public void Reset ()
			{
				currentNode = tree.Root;
			}
Esempio n. 5
0
			public void ProcessBit (BitStream bs)
			{
				currentNode = bs.ReadBit() == 0 ? currentNode.branch_0 : currentNode.branch_1;
				if (currentNode == null)
					throw new Exception ("can't advance to child nodes from a leaf node");
			}
Esempio n. 6
0
			public HuffIter (HuffmanTree tree)
			{
				this.tree = tree;
				this.currentNode = tree.Root;
			}
Esempio n. 7
0
		public override uint ReturnNodeValue (HuffmanNode node)
		{
			if (node.value == -1) {
				/* it's a marker */
				throw new Exception ();
			}
			else
				return (uint)node.value;
		}
Esempio n. 8
0
		protected override void ReadValue (BitStream bs, HuffmanNode node)
		{
			uint value = DecodeValue (bs);

			Console.WriteLine ("Read Value {0:x}", value);

			if (value == markers[0]) {
				Console.WriteLine ("found marker1");
				shortest[0] = node;
				node.value = -1;
			}
			else if (value == markers[1]) {
				Console.WriteLine ("found marker2");
				shortest[1] = node;
				node.value = -1;
			}
			else if (value == markers[2]) {
				Console.WriteLine ("found marker3");
				shortest[2] = node;
				node.value = -1;
			}
			else 
				node.value = value;
		}
Esempio n. 9
0
		public virtual uint ReturnNodeValue (HuffmanNode node)
		{
			return (uint)node.value;
		}
Esempio n. 10
0
		protected void ReadNode (BitStream bs, HuffmanNode node)
		{
			int flag = bs.ReadBit();
			if (flag == 0) {
				/* it's a leaf */
				ReadValue (bs, node);
			}
			else {
				/* it's a node */
				node.branch_0 = new HuffmanNode ();
				ReadNode (bs, node.branch_0);
				node.branch_1 = new HuffmanNode ();
				ReadNode (bs, node.branch_1);
			}
		}
Esempio n. 11
0
 public virtual uint ReturnNodeValue(HuffmanNode node)
 {
     return((uint)node.value);
 }
Esempio n. 12
0
 protected void Read(BitStream bs)
 {
     root = new HuffmanNode();
     ReadNode(bs, Root);
 }
Esempio n. 13
0
 protected virtual void ReadValue(BitStream bs, HuffmanNode node)
 {
     node.value = (uint)bs.ReadByte();
 }
Esempio n. 14
0
 public void Reset()
 {
     currentNode = tree.Root;
 }
Esempio n. 15
0
 public HuffIter(HuffmanTree tree)
 {
     this.tree        = tree;
     this.currentNode = tree.Root;
 }