Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: [Mplayer-dvb] DTS Sound



Stefan.Hagendorn@lindy.cc wrote:
> ----- Forwarded by Stefan Hagendorn/DELCC/LINDY on 24.03.2002 22:50 -----
> 
> 
> <rolf@max.lui.uni-tuebingen.de>
> Sent by: mplayer-dvb-admin@mplayer.dev.hu

[...]

> Acording to http://www.dvddemystified.com/dvdfaq.html#1.32
> 
> DTS Sound should be absolutly easy to playback
> 
> "since the DTS data is encapsulated into standard PCM tracks that are
> passed untouched to the digital audio output."
> 
> This is the same way AC3 Digital Out is done!

so, lets see if it's really *that* easy. The patch below will send all
DTS frames directly to the IEC60958 encoder. Don't forget to compile
with AC3=1. You might also have to play arround and adjust the additional
headerlength - see (????? header) below.

Andreas

===== dvd.c 1.9 vs edited =====
--- 1.9/dvd.c   Sun Mar 24 20:11:09 2002
+++ edited/dvd.c        Sun Mar 24 23:43:24 2002
@@ -1182,6 +1182,15 @@
                       datalen -= 13; // 3 (mandatory header) + 6 (PS header) + 4 (AC3 header) = 13
                      a52dec.decode(data, data+datalen, PTSflags, PTSdata);
                       break;
+                case aDTS:
+                   if (dolbyDev)
+                        putFrame(sector, r, ftDolby, ppts);
+#ifdef AC3OUT
+                     data += 4;
+                     datalen -= 13; // 3 (mandatory header) + 6 (PS header) + 4 (????? header) = 13
+                    a52dec.sendIEC60958(data, datalen, PTSflags, PTSdata);
+#endif
+                     break;
                  case aLPCM:
                       // write(audio, sector+14 , sector[19]+(sector[18]<<8)+6);
                       putFrame(sector, GetPacketLength(sector), ftAudio, ppts);
===== ca52.h 1.8 vs edited =====
--- 1.8/ca52.h  Fri Mar  1 22:52:16 2002
+++ edited/ca52.h       Sun Mar 24 23:42:05 2002
@@ -41,10 +41,10 @@
                  int index = -1);
    int convertSample (int flags, a52_state_t * _state, uint8_t sendPTS, uint8_t *PTSdata);
    void sendIEC60958pause(int type);
-  void sendIEC60958(uint8_t *buf, int length, uint8_t PTSflags, uint8_t *PTSdata, int index = -1);
   public:
    cA52decoder(cAudioCallback *ac);
    void decode(uint8_t * start, uint8_t * end, uint8_t PTSflags, uint8_t *PTSdata, int index = -1);
+  void sendIEC60958(uint8_t *buf, int length, uint8_t PTSflags, uint8_t *PTSdata, int index = -1);
    void clear();
  };




Home | Main Index | Thread Index