FLV library handling fixes.

(Mostly) courtesy of Erik.
This commit is contained in:
Thulinma 2014-06-06 11:03:23 +02:00
parent 239c1d1ebb
commit 51bb561b7b

View file

@ -387,11 +387,7 @@ bool FLV::Tag::DTSCLoader(DTSC::Packet & packData, DTSC::Track & track){
} }
if (track.codec == "H264"){ if (track.codec == "H264"){
memcpy(data + 16, tmpData, len - 20); memcpy(data + 16, tmpData, len - 20);
if (packData.getFlag("nalu")){
data[12] = 1; data[12] = 1;
}else{
data[12] = 2;
}
if (packData.getInt("offset") < 0){ if (packData.getInt("offset") < 0){
offset(0); offset(0);
}else{ }else{
@ -402,19 +398,18 @@ bool FLV::Tag::DTSCLoader(DTSC::Packet & packData, DTSC::Track & track){
} }
data[11] = 0; data[11] = 0;
if (track.codec == "H264"){ if (track.codec == "H264"){
data[11] += 7; data[11] |= 7;
} }
if (track.codec == "H263"){ if (track.codec == "H263"){
data[11] += 2; data[11] |= 2;
} }
if (packData.getFlag("keyframe")){ if (packData.getFlag("keyframe")){
data[11] += 0x10; data[11] |= 0x10;
} }else{
if (packData.getFlag("interframe")){ data[11] |= 0x20;
data[11] += 0x20;
} }
if (packData.getFlag("disposableframe")){ if (packData.getFlag("disposableframe")){
data[11] += 0x30; data[11] |= 0x30;
} }
} }
if (track.type == "audio"){ if (track.type == "audio"){
@ -436,24 +431,24 @@ bool FLV::Tag::DTSCLoader(DTSC::Packet & packData, DTSC::Track & track){
} }
data[11] = 0; data[11] = 0;
if (track.codec == "AAC"){ if (track.codec == "AAC"){
data[11] += 0xA0; data[11] |= 0xA0;
} }
if (track.codec == "MP3"){ if (track.codec == "MP3"){
data[11] += 0x20; data[11] |= 0x20;
} }
unsigned int datarate = track.rate; unsigned int datarate = track.rate;
if (datarate >= 44100){ if (datarate >= 44100){
data[11] += 0x0C; data[11] |= 0x0C;
}else if (datarate >= 22050){ }else if (datarate >= 22050){
data[11] += 0x08; data[11] |= 0x08;
}else if (datarate >= 11025){ }else if (datarate >= 11025){
data[11] += 0x04; data[11] |= 0x04;
} }
if (track.size == 16){ if (track.size == 16){
data[11] += 0x02; data[11] |= 0x02;
} }
if (track.channels > 1){ if (track.channels > 1){
data[11] += 0x01; data[11] |= 0x01;
} }
} }
if (!len){ if (!len){