Index: DirectShowFilters/MPAudioswitcher/source/StreamSwitcher.cpp =================================================================== --- DirectShowFilters/MPAudioswitcher/source/StreamSwitcher.cpp (revision 26249) +++ DirectShowFilters/MPAudioswitcher/source/StreamSwitcher.cpp (working copy) @@ -1261,7 +1261,7 @@ *plcid = 0; if(pdwGroup) - *pdwGroup = 0; + *pdwGroup = 1; if(ppszName && (*ppszName = (WCHAR*)CoTaskMemAlloc((wcslen(pPin->Name())+1)*sizeof(WCHAR)))) wcscpy(*ppszName, pPin->Name()); Index: mediaportal/Core/Player/VideoPlayerVMR7.cs =================================================================== --- mediaportal/Core/Player/VideoPlayerVMR7.cs (revision 26249) +++ mediaportal/Core/Player/VideoPlayerVMR7.cs (working copy) @@ -31,6 +31,7 @@ using MediaPortal.GUI.Library; using MediaPortal.Profile; using MediaPortal.Player.Subtitles; +using System.Collections.Generic; namespace MediaPortal.Player @@ -1179,6 +1180,40 @@ { string streamName = FStreams.GetStreamInfos(StreamType.Audio, iStream).Name; // remove prefix, which is added by Haali Media Splitter + #region External Audio File + //This is Sebastiii unsupported release version: + //Take the language section from filename and if it's not existing take the first part of filename before "." + //for example : SERIE.S01E01.720p.HDTV.X264.ac3 it take SERIE AC3 for OSD display. + //for example : SERIE.S01E01.720p.HDTV.X264.English.ac3 it take ENGLISH AC3 for OSD display. + if (streamName.EndsWith(".mp3") || streamName.EndsWith(".ac3") || streamName.EndsWith(".mka") || streamName.EndsWith(".dts")) + { + string path = m_strCurrentFile; + string FileWoutExt = Path.GetFileNameWithoutExtension(path); + string FileName = Path.GetFileName(path); + string ExtensionFile = Path.GetExtension(streamName); + string[] ListName = FileName.Split('.'); + string languageFile = Path.GetFileNameWithoutExtension(streamName).Replace(FileWoutExt, ""); + languageFile = languageFile.Trim('.'); + + if (streamName.StartsWith(FileWoutExt)) + { + if (languageFile != "") + { + streamName = languageFile + (ExtensionFile.Replace('.', ' ')); + Log.Debug("VideoPlayerVMR7-AudioLanguage Language Found : LanguageFile \"{0}\", streamName \"{1}\"", languageFile, streamName); + } + else + { + streamName = ListName[0] + (ExtensionFile.Replace('.', ' ')); + Log.Debug("VideoPlayerVMR7-AudioLanguage No Language : ListName \"{0}\", streamName \"{1}\"", ListName[0], streamName); + } + return streamName; + } + } + //END This is Sebastiii unsupported release version. + #endregion + + // remove prefix, which is added by Haali Media Splitter streamName = Regex.Replace(streamName, @"^A: ", ""); // Check if returned string contains both language and trackname info // For example Haali Media Splitter returns mkv streams as: "trackname [language]", @@ -1207,7 +1242,22 @@ public override string AudioType(int iStream) { string streamName = FStreams.GetStreamInfos(StreamType.Audio, iStream).Name; - // remove prefix, which is added by Haali Media Splitter + + #region External Audio File + //This is Sebastiii unsupported release version: + //Take the language section from filename and if it's not existing take the first part of filename before "." + //for example : SERIE.S01E01.720p.HDTV.X264.ac3 it take SERIE AC3 for OSD display. + //for example : SERIE.S01E01.720p.HDTV.X264.English.ac3 it take ENGLISH AC3 for OSD display. + //This part is always enable in AudioLanguage code so we don't need to reload language name again. + if (streamName.EndsWith(".mp3") || streamName.EndsWith(".ac3") || streamName.EndsWith(".mka") || streamName.EndsWith(".dts")) + { + streamName = ""; + return streamName; + } + //END This is Sebastiii unsupported release version: + #endregion + + // remove prefix, which is added by Haali Media Splitter streamName = Regex.Replace(streamName, @"^A: ", ""); // Check if returned string contains both language and trackname info // For example Haali Media Splitter returns mkv streams as: "trackname [language]", @@ -1317,6 +1367,17 @@ filter = foundfilterinfos.achName; int cStreams = 0; pStrm.Count(out cStreams); + + #region new logic for VMR7 + + if (cStreams < 2) + { + Log.Error("Skipping one stream in {0}", filter); + continue; + } + + #endregion + //GET STREAMS for (int istream = 0; istream < cStreams; istream++) { Index: mediaportal/Core/Player/VideoPlayerVMR9.cs =================================================================== --- mediaportal/Core/Player/VideoPlayerVMR9.cs (revision 26249) +++ mediaportal/Core/Player/VideoPlayerVMR9.cs (working copy) @@ -188,7 +188,78 @@ } DirectShowUtil.ReleaseComObject(baseFilter); baseFilter = null; } + + #region load external audio stream (This is Sebastiii unsupported release version) + //This is Sebastiii unsupported release version: + //Load all external audio file (ac3, dts, mka, mp3) only with if the name match partially with video file. + string path = m_strCurrentFile; + string FileWoutExt = Path.GetFileNameWithoutExtension(path); + string FileName = Path.GetFileName(path); + string directory = Path.GetDirectoryName(path); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - FileName \"{0}\"", FileName); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - path \"{0}\"", path); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - directory \"{0}\"", directory); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - Filewoutext \"{0}\"", FileWoutExt); + + string[] mp3List = Directory.GetFiles(directory, (FileWoutExt + "*.mp3")); + foreach (string mp3File in mp3List) + { + if (File.Exists(mp3File)) + Log.Debug("VideoPlayerVMR9 : Sebastiii() - MP3 file found \"{0}\"", mp3File); + { + if (Path.GetFileName(mp3File).StartsWith(FileWoutExt)) + { + graphBuilder.RenderFile(mp3File, string.Empty); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - MP3 file load in GraphBuilder \"{0}\"", mp3File); + } + } + } + + string[] mkaList = Directory.GetFiles(directory, (FileWoutExt + "*.mka")); + foreach (string mkaFile in mkaList) + { + if (File.Exists(mkaFile)) + Log.Debug("VideoPlayerVMR9 : Sebastiii() - MKA file found \"{0}\"", mkaFile); + { + if (Path.GetFileName(mkaFile).StartsWith(FileWoutExt)) + { + graphBuilder.RenderFile(mkaFile, string.Empty); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - MKA file load in GraphBuilder \"{0}\"", mkaFile); + } + } + } + + string[] ac3List = Directory.GetFiles(directory, (FileWoutExt + "*.ac3")); + foreach (string ac3File in ac3List) + { + if (File.Exists(ac3File)) + Log.Debug("VideoPlayerVMR9 : Sebastiii() - AC3 file found \"{0}\"", ac3File); + { + if (Path.GetFileName(ac3File).StartsWith(FileWoutExt)) + { + graphBuilder.RenderFile(ac3File, string.Empty); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - AC3 file load in GraphBuilder \"{0}\"", ac3File); + } + } + } + + string[] dtsList = Directory.GetFiles(directory, (FileWoutExt + "*.dts")); + foreach (string dtsFile in dtsList) + { + if (File.Exists(dtsFile)) + Log.Debug("VideoPlayerVMR9 : Sebastiii() - DTS file found \"{0}\"", dtsFile); + { + if (Path.GetFileName(dtsFile).StartsWith(FileWoutExt)) + { + graphBuilder.RenderFile(dtsFile, string.Empty); + Log.Debug("VideoPlayerVMR9 : Sebastiii() - DTS file load in GraphBuilder \"{0}\"", dtsFile); + } + } + } + //END This is Sebastiii unsupported release version: + #endregion + DirectShowUtil.RenderUnconnectedOutputPins(graphBuilder, source); DirectShowUtil.ReleaseComObject(source); source = null; DirectShowUtil.RemoveUnusedFiltersFromGraph(graphBuilder);