Index: mediaportal/Core/guilib/Action.cs
===================================================================
--- mediaportal/Core/guilib/Action.cs	(revision 26462)
+++ mediaportal/Core/guilib/Action.cs	(working copy)
@@ -206,6 +206,7 @@
       ACTION_TVGUIDE_PREV_GROUP = 9996, // switch to the previous tv group in guide
       ACTION_ROTATE_PICTURE_180 = 9997, // rotate current picture 180 during slideshow.
       ACTION_ROTATE_PICTURE_270 = 9998, // rotate current picture 270 during slideshow.
+      ACTION_NEXT_EDITION = 134 // Switch to next edition
     } ;
 
     #endregion
Index: mediaportal/Core/Player/g_player.cs
===================================================================
--- mediaportal/Core/Player/g_player.cs	(revision 26462)
+++ mediaportal/Core/Player/g_player.cs	(working copy)
@@ -2177,6 +2177,70 @@
       }
     }
 
+    #region Edition selection
+    /// <summary>
+    /// Property which returns the total number of edition streams available
+    /// </summary>
+    public static int EditionStreams
+    {
+        get
+        {
+            if (_player == null)
+            {
+                return 0;
+            }
+            return _player.EditionStreams;
+        }
+    }
+
+    /// <summary>
+    /// Property to get/set the current edition stream
+    /// </summary>
+    public static int CurrentEditionStream
+    {
+        get
+        {
+            if (_player == null)
+            {
+                return 0;
+            }
+            return _player.CurrentEditionStream;
+        }
+        set
+        {
+            if (_player != null)
+            {
+                _player.CurrentEditionStream = value;
+            }
+        }
+    }
+
+    public static string EditionLanguage(int iStream)
+    {
+        if (_player == null)
+        {
+            return Strings.Unknown;
+        }
+
+        string stream = _player.EditionLanguage(iStream);
+        return Util.Utils.TranslateLanguageString(stream);
+    }
+
+    /// <summary>
+    /// Property to get the type of an edition stream
+    /// </summary>
+    public static string EditionType(int iStream)
+    {
+        if (_player == null)
+        {
+            return Strings.Unknown;
+        }
+
+        string stream = _player.EditionType(iStream);
+        return stream;
+    }
+    #endregion
+
     #region subtitle/audio stream selection
 
     /// <summary>
@@ -2510,6 +2574,46 @@
         EnableSubtitle = true;
       }
     }
+      
+    /// <summary>
+    /// Switches to the next edition stream.
+    /// 
+    /// Calls are directly pushed to the embedded player. And care 
+    /// is taken not to do multiple calls to the player.
+    /// </summary>
+    public static void SwitchToNextEdition()
+    {
+        if (_player != null)
+        {
+            // take current stream and number of
+            int streams = _player.EditionStreams;
+            int current = _player.CurrentEditionStream;
+            int next = current;
+            bool success = false;
+            // Loop over the stream, so we skip the disabled streams
+            // stops if the loop is over the current stream again.
+            do
+            {
+                // if next stream is greater then the amount of stream
+                // take first
+                if (++next >= streams)
+                {
+                    next = 0;
+                }
+                // set the next stream
+                _player.CurrentEditionStream = next;
+                // if the stream is set in, stop the loop
+                if (next == _player.CurrentEditionStream)
+                {
+                    success = true;
+                }
+            } while ((next != current) && (success == false));
+            if (success == false)
+            {
+                Log.Info("g_Player: Failed to switch to next editionstream.");
+            }
+        }
+    }
 
     private static bool IsFileUsedbyAnotherProcess(string file)
     {
Index: mediaportal/Core/Player/IPlayer.cs
===================================================================
--- mediaportal/Core/Player/IPlayer.cs	(revision 26462)
+++ mediaportal/Core/Player/IPlayer.cs	(working copy)
@@ -470,7 +470,35 @@
       set { }
     }
 
