docs: @CheckReturnValue
    @Override
    protected List<String> build(FFmpegBuilder parent, int pass) {
      if (pass > 0) {
        checkArgument(
            targetSize != 0 || video_bit_rate != 0,
            "Target size, or video bitrate must be specified when using two-pass");
      }
      if (targetSize > 0) {
        checkState(parent.inputs.size() == 1, "Target size does not support multiple inputs");
  
        checkArgument(
            constantRateFactor == null, "Target size can not be used with constantRateFactor");
  
        String firstInput = parent.inputs.iterator().next();
        FFmpegProbeResult input = parent.inputProbes.get(firstInput);
  
        checkState(input != null, "Target size must be used with setInput(FFmpegProbeResult)");
  
        // TODO factor in start time and/or number of frames
  
        double durationInSeconds = input.format.duration;
        long totalBitRate =
            (long) Math.floor((targetSize * 8) / durationInSeconds) - pass_padding_bitrate;
  
        // TODO Calculate audioBitRate
  
        if (video_enabled && video_bit_rate == 0) {
          // Video (and possibly audio)
          long audioBitRate = audio_enabled ? audio_bit_rate : 0;
          video_bit_rate = totalBitRate - audioBitRate;
        } else if (audio_enabled && audio_bit_rate == 0) {
          // Just Audio
          audio_bit_rate = totalBitRate;
        }
      }
  
      return super.build(parent, pass);
    }