Index: mediaportal/Core/Player/g_player.cs
===================================================================
--- mediaportal/Core/Player/g_player.cs	(revision 26249)
+++ mediaportal/Core/Player/g_player.cs	(working copy)
@@ -94,7 +94,8 @@
     //actual program metadata - usefull for tv - avoids extra DB Lookups. 
 
     private static string _currentFileName = ""; //holds the actual file being played. Usefull for rtsp streams. 
-    private static double[] _chapters = null;
+    public static double[] _chapters = null;
+    public static string[] _chaptersname = null; //sebastiii
     private static double[] _jumpPoints = null;
     private static bool _autoComSkip = false;
     private static bool _loadAutoComSkipSetting = true;
@@ -622,6 +623,7 @@
         GUIGraphicsContext.IsPlayingVideo = false;
         CachePlayer();
         _chapters = null;
+        _chaptersname = null; //Sebastiii
         _jumpPoints = null;
 
         if (!keepExclusiveModeOn && !keepTimeShifting)
@@ -1343,6 +1345,10 @@
             {
               _chapters = _player.Chapters;
             }
+            if (_chaptersname == null) //Sebastiii
+            {
+              _chaptersname = _player.ChaptersName;
+            }
             OnStarted();
           }
           return bResult;
@@ -1965,7 +1971,6 @@
       }
     }
 
-
     public static bool HasViz
     {
       get
Index: mediaportal/Core/Player/IPlayer.cs
===================================================================
--- mediaportal/Core/Player/IPlayer.cs	(revision 26249)
+++ mediaportal/Core/Player/IPlayer.cs	(working copy)
@@ -520,6 +520,15 @@
     }
 
     /// <summary>
+    /// Property to get chapters name
+    /// </summary>
+    public virtual string[] ChaptersName //Sebastiii
+    {
+      get { return null; }
+    }
+
+
+    /// <summary>
     /// Method which is called by MP if the player needs to update its video window
     /// because the coordinates have been changed
     /// </summary>
Index: mediaportal/Core/Player/VideoPlayerVMR7.cs
===================================================================
--- mediaportal/Core/Player/VideoPlayerVMR7.cs	(revision 26249)
+++ mediaportal/Core/Player/VideoPlayerVMR7.cs	(working copy)
@@ -38,7 +38,6 @@
   public abstract class VideoPlayerVMR7 : IPlayer
   {
     protected const int MAX_STREAMS = 100;
-
     protected struct FilterStreamInfos
     {
       public int Id;
@@ -193,6 +192,7 @@
     protected DateTime updateTimer;
     protected FilterStreams FStreams = null;
     protected double[] chapters = null;
+    protected string[] chaptersname = null; //Sebastiii
     private DateTime elapsedTimer = DateTime.Now;
 
     protected const string defaultLanguageCulture = "EN";
@@ -202,6 +202,11 @@
       get { return chapters; }
     }
 
+    public override string[] ChaptersName //Sebastiii
+    {
+      get { return chaptersname; }
+    }
+
     private VMR7Util vmr7 = null;
     protected g_Player.MediaType _mediaType;
 
@@ -1266,7 +1271,7 @@
       set { SubEngine.GetInstance().Enable = value; }
     }
 
-    public bool AnalyseStreams()
+	public bool AnalyseStreams()
     {
       try
       {
@@ -1297,14 +1302,17 @@
                   if (pEs.get_MarkerCount(out markerCount) == 0 && markerCount > 0)
                   {
                     chapters = new double[markerCount];
+                    chaptersname = new string[markerCount]; //Sebastiii
                     for (int i = 1; i <= markerCount; i++)
                     {
                       double markerTime = 0;
                       pEs.GetMarkerTime(i, out markerTime);
                       chapters[i - 1] = markerTime;
-                      //there is no usage to chapter's names right now
-                      //string name = null;
-                      //pEs.GetMarkerName(i, out name);
+                      //Chapter's names right now
+                      string name = null;
+                      pEs.GetMarkerName(i, out name);
+                      chaptersname[i - 1] = name; //Sebastiii
+                      Log.Error("This is Sebastiii unsupported release version: VideoPlayerVMR7-chapters : markerCount \"{0}\", markerTime \"{1}\", Name \"{2}\"", markerCount, markerTime, name);
                     }
                   }
                 }
Index: mediaportal/MediaPortal.Base/language/strings_en.xml
===================================================================
--- mediaportal/MediaPortal.Base/language/strings_en.xml	(revision 26249)
+++ mediaportal/MediaPortal.Base/language/strings_en.xml	(working copy)
@@ -1265,7 +1265,8 @@
     <String id="2611">Czech</String>
     <String id="2612">Hungarian</String>
     <String id="2613">Russian</String>
-		<String id="2614">Ukrainian</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>
@@ -1926,5 +1927,6 @@
     <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>
   </Section>
 </Language>
\ No newline at end of file
Index: mediaportal/MediaPortal.Base/language/strings_fr.xml
===================================================================
--- mediaportal/MediaPortal.Base/language/strings_fr.xml	(revision 26249)
+++ mediaportal/MediaPortal.Base/language/strings_fr.xml	(working copy)
@@ -1242,6 +1242,7 @@
     <String id="2612">Hongrois</String>
     <String id="2613">Russe</String>
     <String id="2614">Ukrainien</String>
+    <String id="2615">Allemand</String>
     <String id="2650">Recharge fonts - attendez...</String>
     <String id="2700">Ouvrir le menu CI</String>
     <String id="2997">h</String>
@@ -1909,5 +1910,6 @@
     <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="200091">Chapitre</String>
   </Section>
 </Language>
\ No newline at end of file
Index: mediaportal/WindowPlugins/GUIVideoFiles/GUIVideoFullscreen.cs
===================================================================
--- mediaportal/WindowPlugins/GUIVideoFiles/GUIVideoFullscreen.cs	(revision 26249)
+++ mediaportal/WindowPlugins/GUIVideoFiles/GUIVideoFullscreen.cs	(working copy)
@@ -1182,10 +1182,10 @@
         dlg.AddLocalizedString(975); // Previous chapter
         dlg.AddLocalizedString(976); // Next chapter
       }
