#! /usr/local/bin/pvtool

#define EXTRA_PARAMETERS 1
#define USAGE_MESSAGE "\
\ttimeshft <input pv file> <output pv file> <time ratio>\n\
\n\
This program attempts to timeshift an fft file.\n"

int
pvaction (void)
{
  int i, j, time1, time2;
  float time_shift, time_to_read, frac;

  time_shift = fparameter[0];
  printf ("Shifting by time ratio %f.\n", time_shift);

  resize ((int) ((float) INPUT1_FRAMES * time_shift));

  for (i = 0; i < OUTPUT_FRAMES; i++)
    {
      time_to_read = ((float) i) / time_shift;

      /* If we're on the last frame then don't go beyond it. */
      if (time_to_read >= INPUT1_FRAMES - 1)
	{
	  time1 = time2 = INPUT1_FRAMES - 1;
	  frac = 0;
	}
      else
	{
	  time1 = (int) time_to_read;
	  time2 = time1 + 1;
	  frac = time_to_read - (float) time1;
	}

      for (j = 0; j < bins; j++)
	{
	  OUTPUT_PHIDOT (i, j) =
	    ((1 - frac) * INPUT1_PHIDOT (time1, j)
	     + frac * INPUT1_PHIDOT (time2, j));
	  OUTPUT_MAG (i, j) =
	    ((1 - frac) * INPUT1_MAG (time1, j)
	     + frac * INPUT1_MAG (time2, j));
	}
    }
  return (0);
}