]> git.sesse.net Git - cubemap/blobdiff - config.cpp
Add suppor for raw (non-Metacube) inputs over HTTP. Only really useful for TS.
[cubemap] / config.cpp
index 9ff0a039d7f641c62404c041df299ed190584bdb..51a8b8d71082d9287e173d404ffbff2ee3a7b6ad 100644 (file)
@@ -242,7 +242,7 @@ bool parse_stream(const ConfigLine &line, Config *config)
                stream.prebuffering_bytes = atoi(prebuffer_it->second.c_str());
        }
 
-       // Parse encoding.
+       // Parse ouptut encoding.
        map<string, string>::const_iterator encoding_parm_it = line.parameters.find("encoding");
        if (encoding_parm_it == line.parameters.end() ||
            encoding_parm_it->second == "raw") {
@@ -254,6 +254,18 @@ bool parse_stream(const ConfigLine &line, Config *config)
                return false;
        }
 
+       // Parse input encoding.
+       map<string, string>::const_iterator src_encoding_parm_it = line.parameters.find("src_encoding");
+       if (src_encoding_parm_it == line.parameters.end() ||
+           src_encoding_parm_it->second == "metacube") {
+               stream.src_encoding = StreamConfig::STREAM_ENCODING_METACUBE;
+       } else if (src_encoding_parm_it->second == "raw") {
+               stream.src_encoding = StreamConfig::STREAM_ENCODING_RAW;
+       } else {
+               log(ERROR, "Parameter 'src_encoding' must be either 'raw' or 'metacube' (default)");
+               return false;
+       }
+
        // Parse the pacing rate, converting from kilobits to bytes as needed.
        map<string, string>::const_iterator pacing_rate_it = line.parameters.find("pacing_rate_kbit");
        if (pacing_rate_it == line.parameters.end()) {
@@ -318,27 +330,39 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
                }
        }
 
+       // Parse input encoding.
+       map<string, string>::const_iterator src_encoding_parm_it = line.parameters.find("src_encoding");
+       if (src_encoding_parm_it == line.parameters.end() ||
+           src_encoding_parm_it->second == "metacube") {
+               udpstream.src_encoding = StreamConfig::STREAM_ENCODING_METACUBE;
+       } else if (src_encoding_parm_it->second == "raw") {
+               udpstream.src_encoding = StreamConfig::STREAM_ENCODING_RAW;
+       } else {
+               log(ERROR, "Parameter 'src_encoding' must be either 'raw' or 'metacube' (default)");
+               return false;
+       }
+
        config->udpstreams.push_back(udpstream);
        return true;
 }
 
-bool parse_ping(const ConfigLine &line, Config *config)
+bool parse_gen204(const ConfigLine &line, Config *config)
 {
        if (line.arguments.size() != 1) {
-               log(ERROR, "'ping' takes exactly one argument");
+               log(ERROR, "'gen204' takes exactly one argument");
                return false;
        }
 
-       PingConfig ping;
-       ping.url = line.arguments[0];
+       Gen204Config gen204;
+       gen204.url = line.arguments[0];
 
        // Parse the CORS origin, if it exists.
        map<string, string>::const_iterator allow_origin_it = line.parameters.find("allow_origin");
        if (allow_origin_it != line.parameters.end()) {
-               ping.allow_origin = allow_origin_it->second;
+               gen204.allow_origin = allow_origin_it->second;
        }
 
-       config->pings.push_back(ping);
+       config->pings.push_back(gen204);
        return true;
 }
 
@@ -443,8 +467,8 @@ bool parse_config(const string &filename, Config *config)
                        if (!parse_udpstream(line, config)) {
                                return false;
                        }
-               } else if (line.keyword == "ping") {
-                       if (!parse_ping(line, config)) {
+               } else if (line.keyword == "gen204") {
+                       if (!parse_gen204(line, config)) {
                                return false;
                        }
                } else if (line.keyword == "error_log") {