changeset 34387:0ba85cad4c7e

Add audio CD playback support to the X11/GTK GUI. (The Win32 GUI already had this support. Add missing - although already used - user event evPlayCD here as well as internal event ivSetCDTrack - although it's unused - for consistency.)
author ib
date Sat, 31 Dec 2011 12:38:52 +0000
parents 206264c532f5
children 9ee95c78e85f
files DOCS/xml/de/skin.xml DOCS/xml/en/skin.xml gui/app.c gui/app.h gui/interface.c gui/ui/actions.c gui/ui/gtk/menu.c gui/ui/main.c gui/ui/pixmaps/cd.xpm gui/ui/pixmaps/dvd.xpm gui/ui/pixmaps/playcd.xpm gui/ui/pixmaps/playdvd.xpm gui/ui/render.c gui/util/string.c gui/win32/skinload.c gui/win32/skinload.h help/help_mp-de.h help/help_mp-en.h
diffstat 18 files changed, 657 insertions(+), 266 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/xml/de/skin.xml	Sat Dec 31 12:20:08 2011 +0000
+++ b/DOCS/xml/de/skin.xml	Sat Dec 31 12:38:52 2011 +0000
@@ -673,7 +673,7 @@
                   </row>
                   <row>
                     <entry>$t</entry>
-                    <entry>Track-Nummer (DVD, VCD oder Wiedergabeliste)</entry>
+                    <entry>Track-Nummer (DVD, VCD, CD oder Wiedergabeliste)</entry>
                   </row>
                   <row>
                     <entry>$o</entry>
@@ -691,7 +691,7 @@
                     <entry>$T</entry>
                     <entry>
                       Buchstabe entsprechend dem Streamtyp (Datei: <keycap>f</keycap>,
-                      Video-CD: <keycap>v</keycap>, DVD: <keycap>d</keycap>, URL: <keycap>u</keycap>)
+                      CD: <keycap>a</keycap>, Video-CD: <keycap>v</keycap>, DVD: <keycap>d</keycap>, URL: <keycap>u</keycap>)
                     </entry>
                   </row>
                   <row>
@@ -914,6 +914,7 @@
             <row><entry><keycap>m</keycap></entry><entry>Mono-Sound</entry></row>
             <row><entry><keycap>t</keycap></entry><entry>Stereo-Sound</entry></row>
             <row><entry><keycap>f</keycap></entry><entry>Stream ist eine Datei</entry></row>
+            <row><entry><keycap>a</keycap></entry><entry>Stream ist eine CD</entry></row>
             <row><entry><keycap>v</keycap></entry><entry>Stream ist eine Video-CD</entry></row>
             <row><entry><keycap>d</keycap></entry><entry>Stream ist eine DVD</entry></row>
             <row><entry><keycap>u</keycap></entry><entry>Stream ist eine URL</entry></row>
@@ -1040,6 +1041,15 @@
       </varlistentry>
 
       <varlistentry>
+        <term><emphasis role="bold">evPlayCD</emphasis></term>
+        <listitem>
+          <para>
+            Versucht die CD im angegebenen CD-ROM-Laufwerk zu öffnen.
+          </para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
         <term><emphasis role="bold">evPlayVCD</emphasis></term>
         <listitem>
           <para>
--- a/DOCS/xml/en/skin.xml	Sat Dec 31 12:20:08 2011 +0000
+++ b/DOCS/xml/en/skin.xml	Sat Dec 31 12:38:52 2011 +0000
@@ -559,7 +559,7 @@
   </row>
   <row>
     <entry>$t</entry>
-    <entry>track number (DVD, VCD or playlist)</entry>
+    <entry>track number (DVD, VCD, CD or playlist)</entry>
   </row>
   <row>
     <entry>$o</entry>
@@ -577,7 +577,7 @@
     <entry>$T</entry>
     <entry>
     a character according to the stream type (file: <keycap>f</keycap>,
-    Video CD: <keycap>v</keycap>, DVD: <keycap>d</keycap>,
+    CD: <keycap>a</keycap>, Video CD: <keycap>v</keycap>, DVD: <keycap>d</keycap>,
     URL: <keycap>u</keycap>)
     </entry>
   </row>
@@ -784,6 +784,7 @@
   <row><entry><keycap>m</keycap></entry><entry>mono sound</entry></row>
   <row><entry><keycap>t</keycap></entry><entry>stereo sound</entry></row>
   <row><entry><keycap>f</keycap></entry><entry>stream is a file</entry></row>
+  <row><entry><keycap>a</keycap></entry><entry>stream is a CD</entry></row>
   <row><entry><keycap>v</keycap></entry><entry>stream is a Video CD</entry></row>
   <row><entry><keycap>d</keycap></entry><entry>stream is a DVD</entry></row>
   <row><entry><keycap>u</keycap></entry><entry>stream is a URL</entry></row>
@@ -894,6 +895,13 @@
 </varlistentry>
 
 <varlistentry>
+  <term><emphasis role="bold">evPlayCD</emphasis></term>
+  <listitem><para>
+  Tries to open the disc in the given CD-ROM drive.
+  </para></listitem>
+</varlistentry>
+
+<varlistentry>
   <term><emphasis role="bold">evPlayVCD</emphasis></term>
   <listitem><para>
   Tries to open the disc in the given CD-ROM drive.
--- a/gui/app.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/app.c	Sat Dec 31 12:38:52 2011 +0000
@@ -51,6 +51,7 @@
     { evLoadSubtitle,      "evLoadSubtitle"      },
     { evDropSubtitle,      "evDropSubtitle"      },
     { evPlaylist,          "evPlaylist"          },
+    { evPlayCD,            "evPlayCD"            },
     { evPlayVCD,           "evPlayVCD"           },
     { evPlayDVD,           "evPlayDVD"           },
     { evLoadURL,           "evSetURL"            }, // legacy
--- a/gui/app.h	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/app.h	Sat Dec 31 12:38:52 2011 +0000
@@ -37,6 +37,7 @@
 #define evLoadSubtitle      38
 #define evDropSubtitle      43
 #define evPlaylist          10
+#define evPlayCD            48
 #define evPlayVCD           40
 #define evPlayDVD           39
 #define evLoadURL         5013
