diff -rupN live-2014.02.10.dist/liveMedia/include/ServerMediaSession.hh live-2014.02.10.edit/liveMedia/include/ServerMediaSession.hh
--- live-2014.02.10.dist/liveMedia/include/ServerMediaSession.hh	2014-02-10 11:47:26.000000000 +0000
+++ live-2014.02.10.edit/liveMedia/include/ServerMediaSession.hh	2014-02-14 11:15:30.000000000 +0000
@@ -52,7 +52,7 @@ public:
                               char const* mediumName,
                               ServerMediaSession*& resultSession);
 
-  char* generateSDPDescription(); // based on the entire session
+  virtual char* generateSDPDescription(); // based on the entire session
       // Note: The caller is responsible for freeing the returned string
 
   char const* streamName() const { return fStreamName; }
@@ -61,7 +61,7 @@ public:
   unsigned numSubsessions() const { return fSubsessionCounter; }
 
   void testScaleFactor(float& scale); // sets "scale" to the actual supported scale
-  float duration() const;
+  virtual float duration() const;
     // a result == 0 means an unbounded session (the default)
     // a result < 0 means: subsession durations differ; the result is -(the largest).
     // a result > 0 means: this is the duration of a bounded session
@@ -84,6 +84,7 @@ protected:
   // called only by "createNew()"
 
   virtual ~ServerMediaSession();
+  virtual char const* mediaSdpLines(ServerMediaSubsession* subsession);
 
 private: // redefined virtual functions
   virtual Boolean isServerMediaSession() const;
diff -rupN live-2014.02.10.dist/liveMedia/MatroskaFile.cpp live-2014.02.10.edit/liveMedia/MatroskaFile.cpp
--- live-2014.02.10.dist/liveMedia/MatroskaFile.cpp	2014-02-10 11:47:26.000000000 +0000
+++ live-2014.02.10.edit/liveMedia/MatroskaFile.cpp	2014-02-20 11:48:03.000000000 +0000
@@ -266,7 +266,9 @@ FramedSource* MatroskaFile
     } else if (strcmp(track->mimeType, "video/H264") == 0) {
       estBitrate = 500;
       // Allow for the possibility of very large NAL units being fed to the sink object:
-      OutPacketBuffer::maxSize = 300000; // bytes
+      if (OutPacketBuffer::maxSize < 300000) {
+        OutPacketBuffer::maxSize = 300000; // bytes
+      }
 
       // Add a framer in front of the source:
       result = H264VideoStreamDiscreteFramer::createNew(envir(), result);
@@ -274,7 +276,9 @@ FramedSource* MatroskaFile
     } else if (strcmp(track->mimeType, "video/H265") == 0) {
       estBitrate = 500;
       // Allow for the possibility of very large NAL units being fed to the sink object:
-      OutPacketBuffer::maxSize = 300000; // bytes
+      if (OutPacketBuffer::maxSize < 300000) {
+        OutPacketBuffer::maxSize = 300000; // bytes
+      }
 
       // Add a framer in front of the source:
       result = H265VideoStreamDiscreteFramer::createNew(envir(), result);
diff -rupN live-2014.02.10.dist/liveMedia/ServerMediaSession.cpp live-2014.02.10.edit/liveMedia/ServerMediaSession.cpp
--- live-2014.02.10.dist/liveMedia/ServerMediaSession.cpp	2014-02-10 11:47:26.000000000 +0000
+++ live-2014.02.10.edit/liveMedia/ServerMediaSession.cpp	2014-02-14 11:16:04.000000000 +0000
@@ -204,6 +204,10 @@ Boolean ServerMediaSession::isServerMedi
   return True;
 }
 
+char const* ServerMediaSession::mediaSdpLines(ServerMediaSubsession* subsession) {
+  return subsession->sdpLines();
+}
+
 char* ServerMediaSession::generateSDPDescription() {
   AddressString ipAddressStr(ourIPAddress(envir()));
   unsigned ipAddressStrSize = strlen(ipAddressStr.val());
@@ -233,7 +237,7 @@ char* ServerMediaSession::generateSDPDes
     ServerMediaSubsession* subsession;
     for (subsession = fSubsessionsHead; subsession != NULL;
 	 subsession = subsession->fNext) {
-      char const* sdpLines = subsession->sdpLines();
+      char const* sdpLines = mediaSdpLines(subsession);
       if (sdpLines == NULL) continue; // the media's not available
       sdpLength += strlen(sdpLines);
     }
@@ -302,7 +306,7 @@ char* ServerMediaSession::generateSDPDes
       sdpLength -= mediaSDPLength;
       if (sdpLength <= 1) break; // the SDP has somehow become too long
 
-      char const* sdpLines = subsession->sdpLines();
+      char const* sdpLines = mediaSdpLines(subsession);
       if (sdpLines != NULL) snprintf(mediaSDP, sdpLength, "%s", sdpLines);
     }
   } while (0);
