diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 2dae96242..9f2cf7fb2 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -2312,6 +2312,10 @@ SrsConfDirective* SrsConfig::get_ingest_by_id(string vhost, string ingest_id) bool SrsConfig::get_ingest_enabled(SrsConfDirective* ingest) { + if (!ingest) { + return false; + } + SrsConfDirective* conf = ingest->get("enabled"); if (!conf || conf->arg0() != "on") { @@ -2323,6 +2327,10 @@ bool SrsConfig::get_ingest_enabled(SrsConfDirective* ingest) string SrsConfig::get_ingest_ffmpeg(SrsConfDirective* ingest) { + if (!ingest) { + return ""; + } + SrsConfDirective* conf = ingest->get("ffmpeg"); if (!conf) { @@ -2334,6 +2342,10 @@ string SrsConfig::get_ingest_ffmpeg(SrsConfDirective* ingest) string SrsConfig::get_ingest_input_type(SrsConfDirective* ingest) { + if (!ingest) { + return SRS_CONF_DEFAULT_INGEST_TYPE_FILE; + } + SrsConfDirective* conf = ingest->get("input"); if (!conf) { @@ -2351,6 +2363,10 @@ string SrsConfig::get_ingest_input_type(SrsConfDirective* ingest) string SrsConfig::get_ingest_input_url(SrsConfDirective* ingest) { + if (!ingest) { + return ""; + } + SrsConfDirective* conf = ingest->get("input"); if (!conf) { diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index 6d2b5a5c2..b34f57dbb 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -449,28 +449,33 @@ public: * whether gop_cache is enabled of vhost. * gop_cache used to cache last gop, for client to fast startup. * @return true when gop_cache is ok; otherwise, false. + * @remark, default true. */ virtual bool get_gop_cache(std::string vhost); /** * whether atc is enabled of vhost. * atc always use encoder timestamp, SRS never adjust the time. * @return true when atc is ok; otherwise, false. + * @remark, default false. */ virtual bool get_atc(std::string vhost); /** * whether atc_auto is enabled of vhost. * atc_auto used to auto enable atc, when metadata specified the bravo_atc. * @return true when atc_auto is ok; otherwise, false. + * @remark, default true. */ virtual bool get_atc_auto(std::string vhost); /** * get the time_jitter algorithm. * @return the time_jitter algorithm, defined in SrsRtmpJitterAlgorithm. + * @remark, default full. */ virtual int get_time_jitter(std::string vhost); /** * get the cache queue length, in seconds. * when exceed the queue length, drop packet util I frame. + * @remark, default 10. */ virtual double get_queue_length(std::string vhost); /** @@ -478,20 +483,24 @@ public: * each args of directive is a refer config. * when the client refer(pageUrl) not match the refer config, * SRS will reject the connection. + * @remark, default NULL. */ virtual SrsConfDirective* get_refer(std::string vhost); /** * get the play refer, refer for play clients. + * @remark, default NULL. */ virtual SrsConfDirective* get_refer_play(std::string vhost); /** * get the publish refer, refer for publish clients. + * @remark, default NULL. */ virtual SrsConfDirective* get_refer_publish(std::string vhost); /** * get the chunk size of vhost. * @param vhost, the vhost to get the chunk size. use global if not specified. * empty string to get the global. + * @remark, default 60000. */ virtual int get_chunk_size(std::string vhost); private: diff --git a/trunk/src/utest/srs_utest_config.cpp b/trunk/src/utest/srs_utest_config.cpp index 7995367cf..4b7c99701 100644 --- a/trunk/src/utest/srs_utest_config.cpp +++ b/trunk/src/utest/srs_utest_config.cpp @@ -27,6 +27,7 @@ using namespace std; #include #include #include +#include MockSrsConfigBuffer::MockSrsConfigBuffer(string buf) { @@ -1837,6 +1838,14 @@ VOID TEST(ConfigMainTest, ParseFullConf) EXPECT_EQ(8080, conf.get_http_stream_listen()); EXPECT_STREQ("./objs/nginx/html", conf.get_http_stream_dir().c_str()); + EXPECT_EQ(10000, conf.get_pithy_print_publish()); + EXPECT_EQ(10000, conf.get_pithy_print_play()); + EXPECT_EQ(10000, conf.get_pithy_print_forwarder()); + EXPECT_EQ(10000, conf.get_pithy_print_encoder()); + EXPECT_EQ(10000, conf.get_pithy_print_ingester()); + EXPECT_EQ(10000, conf.get_pithy_print_hls()); + EXPECT_EQ(10000, conf.get_pithy_print_edge()); + EXPECT_TRUE(NULL != conf.get_vhost("__defaultVhost__")); EXPECT_TRUE(NULL != conf.get_vhost("same.edge.srs.com")); EXPECT_TRUE(NULL != conf.get_vhost("change.edge.srs.com")); @@ -1865,4 +1874,71 @@ VOID TEST(ConfigMainTest, ParseFullConf) EXPECT_TRUE(NULL != conf.get_vhost("jitter.srs.com")); EXPECT_TRUE(NULL != conf.get_vhost("atc.srs.com")); EXPECT_TRUE(NULL != conf.get_vhost("removed.srs.com")); + + string vhost = "__defaultVhost__"; + EXPECT_TRUE(conf.get_vhost_enabled(vhost)); + EXPECT_TRUE(conf.get_vhost_enabled(conf.get_vhost(vhost))); + EXPECT_TRUE(conf.get_gop_cache(vhost)); + EXPECT_FALSE(conf.get_atc(vhost)); + EXPECT_TRUE(conf.get_atc_auto(vhost)); + EXPECT_TRUE(conf.get_time_jitter(vhost) == SrsRtmpJitterAlgorithmFULL); + EXPECT_FLOAT_EQ(30, conf.get_queue_length(vhost)); + EXPECT_TRUE(NULL == conf.get_refer(vhost)); + EXPECT_TRUE(NULL == conf.get_refer_play(vhost)); + EXPECT_TRUE(NULL == conf.get_refer_publish(vhost)); + EXPECT_EQ(60000, conf.get_chunk_size(vhost)); + EXPECT_TRUE(NULL == conf.get_forward(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_connect(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_close(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_publish(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); + EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost)); + EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); + EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); + EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); + EXPECT_EQ(1000, conf.get_bw_check_limit_kbps(vhost)); + EXPECT_FALSE(conf.get_vhost_is_edge(vhost)); + EXPECT_FALSE(conf.get_vhost_is_edge(conf.get_vhost(vhost))); + EXPECT_TRUE(NULL == conf.get_vhost_edge_origin(vhost)); + EXPECT_FALSE(conf.get_vhost_edge_token_traverse(vhost)); + EXPECT_TRUE(NULL == conf.get_transcode(vhost, "")); + EXPECT_FALSE(conf.get_transcode_enabled(NULL)); + EXPECT_TRUE(conf.get_transcode_ffmpeg(NULL).empty()); + EXPECT_TRUE(conf.get_transcode_engines(NULL).size() == 0); + EXPECT_FALSE(conf.get_engine_enabled(NULL)); + EXPECT_STREQ("flv", conf.get_engine_iformat(NULL).c_str()); + EXPECT_TRUE(conf.get_engine_vfilter(NULL).size() == 0); + EXPECT_TRUE(conf.get_engine_vcodec(NULL).empty()); + EXPECT_TRUE(conf.get_engine_vbitrate(NULL) == 0); + EXPECT_TRUE(conf.get_engine_vfps(NULL) == 0); + EXPECT_TRUE(conf.get_engine_vwidth(NULL) == 0); + EXPECT_TRUE(conf.get_engine_vheight(NULL) == 0); + EXPECT_TRUE(conf.get_engine_vthreads(NULL) == 0); + EXPECT_TRUE(conf.get_engine_vprofile(NULL).empty()); + EXPECT_TRUE(conf.get_engine_vpreset(NULL).empty()); + EXPECT_TRUE(conf.get_engine_vparams(NULL).size() == 0); + EXPECT_TRUE(conf.get_engine_acodec(NULL).empty()); + EXPECT_TRUE(conf.get_engine_abitrate(NULL) == 0); + EXPECT_TRUE(conf.get_engine_asample_rate(NULL) == 0); + EXPECT_TRUE(conf.get_engine_achannels(NULL) == 0); + EXPECT_TRUE(conf.get_engine_aparams(NULL).size() == 0); + EXPECT_STREQ("flv", conf.get_engine_oformat(NULL).c_str()); + EXPECT_TRUE(conf.get_engine_output(NULL).empty()); + EXPECT_TRUE(conf.get_ingesters(vhost).size() == 0); + EXPECT_TRUE(NULL == conf.get_ingest_by_id(vhost, "")); + EXPECT_FALSE(conf.get_ingest_enabled(NULL)); + EXPECT_TRUE(conf.get_ingest_ffmpeg(NULL).empty()); + EXPECT_STREQ("file", conf.get_ingest_input_type(NULL).c_str()); + EXPECT_TRUE(conf.get_ingest_input_url(NULL).empty()); + EXPECT_FALSE(conf.get_hls_enabled(vhost)); + EXPECT_STREQ("./objs/nginx/html", conf.get_hls_path(vhost).c_str()); + EXPECT_EQ(10, conf.get_hls_fragment(vhost)); + EXPECT_EQ(60, conf.get_hls_window(vhost)); + EXPECT_FALSE(conf.get_dvr_enabled(vhost)); + EXPECT_STREQ("./objs/nginx/html", conf.get_dvr_path(vhost).c_str()); + EXPECT_STREQ("session", conf.get_dvr_plan(vhost).c_str()); + EXPECT_EQ(30, conf.get_dvr_duration(vhost)); + EXPECT_TRUE(SrsRtmpJitterAlgorithmFULL == conf.get_dvr_time_jitter(vhost)); }