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

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 (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;}
    while (ss.frecv(FLVbuffer+11, FLV_len-11, &SWBerr) != FLV_len-11){
      //wait
    }
    return true;
  }
  return false;
}//FLV_GetPacket