X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=config.h;h=b5461cceae1f0978cce52d53a82de1b2cca95655;hp=eee2e1b12e600829bde2688747b765c7fb434909;hb=d34b94a858c08d64eddfb9c115719fd9129be933;hpb=a313e4c7a3c0c453d4dffd317fc143f1f4a7f8ba diff --git a/config.h b/config.h index eee2e1b..b5461cc 100644 --- a/config.h +++ b/config.h @@ -3,23 +3,46 @@ // Various routines that deal with parsing the configuration file. +#include +#include #include #include #include -struct MarkPoolConfig { - int from, to; -}; - struct StreamConfig { - std::string stream_id; + std::string url; // As seen by the client. + std::string hls_url; // As seen by the client. Can be empty. std::string src; // Can be empty. size_t backlog_size; - int mark_pool; // -1 for none. + size_t prebuffering_bytes; + uint32_t pacing_rate; // In bytes per second. Default is ~0U (no limit). + enum Encoding { STREAM_ENCODING_RAW = 0, STREAM_ENCODING_METACUBE }; + Encoding encoding; + Encoding src_encoding; + std::string allow_origin; + + // These only matter if hls_url is nonempty. + int hls_frag_duration = 6; // Apple recommendation (“HLS Authoring Specification for Apple Devices”, point 7.5). + size_t hls_backlog_margin = 0; +}; + +struct UDPStreamConfig { + sockaddr_in6 dst; + std::string src; // Can be empty. + uint32_t pacing_rate; // In bytes per second. Default is ~0U (no limit). + int ttl; // Default is -1 (use operating system default). + int multicast_iface_index; // Default is -1 (use operating system default). +}; + +struct Gen204Config { + std::string url; // As seen by the client. + std::string allow_origin; // Can be empty. }; struct AcceptorConfig { - int port; + sockaddr_in6 addr; + + std::string certificate_chain, private_key; // In PEM format. }; struct LogConfig { @@ -30,13 +53,19 @@ struct LogConfig { struct Config { bool daemonize; int num_servers; - std::vector mark_pools; std::vector streams; + std::vector udpstreams; + std::vector pings; std::vector acceptors; std::vector log_destinations; std::string stats_file; // Empty means no stats file. int stats_interval; + + std::string input_stats_file; // Empty means no input stats file. + int input_stats_interval; + + std::string access_log_file; // Empty means no accses_log file. }; // Parse and validate configuration. Returns false on error.