From fbd052026405e08a559176bebc6fe649ab223800 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Mon, 8 Nov 2010 22:56:01 +0100 Subject: [PATCH] Werkendheid --- Connector_RTMPf/flv_sock.cpp | 30 ++++++++++++++++++++++++++++++ Connector_RTMPf/main.cpp | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 Connector_RTMPf/flv_sock.cpp diff --git a/Connector_RTMPf/flv_sock.cpp b/Connector_RTMPf/flv_sock.cpp new file mode 100644 index 00000000..8d6c55a4 --- /dev/null +++ b/Connector_RTMPf/flv_sock.cpp @@ -0,0 +1,30 @@ +SWBaseSocket::SWBaseError SWBerr; +char * FLVbuffer; +int FLV_len; +int FLVbs = 0; + +void FLV_Readheader(SWUnixSocket & ss){ + static char header[13]; + while (ss.frecv(header, 13, &SWBerr) != 13){ + //wait + } +}//FLV_Readheader + +void FLV_Dump(){FLV_len = 0;} + +bool FLV_GetPacket(SWUnixSocket & ss){ + if (FLVbs < 15){FLVbuffer = (char*)realloc(FLVbuffer, 15); FLVbs = 15;} + //if received a whole header, receive a whole packet + //if not, retry header next pass + if (FLV_len == 0){ + if (ss.frecv(FLVbuffer, 11, &SWBerr) == 11){ + FLV_len = FLVbuffer[3] + 15; + FLV_len += (FLVbuffer[2] << 8); + FLV_len += (FLVbuffer[1] << 16); + if (FLVbs < FLV_len){FLVbuffer = (char*)realloc(FLVbuffer, FLV_len);FLVbs = FLV_len;} + } + }else{ + if (ss.frecv(FLVbuffer+11, FLV_len-11, &SWBerr) == FLV_len-11){return true;} + } + return false; +}//FLV_GetPacket diff --git a/Connector_RTMPf/main.cpp b/Connector_RTMPf/main.cpp index 14cfea45..5b724215 100644 --- a/Connector_RTMPf/main.cpp +++ b/Connector_RTMPf/main.cpp @@ -20,7 +20,7 @@ timeval lastrec; #include "parsechunks.cpp" //chunkstream parsing #include "handshake.cpp" //handshaking -#include "../util/flv_sock.cpp" //FLV parsing with SocketW +#include "flv_sock.cpp" //FLV parsing with SocketW int main(){ unsigned int ts;