Hello community,

here is the log from the commit of package live555 for openSUSE:Factory checked 
in at 2017-11-04 19:27:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/live555 (Old)
 and      /work/SRC/openSUSE:Factory/.live555.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "live555"

Sat Nov  4 19:27:50 2017 rev:11 rq:538277 version:2017.10.28

Changes:
--------
--- /work/SRC/openSUSE:Factory/live555/live555.changes  2017-08-24 
17:39:17.399189902 +0200
+++ /work/SRC/openSUSE:Factory/.live555.new/live555.changes     2017-11-04 
19:27:54.008166387 +0100
@@ -1,0 +2,31 @@
+Wed Nov  1 12:27:27 UTC 2017 - mathias.hom...@opensuse.org
+
+- Update to 2017.10.28
+2017.10.28:
+- Fixed the handling of the LIVE555 Proxy Server's "-u <username> <password>" 
command-line option if
+  the "REGISTER" command is also implemented (i.e., with "-R").  Now, when we 
handle "REGISTER",
+  the <username> and <password> are used to access the REGISTER'ed back-end 
stream, if necessary.
+- Changed the server handling of the RTSP "REGISTER" command to (if 
"reuseConnection" is True) delay
+  a short period of time (100ms) between replying to the "REGISTER" command, 
and actually
+  handling it.  This is intended to reduce/avoid the possibility of a 
subsequent "DESCRIBE" command
+  ending up in the client ("REGISTER" sender)'s buffer, before the socket gets 
reused for handling
+  incoming RTSP commands.  (Thanks to Durgesh Tanuku for noting this issue.)
+- Made a change to "SIPClient" to better handle Asterisk SIP servers with 
authentication.
+  (Thanks to Rus.)
+
+2017.09.12:
+- Made some improvements/bug fixes to AVI indexes in "AVIFileSink".
+  (Thanks to Victor V. Vinokurov.)
+- Updated the handling of the "writeTimeoutInMilliseconds" parameter in the 
"makeSocketBlocking()"
+  function to work correctly on Windows. (Thanks to Jeff Shanab for noting 
this issue.)
+- Added support for adding Opus audio to MPEG Transport Streams.  This is done 
by setting the
+  "mpegVersion" parameter to 3 in 
"MPEG2TransportStreamFromESSource::addNewAudioSource()" or
+  "MPEG2TransportStreamMultiplexor::handleNewBuffer()".
+  (Thanks to Praveen Mathad for suggesting this.)
+
+2017.07.18:
+- Updated "BitVector" to support a signed version of "get_expGolomb()", and 
fixed our H.264/265
+  parsing code to use the signed version where appropriate.
+  (Thanks to Toson Huang and Long Zhang for reporting this.)
+
+-------------------------------------------------------------------

Old:
----
  live.2017.06.04.tar.gz

New:
----
  live.2017.10.28.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ live555.spec ++++++
--- /var/tmp/diff_new_pack.GTUYtk/_old  2017-11-04 19:27:54.760138909 +0100
+++ /var/tmp/diff_new_pack.GTUYtk/_new  2017-11-04 19:27:54.764138763 +0100
@@ -18,8 +18,8 @@
 
 
 Name:           live555
-Version:        2017.06.04
-Release:        1.2
+Version:        2017.10.28
+Release:        1
 Summary:        LIVE555 Streaming Media
 License:        LGPL-2.1
 Group:          System/Libraries

++++++ live.2017.06.04.tar.gz -> live.2017.10.28.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/live/BasicUsageEnvironment/include/BasicUsageEnvironment_version.hh 
new/live/BasicUsageEnvironment/include/BasicUsageEnvironment_version.hh
--- old/live/BasicUsageEnvironment/include/BasicUsageEnvironment_version.hh     
2017-06-04 18:53:05.000000000 +0200
+++ new/live/BasicUsageEnvironment/include/BasicUsageEnvironment_version.hh     
2017-10-28 02:26:18.000000000 +0200
@@ -4,7 +4,7 @@
 #ifndef _BASICUSAGEENVIRONMENT_VERSION_HH
 #define _BASICUSAGEENVIRONMENT_VERSION_HH
 
