diff -urN dvd-0.3.1/player-dvd.c dvd-0.3.1-ac3/player-dvd.c
--- dvd-0.3.1/player-dvd.c	2003-02-16 20:52:26.000000000 +0100
+++ dvd-0.3.1-ac3/player-dvd.c	2003-03-31 16:12:25.000000000 +0200
@@ -674,26 +674,43 @@
 		  if (audio_stream == (*data & 7))
 		      switch (*data & 0xF8) {
 			  case aAC3:
-			       PlayAudio(sector, r);
-			       data += 4;
-			       // header: 3 (mandatory) + 6 (PS) + 4 (AC3)
-			       datalen -= 13;
-			       a52dec.decode(data, datalen, pktpts);
+#ifdef HAVE_AC3_OVER_DVB
+			       if(Setup.PlayMultichannelAudio) {
+                                 seenPTS(pktpts);
+                                 cbPlayAudio(sector, r);
+                                 }
+			       else {
+#else
+                                 PlayAudio(sector, r);
+#endif
+                                 data += 4;
+			         // header: 3 (mandatory) + 6 (PS) + 4 (AC3)
+			         datalen -= 13;
+			         a52dec.decode(data, datalen, pktpts);
+#ifdef HAVE_AC3_OVER_DVB
+                                 }
+#endif
 			       break;
-#ifdef NOT_YET
 			  case aDTS:
-#if 0
-			       if (cDvbApi::AudioCommand())
-				   putFrame(sector, r, ftDolby, pktpts);
-#endif
-			       if (Setup.AC3overDVB) {
-				   data += 4;
-				   // header: 3 (mandatory) + 6 (PS) + 4 (DTS)
-				   datalen -= 13;
-				   dtsdec.decode(data, datalen, pktpts);
-			       }
-			       break;
+#ifdef HAVE_AC3_OVER_DVB
+			       if(Setup.PlayMultichannelAudio) {
+                                 seenPTS(pktpts);
+                                 cbPlayAudio(sector, r);
+                                 }
+                               else {
+#else
+                                 PlayAudio(sector, r);
 #endif
+#ifdef NOT_YET
+			         data += 4;
+			         // header: 3 (mandatory) + 6 (PS) + 4 (DTS)
+			         datalen -= 13;
+			         dtsdec.decode(data, datalen, pktpts);
+#endif
+#ifdef HAVE_AC3_OVER_DVB
+                                 }
+#endif
+			       break;
 			  case aLPCM: {
 			       write_blk = cache_buf;
 			       blk_offs = sector - cache_buf;

