📄 chxpckts.cpp
字号:
{ if (InterlockedDecrement(&m_lRefCount) > 0) { return m_lRefCount; } delete this; return 0;}/************************************************************************ * Method: * IHXPacket::Set */STDMETHODIMPCHXRTPPacket::Set(IHXBuffer* pBuffer, ULONG32 ulTime, UINT16 uStreamNumber, UINT8 unASMFlags, UINT16 unASMRuleNumber){ m_ulRTPTime = ulTime; return _Set(pBuffer, ulTime, uStreamNumber, unASMFlags, unASMRuleNumber);}/************************************************************************ * Method: * IHXRTPPacket::GetRTP */STDMETHODIMPCHXRTPPacket::GetRTP(REF(IHXBuffer*) pBuffer, REF(ULONG32) ulTime, REF(ULONG32) ulRTPTime, REF(UINT16) uStreamNumber, REF(UINT8) unASMFlags, REF(UINT16) unASMRuleNumber){ ulRTPTime = m_ulRTPTime; return _Get(pBuffer, ulTime, uStreamNumber, unASMFlags, unASMRuleNumber);}/************************************************************************ * Method: * IHXRTPPacket::GetRTPTime */STDMETHODIMP_(ULONG32)CHXRTPPacket::GetRTPTime(){ return m_ulRTPTime;}/************************************************************************ * Method: * IHXRTPPacket::SetRTP */STDMETHODIMPCHXRTPPacket::SetRTP(IHXBuffer* pBuffer, ULONG32 ulTime, ULONG32 ulRTPTime, UINT16 uStreamNumber, UINT8 unASMFlags, UINT16 unASMRuleNumber){ m_ulRTPTime = ulRTPTime; return _Set(pBuffer, ulTime, uStreamNumber, unASMFlags, unASMRuleNumber);}/////////////////////////////////////////////////////////////////////////// CHXHeader///////////////////////////////////////////////////////////////////////////// Method:// IUnknown::QueryInterface// Purpose:// Implement this to export the interfaces supported by your // object.//STDMETHODIMPCHXHeader::QueryInterface(REFIID riid, void** ppvObj){ if (IsEqualIID(riid, IID_IUnknown)) { AddRef(); *ppvObj = this; return HXR_OK; } else if (IsEqualIID(riid, IID_IHXValues)) { AddRef(); *ppvObj = (IHXValues*)this; return HXR_OK; } *ppvObj = NULL; return HXR_NOINTERFACE;}/////////////////////////////////////////////////////////////////////////// Method:// IUnknown::AddRef// Purpose:// Everyone usually implements this the same... feel free to use// this implementation.//STDMETHODIMP_(ULONG32)CHXHeader::AddRef(){ return InterlockedIncrement(&m_lRefCount);}/////////////////////////////////////////////////////////////////////////// Method:// IUnknown::Release// Purpose:// Everyone usually implements this the same... feel free to use// this implementation.//STDMETHODIMP_(ULONG32)CHXHeader::Release(){ if (InterlockedDecrement(&m_lRefCount) > 0) { return m_lRefCount; } delete this; return 0;}CHXHeader::CValue&CHXHeader::CValue::operator= (CHXHeader::CValue const& rhs){ CValue(rhs).Swap(*this); return *this;}CHXHeader::~CHXHeader(){ for (Map::iterator i = m_Map.begin(); i != m_Map.end(); ++i) { delete[] (char*)i->first; }}CHXHeader::CValue::~CValue(){ HX_RELEASE(m_pIBuffer); HX_RELEASE(m_pIString);}boolCHXHeader::MyCompare::operator()(const char* p1, const char* p2) const{ return (m_PreserveCase ? strcmp(p1, p2) : strcmpi(p1, p2)) < 0;}STDMETHODIMPCHXHeader::SetPropertyULONG32(const char* pPropertyName, ULONG32 uPropertyValue){ return SetProperty(pPropertyName, &CValue::m_lVal, uPropertyValue);}STDMETHODIMPCHXHeader::GetPropertyULONG32(const char* pPropertyName, REF(ULONG32) uPropertyValue){ return GetProperty(pPropertyName, &CValue::m_lVal, uPropertyValue);}STDMETHODIMPCHXHeader::GetFirstPropertyULONG32(REF(const char*) pPropertyName, REF(ULONG32) uPropertyValue){ m_ULONG32Position = m_Map.begin(); return GetNextProperty( pPropertyName, &CValue::m_lVal, uPropertyValue, m_ULONG32Position);}STDMETHODIMPCHXHeader::GetNextPropertyULONG32(REF(const char*) pPropertyName, REF(ULONG32) uPropertyValue){ if (m_ULONG32Position == m_Map.end()) { return HXR_FAIL; } return GetNextProperty( pPropertyName, &CValue::m_lVal, uPropertyValue, ++m_ULONG32Position);}STDMETHODIMPCHXHeader::SetPropertyBuffer(const char* pPropertyName, IHXBuffer* pPropertyValue){ if (!pPropertyValue) { return HXR_FAIL; } return SetProperty(pPropertyName, &CValue::m_pIBuffer, pPropertyValue);}STDMETHODIMPCHXHeader::GetPropertyBuffer(const char* pPropertyName, REF(IHXBuffer*) pPropertyValue){ return GetProperty(pPropertyName, &CValue::m_pIBuffer, pPropertyValue);}STDMETHODIMPCHXHeader::GetFirstPropertyBuffer(REF(const char*) pPropertyName, REF(IHXBuffer*) pPropertyValue){ m_BufferPosition = m_Map.begin(); return GetNextProperty( pPropertyName, &CValue::m_pIBuffer, pPropertyValue, m_BufferPosition);}STDMETHODIMPCHXHeader::GetNextPropertyBuffer(REF(const char*) pPropertyName, REF(IHXBuffer*) pPropertyValue){ if (m_BufferPosition == m_Map.end()) { return HXR_FAIL; } return GetNextProperty( pPropertyName, &CValue::m_pIBuffer, pPropertyValue, ++m_BufferPosition);}STDMETHODIMPCHXHeader::SetPropertyCString(const char* pPropertyName, IHXBuffer* pPropertyValue){ if (!pPropertyValue) { return HXR_FAIL; } return SetProperty(pPropertyName, &CValue::m_pIString, pPropertyValue);}STDMETHODIMPCHXHeader::GetPropertyCString(const char* pPropertyName, REF(IHXBuffer*) pPropertyValue){ return GetProperty(pPropertyName, &CValue::m_pIString, pPropertyValue);}STDMETHODIMPCHXHeader::GetFirstPropertyCString(REF(const char*) pPropertyName, REF(IHXBuffer*) pPropertyValue){ m_CStringPosition = m_Map.begin(); return GetNextProperty( pPropertyName, &CValue::m_pIString, pPropertyValue, m_CStringPosition);}STDMETHODIMPCHXHeader::GetNextPropertyCString(REF(const char*) pPropertyName, REF(IHXBuffer*) pPropertyValue){ if (m_CStringPosition == m_Map.end()) { return HXR_FAIL; } return GetNextProperty( pPropertyName, &CValue::m_pIString, pPropertyValue, ++m_CStringPosition);}voidCHXHeader::PreserveCase(BOOL bPreserve){ HX_ASSERT(m_Map.empty()); Map(MyCompare(bPreserve)).swap(m_Map);}voidCHXHeader::mergeHeaders(IHXValues* pDestHeaders, IHXValues* pSrcHeaders){#if 0 if (!pDestHeaders || !pSrcHeaders) return; // XXXHP - caveat emptor CHXHeader& sourceHeader = *((CHXHeader*) pSrcHeaders); CHXHeader& destHeader = *((CHXHeader*) pDestHeaders); for (Map::const_iterator i = sourceHeader.m_Map.begin (); i != sourceHeader.m_Map.end (); ++i) { Map::iterator j = destHeader.m_Map.find(i->first); if (j != destHeader.m_Map.end()) { CValue& lhs = j->second; const CValue& rhs = i->second; if (rhs.m_lValValid) lhs.Set(&CValue::m_lVal, rhs.m_lVal); if (rhs.m_pIBuffer) lhs.Set(&CValue::m_pIBuffer, rhs.m_pIBuffer); if (rhs.m_pIString) lhs.Set(&CValue::m_pIString, rhs.m_pIString); } else { char* pTmp = new char[strlen(i->first) + 1]; strcpy(pTmp, i->first); /* Flawfinder: ignore */ Map::value_type newVal(pTmp, i->second); newVal.second.m_Key = newVal.first; destHeader.m_Map.insert(newVal); } }#else if (pSrcHeaders && pDestHeaders) { // add these headers to the existing ones // const char* pPropName = NULL; UINT32 ulPropValue = 0; HX_RESULT rc = pSrcHeaders->GetFirstPropertyULONG32(pPropName, ulPropValue); while (SUCCEEDED(rc)) { pDestHeaders->SetPropertyULONG32(pPropName, ulPropValue); rc = pSrcHeaders->GetNextPropertyULONG32(pPropName, ulPropValue); } IHXBuffer* pBuffer = NULL; rc = pSrcHeaders->GetFirstPropertyBuffer(pPropName, pBuffer); while (SUCCEEDED(rc)) { pDestHeaders->SetPropertyBuffer(pPropName, pBuffer); pBuffer->Release(); rc = pSrcHeaders->GetNextPropertyBuffer(pPropName, pBuffer); } rc = pSrcHeaders->GetFirstPropertyCString(pPropName, pBuffer); while (SUCCEEDED(rc)) { pDestHeaders->SetPropertyCString(pPropName, pBuffer); pBuffer->Release(); rc = pSrcHeaders->GetNextPropertyCString(pPropName, pBuffer); } }#endif}_CStoreName::_CStoreName() : m_strName(){}_CStoreName::~_CStoreName(){}constCHXString& _CStoreName::GetName() const{ return m_strName;}void_CStoreName::SetName(const char* szName){ m_strName = szName;}_CStoreNameUINT32Pair::_CStoreNameUINT32Pair() : m_ulValue(0){}_CStoreNameUINT32Pair::~_CStoreNameUINT32Pair(){}UINT32_CStoreNameUINT32Pair::GetValue(){ return m_ulValue;}void_CStoreNameUINT32Pair::SetValue(UINT32 ulValue){ m_ulValue = ulValue;}_CStoreNameBufferPair::_CStoreNameBufferPair() : m_pbufValue(NULL){}_CStoreNameBufferPair::~_CStoreNameBufferPair(){ HX_RELEASE(m_pbufValue);}IHXBuffer*_CStoreNameBufferPair::GetValue(){ if (m_pbufValue) { m_pbufValue->AddRef(); } return m_pbufValue;}void_CStoreNameBufferPair::SetValue(IHXBuffer* pbufValue){ HX_RELEASE(m_pbufValue); m_pbufValue = pbufValue; if (m_pbufValue) { m_pbufValue->AddRef(); }}#if 0IHXBuffer*CHXHeader::encodeBuffer(IHXBuffer* pBuffer){ //XXXBAB - come back to this soon... CHXBuffer* pEncodedBuffer = new CHXBuffer; pEncodedBuffer->AddRef(); pEncodedBuffer->Set(pBuffer->GetBuffer(), pBuffer->GetSize()); return pEncodedBuffer;}IHXBuffer*CHXHeader::encodeCString(IHXBuffer* pBuffer){ CHXString tmp; const char* pStr = (const char*)pBuffer->GetBuffer(); BOOL inEscape = FALSE; for(size_t i=0;i<strlen(pStr);++i) { switch(pStr[i]) { case '\n': { tmp += "\\n"; } break; case '\t': { tmp += "\\t"; } break; case '\r': { tmp += "\\r"; } break; case '\"': { tmp += "\\\""; } break; case '\\': { tmp += "\\\\"; } break; default: { tmp += pStr[i]; } } } CHXBuffer* pEncodedBuffer = new CHXBuffer; pEncodedBuffer->AddRef(); pEncodedBuffer->Set((const BYTE*)(const char*)tmp, tmp.GetLength()+1); return pEncodedBuffer;}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -