Changed implementation of Video decoder. New one use less memory and more faster

Esse commit está contido em:
Denis Shmyga
2012-09-11 15:37:59 +03:00
commit d218241693
2 arquivos alterados com 453 adições e 591 exclusões
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
@@ -1,157 +0,0 @@
package com.codeminders.ardrone.video;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.nio.ByteBuffer;
// Copyright 2007-2011, PARROT SA, all rights reserved.
// DISCLAIMER
// The APIs is provided by PARROT and contributors "AS IS" and any express or
// implied warranties, including, but not limited to, the implied warranties of
// merchantability
// and fitness for a particular purpose are disclaimed. In no event shall PARROT
// and contributors be liable for any direct, indirect, incidental, special,
// exemplary, or
// consequential damages (including, but not limited to, procurement of
// substitute goods or services; loss of use, data, or profits; or business
// interruption) however
// caused and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of the use
// of this
// software, even if advised of the possibility of such damage.
// Author : Daniel Schmidt
// Publishing date : 2010-01-06
// based on work by : Wilke Jansoone
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions, the disclaimer and the original author of the source
// code.
// - Neither the name of the PixVillage Team, nor the names of its contributors
// may be used to endorse or promote products derived from this software without
// specific prior written permission.
public class uint
{
private int base2;
public uint(byte[] bp, int start)
{
try
{
byte[] b = new byte[4];
b[0] = bp[start + 3];
b[1] = bp[start + 2];
b[2] = bp[start + 1];
b[3] = bp[start + 0];
ByteArrayInputStream bas = new ByteArrayInputStream(b);
DataInputStream din = new DataInputStream(bas);
this.base2 = din.readInt();
} catch(Exception e)
{
throw new RuntimeException("error creating uint", e);
}
}
public uint(ByteBuffer bp, int start)
{
try
{
ByteBuffer bb = ByteBuffer.allocate(4);
bb.put(bp.array()[start + 3]);
bb.put(bp.array()[start + 2]);
bb.put(bp.array()[start + 1]);
bb.put(bp.array()[start + 0]);
// bb.put(bp.get(start + 3));
// bb.put(bp.get(start + 2));
// bb.put(bp.get(start + 1));
// bb.put(bp.get(start ));
bb.flip();
this.base2 = bb.getInt();
}
catch(Exception e)
{
throw new RuntimeException("error creating uint", e);
}
}
public uint(int base)
{
this.base2 = base;
}
public uint(uint that)
{
this.base2 = that.base2;
}
public uint and(int andval)
{
int retval = base2 & andval;
return new uint(retval);
}
public int flipBits()
{
int base = ~base2;
return base;
}
public int intValue()
{
return base2;
}
public uint or(uint orval)
{
int retval = base2 | orval.base2;
return new uint(retval);
}
public uint shiftLeft(int i)
{
int base = base2;
base <<= i;
return new uint(base);
}
public void shiftLeftEquals(int i)
{
int base = base2;
base <<= i;
base2 = base;
}
public uint shiftRight(int i)
{
int base = base2;
base = base >>> i;
return new uint(base);
}
public void shiftRightEquals(int i)
{
int base = base2;
base >>>= i;
base2 = base;
}
public short times(short i)
{
return (short) (intValue() * i);
}
public String toString()
{
return Integer.toString(base2, 2);
}
}