Fixed FLV input when input is not properly interleaved at the beginning of the stream.
This commit is contained in:
parent
9a9490dee5
commit
58566ad4e3
1 changed files with 15 additions and 15 deletions
|
@ -977,16 +977,6 @@ JSON::Value FLV::Tag::toJSON(DTSC::Meta & metadata){
|
||||||
}
|
}
|
||||||
if (data[0] == 0x08){
|
if (data[0] == 0x08){
|
||||||
char audiodata = data[11];
|
char audiodata = data[11];
|
||||||
if (needsInitData() && isInitData()){
|
|
||||||
if ((audiodata & 0xF0) == 0xA0){
|
|
||||||
metadata.tracks[2].init = std::string((char*)data + 13, (size_t)len - 17);
|
|
||||||
}else{
|
|
||||||
metadata.tracks[2].init = std::string((char*)data + 12, (size_t)len - 16);
|
|
||||||
}
|
|
||||||
return pack_out; //skip rest of parsing, get next tag.
|
|
||||||
}
|
|
||||||
pack_out["time"] = tagTime();
|
|
||||||
pack_out["trackid"] = 2;
|
|
||||||
metadata.tracks[2].trackID = 2;
|
metadata.tracks[2].trackID = 2;
|
||||||
metadata.tracks[2].type = "audio";
|
metadata.tracks[2].type = "audio";
|
||||||
if (metadata.tracks[2].codec == ""){
|
if (metadata.tracks[2].codec == ""){
|
||||||
|
@ -1028,6 +1018,16 @@ JSON::Value FLV::Tag::toJSON(DTSC::Meta & metadata){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (needsInitData() && isInitData()){
|
||||||
|
if ((audiodata & 0xF0) == 0xA0){
|
||||||
|
metadata.tracks[2].init = std::string((char*)data + 13, (size_t)len - 17);
|
||||||
|
}else{
|
||||||
|
metadata.tracks[2].init = std::string((char*)data + 12, (size_t)len - 16);
|
||||||
|
}
|
||||||
|
return pack_out; //skip rest of parsing, get next tag.
|
||||||
|
}
|
||||||
|
pack_out["time"] = tagTime();
|
||||||
|
pack_out["trackid"] = 2;
|
||||||
if ((audiodata & 0xF0) == 0xA0){
|
if ((audiodata & 0xF0) == 0xA0){
|
||||||
if (len < 18){
|
if (len < 18){
|
||||||
return JSON::Value();
|
return JSON::Value();
|
||||||
|
@ -1043,6 +1043,11 @@ JSON::Value FLV::Tag::toJSON(DTSC::Meta & metadata){
|
||||||
}
|
}
|
||||||
if (data[0] == 0x09){
|
if (data[0] == 0x09){
|
||||||
char videodata = data[11];
|
char videodata = data[11];
|
||||||
|
if (metadata.tracks[1].codec == ""){
|
||||||
|
metadata.tracks[1].codec = getVideoCodec();
|
||||||
|
}
|
||||||
|
metadata.tracks[1].type = "video";
|
||||||
|
metadata.tracks[1].trackID = 1;
|
||||||
if (needsInitData() && isInitData()){
|
if (needsInitData() && isInitData()){
|
||||||
if ((videodata & 0x0F) == 7){
|
if ((videodata & 0x0F) == 7){
|
||||||
if (len < 21){
|
if (len < 21){
|
||||||
|
@ -1057,11 +1062,6 @@ JSON::Value FLV::Tag::toJSON(DTSC::Meta & metadata){
|
||||||
}
|
}
|
||||||
return pack_out; //skip rest of parsing, get next tag.
|
return pack_out; //skip rest of parsing, get next tag.
|
||||||
}
|
}
|
||||||
if (metadata.tracks[1].codec == ""){
|
|
||||||
metadata.tracks[1].codec = getVideoCodec();
|
|
||||||
}
|
|
||||||
metadata.tracks[1].type = "video";
|
|
||||||
metadata.tracks[1].trackID = 1;
|
|
||||||
pack_out["trackid"] = 1;
|
pack_out["trackid"] = 1;
|
||||||
switch (videodata & 0xF0){
|
switch (videodata & 0xF0){
|
||||||
case 0x10:
|
case 0x10:
|
||||||
|
|
Loading…
Add table
Reference in a new issue