Skip to content
This repository has been archived by the owner on Feb 9, 2018. It is now read-only.

Commit

Permalink
filename was redundant, we can get it with dlna.getSystemName()
Browse files Browse the repository at this point in the history
  • Loading branch information
ikarsokolov committed May 23, 2013
1 parent a8718d0 commit 67af367
Show file tree
Hide file tree
Showing 16 changed files with 129 additions and 141 deletions.
24 changes: 10 additions & 14 deletions src/main/java/net/pms/dlna/DLNAResource.java
Expand Up @@ -1787,7 +1787,9 @@ public InputStream getInputStream(Range range, RendererConfiguration mediarender
}
}

// determine source of the stream
if (getPlayer() == null) {
// no transcoding
if (this instanceof IPushOutput) {
PipedOutputStream out = new PipedOutputStream();
InputStream fis = new PipedInputStream(out);
Expand Down Expand Up @@ -1827,6 +1829,7 @@ public InputStream getInputStream(Range range, RendererConfiguration mediarender
}
return fis;
} else {
// pipe transcoding result
OutputParams params = new OutputParams(configuration);
params.aid = getMediaAudio();
params.sid = getMediaSubtitle();
Expand All @@ -1840,14 +1843,11 @@ public InputStream getInputStream(Range range, RendererConfiguration mediarender
params.stdin = (IPushOutput) this;
}

// (re)start transcoding process if necessary
if (externalProcess == null || externalProcess.isDestroyed()) {
// first playback attempt => start new transcoding process
LOGGER.info("Starting transcode/remux of " + getName());
externalProcess = getPlayer().launchTranscode(
getSystemName(),
this,
getMedia(),
params
);
externalProcess = getPlayer().launchTranscode(this, getMedia(), params);
if (params.waitbeforestart > 0) {
LOGGER.trace("Sleeping for {} milliseconds", params.waitbeforestart);
try {
Expand All @@ -1859,6 +1859,7 @@ public InputStream getInputStream(Range range, RendererConfiguration mediarender
}
} else if (params.timeseek > 0 && getMedia() != null && getMedia().isMediaparsed()
&& getMedia().getDurationInSeconds() > 0) {
// time seek request => stop running transcode process and start new one
LOGGER.debug("Requesting time seek: " + params.timeseek + " seconds");
params.minBufferSize = 1;
Runnable r = new Runnable() {
Expand All @@ -1868,12 +1869,7 @@ public void run() {
}
};
new Thread(r, "External Process Stopper").start();
ProcessWrapper newExternalProcess = getPlayer().launchTranscode(
getSystemName(),
this,
getMedia(),
params
);
ProcessWrapper newExternalProcess = getPlayer().launchTranscode(this, getMedia(), params);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Expand All @@ -1893,7 +1889,7 @@ public void run() {
is = externalProcess.getInputStream(low);
timer++;
if (is == null) {
LOGGER.trace("External input stream instance is null... sounds not good, waiting 500ms");
LOGGER.warn("External input stream instance is null... sounds not good, waiting 500ms");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Expand All @@ -1909,7 +1905,7 @@ public void run() {
Runnable r = new Runnable() {
@Override
public void run() {
LOGGER.trace("External input stream instance is null... stopping process");
LOGGER.error("External input stream instance is null... stopping process");
externalProcess.stopProcess();
}
};
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/net/pms/encoders/FFmpegAudio.java
Expand Up @@ -127,11 +127,11 @@ public String mimeType() {

@Override
public ProcessWrapper launchTranscode(
String filename,
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
) throws IOException {
final String filename = dlna.getSystemName();
params.maxBufferSize = configuration.getMaxAudioBuffer();
params.waitbeforestart = 2000;
params.manageFastStart();
Expand Down
11 changes: 5 additions & 6 deletions src/main/java/net/pms/encoders/FFmpegDVRMSRemux.java
Expand Up @@ -112,25 +112,24 @@ public String executable() {

@Override
public ProcessWrapper launchTranscode(
String filename,
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
) throws IOException {
return getFFmpegTranscode(filename, dlna, media, params);
return getFFmpegTranscode(dlna, media, params);
}

// pointless redirection of launchTranscode
@Deprecated
protected ProcessWrapperImpl getFFmpegTranscode(
String filename,
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
) throws IOException {
PmsConfiguration configuration = PMS.getConfiguration();
String ffmpegAlternativePath = configuration.getFfmpegAlternativePath();
List<String> cmdList = new ArrayList<String>();
final String filename = dlna.getSystemName();

if (ffmpegAlternativePath != null && ffmpegAlternativePath.length() > 0) {
cmdList.add(ffmpegAlternativePath);
Expand Down
50 changes: 17 additions & 33 deletions src/main/java/net/pms/encoders/FFmpegVideo.java
Expand Up @@ -74,7 +74,6 @@
* parameters are unused e.g.:
*
* public List<String> getAudioBitrateOptions(
* String filename,
* DLNAResource dlna,
* DLNAMediaInfo media,
* OutputParams params
Expand Down Expand Up @@ -112,22 +111,21 @@ public FFmpegVideo(PmsConfiguration configuration) {
* If the renderer has no size limits, or there's no media metadata, or the video is within the renderer's
* size limits, an empty list is returned.
*
* @param filename
* @param dlna
* @param media metadata for the DLNA resource which is being transcoded
* @param params
* @return a {@link List} of <code>String</code>s representing the rescale options for this video,
* or an empty list if the video doesn't need to be resized.
*/
public List<String> getVideoFilterOptions(String filename, DLNAResource dlna, DLNAMediaInfo media, OutputParams params) throws IOException {
public List<String> getVideoFilterOptions(DLNAResource dlna, DLNAMediaInfo media, OutputParams params) throws IOException {
List<String> videoFilterOptions = new ArrayList<String>();
String subsOption = null;
String padding = null;
final RendererConfiguration renderer = params.mediaRenderer;

DLNAMediaSubtitle tempSubs = null;
if (!isDisableSubtitles(params)) {
tempSubs = getSubtitles(filename, media, params);
tempSubs = getSubtitles(params);
}

final boolean isResolutionTooHighForRenderer = renderer.isVideoRescale() // renderer defines a max width/height
Expand Down Expand Up @@ -228,16 +226,15 @@ public List<String> getVideoFilterOptions(String filename, DLNAResource dlna, DL
* audio codec and container) compatible with the renderer's
* <code>TranscodeVideo</code> profile.
*
* @param fileName the name of the file
*
* @param dlna
* @param media the media metadata for the video being streamed. May contain unset/null values (e.g. for web videos).
* @param params output parameters
* @return a {@link List} of <code>String</code>s representing the FFmpeg output parameters for the renderer according
* to its <code>TranscodeVideo</code> profile.
*/
public synchronized List<String> getVideoTranscodeOptions(String fileName, DLNAResource dlna, DLNAMediaInfo media, OutputParams params) {
public synchronized List<String> getVideoTranscodeOptions(DLNAResource dlna, DLNAMediaInfo media, OutputParams params) {
List<String> transcodeOptions = new ArrayList<String>();
final String filename = dlna.getSystemName();
final RendererConfiguration renderer = params.mediaRenderer;

if (renderer.isTranscodeToWMV() && !renderer.isXBOX()) { // WMV
Expand Down Expand Up @@ -265,9 +262,9 @@ public synchronized List<String> getVideoTranscodeOptions(String fileName, DLNAR
}

InputFile newInput = null;
if (fileName != null) {
if (filename != null) {
newInput = new InputFile();
newInput.setFilename(fileName);
newInput.setFilename(filename);
newInput.setPush(params.stdin);
}

Expand Down Expand Up @@ -331,13 +328,12 @@ public synchronized List<String> getVideoTranscodeOptions(String fileName, DLNAR
* Returns the video bitrate spec for the current transcode according
* to the limits/requirements of the renderer.
*
* @param filename
* @param dlna
* @param media the media metadata for the video being streamed. May contain unset/null values (e.g. for web videos).
* @param params
* @return a {@link List} of <code>String</code>s representing the video bitrate options for this transcode
*/
public List<String> getVideoBitrateOptions(String filename, DLNAResource dlna, DLNAMediaInfo media, OutputParams params) { // media is currently unused
public List<String> getVideoBitrateOptions(DLNAResource dlna, DLNAMediaInfo media, OutputParams params) { // media is currently unused
List<String> videoBitrateOptions = new ArrayList<String>();
String sMaxVideoBitrate = params.mediaRenderer.getMaxVideoBitrate(); // currently Mbit/s
int iMaxVideoBitrate = 0;
Expand Down Expand Up @@ -368,13 +364,12 @@ public List<String> getVideoBitrateOptions(String filename, DLNAResource dlna, D
* Returns the audio bitrate spec for the current transcode according
* to the limits/requirements of the renderer.
*
* @param filename
* @param dlna
* @param media the media metadata for the video being streamed. May contain unset/null values (e.g. for web videos).
* @param params
* @return a {@link List} of <code>String</code>s representing the audio bitrate options for this transcode
*/
public List<String> getAudioBitrateOptions(String filename, DLNAResource dlna, DLNAMediaInfo media, OutputParams params) {
public List<String> getAudioBitrateOptions(DLNAResource dlna, DLNAMediaInfo media, OutputParams params) {
List<String> audioBitrateOptions = new ArrayList<String>();

audioBitrateOptions.add("-q:a");
Expand All @@ -386,15 +381,14 @@ public List<String> getAudioBitrateOptions(String filename, DLNAResource dlna, D
/**
* Returns the audio channel (-ac) options.
*
* @param filename The name of the file being transcoded.
* @param dlna The DLNA resource representing the file being transcoded.
* @param media the media metadata for the file being transcoded. May contain null fields (e.g. for web videos).
* @param params The {@link OutputParams} context object used to store miscellaneous parameters for this request.
* @param params The {@link net.pms.io.OutputParams} context object used to store miscellaneous parameters for this request.
* @return The list of audio channel options.
* @since 1.81.0
*/

public List<String> getAudioChannelOptions(String filename, DLNAResource dlna, DLNAMediaInfo media, OutputParams params) {
public List<String> getAudioChannelOptions(DLNAResource dlna, DLNAMediaInfo media, OutputParams params) {
List<String> audioChannelOptions = new ArrayList<String>();
int ac = -1; // -1: don't change the number of audio channels
int nChannels = params.aid == null ? -1 : params.aid.getAudioProperties().getNumberOfChannels();
Expand Down Expand Up @@ -513,14 +507,14 @@ public String executable() {

@Override
public synchronized ProcessWrapper launchTranscode(
String filename,
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
) throws IOException {
int nThreads = configuration.getNumberOfCpuCores();
List<String> cmdList = new ArrayList<String>();
RendererConfiguration renderer = params.mediaRenderer;
final String filename = dlna.getSystemName();
setAudioAndSubs(filename, media, params, configuration);
// params.waitbeforestart = 1000;

Expand Down Expand Up @@ -595,7 +589,7 @@ public synchronized ProcessWrapper launchTranscode(
// if the source is too large for the renderer, resize it
// and/or add subtitles to video filter
// FFmpeg must be compiled with --enable-libass parameter
cmdList.addAll(getVideoFilterOptions(filename, dlna, media, params));
cmdList.addAll(getVideoFilterOptions(dlna, media, params));

int defaultMaxBitrates[] = getVideoBitrateConfig(configuration.getMaximumBitrate());
int rendererMaxBitrates[] = new int[2];
Expand Down Expand Up @@ -725,7 +719,7 @@ public synchronized ProcessWrapper launchTranscode(
}

// Add the output options (-f, -c:a, -c:v, etc.)
cmdList.addAll(getVideoTranscodeOptions(filename, dlna, media, params));
cmdList.addAll(getVideoTranscodeOptions(dlna, media, params));

// Add custom options
if (StringUtils.isNotEmpty(renderer.getCustomFFmpegOptions())) {
Expand Down Expand Up @@ -1023,24 +1017,14 @@ protected static List<String> parseOptions(String str, List<String> cmdList) {
return cmdList;
}

/**
* @deprecated use {@link #getSubtitles(String, net.pms.dlna.DLNAMediaInfo, net.pms.io.OutputParams)} instead.
*/
@Deprecated
public DLNAMediaSubtitle subsConversion(String fileName, DLNAMediaInfo media, OutputParams params) throws IOException {
return getSubtitles(fileName, media, params);
}

/**
* Shift timing of external subtitles in SSA/ASS or SRT format and converts charset to UTF8 if necessary
*
* @param fileName Video file
* @param media Media file metadata
* @param params Output parameters
* @return Converted subtitle file
* @throws IOException
*/
public DLNAMediaSubtitle getSubtitles(String fileName, DLNAMediaInfo media, OutputParams params) throws IOException {
public DLNAMediaSubtitle getSubtitles(OutputParams params) throws IOException {
DLNAMediaSubtitle tempSubs = null;

if (params.sid.getId() == -1) {
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/net/pms/encoders/FFmpegWebVideo.java
Expand Up @@ -117,14 +117,14 @@ public String toString() {

@Override
public synchronized ProcessWrapper launchTranscode(
String filename,
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
DLNAResource dlna,
DLNAMediaInfo media,
OutputParams params
) throws IOException {
params.minBufferSize = params.minFileSize;
params.secondread_minsize = 100000;
RendererConfiguration renderer = params.mediaRenderer;
String filename = dlna.getSystemName();

// XXX work around an ffmpeg bug: http://ffmpeg.org/trac/ffmpeg/ticket/998
if (filename.startsWith("mms:")) {
Expand Down Expand Up @@ -213,20 +213,20 @@ public synchronized ProcessWrapper launchTranscode(
cmdList.add("-i");
cmdList.add(filename);

cmdList.addAll(getVideoFilterOptions(filename, dlna, media, params));
cmdList.addAll(getVideoFilterOptions(dlna, media, params));

// Encoder threads
cmdList.add("-threads");
cmdList.add("" + nThreads);

// Add the output options (-f, -acodec, -vcodec)
cmdList.addAll(getVideoTranscodeOptions(filename, dlna, media, params));
cmdList.addAll(getVideoTranscodeOptions(dlna, media, params));

// Add video bitrate options
cmdList.addAll(getVideoBitrateOptions(filename, dlna, media, params));
cmdList.addAll(getVideoBitrateOptions(dlna, media, params));

// Add audio bitrate options
cmdList.addAll(getAudioBitrateOptions(filename, dlna, media, params));
cmdList.addAll(getAudioBitrateOptions(dlna, media, params));

// Add any remaining custom options
if (!customOptions.isEmpty()) {
Expand Down

0 comments on commit 67af367

Please sign in to comment.