Index: xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h
===================================================================
--- xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h	(revision 13974)
+++ xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h	(working copy)
@@ -225,6 +225,11 @@
   virtual int GetChapter() { return -1; }
 
   /*
+   * Get the name of the current chapter
+   */
+  virtual void GetChapterName(std::string& strChapterName) {}
+
+  /*
    * Set the playspeed, if demuxer can handle different
    * speeds of playback
    */
Index: xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
===================================================================
--- xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp	(revision 13974)
+++ xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp	(working copy)
@@ -1003,6 +1003,18 @@
   return 0;
 }
 
+void CDVDDemuxFFmpeg::GetChapterName(std::string& strChapterName)
+{
+  if(m_pInput && m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD))
+    return;
+  else 
+  {
+    int chapterIdx = GetChapter();
+    if(chapterIdx)
+      strChapterName = m_pFormatContext->chapters[chapterIdx-1]->title;
+  }
+}
+
 bool CDVDDemuxFFmpeg::SeekChapter(int chapter, double* startpts)
 {
   if(chapter < 1)
Index: xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h
===================================================================
--- xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h	(revision 13974)
+++ xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h	(working copy)
@@ -95,6 +95,7 @@
   bool SeekChapter(int chapter, double* startpts = NULL);
   int GetChapterCount();
   int GetChapter();
+  void GetChapterName(std::string& strChapterName);
 
 
   AVFormatContext* m_pFormatContext;
Index: xbmc/cores/dvdplayer/DVDPlayer.cpp
===================================================================
--- xbmc/cores/dvdplayer/DVDPlayer.cpp	(revision 13974)
+++ xbmc/cores/dvdplayer/DVDPlayer.cpp	(working copy)
@@ -2616,6 +2616,12 @@
   return m_State.chapter;
 }
 
+void CDVDPlayer::GetChapterName(CStdString& strChapterName)
+{
+  if(m_pDemuxer)
+    m_pDemuxer->GetChapterName(strChapterName);
+}
+
 int CDVDPlayer::SeekChapter(int iChapter)
 {
   if (GetChapterCount() > 0)
Index: xbmc/cores/dvdplayer/DVDPlayer.h
===================================================================
--- xbmc/cores/dvdplayer/DVDPlayer.h	(revision 13974)
+++ xbmc/cores/dvdplayer/DVDPlayer.h	(working copy)
@@ -188,6 +188,7 @@
 
   virtual int  GetChapterCount();
   virtual int  GetChapter();
+  virtual void GetChapterName(CStdString& strChapterName);
   virtual int  SeekChapter(int iChapter);
 
   virtual void SeekTime(__int64 iTime);
Index: xbmc/cores/IPlayer.h
===================================================================
--- xbmc/cores/IPlayer.h	(revision 13974)
+++ xbmc/cores/IPlayer.h	(working copy)
@@ -105,6 +105,7 @@
 
   virtual int  GetChapterCount()                               { return 0; }
   virtual int  GetChapter()                                    { return -1; }
+  virtual void GetChapterName(CStdString& strChapterName)      { return; }
   virtual int  SeekChapter(int iChapter)                       { return -1; }
 //  virtual bool GetChapterInfo(int chapter, SChapterInfo &info) { return false; }
 
Index: xbmc/utils/GUIInfoManager.cpp
===================================================================
--- xbmc/utils/GUIInfoManager.cpp	(revision 13974)
+++ xbmc/utils/GUIInfoManager.cpp	(working copy)
@@ -201,6 +201,7 @@
     else if (strTest.Equals("player.hasduration")) ret = PLAYER_HASDURATION;
     else if (strTest.Equals("player.chapter")) ret = PLAYER_CHAPTER;
     else if (strTest.Equals("player.chaptercount")) ret = PLAYER_CHAPTERCOUNT;
+    else if (strTest.Equals("player.chaptername")) ret = PLAYER_CHAPTERNAME;
     else if (strTest.Equals("player.starrating")) ret = PLAYER_STAR_RATING;
   }
   else if (strCategory.Equals("weather"))
@@ -900,6 +901,10 @@
     if(g_application.IsPlaying() && g_application.m_pPlayer)
       strLabel.Format("%02d", g_application.m_pPlayer->GetChapterCount());
     break;
+  case PLAYER_CHAPTERNAME:
+    if(g_application.IsPlaying() && g_application.m_pPlayer)
+      g_application.m_pPlayer->GetChapterName(strLabel);
+    break;
   case PLAYER_CACHELEVEL:
     {
       int iLevel = 0;
Index: xbmc/utils/GUIInfoManager.h
===================================================================
--- xbmc/utils/GUIInfoManager.h	(revision 13974)
+++ xbmc/utils/GUIInfoManager.h	(working copy)
@@ -96,6 +96,7 @@
 #define PLAYER_FINISH_TIME           38
 #define PLAYER_CACHELEVEL            39
 #define PLAYER_STAR_RATING           40
+#define PLAYER_CHAPTERNAME           41
 
 #define WEATHER_CONDITIONS          100
 #define WEATHER_TEMPERATURE         101
