winlin

refine config, add comments

@@ -1835,7 +1835,7 @@ int SrsConfig::get_bw_check_limit_kbps(string vhost) @@ -1835,7 +1835,7 @@ int SrsConfig::get_bw_check_limit_kbps(string vhost)
1835 return ::atoi(conf->arg0().c_str()); 1835 return ::atoi(conf->arg0().c_str());
1836 } 1836 }
1837 1837
1838 -bool SrsConfig::get_vhost_is_edge(std::string vhost) 1838 +bool SrsConfig::get_vhost_is_edge(string vhost)
1839 { 1839 {
1840 SrsConfDirective* conf = get_vhost(vhost); 1840 SrsConfDirective* conf = get_vhost(vhost);
1841 return get_vhost_is_edge(conf); 1841 return get_vhost_is_edge(conf);
@@ -1868,7 +1868,7 @@ SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost) @@ -1868,7 +1868,7 @@ SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost)
1868 return conf->get("origin"); 1868 return conf->get("origin");
1869 } 1869 }
1870 1870
1871 -bool SrsConfig::get_vhost_edge_token_traverse(std::string vhost) 1871 +bool SrsConfig::get_vhost_edge_token_traverse(string vhost)
1872 { 1872 {
1873 SrsConfDirective* conf = get_vhost(vhost); 1873 SrsConfDirective* conf = get_vhost(vhost);
1874 1874
@@ -1965,6 +1965,32 @@ bool SrsConfig::get_engine_enabled(SrsConfDirective* engine) @@ -1965,6 +1965,32 @@ bool SrsConfig::get_engine_enabled(SrsConfDirective* engine)
1965 return true; 1965 return true;
1966 } 1966 }
1967 1967
  1968 +vector<string> SrsConfig::get_engine_vfilter(SrsConfDirective* engine)
  1969 +{
  1970 + vector<string> vfilter;
  1971 +
  1972 + if (!engine) {
  1973 + return vfilter;
  1974 + }
  1975 +
  1976 + SrsConfDirective* conf = engine->get("vfilter");
  1977 + if (!conf) {
  1978 + return vfilter;
  1979 + }
  1980 +
  1981 + for (int i = 0; i < (int)conf->directives.size(); i++) {
  1982 + SrsConfDirective* p = conf->directives[i];
  1983 + if (!p) {
  1984 + continue;
  1985 + }
  1986 +
  1987 + vfilter.push_back("-" + p->name);
  1988 + vfilter.push_back(p->arg0());
  1989 + }
  1990 +
  1991 + return vfilter;
  1992 +}
  1993 +
