810 lines
32 KiB
C
810 lines
32 KiB
C
|
/****************************************************************************
|
|||
|
*
|
|||
|
* $Archive: S:/STURGEON/SRC/INCLUDE/VCS/strmspif.h_v $
|
|||
|
*
|
|||
|
* INTEL Corporation Prorietary Information
|
|||
|
*
|
|||
|
* This listing is supplied under the terms of a license agreement
|
|||
|
* with INTEL Corporation and may not be copied nor disclosed except
|
|||
|
* in accordance with the terms of that agreement.
|
|||
|
*
|
|||
|
* Copyright (c) 1993-1994 Intel Corporation.
|
|||
|
*
|
|||
|
* $Revision: 1.5 $
|
|||
|
* $Date: 09 Oct 1996 08:48:50 $
|
|||
|
* $Author: RKUHN $
|
|||
|
*
|
|||
|
* Deliverable:
|
|||
|
*
|
|||
|
* Abstract:
|
|||
|
* Media Service Manager "public" header file. This file contains
|
|||
|
* #defines, typedefs, struct definitions and prototypes used by
|
|||
|
* and in conjunction with MSM. Any EXE or DLL which interacts with
|
|||
|
* MSM will include this header file.
|
|||
|
*
|
|||
|
* Notes:
|
|||
|
*
|
|||
|
***************************************************************************/
|
|||
|
|
|||
|
// strmspif.h
|
|||
|
|
|||
|
#ifndef _STRMSPIF_H_
|
|||
|
#define _STRMSPIF_H_
|
|||
|
|
|||
|
#include "smtypes.h"
|
|||
|
#include "rrcm_dll.h"
|
|||
|
#include "apimsp.h"
|
|||
|
#include "apierror.h"
|
|||
|
|
|||
|
// define Source and Sink MSP IDs
|
|||
|
#define STRMSP_SRC "IntelNetIORTPStreamSrc"
|
|||
|
#define STRMSP_SNK "IntelNetIORTPStreamSnk"
|
|||
|
|
|||
|
// version number
|
|||
|
#define STRMSP_INTERFACE_VERSION 0x1
|
|||
|
|
|||
|
typedef DWORD STRMSP_HSESSION;
|
|||
|
|
|||
|
|
|||
|
//**********************************
|
|||
|
// structures used in interface calls
|
|||
|
//**********************************
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SESSION_ATTRIBUTES
|
|||
|
|
|||
|
uMulticastFlags Flags defining the multicast characteristics of this session.
|
|||
|
Valid flag values are WSA_FLAG_MULTIPOINT_C_ROOT,
|
|||
|
WSA_FLAG_MULTIPOINT_C_LEAF, WSA_FLAG_MULTIPOINT_D_ROOT, and
|
|||
|
WSA_FLAG_MULTIPOINT_D_LEAF with usage and semantics as defined
|
|||
|
in the Winsock 2 used.
|
|||
|
|
|||
|
dwSSRC Is a DWORD specifying the SSRC value to be used to identify the
|
|||
|
RTP session. This will be the SSRC value used for the first
|
|||
|
sending stream created within this session or for RTCP receiver
|
|||
|
reports for this session even if no sending stream is opened.
|
|||
|
If the value of the SSRCSpecified parameter is FALSE, the value
|
|||
|
of this parameter is ignored and an SSRC value will be generated
|
|||
|
during the call. NOTE: The SSRC value of a stream can be
|
|||
|
reassigned dynamically because of collisions. Applications should
|
|||
|
use the STRMSP_NEWSOURCE Application Command facility to track any
|
|||
|
such changes.
|
|||
|
|
|||
|
bSSRCSpecified Is a BOOLEAN specifying whether a user supplied SSRC value has been
|
|||
|
placed in the buffer pointed to by dSSRC. If TRUE, the user has
|
|||
|
specified an SSRC value to use used.
|
|||
|
|
|||
|
pGroupInfo Pointer to a STRM_SOCKET_GROUP_INFO structure specifying group id
|
|||
|
and relative priority for sockets created for this RTP session.
|
|||
|
If the groupID field is zero, sockets are not grouped. If the
|
|||
|
groupID field is SG_UNCONSTRAINED_GROUP, a new socket group will
|
|||
|
be created. Otherwise any sockets created will be part of the socket
|
|||
|
group specified by the GroupID field used.
|
|||
|
|
|||
|
pSessionUser Pointer to a STRM_USER_DESCRIPTION structure containing information
|
|||
|
about the user of this session. This information is used by RTCP to
|
|||
|
generate session description packets. A CNAME description field must
|
|||
|
be included, and other fields may be required based on the RTP profile
|
|||
|
being used.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_session_attributes
|
|||
|
{
|
|||
|
UINT uMulticastFlags;
|
|||
|
DWORD dwSSRC;
|
|||
|
BOOL bSSRCSpecified;
|
|||
|
STRM_SOCKET_GROUP_INFO *pGroupInfo;
|
|||
|
STRM_USER_DESCRIPTION *pSessionUser;
|
|||
|
} STRMSP_SESSION_ATTRIBUTES, *LPSTRMSP_SESSION_ATTRIBUTES;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SESSION_STARTUP_PARAMS
|
|||
|
|
|||
|
DestAddr Is a STRM_SESSION_ADDRESSES structure containing the addresses that
|
|||
|
data and control messages for this RTP session will be sent to.
|
|||
|
These values must be specified even if no sink ports will be created
|
|||
|
on this RTP session.
|
|||
|
|
|||
|
uMulticastScope Is a UINT specifying the IP multicast time-to-live (TTL) value to use
|
|||
|
for transmitting streams on this session. The multicast scope for this
|
|||
|
session may also be modified at any time by using
|
|||
|
STRMSP_SETMULTICASTSCOPE MSP command. If the DestAddr field does not
|
|||
|
specify a multicast address, this field is ignored.
|
|||
|
|
|||
|
SingleQOS Is a QOS structure containing the requested QOS parameters for this RTP
|
|||
|
session.
|
|||
|
|
|||
|
GroupQOS Is a QOS structure containing the requested QOS parameters for the group
|
|||
|
this RTP session belongs to. This field is only valid when used in
|
|||
|
conjunction with the initial RTP session in a group.
|
|||
|
|
|||
|
BufferInfo Is a STRM_BUFFERING_INFO structure where the initial buffering
|
|||
|
requirements for this session are specified. The value of the uBufferSize
|
|||
|
field of this structure will be used as the size for all buffers required
|
|||
|
on this session. The uMinimumCount field value will set the initial and
|
|||
|
minimum number of buffers for the session (and maximum also if the Streams
|
|||
|
manager implementation does not support dynamic buffer allocation.) The
|
|||
|
uMaximumCount field value will set an upper limit for the total number of
|
|||
|
buffers allowed in this session.
|
|||
|
|
|||
|
EncriptionInfo Is a STRM_ENCRYPTION_INFORMATION structure containing information about
|
|||
|
any encryption or decryption to be done on the session.
|
|||
|
|
|||
|
iStreamClock Is an integer specifying the clocking frequency for the initial sending
|
|||
|
stream in this session (in hz.).
|
|||
|
*/
|
|||
|
typedef struct _strmsp_session_startup_params
|
|||
|
{
|
|||
|
STRM_SESSION_ADDRESSES DestAddr;
|
|||
|
UINT uMulticastScope;
|
|||
|
QOS SingleQOS;
|
|||
|
QOS GroupQOS;
|
|||
|
STRM_BUFFERING_INFO BufferInfo;
|
|||
|
STRM_ENCRYPTION_INFORMATION EncryptionInfo;
|
|||
|
int iStreamClock;
|
|||
|
} STRMSP_SESSION_STARTUP_PARAMS, *LPSTRMSP_SESSION_STARTUP_PARAMS;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_OPENSERVICE_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
protInfo Is a pointer to a WSAPROTOCOL_INFO structure that contains information about the network
|
|||
|
protocol to use and the type of sockets to create for this service instance.
|
|||
|
The structure may be empty (all nulls) when passed to this function, in
|
|||
|
which case a UDP service provider will be searched for and used for data
|
|||
|
transport. The structure also may be initialized with only the iProtocol
|
|||
|
field initialized, in which case a service provider of the specified type
|
|||
|
and supporting an unconnected socket type will be searched for and used.
|
|||
|
Finally, the entire structure may be initialized (as with WSAEnumProtocols)
|
|||
|
to unequivocally specify the protocol and socket type to be used.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_openservice_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
WSAPROTOCOL_INFO *pProtocolInfo;
|
|||
|
} STRMSP_OPENSERVICE_IN_INFO, *LPSTRMSP_OPENSERVICE_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_OPENSERVICE_OUT_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
protInfo A pointer to a WSAPROTOCOL_INFO structure where the Winsock 2 Service Provider
|
|||
|
protocol information actual used for this STRMSP service instance will be returned.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_openservice_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
WSAPROTOCOL_INFO *pProtocolInfo;
|
|||
|
} STRMSP_OPENSERVICE_OUT_INFO, *LPSTRMSP_OPENSERVICE_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_CREATESESSION_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
SessionAddr Is a STRM_SESSION_ADDRESSES structure containing requested RTP and RTCP
|
|||
|
network addresses for this session. If session addresses specified here
|
|||
|
are empty (null) when passed to MSM_SendServiceCmd(), appropriate
|
|||
|
addresses will be assigned and returned in the corresponding output
|
|||
|
structure. If the addresses are specified, they must conform to the
|
|||
|
conventions established for RTP/RTCP sockets in RFC 1889. The value of
|
|||
|
the sa_family fields of these addresses, if specified, must be the address
|
|||
|
family supported by the protocol specified (implicitly or explicitly) in
|
|||
|
MSM_OpenService() call.
|
|||
|
|
|||
|
SessionAttribs Is a STRMSP_SESSION_ATTRIBUTES structure containing requested attributes
|
|||
|
for this session. See description of STRMSP_SESSION_ATTRIBUTES above for
|
|||
|
specifics on the contents of each field.
|
|||
|
|
|||
|
dwSessionToken Is a uninterpreted DWORD value which will be passed back as a parameter
|
|||
|
to application commands relating to this session. The application may use
|
|||
|
this as a reference to session specific data.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_createsession_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRM_SESSION_ADDRESSES SessionAddr;
|
|||
|
STRMSP_SESSION_ATTRIBUTES SessionAttribs;
|
|||
|
DWORD dwSessionToken;
|
|||
|
} STRMSP_CREATESESSION_IN_INFO, *LPSTRMSP_CREATESESSION_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_CREATESESSION_OUT_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Returns a handle to be used in commands referring to this session.
|
|||
|
|
|||
|
SessionAddr Returns a STRM_SESSION_ADDRESSES structure containing the actual RTP and RTCP
|
|||
|
network addresses for this session.
|
|||
|
|
|||
|
dwSSRC Returns a DWORD containing the actual SSRC value assigned to this session.
|
|||
|
|
|||
|
uGroup Returns a UINT containing the socket group assigned to sockets in this session.
|
|||
|
This is only returned in a non-zero group identifier was specified in the group
|
|||
|
information field of the Session Attributes structure of the input information.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_createsession_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
STRM_SESSION_ADDRESSES SessionAddr;
|
|||
|
DWORD dwSSRC;
|
|||
|
UINT uGroup;
|
|||
|
} STRMSP_CREATESESSION_OUT_INFO, *LPSTRMSP_CREATESESSION_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_STARTSESSION_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session to be started,
|
|||
|
as returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
StartupParams Is a STRMSP_SESSION_STARTUP_PARAMS structure containing startup parameters
|
|||
|
for this session. See description of STRMSP_SESSION_STARTUP_PARAMS above
|
|||
|
for specifics on the contents of each field.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_startsession_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
STRMSP_SESSION_STARTUP_PARAMS StartupParams;
|
|||
|
} STRMSP_STARTSESSION_IN_INFO, *LPSTRMSP_STARTSESSION_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_CLOSESESSION_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session to be started,
|
|||
|
as returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
lpReason Is a pointer to a optional null terminated string declaring a reason for
|
|||
|
closing the RTP Streams Manager session. The contents of this string are
|
|||
|
passed to remote participants for application use.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_closesession_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
const char* lpReason;
|
|||
|
} STRMSP_CLOSESESSION_IN_INFO, *LPSTRMSP_CLOSESESSION_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_GETMTUSIZE_OUT_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session referenced, as
|
|||
|
returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
uMTUSize UINT that is the maximum size of a transport data unit.
|
|||
|
This is the size of the largest buffer that may be submitted to a port created
|
|||
|
from this STRMSP session.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_getmtusize_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
int iMTUSize;
|
|||
|
} STRMSP_GETMTUSIZE_OUT_INFO, *LPSTRMSP_GETMTUSIZE_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SETMULTICASTSCOPE_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session, as returned
|
|||
|
from a successful CREATESESSION command.
|
|||
|
|
|||
|
uMulticastScope Is a UINT that specifies the IP multicast time-to-live (TTL) value to use
|
|||
|
for transmitting streams on this session.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_setmulticastscope_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
UINT uMulticastScope;
|
|||
|
} STRMSP_SETMULTICASTSCOPE_IN_INFO, *LPSTRMSP_SETMULTICASTSCOPE_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SETQOS_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session, as returned from
|
|||
|
a successful CREATESESSION command.
|
|||
|
|
|||
|
bGroupQOS Is a BOOLEAN specifying whether the QOS structure field is for a socket group
|
|||
|
(TRUE) or for this session only (FALSE.) If this value is TRUE, the Handle
|
|||
|
field must contain the session handle for the initial session of the group
|
|||
|
(the session on which the creation of the group was specified.)
|
|||
|
|
|||
|
RequestedQOS is a QOS structure containing the newly requested QOS parameters.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_setqos_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
BOOL bGroupQOS;
|
|||
|
QOS RequestedQOS;
|
|||
|
} STRMSP_SETQOS_IN_INFO, *LPSTRMSP_SETQOS_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_GETSESSIONREPORTS_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session, as returned
|
|||
|
from a successful CREATESESSION command.
|
|||
|
|
|||
|
iFilterFlags Is an int containing bit flags specifying filters that can be used to
|
|||
|
select subsets of the RTCP_REPORT structures available on this session.
|
|||
|
The value 0 disables all filtering and allows all available report data
|
|||
|
to be read. Other filter flag definitions TBD.
|
|||
|
|
|||
|
iFilterPattern Is an int containing a pattern to be used for filtering the reports.
|
|||
|
Format of this pattern depends on the filter flags selected in the
|
|||
|
iFilterFlags parameter. Specifics TBD.
|
|||
|
|
|||
|
iEntryIndex Is an int containing the index of first RTCP_REPORT structure to be
|
|||
|
returned. Valid index values start from 0 (for the first RTCP_REPORT
|
|||
|
structure) and go up to one less that the total number of entries.
|
|||
|
|
|||
|
lpReport Is a pointer to a caller supplied buffer where RTCP_REPORT structures will
|
|||
|
be copied. This buffer should be sized to hold an integral number of
|
|||
|
RTCP_REPORT structures.
|
|||
|
|
|||
|
iReportLen Is an int containing the size in bytes of the buffer pointed to by the
|
|||
|
lpReport field.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_getsessionreports_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
int iFilterFlags;
|
|||
|
int iFilterPattern;
|
|||
|
int iEntryIndex;
|
|||
|
RTCP_REPORT* lpReport;
|
|||
|
int iReportLen;
|
|||
|
} STRMSP_GETSESSIONREPORTS_IN_INFO, *LPSTRMSP_GETSESSIONREPORTS_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_GETSESSIONREPORTS_OUT_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
iEntriesReturned Is an int where the number of RTCP_REPORT structures actually copied
|
|||
|
into buffer pointer to by the lpReport field will be returned.
|
|||
|
|
|||
|
iNextIndex Is an int where the index of the next RTCP_REPORT structure will be
|
|||
|
returned. This value can be used as the value of the iEntryIndex
|
|||
|
field of subsequent calls to obtain all reports when the report buffer
|
|||
|
size is too small to hold then all at once. A value of zero (0)
|
|||
|
returned here indicates that all remaining reports have been returned.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_getsessionreports_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
int iEntriesReturned;
|
|||
|
int iNextIndex;
|
|||
|
} STRMSP_GETSESSIONREPORTS_OUT_INFO, *LPSTRMSP_GETSESSIONREPORTS_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SETDESTINATIONADDRESS_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session referenced, as
|
|||
|
returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
pDestinationAddr is a pointer to the network address to be used for sending data
|
|||
|
|
|||
|
iDestinationAddrLength is the length in bytes of the data network address
|
|||
|
|
|||
|
*/
|
|||
|
typedef struct _strmsp_setdestinationaddress_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
LPSOCKADDR pDestinationAddr;
|
|||
|
int iDestinationAddrLength;
|
|||
|
} STRMSP_SETDESTINATIONADDRESS_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_GENERATESSRC_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session referenced, as
|
|||
|
returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
pdwSSRC pointer to where the newly generated SSRC will be stored
|
|||
|
|
|||
|
*/
|
|||
|
typedef struct _strmsp_generatessrc_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
DWORD *pdwSSRC;
|
|||
|
} STRMSP_GENERATESSRC_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_NEWSOURCE_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure is are valid.
|
|||
|
|
|||
|
uSessionToken Is the UINT value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
dwSSRC Is the RTP SSRC identifier for the newly detected source. This value can
|
|||
|
be used for creating a STRMSP source port mapped to this data stream.
|
|||
|
|
|||
|
wPayloadType Is the RTP payload type identifier for the newly detected source. This
|
|||
|
value is used to match this stream of data with an appropriate payload
|
|||
|
handler.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_newsource_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
WORD wPayloadType;
|
|||
|
} STRMSP_NEWSOURCE_IN_INFO, *LPSTRMSP_NEWSOURCE_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_RECVREPORT_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure are valid.
|
|||
|
|
|||
|
dwSessionToken Is the DWORD value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
dwSSRC Is the RTP SSRC identifier for the data stream a report has been received
|
|||
|
for. This value can be used for identifying the newly arrived report when
|
|||
|
using the GETSESSIONREPORTS service command.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_recvreport_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_RECVREPORT_IN_INFO, *LPSTRMSP_RECVREPORT_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_QOSCHANGE_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure are valid.
|
|||
|
|
|||
|
dwSessionToken Is the DWORD value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
bGroup Is a Boolean indicating whether the QOS change is associated with a socket
|
|||
|
group (TRUE) or with this session only (FALSE.)
|
|||
|
|
|||
|
NewQOS Is a QOS structure giving the new QOS parameters for this session<EFBFBD>s data
|
|||
|
socket or socket group.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_qoschange_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
BOOL bGroup;
|
|||
|
QOS NewQOS;
|
|||
|
} STRMSP_QOSCHANGE_IN_INFO, *LPSTRMSP_QOSCHANGE_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SRCTIMEOUT_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure are valid.
|
|||
|
|
|||
|
uSessionToken Is the UINT value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
dwSSRC Is the RTP SSRC identifier for the data stream that has timed-out.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_srctimeout_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_SRCTIMEOUT_IN_INFO, *LPSTRMSP_SRCTIMEOUT_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SRCBYE_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure are valid.
|
|||
|
|
|||
|
dwSessionToken Is the DWORD value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
dwSSRC Is the RTP SSRC identifier for the data stream that is closing.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_srcbye_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_SRCBYE_IN_INFO, *LPSTRMSP_SRCBYE_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_NEWSSRC_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure are valid.
|
|||
|
|
|||
|
dwSessionToken Is the DWORD value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
dwSSRC Is the newly assigned RTP SSRC identifier for this data stream.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_newssrc_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_NEWSSRC_IN_INFO, *LPSTRMSP_NEWSSRC_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SINK_OPENPORT_IN_INFO
|
|||
|
|
|||
|
uVersion Is a UINT specifying the version identifier for this data structure.
|
|||
|
The value STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session to be started,
|
|||
|
as returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
dwSSRC Is a DWORD where the SSRC value to be used for this port may be specified.
|
|||
|
If the value of the SSRCSpecified parameter is FALSE, the input value of
|
|||
|
this parameter is ignored and an SSRC value will be generated during the call.
|
|||
|
NOTE: The SSRC value of a stream can be reassigned dynamically because of
|
|||
|
collisions. Applications should use the STRMSP_NEWSSRC command passed to the
|
|||
|
port callback handler to track any such changes.
|
|||
|
|
|||
|
bSSRCSpecified Boolean specifying whether a user supplied SSRC value has been placed in SSRC.
|
|||
|
If TRUE, the user has specified an SSRC value to use.
|
|||
|
|
|||
|
pStreamUser Pointer to a STRM_USER_DESCRIPTION structure containing information about
|
|||
|
the user of this stream. This information is used by RTCP to generate session
|
|||
|
description packets. A CNAME description field must be included, and other
|
|||
|
fields may be required based on the RTP profile being used. If this is the
|
|||
|
first send stream being created this field will be ignored and the user
|
|||
|
description information specified in the CREATESESSION service command for
|
|||
|
this session will be used instead.
|
|||
|
|
|||
|
uBufferCount Is a UINT requesting the number of buffer resources to have available for
|
|||
|
the use of this stream. In the case of send streams, this is the number of
|
|||
|
buffers that may be expected to sent in a single burst. Although the caller
|
|||
|
provides the data buffers themselves, the Streams MSP must allocate resources
|
|||
|
for tracking those buffers. This value allows versions of the Streams MSP that
|
|||
|
support dynamic buffer allocation to efficiently allocate buffer resources.
|
|||
|
Note that this value is advisory only and may be ignored by some Streams MSP
|
|||
|
implementations.
|
|||
|
|
|||
|
iStreamClock Is an integer specifying the clocking frequency for this stream (in hz.). If
|
|||
|
this is the first send stream being created this field will be ignored and the
|
|||
|
iStreamClock value specified in the STARTSESSION service command for this
|
|||
|
session will be used instead.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_sink_openport_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
STRM_USER_DESCRIPTION *pStreamUser;
|
|||
|
DWORD dwSSRC;
|
|||
|
BOOL bSSRCSpecified;
|
|||
|
UINT uBufferCount;
|
|||
|
int iStreamClock;
|
|||
|
} STRMSP_SINK_OPENPORT_IN_INFO, *LPSTRMSP_SINK_OPENPORT_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SINK_OPENPORT_OUT_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
dwSSRC Is a DWORD returning the actual SSRC assigned to this output stream. This
|
|||
|
value is used for determining what RTCP reports apply to this data stream.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_sink_openport_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_SINK_OPENPORT_OUT_INFO, *LPSTRMSP_SINK_OPENPORT_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SETUSERDESCRIPTION_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
pStreamUser Is a pointer to a STRM_USER_DESCRIPTION structure containing information
|
|||
|
about the user of this session. This information is used by RTCP to generate
|
|||
|
session description packets. A CNAME description field must be included, and
|
|||
|
other fields may be required based on the RTP profile being used.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_setuserdescription_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRM_USER_DESCRIPTION *pStreamUser;
|
|||
|
} STRMSP_SETUSERDESCRIPTION_IN_INFO, *LPSTRMSP_SETUSERDESCRIPTION_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_GETMAPPING_OUT_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. The value
|
|||
|
STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
dwSessionToken Is the DWORD value the application provided as a reference to the session
|
|||
|
this source port is a part of.
|
|||
|
|
|||
|
dwSSRC Is the RTP SSRC identifier for the arriving data stream that has been
|
|||
|
mapped to this source port.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_getmapping_out_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_GETMAPPING_OUT_INFO, *LPSTRMSP_GETMAPPING_OUT_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_SOURCE_OPNEPORT_IN_INFO
|
|||
|
|
|||
|
uVersion Is a UINT specifying the version identifier for this data structure.
|
|||
|
The value STRMSP_INTERFACE_VERSION should always be used to initialize it.
|
|||
|
|
|||
|
hSession Is a STRMSP_HSESSION containing the handle for the session to be started,
|
|||
|
as returned from a successful CREATESESSION command.
|
|||
|
|
|||
|
dwSSRC Is a DWORD where the SSRC value of the data source to be mapped to may be
|
|||
|
specified. If the value of the SSRCSpecified field is FALSE, the value of
|
|||
|
this field is ignored and the stream will be automatically mapped to the
|
|||
|
next available data source.
|
|||
|
|
|||
|
bSSRCSpecified Boolean specifying whether a user supplied SSRC value has been placed in
|
|||
|
SSRC. If TRUE, the user has specified an SSRC value and the stream will
|
|||
|
be mapped to the data source with that SSRC value only.
|
|||
|
|
|||
|
uBufferCount Is a UINT requesting the number of buffer resources to have available for
|
|||
|
the use of this stream. In the case of receive streams, this is the number
|
|||
|
of buffers that may be expected to be in process at any one time. The
|
|||
|
Streams MSP must allocate these buffers itself for receiving from the
|
|||
|
network. This value allows versions of the Streams MSP that support
|
|||
|
dynamic buffer allocation to efficiently allocate buffer resources. Note
|
|||
|
that this value is advisory only and may be ignored by some Streams manager
|
|||
|
implementations.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_source_openport_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
STRMSP_HSESSION hSession;
|
|||
|
DWORD dwSSRC;
|
|||
|
BOOL bSSRCSpecified;
|
|||
|
UINT uBufferCount;
|
|||
|
} STRMSP_SOURCE_OPENPORT_IN_INFO, *LPSTRMSP_SOURCE_OPENPORT_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//***************************************************************************************
|
|||
|
/* STRMSP_MAPPED_IN_INFO
|
|||
|
|
|||
|
uVersion Is the version identifier for this data structure. A value of 1 or
|
|||
|
greater indicates that the fields of this data structure are valid.
|
|||
|
|
|||
|
dwSessionToken Is the DWORD value the application provided as a reference when creating
|
|||
|
this session.
|
|||
|
|
|||
|
dwSSRC Is the newly assigned RTP SSRC identifier for the arriving data stream.
|
|||
|
*/
|
|||
|
typedef struct _strmsp_mapped_in_info
|
|||
|
{
|
|||
|
UINT uVersion;
|
|||
|
DWORD dwSessionToken;
|
|||
|
DWORD dwSSRC;
|
|||
|
} STRMSP_MAPPED_IN_INFO, *LPSTRMSP_MAPPED_IN_INFO;
|
|||
|
|
|||
|
|
|||
|
//*****************************************
|
|||
|
// MSP Service Commands
|
|||
|
//*****************************************
|
|||
|
// MSP_ServiceCmdProc()
|
|||
|
#define STRMSP_CREATESESSION 0x0001 // create session
|
|||
|
#define STRMSP_STARTSESSION 0x0002 // start session
|
|||
|
#define STRMSP_CLOSESESSION 0x0003 // close session
|
|||
|
#define STRMSP_GETMTUSIZE 0x0004 // get max packet size
|
|||
|
#define STRMSP_SETMULTICASTSCOPE 0x0005 // set multicast scope
|
|||
|
#define STRMSP_SETQOS 0x0006 // set QOS
|
|||
|
#define STRMSP_GETSESSIONREPORTS 0x0007 // get session reports
|
|||
|
|
|||
|
// Sink Port Service Commands
|
|||
|
#define STRMSP_SETUSERDESCRIPTION 0x0008 // set user desc info
|
|||
|
|
|||
|
// Sink or Source Port Service Command.
|
|||
|
// The GETMAPPING command allows the application to determine
|
|||
|
// the SSRC value of the data stream to the SINK or SOURCE port.
|
|||
|
#define STRMSP_GETMAPPING 0x0009 // get mapping info
|
|||
|
|
|||
|
#define STRMSP_SETDESTINATIONADDRESS 0x0010
|
|||
|
#define STRMSP_GENERATESSRC 0x0011
|
|||
|
|
|||
|
|
|||
|
//*****************************************
|
|||
|
// Application Commands from MSP
|
|||
|
//*****************************************
|
|||
|
#define STRMSP_NEWSOURCE 0x0001
|
|||
|
#define STRMSP_RECVREPORT 0x0002
|
|||
|
#define STRMSP_QOSCHANGE 0x0003
|
|||
|
#define STRMSP_SRCTIMEOUT 0x0004
|
|||
|
#define STRMSP_SRCBYE 0x0005
|
|||
|
#define STRMSP_NEWSSRC 0x0006
|
|||
|
#define STRMSP_MAPPED 0x0007
|
|||
|
|
|||
|
//**********************************
|
|||
|
// error code definitions
|
|||
|
//**********************************
|
|||
|
|
|||
|
// STRMSP defined error codes
|
|||
|
#define STRMSP_ERR_BASE (ERROR_BASE_ID)
|
|||
|
#define STRMSP_ERR_NOPROVIDER (STRMSP_ERR_BASE +1)
|
|||
|
|
|||
|
// these error codes are standard codes within the RMS architecture
|
|||
|
#define STRMSP_ERR_INVALID_SERVICE (ERROR_INVALID_SERVICE)
|
|||
|
#define STRMSP_ERR_INVALID_MSPTYPE (ERROR_INVALID_SERVICE_DLL)
|
|||
|
#define STRMSP_ERR_INVALID_PORT (ERROR_INVALID_PORT)
|
|||
|
#define STRMSP_ERR_INVALID_BUFFER (ERROR_INVALID_BUFFER)
|
|||
|
#define STRMSP_ERR_INVALID_VERSION (ERROR_INVALID_VERSION)
|
|||
|
#define STRMSP_ERR_NOTINITIALIZED (ERROR_INVALID_CALL_ORDER)
|
|||
|
|
|||
|
// these error codes are defined in "winerror.h"
|
|||
|
#define STRMSP_ERR_NOTIMPL E_NOTIMPL // not implemented
|
|||
|
#define STRMSP_ERR_NOT_ENOUGH_MEMORY E_OUTOFMEMORY // out of memory
|
|||
|
#define STRMSP_ERR_NOINTERFACE E_NOINTERFACE // no such interface
|
|||
|
#define STRMSP_ERR_INVALIDARG E_INVALIDARG // one or more parameters invalid
|
|||
|
#define STRMSP_ERR_FAIL E_FAIL // simply failed(unspecified error)
|
|||
|
|
|||
|
#endif
|