More fixes to FLV memory bookkeeping.
This commit is contained in:
		
							parent
							
								
									debce93475
								
							
						
					
					
						commit
						a9df633e87
					
				
					 1 changed files with 36 additions and 44 deletions
				
			
		| 
						 | 
					@ -513,8 +513,7 @@ bool FLV::Tag::DTSCVideoInit(DTSC::Track & video){
 | 
				
			||||||
  if (video.codec == "H264"){
 | 
					  if (video.codec == "H264"){
 | 
				
			||||||
    len = video.init.size() + 20;
 | 
					    len = video.init.size() + 20;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (len > 0){
 | 
					  if (len <= 0 || !checkBufferSize()){
 | 
				
			||||||
    if ( !checkBufferSize()){
 | 
					 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  memcpy(data + 16, video.init.c_str(), len - 20);
 | 
					  memcpy(data + 16, video.init.c_str(), len - 20);
 | 
				
			||||||
| 
						 | 
					@ -523,7 +522,6 @@ bool FLV::Tag::DTSCVideoInit(DTSC::Track & video){
 | 
				
			||||||
  data[14] = 0;
 | 
					  data[14] = 0;
 | 
				
			||||||
  data[15] = 0;
 | 
					  data[15] = 0;
 | 
				
			||||||
  data[11] = 0x17; //H264 keyframe (0x07 & 0x10)
 | 
					  data[11] = 0x17; //H264 keyframe (0x07 & 0x10)
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  setLen();
 | 
					  setLen();
 | 
				
			||||||
  data[0] = 0x09;
 | 
					  data[0] = 0x09;
 | 
				
			||||||
  data[1] = ((len - 15) >> 16) & 0xFF;
 | 
					  data[1] = ((len - 15) >> 16) & 0xFF;
 | 
				
			||||||
| 
						 | 
					@ -546,8 +544,7 @@ bool FLV::Tag::DTSCAudioInit(DTSC::Track & audio){
 | 
				
			||||||
  if (audio.codec == "AAC"){
 | 
					  if (audio.codec == "AAC"){
 | 
				
			||||||
    len = audio.init.size() + 17;
 | 
					    len = audio.init.size() + 17;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (len > 0){
 | 
					  if (len <= 0 || !checkBufferSize()){
 | 
				
			||||||
    if ( !checkBufferSize()){
 | 
					 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  memcpy(data + 13, audio.init.c_str(), len - 17);
 | 
					  memcpy(data + 13, audio.init.c_str(), len - 17);
 | 
				
			||||||
| 
						 | 
					@ -572,8 +569,6 @@ bool FLV::Tag::DTSCAudioInit(DTSC::Track & audio){
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (audio.channels > 1){
 | 
					  if (audio.channels > 1){
 | 
				
			||||||
    data[11] += 0x01;
 | 
					    data[11] += 0x01;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  setLen();
 | 
					  setLen();
 | 
				
			||||||
  data[0] = 0x08;
 | 
					  data[0] = 0x08;
 | 
				
			||||||
| 
						 | 
					@ -689,13 +684,10 @@ bool FLV::Tag::DTSCMetaInit(DTSC::Stream & S, DTSC::Track & videoRef, DTSC::Trac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::string tmp = amfdata.Pack();
 | 
					  std::string tmp = amfdata.Pack();
 | 
				
			||||||
  len = tmp.length() + 15;
 | 
					  len = tmp.length() + 15;
 | 
				
			||||||
  if (len > 0){
 | 
					  if (len <= 0 || checkBufferSize()){
 | 
				
			||||||
    if (checkBufferSize()){
 | 
					 | 
				
			||||||
      memcpy(data + 11, tmp.c_str(), len - 15);
 | 
					 | 
				
			||||||
    }else{
 | 
					 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					  memcpy(data + 11, tmp.c_str(), len - 15);
 | 
				
			||||||
  setLen();
 | 
					  setLen();
 | 
				
			||||||
  data[0] = 0x12;
 | 
					  data[0] = 0x12;
 | 
				
			||||||
  data[1] = ((len - 15) >> 16) & 0xFF;
 | 
					  data[1] = ((len - 15) >> 16) & 0xFF;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue