⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chxpckts.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{    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 + -