From 9e5babf9db52e64bdae60137be7696e56241fca6 Mon Sep 17 00:00:00 2001
From: xingzilong <xingzilong@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 18 八月 2017 18:12:17 +0800
Subject: [PATCH] H264 NALU解析  并在RTSPServer判断

---
 VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/SIPClient.hh |  149 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 149 insertions(+), 0 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/SIPClient.hh b/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/SIPClient.hh
new file mode 100644
index 0000000..06600f0
--- /dev/null
+++ b/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/SIPClient.hh
@@ -0,0 +1,149 @@
+/**********
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation; either version 3 of the License, or (at your
+option) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.)
+
+This library is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for
+more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this library; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+**********/
+// "liveMedia"
+// Copyright (c) 1996-2017 Live Networks, Inc.  All rights reserved.
+// A generic SIP client
+// C++ header
+
+#ifndef _SIP_CLIENT_HH
+#define _SIP_CLIENT_HH
+
+#ifndef _MEDIA_SESSION_HH
+#include "MediaSession.hh"
+#endif
+#ifndef _NET_ADDRESS_HH
+#include "NetAddress.hh"
+#endif
+#ifndef _DIGEST_AUTHENTICATION_HH
+#include "DigestAuthentication.hh"
+#endif
+
+// Possible states in the "INVITE" transition diagram (RFC 3261, Figure 5)
+enum inviteClientState { Calling, Proceeding, Completed, Terminated };
+
+class SIPClient: public Medium {
+public:
+  static SIPClient* createNew(UsageEnvironment& env,
+			      unsigned char desiredAudioRTPPayloadFormat,
+			      char const* mimeSubtype = NULL,
+			      int verbosityLevel = 0,
+			      char const* applicationName = NULL);
+
+  void setProxyServer(unsigned proxyServerAddress,
+		      portNumBits proxyServerPortNum);
+
+  void setClientStartPortNum(portNumBits clientStartPortNum) {
+    fClientStartPortNum = clientStartPortNum;
+  }
+
+  char* invite(char const* url, Authenticator* authenticator = NULL);
+      // Issues a SIP "INVITE" command
+      // Returns the session SDP description if this command succeeds
+  char* inviteWithPassword(char const* url,
+			   char const* username, char const* password);
+      // Uses "invite()" to do an "INVITE" - first
+      // without using "password", then (if we get an Unauthorized
+      // response) with an authentication response computed from "password"
+
+  Boolean sendACK(); // on current call
+  Boolean sendBYE(); // on current call
+
+  static Boolean parseSIPURL(UsageEnvironment& env, char const* url,
+			     NetAddress& address, portNumBits& portNum);
+      // (ignores any "<username>[:<password>]@" in "url")
+  static Boolean parseSIPURLUsernamePassword(char const* url,
+					     char*& username,
+					     char*& password);
+  char const* getInviteSdpReply() const { return fInviteSDPDescriptionReturned; }
+
+  void setUserAgentString(char const* userAgentName);
+       // sets an alternative string to be used in SIP "User-Agent:" headers
+
+protected:
+  virtual ~SIPClient();
+
+private:
+  SIPClient(UsageEnvironment& env,
+	    unsigned char desiredAudioRTPPayloadFormat,
+	    char const* mimeSubtype,
+	    int verbosityLevel,
+	    char const* applicationName);
+      // called only by createNew();
+
+  void reset();
+
+  // Routines used to implement invite*():
+  char* invite1(Authenticator* authenticator);
+  Boolean processURL(char const* url);
+  Boolean sendINVITE();
+  static void inviteResponseHandler(void* clientData, int mask);
+  void doInviteStateMachine(unsigned responseCode);
+  void doInviteStateTerminated(unsigned responseCode);
+  TaskToken fTimerA, fTimerB, fTimerD;
+  static void timerAHandler(void* clientData);
+  static void timerBHandler(void* clientData);
+  static void timerDHandler(void* clientData);
+  unsigned const fT1; // in microseconds
+  unsigned fTimerALen; // in microseconds; initially fT1, then doubles
+  unsigned fTimerACount;
+
+  // Routines used to implement all commands:
+  char* createAuthenticatorString(Authenticator const* authenticator,
+				  char const* cmd, char const* url);
+  Boolean sendRequest(char const* requestString, unsigned requestLength);
+  unsigned getResponseCode();
+  unsigned getResponse(char*& responseBuffer, unsigned responseBufferSize);
+  Boolean parseResponseCode(char const* line, unsigned& responseCode);
+
+private:
+  // Set for all calls:
+  unsigned char fDesiredAudioRTPPayloadFormat;
+  char* fMIMESubtype;
+  unsigned fMIMESubtypeSize;
+  int fVerbosityLevel;
+  unsigned fCSeq; // sequence number, used in consecutive requests
+  char const* fApplicationName;
+  unsigned fApplicationNameSize;
+  char const* fOurAddressStr;
+  unsigned fOurAddressStrSize;
+  portNumBits fOurPortNum;
+  Groupsock* fOurSocket;
+  char* fUserAgentHeaderStr;
+  unsigned fUserAgentHeaderStrLen;
+
+  // Set for each call:
+  char const* fURL;
+  unsigned fURLSize;
+  struct in_addr fServerAddress;
+  portNumBits fServerPortNum; // in host order
+  portNumBits fClientStartPortNum; // in host order
+  unsigned fCallId, fFromTag; // set by us
+  char const* fToTagStr; // set by the responder
+  unsigned fToTagStrSize;
+  Authenticator fValidAuthenticator;
+  char const* fUserName; // 'user' name used in "From:" & "Contact:" lines
+  unsigned fUserNameSize;
+
+  char* fInviteSDPDescription;
+  char* fInviteSDPDescriptionReturned;
+  char* fInviteCmd;
+  unsigned fInviteCmdSize;
+  Authenticator* fWorkingAuthenticator;
+  inviteClientState fInviteClientState;
+  char fEventLoopStopFlag;
+};
+
+#endif

--
Gitblit v1.8.0