-#define BASICUSAGEENVIRONMENT_LIBRARY_VERSION_STRING   "2017.06.04"
-#define BASICUSAGEENVIRONMENT_LIBRARY_VERSION_INT              1496534400
+#define BASICUSAGEENVIRONMENT_LIBRARY_VERSION_STRING   "2017.10.28"
+#define BASICUSAGEENVIRONMENT_LIBRARY_VERSION_INT              1509148800
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/live/UsageEnvironment/include/UsageEnvironment_version.hh 
new/live/UsageEnvironment/include/UsageEnvironment_version.hh
--- old/live/UsageEnvironment/include/UsageEnvironment_version.hh       
2017-06-04 18:53:05.000000000 +0200
+++ new/live/UsageEnvironment/include/UsageEnvironment_version.hh       
2017-10-28 02:26:18.000000000 +0200
@@ -4,7 +4,7 @@
 #ifndef _USAGEENVIRONMENT_VERSION_HH
 #define _USAGEENVIRONMENT_VERSION_HH
 
-#define USAGEENVIRONMENT_LIBRARY_VERSION_STRING        "2017.06.04"
-#define USAGEENVIRONMENT_LIBRARY_VERSION_INT           1496534400
+#define USAGEENVIRONMENT_LIBRARY_VERSION_STRING        "2017.10.28"
+#define USAGEENVIRONMENT_LIBRARY_VERSION_INT           1509148800
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/config.linux-with-shared-libraries 
new/live/config.linux-with-shared-libraries
--- old/live/config.linux-with-shared-libraries 2017-06-04 18:53:19.000000000 
+0200
+++ new/live/config.linux-with-shared-libraries 2017-10-28 02:29:48.000000000 
+0200
@@ -3,9 +3,9 @@
 # At least one interface changes, or is removed => CURRENT += 1; REVISION = 0; 
AGE = 0
 # One or more interfaces were added, but no existing interfaces were changed 
or removed => CURRENT += 1; REVISION = 0; AGE += 1
 
-libliveMedia_VERSION_CURRENT=59
-libliveMedia_VERSION_REVISION=2
-libliveMedia_VERSION_AGE=1
+libliveMedia_VERSION_CURRENT=61
+libliveMedia_VERSION_REVISION=0
+libliveMedia_VERSION_AGE=0
 libliveMedia_LIB_SUFFIX=so.$(shell expr $(libliveMedia_VERSION_CURRENT) - 
$(libliveMedia_VERSION_AGE)).$(libliveMedia_VERSION_AGE).$(libliveMedia_VERSION_REVISION)
 
 libBasicUsageEnvironment_VERSION_CURRENT=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/groupsock/GroupsockHelper.cpp 
new/live/groupsock/GroupsockHelper.cpp
--- old/live/groupsock/GroupsockHelper.cpp      2017-06-04 18:53:05.000000000 
+0200
+++ new/live/groupsock/GroupsockHelper.cpp      2017-10-28 02:26:18.000000000 
+0200
@@ -202,11 +202,16 @@
 
   if (writeTimeoutInMilliseconds > 0) {
 #ifdef SO_SNDTIMEO
+#if defined(__WIN32__) || defined(_WIN32)
+    DWORD msto = (DWORD)writeTimeoutInMilliseconds;
+    setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&msto, sizeof(msto) );
+#else
     struct timeval tv;
     tv.tv_sec = writeTimeoutInMilliseconds/1000;
     tv.tv_usec = (writeTimeoutInMilliseconds%1000)*1000;
     setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof tv);
 #endif
+#endif
   }
 
   return result;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/groupsock/include/groupsock_version.hh 
