aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/FileItem.cpp10
-rw-r--r--xbmc/cores/VideoPlayer/DVDSubtitles/DVDFactorySubtitle.cpp15
2 files changed, 19 insertions, 6 deletions
diff --git a/xbmc/FileItem.cpp b/xbmc/FileItem.cpp
index 5623e9a7e1..3898d14e84 100644
--- a/xbmc/FileItem.cpp
+++ b/xbmc/FileItem.cpp
@@ -1801,7 +1801,10 @@ void CFileItem::UpdateInfo(const CFileItem &item, bool replaceLabels /*=true*/)
if (!item.GetArt().empty())
SetArt(item.GetArt());
AppendProperties(item);
- UpdateMimeType();
+
+ SetContentLookup(item.m_doContentLookup);
+ SetMimeType(item.m_mimetype);
+ UpdateMimeType(m_doContentLookup);
}
void CFileItem::MergeInfo(const CFileItem& item)
@@ -1871,7 +1874,10 @@ void CFileItem::MergeInfo(const CFileItem& item)
SetArt(item.GetArt());
}
AppendProperties(item);
- UpdateMimeType();
+
+ SetContentLookup(item.m_doContentLookup);
+ SetMimeType(item.m_mimetype);
+ UpdateMimeType(m_doContentLookup);
}
void CFileItem::SetFromVideoInfoTag(const CVideoInfoTag &video)
diff --git a/xbmc/cores/VideoPlayer/DVDSubtitles/DVDFactorySubtitle.cpp b/xbmc/cores/VideoPlayer/DVDSubtitles/DVDFactorySubtitle.cpp
index 51270337c6..6f922cd02f 100644
--- a/xbmc/cores/VideoPlayer/DVDSubtitles/DVDFactorySubtitle.cpp
+++ b/xbmc/cores/VideoPlayer/DVDSubtitles/DVDFactorySubtitle.cpp
@@ -20,6 +20,12 @@
#include <cstring>
#include <memory>
+#include <regex>
+
+namespace
+{
+constexpr const char* ASS_SCRIPT_TYPE_RE = "^ScriptType:\\s*v4\\.00\\+?";
+}
CDVDSubtitleParser* CDVDFactorySubtitle::CreateParser(std::string& strFile)
{
@@ -32,6 +38,8 @@ CDVDSubtitleParser* CDVDFactorySubtitle::CreateParser(std::string& strFile)
return nullptr;
}
+ const std::regex reAssScriptType{ASS_SCRIPT_TYPE_RE};
+
for (int t = 0; t < 256; t++)
{
if (pStream->ReadLine(line))
@@ -55,10 +63,9 @@ CDVDSubtitleParser* CDVDFactorySubtitle::CreateParser(std::string& strFile)
return new CDVDSubtitleParserVplayer(std::move(pStream), strFile);
}
else if (!StringUtils::CompareNoCase(line, "!: This is a Sub Station Alpha v", 32) ||
- !StringUtils::CompareNoCase(line, "ScriptType: v4.00", 17) ||
- !StringUtils::CompareNoCase(line, "Dialogue: Marked", 16) ||
- !StringUtils::CompareNoCase(line, "Dialogue: ", 10) ||
- !StringUtils::CompareNoCase(line, "[Events]", 8))
+ std::regex_match(line, reAssScriptType) ||
+ !StringUtils::CompareNoCase(line, "[Events]", 8) ||
+ !StringUtils::CompareNoCase(line, "Dialogue:", 9))
{
return new CDVDSubtitleParserSSA(std::move(pStream), strFile);
}