summaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-11-24 22:09:52 (GMT)
committerghost <andreas.monzner@multimedia-labs.de>2010-11-24 22:09:52 (GMT)
commit266943db269293b00a9f2b59338b81cca5a928be (patch)
treebe989e8a0ced32c5272b86340aad1fcd0afa0a57 /lib/dvb
parent8682ee11e24311ae3ae84665cd2da0075a0cf413 (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.cpp3
-rw-r--r--lib/dvb/decoder.h2
-rw-r--r--lib/dvb/idvb.h2
-rw-r--r--lib/dvb/pmt.cpp7
-rw-r--r--lib/dvb/pmt.h2
-rw-r--r--lib/dvb/tstools.cpp2
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;