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"){
|
||||
len = video.init.size() + 20;
|
||||
}
|
||||
if (len > 0){
|
||||
if ( !checkBufferSize()){
|
||||
if (len <= 0 || !checkBufferSize()){
|
||||
return false;
|
||||
}
|
||||
memcpy(data + 16, video.init.c_str(), len - 20);
|
||||
|
@ -523,7 +522,6 @@ bool FLV::Tag::DTSCVideoInit(DTSC::Track & video){
|
|||
data[14] = 0;
|
||||
data[15] = 0;
|
||||
data[11] = 0x17; //H264 keyframe (0x07 & 0x10)
|
||||
}
|
||||
setLen();
|
||||
data[0] = 0x09;
|
||||
data[1] = ((len - 15) >> 16) & 0xFF;
|
||||
|
@ -546,8 +544,7 @@ bool FLV::Tag::DTSCAudioInit(DTSC::Track & audio){
|
|||
if (audio.codec == "AAC"){
|
||||
len = audio.init.size() + 17;
|
||||
}
|
||||
if (len > 0){
|
||||
if ( !checkBufferSize()){
|
||||
if (len <= 0 || !checkBufferSize()){
|
||||
return false;
|
||||
}
|
||||
memcpy(data + 13, audio.init.c_str(), len - 17);
|
||||
|
@ -572,8 +569,6 @@ bool FLV::Tag::DTSCAudioInit(DTSC::Track & audio){
|
|||
}
|
||||
if (audio.channels > 1){
|
||||
data[11] += 0x01;
|
||||
|
||||
}
|
||||
}
|
||||
setLen();
|
||||
data[0] = 0x08;
|
||||
|
@ -689,13 +684,10 @@ bool FLV::Tag::DTSCMetaInit(DTSC::Stream & S, DTSC::Track & videoRef, DTSC::Trac
|
|||
|
||||
std::string tmp = amfdata.Pack();
|
||||
len = tmp.length() + 15;
|
||||
if (len > 0){
|
||||
if (checkBufferSize()){
|
||||
memcpy(data + 11, tmp.c_str(), len - 15);
|
||||
}else{
|
||||
if (len <= 0 || checkBufferSize()){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
memcpy(data + 11, tmp.c_str(), len - 15);
|
||||
setLen();
|
||||
data[0] = 0x12;
|
||||
data[1] = ((len - 15) >> 16) & 0xFF;
|
||||
|
|
Loading…
Add table
Reference in a new issue