diff options
author | ghost <andreas.monzner@multimedia-labs.de> | 2010-11-24 22:09:52 (GMT) |
---|---|---|
committer | ghost <andreas.monzner@multimedia-labs.de> | 2010-11-24 22:09:52 (GMT) |
commit | 266943db269293b00a9f2b59338b81cca5a928be (patch) | |
tree | be989e8a0ced32c5272b86340aad1fcd0afa0a57 /lib/dvb | |
parent | 8682ee11e24311ae3ae84665cd2da0075a0cf413 (diff) |
add DTS-HD as known audio format, add detection to pmt parser (no hardware support for DTS-HD yet)
Diffstat (limited to 'lib/dvb')
-rw-r--r-- | lib/dvb/decoder.cpp | 3 | ||||
-rw-r--r-- | lib/dvb/decoder.h | 2 | ||||
-rw-r--r-- | lib/dvb/idvb.h | 2 | ||||
-rw-r--r-- | lib/dvb/pmt.cpp | 7 | ||||
-rw-r--r-- | lib/dvb/pmt.h | 2 | ||||
-rw-r--r-- | lib/dvb/tstools.cpp | 2 |
6 files changed, 15 insertions, 3 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 88cd3ee..8ed9f43 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -203,6 +203,9 @@ int eDVBAudio::startPid(int pid, int type) case aLPCM: bypass = 6; break; + case aDTSHD: + bypass = 0x10; + break; } eDebugNoNewLine("AUDIO_SET_BYPASS(%d) - ", bypass); diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index 3a0fbac..7610b65 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -13,7 +13,7 @@ private: ePtr<eDVBDemux> m_demux; int m_fd, m_fd_demux, m_dev, m_is_freezed; public: - enum { aMPEG, aAC3, aDTS, aAAC, aAACHE, aLPCM }; + enum { aMPEG, aAC3, aDTS, aAAC, aAACHE, aLPCM, aDTSHD }; eDVBAudio(eDVBDemux *demux, int dev); enum { aMonoLeft, aStereo, aMonoRight }; void setChannel(int channel); diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index f15cd04..e56a2c7 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -650,7 +650,7 @@ public: /** Set Displayed Video PID and type */ virtual RESULT setVideoPID(int vpid, int type)=0; - enum { af_MPEG, af_AC3, af_DTS, af_AAC }; + enum { af_MPEG, af_AC3, af_DTS, af_AAC, af_DTSHD }; /** Set Displayed Audio PID and type */ virtual RESULT setAudioPID(int apid, int type)=0; diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index e54601c..0b3e34a 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -305,6 +305,13 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) isaudio = 1; audio.type = audioStream::atDTS; } + case 0x86: // Blueray DTS-HD (dvb user private...) + case 0xA6: // Blueray secondary DTS-HD + if (!isvideo && !isaudio) + { + isaudio = 1; + audio.type = audioStream::atDTSHD; + } case 0x06: // PES Private case 0xEA: // TS_PSI_ST_SMPTE_VC1 { diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h index de0de05..e61f871 100644 --- a/lib/dvb/pmt.h +++ b/lib/dvb/pmt.h @@ -144,7 +144,7 @@ public: { int pid, rdsPid; // hack for some radio services which transmit radiotext on different pid (i.e. harmony fm, HIT RADIO FFH, ...) - enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM }; + enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM, atDTSHD }; int type; // mpeg2, ac3, dts, ... int component_tag; diff --git a/lib/dvb/tstools.cpp b/lib/dvb/tstools.cpp index cfea3fd..e93cfc0 100644 --- a/lib/dvb/tstools.cpp +++ b/lib/dvb/tstools.cpp @@ -212,6 +212,8 @@ int eDVBTSTools::getPTS(off_t &offset, pts_t &pts, int fixed) break; case 0x71: // AC3 / DTS break; + case 0x72: // DTS - HD + break; default: eDebug("skip unknwn stream_id_extension %02x\n", payload[9+offs]); continue; |