/* ******************************************************************************* * Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved. * * +-----------------------------------------------------------------+ * | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED | * | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH | * | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. | * | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE | * | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE | * | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. | * | | * | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT | * | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY | * | VATICS(KNERON) INC. | * +-----------------------------------------------------------------+ * ******************************************************************************* */ #ifndef __RTSP_SERVER_H__ #define __RTSP_SERVER_H__ #include "LiveMediaSrc.h" #include "RtpMapInfo.h" /*! ********************************************************************* * The access file related information. * e.g. If you access the streaming by url rtsp://172.17.255.19/live1.sdp, * then the access name is live1.sdp. ********************************************************************* */ typedef struct access_file_information { //! The access file name. char* szAccessName; //! Which video track is related to this access file, //! set to -1 to disable video track. int iVTrackNo; //! Which audio track is related to this access file, //! set to -1 to disable audio track. int iATrackNo; //! Which mdata track is related to this aceess file, //! set to -1 to disable mdata track. int iDTrackNo; //! Which audio back channel track is related to this access file, //! set to -1 to disable audio back channel track. int iAudioBackChannelTrackNo; //! The multicast enable/disable unsigned int bMltcstEnable; //! The multicast ip address of this access file, char* szMltcstIP; //! The Time To Live value of the multicast, //! this value is meanless when multicast is diabled. unsigned char byMltcstTTL; //! The multicast rtp port number of video track, //! this value is meanless when multicast is diabled or video is disabled. unsigned short usMltcstVideoPort; //! The multicast rtp port number of audio track, //! this value is meanless when multicast is diabled or audio is disabled. unsigned short usMltcstAudioPort; //! The multicast rtp port number of mdata track, //! this value is meanless when multicast is diabled or mdata is disabled. unsigned short usMltcstMDataPort; //! The multicast rtp port number of audio back channel track, //! this value is meanless when multicast is diabled or audio back channel is disabled. unsigned short usMltcstAudioBackChannelPort; } TAcsFileInfo; typedef TAcsFileInfo* PTAcsFileInfo; typedef struct live_msrc_init_opt { char *szSharedBuffer; char *szCmdFiFoPath; } TLiveMSrcInitOpt; /*! ********************************************************************* * The RtspSrvr initial options. ********************************************************************* */ typedef struct rtsp_server_initial_options { //! The ip address of the machine, //! set to NULL to let RtspSrvr decide by itselt. const char *szSrvIPAddr; //! The rtsp protocol listening port number. unsigned short usSrvListenPort; //! The starting port number of rtp over udp. unsigned short usRtpStartPort; unsigned short usBlockSize; unsigned short usTCPBlockSize; unsigned int max_conn_num; unsigned int conn_timeout; unsigned int httpserver_type; unsigned int bIPv6; //! The authentication mode, set to "none" or "basic", "digest" isn't supported now. //! \details See RFC 2617 HTTP Authentication: Basic and Digest Access Authentication. const char *szAuthMode; //! Username, Password, and Passworf file path for digest mode. const char *szUsername; const char *szPassword; const char *szPasswdPath; //! The fdipc path with vatics's boa http server, //! set to NULL to disable rtsp over http or when you don't use vatics's modified boa http server. //! \note You must use vatics's modified boa http server to enable rtsp over http. //! \details About rtps over http: Tunnelling RTSP and RTP through HTTP. const char *szRtspOverHttpFdipcPath; //! Array of video LiveMediaSrc handles, see LiveMediaSrc.h. //! The posion in this array, started from 0, is the video track number in TAcsFileInfo. void** ahLiveVSrc; //! Numbers of video source handle in the array above. int iLiveVSrcNum; //! Array of audio LiveMediaSrc handles, see LiveMediaSrc.h. //! The posion in this array, started from 0, is the audio track number in TAcsFileInfo. void** ahLiveASrc; //! Numbers of audio source handle in the array above. int iLiveASrcNum; //! Array of mdata LiveMediaSrc handles, see LiveMediaSrc.h. //! The posion in this array, started from 0, is the mdata track number in TAcsFileInfo. void** ahLiveDSrc; //! Numbers of mdata source handle in the array above. int iLiveDSrcNum; //! Array of audio LiveMediaSink handles, see LiveMediaSink.h. //! The posion in this array, started from 0, is the audio back channel track number in TAcsFileInfo. void** ahLiveAudioBackChannel; //! Array of audio back channel RtpMapInfo, see RtpMapInfo.h. //! The posion in this array, started from 0, is the audio back channel track number in TAcsFileInfo. const TRtpMapInfo* ahLiveAudioBackChannelRTPInfo; //! Numbers of audio back channel handle in the array above. int iLiveAudioBackChannelNum; //! Array of pointers to TAcsFileInfo. //! \Note szAccessName in TAcsFileInfo should be unique among all TAcsFileInfos. PTAcsFileInfo *aptAcsFileInfo; //! Numbers of access file info pointer in the array above. int iAcsFileInfoNum; // The callback functions for initialize or release the shared ring buffers of media source. PFLMSrcBufInitCB live_msrc_buf_init; PFLMSrcBufReleaseCB live_msrc_buf_release; // The initial options for creating the shared ring buffers of media source. TLiveMSrcInitOpt *LiveVideoMSrcInitOpts; TLiveMSrcInitOpt *LiveAudioMSrcInitOpts; TLiveMSrcInitOpt *LiveMDataMSrcInitOpts; int bDetectBufOverrun; int bSendSpsPpsInRtp; int bSendSpsPpsIndividual; int bTcpOnly; } TRtspSrvrInitOpts; int RtspSrvr_Initial(void** phRtspSrvrObj, TRtspSrvrInitOpts *ptOpts); int RtspSrvr_Release(void** phRtspSrvrObj); int RtspSrvr_Start(void* hRtspSrvrObj); int RtspSrvr_Stop(void* hRtspSrvrObj); int RtspSrvr_Suspend(void* hRtspSrvrObj); int RtspSrvr_Resume(void* hRtspSrvrObj); typedef struct rtspsrvr_acsfile_rtpport_map { unsigned short usRtpPortStartAt; unsigned short usRtpPortLessThan; } TRtspSrvrAcsFileRtpPortMap; int RtspSrvr_SetAcsFileRtpPortMap(void* hRtspSrvrObj, TRtspSrvrAcsFileRtpPortMap *ptMap, unsigned int dwMapNum); // advanced usage, don't use it if you don't know how to use it // This function can be called only after the RtspSrvr_Initial and before RtspSrvr_Start int RtspSrvr_SetupDestination(void* hRtspSrvrObj, unsigned int bSupport); #endif // __RTSP_SERVER_H__