+    public virtual int EditionStreams
+    {
+        get { return 1; }
+    }
+
     /// <summary>
+    /// Property to get/set the current edition stream
+    /// </summary>
+    public virtual int CurrentEditionStream
+    {
+        get { return 0; }
+        set { }
+    }
+    /// <summary>
+    /// Property to get the name for an edition stream
+    /// </summary>
+    public virtual string EditionLanguage(int iStream)
+    {
+        return Strings.Unknown;
+    }
+
+    /// <summary>
+    /// Property to get the type of an edition stream
+    /// </summary>
+    public virtual string EditionType(int iStream)
+    {
+        return Strings.Unknown;
+    }
+    /// <summary>
     /// Property to get the name for an audio stream
     /// </summary>
     public virtual string AudioLanguage(int iStream)
Index: mediaportal/Core/Player/VideoPlayerVMR7.cs
===================================================================
--- mediaportal/Core/Player/VideoPlayerVMR7.cs	(revision 26462)
+++ mediaportal/Core/Player/VideoPlayerVMR7.cs	(working copy)
@@ -139,6 +139,7 @@
       Subtitle,
       Subtitle_hidden,
       Subtitle_shown,
+      Edition,
       Unknown,
     }
 
@@ -549,7 +550,7 @@
       {
         if (mediaPos != null)
         {
-          //mediaPos.get_Duration(out m_dDuration);
+          mediaPos.get_Duration(out m_dDuration); //This is Sebastiii unsupported release version (refresh timeline when change EDITION
           mediaPos.get_CurrentPosition(out m_dCurrentPos);
         }
         if (GUIGraphicsContext.BlankScreen ||
@@ -1492,9 +1493,9 @@
                   FSInfos.LCID = sPLCid;
                   FSInfos.Id = istream;
                   FSInfos.Type = StreamType.Unknown;
-                  //Avoid listing ffdshow video filter's plugins amongst subtitle and audio streams.
+                  //Avoid listing ffdshow video filter's plugins amongst subtitle and audio streams and editions.
                   if ((FSInfos.Filter == "ffdshow DXVA Video Decoder" || FSInfos.Filter == "ffdshow Video Decoder" || FSInfos.Filter == "ffdshow raw video filter") &&
-                      ((sPDWGroup == 1) || (sPDWGroup == 2)))
+                      ((sPDWGroup == 1) || (sPDWGroup == 2) || (sPDWGroup == 18)))
                   {
                     FSInfos.Type = StreamType.Unknown;
                   }
@@ -1525,6 +1526,11 @@
                   {
                     FSInfos.Type = StreamType.Subtitle_shown;
                   }
+                    //EDITION
+                  else if (sPDWGroup == 18)
+                  {
+                    FSInfos.Type = StreamType.Edition;
+                  }
                   Log.Debug("VideoPlayer: FoundStreams: Type={0}; Name={1}, Filter={2}, Id={3}, PDWGroup={4}, LCID={5}",
                             FSInfos.Type.ToString(), FSInfos.Name, FSInfos.Filter, FSInfos.Id.ToString(),
               sPDWGroup.ToString(), sPLCid.ToString());
@@ -1536,6 +1542,7 @@
                     case StreamType.Video:
                     case StreamType.Audio:
                     case StreamType.Subtitle:
+                    case StreamType.Edition:
                       if (FStreams.GetStreamCount(FSInfos.Type) == 0)
                       {
                         FSInfos.Current = true;
@@ -1581,6 +1588,64 @@
 
     #endregion
 
+    #region edition selection
+
+    /// <summary>
+    /// Property to get the language for an edition stream
+    /// </summary>
+    public override string EditionLanguage(int iStream)
+    {
+        string streamName = FStreams.GetStreamInfos(StreamType.Edition, iStream).Name;
+        return streamName;
+    }
+
+    public override string EditionType(int iStream)
+    {
+        string streamName = FStreams.GetStreamInfos(StreamType.Edition, iStream).Name;
+        return streamName;
+    }
+
+    public override int EditionStreams
+    {
+        get { return FStreams.GetStreamCount(StreamType.Edition); }
+    }
+
+    /// <summary>
+    /// Property to get/set the current edition stream
+    /// </summary>
+    public override int CurrentEditionStream
+    {
+        get
+        {
+            for (int i = 0; i < FStreams.GetStreamCount(StreamType.Edition); i++)
+            {
+                if (FStreams.GetStreamInfos(StreamType.Edition, i).Current)
+                {
+                    return i;
+                }
+            }
+            return 0;
+        }
+        set
+        {
+            for (int i = 0; i < FStreams.GetStreamCount(StreamType.Edition); i++)
+            {
+                if (FStreams.GetStreamInfos(StreamType.Edition, i).Current)
+                {
+                    FStreams.SetCurrentValue(StreamType.Edition, i, false);
+                }
+            }
+            FStreams.SetCurrentValue(StreamType.Edition, value, true);
+            EnableStream(FStreams.GetStreamInfos(StreamType.Edition, value).Id, 0,
+                         FStreams.GetStreamInfos(StreamType.Edition, value).Filter);
+            EnableStream(FStreams.GetStreamInfos(StreamType.Edition, value).Id, AMStreamSelectEnableFlags.Enable,
+                         FStreams.GetStreamInfos(StreamType.Edition, value).Filter);
+            Log.Info("This is Sebastiii unsupported release version: VideoPlayer:Edition Duration Change:{0}", m_dDuration);
+            return;
+        }
+    }
+    #endregion
+
     #region IDisposable Members
 
     public override void Dispose()
Index: mediaportal/MediaPortal.Base/language/strings_en.xml
===================================================================
--- mediaportal/MediaPortal.Base/language/strings_en.xml	(revision 26525)
+++ mediaportal/MediaPortal.Base/language/strings_en.xml	(working copy)
@@ -1268,8 +1268,8 @@
     <String id="2611">Czech</String>
     <String id="2612">Hungarian</String>
     <String id="2613">Russian</String>
-    <String id="2614">Ukrainian</String>
-    <String id="2615">German</String>
+	<String id="2614">Ukrainian</String>
+	<String id="2615">German</String>
     <String id="2650">Reloading fonts - please wait...</String>
     <String id="2700">Open CI menu</String>
     <String id="2997">h</String>
@@ -1934,6 +1934,7 @@
     <String id="200070">Please check firewall</String>
     <String id="200071">Delete this folder and all subfolders?</String>
     <String id="200072">Upcoming episodes</String>
-    <String id="200091">Chapter</String>
+	<String id="200090">Edition</String>
+	<String id="200091">Chapter</String>
   </Section>
 </Language>
\ No newline at end of file
Index: mediaportal/MediaPortal.Base/language/strings_fr.xml
===================================================================
--- mediaportal/MediaPortal.Base/language/strings_fr.xml	(revision 26462)
+++ mediaportal/MediaPortal.Base/language/strings_fr.xml	(working copy)
@@ -1910,6 +1910,7 @@
     <String id="1079874">Activer image courante comme Fanart</String>
     <String id="1079875">Activer image courante par defaut</String>
     <String id="200072">Episodes suivants</String>
+	<String id="200090">Edition</String>
 	<String id="200091">Chapitre</String>
   </Section>
 </Language>
\ No newline at end of file
Index: mediaportal/WindowPlugins/GUIVideoFiles/GUIVideoFullscreen.cs
===================================================================
--- mediaportal/WindowPlugins/GUIVideoFiles/GUIVideoFullscreen.cs	(revision 26462)
+++ mediaportal/WindowPlugins/GUIVideoFiles/GUIVideoFullscreen.cs	(working copy)
@@ -737,6 +737,36 @@
           }
           break;
 
+        //This is Sebastiii unsupported release version.
+        case Action.ActionType.ACTION_NEXT_EDITION:
+          {
+              if (g_Player.EditionStreams > 1)
+              {
+                  _showStatus = true;
+                  _timeStatusShowTime = (DateTime.Now.Ticks / 10000);
+                  GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_LABEL_SET, GetID, 0,
+                                                  (int)Control.LABEL_ROW1, 0, 0, null);
+                  g_Player.SwitchToNextEdition();
+
+                  String language = g_Player.EditionLanguage(g_Player.CurrentEditionStream);
+                  if (String.Equals(language, "Edition") || String.Equals(language, ""))
+                  {
+                      msg.Label = string.Format("{0} ({1}/{2})", g_Player.EditionType(g_Player.CurrentEditionStream),
+                                                g_Player.CurrentEditionStream + 1, g_Player.EditionStreams);
+                  }
+                  else
+                  {
+                      msg.Label = string.Format("{0} {1} ({2}/{3})", language, g_Player.EditionType(g_Player.CurrentEditionStream),
+                                                g_Player.CurrentEditionStream + 1, g_Player.EditionStreams);
+                  }
+
+                  OnMessage(msg);
+                  Log.Info("GUIVideoFullscreen: switched edition to {0}", msg.Label);
+              }
+          }
+          break;
+        //END This is Sebastiii unsupported release version.
+
         case Action.ActionType.ACTION_NEXT_SUBTITLE:
           {
             if (g_Player.SubtitleStreams > 0)
@@ -1190,6 +1220,12 @@
         dlg.AddLocalizedString(492);
       }
 