new/live/groupsock/include/groupsock_version.hh
--- old/live/groupsock/include/groupsock_version.hh     2017-06-04 
18:53:05.000000000 +0200
+++ new/live/groupsock/include/groupsock_version.hh     2017-10-28 
02:26:18.000000000 +0200
@@ -4,7 +4,7 @@
 #ifndef _GROUPSOCK_VERSION_HH
 #define _GROUPSOCK_VERSION_HH
 
-#define GROUPSOCK_LIBRARY_VERSION_STRING       "2017.06.04"
-#define GROUPSOCK_LIBRARY_VERSION_INT          1496534400
+#define GROUPSOCK_LIBRARY_VERSION_STRING       "2017.10.28"
+#define GROUPSOCK_LIBRARY_VERSION_INT          1509148800
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/AVIFileSink.cpp 
new/live/liveMedia/AVIFileSink.cpp
--- old/live/liveMedia/AVIFileSink.cpp  2017-06-04 18:53:05.000000000 +0200
+++ new/live/liveMedia/AVIFileSink.cpp  2017-10-28 02:26:18.000000000 +0200
@@ -25,6 +25,11 @@
 
 #define fourChar(x,y,z,w) ( ((w)<<24)|((z)<<16)|((y)<<8)|(x) )/*little-endian*/
 
+#define AVIIF_LIST             0x00000001
+#define AVIIF_KEYFRAME         0x00000010
+#define AVIIF_NO_TIME          0x00000100
+#define AVIIF_COMPRESSOR       0x0FFF0000
+
 ////////// AVISubsessionIOState ///////////
 // A structure used to represent the I/O state of each input 'subsession':
 
@@ -365,7 +370,7 @@
     addWord(indexRecord->size());
   }
 
-  fRIFFSizeValue += fNumBytesWritten;
+  fRIFFSizeValue += fNumBytesWritten + fNumIndexRecords*4*4 - 4;
   setWord(fRIFFSizePosition, fRIFFSizeValue);
 
   setWord(fAVIHMaxBytesPerSecondPosition, maxBytesPerSecond);
@@ -531,9 +536,9 @@
   // Add an index record for this frame:
   AVIIndexRecord* newIndexRecord
     = new AVIIndexRecord(fAVISubsessionTag, // chunk id
-                        frameSource[0] == 0x67 ? 0x10 : 0, // flags
-                        fOurSink.fMoviSizePosition + 8 + 
fOurSink.fNumBytesWritten, // offset (note: 8 == size + 'movi')
-                        frameSize + 4); // size
+                        AVIIF_KEYFRAME, // flags
+                        4 + fOurSink.fNumBytesWritten, // offset (note: 4 == 
'movi')
+                        frameSize); // size
   fOurSink.addIndexRecord(newIndexRecord);
 
   // Write the data into the file:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/BitVector.cpp 
new/live/liveMedia/BitVector.cpp
--- old/live/liveMedia/BitVector.cpp    2017-06-04 18:53:05.000000000 +0200
+++ new/live/liveMedia/BitVector.cpp    2017-10-28 02:26:18.000000000 +0200
@@ -139,6 +139,15 @@
   return codeStart - 1 + getBits(numLeadingZeroBits);
 }
 
