/*
* PS3 Media Server, for streaming any medias to your PS3.
* Copyright (C) 2008 A.Brochard
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; version 2
* of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package net.pms.io;
import net.pms.configuration.PmsConfiguration;
import net.pms.configuration.RendererConfiguration;
import net.pms.dlna.DLNAMediaAudio;
import net.pms.dlna.DLNAMediaSubtitle;
import net.pms.dlna.IPushOutput;
import java.io.File;
import java.util.Arrays;
import java.util.Map;
public class OutputParams {
@Deprecated
public File outputFile; // XXX no longer used
// TODO: Refactor all public variables to private with public getters and setters.
public File workDir;
public Map<String,String> env;
public double minFileSize;
public double minBufferSize;
public double maxBufferSize;
public double timeseek;
public double timeend;
public int fromFrame;
public int toFrame;
public int waitbeforestart;
public PipeProcess[] input_pipes = new PipeProcess[2];
public PipeProcess[] output_pipes = new PipeProcess[2];
public DLNAMediaAudio aid;
public DLNAMediaSubtitle sid;
public int secondread_minsize;
public boolean noexitcheck;
public boolean log;
public boolean lossyaudio;
public boolean losslessaudio;
public boolean no_videoencode;
public String forceFps;
public String forceType;
public RendererConfiguration mediaRenderer;
public boolean hidebuffer;
public byte header[];
public IPushOutput stdin;
public boolean avidemux;
public boolean shift_scr;
public OutputParams(PmsConfiguration configuration) {
if (configuration != null) {
waitbeforestart = configuration.getVideoTranscodeStartDelay() * 1000;
} else {
waitbeforestart = 6000;
}
fromFrame = -1;
toFrame = -1;
secondread_minsize = 1000000;
if (configuration != null) {
minFileSize = configuration.getMinStreamBuffer();
minBufferSize = configuration.getMinMemoryBufferSize();
maxBufferSize = configuration.getMaxMemoryBufferSize();
}
if (maxBufferSize < 100) {
maxBufferSize = 100;
}
timeseek = 0;
env = null;
}
/**
* Set some values to allow fast streaming start of transcoded videos
*/
public void manageFastStart() {
if (mediaRenderer != null && mediaRenderer.isTranscodeFastStart()) {
waitbeforestart = 0; // no delay when the transcode is starting
minBufferSize = 1; // 1Mb of minimum buffer before sending the file
}
}
@Override
public String toString() {
return "OutputParams [aid=" + aid + ", avidemux=" + avidemux + ", forceFps=" + forceFps + ", forceType="
+ forceType + ", fromFrame=" + fromFrame + ", header=" + Arrays.toString(header) + ", hidebuffer="
+ hidebuffer + ", input_pipes=" + Arrays.toString(input_pipes) + ", log=" + log + ", losslessaudio="
+ losslessaudio + ", lossyaudio=" + lossyaudio + ", maxBufferSize=" + maxBufferSize
+ ", mediaRenderer=" + mediaRenderer + ", minBufferSize=" + minBufferSize + ", minFileSize="
+ minFileSize + ", no_videoencode=" + no_videoencode + ", noexitcheck=" + noexitcheck
+ ", output_pipes=" + Arrays.toString(output_pipes)
+ ", secondread_minsize=" + secondread_minsize + ", shift_scr=" + shift_scr + ", sid=" + sid
+ ", stdin=" + stdin + ", timeend=" + timeend + ", timeseek=" + timeseek + ", toFrame=" + toFrame
+ ", waitbeforestart=" + waitbeforestart + ", workDir=" + workDir + ", env=" + env + "]";
}
}