import "oaidl.idl";
[
    object,
    uuid(7a2c1c80-c63d-11d0-a466-00a0c90c9156),
    local,
    helpstring("IRTPSourceStream Interface"),
    pointer_default(unique)
]
interface IRTPSourceStream : IUnknown
{
    HRESULT 
    GetRTPAddress (
        [out]     BYTE *  pRtpAddr,
        [in][out] DWORD * pdwRtpAddrLen
        );

    HRESULT 
    SetRTPAddress (
        [out] BYTE * pRtpAddr,
        [in]  DWORD  dwRtpAddrLen
        );
}

[
    object,
    uuid(7a2c1c81-c63d-11d0-a466-00a0c90c9156),
    local,
    helpstring("IRTPRenderStream Interface"),
    pointer_default(unique)
]
interface IRTPRenderStream : IUnknown
{
    HRESULT 
    GetRTPAddress (
        [out]     BYTE *  pRtpAddr,
        [in][out] DWORD * pdwRtpAddrLen
        );

    HRESULT 
    SetRTPAddress (
        [out] BYTE * pRtpAddr,
        [in]  DWORD  dwRtpAddrLen
        );

    HRESULT 
    GetRTPScope (
        [out] DWORD * pdwMulticastScope
        );

    HRESULT 
    SetRTPScope (
        [in] DWORD dwMulticastScope
        );

    HRESULT 
    GetSSRC(
        [out] DWORD * pdwSSRC
        );

    HRESULT 
    SetSSRC(
        [in] DWORD dwSSRC
        );

    HRESULT 
    GenerateSSRC(
        [out] DWORD * pdwSSRC
        );

    HRESULT 
    SetStreamClockFrequency(
        [in] DWORD dwClockFrequency
        );
}

[
    object,
    uuid(7a2c1c82-c63d-11d0-a466-00a0c90c9156),
    local,
    helpstring("IRTCPStream Interface"),
    pointer_default(unique)
]
interface IRTCPStream : IUnknown
{
    HRESULT 
    GetSdesItem(
        [in]      DWORD   dwSdesType, 
        [out]     BYTE *  pSdesItem, 
        [in][out] DWORD * pdwSdesItemLen
        );

    HRESULT 
    SetSdesItem(
        [in]  DWORD  dwSdesType, 
        [out] BYTE * pSdesItem, 
        [in]  DWORD  dwSdesItemLen
        );

    HRESULT 
    GetRTCPScope(
        [out] DWORD * pdwMulticastScope
        );

    HRESULT 
    SetRTCPScope(
        [in] DWORD dwMulticastScope
        );

    HRESULT 
    DisableRTCPBye(
        [in] BOOL fDisableBye
        );

    HRESULT 
    DisableRTCP(
        [in] BOOL fDisable
        );

    HRESULT 
    GetRTCPReports(
        [in]  DWORD   dwIndex, 
        [in]  DWORD   dwFilterFlags,
        [in]  BYTE *  pFilterPattern, 
        [in]  DWORD   dwFilterPatternLen,
        [out] BYTE *  pReportBuffer, 
        [in]  DWORD   dwReportBufferLen,
        [out] DWORD * pdwNumEntriesReturned, 
        [out] BOOL *  pfMoreEntriesAvailable 
        );
}

cpp_quote("EXTERN_C const CLSID CLSID_RTPSourceFilter;")
cpp_quote("EXTERN_C const CLSID CLSID_RTPSourceFilterProperties;")

cpp_quote("EXTERN_C const CLSID CLSID_RTPRenderFilter;")
cpp_quote("EXTERN_C const CLSID CLSID_RTPRenderFilterProperties;")
