#include <stdint.h>
/* This is the header for the segy trace header.  Reading bytes
  directly int32_to this header will allow access to all of the fields.
*/
typedef struct SegyHead {
  int32_t lineSeq, reelSeq; /* Sequence numbers within line and reel, resp. */
  int32_t event_number; /* Original field record number */
  int32_t channel_number; /* Trace number within the original field record.*/
  int32_t energySourcePt; /* Energy source point32_t number */
  int32_t cdpEns; /* CDP ensemble number */
  int32_t traceInEnsemble; /* Trace number within CDP ensemble */
  int16_t traceID; /* Trace identification code:
	1 = seismic data	4 = time break	7 = timing
	2 = dead		5 = uphole	8 = water break
	3 = dummy		6 = sweep	9..., optional use */
  int16_t vertSum, horSum;
  int16_t dataUse; /* 1 = production, 2 = test */
  int32_t sourceToRecDist;
  int32_t recElevation;
  int32_t sourceSurfaceElevation;
  int32_t sourceDepth;
  int32_t datumElevRec, datumElevSource;
  int32_t sourceWaterDepth, recWaterDepth;
  int16_t elevationScale;
  int16_t coordScale;
  int32_t sourceLongOrX, sourceLatOrY;
  int32_t recLongOrX, recLatOrY;
  int16_t coordUnits;
  int16_t weatheringVelocity;
  int16_t subWeatheringVelocity;
  int16_t sourceUpholeTime, recUpholeTime;
  int16_t sourceStaticCor, recStaticCor;
  int16_t totalStatic;
  int16_t lagTimeA, lagTimeB;
  int16_t delay;
  int16_t muteStart, muteEnd;
  int16_t sampleLength; /* Number of samples in this trace */
  int16_t deltaSample; /* Sampling interval in microseconds. */
  int16_t gainType; /* 1 = fixed, 2 = binary, 3 = floating, 4... opt.*/
  int16_t gainConst, initialGain;
  int16_t correlated; /* 1 = no, 2 = yes */
  int16_t sweepStart, sweepEnd;
  int16_t sweepLength; /* in milliseconds */
  int16_t sweepType; /* 1 = linear, 2 = parabolic, 3 = exponential, 4... opt. */
  int16_t sweepTaperAtStart, sweepTaperAtEnd;
  int16_t taperType;
  int16_t aliasFreq, aliasSlope;
  int16_t notchFreq, notchSlope;
  int16_t lowCutFreq, hiCutFreq;
  int16_t lowCutSlope, hiCutSlope;
  int16_t year, dayOfYear, hour, minute, second;
  int16_t millisecond;            // Henkart modification;  Standard calls for: "int16_t timeBasisCode"
  int16_t traceWeightingFactor;  
  int16_t phoneRollPos1, phoneFirstTrace, phoneLastTrace;
  int16_t gapSize;
  int16_t taperOvertravel;
  float waterDelay;                // Henkart modification
  float startMute;                 // Henkart modification     
  float endMute;                   // Henkart modification
  float sampleInt;                 // Henkart modification 
  float waterBottomTime;           // Henkart modification
  int32_t endOfRp;                 // Henkart modification
  float dummy1, dummy2, dummy3, dummy4, dummy5, dummy6, dummy7, dummy8, dummy9;       // Henkart modification
} SegyHead; /* end of segy trace header */

typedef struct SegyReel{
        int32_t   kjob, kline, kreel;
        int16_t   kntr, knaux, sr, kfldsr, knsamp, kfsamp, dsfc, kmfold, ksort;
	unsigned char unused1[24];
	int16_t kunits;
	unsigned char unused2[344];
} SegyReel;