private String[] internalGetCrfSinglePass() {

    if (type != TYPE_CRF) return null;

    ArrayList<String> cmd = new ArrayList<String>();
    cmd.add("ffmpeg");
    cmd.add("-i");
    cmd.add(conversionSetting.getOriginalVideoFile().getAbsolutePath());
    cmd.add("-c:v");
    cmd.add("libx264");
    cmd.add("-profile:v");
    cmd.add("high");
    cmd.add("-level");
    cmd.add("5");
    cmd.add("-preset");
    cmd.add(Settings.ARRAY_SPEED[conversionSetting.getSpeed()]);
    cmd.add("-crf");
    switch (conversionSetting.getQuality()) {
      case Settings.QUALITY_SUPER:
        cmd.add("15");
        break;
      case Settings.QUALITY_NORMAL:
        cmd.add("23");
        break;
      case Settings.QUALITY_HIGH:
      default:
        cmd.add("18");
        break;
    }

    String videoBitRate = getVideoBitrate();
    if (videoBitRate != null) {
      cmd.add("-maxrate");
      cmd.add(videoBitRate);
      cmd.add("-bufsize");
      cmd.add("5M");
    }

    addAudioConversion(cmd);
    cmd.add("-movflags");
    cmd.add("+faststart");
    cmd.add(conversionSetting.getTempVideoFile().getAbsolutePath());

    return getArray(cmd);
  }