+int BitVector::get_expGolombSigned() {
+  unsigned codeNum = get_expGolomb();
+
+  if ((codeNum&1) == 0) { // even
+    return -(int)(codeNum/2);
+  } else { // odd
+    return (codeNum+1)/2;
+  }
+}
 
 void shiftBits(unsigned char* toBasePtr, unsigned toBitOffset,
               unsigned char const* fromBasePtr, unsigned fromBitOffset,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/H264or5VideoStreamFramer.cpp 
new/live/liveMedia/H264or5VideoStreamFramer.cpp
--- old/live/liveMedia/H264or5VideoStreamFramer.cpp     2017-06-04 
18:53:05.000000000 +0200
+++ new/live/liveMedia/H264or5VideoStreamFramer.cpp     2017-10-28 
02:26:18.000000000 +0200
@@ -551,7 +551,7 @@
              DEBUG_PRINT(nextScale);
              if (nextScale != 0) {
                DEBUG_TAB;
-               unsigned delta_scale = bv.get_expGolomb();
+               int delta_scale = bv.get_expGolombSigned();
                DEBUG_PRINT(delta_scale);
                nextScale = (lastScale + delta_scale + 256) % 256;
              }
@@ -573,12 +573,12 @@
     } else if (pic_order_cnt_type == 1) {
       DEBUG_TAB;
       bv.skipBits(1); // delta_pic_order_always_zero_flag
-      (void)bv.get_expGolomb(); // offset_for_non_ref_pic
-      (void)bv.get_expGolomb(); // offset_for_top_to_bottom_field
+      (void)bv.get_expGolombSigned(); // offset_for_non_ref_pic
+      (void)bv.get_expGolombSigned(); // offset_for_top_to_bottom_field
       unsigned num_ref_frames_in_pic_order_cnt_cycle = bv.get_expGolomb();
       DEBUG_PRINT(num_ref_frames_in_pic_order_cnt_cycle);
       for (unsigned i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; ++i) {
-       (void)bv.get_expGolomb(); // offset_for_ref_frame[i]
+       (void)bv.get_expGolombSigned(); // offset_for_ref_frame[i]
       }
     }
     unsigned max_num_ref_frames = bv.get_expGolomb();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/MPEG2TransportStreamMultiplexor.cpp 
new/live/liveMedia/MPEG2TransportStreamMultiplexor.cpp
--- old/live/liveMedia/MPEG2TransportStreamMultiplexor.cpp      2017-06-04 
18:53:05.000000000 +0200
+++ new/live/liveMedia/MPEG2TransportStreamMultiplexor.cpp      2017-10-28 
02:26:18.000000000 +0200
@@ -121,16 +121,16 @@
        streamType = mpegVersion == 1 ? 1 : mpegVersion == 2 ? 2 : mpegVersion 
