diff -Nru vdr-1.3.20.orig/config.c vdr-1.3.20_recordac3-selectable/config.c
--- vdr-1.3.20.orig/config.c	Sat Feb  5 11:43:04 2005
+++ vdr-1.3.20_recordac3-selectable/config.c	Thu Feb 10 15:12:20 2005
@@ -282,6 +282,7 @@
   VideoFormat = 0;
   UpdateChannels = 4;
   UseDolbyDigital = 1;
+  RecordDolbyDigital = 1;
   ChannelInfoPos = 0;
   ChannelInfoTime = 5;
   OSDLeft = 54;
@@ -438,6 +439,7 @@
   else if (!strcasecmp(Name, "VideoFormat"))         VideoFormat        = atoi(Value);
   else if (!strcasecmp(Name, "UpdateChannels"))      UpdateChannels     = atoi(Value);
   else if (!strcasecmp(Name, "UseDolbyDigital"))     UseDolbyDigital    = atoi(Value);
+  else if (!strcasecmp(Name, "RecordDolbyDigital"))  RecordDolbyDigital = atoi(Value);
   else if (!strcasecmp(Name, "ChannelInfoPos"))      ChannelInfoPos     = atoi(Value);
   else if (!strcasecmp(Name, "ChannelInfoTime"))     ChannelInfoTime    = atoi(Value);
   else if (!strcasecmp(Name, "OSDLeft"))             OSDLeft            = atoi(Value);
@@ -501,6 +503,7 @@
   Store("VideoFormat",        VideoFormat);
   Store("UpdateChannels",     UpdateChannels);
   Store("UseDolbyDigital",    UseDolbyDigital);
+  Store("RecordDolbyDigital", RecordDolbyDigital);
   Store("ChannelInfoPos",     ChannelInfoPos);
   Store("ChannelInfoTime",    ChannelInfoTime);
   Store("OSDLeft",            OSDLeft);
diff -Nru vdr-1.3.20.orig/config.h vdr-1.3.20_recordac3-selectable/config.h
--- vdr-1.3.20.orig/config.h	Sat Feb  5 11:43:22 2005
+++ vdr-1.3.20_recordac3-selectable/config.h	Thu Feb 10 15:12:25 2005
@@ -240,6 +240,7 @@
   int VideoFormat;
   int UpdateChannels;
   int UseDolbyDigital;
+  int RecordDolbyDigital;
   int ChannelInfoPos;
   int ChannelInfoTime;
   int OSDLeft, OSDTop, OSDWidth, OSDHeight;
diff -Nru vdr-1.3.20.orig/i18n.c vdr-1.3.20_recordac3-selectable/i18n.c
--- vdr-1.3.20.orig/i18n.c	Sat Feb  5 11:46:30 2005
+++ vdr-1.3.20_recordac3-selectable/i18n.c	Thu Feb 10 15:56:25 2005
@@ -3661,6 +3661,27 @@
     "Otsesalvestuse kestus (min)",
     "Længde af direkte optagelse (min)",
   },
+  { "Setup.Recording$Record Dolby Digital",
+    "Dolby Digital Ton aufzeichnen",
+    "Posnemi dolby digital",
+    "Registra Dolby Digital",
+    "Dolby Digital geluid opnamen",
+    "Gravar em Dolby Digital",
+    "Enregistrer en Dolby Digital",
+    "Ta opp Dolby Digital lyd",
+    "Dolby Digital tallennus",
+    "Nagrywac Dolby Digital",
+    "Grabar sonido Dolby Digital",
+    "ÅããñáöÞ ôïõ Dolby Digital Þ÷ïõ",
+    "Spela in ljudet med Dolby Digital",
+    "Înregistreazã Dolby Digital",
+    "Dolby Digitál felvétel",
+    "Gravar el so en Dolby Digital",
+    "·ÐßØáëÒÐâì ×ÒãÚ Dolby Digital",
+    "Snimi 'Dolby digital' ton",
+    "Dolby Digital salvestamine",
+    "Optag Dolby Digital lyd",
+  },
   { "Setup.Recording$Max. video file size (MB)",
     "Max. Video Dateigröße (MB)",
     "Najvecja velikost datoteke (MB)",
diff -Nru vdr-1.3.20.orig/menu.c vdr-1.3.20_recordac3-selectable/menu.c
--- vdr-1.3.20.orig/menu.c	Sun Feb  6 12:33:13 2005
+++ vdr-1.3.20_recordac3-selectable/menu.c	Thu Feb 10 15:24:07 2005
@@ -2155,6 +2155,8 @@
   Add(new cMenuEditBoolItem(tr("Setup.Recording$Mark instant recording"),    &data.MarkInstantRecord));
   Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"),     data.NameInstantRecord, sizeof(data.NameInstantRecord), tr(FileNameChars)));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"),   &data.InstantRecordTime, 1, MAXINSTANTRECTIME));
+  if (!Setup.UseDolbyDigital)
+  Add(new cMenuEditBoolItem(tr("Setup.Recording$Record Dolby Digital"),      &data.RecordDolbyDigital));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Max. video file size (MB)"), &data.MaxVideoFileSize, MINVIDEOFILESIZE, MAXVIDEOFILESIZE));
   Add(new cMenuEditBoolItem(tr("Setup.Recording$Split edited files"),        &data.SplitEditedFiles));
 }
diff -Nru vdr-1.3.20.orig/recorder.c vdr-1.3.20_recordac3-selectable/recorder.c
--- vdr-1.3.20.orig/recorder.c	Sun Jan 16 13:53:17 2005
+++ vdr-1.3.20_recordac3-selectable/recorder.c	Thu Feb 10 16:21:32 2005
@@ -128,7 +128,7 @@
 }
 
 cRecorder::cRecorder(const char *FileName, int Ca, int Priority, int VPid, const int *APids, const int *DPids, const int *SPids)
-:cReceiver(Ca, Priority, VPid, APids, Setup.UseDolbyDigital ? DPids : NULL, SPids)
+:cReceiver(Ca, Priority, VPid, APids, (Setup.UseDolbyDigital || Setup.RecordDolbyDigital) ? DPids : NULL, SPids)
 ,cThread("recording")
 {
   active = false;
@@ -139,7 +139,7 @@
 
   ringBuffer = new cRingBufferLinear(RECORDERBUFSIZE, TS_SIZE * 2, true, "Recorder");
   ringBuffer->SetTimeouts(0, 100);
-  remux = new cRemux(VPid, APids, Setup.UseDolbyDigital ? DPids : NULL, SPids, true);
+  remux = new cRemux(VPid, APids, (Setup.UseDolbyDigital || Setup.RecordDolbyDigital) ? DPids : NULL, SPids, true);
   writer = new cFileWriter(FileName, remux);
 }
 
