- Code: Select all
inputStream = dlna.getThumbnailInputStream();
// <addition>
} else if (fileName.indexOf("subtitle0000") > -1) {
output.setHeader(HttpHeaders.Names.CONTENT_TYPE, "text/plain");
output.setHeader(HttpHeaders.Names.EXPIRES, getFUTUREDATE() + " GMT");
List<DLNAMediaSubtitle> subs = dlna.getMedia().getSubtitlesCodes();
if(subs != null && !subs.isEmpty()) {
// TODO: maybe loop subs to get the requested subtitle type instead of using the first one
DLNAMediaSubtitle sub = subs.get(0);
inputStream = new java.io.FileInputStream(sub.getFile());
}
// </addition>
} else {
// This is a request for a regular file.
// If range has not been initialized yet and the DLNAResource has its
// own start and end defined, initialize range with those values before
// requesting the input stream.
Range.Time splitRange = dlna.getSplitRange();
if (range.getStart() == null && splitRange.getStart() != null) {
range.setStart(splitRange.getStart());
}
if (range.getEnd() == null && splitRange.getEnd() != null) {
range.setEnd(splitRange.getEnd());
}
inputStream = dlna.getInputStream(Range.create(lowRange, highRange, range.getStart(), range.getEnd()), mediaRenderer);
// <addition>
List<DLNAMediaSubtitle> subs = dlna.getMedia().getSubtitlesCodes();
if(subs != null && !subs.isEmpty()) {
DLNAMediaSubtitle sub = subs.get(0);
int type = sub.getType();
if(type < DLNAMediaSubtitle.subExtensions.length) {
String strType = DLNAMediaSubtitle.subExtensions[type -1];
output.setHeader("CaptionInfo.sec", "http://"+PMS.get().getServer().getHost()+':'+PMS.get().getServer().getPort()+"/get/"+id+"/subtitle0000." + strType);
}
}
// </addition>
EDIT: ^range check added for DLNAMediaSubtitle.subExtensions. Embedded subs crashed the code without it.
