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);
