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