+      // Edition stream selection, show only when more than one streams exists
+      if (g_Player.EditionStreams > 1)
+      {
+          dlg.AddLocalizedString(200090);
+      }
+
       eAudioDualMonoMode dualMonoMode = g_Player.GetAudioDualMonoMode();
       if (dualMonoMode != eAudioDualMonoMode.UNSUPPORTED)
       {
@@ -1267,6 +1303,10 @@
           GUIWindowManager.ShowPreviousWindow();
           break;
 
+        case 200090:
+          ShowEditionStreamsMenu();
+          break;
+
         case 200091:
           ShowChapterStreamsMenu();
           break;
@@ -1353,6 +1393,50 @@
       }
     }
 
+    // Add edition stream selection to be able to switch edition streams in .ts recordings
+    private void ShowEditionStreamsMenu()
+    {
+        if (dlg == null)
+        {
+            return;
+        }
+        dlg.Reset();
+        dlg.SetHeading(200090); // Edition Streams
+
+        // get the number of editionstreams in the current movie
+        int count = g_Player.EditionStreams;
+        // cycle through each editionstream and add it to our list control
+        for (int i = 0; i < count; i++)
+        {
+            string editionType = g_Player.EditionType(i);
+            if (editionType == Strings.Unknown || String.Equals(editionType, "") || editionType.Equals(g_Player.EditionType(i)))
+            {
+                dlg.Add(g_Player.EditionLanguage(i));
+            }
+            else
+            {
+                dlg.Add(String.Format("{0} {1}", g_Player.EditionLanguage(i), editionType));
+            }
+        }
+          
+        // select/focus the editionstream, which is active atm
+        dlg.SelectedLabel = g_Player.CurrentEditionStream;
+
+        // show dialog and wait for result
+        _IsDialogVisible = true;
+        dlg.DoModal(GetID);
+        _IsDialogVisible = false;
+
+        if (dlg.SelectedId == -1)
+        {
+            return;
+        }
+        if (dlg.SelectedLabel != g_Player.CurrentEditionStream)
+        {
+            g_Player.CurrentEditionStream = dlg.SelectedLabel;
+        }
+    }
+
     // Add audio stream selection to be able to switch audio streams in .ts recordings
     private void ShowAudioStreamsMenu()
     {
