Merge branch 'development' into json_mod_LTS
# Conflicts: # lib/shared_memory.cpp # src/controller/controller.cpp # src/io.cpp # src/output/output.cpp # src/output/output_http_internal.cpp
This commit is contained in:
commit
74c8932106
18 changed files with 535 additions and 348 deletions
|
@ -169,14 +169,14 @@ namespace Mist {
|
|||
unsigned int bestSoFar = 0;
|
||||
unsigned int bestSoFarCount = 0;
|
||||
unsigned int index = 0;
|
||||
for (JSON::ArrIter it = capa["codecs"].ArrBegin(); it != capa["codecs"].ArrEnd(); it++){
|
||||
jsonForEach(capa["codecs"], it) {
|
||||
unsigned int genCounter = 0;
|
||||
unsigned int selCounter = 0;
|
||||
if ((*it).size() > 0){
|
||||
for (JSON::ArrIter itb = (*it).ArrBegin(); itb != (*it).ArrEnd(); itb++){
|
||||
jsonForEach((*it), itb) {
|
||||
if ((*itb).size() > 0){
|
||||
bool found = false;
|
||||
for (JSON::ArrIter itc = (*itb).ArrBegin(); itc != (*itb).ArrEnd() && !found; itc++){
|
||||
jsonForEach(*itb, itc) {
|
||||
for (std::set<unsigned long>::iterator itd = selectedTracks.begin(); itd != selectedTracks.end(); itd++){
|
||||
if (myMeta.tracks[*itd].codec == (*itc).asStringRef()){
|
||||
selCounter++;
|
||||
|
@ -212,10 +212,13 @@ namespace Mist {
|
|||
DEBUG_MSG(DLVL_MEDIUM, "Trying to fill: %s", capa["codecs"][bestSoFar].toString().c_str());
|
||||
//try to fill as many codecs simultaneously as possible
|
||||
if (capa["codecs"][bestSoFar].size() > 0){
|
||||
for (JSON::ArrIter itb = capa["codecs"][bestSoFar].ArrBegin(); itb != capa["codecs"][bestSoFar].ArrEnd(); itb++){
|
||||
jsonForEach(capa["codecs"][bestSoFar], itb) {
|
||||
if ((*itb).size() && myMeta.tracks.size()){
|
||||
bool found = false;
|
||||
for (JSON::ArrIter itc = (*itb).ArrBegin(); itc != (*itb).ArrEnd() && !found; itc++){
|
||||
jsonForEach((*itb), itc) {
|
||||
if (found) {
|
||||
break;
|
||||
}
|
||||
for (std::set<unsigned long>::iterator itd = selectedTracks.begin(); itd != selectedTracks.end(); itd++){
|
||||
if (myMeta.tracks[*itd].codec == (*itc).asStringRef()){
|
||||
found = true;
|
||||
|
|
|
@ -13,14 +13,14 @@ namespace Mist {
|
|||
JSON::Value & vidCapa = capa["codecs"][0u][0u];
|
||||
JSON::Value & audCapa = capa["codecs"][0u][1u];
|
||||
for (std::map<unsigned int,DTSC::Track>::iterator it = myMeta.tracks.begin(); it != myMeta.tracks.end(); it++){
|
||||
for (JSON::ArrIter itb = vidCapa.ArrBegin(); itb != vidCapa.ArrEnd(); itb++){
|
||||
jsonForEach(vidCapa, itb) {
|
||||
if (it->second.codec == (*itb).asStringRef()){
|
||||
videoTracks.insert(it->first);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!audioTrack){
|
||||
for (JSON::ArrIter itb = audCapa.ArrBegin(); itb != audCapa.ArrEnd(); itb++){
|
||||
jsonForEach(audCapa, itb) {
|
||||
if (it->second.codec == (*itb).asStringRef()){
|
||||
audioTrack = it->first;
|
||||
break;
|
||||
|
|
|
@ -75,7 +75,7 @@ namespace Mist {
|
|||
//if there is a matcher, try to match
|
||||
if (capa.isMember("url_match")){
|
||||
if (capa["url_match"].isArray()){
|
||||
for (JSON::ArrIter it = capa["url_match"].ArrBegin(); it != capa["url_match"].ArrEnd(); ++it){
|
||||
jsonForEach(capa["url_match"], it) {
|
||||
match |= isMatch(url, it->asStringRef(), streamname);
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ namespace Mist {
|
|||
//if there is a prefix, try to match
|
||||
if (capa.isMember("url_prefix")){
|
||||
if (capa["url_prefix"].isArray()){
|
||||
for (JSON::ArrIter it = capa["url_prefix"].ArrBegin(); it != capa["url_prefix"].ArrEnd(); ++it){
|
||||
jsonForEach(capa["url_prefix"], it) {
|
||||
match |= isPrefix(url, it->asStringRef(), streamname);
|
||||
}
|
||||
}
|
||||
|
@ -228,19 +228,19 @@ namespace Mist {
|
|||
}
|
||||
|
||||
static inline void builPipedPart(JSON::Value & p, char * argarr[], int & argnum, JSON::Value & argset){
|
||||
for (JSON::ObjIter it = argset.ObjBegin(); it != argset.ObjEnd(); ++it){
|
||||
if (it->second.isMember("option") && p.isMember(it->first)){
|
||||
if (it->second.isMember("type")){
|
||||
if (it->second["type"].asStringRef() == "str" && !p[it->first].isString()){
|
||||
p[it->first] = p[it->first].asString();
|
||||
jsonForEach(argset, it) {
|
||||
if (it->isMember("option") && p.isMember(it.key())){
|
||||
if (it->isMember("type")){
|
||||
if ((*it)["type"].asStringRef() == "str" && !p[it.key()].isString()){
|
||||
p[it.key()] = p[it.key()].asString();
|
||||
}
|
||||
if ((it->second["type"].asStringRef() == "uint" || it->second["type"].asStringRef() == "int") && !p[it->first].isInt()){
|
||||
p[it->first] = JSON::Value(p[it->first].asInt()).asString();
|
||||
if (((*it)["type"].asStringRef() == "uint" || (*it)["type"].asStringRef() == "int") && !p[it.key()].isInt()){
|
||||
p[it.key()] = JSON::Value(p[it.key()].asInt()).asString();
|
||||
}
|
||||
}
|
||||
if (p[it->first].asStringRef().size() > 0){
|
||||
argarr[argnum++] = (char*)(it->second["option"].c_str());
|
||||
argarr[argnum++] = (char*)(p[it->first].c_str());
|
||||
if (p[it.key()].asStringRef().size() > 0){
|
||||
argarr[argnum++] = (char*)((*it)["option"].c_str());
|
||||
argarr[argnum++] = (char*)(p[it.key()].c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,15 +110,15 @@ namespace Mist {
|
|||
unsigned int most_simul = 0;
|
||||
unsigned int total_matches = 0;
|
||||
if (conncapa.isMember("codecs") && conncapa["codecs"].size() > 0){
|
||||
for (JSON::ArrIter it = conncapa["codecs"].ArrBegin(); it != conncapa["codecs"].ArrEnd(); it++){
|
||||
jsonForEach(conncapa["codecs"], it) {
|
||||
unsigned int simul = 0;
|
||||
if ((*it).size() > 0){
|
||||
for (JSON::ArrIter itb = (*it).ArrBegin(); itb != (*it).ArrEnd(); itb++){
|
||||
jsonForEach((*it), itb) {
|
||||
unsigned int matches = 0;
|
||||
if ((*itb).size() > 0){
|
||||
for (JSON::ArrIter itc = (*itb).ArrBegin(); itc != (*itb).ArrEnd(); itc++){
|
||||
for (JSON::ObjIter trit = strmMeta["tracks"].ObjBegin(); trit != strmMeta["tracks"].ObjEnd(); trit++){
|
||||
if (trit->second["codec"].asStringRef() == (*itc).asStringRef()){
|
||||
jsonForEach((*itb), itc) {
|
||||
jsonForEach(strmMeta["tracks"], trit) {
|
||||
if ((*trit)["codec"].asStringRef() == (*itc).asStringRef()){
|
||||
matches++;
|
||||
total_matches++;
|
||||
}
|
||||
|
@ -143,7 +143,7 @@ namespace Mist {
|
|||
}else{
|
||||
relurl = "/";
|
||||
}
|
||||
for (JSON::ArrIter it = conncapa["methods"].ArrBegin(); it != conncapa["methods"].ArrEnd(); it++){
|
||||
jsonForEach(conncapa["methods"], it) {
|
||||
if (!strmMeta.isMember("live") || !it->isMember("nolive")){
|
||||
addSource(relurl, sources, host, port, *it, most_simul, total_matches);
|
||||
}
|
||||
|
@ -327,11 +327,11 @@ namespace Mist {
|
|||
|
||||
// show ALL the meta datas!
|
||||
json_resp["meta"] = strm.asJSON();
|
||||
for (JSON::ObjIter it = json_resp["meta"]["tracks"].ObjBegin(); it != json_resp["meta"]["tracks"].ObjEnd(); ++it){
|
||||
it->second.removeMember("fragments");
|
||||
it->second.removeMember("keys");
|
||||
it->second.removeMember("parts");
|
||||
it->second.removeMember("ivecs");/*LTS*/
|
||||
jsonForEach(json_resp["meta"]["tracks"], it) {
|
||||
it->removeMember("fragments");
|
||||
it->removeMember("keys");
|
||||
it->removeMember("parts");
|
||||
it->removeMember("ivecs");/*LTS*/
|
||||
}
|
||||
|
||||
//create a set for storing source information
|
||||
|
@ -407,5 +407,4 @@ namespace Mist {
|
|||
return;
|
||||
} //embed code generator
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue