More fixes to FLV memory bookkeeping.

This commit is contained in:
Thulinma 2013-12-05 12:39:53 +01:00
parent debce93475
commit a9df633e87

View file

@ -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;