本文整理汇总了C++中CBaseSplitterOutputPin::GetConnected方法的典型用法代码示例。如果您正苦于以下问题:C++ CBaseSplitterOutputPin::GetConnected方法的具体用法?C++ CBaseSplitterOutputPin::GetConnected怎么用?C++ CBaseSplitterOutputPin::GetConnected使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBaseSplitterOutputPin
的用法示例。
在下文中一共展示了CBaseSplitterOutputPin::GetConnected方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RenameOutputPin
HRESULT CBaseSplitterFilter::RenameOutputPin(DWORD TrackNumSrc, DWORD TrackNumDst, const AM_MEDIA_TYPE* pmt)
{
CAutoLock cAutoLock(&m_csPinMap);
CBaseSplitterOutputPin* pPin;
if (m_pPinMap.Lookup(TrackNumSrc, pPin)) {
if (CComQIPtr<IPin> pPinTo = pPin->GetConnected()) {
if (pmt && S_OK != pPinTo->QueryAccept(pmt)) {
return VFW_E_TYPE_NOT_ACCEPTED;
}
}
m_pPinMap.RemoveKey(TrackNumSrc);
m_pPinMap[TrackNumDst] = pPin;
if (pmt) {
CAutoLock cAutoLock2(&m_csmtnew);
m_mtnew[TrackNumDst] = *pmt;
}
return S_OK;
}
return E_FAIL;
}
示例2: RenameOutputPin
HRESULT CBaseSplitterFilter::RenameOutputPin(DWORD TrackNumSrc, DWORD TrackNumDst, std::vector<CMediaType> mts, BOOL bNeedReconnect /*= FALSE*/)
{
CAutoLock cAutoLock(&m_csPinMap);
CBaseSplitterOutputPin* pPin;
if (m_pPinMap.Lookup(TrackNumSrc, pPin)) {
AM_MEDIA_TYPE* pmt = NULL;
HRESULT hr = S_OK;
if (CComQIPtr<IPin> pPinTo = pPin->GetConnected()) {
for (size_t i = 0; i < mts.size(); i++) {
if (S_OK == pPinTo->QueryAccept(&mts[i])) {
pmt = &mts[i];
break;
}
}
if (!pmt) {
pmt = &mts[0];
}
if (bNeedReconnect) {
hr = ReconnectPin(pPinTo, pmt);
}
}
m_pPinMap.RemoveKey(TrackNumSrc);
m_pPinMap[TrackNumDst] = pPin;
if (pmt) {
CAutoLock cAutoLock(&m_csmtnew);
m_mtnew[TrackNumDst] = *pmt;
}
return hr;
}
return E_FAIL;
}