diff --git a/lib/dtsc.h b/lib/dtsc.h index e94bfa7a..89524610 100644 --- a/lib/dtsc.h +++ b/lib/dtsc.h @@ -338,6 +338,7 @@ namespace DTSC { uint16_t version; long long int moreheader; long long int bufferWindow; + std::string sourceURI; }; /// An iterator helper for easily iterating over the parts in a Fragment. diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index c4a5bff2..143455f4 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1311,6 +1311,7 @@ namespace DTSC { merged = source.getFlag("merged"); bufferWindow = source.getInt("buffer_window"); moreheader = source.getInt("moreheader"); + source.getString("source", sourceURI); Scan tmpTracks = source.getScan().getMember("tracks"); unsigned int num = 0; Scan tmpTrack; @@ -1330,6 +1331,7 @@ namespace DTSC { Meta::Meta(JSON::Value & meta) { vod = meta.isMember("vod") && meta["vod"]; live = meta.isMember("live") && meta["live"]; + sourceURI = meta.isMember("source") ? meta["source"].asStringRef() : ""; version = meta.isMember("version") ? meta["version"].asInt() : 0; merged = meta.isMember("merged") && meta["merged"]; bufferWindow = 0; @@ -1741,6 +1743,7 @@ namespace DTSC { } } if (version){dataLen += 18;} + if (sourceURI.size()){dataLen += 13+sourceURI.size();} return dataLen + 8; //add 8 bytes header } @@ -1770,6 +1773,11 @@ namespace DTSC { writePointer(p, "\000\007version\001", 10); writePointer(p, convertLongLong(version), 8); } + if (sourceURI.size()) { + writePointer(p, "\000\006source\002", 9); + writePointer(p, convertInt(sourceURI.size()), 4); + writePointer(p, sourceURI); + } if (bufferWindow) { writePointer(p, "\000\015buffer_window\001", 16); writePointer(p, convertLongLong(bufferWindow), 8); @@ -1807,6 +1815,11 @@ namespace DTSC { conn.SendNow("\000\007version\001", 10); conn.SendNow(convertLongLong(version), 8); } + if (sourceURI.size()) { + conn.SendNow("\000\006source\002", 9); + conn.SendNow(convertInt(sourceURI.size()), 4); + conn.SendNow(sourceURI); + } if (bufferWindow) { conn.SendNow("\000\015buffer_window\001", 16); conn.SendNow(convertLongLong(bufferWindow), 8); @@ -1894,6 +1907,9 @@ namespace DTSC { if (version) { result["version"] = (long long)version; } + if (sourceURI.size()){ + result["source"] = sourceURI; + } result["moreheader"] = moreheader; return result; } @@ -1925,6 +1941,9 @@ namespace DTSC { if (bufferWindow) { str << std::string(indent, ' ') << "Buffer Window: " << bufferWindow << std::endl; } + if (sourceURI.size()){ + str << std::string(indent, ' ') << "Source: " << sourceURI << std::endl; + } str << std::string(indent, ' ') << "More Header: " << moreheader << std::endl; } diff --git a/src/input/input.cpp b/src/input/input.cpp index ccd3e5dc..cb046198 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -157,10 +157,6 @@ namespace Mist { return 0; } - if (streamName != "") { - config->getOption("streamname") = streamName; - } - streamName = config->getString("streamname"); nProxy.streamName = streamName; if (!setup()){ @@ -173,6 +169,7 @@ namespace Mist { std::cerr << "Reading header for " << config->getString("input") << " failed." << std::endl; return 0; } + myMeta.sourceURI = config->getString("input"); parseHeader(); MEDIUM_MSG("Header parsed, %lu tracks", myMeta.tracks.size());