+      // Chapter stream selection, show only when more than one streams exists
       else if (g_Player.HasChapters) // For video files with chapters
       {
-        dlg.AddLocalizedString(976); // Next chapter
-        dlg.AddLocalizedString(975); // Previous chapter
+        dlg.AddLocalizedString(200091);
       }
 
       if (g_Player.IsVideo)
@@ -1239,9 +1239,108 @@
           GUIGraphicsContext.IsFullScreenVideo = false;
           GUIWindowManager.ShowPreviousWindow();
           break;
+
+        case 200091:
+          ShowChapterStreamsMenu();
+          break;
+
       }
     }
 
+    private void ShowChapterStreamsMenu()
+    {
+      if (dlg == null)
+      {
+        dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);
+      }
+      if (dlg == null)
+      {
+        return;
+      }
+      dlg.Reset();
+      dlg.SetHeading(200091); // Chapters Streams
+
+      // Previous window
+      dlg.Add(String.Format("{0}", GUILocalizeStrings.Get(970)));
+      dlg.SelectedLabel = 0;
+      // Previous chapter
+      dlg.Add(String.Format("{0}", GUILocalizeStrings.Get(975)));
+      dlg.SelectedLabel = 1;
+      // Next chapter
+      dlg.Add(String.Format("{0}", GUILocalizeStrings.Get(976)));
+      dlg.SelectedLabel = 2;
+
+      //List all chapters
+      double[] chaptersList = new double[0];
+      //List all chapters Name
+      string[] chaptersname = new string[0];
+     
+      chaptersname = g_Player._chaptersname;
+      chaptersList = g_Player._chapters;
+      for (int i = 0; i < chaptersList.Length; i++)
+      {
+        GUIListItem item = new GUIListItem();
+        if (chaptersname == null)
+        {
+          item.Label = (String.Format("{0} #{1}", GUILocalizeStrings.Get(200091), (i + 1)));
+          item.Label2 = Util.Utils.SecondsToHMSString((int)chaptersList[i]);
+          dlg.Add(item);
+        }
+        else
+        {
+          if (chaptersname[i].Equals(""))
+          {
+            item.Label = (String.Format("{0} #{1}", GUILocalizeStrings.Get(200091), (i + 1)));
+            item.Label2 = Util.Utils.SecondsToHMSString((int)chaptersList[i]);
+            dlg.Add(item);
+          }
+          else
+          {
+            item.Label = (String.Format("{0} #{1}  [{2}]", GUILocalizeStrings.Get(200091), (i + 1), chaptersname[i]));
+            item.Label2 = Util.Utils.SecondsToHMSString((int)chaptersList[i]);
+            dlg.Add(item);
+          }
+        }
+      }
+      
+      // show dialog and wait for result
+      _IsDialogVisible = true;
+      dlg.DoModal(GetID);
+      _IsDialogVisible = true;
+
+      if (dlg.SelectedId == -1)
+      {
+        return;
+      }
+
+      if (dlg.SelectedLabel == 0)
+      {
+        // switch back to previous window
+        _IsDialogVisible = false;
+        GUIWindowManager.ShowPreviousWindow();
+        return;
+      }
+      else if (dlg.SelectedLabel == 1)
+      {
+        Action actionPrevChapter = new Action(Action.ActionType.ACTION_PREV_CHAPTER, 0, 0);
+        GUIGraphicsContext.OnAction(actionPrevChapter);
+      }
+      else if (dlg.SelectedLabel == 2)
+      { 
+        Action actionNextChapter = new Action(Action.ActionType.ACTION_NEXT_CHAPTER, 0, 0);
+        GUIGraphicsContext.OnAction(actionNextChapter);
+      }
+      else
+      {
+        // get selected Chapters
+        // dlg[0] = Previous window , dlg[1] = Previous chapter, dlg[2] = Next chapter --> dlg[3] = chaptersList[0]
+        int selectedChapterIndex = dlg.SelectedLabel - 3;
+
+        // set mplayers play position
+        g_Player.SeekAbsolute(chaptersList[selectedChapterIndex]);
+      }
+    }
+      
     // Add audio stream selection to be able to switch audio streams in .ts recordings
     private void ShowAudioStreamsMenu()
     {
