RTMP lib upgrades to return strings by reference - note: initial testing indicates raptors. Needs to be looked at ASAP!
This commit is contained in:
		
							parent
							
								
									ed2021d01c
								
							
						
					
					
						commit
						03f3ecab1b
					
				
					 2 changed files with 26 additions and 26 deletions
				
			
		| 
						 | 
					@ -36,8 +36,8 @@ std::map<unsigned int, RTMPStream::Chunk> RTMPStream::Chunk::lastrecv;
 | 
				
			||||||
/// Packs up the chunk for sending over the network.
 | 
					/// Packs up the chunk for sending over the network.
 | 
				
			||||||
/// \warning Do not call if you are not actually sending the resulting data!
 | 
					/// \warning Do not call if you are not actually sending the resulting data!
 | 
				
			||||||
/// \returns A std::string ready to be sent.
 | 
					/// \returns A std::string ready to be sent.
 | 
				
			||||||
std::string RTMPStream::Chunk::Pack(){
 | 
					std::string & RTMPStream::Chunk::Pack(){
 | 
				
			||||||
  std::string output = "";
 | 
					  static std::string output = "";
 | 
				
			||||||
  RTMPStream::Chunk prev = lastsend[cs_id];
 | 
					  RTMPStream::Chunk prev = lastsend[cs_id];
 | 
				
			||||||
  unsigned int tmpi;
 | 
					  unsigned int tmpi;
 | 
				
			||||||
  unsigned char chtype = 0x00;
 | 
					  unsigned char chtype = 0x00;
 | 
				
			||||||
| 
						 | 
					@ -143,8 +143,8 @@ RTMPStream::Chunk::Chunk(){
 | 
				
			||||||
}//constructor
 | 
					}//constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Packs up a chunk with the given arguments as properties.
 | 
					/// Packs up a chunk with the given arguments as properties.
 | 
				
			||||||
std::string RTMPStream::SendChunk(unsigned int cs_id, unsigned char msg_type_id, unsigned int msg_stream_id, std::string data){
 | 
					std::string & RTMPStream::SendChunk(unsigned int cs_id, unsigned char msg_type_id, unsigned int msg_stream_id, std::string data){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = cs_id;
 | 
					  ch.cs_id = cs_id;
 | 
				
			||||||
  ch.timestamp = RTMPStream::getNowMS();
 | 
					  ch.timestamp = RTMPStream::getNowMS();
 | 
				
			||||||
  ch.len = data.size();
 | 
					  ch.len = data.size();
 | 
				
			||||||
| 
						 | 
					@ -161,8 +161,8 @@ std::string RTMPStream::SendChunk(unsigned int cs_id, unsigned char msg_type_id,
 | 
				
			||||||
/// \param data Contents of the media data.
 | 
					/// \param data Contents of the media data.
 | 
				
			||||||
/// \param len Length of the media data, in bytes.
 | 
					/// \param len Length of the media data, in bytes.
 | 
				
			||||||
/// \param ts Timestamp of the media data, relative to current system time.
 | 
					/// \param ts Timestamp of the media data, relative to current system time.
 | 
				
			||||||
std::string RTMPStream::SendMedia(unsigned char msg_type_id, unsigned char * data, int len, unsigned int ts){
 | 
					std::string & RTMPStream::SendMedia(unsigned char msg_type_id, unsigned char * data, int len, unsigned int ts){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = msg_type_id+42;
 | 
					  ch.cs_id = msg_type_id+42;
 | 
				
			||||||
  ch.timestamp = ts;
 | 
					  ch.timestamp = ts;
 | 
				
			||||||
  ch.len = len;
 | 
					  ch.len = len;
 | 
				
			||||||
| 
						 | 
					@ -170,14 +170,14 @@ std::string RTMPStream::SendMedia(unsigned char msg_type_id, unsigned char * dat
 | 
				
			||||||
  ch.len_left = 0;
 | 
					  ch.len_left = 0;
 | 
				
			||||||
  ch.msg_type_id = msg_type_id;
 | 
					  ch.msg_type_id = msg_type_id;
 | 
				
			||||||
  ch.msg_stream_id = 1;
 | 
					  ch.msg_stream_id = 1;
 | 
				
			||||||
  ch.data.append((char*)data, (size_t)len);
 | 
					  ch.data = std::string((char*)data, (size_t)len);
 | 
				
			||||||
  return ch.Pack();
 | 
					  return ch.Pack();
 | 
				
			||||||
}//SendMedia
 | 
					}//SendMedia
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Packs up a chunk with media contents.
 | 
					/// Packs up a chunk with media contents.
 | 
				
			||||||
/// \param tag FLV::Tag with media to send.
 | 
					/// \param tag FLV::Tag with media to send.
 | 
				
			||||||
std::string RTMPStream::SendMedia(FLV::Tag & tag){
 | 
					std::string & RTMPStream::SendMedia(FLV::Tag & tag){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = ((unsigned char)tag.data[0]);
 | 
					  ch.cs_id = ((unsigned char)tag.data[0]);
 | 
				
			||||||
  ch.timestamp = tag.tagTime();
 | 
					  ch.timestamp = tag.tagTime();
 | 
				
			||||||
  ch.len = tag.len-15;
 | 
					  ch.len = tag.len-15;
 | 
				
			||||||
| 
						 | 
					@ -185,13 +185,13 @@ std::string RTMPStream::SendMedia(FLV::Tag & tag){
 | 
				
			||||||
  ch.len_left = 0;
 | 
					  ch.len_left = 0;
 | 
				
			||||||
  ch.msg_type_id = (unsigned char)tag.data[0];
 | 
					  ch.msg_type_id = (unsigned char)tag.data[0];
 | 
				
			||||||
  ch.msg_stream_id = 1;
 | 
					  ch.msg_stream_id = 1;
 | 
				
			||||||
  ch.data.append(tag.data+11, (size_t)(tag.len-15));
 | 
					  ch.data = std::string(tag.data+11, (size_t)(tag.len-15));
 | 
				
			||||||
  return ch.Pack();
 | 
					  return ch.Pack();
 | 
				
			||||||
}//SendMedia
 | 
					}//SendMedia
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Packs up a chunk for a control message with 1 argument.
 | 
					/// Packs up a chunk for a control message with 1 argument.
 | 
				
			||||||
std::string RTMPStream::SendCTL(unsigned char type, unsigned int data){
 | 
					std::string & RTMPStream::SendCTL(unsigned char type, unsigned int data){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = 2;
 | 
					  ch.cs_id = 2;
 | 
				
			||||||
  ch.timestamp = RTMPStream::getNowMS();
 | 
					  ch.timestamp = RTMPStream::getNowMS();
 | 
				
			||||||
  ch.len = 4;
 | 
					  ch.len = 4;
 | 
				
			||||||
| 
						 | 
					@ -205,8 +205,8 @@ std::string RTMPStream::SendCTL(unsigned char type, unsigned int data){
 | 
				
			||||||
}//SendCTL
 | 
					}//SendCTL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Packs up a chunk for a control message with 2 arguments.
 | 
					/// Packs up a chunk for a control message with 2 arguments.
 | 
				
			||||||
std::string RTMPStream::SendCTL(unsigned char type, unsigned int data, unsigned char data2){
 | 
					std::string & RTMPStream::SendCTL(unsigned char type, unsigned int data, unsigned char data2){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = 2;
 | 
					  ch.cs_id = 2;
 | 
				
			||||||
  ch.timestamp = RTMPStream::getNowMS();
 | 
					  ch.timestamp = RTMPStream::getNowMS();
 | 
				
			||||||
  ch.len = 5;
 | 
					  ch.len = 5;
 | 
				
			||||||
| 
						 | 
					@ -221,8 +221,8 @@ std::string RTMPStream::SendCTL(unsigned char type, unsigned int data, unsigned
 | 
				
			||||||
}//SendCTL
 | 
					}//SendCTL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Packs up a chunk for a user control message with 1 argument.
 | 
					/// Packs up a chunk for a user control message with 1 argument.
 | 
				
			||||||
std::string RTMPStream::SendUSR(unsigned char type, unsigned int data){
 | 
					std::string & RTMPStream::SendUSR(unsigned char type, unsigned int data){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = 2;
 | 
					  ch.cs_id = 2;
 | 
				
			||||||
  ch.timestamp = RTMPStream::getNowMS();
 | 
					  ch.timestamp = RTMPStream::getNowMS();
 | 
				
			||||||
  ch.len = 6;
 | 
					  ch.len = 6;
 | 
				
			||||||
| 
						 | 
					@ -238,8 +238,8 @@ std::string RTMPStream::SendUSR(unsigned char type, unsigned int data){
 | 
				
			||||||
}//SendUSR
 | 
					}//SendUSR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Packs up a chunk for a user control message with 2 arguments.
 | 
					/// Packs up a chunk for a user control message with 2 arguments.
 | 
				
			||||||
std::string RTMPStream::SendUSR(unsigned char type, unsigned int data, unsigned int data2){
 | 
					std::string & RTMPStream::SendUSR(unsigned char type, unsigned int data, unsigned int data2){
 | 
				
			||||||
  RTMPStream::Chunk ch;
 | 
					  static RTMPStream::Chunk ch;
 | 
				
			||||||
  ch.cs_id = 2;
 | 
					  ch.cs_id = 2;
 | 
				
			||||||
  ch.timestamp = RTMPStream::getNowMS();
 | 
					  ch.timestamp = RTMPStream::getNowMS();
 | 
				
			||||||
  ch.len = 10;
 | 
					  ch.len = 10;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,20 +46,20 @@ namespace RTMPStream{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Chunk();
 | 
					      Chunk();
 | 
				
			||||||
      bool Parse(std::string & data);
 | 
					      bool Parse(std::string & data);
 | 
				
			||||||
      std::string Pack();
 | 
					      std::string & Pack();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private:
 | 
					    private:
 | 
				
			||||||
      static std::map<unsigned int, Chunk> lastsend;
 | 
					      static std::map<unsigned int, Chunk> lastsend;
 | 
				
			||||||
      static std::map<unsigned int, Chunk> lastrecv;
 | 
					      static std::map<unsigned int, Chunk> lastrecv;
 | 
				
			||||||
  };//RTMPStream::Chunk
 | 
					  };//RTMPStream::Chunk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::string SendChunk(unsigned int cs_id, unsigned char msg_type_id, unsigned int msg_stream_id, std::string data);
 | 
					  std::string & SendChunk(unsigned int cs_id, unsigned char msg_type_id, unsigned int msg_stream_id, std::string data);
 | 
				
			||||||
  std::string SendMedia(unsigned char msg_type_id, unsigned char * data, int len, unsigned int ts);
 | 
					  std::string & SendMedia(unsigned char msg_type_id, unsigned char * data, int len, unsigned int ts);
 | 
				
			||||||
  std::string SendMedia(FLV::Tag & tag);
 | 
					  std::string & SendMedia(FLV::Tag & tag);
 | 
				
			||||||
  std::string SendCTL(unsigned char type, unsigned int data);
 | 
					  std::string & SendCTL(unsigned char type, unsigned int data);
 | 
				
			||||||
  std::string SendCTL(unsigned char type, unsigned int data, unsigned char data2);
 | 
					  std::string & SendCTL(unsigned char type, unsigned int data, unsigned char data2);
 | 
				
			||||||
  std::string SendUSR(unsigned char type, unsigned int data);
 | 
					  std::string & SendUSR(unsigned char type, unsigned int data);
 | 
				
			||||||
  std::string SendUSR(unsigned char type, unsigned int data, unsigned int data2);
 | 
					  std::string & SendUSR(unsigned char type, unsigned int data, unsigned int data2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// This value should be set to the first 1537 bytes received.
 | 
					  /// This value should be set to the first 1537 bytes received.
 | 
				
			||||||
  extern std::string handshake_in;
 | 
					  extern std::string handshake_in;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue