diff --git a/src/filters/dasher.c b/src/filters/dasher.c index 94eeb0f739..9d55f02d19 100644 --- a/src/filters/dasher.c +++ b/src/filters/dasher.c @@ -1324,6 +1324,11 @@ static GF_Err dasher_configure_pid(GF_Filter *filter, GF_FilterPid *pid, Bool is if (!ctx->bs_switch) period_switch = GF_TRUE; break; + //ignore reconfig for these subtitle formats + case GF_CODECID_SIMPLE_TEXT: + case GF_CODECID_WEBVTT: + case GF_CODECID_SUBS_XML: + break; default: period_switch = GF_TRUE; break; @@ -7152,6 +7157,8 @@ static GF_Err dasher_setup_period(GF_Filter *filter, GF_DasherCtx *ctx, GF_DashS //good to go ! for (i=0; icurrent_period->streams, i); + if (ctx->force_period_switch) return GF_OK; + if (inject_ds && (ds != inject_ds)) continue; //setup segmentation diff --git a/src/filters/load_text.c b/src/filters/load_text.c index 81f62ff424..347d783dd4 100644 --- a/src/filters/load_text.c +++ b/src/filters/load_text.c @@ -1144,7 +1144,13 @@ static void gf_webvtt_import_header(void *user, const char *config) { GF_TXTIn *ctx = (GF_TXTIn *)user; if (!ctx->hdr_parsed) { - gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_DECODER_CONFIG, &PROP_DATA((char *) config, (u32) (1+strlen(config)) ) ); + u32 len = (u32) strlen(config); + //if \n is set, ignore it - this avoids decoder config updates + if ((len<=7) && !strncmp(config, "WEBVTT", 6)) { + gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_DECODER_CONFIG, &PROP_DATA((u8 *) "WEBVTT", 7) ); + } else { + gf_filter_pid_set_property(ctx->opid, GF_PROP_PID_DECODER_CONFIG, &PROP_DATA((char *) config, (u32) (1+strlen(config)) ) ); + } ctx->hdr_parsed = GF_TRUE; gf_webvtt_parser_suspend(ctx->vttparser); }