diff --git a/resources/language/English/strings.xml b/resources/language/English/strings.xml
index 990356ac..f4d776b5 100644
--- a/resources/language/English/strings.xml
+++ b/resources/language/English/strings.xml
@@ -244,6 +244,7 @@
Play Count Sync Indication:
Enable HTTPS
Use Season 100 for TV Show Specials (Requires Reset)
+ Force Transcoding Codecs
Active
diff --git a/resources/lib/PlayUtils.py b/resources/lib/PlayUtils.py
index 8deff44b..e64b7d3d 100644
--- a/resources/lib/PlayUtils.py
+++ b/resources/lib/PlayUtils.py
@@ -76,6 +76,18 @@ class PlayUtils():
# Works out if we are direct playing or not
def isDirectPlay(self, result):
+ addonSettings = xbmcaddon.Addon(id='plugin.video.emby')
+
+ # check if we should force encoding due to the forceTranscodingCodecs setting
+ forceTranscodingCodecs = addonSettings.getSetting('forceTranscodingCodecs')
+ if forceTranscodingCodecs:
+ forceTranscodingCodecsSet = frozenset(forceTranscodingCodecs.lower().split(','))
+ codecs = frozenset([mediaStream.get('Codec', None) for mediaStream in result.get('MediaStreams', [])])
+ commonCodecs = forceTranscodingCodecsSet & codecs
+ #xbmc.log("emby isDirectPlay MediaStreams codecs: %s forceTranscodingCodecs: %s, common: %s" % (codecs, forceTranscodingCodecsSet, commonCodecs))
+ if commonCodecs:
+ return False
+
if (self.fileExists(result) or (result.get("LocationType") == "FileSystem" and self.isNetworkQualitySufficient(result) == True and self.isLocalPath(result) == False)):
return True
else:
@@ -144,7 +156,7 @@ class PlayUtils():
elif (videoQuality == "18"):
return '1000000'
else:
- return '10000000'
+ return '2147483' # max bit rate supported by server (max signed 32bit integer)
def fileExists(self, result):
path=result.get("Path").encode('utf-8')
diff --git a/resources/settings.xml b/resources/settings.xml
index ae2bf36a..df8664ad 100644
--- a/resources/settings.xml
+++ b/resources/settings.xml
@@ -7,7 +7,9 @@
+
+