@@ -3940,7 +3940,8 @@ srs_error_t SrsConfig::check_normal_config()
3940
3940
for (int j = 0 ; j < (int )conf->directives .size (); j++) {
3941
3941
string m = conf->at (j)->name ;
3942
3942
if (m != " enabled" && m != " bframe" && m != " aac" && m != " stun_timeout" && m != " stun_strict_check"
3943
- && m != " dtls_role" && m != " dtls_version" && m != " drop_for_pt" ) {
3943
+ && m != " dtls_role" && m != " dtls_version" && m != " drop_for_pt" && m != " rtc_to_rtmp"
3944
+ && m != " pli_for_rtmp" ) {
3944
3945
return srs_error_new (ERROR_SYSTEM_CONFIG_INVALID, " illegal vhost.rtc.%s of %s" , m.c_str (), vhost->arg0 ().c_str ());
3945
3946
}
3946
3947
}
@@ -5226,6 +5227,46 @@ int SrsConfig::get_rtc_drop_for_pt(string vhost)
5226
5227
return ::atoi (conf->arg0 ().c_str ());
5227
5228
}
5228
5229
5230
+ bool SrsConfig::get_rtc_to_rtmp (string vhost)
5231
+ {
5232
+ static bool DEFAULT = false ;
5233
+
5234
+ SrsConfDirective* conf = get_rtc (vhost);
5235
+ if (!conf) {
5236
+ return DEFAULT;
5237
+ }
5238
+
5239
+ conf = conf->get (" rtc_to_rtmp" );
5240
+ if (!conf || conf->arg0 ().empty ()) {
5241
+ return DEFAULT;
5242
+ }
5243
+
5244
+ return SRS_CONF_PERFER_FALSE (conf->arg0 ());
5245
+ }
5246
+
5247
+ srs_utime_t SrsConfig::get_rtc_pli_for_rtmp (string vhost)
5248
+ {
5249
+ static srs_utime_t DEFAULT = 6 * SRS_UTIME_SECONDS;
5250
+
5251
+ SrsConfDirective* conf = get_rtc (vhost);
5252
+ if (!conf) {
5253
+ return DEFAULT;
5254
+ }
5255
+
5256
+ conf = conf->get (" pli_for_rtmp" );
5257
+ if (!conf || conf->arg0 ().empty ()) {
5258
+ return DEFAULT;
5259
+ }
5260
+
5261
+ srs_utime_t v = (srs_utime_t )(::atof (conf->arg0 ().c_str ()) * SRS_UTIME_SECONDS);
5262
+ if (v < 500 * SRS_UTIME_MILLISECONDS || v > 30 * SRS_UTIME_SECONDS) {
5263
+ srs_warn (" Reset pli %dms to %dms" , srsu2msi (v), srsu2msi (DEFAULT));
5264
+ return DEFAULT;
5265
+ }
5266
+
5267
+ return v;
5268
+ }
5269
+
5229
5270
bool SrsConfig::get_rtc_nack_enabled (string vhost)
5230
5271
{
5231
5272
static bool DEFAULT = true ;
0 commit comments