@@ -84,6 +85,7 @@
 #define ivSetDVDTitle     5009
 #define ivSetDVDChapter   5010
 #define ivSetVCDTrack     5012
+#define ivSetCDTrack      5014
 
 #define ivRedraw          7002
 
--- a/gui/interface.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/interface.c	Sat Dec 31 12:38:52 2011 +0000
@@ -410,6 +410,17 @@
         case STREAMTYPE_STREAM:
             break;
 
+#ifdef CONFIG_CDDA
+        case STREAMTYPE_CDDA:
+        {
+            char tmp[512];
+
+            sprintf(tmp, "cdda://%d", guiInfo.Track);
+            uiSetFileName(NULL, tmp, STREAMTYPE_CDDA);
+        }
+        break;
+#endif
+
 #ifdef CONFIG_VCD
         case STREAMTYPE_VCD:
         {
@@ -611,6 +622,13 @@
         guiInfo.StreamType = stream->type;
 
         switch (guiInfo.StreamType) {
+#ifdef CONFIG_CDDA
+        case STREAMTYPE_CDDA:
+            guiInfo.Tracks = 0;
+            stream_control(stream, STREAM_CTRL_GET_NUM_TITLES, &guiInfo.Tracks);
+            break;
+#endif
+
 #ifdef CONFIG_VCD
         case STREAMTYPE_VCD:
             guiInfo.Tracks = 0;
@@ -772,6 +790,15 @@
             break;
         }
 
+#ifdef CONFIG_CDDA
+        if (guiInfo.StreamType == STREAMTYPE_CDDA) {
+            uiNext();
+
+            if (guiInfo.Playing)
+                break;
+        }
+#endif
+
         if (guiInfo.Playing && (next = listSet(gtkGetNextPlItem, NULL)) && (plLastPlayed != next)) {
             plLastPlayed = next;
             uiSetFileName(next->path, next->name, STREAMTYPE_FILE);
--- a/gui/ui/actions.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/ui/actions.c	Sat Dec 31 12:38:52 2011 +0000
@@ -242,6 +242,11 @@
         return;
 
     switch (guiInfo.StreamType) {
+#ifdef CONFIG_CDDA
+    case STREAMTYPE_CDDA:
+        break;
+#endif
+
 #ifdef CONFIG_VCD
     case STREAMTYPE_VCD:
         break;
@@ -281,6 +286,15 @@
         return;
 
     switch (guiInfo.StreamType) {
+#ifdef CONFIG_CDDA
+    case STREAMTYPE_CDDA:
+        if (--guiInfo.Track == 0) {
+            guiInfo.Track = 1;
+            stop = 1;
+        }
+        break;
+#endif
+
 #ifdef CONFIG_VCD
     case STREAMTYPE_VCD:
         if (--guiInfo.Track == 1) {
@@ -335,6 +349,17 @@
         return;
 
     switch (guiInfo.StreamType) {
+#ifdef CONFIG_CDDA
+    case STREAMTYPE_CDDA:
+
+        if (++guiInfo.Track > guiInfo.Tracks) {
+            guiInfo.Track = guiInfo.Tracks;
+            stop = 1;
+        }
+
+        break;
+#endif
+
 #ifdef CONFIG_VCD
     case STREAMTYPE_VCD:
 
--- a/gui/ui/gtk/menu.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/ui/gtk/menu.c	Sat Dec 31 12:38:52 2011 +0000
@@ -66,6 +66,10 @@
 #include "gui/ui/pixmaps/empty.xpm"
 #include "gui/ui/pixmaps/loadeaf.xpm"
 #include "gui/ui/pixmaps/title.xpm"
+#ifdef CONFIG_CDDA
+#include "gui/ui/pixmaps/cd.xpm"
+#include "gui/ui/pixmaps/playcd.xpm"
+#endif
 #ifdef CONFIG_VCD
 #include "gui/ui/pixmaps/vcd.xpm"
 #include "gui/ui/pixmaps/playvcd.xpm"
@@ -404,6 +408,8 @@
 GtkWidget * AspectMenu;
 GtkWidget * VCDSubMenu;
 GtkWidget * VCDTitleMenu;
+GtkWidget * CDSubMenu;
+GtkWidget * CDTitleMenu;
 
 GtkWidget * create_PopUpMenu( void )
 {
@@ -425,6 +431,9 @@
   AddSeparator( Menu );
    SubMenu=AddSubMenu( window1, (const char*)open_xpm, Menu,MSGTR_MENU_Open );
     AddMenuItem( window1, (const char*)file2_xpm, SubMenu,MSGTR_MENU_PlayFile"    ", evLoadPlay );
+#ifdef CONFIG_CDDA
+    AddMenuItem( window1, (const char*)playcd_xpm, SubMenu,MSGTR_MENU_PlayCD, evPlayCD );
+#endif
 #ifdef CONFIG_VCD
     AddMenuItem( window1, (const char*)playvcd_xpm, SubMenu,MSGTR_MENU_PlayVCD, evPlayVCD );
 #endif
@@ -450,6 +459,27 @@
 //    AddMenuItem( SubMenu,MSGTR_MENU_NormalSize"      ", evNormalSize );
 //    AddMenuItem( SubMenu,MSGTR_MENU_DoubleSize, evDoubleSize );
 //    AddMenuItem( SubMenu,MSGTR_MENU_FullScreen, evFullScreen );
+#ifdef CONFIG_CDDA
+   CDSubMenu=AddSubMenu( window1, (const char*)cd_xpm, Menu,MSGTR_MENU_CD );
+    AddMenuItem( window1, (const char*)playcd_xpm, CDSubMenu,MSGTR_MENU_PlayDisc,evPlayCD );
+    AddSeparator( CDSubMenu );
+    CDTitleMenu=AddSubMenu( window1, (const char*)title_xpm, CDSubMenu,MSGTR_MENU_Titles );
+    if ( guiInfo.Tracks )
+     {
+      char tmp[32]; int i;
+      for ( i=1;i <= guiInfo.Tracks;i++ )
+       {
+        snprintf( tmp,32,MSGTR_MENU_Title,i );
+    //AddMenuItem( CDTitleMenu,tmp,( i << 16 ) + ivSetCDTrack );
+        AddMenuItem(window1, (const char*)empty_xpm, CDTitleMenu,tmp,( i << 16 ) + ivSetCDTrack );
+       }
+     }
+     else
+      {
+       MenuItem=AddMenuItem( window1, (const char*)empty_xpm, CDTitleMenu,MSGTR_MENU_None,evNone );
+       gtk_widget_set_sensitive( MenuItem,FALSE );
+      }
+#endif
 #ifdef CONFIG_VCD
    VCDSubMenu=AddSubMenu( window1, (const char*)vcd_xpm, Menu,MSGTR_MENU_VCD );
     AddMenuItem( window1, (const char*)playvcd_xpm, VCDSubMenu,MSGTR_MENU_PlayDisc,evPlayVCD );
--- a/gui/ui/main.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/ui/main.c	Sat Dec 31 12:38:52 2011 +0000
@@ -162,6 +162,14 @@
         mp_property_do("sub",M_PROPERTY_SET,&iparam,guiInfo.mpcontext);
 	break;
 
+#ifdef CONFIG_CDDA
+   case ivSetCDTrack:
+        guiInfo.Track=iparam;
+   case evPlayCD:
+ 	guiInfoMediumClear ( CLEAR_ALL );
+	guiInfo.StreamType=STREAMTYPE_CDDA;
+	goto play;
+#endif
 #ifdef CONFIG_VCD
    case ivSetVCDTrack:
         guiInfo.Track=iparam;
@@ -202,6 +210,19 @@
 	         guiInfo.Track=1;
 	       guiInfo.NewPlay=GUI_FILE_NEW;
 	       break;
+#ifdef CONFIG_CDDA
+          case STREAMTYPE_CDDA:
+	       guiInfoMediumClear( CLEAR_ALL - CLEAR_VCD - CLEAR_FILE );
+	       if ( !cdrom_device ) cdrom_device=gstrdup( DEFAULT_CDROM_DEVICE );
+	       uiSetFileName( NULL,cdrom_device,STREAMTYPE_CDDA );
+	       if ( guiInfo.Playing != GUI_PAUSE )
+	        {
+		 if ( !guiInfo.Track )
+                   guiInfo.Track=1;
+                 guiInfo.NewPlay=GUI_FILE_SAME;
+		}
+	       break;
+#endif
 #ifdef CONFIG_VCD
           case STREAMTYPE_VCD:
 	       guiInfoMediumClear( CLEAR_ALL - CLEAR_VCD - CLEAR_FILE );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui/ui/pixmaps/cd.xpm	Sat Dec 31 12:38:52 2011 +0000
@@ -0,0 +1,129 @@
+/* XPM */
+static const char * const cd_xpm[] = {
+"16 16 110 2",
+"  	c None",
+". 	c #CACCD2",
+"+ 	c #D3D4D6",
+"@ 	c #D2D2D3",
+"# 	c #D1D1D2",
+"$ 	c #D1D1D3",
+"% 	c #B5B8BD",
+"& 	c #EDEDEC",
+"* 	c #FAFAFA",
+"= 	c #FBFBFB",
+"- 	c #FCFCFC",
+"; 	c #FFFFFF",
+"> 	c #D9D9D9",
+", 	c #AFB1B5",
+"' 	c #C6C6C7",
+") 	c #FDFDFD",
+"! 	c #F7F7F7",
+"~ 	c #F9F9F9",
+"{ 	c #F6F6F6",
+"] 	c #F8F8F8",
+"^ 	c #B8B9BD",
+"/ 	c #B2B4BA",
+"( 	c #EAE9E9",
+"_ 	c #DCDCDC",
+": 	c #F3F3F3",
+"< 	c #F4F4F4",
+"[ 	c #A8AAAF",
+"} 	c #CBCBCA",
+"| 	c #CCCCCC",
+"1 	c #D7D7D7",
+"2 	c #E1E1E1",
+"3 	c #F5F5F5",
+"4 	c #EFEFEF",
+"5 	c #CCCDCE",
+"6 	c #D2D2D2",
+"7 	c #CDCDCD",
+"8 	c #D6D6D6",
+"9 	c #E0E0E0",
+"0 	c #E7E7E7",
+"a 	c #E6E6E6",
+"b 	c #E5E5E5",
+"c 	c #EBEBEB",
+"d 	c #E3E3E3",
+"e 	c #ECECEC",
+"f 	c #9C9DA5",
+"g 	c #C4C5C9",
+"h 	c #C1C1C1",
+"i 	c #CECECE",
+"j 	c #E2E2E2",
+"k 	c #E8E8E8",
+"l 	c #D8D8D8",
+"m 	c #E4E4E3",
+"n 	c #DBDBDB",
+"o 	c #F2F2F2",
+"p 	c #DDDDDD",
+"q 	c #D4D4D4",
+"r 	c #A2A4AA",
+"s 	c #C9CACC",
+"t 	c #C4C4C4",
+"u 	c #CFCFCF",
+"v 	c #E4E4E4",
+"w 	c #DBDAD9",
+"x 	c #727789",
+"y 	c #DFDEDD",
+"z 	c #C8C8C8",
+"A 	c #BCBCBC",
+"B 	c #BFBFBF",
+"C 	c #9E9FA4",
+"D 	c #C6C7C9",
+"E 	c #E2E2E1",
+"F 	c #999CA6",
+"G 	c #C5C5C4",
+"H 	c #D3D3D3",
+"I 	c #C7C7C7",
+"J 	c #BBBBBB",
+"K 	c #BABABA",
+"L 	c #C4C4C3",
+"M 	c #95969A",
+"N 	c #C4C5C6",
+"O 	c #D8D8D7",
+"P 	c #CACACA",
+"Q 	c #C6C6C6",
+"R 	c #B9B9B9",
+"S 	c #CCCCCB",
+"T 	c #939395",
+"U 	c #A0A2A7",
+"V 	c #E5E5E4",
+"W 	c #FEFEFE",
+"X 	c #C5C5C5",
+"Y 	c #C2C2C2",
+"Z 	c #B8B8B8",
+"` 	c #BCBBBA",
+" .	c #A3A6AD",
+"..	c #9B9C9F",
+"+.	c #F0F0F0",
+"@.	c #C0C0C0",
+"#.	c #7C7E84",
+"$.	c #EAEAEA",
+"%.	c #979798",
+"&.	c #989BA2",
+"*.	c #E9E9E9",
+"=.	c #959596",
+"-.	c #A6A8AD",
+";.	c #B7B7B5",
+">.	c #B4B4B3",
+",.	c #8B8D92",
+"'.	c #9B9DA0",
+").	c #B6B6B7",
+"!.	c #B0B0B1",
+"~.	c #929396",
+"          . + @ # $             ",
+"      % & * = = = - ; > ,       ",
+"    ' ) ! ~ ~ ~ { ] * = ) ^     ",
+"  / ( _ : ! ] ! < ! ] ) ) = [   ",
+"  } | 1 2 { ] ! : 3 - - 3 4 5   ",
+"  6 7 8 9 0 ] a b ) = : c d e f ",
+"g h i 1 j k 6 l m n o 0 p q 2 r ",
+"s t u n v _ w   x y p 8 z A B C ",
+"D 8 l 2 k d E F ^ G H I J K L M ",
+"N v j k e = _ O 6 P Q A R K S T ",
+"U V k c ; W 3 > ! 6 X Y R Z `  .",
+"  ..+.; : : > : : : X X h @.#.  ",
+"    1 = : > : : : : $.X I %.    ",
+"    &.Q a > : : +.v *.< =.      ",
+"        -.;.P j k p >.,.        ",
+"            '.).!.~.            "};
--- a/gui/ui/pixmaps/dvd.xpm	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/ui/pixmaps/dvd.xpm	Sat Dec 31 12:38:52 2011 +0000
@@ -1,129 +1,120 @@
 /* XPM */
 static const char * const dvd_xpm[] = {
-"16 16 110 2",
-"  	c None",
-". 	c #CACCD2",
-"+ 	c #D3D4D6",
-"@ 	c #D2D2D3",
-"# 	c #D1D1D2",
-"$ 	c #D1D1D3",
-"% 	c #B5B8BD",
-"& 	c #EDEDEC",
-"* 	c #FAFAFA",
-"= 	c #FBFBFB",
-"- 	c #FCFCFC",
-"; 	c #FFFFFF",
-"> 	c #D9D9D9",
-", 	c #AFB1B5",
-"' 	c #C6C6C7",
-") 	c #FDFDFD",
-"! 	c #F7F7F7",
-"~ 	c #F9F9F9",
-"{ 	c #F6F6F6",
-"] 	c #F8F8F8",
-"^ 	c #B8B9BD",
-"/ 	c #B2B4BA",
-"( 	c #EAE9E9",
-"_ 	c #DCDCDC",
-": 	c #F3F3F3",
-"< 	c #F4F4F4",
-"[ 	c #A8AAAF",
-"} 	c #CBCBCA",
-"| 	c #CCCCCC",
-"1 	c #D7D7D7",
-"2 	c #E1E1E1",
-"3 	c #F5F5F5",
-"4 	c #EFEFEF",
-"5 	c #CCCDCE",
-"6 	c #D2D2D2",
-"7 	c #CDCDCD",
-"8 	c #D6D6D6",
-"9 	c #E0E0E0",
-"0 	c #E7E7E7",
-"a 	c #E6E6E6",
-"b 	c #E5E5E5",
-"c 	c #EBEBEB",
-"d 	c #E3E3E3",
-"e 	c #ECECEC",
-"f 	c #9C9DA5",
-"g 	c #C4C5C9",
-"h 	c #C1C1C1",
-"i 	c #CECECE",
-"j 	c #E2E2E2",
-"k 	c #E8E8E8",
-"l 	c #D8D8D8",
-"m 	c #E4E4E3",
-"n 	c #DBDBDB",
-"o 	c #F2F2F2",
-"p 	c #DDDDDD",
-"q 	c #D4D4D4",
-"r 	c #A2A4AA",
-"s 	c #C9CACC",
-"t 	c #C4C4C4",
-"u 	c #CFCFCF",
-"v 	c #E4E4E4",
-"w 	c #DBDAD9",
-"x 	c #727789",
-"y 	c #DFDEDD",
-"z 	c #C8C8C8",
-"A 	c #BCBCBC",
-"B 	c #BFBFBF",
-"C 	c #9E9FA4",
-"D 	c #C6C7C9",
-"E 	c #E2E2E1",
-"F 	c #999CA6",
-"G 	c #C5C5C4",
-"H 	c #D3D3D3",
-"I 	c #C7C7C7",
-"J 	c #BBBBBB",
-"K 	c #BABABA",
-"L 	c #C4C4C3",
-"M 	c #95969A",
-"N 	c #C4C5C6",
-"O 	c #D8D8D7",
-"P 	c #CACACA",
-"Q 	c #C6C6C6",
-"R 	c #B9B9B9",
-"S 	c #CCCCCB",
-"T 	c #939395",
-"U 	c #A0A2A7",
-"V 	c #E5E5E4",
-"W 	c #FEFEFE",
-"X 	c #C5C5C5",
-"Y 	c #C2C2C2",
-"Z 	c #B8B8B8",
-"` 	c #BCBBBA",
-" .	c #A3A6AD",
-"..	c #9B9C9F",
-"+.	c #F0F0F0",
-"@.	c #C0C0C0",
-"#.	c #7C7E84",
-"$.	c #EAEAEA",
-"%.	c #979798",
-"&.	c #989BA2",
-"*.	c #E9E9E9",
-"=.	c #959596",
-"-.	c #A6A8AD",
-";.	c #B7B7B5",
-">.	c #B4B4B3",
-",.	c #8B8D92",
-"'.	c #9B9DA0",
-").	c #B6B6B7",
-"!.	c #B0B0B1",
-"~.	c #929396",
-"          . + @ # $             ",
-"      % & * = = = - ; > ,       ",
-"    ' ) ! ~ ~ ~ { ] * = ) ^     ",
-"  / ( _ : ! ] ! < ! ] ) ) = [   ",
-"  } | 1 2 { ] ! : 3 - - 3 4 5   ",
-"  6 7 8 9 0 ] a b ) = : c d e f ",
-"g h i 1 j k 6 l m n o 0 p q 2 r ",
-"s t u n v _ w   x y p 8 z A B C ",
-"D 8 l 2 k d E F ^ G H I J K L M ",
-"N v j k e = _ O 6 P Q A R K S T ",
-"U V k c ; W 3 > ! 6 X Y R Z `  .",
-"  ..+.; : : > : : : X X h @.#.  ",
-"    1 = : > : : : : $.X I %.    ",
-"    &.Q a > : : +.v *.< =.      ",
-"        -.;.P j k p >.,.        ",
-"            '.).!.~.            "};
+"16 16 100 2",
+"   c #000000",
+"!  c #7277FF",
+"#  c #7C7EFF",
+"$  c #8B8DFF",
+"%  c #9293FF",
+"&  c #9393FF",
+"'  c #9595FF",
+"(  c #9596FF",
+")  c #9797FF",
+"*  c #989BFF",
+"+  c #999CFF",
+",  c #9B9CFF",
+"-  c #9B9DFF",
+".  c #9C9DFF",
+"/  c #9E9FFF",
+"0  c #A0A2FF",
+"1  c #A2A4FF",
+"2  c #A3A6FF",
+"3  c #A6A8FF",
+"4  c #A8AAFF",
+"5  c #B0B0FF",
+"6  c #AFB1FF",
+"7  c #B2B4FF",
+"8  c #B4B4FF",
+"9  c #B6B6FF",
+":  c #B7B7FF",
+";  c #B5B8FF",
+"<  c #B8B8FF",
+"=  c #B8B9FF",
+">  c #B9B9FF",
+"?  c #BABAFF",
+"@  c #BBBBFF",
+"A  c #BCBBFF",
+"B  c #BCBCFF",
+"C  c #BFBFFF",
+"D  c #C0C0FF",
+"E  c #C1C1FF",
+"F  c #C2C2FF",
+"G  c #C4C4FF",
+"H  c #C4C5FF",
+"I  c #C5C5FF",
+"J  c #C6C6FF",
+"K  c #C6C7FF",
+"L  c #C7C7FF",
+"M  c #C8C8FF",
+"N  c #C9CAFF",
+"O  c #CACAFF",
+"P  c #CBCBFF",
+"Q  c #CACCFF",
+"R  c #CCCCFF",
+"S  c #CCCDFF",
+"T  c #CDCDFF",
+"U  c #CECEFF",
+"V  c #CFCFFF",
+"W  c #D1D1FF",
+"X  c #D2D2FF",
+"Y  c #D3D3FF",
+"Z  c #D3D4FF",
+"[  c #D4D4FF",
+"[] c #D6D6FF",
+"]  c #D7D7FF",
+"^  c #D8D8FF",
+"_  c #D9D9FF",
+"`  c #DBDAFF",
+"a  c #DBDBFF",
+"b  c #DCDCFF",
+"c  c #DDDDFF",
+"d  c #DFDEFF",
+"e  c #E0E0FF",
+"f  c #E1E1FF",
+"g  c #E2E2FF",
+"h  c #E3E3FF",
+"i  c #E4E4FF",
+"j  c #E5E5FF",
+"k  c #E6E6FF",
+"l  c #E7E7FF",
+"m  c #E8E8FF",
+"n  c #E9E9FF",
+"o  c #EAE9FF",
+"p  c #EAEAFF",
+"q  c #EBEBFF",
+"r  c #ECECFF",
+"s  c #EDEDFF",
+"t  c #EFEFFF",
+"u  c #F0F0FF",
+"v  c #F2F2FF",
+"w  c #F3F3FF",
+"x  c #F4F4FF",
+"y  c #F5F5FF",
+"z  c #F6F6FF",
+"{  c #F7F7FF",
+"|  c #F8F8FF",
+"}  c #F9F9FF",
+"~  c #FAFAFF",
+" ! c #FBFBFF",
+"!! c #FCFCFF",
+"#! c #FDFDFF",
+"$! c #FEFEFF",
+"%! c #FFFFFF",
+"&! c None",
+"&!&!&!&!&!Q Z X W W &!&!&!&!&!&!",
+"&!&!&!; s ~  ! ! !!!%!_ 6 &!&!&!",
+"&!&!J #!{ } } } z | ~  !#!= &!&!",
+"&!7 o b w { | { x { | #!#! !4 &!",
+"&!P R ] f z | { w y !!!!y t S &!",
+"&!X T []e l | k j #! !w q h r . ",
+"H E U ] g m X ^ i a v l c [ f 1 ",
+"N G V a i b ` &!! d c []M B C / ",
+"K []^ f m h g + = I Y L @ ? G ( ",
+"H i g m r  !b ^ X O J B > ? R & ",
+"0 j m q %!$!y _ { X I F > < A 2 ",
+"&!, u %!w w _ w w w I I E D # &!",
+"&!&!]  !w _ w w w w p I L ) &!&!",
+"&!&!* J k _ w w u i n x ' &!&!&!",
+"&!&!&!&!3 : O g m c 8 $ &!&!&!&!",
+"&!&!&!&!&!&!- 9 5 % &!&!&!&!&!&!"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui/ui/pixmaps/playcd.xpm	Sat Dec 31 12:38:52 2011 +0000
@@ -0,0 +1,137 @@
+/* XPM */
+static const char * const playcd_xpm[] = {
+"16 16 118 2",
+"  	c None",
+". 	c #CACCD2",
+"+ 	c #D3D4D6",
+"@ 	c #D2D2D3",
+"# 	c #D1D1D2",
+"$ 	c #D1D1D3",
+"% 	c #B5B8BD",
+"& 	c #EDEDEC",
+"* 	c #FAFAFA",
+"= 	c #FBFBFB",
+"- 	c #FCFCFC",
+"; 	c #FFFFFF",
+"> 	c #D9D9D9",
+", 	c #AFB1B5",
+"' 	c #C6C6C7",
+") 	c #FDFDFD",
+"! 	c #F7F7F7",
+"~ 	c #F9F9F9",
+"{ 	c #F6F6F6",
+"] 	c #F8F8F8",
+"^ 	c #B8B9BD",
+"/ 	c #B2B4BA",
+"( 	c #EAE9E9",
+"_ 	c #DCDCDC",
+": 	c #F3F3F3",
+"< 	c #F4F4F4",
+"[ 	c #A8AAAF",
+"} 	c #CBCBCA",
+"| 	c #CCCCCC",
+"1 	c #D7D7D7",
+"2 	c #E1E1E1",
+"3 	c #F5F5F5",
+"4 	c #EFEFEF",
+"5 	c #CCCDCE",
+"6 	c #D2D2D2",
+"7 	c #CDCDCD",
+"8 	c #D6D6D6",
+"9 	c #E0E0E0",
+"0 	c #E7E7E7",
+"a 	c #E6E6E6",
+"b 	c #E5E5E5",
+"c 	c #EBEBEB",
+"d 	c #E3E3E3",
+"e 	c #ECECEC",
+"f 	c #9C9DA5",
+"g 	c #C4C5C9",
+"h 	c #C1C1C1",
+"i 	c #CECECE",
+"j 	c #E2E2E2",
+"k 	c #E8E8E8",
+"l 	c #D8D8D8",
+"m 	c #E4E4E3",
+"n 	c #DBDBDB",
+"o 	c #F2F2F2",
+"p 	c #404040",
+"q 	c #DDDDDD",
+"r 	c #D4D4D4",
+"s 	c #A2A4AA",
+"t 	c #C9CACC",
+"u 	c #C4C4C4",
+"v 	c #CFCFCF",
+"w 	c #E4E4E4",
+"x 	c #DBDAD9",
+"y 	c #727789",
+"z 	c #DFDEDD",
+"A 	c #292828",
+"B 	c #373737",
+"C 	c #BCBCBC",
+"D 	c #BFBFBF",
+"E 	c #9E9FA4",
+"F 	c #C6C7C9",
+"G 	c #E2E2E1",
+"H 	c #999CA6",
+"I 	c #C5C5C4",
+"J 	c #D3D3D3",
+"K 	c #313131",
+"L 	c #747472",
+"M 	c #5C5C5C",
+"N 	c #C4C4C3",
+"O 	c #95969A",
+"P 	c #C4C5C6",
+"Q 	c #D8D8D7",
+"R 	c #CACACA",
+"S 	c #C6C6C6",
+"T 	c #343333",
+"U 	c #A1A09E",
+"V 	c #939290",
+"W 	c #939395",
+"X 	c #A0A2A7",
+"Y 	c #E5E5E4",
+"Z 	c #FEFEFE",
+"` 	c #C5C5C5",
+" .	c #363635",
+"..	c #A7A6A3",
+"+.	c #B8B7B4",
+"@.	c #91908E",
+"#.	c #9B9C9F",
+"$.	c #F0F0F0",
+"%.	c #383737",
+"&.	c #B0AFAC",
+"*.	c #C8C7C4",
+"=.	c #5A5A59",
+"-.	c #EAEAEA",
+";.	c #3E3D3D",
+">.	c #BEBCB9",
+",.	c #151414",
+"'.	c #989BA2",
+").	c #E9E9E9",
+"!.	c #41403F",
+"~.	c #696867",
+"{.	c #A6A8AD",
+"].	c #B7B7B5",
+"^.	c #B4B4B3",
+"/.	c #0A0A0A",
+"(.	c #9B9DA0",
+"_.	c #B6B6B7",
+":.	c #B0B0B1",
+"<.	c #929396",
+"          . + @ # $             ",
+"      % & * = = = - ; > ,       ",
+"    ' ) ! ~ ~ ~ { ] * = ) ^     ",
+"  / ( _ : ! ] ! < ! ] ) ) = [   ",
+"  } | 1 2 { ] ! : 3 - - 3 4 5   ",
+"  6 7 8 9 0 ] a b ) = : c d e f ",
+"g h i 1 j k 6 l m n o p q r 2 s ",
+"t u v n w _ x   y z q A B C D E ",
+"F 8 l 2 k d G H ^ I J K L M N O ",
+"P w j k e = _ Q 6 R S T U V M W ",
+"X Y k c ; Z 3 > ! 6 `  ...+.@.M ",
+"  #.$.; : : > : : : ` %.&.*.=.  ",
+"    1 = : > : : : : -.;.>.,.    ",
+"    '.S a > : : $.w ).!.~.Z     ",
+"        {.].R j k q ^./.;       ",
+"            (._.:.<.  D         "};
--- a/gui/ui/pixmaps/playdvd.xpm	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/ui/pixmaps/playdvd.xpm	Sat Dec 31 12:38:52 2011 +0000
@@ -1,137 +1,129 @@
 /* XPM */
 static const char * const playdvd_xpm[] = {
-"16 16 118 2",
-"  	c None",
-". 	c #CACCD2",
-"+ 	c #D3D4D6",
-"@ 	c #D2D2D3",
-"# 	c #D1D1D2",
-"$ 	c #D1D1D3",
-"% 	c #B5B8BD",
-"& 	c #EDEDEC",
-"* 	c #FAFAFA",
-"= 	c #FBFBFB",
-"- 	c #FCFCFC",
-"; 	c #FFFFFF",
-"> 	c #D9D9D9",
-", 	c #AFB1B5",
-"' 	c #C6C6C7",
-") 	c #FDFDFD",
-"! 	c #F7F7F7",
-"~ 	c #F9F9F9",
-"{ 	c #F6F6F6",
-"] 	c #F8F8F8",
-"^ 	c #B8B9BD",
-"/ 	c #B2B4BA",
-"( 	c #EAE9E9",
-"_ 	c #DCDCDC",
-": 	c #F3F3F3",
-"< 	c #F4F4F4",
-"[ 	c #A8AAAF",
-"} 	c #CBCBCA",
-"| 	c #CCCCCC",
-"1 	c #D7D7D7",
-"2 	c #E1E1E1",
-"3 	c #F5F5F5",
-"4 	c #EFEFEF",
-"5 	c #CCCDCE",
-"6 	c #D2D2D2",
-"7 	c #CDCDCD",
-"8 	c #D6D6D6",
-"9 	c #E0E0E0",
-"0 	c #E7E7E7",
-"a 	c #E6E6E6",
-"b 	c #E5E5E5",
-"c 	c #EBEBEB",
-"d 	c #E3E3E3",
-"e 	c #ECECEC",
-"f 	c #9C9DA5",
-"g 	c #C4C5C9",
-"h 	c #C1C1C1",
-"i 	c #CECECE",
-"j 	c #E2E2E2",
-"k 	c #E8E8E8",
-"l 	c #D8D8D8",
-"m 	c #E4E4E3",
-"n 	c #DBDBDB",
-"o 	c #F2F2F2",
-"p 	c #404040",
-"q 	c #DDDDDD",
-"r 	c #D4D4D4",
-"s 	c #A2A4AA",
-"t 	c #C9CACC",
-"u 	c #C4C4C4",
-"v 	c #CFCFCF",
-"w 	c #E4E4E4",
-"x 	c #DBDAD9",
-"y 	c #727789",
-"z 	c #DFDEDD",
-"A 	c #292828",
-"B 	c #373737",
-"C 	c #BCBCBC",
-"D 	c #BFBFBF",
-"E 	c #9E9FA4",
-"F 	c #C6C7C9",
-"G 	c #E2E2E1",
-"H 	c #999CA6",
-"I 	c #C5C5C4",
-"J 	c #D3D3D3",
-"K 	c #313131",
-"L 	c #747472",
-"M 	c #5C5C5C",
-"N 	c #C4C4C3",
-"O 	c #95969A",
-"P 	c #C4C5C6",
-"Q 	c #D8D8D7",
-"R 	c #CACACA",
-"S 	c #C6C6C6",
-"T 	c #343333",
-"U 	c #A1A09E",
-"V 	c #939290",
-"W 	c #939395",
-"X 	c #A0A2A7",
-"Y 	c #E5E5E4",
-"Z 	c #FEFEFE",
-"` 	c #C5C5C5",
-" .	c #363635",
-"..	c #A7A6A3",
-"+.	c #B8B7B4",
-"@.	c #91908E",
-"#.	c #9B9C9F",
-"$.	c #F0F0F0",
-"%.	c #383737",
-"&.	c #B0AFAC",
-"*.	c #C8C7C4",
-"=.	c #5A5A59",
-"-.	c #EAEAEA",
-";.	c #3E3D3D",
-">.	c #BEBCB9",
-",.	c #151414",
-"'.	c #989BA2",
-").	c #E9E9E9",
-"!.	c #41403F",
-"~.	c #696867",
-"{.	c #A6A8AD",
-"].	c #B7B7B5",
-"^.	c #B4B4B3",
-"/.	c #0A0A0A",
-"(.	c #9B9DA0",
-"_.	c #B6B6B7",
-":.	c #B0B0B1",
-"<.	c #929396",
-"          . + @ # $             ",
-"      % & * = = = - ; > ,       ",
-"    ' ) ! ~ ~ ~ { ] * = ) ^     ",
-"  / ( _ : ! ] ! < ! ] ) ) = [   ",
-"  } | 1 2 { ] ! : 3 - - 3 4 5   ",
-"  6 7 8 9 0 ] a b ) = : c d e f ",
-"g h i 1 j k 6 l m n o p q r 2 s ",
-"t u v n w _ x   y z q A B C D E ",
-"F 8 l 2 k d G H ^ I J K L M N O ",
-"P w j k e = _ Q 6 R S T U V M W ",
-"X Y k c ; Z 3 > ! 6 `  ...+.@.M ",
-"  #.$.; : : > : : : ` %.&.*.=.  ",
-"    1 = : > : : : : -.;.>.,.    ",
-"    '.S a > : : $.w ).!.~.Z     ",
-"        {.].R j k q ^./.;       ",
-"            (._.:.<.  D         "};
+"16 16 109 2",
+"   c #000000",
+"!  c #0A0A0A",
+"#  c #151414",
+"$  c #292828",
+"%  c #313131",
+"&  c #343333",
+"'  c #363635",
+"(  c #373737",
+")  c #383737",
+"*  c #3E3D3D",
+"+  c #41403F",
+",  c #404040",
+"-  c #5A5A59",
+".  c #5C5C5C",
+"/  c #696867",
+"0  c #747472",
+"1  c #91908E",
+"2  c #939290",
+"3  c #A1A09E",
+"4  c #A7A6A3",
+"5  c #B0AFAC",
+"6  c #B8B7B4",
+"7  c #BEBCB9",
+"8  c #C8C7C4",
+"9  c #7277FF",
+":  c #9293FF",
+";  c #9393FF",
+"<  c #9596FF",
+"=  c #989BFF",
+">  c #999CFF",
+"?  c #9B9CFF",
+"@  c #9B9DFF",
+"A  c #9C9DFF",
+"B  c #9E9FFF",
+"C  c #A0A2FF",
+"D  c #A2A4FF",
+"E  c #A6A8FF",
+"F  c #A8AAFF",
+"G  c #B0B0FF",
+"H  c #AFB1FF",
+"I  c #B2B4FF",
+"J  c #B4B4FF",
+"K  c #B6B6FF",
+"L  c #B7B7FF",
+"M  c #B5B8FF",
+"N  c #B8B9FF",
+"O  c #BCBCFF",
+"P  c #BFBFFF",
+"Q  c #C1C1FF",
+"R  c #C4C4FF",
+"S  c #C4C5FF",
+"T  c #C5C5FF",
+"U  c #C6C6FF",
+"V  c #C6C7FF",
+"W  c #C9CAFF",
+"X  c #CACAFF",
+"Y  c #CBCBFF",
+"Z  c #CACCFF",
+"[  c #CCCCFF",
+"[] c #CCCDFF",
+"]  c #CDCDFF",
+"^  c #CECEFF",
+"_  c #CFCFFF",
+"`  c #D1D1FF",
+"a  c #D2D2FF",
+"b  c #D3D3FF",
+"c  c #D3D4FF",
+"d  c #D4D4FF",
+"e  c #D6D6FF",
+"f  c #D7D7FF",
+"g  c #D8D8FF",
+"h  c #D9D9FF",
+"i  c #DBDAFF",
+"j  c #DBDBFF",
+"k  c #DCDCFF",
+"l  c #DDDDFF",
+"m  c #DFDEFF",
+"n  c #E0E0FF",
+"o  c #E1E1FF",
+"p  c #E2E2FF",
+"q  c #E3E3FF",
+"r  c #E4E4FF",
+"s  c #E5E5FF",
+"t  c #E6E6FF",
+"u  c #E7E7FF",
+"v  c #E8E8FF",
+"w  c #E9E9FF",
+"x  c #EAE9FF",
+"y  c #EAEAFF",
+"z  c #EBEBFF",
+"{  c #ECECFF",
+"|  c #EDEDFF",
+"}  c #EFEFFF",
+"~  c #F0F0FF",
+" ! c #F2F2FF",
+"!! c #F3F3FF",
+"#! c #F4F4FF",
+"$! c #F5F5FF",
+"%! c #F6F6FF",
+"&! c #F7F7FF",
+"'! c #F8F8FF",
+"(! c #F9F9FF",
+")! c #FAFAFF",
+"*! c #FBFBFF",
+"+! c #FCFCFF",
+",! c #FDFDFF",
+"-! c #FEFEFF",
+".! c #FFFFFF",
+"/! c None",
+"/!/!/!/!/!Z c a ` ` /!/!/!/!/!/!",
+"/!/!/!M | )!*!*!*!+!.!h H /!/!/!",
+"/!/!U ,!&!(!(!(!%!'!)!*!,!N /!/!",
+"/!I x k !!&!'!&!#!&!'!,!,!*!F /!",
+"/!Y [ f o %!'!&!!!$!+!+!$!} []/!",
+"/!a ] e n u '!t s ,!*!!!z q { A ",
+"S Q ^ f p v a g r j  !, l d o D ",
+"W R _ j r k i /!9 m l $ ( O P B ",
+"V e g o v q p > N T b % 0 . R < ",
+"S r p v { *!k g a X U & 3 2 . ; ",
+"C s v z .!-!$!h &!a T ' 4 6 1 . ",
+"/!? ~ .!!!!!h !!!!!!T ) 5 8 - /!",
+"/!/!f *!!!h !!!!!!!!y * 7 # /!/!",
+"/!/!= U t h !!!!~ r w + / -!/!/!",
+"/!/!/!/!E L X p v l J ! .!/!/!/!",
+"/!/!/!/!/!/!@ K G : /!P /!/!/!/!"
+};
--- a/gui/ui/render.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/ui/render.c	Sat Dec 31 12:38:52 2011 +0000
@@ -206,6 +206,12 @@
                     av_strlcat(trbuf, "u", sizeof(trbuf));
                     break;
 
+#ifdef CONFIG_CDDA
+                case STREAMTYPE_CDDA:
+                    av_strlcat(trbuf, "a", sizeof(trbuf));
+                    break;
+#endif
+
 #ifdef CONFIG_VCD
                 case STREAMTYPE_VCD:
                     av_strlcat(trbuf, "v", sizeof(trbuf));
--- a/gui/util/string.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/util/string.c	Sat Dec 31 12:38:52 2011 +0000
@@ -283,6 +283,12 @@
         av_strlcpy(fname, guiInfo.Filename, maxlen);
         break;
 
+#ifdef CONFIG_CDDA
+    case STREAMTYPE_CDDA:
+        snprintf(fname, maxlen, MSGTR_Title, guiInfo.Track);
+        break;
+#endif
+
 #ifdef CONFIG_VCD
     case STREAMTYPE_VCD:
         snprintf(fname, maxlen, MSGTR_Title, guiInfo.Track - 1);
--- a/gui/win32/skinload.c	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/win32/skinload.c	Sat Dec 31 12:38:52 2011 +0000
@@ -57,6 +57,7 @@
     {   evLoadSubtitle,         "evLoadSubtitle"        },
     {   evDropSubtitle,         "evDropSubtitle"        },
     {   evPlaylist,             "evPlaylist"            },
+    {   evPlayCD,               "evPlayCD"              },
     {   evPlayVCD,              "evPlayVCD"             },
     {   evPlayDVD,              "evPlayDVD"             },
     {   evLoadURL,              "evSetURL"              }, // legacy
--- a/gui/win32/skinload.h	Sat Dec 31 12:20:08 2011 +0000
+++ b/gui/win32/skinload.h	Sat Dec 31 12:38:52 2011 +0000
@@ -192,6 +192,7 @@
 #define ivSetDVDTitle     5009
 #define ivSetDVDChapter   5010
 #define ivSetVCDTrack     5012
+#define ivSetCDTrack      5014
 
 #define ivRedraw          7002
 
--- a/help/help_mp-de.h	Sat Dec 31 12:20:08 2011 +0000
+++ b/help/help_mp-de.h	Sat Dec 31 12:38:52 2011 +0000
@@ -788,6 +788,7 @@
 #define MSGTR_MENU_AboutMPlayer "Über MPlayer"
 #define MSGTR_MENU_Open "Öffnen..."
 #define MSGTR_MENU_PlayFile "Spiele Datei..."
+#define MSGTR_MENU_PlayCD "Spiele CD..."
 #define MSGTR_MENU_PlayVCD "Spiele VCD..."
 #define MSGTR_MENU_PlayDVD "Spiele DVD..."
 #define MSGTR_MENU_PlayURL "Spiele URL..."
@@ -805,6 +806,7 @@
 #define MSGTR_MENU_NormalSize "Normale Größe"
 #define MSGTR_MENU_DoubleSize "Doppelte Größe"
 #define MSGTR_MENU_FullScreen "Vollbild"
+#define MSGTR_MENU_CD "CD"
 #define MSGTR_MENU_DVD "DVD"
 #define MSGTR_MENU_VCD "VCD"
 #define MSGTR_MENU_PlayDisc "Öffne Disc..."
--- a/help/help_mp-en.h	Sat Dec 31 12:20:08 2011 +0000
+++ b/help/help_mp-en.h	Sat Dec 31 12:38:52 2011 +0000
@@ -594,6 +594,7 @@
 #define MSGTR_MENU_AboutMPlayer "About MPlayer"
 #define MSGTR_MENU_Open "Open..."
 #define MSGTR_MENU_PlayFile "Play file..."
+#define MSGTR_MENU_PlayCD "Play CD..."
 #define MSGTR_MENU_PlayVCD "Play VCD..."
 #define MSGTR_MENU_PlayDVD "Play DVD..."
 #define MSGTR_MENU_PlayURL "Play URL..."
@@ -611,6 +612,7 @@
 #define MSGTR_MENU_NormalSize "Normal size"
 #define MSGTR_MENU_DoubleSize "Double size"
 #define MSGTR_MENU_FullScreen "Fullscreen"
+#define MSGTR_MENU_CD "CD"
 #define MSGTR_MENU_DVD "DVD"
 #define MSGTR_MENU_VCD "VCD"
 #define MSGTR_MENU_PlayDisc "Open disc..."