1968 string SrsConfig::get_engine_vcodec(SrsConfDirective* engine) 1994 string SrsConfig::get_engine_vcodec(SrsConfDirective* engine)
1969 { 1995 {
1970 if (!engine) { 1996 if (!engine) {
@@ -2077,15 +2103,17 @@ string SrsConfig::get_engine_vpreset(SrsConfDirective* engine) @@ -2077,15 +2103,17 @@ string SrsConfig::get_engine_vpreset(SrsConfDirective* engine)
2077 return conf->arg0(); 2103 return conf->arg0();
2078 } 2104 }
2079 2105
2080 -void SrsConfig::get_engine_vparams(SrsConfDirective* engine, vector<string>& vparams) 2106 +vector<string> SrsConfig::get_engine_vparams(SrsConfDirective* engine)
2081 { 2107 {
  2108 + vector<string> vparams;
  2109 +
2082 if (!engine) { 2110 if (!engine) {
2083 - return; 2111 + return vparams;
2084 } 2112 }
2085 2113
2086 SrsConfDirective* conf = engine->get("vparams"); 2114 SrsConfDirective* conf = engine->get("vparams");
2087 if (!conf) { 2115 if (!conf) {
2088 - return; 2116 + return vparams;
2089 } 2117 }
2090 2118
2091 for (int i = 0; i < (int)conf->directives.size(); i++) { 2119 for (int i = 0; i < (int)conf->directives.size(); i++) {
@@ -2097,28 +2125,8 @@ void SrsConfig::get_engine_vparams(SrsConfDirective* engine, vector<string>& vpa @@ -2097,28 +2125,8 @@ void SrsConfig::get_engine_vparams(SrsConfDirective* engine, vector<string>& vpa
2097 vparams.push_back("-" + p->name); 2125 vparams.push_back("-" + p->name);
2098 vparams.push_back(p->arg0()); 2126 vparams.push_back(p->arg0());
2099 } 2127 }
2100 -}  
2101 -  
2102 -void SrsConfig::get_engine_vfilter(SrsConfDirective* engine, vector<string>& vfilter)  
2103 -{  
2104 - if (!engine) {  
2105 - return;  
2106 - }  
2107 2128
2108 - SrsConfDirective* conf = engine->get("vfilter");  
2109 - if (!conf) {  
2110 - return;  
2111 - }  
2112 -  
2113 - for (int i = 0; i < (int)conf->directives.size(); i++) {  
2114 - SrsConfDirective* p = conf->directives[i];  
2115 - if (!p) {  
2116 - continue;  
2117 - }  
2118 -  
2119 - vfilter.push_back("-" + p->name);  
2120 - vfilter.push_back(p->arg0());  
2121 - } 2129 + return vparams;
2122 } 2130 }
2123 2131
2124 string SrsConfig::get_engine_acodec(SrsConfDirective* engine) 2132 string SrsConfig::get_engine_acodec(SrsConfDirective* engine)
@@ -2177,15 +2185,17 @@ int SrsConfig::get_engine_achannels(SrsConfDirective* engine) @@ -2177,15 +2185,17 @@ int SrsConfig::get_engine_achannels(SrsConfDirective* engine)
2177 return ::atoi(conf->arg0().c_str()); 2185 return ::atoi(conf->arg0().c_str());
2178 } 2186 }
2179 2187
2180 -void SrsConfig::get_engine_aparams(SrsConfDirective* engine, vector<string>& aparams) 2188 +vector<string> SrsConfig::get_engine_aparams(SrsConfDirective* engine)
2181 { 2189 {
  2190 + vector<string> aparams;
  2191 +
2182 if (!engine) { 2192 if (!engine) {
2183 - return; 2193 + return aparams;
2184 } 2194 }
2185 2195
2186 SrsConfDirective* conf = engine->get("aparams"); 2196 SrsConfDirective* conf = engine->get("aparams");
2187 if (!conf) { 2197 if (!conf) {
2188 - return; 2198 + return aparams;
2189 } 2199 }
2190 2200
2191 for (int i = 0; i < (int)conf->directives.size(); i++) { 2201 for (int i = 0; i < (int)conf->directives.size(); i++) {
@@ -2197,6 +2207,8 @@ void SrsConfig::get_engine_aparams(SrsConfDirective* engine, vector<string>& apa @@ -2197,6 +2207,8 @@ void SrsConfig::get_engine_aparams(SrsConfDirective* engine, vector<string>& apa
2197 aparams.push_back("-" + p->name); 2207 aparams.push_back("-" + p->name);
2198 aparams.push_back(p->arg0()); 2208 aparams.push_back(p->arg0());
2199 } 2209 }
  2210 +
  2211 + return aparams;
2200 } 2212 }
2201 2213
2202 string SrsConfig::get_engine_output(SrsConfDirective* engine) 2214 string SrsConfig::get_engine_output(SrsConfDirective* engine)
@@ -2213,11 +2225,13 @@ string SrsConfig::get_engine_output(SrsConfDirective* engine) @@ -2213,11 +2225,13 @@ string SrsConfig::get_engine_output(SrsConfDirective* engine)
2213 return conf->arg0(); 2225 return conf->arg0();
2214 } 2226 }
2215 2227
2216 -void SrsConfig::get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& ingeters) 2228 +vector<SrsConfDirective*> SrsConfig::get_ingesters(string vhost)
2217 { 2229 {
  2230 + vector<SrsConfDirective*> ingeters;
  2231 +
2218 SrsConfDirective* vhost_conf = get_vhost(vhost); 2232 SrsConfDirective* vhost_conf = get_vhost(vhost);
2219 if (!vhost_conf) { 2233 if (!vhost_conf) {
2220 - return; 2234 + return ingeters;
2221 } 2235 }
2222 2236
2223 for (int i = 0; i < (int)vhost_conf->directives.size(); i++) { 2237 for (int i = 0; i < (int)vhost_conf->directives.size(); i++) {
@@ -2228,10 +2242,10 @@ void SrsConfig::get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& @@ -2228,10 +2242,10 @@ void SrsConfig::get_ingesters(std::string vhost, std::vector<SrsConfDirective*>&
2228 } 2242 }
2229 } 2243 }
2230 2244
2231 - return; 2245 + return ingeters;
2232 } 2246 }
2233 2247
2234 -SrsConfDirective* SrsConfig::get_ingest_by_id(std::string vhost, std::string ingest_id) 2248 +SrsConfDirective* SrsConfig::get_ingest_by_id(string vhost, string ingest_id)
2235 { 2249 {
2236 SrsConfDirective* conf = get_vhost(vhost); 2250 SrsConfDirective* conf = get_vhost(vhost);
2237 if (!conf) { 2251 if (!conf) {
@@ -601,97 +601,112 @@ public: @@ -601,97 +601,112 @@ public:
601 */ 601 */
602 virtual std::vector<SrsConfDirective*> get_transcode_engines(SrsConfDirective* transcode); 602 virtual std::vector<SrsConfDirective*> get_transcode_engines(SrsConfDirective* transcode);
603 /** 603 /**
604 - * 604 + * whether the engine is enabled.
605 */ 605 */
606 virtual bool get_engine_enabled(SrsConfDirective* engine); 606 virtual bool get_engine_enabled(SrsConfDirective* engine);
607 /** 607 /**
608 - * 608 + * get the vfilter of engine,
  609 + * the video filter set before the vcodec of FFMPEG.
  610 + */
  611 + virtual std::vector<std::string> get_engine_vfilter(SrsConfDirective* engine);
  612 + /**
  613 + * get the vcodec of engine,
  614 + * the codec of video, copy or libx264
609 */ 615 */
610 virtual std::string get_engine_vcodec(SrsConfDirective* engine); 616 virtual std::string get_engine_vcodec(SrsConfDirective* engine);
611 /** 617 /**
612 - * 618 + * get the vbitrate of engine,
  619 + * the bitrate in kbps of video, for example, 800kbps
613 */ 620 */
614 virtual int get_engine_vbitrate(SrsConfDirective* engine); 621 virtual int get_engine_vbitrate(SrsConfDirective* engine);
615 /** 622 /**
616 - * 623 + * get the vfps of engine.
  624 + * the video fps, for example, 25fps
617 */ 625 */
618 virtual double get_engine_vfps(SrsConfDirective* engine); 626 virtual double get_engine_vfps(SrsConfDirective* engine);
619 /** 627 /**
620 - * 628 + * get the vwidth of engine,
  629 + * the video width, for example, 1024
621 */ 630 */
622 virtual int get_engine_vwidth(SrsConfDirective* engine); 631 virtual int get_engine_vwidth(SrsConfDirective* engine);
623 /** 632 /**
624 - * 633 + * get the vheight of engine,
  634 + * the video height, for example, 576
625 */ 635 */
626 virtual int get_engine_vheight(SrsConfDirective* engine); 636 virtual int get_engine_vheight(SrsConfDirective* engine);
627 /** 637 /**
628 - * 638 + * get the vthreads of engine,
  639 + * the video transcode libx264 threads, for instance, 8
629 */ 640 */
630 virtual int get_engine_vthreads(SrsConfDirective* engine); 641 virtual int get_engine_vthreads(SrsConfDirective* engine);
631 /** 642 /**
632 - * 643 + * get the vprofile of engine,
  644 + * the libx264 profile, can be high,main,baseline
633 */ 645 */
634 virtual std::string get_engine_vprofile(SrsConfDirective* engine); 646 virtual std::string get_engine_vprofile(SrsConfDirective* engine);
635 /** 647 /**
636 - * 648 + * get the vpreset of engine,
  649 + * the libx264 preset, can be ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo
637 */ 650 */
638 virtual std::string get_engine_vpreset(SrsConfDirective* engine); 651 virtual std::string get_engine_vpreset(SrsConfDirective* engine);
639 /** 652 /**
640 - * 653 + * get the additional video params.
641 */ 654 */
642 - virtual void get_engine_vparams(SrsConfDirective* engine, std::vector<std::string>& vparams); 655 + virtual std::vector<std::string> get_engine_vparams(SrsConfDirective* engine);
643 /** 656 /**
644 - *  
645 - */  
646 - virtual void get_engine_vfilter(SrsConfDirective* engine, std::vector<std::string>& vfilter);  
647 - /**  
648 - * 657 + * get the acodec of engine,
  658 + * the audio codec can be copy or libaacplus
649 */ 659 */
650 virtual std::string get_engine_acodec(SrsConfDirective* engine); 660 virtual std::string get_engine_acodec(SrsConfDirective* engine);
651 /** 661 /**
652 - * 662 + * get the abitrate of engine,
  663 + * the audio bitrate in kbps, for instance, 64kbps.
653 */ 664 */
654 virtual int get_engine_abitrate(SrsConfDirective* engine); 665 virtual int get_engine_abitrate(SrsConfDirective* engine);
655 /** 666 /**
656 - * 667 + * get the asample_rate of engine,
  668 + * the audio sample_rate, for instance, 44100HZ
657 */ 669 */
658 virtual int get_engine_asample_rate(SrsConfDirective* engine); 670 virtual int get_engine_asample_rate(SrsConfDirective* engine);
659 /** 671 /**
660 - * 672 + * get the achannels of engine,
  673 + * the audio channel, for instance, 1 for mono, 2 for stereo.
661 */ 674 */
662 virtual int get_engine_achannels(SrsConfDirective* engine); 675 virtual int get_engine_achannels(SrsConfDirective* engine);
663 /** 676 /**
664 - * 677 + * get the aparams of engine,
  678 + * the audio additional params.
665 */ 679 */
666 - virtual void get_engine_aparams(SrsConfDirective* engine, std::vector<std::string>& aparams); 680 + virtual std::vector<std::string> get_engine_aparams(SrsConfDirective* engine);
667 /** 681 /**
668 - * 682 + * get the output of engine, for example, rtmp://127.0.0.1/live/livestream,
  683 + * @remark, we will use some variable, for instance, [vhost] to substitude with vhost.
669 */ 684 */
670 virtual std::string get_engine_output(SrsConfDirective* engine); 685 virtual std::string get_engine_output(SrsConfDirective* engine);
671 // ingest section 686 // ingest section
672 public: 687 public:
673 /** 688 /**
674 - * 689 + * get the ingest directives of vhost.
675 */ 690 */
676 - virtual void get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& ingeters); 691 + virtual std::vector<SrsConfDirective*> get_ingesters(std::string vhost);
677 /** 692 /**
678 - * 693 + * get specified ingest.
679 */ 694 */
680 virtual SrsConfDirective* get_ingest_by_id(std::string vhost, std::string ingest_id); 695 virtual SrsConfDirective* get_ingest_by_id(std::string vhost, std::string ingest_id);
681 /** 696 /**
682 - * 697 + * whether ingest is enalbed.
683 */ 698 */
684 virtual bool get_ingest_enabled(SrsConfDirective* ingest); 699 virtual bool get_ingest_enabled(SrsConfDirective* ingest);
685 /** 700 /**
686 - * 701 + * get the ingest ffmpeg tool
687 */ 702 */
688 virtual std::string get_ingest_ffmpeg(SrsConfDirective* ingest); 703 virtual std::string get_ingest_ffmpeg(SrsConfDirective* ingest);
689 /** 704 /**
690 - * 705 + * get the ingest input type, file or stream.
691 */ 706 */
692 virtual std::string get_ingest_input_type(SrsConfDirective* ingest); 707 virtual std::string get_ingest_input_type(SrsConfDirective* ingest);
693 /** 708 /**
694 - * 709 + * get the ingest input url.
695 */ 710 */
696 virtual std::string get_ingest_input_url(SrsConfDirective* ingest); 711 virtual std::string get_ingest_input_url(SrsConfDirective* ingest);
697 // log section 712 // log section
@@ -96,21 +96,21 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine) @@ -96,21 +96,21 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine)
96 { 96 {
97 int ret = ERROR_SUCCESS; 97 int ret = ERROR_SUCCESS;
98 98
99 - _srs_config->get_engine_vfilter(engine, vfilter);  
100 - vcodec = _srs_config->get_engine_vcodec(engine);  
101 - vbitrate = _srs_config->get_engine_vbitrate(engine);  
102 - vfps = _srs_config->get_engine_vfps(engine);  
103 - vwidth = _srs_config->get_engine_vwidth(engine);  
104 - vheight = _srs_config->get_engine_vheight(engine);  
105 - vthreads = _srs_config->get_engine_vthreads(engine);  
106 - vprofile = _srs_config->get_engine_vprofile(engine);  
107 - vpreset = _srs_config->get_engine_vpreset(engine);  
108 - _srs_config->get_engine_vparams(engine, vparams);  
109 - acodec = _srs_config->get_engine_acodec(engine);  
110 - abitrate = _srs_config->get_engine_abitrate(engine);  
111 - asample_rate = _srs_config->get_engine_asample_rate(engine);  
112 - achannels = _srs_config->get_engine_achannels(engine);  
113 - _srs_config->get_engine_aparams(engine, aparams); 99 + vfilter = _srs_config->get_engine_vfilter(engine);
  100 + vcodec = _srs_config->get_engine_vcodec(engine);
  101 + vbitrate = _srs_config->get_engine_vbitrate(engine);
  102 + vfps = _srs_config->get_engine_vfps(engine);
  103 + vwidth = _srs_config->get_engine_vwidth(engine);
  104 + vheight = _srs_config->get_engine_vheight(engine);
  105 + vthreads = _srs_config->get_engine_vthreads(engine);
  106 + vprofile = _srs_config->get_engine_vprofile(engine);
  107 + vpreset = _srs_config->get_engine_vpreset(engine);
  108 + vparams = _srs_config->get_engine_vparams(engine);
  109 + acodec = _srs_config->get_engine_acodec(engine);
  110 + abitrate = _srs_config->get_engine_abitrate(engine);
  111 + asample_rate = _srs_config->get_engine_asample_rate(engine);
  112 + achannels = _srs_config->get_engine_achannels(engine);
  113 + aparams = _srs_config->get_engine_aparams(engine);
114 114
115 // ensure the size is even. 115 // ensure the size is even.
116 vwidth -= vwidth % 2; 116 vwidth -= vwidth % 2;
@@ -93,8 +93,7 @@ int SrsIngester::parse_ingesters(SrsConfDirective* vhost) @@ -93,8 +93,7 @@ int SrsIngester::parse_ingesters(SrsConfDirective* vhost)
93 { 93 {
94 int ret = ERROR_SUCCESS; 94 int ret = ERROR_SUCCESS;
95 95
96 - std::vector<SrsConfDirective*> ingesters;  
97 - _srs_config->get_ingesters(vhost->arg0(), ingesters); 96 + std::vector<SrsConfDirective*> ingesters = _srs_config->get_ingesters(vhost->arg0());
98 97
99 // create engine 98 // create engine
100 for (int i = 0; i < (int)ingesters.size(); i++) { 99 for (int i = 0; i < (int)ingesters.size(); i++) {