Author: hyc Date: Thu Nov 12 15:58:52 2009 New Revision: 50 Log: Use pause/unpause for FMS 3.0 as well Modified: rtmp.cpp rtmp.h rtmpdump.cpp Modified: rtmp.cpp ============================================================================== --- rtmp.cpp Thu Nov 12 14:01:40 2009 (r49) +++ rtmp.cpp Thu Nov 12 15:58:52 2009 (r50) @@ -122,12 +122,6 @@ double CRTMP::GetDuration() { return m_f bool CRTMP::IsConnected() { return m_socket != 0; } bool CRTMP::IsTimedout() { return m_bTimedout; } -void CRTMP::GetPauseStamps(uint32_t *pause, uint32_t *resume) -{ - *pause = m_pauseStamp; - *resume = m_mediaStamp; -} - void CRTMP::SetBufferMS(int size) { m_nBufferMS = size; @@ -403,6 +397,20 @@ bool CRTMP::ReconnectStream(int bufferTi return ConnectStream(seekTime, dLength); } +bool CRTMP::ToggleStream() +{ + bool res; + + res = SendPause(true, m_pauseStamp); + if (!res) return res; + + m_bPausing = 1; + sleep(1); + res = SendPause(false, m_pauseStamp); + m_bPausing = 3; + return res; +} + void CRTMP::DeleteStream() { if (m_stream_id < 0) return; @@ -446,10 +454,8 @@ int CRTMP::GetNextMediaPacket(RTMPPacket if (bHasMediaPacket) m_bPlaying = true; - else if (m_bTimedout) { + else if (m_bTimedout) m_pauseStamp = m_channelTimestamp[m_mediaChannel]; - m_bPausing = 3; - } return bHasMediaPacket; } Modified: rtmp.h ============================================================================== --- rtmp.h Thu Nov 12 14:01:40 2009 (r49) +++ rtmp.h Thu Nov 12 15:58:52 2009 (r50) @@ -141,7 +141,7 @@ class CRTMP bool IsConnected(); bool IsTimedout(); double GetDuration(); - void GetPauseStamps(uint32_t *pause, uint32_t *resume); + bool ToggleStream(); bool ConnectStream(double seekTime=-10.0, uint32_t dLength=0); bool ReconnectStream(int bufferTime, double seekTime=-10.0, uint32_t dLength=0); Modified: rtmpdump.cpp ============================================================================== --- rtmpdump.cpp Thu Nov 12 14:01:40 2009 (r49) +++ rtmpdump.cpp Thu Nov 12 15:58:52 2009 (r50) @@ -1345,22 +1345,8 @@ int main(int argc, char **argv) nInitialFrameSize = 0; uint32_t lastOff; - Log(LOGINFO, "Connection timed out, trying to reconnect.\n\n"); - rtmp->GetPauseStamps(&lastOff, &dSeek); - - // Calculate the length of the stream to still play - if (dStopOffset > 0) { - dLength = dStopOffset - lastOff; - - // Quit if start seek is past required stop offset - if(dLength <= 0) { - LogPrintf("Already Completed\n"); - nStatus = RD_SUCCESS; - break; - } - } - - if (!rtmp->ReconnectStream(bufferTime, lastOff, dLength)) { + Log(LOGINFO, "Connection timed out, trying to resume.\n\n"); + if (!rtmp->ToggleStream()) { Log(LOGERROR, "Failed to resume the stream\n\n"); if (!rtmp->IsTimedout()) nStatus = RD_FAILED;
participants (1)
-
hyc