21 #ifndef _RTSP_CLIENT_HH 22 #define _RTSP_CLIENT_HH 24 #ifndef _MEDIA_SESSION_HH 27 #ifndef _NET_ADDRESS_HH 30 #ifndef _DIGEST_AUTHENTICATION_HH 36 #ifndef OMIT_REGISTER_HANDLING 37 #ifndef _RTSP_SERVER_HH 45 int verbosityLevel = 0,
46 char const* applicationName =
NULL,
48 int socketNumToServer = -1);
56 int resultCode,
char* resultString);
99 double start = 0.0f,
double end = -1.0f,
float scale = 1.0f,
105 double start = 0.0f,
double end = -1.0f,
float scale = 1.0f,
115 char const* absStartTime,
char const* absEndTime =
NULL,
float scale = 1.0f,
118 char const* absStartTime,
char const* absEndTime =
NULL,
float scale = 1.0f,
143 char const* parameterName,
char const* parameterValue,
174 char const* sourceName,
240 int verbosityLevel,
char const* applicationName,
portNumBits tunnelOverHTTPPortNum,
int socketNumToServer);
249 char*& cmdURL,
Boolean& cmdURLWasAllocated,
250 char const*& protocolStr,
251 char*& extraHeaders,
Boolean& extraHeadersWereAllocated);
286 static Boolean checkForHeader(
char const* line,
char const* headerName,
unsigned headerNameLength,
char const*& headerParams);
288 char*& serverAddressStr,
portNumBits& serverPortNum,
289 unsigned char& rtpChannelId,
unsigned char& rtcpChannelId);
296 char const* scaleParamsStr,
const char* speedParamsStr,
297 char const* rangeParamsStr,
char const* rtpInfoParamsStr);
307 char const*& separator,
308 char const*& suffix);
326 int write(
const char* data,
unsigned count);
327 int read(u_int8_t* buffer,
unsigned bufferSize);
365 #ifndef OMIT_REGISTER_HANDLING 377 int verbosityLevel = 0,
char const* applicationName =
NULL);
388 int socketNumToServer);
395 char const* proxyURLSuffix,
char*& responseStr);
398 char const* url,
char const* urlSuffix,
int socketToRemoteServer,
399 Boolean deliverViaTCP,
char const* proxyURLSuffix);
unsigned sendAnnounceCommand(char const *sdpDescription, responseHandler *responseHandler, Authenticator *authenticator=NULL)
unsigned sendSetParameterCommand(MediaSession &session, responseHandler *responseHandler, char const *parameterName, char const *parameterValue, Authenticator *authenticator=NULL)
static HandlerServerForREGISTERCommand * createNew(UsageEnvironment &env, onRTSPClientCreationFunc *creationFunc, Port ourPort=0, UserAuthenticationDatabase *authDatabase=NULL, int verbosityLevel=0, char const *applicationName=NULL)
int write(const char *data, unsigned count)
unsigned sendPlayCommand(MediaSession &session, responseHandler *responseHandler, double start=0.0f, double end=-1.0f, float scale=1.0f, Authenticator *authenticator=NULL)
Boolean parseResponseCode(char const *line, unsigned &responseCode, char const *&responseString)
Boolean handleGET_PARAMETERResponse(char const *parameterName, char *&resultValueString, char *resultValueStringEnd)
Boolean parseScaleParam(char const *paramStr, float &scale)
RequestRecord(unsigned cseq, char const *commandName, responseHandler *handler, MediaSession *session=NULL, MediaSubsession *subsession=NULL, u_int32_t booleanFlags=0, double start=0.0f, double end=-1.0f, float scale=1.0f, char const *contentStr=NULL)
virtual Boolean isRTSPClient() const
Boolean fHTTPTunnelingConnectionIsPending
Boolean changeResponseHandler(unsigned cseq, responseHandler *newResponseHandler)
RequestQueue fRequestsAwaitingConnection
virtual unsigned sendRequest(RequestRecord *request)
unsigned sessionTimeoutParameter() const
unsigned sendDescribeCommand(responseHandler *responseHandler, Authenticator *authenticator=NULL)
Boolean handleAuthenticationFailure(char const *wwwAuthenticateParamsStr)
char * contentStr() const
void resetResponseBuffer()
Boolean handlePLAYResponse(MediaSession *session, MediaSubsession *subsession, char const *scaleParamsStr, const char *speedParamsStr, char const *rangeParamsStr, char const *rtpInfoParamsStr)
void responseHandlerForHTTP_GET1(int responseCode, char *responseString)
void incomingDataHandler1()
char * fUserAgentHeaderStr
unsigned char fTCPStreamIdCount
unsigned fSessionCookieCounter
struct sockaddr_storage fServerAddress
MediaSession * session() const
virtual ~HandlerServerForREGISTERCommand()
void connectionHandler1()
unsigned sendSetupCommand(MediaSubsession &subsession, responseHandler *responseHandler, Boolean streamOutgoing=False, Boolean streamUsingTCP=False, Boolean forceMulticastOnUnspecified=False, Authenticator *authenticator=NULL)
void setUserAgentString(char const *userAgentName)
Boolean parseTransportParams(char const *paramsStr, char *&serverAddressStr, portNumBits &serverPortNum, unsigned char &rtpChannelId, unsigned char &rtcpChannelId)
unsigned fUserAgentHeaderStrLen
static RTSPClient * createNew(UsageEnvironment &env, char const *rtspURL, int verbosityLevel=0, char const *applicationName=NULL, portNumBits tunnelOverHTTPPortNum=0, int socketNumToServer=-1)
Boolean resendCommand(RequestRecord *request)
void putAtHead(RequestRecord *request)
unsigned sendOptionsCommand(responseHandler *responseHandler, Authenticator *authenticator=NULL)
void() responseHandler(RTSPClient *rtspClient, int resultCode, char *resultString)
void handleResponseBytes(int newBytesRead)
char const * sessionURL(MediaSession const &session) const
Boolean parseRTPInfoParams(char const *¶mStr, u_int16_t &seqNum, u_int32_t ×tamp)
char * createBlocksizeString(Boolean streamUsingTCP)
void disallowBasicAuthentication()
portNumBits serverPortNum() const
void handleAlternativeRequestByte1(u_int8_t requestByte)
Boolean parseSpeedParam(char const *paramStr, float &speed)
static void incomingDataHandler(void *, int)
RequestQueue fRequestsAwaitingResponse
void enqueue(RequestRecord *request)
onRTSPClientCreationFunc * fCreationFunc
unsigned fResponseBufferBytesLeft
virtual int connectToServer(int socketNum, portNumBits remotePortNum)
void setBaseURL(char const *url)
void handleRequestError(RequestRecord *request)
static Boolean lookupByName(UsageEnvironment &env, char const *sourceName, RTSPClient *&resultClient)
void sendDummyUDPPackets(MediaSession &session, unsigned numDummyPackets=2)
portNumBits portNum(struct sockaddr_storage const &address)
unsigned fResponseBytesAlreadySeen
static void connectionHandler(void *, int)
Boolean parseRTSPURL(char const *url, char *&username, char *&password, NetAddress &address, portNumBits &portNum, char const **urlSuffix=NULL)
void constructSubsessionURL(MediaSubsession const &subsession, char const *&prefix, char const *&separator, char const *&suffix)
virtual Boolean weImplementREGISTER(char const *cmd, char const *proxyURLSuffix, char *&responseStr)
virtual Boolean setRequestFields(RequestRecord *request, char *&cmdURL, Boolean &cmdURLWasAllocated, char const *&protocolStr, char *&extraHeaders, Boolean &extraHeadersWereAllocated)
static void handleAlternativeRequestByte(void *, u_int8_t requestByte)
virtual RTSPClient * createNewRTSPClient(char const *rtspURL, int verbosityLevel, char const *applicationName, int socketNumToServer)
Boolean fAllowBasicAuthentication
unsigned sendRecordCommand(MediaSession &session, responseHandler *responseHandler, Authenticator *authenticator=NULL)
RTSPClient(UsageEnvironment &env, char const *rtspURL, int verbosityLevel, char const *applicationName, portNumBits tunnelOverHTTPPortNum, int socketNumToServer)
Authenticator fCurrentAuthenticator
Boolean setupHTTPTunneling1()
static unsigned responseBufferSize
Boolean handleTEARDOWNResponse(MediaSession &session, MediaSubsession &subsession)
virtual char const * allowedCommandNames()
char const * commandName() const
char * createKeyMgmtString(char const *url, MediaSubsession const &subsession)
static Boolean checkForHeader(char const *line, char const *headerName, unsigned headerNameLength, char const *&headerParams)
char const * fCommandName
virtual void implementCmd_REGISTER(char const *cmd, char const *url, char const *urlSuffix, int socketToRemoteServer, Boolean deliverViaTCP, char const *proxyURLSuffix)
Boolean handleSETUPResponse(MediaSubsession &subsession, char const *sessionParamsStr, char const *transportParamsStr, Boolean streamUsingTCP)
char * createAuthenticatorString(char const *cmd, char const *url)
unsigned sendTeardownCommand(MediaSession &session, responseHandler *responseHandler, Authenticator *authenticator=NULL)
Boolean setupHTTPTunneling2()
char const * absStartTime() const
int read(u_int8_t *buffer, unsigned bufferSize)
static void responseHandlerForHTTP_GET(RTSPClient *rtspClient, int responseCode, char *responseString)
char * rtspURL(ServerMediaSession const *serverMediaSession, int clientSocket=-1, Boolean useIPv6=False) const
RequestQueue fRequestsAwaitingHTTPTunneling
u_int16_t desiredMaxIncomingPacketSize
void handleIncomingRequest()
responseHandler * fHandler
portNumBits fTunnelOverHTTPPortNum
HandlerServerForREGISTERCommand(UsageEnvironment &env, onRTSPClientCreationFunc *creationFunc, int ourSocketIPv4, int ourSocketIPv6, Port ourPort, UserAuthenticationDatabase *authDatabase, int verbosityLevel, char const *applicationName)
unsigned sendGetParameterCommand(MediaSession &session, responseHandler *responseHandler, char const *parameterName, Authenticator *authenticator=NULL)
unsigned fSessionTimeoutParameter
RequestRecord * dequeue()
void setSpeed(MediaSession &session, float speed=1.0f)
responseHandler *& handler()
RequestRecord * findByCSeq(unsigned cseq)
char const * absEndTime() const
u_int32_t booleanFlags() const
unsigned sendPauseCommand(MediaSession &session, responseHandler *responseHandler, Authenticator *authenticator=NULL)
void onRTSPClientCreationFunc(RTSPClient *newRTSPClient, Boolean requestStreamingOverTCP)
MediaSubsession * fSubsession
MediaSubsession * subsession() const