org.javaseis.compress
Class SeisCompress

java.lang.Object
  extended by org.javaseis.compress.SeisCompress

public class SeisCompress
extends java.lang.Object

Title: JavaSeisIO 16 Bit Trace Compression

Description: Provides compression support for seismic data in JavaSeis. The trace is divided into 100 sample windows. The maximum value in each window is used to scale trace samples to 16 bits. The floating point scalars are stored in the buffer first, followed by the 16 bit trace samples. Methods are provided to position the buffer for compression or decompression in trace units.

Version:
1.0
Author:
Chuck Mosher, JavaSeis.org

Field Summary
(package private)  java.nio.ByteBuffer _buf
           
(package private)  java.nio.FloatBuffer _fbuf
           
(package private)  short[] _ibuf
           
(package private)  int _ibufLengthFloat
           
(package private)  int _numsamp
           
(package private)  int _numsamp2
           
(package private)  int _nwindows
           
(package private)  int _recordLength
           
(package private)  int _recordLengthFloat
           
(package private)  int _recordLengthShort
           
(package private)  java.nio.ShortBuffer _sbuf
           
(package private)  int _scalarLengthShort
           
(package private)  float[] _scalars
           
(package private)  int _tracePosition
           
(package private)  int _type
           
static int NATIVE
           
static int SCALAR16
           
 
Constructor Summary
SeisCompress(int type, int numsamp, java.nio.ByteBuffer buf)
          Initialize compression for seismic traces
 
Method Summary
static void main(java.lang.String[] args)
          Test harness for compression utilities
(package private)  int numWindows(int numsamp)
          Determine number of windows to use for 16 bit scaling
 void packFrame(int ntrc, float[][] frm)
          Compress a frame of traces
 void packTrace(float[] trc)
          Pack a trace into a 16bit compression buffer
 void packTrace16(float[] trc)
          Pack a trace into a 16bit compression buffer
 int position()
          Return the current buffer position in trace units
 int position(int tracePosition)
          Set the buffer position in trace units
static int recordLength(int type, int numsamp)
          Return the record length in bytes for 16 bit compression
 void unpackFrame(int ntrc, float[][] trc)
          Uncompress a frame of traces
 void unpackTrace(float[] trc)
          Un-pack a trace from a NATIVE compression buffer
 void unpackTrace16(float[] trc)
          Un-pack a trace from a SCALAR16 compression buffer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_buf

java.nio.ByteBuffer _buf

_fbuf

java.nio.FloatBuffer _fbuf

_ibuf

short[] _ibuf

_ibufLengthFloat

int _ibufLengthFloat

_numsamp

int _numsamp

_numsamp2

int _numsamp2

_nwindows

int _nwindows

_recordLength

int _recordLength

_recordLengthFloat

int _recordLengthFloat

_recordLengthShort

int _recordLengthShort

_sbuf

java.nio.ShortBuffer _sbuf

_scalarLengthShort

int _scalarLengthShort

_scalars

float[] _scalars

_tracePosition

int _tracePosition

_type

int _type

NATIVE

public static int NATIVE

SCALAR16

public static int SCALAR16
Constructor Detail

SeisCompress

public SeisCompress(int type,
                    int numsamp,
                    java.nio.ByteBuffer buf)
Initialize compression for seismic traces

Parameters:
type - compression type (i.e. SeisCompress.NATIVE)
numsamp - input number of samples per trace
buf - buffer that will be used for compressed traces
Method Detail

main

public static void main(java.lang.String[] args)
                 throws SeisException
Test harness for compression utilities

Throws:
SeisException

numWindows

int numWindows(int numsamp)
Determine number of windows to use for 16 bit scaling

Parameters:
numsamp - input number of samples per trace
Returns:
number of windows that will be used

packFrame

public void packFrame(int ntrc,
                      float[][] frm)
Compress a frame of traces

Parameters:
ntrc - input number of traces to compress
frm - array of traces to compress

packTrace

public void packTrace(float[] trc)
Pack a trace into a 16bit compression buffer

Parameters:
trc - Array to contain unpacked trace samples

packTrace16

public void packTrace16(float[] trc)
Pack a trace into a 16bit compression buffer

Parameters:
trc - Array to contain unpacked trace samples

position

public int position()
Return the current buffer position in trace units

Returns:
buffer position in trace units

position

public int position(int tracePosition)
Set the buffer position in trace units

Parameters:
tracePosition - desired buffer position in trace units
Returns:
current position

recordLength

public static int recordLength(int type,
                               int numsamp)
Return the record length in bytes for 16 bit compression

Parameters:
type - type of compression for which to calculate record length
numsamp - input number of samples per trace
Returns:
record length in bytes

unpackFrame

public void unpackFrame(int ntrc,
                        float[][] trc)
Uncompress a frame of traces

Parameters:
ntrc - input number of traces to recover
trc - array of traces to recover

unpackTrace

public void unpackTrace(float[] trc)
Un-pack a trace from a NATIVE compression buffer

Parameters:
trc - Array to contain unpacked trace samples

unpackTrace16

public void unpackTrace16(float[] trc)
Un-pack a trace from a SCALAR16 compression buffer

Parameters:
trc - Array to contain unpacked trace samples