001package net.bramp.ffmpeg.builder;
002
003import com.google.common.collect.ImmutableList;
004import net.bramp.ffmpeg.probe.FFmpegProbeResult;
005
006/** Builder for FFmpeg file-based input arguments. */
007public class FFmpegFileInputBuilder extends AbstractFFmpegInputBuilder<FFmpegFileInputBuilder> {
008  /** Constructs a file input builder with the given filename. */
009  public FFmpegFileInputBuilder(FFmpegBuilder parent, String filename) {
010    super(parent, filename);
011  }
012
013  /** Constructs a file input builder with the given filename and probe result. */
014  public FFmpegFileInputBuilder(FFmpegBuilder parent, String filename, FFmpegProbeResult result) {
015    super(parent, result, filename);
016  }
017
018  @Override
019  protected void addSourceTarget(int pass, ImmutableList.Builder<String> args) {
020    if (filename != null && uri != null) {
021      throw new IllegalStateException("Only one of filename and uri can be set");
022    }
023
024    // Input
025    if (filename != null) {
026      args.add("-i", filename);
027    } else if (uri != null) {
028      args.add("-i", uri.toString());
029    } else {
030      assert false;
031    }
032  }
033}