windows-nt/Source/XPSP1/NT/net/tapi/skywalker/cc/inc/strmspif.h

810 lines
32 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/****************************************************************************
*
* $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