Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasimir666 <casimir666@users.sourceforge.net>2010-06-19 15:30:38 +0400
committerCasimir666 <casimir666@users.sourceforge.net>2010-06-19 15:30:38 +0400
commitbf54863df0b3844d1579a055afe46c72af87eb27 (patch)
tree9ebbf2292ae73cf6dc165f2e3fab1ac929feb6a1 /src/filters/parser
parentcfa18d44c6892adee5160f397b0c61d070ffb56d (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.cpp18
-rw-r--r--src/filters/parser/MpegSplitter/MpegSplitter.h1
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);