Don't use the BufferEmpty toggle trick by default in librtmp,
authorhyc <hyc@400ebc74-4327-4243-bc38-086b20814532>
Wed, 5 May 2010 05:47:18 +0000 (05:47 +0000)
committerhyc <hyc@400ebc74-4327-4243-bc38-086b20814532>
Wed, 5 May 2010 05:47:18 +0000 (05:47 +0000)
but set it by default in rtmpdump

git-svn-id: svn://svn.mplayerhq.hu/rtmpdump/trunk@471 400ebc74-4327-4243-bc38-086b20814532

librtmp/rtmp.c
librtmp/rtmp.h
rtmpdump.c

index 8e04f7b..369b8b3 100644 (file)
@@ -2595,7 +2595,7 @@ HandleCtrl(RTMP *r, const RTMPPacket *packet)
        case 31:
          tmp = AMF_DecodeInt32(packet->m_body + 2);
          RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferEmpty %d", __FUNCTION__, tmp);
-         if ((r->Link.lFlags & RTMP_LF_LIVE) || (r->Link.protocol & RTMP_FEATURE_HTTP))
+         if (!(r->Link.lFlags & RTMP_LF_BUFX))
            break;
          if (!r->m_pausing)
            {
index 38ebea3..0f73834 100644 (file)
@@ -141,10 +141,11 @@ extern "C"
     int seekTime;
     int stopTime;
 
-#define RTMP_LF_AUTH   0x0001
-#define RTMP_LF_LIVE   0x0002
-#define RTMP_LF_SWFV   0x0004
-#define RTMP_LF_PLST   0x0008
+#define RTMP_LF_AUTH   0x0001  /* using auth param */
+#define RTMP_LF_LIVE   0x0002  /* stream is live */
+#define RTMP_LF_SWFV   0x0004  /* do SWF verification */
+#define RTMP_LF_PLST   0x0008  /* send playlist before play */
+#define RTMP_LF_BUFX   0x0010  /* toggle stream on BufferEmpty msg */
     int lFlags;
 
     int swfAge;
index 5b0dd48..98c4fea 100644 (file)
@@ -1168,6 +1168,10 @@ main(int argc, char **argv)
                   &tcUrl, &swfUrl, &pageUrl, &app, &auth, &swfHash, swfSize,
                   &flashVer, &subscribepath, dSeek, dStopOffset, bLiveStream, timeout);
 
+  /* Try to keep the stream moving if it pauses on us */
+  if (!bLiveStream && !(protocol & RTMP_FEATURE_HTTP))
+    rtmp.Link.lFlags |= RTMP_LF_BUFX;
+
   off_t size = 0;
 
   // ok, we have to get the timestamp of the last keyframe (only keyframes are seekable) / last audio frame (audio only streams)