- Code: Select all
### Eclipse Workspace Patch 1.0
#P ps3mediaserver
Index: net/pms/PMS.java
===================================================================
--- net/pms/PMS.java (revision 363)
+++ net/pms/PMS.java (working copy)
@@ -694,6 +694,15 @@
}
});
+ vf.addChild(new VirtualVideoAction(" !!-- Fix 23.976/25fps A/V Mismatch --!!", PMS.getConfiguration().isFix25FPSAvMismatch()) { //$NON-NLS-1$
+ public boolean enable() {
+ PMS.getConfiguration().setMencoderForceFps(!PMS.getConfiguration().isFix25FPSAvMismatch());
+ PMS.getConfiguration().setFix25FPSAvMismatch(!PMS.getConfiguration().isFix25FPSAvMismatch());
+ return PMS.getConfiguration().isFix25FPSAvMismatch();
+ }
+ });
+
+
vf.addChild(new VirtualVideoAction(Messages.getString("PMS.4"), configuration.isMencoderYadif()) { //$NON-NLS-1$
public boolean enable() {
configuration.setMencoderYadif(!configuration.isMencoderYadif());
Index: net/pms/configuration/PmsConfiguration.java
===================================================================
--- net/pms/configuration/PmsConfiguration.java (revision 362)
+++ net/pms/configuration/PmsConfiguration.java (working copy)
@@ -115,6 +115,7 @@
private static final String KEY_CHAPTER_SUPPORT = "chapter_support";
private static final String KEY_CHAPTER_INTERVAL = "chapter_interval";
private static final String KEY_SUBS_COLOR = "subs_color";
+ private static final String KEY_FIX_25FPS_AV_MISMATCH = "fix_25fps_av_mismatch";
private static final int DEFAULT_SERVER_PORT = 5001;
private static final int DEFAULT_PROXY_SERVER_PORT = -1;
private static final String UNLIMITED_BITRATE = "0";
@@ -1078,4 +1079,12 @@
public void setSubsColor(int value) {
configuration.setProperty(KEY_SUBS_COLOR, value);
}
+
+ public boolean isFix25FPSAvMismatch() {
+ return getBoolean(KEY_FIX_25FPS_AV_MISMATCH, false);
+ }
+
+ public void setFix25FPSAvMismatch(boolean value) {
+ configuration.setProperty(KEY_FIX_25FPS_AV_MISMATCH, value);
+ }
}
Index: net/pms/encoders/TSMuxerVideo.java
===================================================================
--- net/pms/encoders/TSMuxerVideo.java (revision 361)
+++ net/pms/encoders/TSMuxerVideo.java (working copy)
@@ -392,6 +392,9 @@
String videoparams = "level=4.1, insertSEI, contSPS, track=1"; //$NON-NLS-1$
if (this instanceof TsMuxerAudio)
videoparams = "track=224"; //$NON-NLS-1$
+ if (configuration.isFix25FPSAvMismatch()) {
+ fps = "25";
+ }
pw.println(videoType + ", \"" + ffVideoPipe.getOutputPipe() + "\", " + (fps!=null?("fps=" +fps + ", "):"") + videoparams); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
if (ffAudioPipe != null && ffAudioPipe.length == 1) {
Index: net/pms/encoders/MEncoderVideo.java
===================================================================
--- net/pms/encoders/MEncoderVideo.java (revision 361)
+++ net/pms/encoders/MEncoderVideo.java (working copy)
@@ -1266,7 +1266,7 @@
cmdArray[cmdArray.length-8] = "-quiet"; //$NON-NLS-1$
cmdArray[cmdArray.length-7] = "-quiet"; //$NON-NLS-1$
- if (configuration.isMencoderForceFps()) {
+ if (configuration.isMencoderForceFps() && !configuration.isFix25FPSAvMismatch()) {
cmdArray[cmdArray.length-8] = "-fps"; //$NON-NLS-1$
cmdArray[cmdArray.length-7] = "24000/1001"; //$NON-NLS-1$
}
@@ -1278,8 +1278,15 @@
}
if (frameRate != null) {
cmdArray[cmdArray.length-5] = frameRate;
- if (configuration.isMencoderForceFps())
- cmdArray[cmdArray.length-7] = cmdArray[cmdArray.length-5];
+ if (configuration.isMencoderForceFps()) {
+ if (configuration.isFix25FPSAvMismatch()) {
+ cmdArray[cmdArray.length-8] = "-mc";
+ cmdArray[cmdArray.length-7] = "0.005";
+ cmdArray[cmdArray.length-5] = "25";
+ } else {
+ cmdArray[cmdArray.length-7] = cmdArray[cmdArray.length-5];
+ }
+ }
}
if (subString != null && !configuration.isMencoderDisableSubs() && !avisynth()) {
@@ -1448,6 +1455,10 @@
cmdArray[cmdArray.length-5] = "-mc"; //$NON-NLS-1$
cmdArray[cmdArray.length-4] = "0"; //$NON-NLS-1$
cmdArray[cmdArray.length-3] = "-noskip"; //$NON-NLS-1$
+ if (configuration.isFix25FPSAvMismatch()) {
+ cmdArray[cmdArray.length-4] = "0.005"; //$NON-NLS-1$
+ cmdArray[cmdArray.length-3] = "-quiet"; //$NON-NLS-1$
+ }
}
if (params.timeend > 0) {
and yes, it's working fine with the czech sample you sent me months ago
the Fix A/V interactive setting is also better placed among others in #video settings#