== 4 ? 0x10 :
          mpegVersion == 5/*H.264*/ ? 0x1B : 0x24/*assume H.265*/;
       } else if ((stream_id&0xE0) == 0xC0) { // audio
-       streamType = mpegVersion == 1 ? 3 : mpegVersion == 2 ? 4 : 0xF;
-      } else if (stream_id == 0xBD) { // private_stream1 (usually AC-3)
-       streamType = 0x06; // for DVB; for ATSC, use 0x81
-      } else { // something else, e.g., AC-3 uses private_stream1 (0xBD)
+       streamType = mpegVersion == 1 ? 3 : mpegVersion == 2 ? 4 : mpegVersion 
== 3 ? 6 : 0xF;
+      } else if (stream_id == 0xBD) { // private_stream1 (usually AC-3 or Opus)
+       streamType = 0x06; // for DVB or Opus; for ATSC, use 0x81
+      } else { // something else
        streamType = 0x81; // private
       }
     }
 
     if (fPCR_PID == 0) { // set it to this stream, if it's appropriate:
-      if ((!fHaveVideoStreams && (streamType == 3 || streamType == 4 || 
streamType == 0xF))/* audio stream */ ||
+      if ((!fHaveVideoStreams && (streamType == 3 || streamType == 4 || 
streamType == 6 || streamType == 0xF))/* audio stream */ ||
          (streamType == 1 || streamType == 2 || streamType == 0x10 || 
streamType == 0x1B || streamType == 0x24)/* video stream */) {
        fPCR_PID = fCurrentPID; // use this stream's SCR for PCR
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/RTSPServerRegister.cpp 
new/live/liveMedia/RTSPServerRegister.cpp
--- old/live/liveMedia/RTSPServerRegister.cpp   2017-06-04 18:53:05.000000000 
+0200
+++ new/live/liveMedia/RTSPServerRegister.cpp   2017-10-28 02:26:18.000000000 
+0200
@@ -216,6 +216,8 @@
   delete[] (char*)fCmd; delete[] fURL; delete[] fURLSuffix; delete[] 
fProxyURLSuffix;
 }
 
+#define DELAY_USECS_AFTER_REGISTER_RESPONSE 100000 /*100ms*/
+
 void RTSPServer
 ::RTSPClientConnection::handleCmd_REGISTER(char const* cmd/*"REGISTER" or 
"DEREGISTER"*/,
                                           char const* url, char const* 
urlSuffix, char const* fullRequestStr,
@@ -225,13 +227,19 @@
     // The "REGISTER"/"DEREGISTER" command - if we implement it - may require 
access control:
     if (!authenticationOK(cmd, urlSuffix, fullRequestStr)) return;
     
-    // We implement the "REGISTER"/"DEREGISTER" command by first replying to 
it, then actually handling it
-    // (in a separate event-loop task, that will get called after the reply 
has been done):
+    // We implement the "REGISTER"/"DEREGISTER" command by first replying to 
it, then actually
+    // handling it (in a separate event-loop task, that will get called after 
the reply has
+    // been done).
+    // Hack: If we're going to reuse the command's connection for subsequent 
RTSP commands, then we
+    // delay the actual handling of the command slightly, to make it less 
likely that the first
+    // subsequent RTSP command (e.g., "DESCRIBE") will end up in the client's 
reponse buffer before
+    // the socket (at the far end) gets reused for RTSP command handling.
     setRTSPResponse(responseStr == NULL ? "200 OK" : responseStr);
     delete[] responseStr;
     
     ParamsForREGISTER* registerParams = new ParamsForREGISTER(cmd, this, url, 
urlSuffix, reuseConnection, deliverViaTCP, proxyURLSuffix);
-    envir().taskScheduler().scheduleDelayedTask(0, 
(TaskFunc*)continueHandlingREGISTER, registerParams);
+    envir().taskScheduler().scheduleDelayedTask(reuseConnection ? 
DELAY_USECS_AFTER_REGISTER_RESPONSE : 0,
+                                               
(TaskFunc*)continueHandlingREGISTER, registerParams);
   } else if (responseStr != NULL) {
     setRTSPResponse(responseStr);
     delete[] responseStr;
@@ -312,26 +320,33 @@
 ::createNew(UsageEnvironment& env, Port ourPort,
            UserAuthenticationDatabase* authDatabase, 
UserAuthenticationDatabase* authDatabaseForREGISTER,
            unsigned reclamationSeconds,
-           Boolean streamRTPOverTCP, int verbosityLevelForProxying) {
+           Boolean streamRTPOverTCP, int verbosityLevelForProxying,
+           char const* backEndUsername, char const* backEndPassword) {
   int ourSocket = setUpOurSocket(env, ourPort);
   if (ourSocket == -1) return NULL;
   
-  return new RTSPServerWithREGISTERProxying(env, ourSocket, ourPort, 
authDatabase, authDatabaseForREGISTER, reclamationSeconds,
-                                           streamRTPOverTCP, 
verbosityLevelForProxying);
+  return new RTSPServerWithREGISTERProxying(env, ourSocket, ourPort,
+                                           authDatabase, 
authDatabaseForREGISTER,
+                                           reclamationSeconds,
+                                           streamRTPOverTCP, 
verbosityLevelForProxying,
+                                           backEndUsername, backEndPassword);
 }
 
 RTSPServerWithREGISTERProxying
 ::RTSPServerWithREGISTERProxying(UsageEnvironment& env, int ourSocket, Port 
ourPort,
                                 UserAuthenticationDatabase* authDatabase, 
UserAuthenticationDatabase* authDatabaseForREGISTER,
                                 unsigned reclamationSeconds,
-                                Boolean streamRTPOverTCP, int 
verbosityLevelForProxying)
+                                Boolean streamRTPOverTCP, int 
verbosityLevelForProxying,
+                                char const* backEndUsername, char const* 
backEndPassword)
   : RTSPServer(env, ourSocket, ourPort, authDatabase, reclamationSeconds),
     fStreamRTPOverTCP(streamRTPOverTCP), 
fVerbosityLevelForProxying(verbosityLevelForProxying),
-    fRegisteredProxyCounter(0), fAllowedCommandNames(NULL), 
fAuthDBForREGISTER(authDatabaseForREGISTER) {
+    fRegisteredProxyCounter(0), fAllowedCommandNames(NULL), 
fAuthDBForREGISTER(authDatabaseForREGISTER),
+    fBackEndUsername(strDup(backEndUsername)), 
fBackEndPassword(strDup(backEndPassword)) {
 }
 
 RTSPServerWithREGISTERProxying::~RTSPServerWithREGISTERProxying() {
   delete[] fAllowedCommandNames;
+  delete[] fBackEndUsername; delete[] fBackEndPassword;
 }
 
 char const* RTSPServerWithREGISTERProxying::allowedCommandNames() {
@@ -390,7 +405,8 @@
         // We don't support streaming from the back-end via 
RTSP/RTP/RTCP-over-HTTP; only via RTP/RTCP-over-TCP or RTP/RTCP-over-UDP
 
     ServerMediaSession* sms
-      = ProxyServerMediaSession::createNew(envir(), this, url, 
proxyStreamName, NULL, NULL,
+      = ProxyServerMediaSession::createNew(envir(), this, url, proxyStreamName,
+                                          fBackEndUsername, fBackEndPassword,
                                           tunnelOverHTTPPortNum, 
fVerbosityLevelForProxying, socketToRemoteServer);
     addServerMediaSession(sms);
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/SIPClient.cpp 
new/live/liveMedia/SIPClient.cpp
--- old/live/liveMedia/SIPClient.cpp    2017-06-04 18:53:05.000000000 +0200
+++ new/live/liveMedia/SIPClient.cpp    2017-10-28 02:26:18.000000000 +0200
@@ -482,7 +482,7 @@
          && fWorkingAuthenticator != NULL) {
        // We have an authentication failure, so fill in
        // "*fWorkingAuthenticator" using the contents of a following
-       // "Proxy-Authenticate:" line.  (Once we compute a 'response' for
+       // "Proxy-Authenticate:" or "WWW_Authenticate:" line.  (Once we compute 
a 'response' for
        // "fWorkingAuthenticator", it can be used in a subsequent request
        // - that will hopefully succeed.)
        char* lineStart;
@@ -503,6 +503,8 @@
              // Asterisk #####
              sscanf(lineStart, "Proxy-Authenticate: Digest realm=\"%[^\"]\", 
nonce=\"%[^\"]\"",
                     realm, nonce) == 2 ||
+             sscanf(lineStart, "WWW-Authenticate: Digest realm=\"%[^\"]\", 
nonce=\"%[^\"]\"",
+                    realm, nonce) == 2 ||
              // Cisco ATA #####
              sscanf(lineStart, "Proxy-Authenticate: Digest 
algorithm=MD5,domain=\"%*[^\"]\",nonce=\"%[^\"]\", realm=\"%[^\"]\"",
                     nonce, realm) == 2) {
@@ -868,7 +870,7 @@
       && authenticator->password() != NULL) {
     // We've been provided a filled-in authenticator, so use it:
     char const* const authFmt
-      = "Proxy-Authorization: Digest username=\"%s\", realm=\"%s\", 
nonce=\"%s\", response=\"%s\", uri=\"%s\"\r\n";
+      = "Authorization: Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", 
response=\"%s\", uri=\"%s\"\r\n";
     char const* response = authenticator->computeDigestResponse(cmd, url);
     unsigned authBufSize = strlen(authFmt)
       + strlen(authenticator->username()) + strlen(authenticator->realm())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/include/BitVector.hh 
new/live/liveMedia/include/BitVector.hh
--- old/live/liveMedia/include/BitVector.hh     2017-06-04 18:53:05.000000000 
+0200
+++ new/live/liveMedia/include/BitVector.hh     2017-10-28 02:26:18.000000000 
+0200
@@ -50,6 +50,7 @@
 
   unsigned get_expGolomb();
       // Returns the value of the next bits, assuming that they were encoded 
using an exponential-Golomb code of order 0
+  int get_expGolombSigned(); // signed version of the above
 
 private:
   unsigned char* fBaseBytePtr;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/live/liveMedia/include/MPEG2TransportStreamFromESSource.hh 
new/live/liveMedia/include/MPEG2TransportStreamFromESSource.hh
--- old/live/liveMedia/include/MPEG2TransportStreamFromESSource.hh      
2017-06-04 18:53:05.000000000 +0200
+++ new/live/liveMedia/include/MPEG2TransportStreamFromESSource.hh      
2017-10-28 02:26:18.000000000 +0200
@@ -31,8 +31,11 @@
   static MPEG2TransportStreamFromESSource* createNew(UsageEnvironment& env);
 
   void addNewVideoSource(FramedSource* inputSource, int mpegVersion, int16_t 
PID = -1);
-      // Note: For MPEG-4 video, set "mpegVersion" to 4; for H.264 video, set 
"mpegVersion" to 5.
+      // Note: For MPEG-4 video, set "mpegVersion" to 4; for H.264 video, set 
"mpegVersion" to 5;
+      //     for H.265 video, set "mpegVersion" to 6
   void addNewAudioSource(FramedSource* inputSource, int mpegVersion, int16_t 
PID = -1);
+      // Note: For Opus audio, set "mpegVersion" to 3
+  
       // Note: In these functions, if "PID" is not -1, then it (currently, 
just the low 8 bits)
       // is used as the stream's PID.  Otherwise (if "PID" is -1) the 
'stream_id' is used as
       // the PID.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/live/liveMedia/include/MPEG2TransportStreamMultiplexor.hh 
new/live/liveMedia/include/MPEG2TransportStreamMultiplexor.hh
--- old/live/liveMedia/include/MPEG2TransportStreamMultiplexor.hh       
2017-06-04 18:53:05.000000000 +0200
+++ new/live/liveMedia/include/MPEG2TransportStreamMultiplexor.hh       
2017-10-28 02:26:18.000000000 +0200
@@ -47,7 +47,9 @@
   void handleNewBuffer(unsigned char* buffer, unsigned bufferSize,
                       int mpegVersion, MPEG1or2Demux::SCR scr, int16_t PID = 
-1);
       // called by "awaitNewBuffer()"
-      // Note: For MPEG-4 video, set "mpegVersion" to 4; for H.264 video, set 
"mpegVersion" to 5. 
+      // Note: For MPEG-4 video, set "mpegVersion" to 4; for H.264 video, set 
"mpegVersion" to 5;
+      //     for H.265 video, set "mpegVersion" to 6.
+      //     For Opus audio, set "mpegVersion" to 3.
       // The buffer is assumed to be a PES packet, with a proper PES header.
       // If "PID" is not -1, then it (currently, only the low 8 bits) is used 
as the stream's PID,
       // otherwise the "stream_id" in the PES header is reused to be the 
stream's PID.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/include/RTSPServer.hh 
new/live/liveMedia/include/RTSPServer.hh
--- old/live/liveMedia/include/RTSPServer.hh    2017-06-04 18:53:05.000000000 
+0200
+++ new/live/liveMedia/include/RTSPServer.hh    2017-10-28 02:26:18.000000000 
+0200
@@ -310,13 +310,16 @@
                                                   UserAuthenticationDatabase* 
authDatabaseForREGISTER = NULL,
                                                   unsigned reclamationSeconds 
= 65,
                                                   Boolean streamRTPOverTCP = 
False,
-                                                  int 
verbosityLevelForProxying = 0);
+                                                  int 
verbosityLevelForProxying = 0,
+                                                  char const* backEndUsername 
= NULL,
+                                                  char const* backEndPassword 
= NULL);
 
 protected:
   RTSPServerWithREGISTERProxying(UsageEnvironment& env, int ourSocket, Port 
ourPort,
                                 UserAuthenticationDatabase* authDatabase, 
UserAuthenticationDatabase* authDatabaseForREGISTER,
                                 unsigned reclamationSeconds,
-                                Boolean streamRTPOverTCP, int 
verbosityLevelForProxying);
+                                Boolean streamRTPOverTCP, int 
verbosityLevelForProxying,
+                                char const* backEndUsername, char const* 
backEndPassword);
   // called only by createNew();
   virtual ~RTSPServerWithREGISTERProxying();
 
