Index: Core/Player/BaseTSReaderPlayer.cs =================================================================== --- Core/Player/BaseTSReaderPlayer.cs (revision 27395) +++ Core/Player/BaseTSReaderPlayer.cs (working copy) @@ -422,7 +422,8 @@ _speedRate = 10000; _isLive = false; _duration = -1d; - if (strFile.ToLower().IndexOf(".tsbuffer") >= 0) + if ((strFile.ToLower().IndexOf(".tsbuffer") >= 0) + || (strFile.ToLower().IndexOf(".tshift") >= 0)) { Log.Info("TSReaderPlayer: live tv"); _isLive = true; Index: Core/Player/PlayerFactory.cs =================================================================== --- Core/Player/PlayerFactory.cs (revision 27395) +++ Core/Player/PlayerFactory.cs (working copy) @@ -269,7 +269,7 @@ string extension = Path.GetExtension(aFileName).ToLower(); if (extension != ".tv" && extension != ".sbe" && extension != ".dvr-ms" && - aFileName.ToLower().IndexOf(".tsbuffer") < 0 && aFileName.ToLower().IndexOf("radio.tsbuffer") < 0) + aFileName.ToLower().IndexOf(".tsbuffer") < 0 && aFileName.ToLower().IndexOf(".tshift") < 0 && aFileName.ToLower().IndexOf("radio.tsbuffer") < 0) { IPlayer newPlayer = GetExternalPlayer(aFileName); if (newPlayer != null) @@ -299,7 +299,7 @@ } // Use TsReader for timeshift buffer file for TvEngine3 & .ts recordings etc. - if (extension == ".tsbuffer" || extension == ".ts" || extension == ".rec") + if (extension == ".tsbuffer" || extension == ".tshift" || extension == ".ts" || extension == ".rec") //new support for Topfield recordings { if (aFileName.ToLower().IndexOf("radio.tsbuffer") >= 0) Index: Core/Util/Util.cs =================================================================== --- Core/Util/Util.cs (revision 27395) +++ Core/Util/Util.cs (working copy) @@ -171,7 +171,7 @@ { using (Profile.Settings xmlreader = new Profile.MPSettings()) { - m_bHideExtensions = xmlreader.GetValueAsBool("gui", "hideextensions", true); + m_bHideExtensions = xmlreader.GetValueAsBool("general", "hideextensions", true); string artistNamePrefixes = xmlreader.GetValueAsString("musicfiles", "artistprefixes", "The, Les, Die"); _artistNamePrefixes = artistNamePrefixes.Split(','); @@ -210,7 +210,7 @@ } } - enableGuiSounds = xmlreader.GetValueAsBool("gui", "enableguisounds", true); + enableGuiSounds = xmlreader.GetValueAsBool("general", "enableguisounds", true); } } @@ -361,7 +361,12 @@ { if (strPath == null) return false; - Match ex = Regex.Match(strPath, @"(live\d+-\d+\.ts(\.tsbuffer(\d+\.ts)?)?)$"); + Match ex = Regex.Match(strPath, @"(live\d+-\d+\.ts(\.tshift(\d+\.ts)?)?)$"); + if (ex.Success) + { + return true; + } + ex = Regex.Match(strPath, @"(live\d+-\d+\.ts(\.tsbuffer(\d+\.ts)?)?)$"); return ex.Success; } @@ -2701,7 +2706,7 @@ { using (Settings xmlreader = new MPSettings()) { - _fileLookUpCacheEnabled = xmlreader.GetValueAsBool("gui", "fileexistscache", false); + _fileLookUpCacheEnabled = xmlreader.GetValueAsBool("general", "fileexistscache", false); } } return (_fileLookUpCacheEnabled.HasValue && _fileLookUpCacheEnabled.Value); Index: WindowPlugins/GUIMusic/GUIMusicOverlay.cs =================================================================== --- WindowPlugins/GUIMusic/GUIMusicOverlay.cs (revision 27395) +++ WindowPlugins/GUIMusic/GUIMusicOverlay.cs (working copy) @@ -148,7 +148,8 @@ if (g_Player.Playing) { - if (g_Player.CurrentFile.Contains(".tsbuffer")) // timeshifting via TVServer ? + if (g_Player.CurrentFile.Contains(".tsbuffer") + || g_Player.CurrentFile.Contains(".tshift")) // timeshifting via TVServer ? { PlayListItem pitem = playlistPlayer.GetCurrentItem(); if (pitem != null) @@ -496,6 +497,7 @@ string coverart; // check if radio via TVPlugin if (strFName.EndsWith(".tsbuffer", StringComparison.InvariantCultureIgnoreCase) || + strFName.EndsWith(".tshift", StringComparison.InvariantCultureIgnoreCase) || strFName.StartsWith("rtsp://", StringComparison.InvariantCultureIgnoreCase)) { // yes