This one? viewtopic.php?f=2&t=3217
Quite strange that you don't see this folder also in official r366 posted above.
ExSport wrote:Which version you have installed?
This one? viewtopic.php?f=2&t=3217
Quite strange that you don't see this folder also in official r366 posted above.
Duration: 01:56:40.64, start: 0.000000, bitrate: N/A
Stream #0.0(eng): Video: h264, yuv420p, 1920x800, PAR 1:1 DAR 12:5, 47.62 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0.1(eng): Audio: ac3, 48000 Hz, 6 channels, s16
Metadata:
description : EN AC3 5.1 640 Kbps
Stream #0.2(eng): Subtitle: 0x0000
Metadata:
description : EN Forced
Stream #0.3(eng): Subtitle: 0x0000
Metadata:
description : EN
Stream #0.4(cze): Audio: ac3, 48000 Hz, 6 channels, s16
Metadata:
description : CZ AC3 5.1 640 Kbps
Stream #0.5(cze): Subtitle: 0x0000
Metadata:
description : CZ Forced
Stream #0.6(cze): Subtitle: 0x0000
Metadata:
description : CZ
At least one output file must be specified
Index: net/pms/dlna/DLNAMediaInfo.java
===================================================================
--- net/pms/dlna/DLNAMediaInfo.java (revision 369)
+++ net/pms/dlna/DLNAMediaInfo.java (working copy)
@@ -29,6 +29,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.ListIterator;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
@@ -356,7 +357,9 @@
ArrayList<String> lines = (ArrayList<String>) pw.getResults();
int langId = 0;
int subId = 0;
+ ListIterator<String> FFmpegMetaData = lines.listIterator();
for(String line:lines) {
+ FFmpegMetaData.next();
line = line.trim();
if (line.startsWith("Output"))
matchs = false;
@@ -486,7 +489,18 @@
} else
lang.lang = DLNAMediaLang.UND;
lang.id = subId++;
- subtitlesCodes.add(lang);
+// subtitlesCodes.add(lang);
+ int FFmpegMetaDataNr = FFmpegMetaData.nextIndex();
+ if (FFmpegMetaDataNr > -1) line = lines.get(FFmpegMetaDataNr);
+ if (line.indexOf("Metadata:") > -1) {
+ line = lines.get(FFmpegMetaData.nextIndex()+1);
+ int aa = line.indexOf(": ");
+ int bb = line.length();
+ if (aa > -1 && bb > aa) {
+ lang.flavor = line.substring(aa+2, bb);
+ }
+ }
+ subtitlesCodes.add(lang);
}
}
}
Index: net/pms/encoders/Player.java
===================================================================
--- net/pms/encoders/Player.java (revision 369)
+++ net/pms/encoders/Player.java (working copy)
@@ -155,7 +155,7 @@
if (matchedSub != null && params.sid == null) {
if (matchedSub.lang != null && matchedSub.lang.equals("off")) {
PMS.debug(" Disabled the subtitles: " + matchedSub);
- return;
+ //return;
} else
params.sid = matchedSub;
}
@@ -170,14 +170,30 @@
if (configuration.getUseSubtitles()) {
// priority to external subtitles
for(DLNAMediaSubtitle sub:media.subtitlesCodes) {
- PMS.debug("Found subtitles track : " + sub);
- if (sub.file != null) {
- PMS.debug("Found external file : " + sub.file.getAbsolutePath());
- params.sid = sub;
- break;
+ if (matchedSub.lang !=null && matchedSub.lang.equals("off")) {
+ if (sub.flavor != null && sub.flavor.toLowerCase().indexOf("forced") > -1) {
+ if (Iso639.isCodesMatching(sub.lang,configuration.getMencoderSubLanguages())) {
+ PMS.debug("Forcing prefered subtitles : " + sub.getLang() + "/" + sub.flavor);
+ PMS.debug("Forced subtitles track : " + sub);
+ if (sub.file != null) {
+ PMS.debug("Found external forced file : " + sub.file.getAbsolutePath());
+ }
+ params.sid = sub;
+ break;
+ }
+ }
+ continue;
+ } else {
+ PMS.debug("Found subtitles track : " + sub);
+ if (sub.file != null) {
+ PMS.debug("Found external file : " + sub.file.getAbsolutePath());
+ params.sid = sub;
+ break;
+ }
}
}
}
+ if (matchedSub.lang !=null && matchedSub.lang.equals("off")) return;
//
if (params.sid == null) {
[MEncoder] {Audio: DTS/English} {Sub: Embedded/English (forced)}
[MEncoder] {Audio: DTS/English} {Sub: Embedded/English (Singing parts only)}
[MEncoder] {Audio: DTS/English} {Sub: Embedded/English (Non-English speaking parts)}
Index: net/pms/dlna/DLNAMediaDatabase.java
===================================================================
--- net/pms/dlna/DLNAMediaDatabase.java (revision 369)
+++ net/pms/dlna/DLNAMediaDatabase.java (working copy)
@@ -178,6 +178,7 @@
sb.append(" FILEID INT NOT NULL"); //$NON-NLS-1$
sb.append(", ID INT NOT NULL"); //$NON-NLS-1$
sb.append(", LANG VARCHAR2(3)"); //$NON-NLS-1$
+ sb.append(", FLAVOR VARCHAR2(64)"); //$NON-NLS-1$
sb.append(", TYPE INT"); //$NON-NLS-1$
sb.append(", constraint PKSUB primary key (FILEID, ID))"); //$NON-NLS-1$
@@ -309,6 +310,7 @@
DLNAMediaSubtitle sub = new DLNAMediaSubtitle();
sub.id = subrs.getInt("ID"); //$NON-NLS-1$
sub.lang = subrs.getString("LANG"); //$NON-NLS-1$
+ sub.flavor = subrs.getString("FLAVOR"); //$NON-NLS-1$
sub.type = subrs.getInt("TYPE"); //$NON-NLS-1$
media.subtitlesCodes.add(sub);
}
@@ -407,14 +409,15 @@
}
if (media.subtitlesCodes.size() > 0)
- insert = conn.prepareStatement("INSERT INTO SUBTRACKS VALUES (?, ?, ?, ?)"); //$NON-NLS-1$
+ insert = conn.prepareStatement("INSERT INTO SUBTRACKS VALUES (?, ?, ?, ?, ?)"); //$NON-NLS-1$
for(DLNAMediaSubtitle sub:media.subtitlesCodes) {
if (sub.file == null) { // no save of external subtitles
insert.clearParameters();
insert.setInt(1, id);
insert.setInt(2, sub.id);
insert.setString(3, sub.lang);
- insert.setInt(4, sub.type);
+ insert.setString(4, sub.flavor);
+ insert.setInt(5, sub.type);
insert.executeUpdate();
}
}
Index: net/pms/dlna/DLNAMediaInfo.java
===================================================================
--- net/pms/dlna/DLNAMediaInfo.java (revision 369)
+++ net/pms/dlna/DLNAMediaInfo.java (working copy)
@@ -29,6 +29,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.ListIterator;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
@@ -356,7 +357,9 @@
ArrayList<String> lines = (ArrayList<String>) pw.getResults();
int langId = 0;
int subId = 0;
+ ListIterator<String> FFmpegMetaData = lines.listIterator();
for(String line:lines) {
+ FFmpegMetaData.next();
line = line.trim();
if (line.startsWith("Output"))
matchs = false;
@@ -486,7 +489,18 @@
} else
lang.lang = DLNAMediaLang.UND;
lang.id = subId++;
- subtitlesCodes.add(lang);
+// subtitlesCodes.add(lang);
+ int FFmpegMetaDataNr = FFmpegMetaData.nextIndex();
+ if (FFmpegMetaDataNr > -1) line = lines.get(FFmpegMetaDataNr);
+ if (line.indexOf("Metadata:") > -1) {
+ line = lines.get(FFmpegMetaData.nextIndex()+1);
+ int aa = line.indexOf(": ");
+ int bb = line.length();
+ if (aa > -1 && bb > aa) {
+ lang.flavor = line.substring(aa+2, bb);
+ }
+ }
+ subtitlesCodes.add(lang);
}
}
}
@@ -879,7 +893,7 @@
s += "\n\taudio: id=" + audio.id + " / lang: " + audio.lang + " / codec: " + audio.codecA + " / sf:" + audio.sampleFrequency;
}
for(DLNAMediaSubtitle sub:subtitlesCodes) {
- s += "\n\tsub: id=" + sub.id + " / lang: " + sub.lang + " / type: " + sub.type;
+ s += "\n\tsub: id=" + sub.id + " / lang: " + sub.lang + " / flavor: " + sub.flavor + " / type: " + sub.type;
}
return s;
}
Index: net/pms/dlna/DLNAMediaSubtitle.java
===================================================================
--- net/pms/dlna/DLNAMediaSubtitle.java (revision 369)
+++ net/pms/dlna/DLNAMediaSubtitle.java (working copy)
@@ -49,7 +49,7 @@
}
public String toString() {
- return "Sub: " + getSubType() + " / lang: " + lang + " / ID: " + id + " / FILE: " + (file!=null?file.getAbsolutePath():"-");
+ return "Sub: " + getSubType() + " / lang: " + lang + " / flavor: " + flavor + " / ID: " + id + " / FILE: " + (file!=null?file.getAbsolutePath():"-");
}
public void checkUnicode() {
Index: net/pms/dlna/DLNAResource.java
===================================================================
--- net/pms/dlna/DLNAResource.java (revision 369)
+++ net/pms/dlna/DLNAResource.java (working copy)
@@ -475,7 +475,7 @@
name = (player!=null?("[" + player.name() + "]"):"") + " {Audio: " + media_audio.getAudioCodec() + "/" + media_audio.getLang() + "}";
if (media_subtitle != null && media_subtitle.id != -1)
- name += " {Sub: " + media_subtitle.getSubType() + "/" + media_subtitle.getLang() + (media_subtitle.flavor!=null?("/"+media_subtitle.flavor):"") + "}";
+ name += " {Sub: " + media_subtitle.getSubType() + "/" + media_subtitle.getLang() + (media_subtitle.flavor!=null?(" ("+media_subtitle.flavor+")"):"") + "}";
if (avisynth)
name = (player!=null?("[" + player.name()):"") + " + AviSynth]";
Index: net/pms/encoders/Player.java
===================================================================
--- net/pms/encoders/Player.java (revision 369)
+++ net/pms/encoders/Player.java (working copy)
@@ -155,7 +155,7 @@
if (matchedSub != null && params.sid == null) {
if (matchedSub.lang != null && matchedSub.lang.equals("off")) {
PMS.debug(" Disabled the subtitles: " + matchedSub);
- return;
+ //return;
} else
params.sid = matchedSub;
}
@@ -170,14 +170,30 @@
if (configuration.getUseSubtitles()) {
// priority to external subtitles
for(DLNAMediaSubtitle sub:media.subtitlesCodes) {
- PMS.debug("Found subtitles track : " + sub);
- if (sub.file != null) {
- PMS.debug("Found external file : " + sub.file.getAbsolutePath());
- params.sid = sub;
- break;
+ if (matchedSub.lang !=null && matchedSub.lang.equals("off")) {
+ if (sub.flavor != null && sub.flavor.toLowerCase().indexOf("forced") > -1) {
+ if (Iso639.isCodesMatching(sub.lang,configuration.getMencoderSubLanguages())) {
+ PMS.debug("Forcing prefered subtitles : " + sub.getLang() + "/" + sub.flavor);
+ PMS.debug("Forced subtitles track : " + sub);
+ if (sub.file != null) {
+ PMS.debug("Found external forced file : " + sub.file.getAbsolutePath());
+ }
+ params.sid = sub;
+ break;
+ }
+ }
+ continue;
+ } else {
+ PMS.debug("Found subtitles track : " + sub);
+ if (sub.file != null) {
+ PMS.debug("Found external file : " + sub.file.getAbsolutePath());
+ params.sid = sub;
+ break;
+ }
}
}
}
+ if (matchedSub.lang !=null && matchedSub.lang.equals("off")) return;
//
if (params.sid == null) {

Users browsing this forum: No registered users and 9 guests