@@ -335,6 +338,8 @@
   unsigned fRegisteredProxyCounter;
   char* fAllowedCommandNames;
   UserAuthenticationDatabase* fAuthDBForREGISTER;
+  char* fBackEndUsername;
+  char* fBackEndPassword;
 }; 
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/liveMedia/include/liveMedia_version.hh 
new/live/liveMedia/include/liveMedia_version.hh
--- old/live/liveMedia/include/liveMedia_version.hh     2017-06-04 
18:53:05.000000000 +0200
+++ new/live/liveMedia/include/liveMedia_version.hh     2017-10-28 
02:26:18.000000000 +0200
@@ -4,7 +4,7 @@
 #ifndef _LIVEMEDIA_VERSION_HH
 #define _LIVEMEDIA_VERSION_HH
 
-#define LIVEMEDIA_LIBRARY_VERSION_STRING       "2017.06.04"
-#define LIVEMEDIA_LIBRARY_VERSION_INT          1496534400
+#define LIVEMEDIA_LIBRARY_VERSION_STRING       "2017.10.28"
+#define LIVEMEDIA_LIBRARY_VERSION_INT          1509148800
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/mediaServer/version.hh 
new/live/mediaServer/version.hh
--- old/live/mediaServer/version.hh     2017-06-04 18:53:05.000000000 +0200
+++ new/live/mediaServer/version.hh     2017-10-28 02:26:19.000000000 +0200
@@ -5,6 +5,6 @@
 #ifndef _MEDIA_SERVER_VERSION_HH
 #define _MEDIA_SERVER_VERSION_HH
 
-#define MEDIA_SERVER_VERSION_STRING "0.90"
+#define MEDIA_SERVER_VERSION_STRING "0.91"
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/live/proxyServer/live555ProxyServer.cpp 
new/live/proxyServer/live555ProxyServer.cpp
--- old/live/proxyServer/live555ProxyServer.cpp 2017-06-04 18:53:05.000000000 
+0200
+++ new/live/proxyServer/live555ProxyServer.cpp 2017-10-28 02:26:19.000000000 
+0200
@@ -38,7 +38,7 @@
 
 static RTSPServer* createRTSPServer(Port port) {
   if (proxyREGISTERRequests) {
-    return RTSPServerWithREGISTERProxying::createNew(*env, port, authDB, 
authDBForREGISTER, 65, streamRTPOverTCP, verbosityLevel);
+    return RTSPServerWithREGISTERProxying::createNew(*env, port, authDB, 
authDBForREGISTER, 65, streamRTPOverTCP, verbosityLevel, username, password);
   } else {
     return RTSPServer::createNew(*env, port, authDB);
   }


Reply via email to