diff options
author | Casimir666 <casimir666@users.sourceforge.net> | 2010-06-19 15:30:38 +0400 |
---|---|---|
committer | Casimir666 <casimir666@users.sourceforge.net> | 2010-06-19 15:30:38 +0400 |
commit | bf54863df0b3844d1579a055afe46c72af87eb27 (patch) | |
tree | 9ebbf2292ae73cf6dc165f2e3fab1ac929feb6a1 /src/filters/parser | |
parent | cfa18d44c6892adee5160f397b0c61d070ffb56d (diff) |
Fixed : remove DTS-MA when connected to AC3 filter (did not support it)
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@2060 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/filters/parser')
-rw-r--r-- | src/filters/parser/MpegSplitter/MpegSplitter.cpp | 18 | ||||
-rw-r--r-- | src/filters/parser/MpegSplitter/MpegSplitter.h | 1 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/filters/parser/MpegSplitter/MpegSplitter.cpp b/src/filters/parser/MpegSplitter/MpegSplitter.cpp index 43ca7db34..4504bca69 100644 --- a/src/filters/parser/MpegSplitter/MpegSplitter.cpp +++ b/src/filters/parser/MpegSplitter/MpegSplitter.cpp @@ -1136,6 +1136,7 @@ CMpegSplitterOutputPin::CMpegSplitterOutputPin(CAtlArray<CMediaType>& mts, LPCWS : CBaseSplitterOutputPin(mts, pName, pFilter, pLock, phr)
, m_fHasAccessUnitDelimiters(false)
, m_rtMaxShift(50000000)
+ , m_bFilterDTSMA(false)
{
}
@@ -1523,9 +1524,9 @@ HRESULT CMpegSplitterOutputPin::DeliverPacket(CAutoPtr<Packet> p) return S_OK;
}
- else if (m_mt.subtype == MEDIASUBTYPE_DTS || m_mt.subtype == MEDIASUBTYPE_WAVE_DTS) // DTS HD MA data is causing trouble, lets just remove it
+ // DTS HD MA data is causing trouble with some filters, lets just remove it
+ else if (m_bFilterDTSMA && ((m_mt.subtype == MEDIASUBTYPE_DTS || m_mt.subtype == MEDIASUBTYPE_WAVE_DTS)))
{
-#if 0
BYTE* start = p->GetData();
BYTE* end = start + p->GetCount();
if (end - start < 4 && !p->pmt)
@@ -1562,9 +1563,6 @@ HRESULT CMpegSplitterOutputPin::DeliverPacket(CAutoPtr<Packet> p) {
return S_OK;
}
-
-#endif
-
}
else if (m_mt.subtype == MEDIASUBTYPE_HDMV_LPCM_AUDIO)
{
@@ -1589,8 +1587,14 @@ STDMETHODIMP CMpegSplitterOutputPin::Connect(IPin* pReceivePin, const AM_MEDIA_T if (SUCCEEDED (pReceivePin->QueryPinInfo (&PinInfo)))
{
- if (SUCCEEDED (PinInfo.pFilter->GetClassID(&FilterClsid)) && (FilterClsid == CLSID_DMOWrapperFilter))
- (static_cast<CMpegSplitterFilter*>(m_pFilter))->SetPipo(true);
+ if (SUCCEEDED (PinInfo.pFilter->GetClassID(&FilterClsid)))
+ {
+ if (FilterClsid == CLSID_DMOWrapperFilter)
+ (static_cast<CMpegSplitterFilter*>(m_pFilter))->SetPipo(true);
+ // AC3 Filter did not support DTS-MA
+ else if (FilterClsid == CLSID_AC3Filter)
+ m_bFilterDTSMA = true;
+ }
PinInfo.pFilter->Release();
}
diff --git a/src/filters/parser/MpegSplitter/MpegSplitter.h b/src/filters/parser/MpegSplitter/MpegSplitter.h index b7fac675c..cc79972e4 100644 --- a/src/filters/parser/MpegSplitter/MpegSplitter.h +++ b/src/filters/parser/MpegSplitter/MpegSplitter.h @@ -72,6 +72,7 @@ class CMpegSplitterOutputPin : public CBaseSplitterOutputPin, protected CCritSec CAutoPtrList<Packet> m_pl;
REFERENCE_TIME m_rtPrev, m_rtOffset, m_rtMaxShift;
bool m_fHasAccessUnitDelimiters;
+ bool m_bFilterDTSMA;
protected:
HRESULT DeliverNewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate);
|