decoding performance
This commit is contained in:
parent
7b4db81c78
commit
828227f59d
6 changed files with 65 additions and 46 deletions
|
|
@ -62,7 +62,7 @@ public final class MicroCache2 extends MicroCache
|
|||
|
||||
if ( debug ) System.out.println( "*** decoding cache of size=" + size + " for lonIdx=" + lonIdx + " latIdx=" + latIdx );
|
||||
|
||||
bc.decodeSortedArray( faid, 0, size, 0x20000000, 0 );
|
||||
bc.decodeSortedArray( faid, 0, size, 29, 0 );
|
||||
|
||||
for( int n = 0; n<size; n++ )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -269,22 +269,18 @@ public final class StatCoderContext extends BitCoderContext
|
|||
* @param value
|
||||
* should be 0
|
||||
*/
|
||||
public void decodeSortedArray( int[] values, int offset, int subsize, int nextbit, int value )
|
||||
public void decodeSortedArray( int[] values, int offset, int subsize, int nextbitpos, int value )
|
||||
{
|
||||
if ( subsize == 1 ) // last-choice shortcut
|
||||
{
|
||||
while (nextbit != 0)
|
||||
if ( nextbitpos >= 0 )
|
||||
{
|
||||
if ( decodeBit() )
|
||||
{
|
||||
value |= nextbit;
|
||||
}
|
||||
nextbit >>= 1;
|
||||
value |= decodeBitsReverse( nextbitpos+1 );
|
||||
}
|
||||
values[offset] = value;
|
||||
return;
|
||||
}
|
||||
if ( nextbit == 0 )
|
||||
if ( nextbitpos < 0 )
|
||||
{
|
||||
while (subsize-- > 0)
|
||||
{
|
||||
|
|
@ -298,11 +294,11 @@ public final class StatCoderContext extends BitCoderContext
|
|||
|
||||
if ( size1 > 0 )
|
||||
{
|
||||
decodeSortedArray( values, offset, size1, nextbit >> 1, value );
|
||||
decodeSortedArray( values, offset, size1, nextbitpos-1, value );
|
||||
}
|
||||
if ( size2 > 0 )
|
||||
{
|
||||
decodeSortedArray( values, offset + size1, size2, nextbit >> 1, value | nextbit );
|
||||
decodeSortedArray( values, offset + size1, size2, nextbitpos-1, value | (1 << nextbitpos) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public class StatCoderContextTest
|
|||
{
|
||||
byte[] ab = new byte[40000];
|
||||
StatCoderContext ctx = new StatCoderContext( ab );
|
||||
for ( int noisybits = 0; noisybits < 12; noisybits++ )
|
||||
for ( int noisybits = 1; noisybits < 12; noisybits++ )
|
||||
{
|
||||
for ( int i = 0; i < 1000; i++ )
|
||||
{
|
||||
|
|
@ -22,7 +22,7 @@ public class StatCoderContextTest
|
|||
}
|
||||
ctx = new StatCoderContext( ab );
|
||||
|
||||
for ( int noisybits = 0; noisybits < 12; noisybits++ )
|
||||
for ( int noisybits = 1; noisybits < 12; noisybits++ )
|
||||
{
|
||||
for ( int i = 0; i < 1000; i++ )
|
||||
{
|
||||
|
|
@ -114,7 +114,7 @@ public class StatCoderContextTest
|
|||
ctx = new StatCoderContext( ab );
|
||||
|
||||
int[] decodedValues = new int[size];
|
||||
ctx.decodeSortedArray( decodedValues, 0, size, 0x08000000, 0 );
|
||||
ctx.decodeSortedArray( decodedValues, 0, size, 27, 0 );
|
||||
|
||||
for ( int i = 0; i < size; i++ )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue