本文整理汇总了C++中CInterfaceList::AddTail方法的典型用法代码示例。如果您正苦于以下问题:C++ CInterfaceList::AddTail方法的具体用法?C++ CInterfaceList::AddTail怎么用?C++ CInterfaceList::AddTail使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CInterfaceList
的用法示例。
在下文中一共展示了CInterfaceList::AddTail方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MuxHeader
void CDSMMuxerFilter::MuxHeader(IBitStream* pBS)
{
CString muxer;
muxer.Format(_T("DSM Muxer (%s)"), CString(__TIMESTAMP__));
SetProperty(L"MUXR", CStringW(muxer));
SetProperty(L"DATE", CStringW(CTime::GetCurrentTime().FormatGmt(_T("%Y-%m-%d %H:%M:%S"))));
MuxFileInfo(pBS);
POSITION pos = m_pPins.GetHeadPosition();
while (pos) {
CBaseMuxerInputPin* pPin = m_pPins.GetNext(pos);
const CMediaType& mt = pPin->CurrentMediaType();
ASSERT((mt.lSampleSize >> 30) == 0); // you don't need >1GB samples, do you?
MuxPacketHeader(pBS, DSMP_MEDIATYPE, 5 + sizeof(GUID)*3 + mt.FormatLength());
pBS->BitWrite(pPin->GetID(), 8);
pBS->ByteWrite(&mt.majortype, sizeof(mt.majortype));
pBS->ByteWrite(&mt.subtype, sizeof(mt.subtype));
pBS->BitWrite(mt.bFixedSizeSamples, 1);
pBS->BitWrite(mt.bTemporalCompression, 1);
pBS->BitWrite(mt.lSampleSize, 30);
pBS->ByteWrite(&mt.formattype, sizeof(mt.formattype));
pBS->ByteWrite(mt.Format(), mt.FormatLength());
MuxStreamInfo(pBS, pPin);
}
// resources & chapters
CInterfaceList<IDSMResourceBag> pRBs;
pRBs.AddTail(this);
CComQIPtr<IDSMChapterBag> pCB = (IUnknown*)(INonDelegatingUnknown*)this;
pos = m_pPins.GetHeadPosition();
while (pos) {
for (CComPtr<IPin> pPin = m_pPins.GetNext(pos)->GetConnected(); pPin; pPin = GetUpStreamPin(GetFilterFromPin(pPin))) {
if (m_fAutoRes) {
CComQIPtr<IDSMResourceBag> pPB = GetFilterFromPin(pPin);
if (pPB && !pRBs.Find(pPB)) {
pRBs.AddTail(pPB);
}
}
if (m_fAutoChap) {
if (!pCB || pCB->ChapGetCount() == 0) {
pCB = GetFilterFromPin(pPin);
}
}
}
}
// resources
pos = pRBs.GetHeadPosition();
while (pos) {
IDSMResourceBag* pRB = pRBs.GetNext(pos);
for (DWORD i = 0, j = pRB->ResGetCount(); i < j; i++) {
CComBSTR name, desc, mime;
BYTE* pData = NULL;
DWORD len = 0;
if (SUCCEEDED(pRB->ResGet(i, &name, &desc, &mime, &pData, &len, NULL))) {
CStringA utf8_name = UTF16To8(name);
CStringA utf8_desc = UTF16To8(desc);
CStringA utf8_mime = UTF16To8(mime);
MuxPacketHeader(pBS, DSMP_RESOURCE,
1 +
utf8_name.GetLength()+1 +
utf8_desc.GetLength()+1 +
utf8_mime.GetLength()+1 +
len);
pBS->BitWrite(0, 2);
pBS->BitWrite(0, 6); // reserved
pBS->ByteWrite(utf8_name, utf8_name.GetLength()+1);
pBS->ByteWrite(utf8_desc, utf8_desc.GetLength()+1);
pBS->ByteWrite(utf8_mime, utf8_mime.GetLength()+1);
pBS->ByteWrite(pData, len);
CoTaskMemFree(pData);
}
}
}
// chapters
if (pCB) {
CAtlList<CDSMChapter> chapters;
REFERENCE_TIME rtPrev = 0;
int len = 0;
pCB->ChapSort();
for (DWORD i = 0; i < pCB->ChapGetCount(); i++) {
CDSMChapter c;
//.........这里部分代码省略.........