code: public static Timecode calculateInPoint(Timecode outPoint, TimecodeDuration duration)
      {
          if (!outPoint.isCompatible(duration)) {
              MutableTimecodeDuration mutableTimecodeDuration = new MutableTimecodeDuration(duration);
              mutableTimecodeDuration.setTimecodeBase(outPoint.getTimecodeBase());
              mutableTimecodeDuration.setDropFrame(outPoint.isDropFrame());
              duration = new TimecodeDuration(mutableTimecodeDuration);
          }
  
          MutableTimecode inPoint = new MutableTimecode(outPoint);
          inPoint.addFrames(-duration.getFrameNumber());
          return new Timecode(inPoint);
      }
docs: Calculates inPoint of a given outPoint and duration.
  In case duration does not have the same Timecode base and/or dropFrame flag
  it will convert it to the same Timecode base and dropFrame flag of the outPoint
  
  @param outPoint
  @param duration
  @return inPoint